:root{--bg:#0e0e10;--surface:#17171a;--card:#1e1e22;--border:#323238;--text:#f2f2f3;--muted:#9a9aa2;--accent:#d4d4d8;--accent-strong:#52525b;--danger:#e2725b;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background-color:var(--bg);color:var(--text);background-image:linear-gradient(#0e0e10db,#0e0e10ed),url(/bg.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;background-attachment:fixed;line-height:1.5}a{color:var(--accent)}input,textarea,select,button{font:inherit;color:inherit}.app{max-width:720px;margin:0 auto;padding:0 1rem 4rem}.app-header{justify-content:space-between;align-items:center;gap:.5rem;padding:1.25rem 0 .5rem;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.logout{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:.35rem .9rem;font-size:.8rem}.logout:hover{color:var(--text);border-color:var(--muted)}.banner{border-radius:var(--radius);margin-bottom:.5rem;padding:.6rem .9rem;font-size:.85rem}.banner.warn{color:#f0dfa0;background:#3a3417;border:1px solid #6b5d1f}.banner.error-banner{color:#f0b3a8;background:#3a1d18;border:1px solid #6b2f24}.burgee{font-size:2.2rem;line-height:1}.brand h1{letter-spacing:.5px;margin:0;font-size:1.6rem}.tagline{color:var(--muted);font-size:.85rem}.tabs{z-index:5;background:var(--bg);border-bottom:1px solid var(--border);gap:.25rem;padding:.5rem 0;display:flex;position:sticky;top:0}.tab{border-radius:var(--radius);color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:.5rem .25rem;transition:background .15s,color .15s;display:flex}.tab:hover{background:var(--surface)}.tab.active{color:var(--text);background:var(--surface)}.tab.active .tab-icon{transform:translateY(-1px)}.tab-icon{font-size:1.3rem}.tab-label{font-size:.75rem}.content{padding-top:1rem}.page h2{margin:.25rem 0}.page h3{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin:1.5rem 0 .5rem;font-size:1rem}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--danger)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.75rem;padding:.9rem 1rem}.card.past{opacity:.65}.item-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.meta{color:var(--muted);flex-wrap:wrap;gap:.75rem;margin-top:.35rem;font-size:.9rem;display:flex}.notes{white-space:pre-wrap;margin:.5rem 0 .25rem}.list{margin:0;padding:0;list-style:none}.link-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.form{flex-direction:column;gap:.6rem;display:flex}.form .row{flex-wrap:wrap;gap:.6rem;display:flex}.form label{color:var(--muted);flex-direction:column;gap:.2rem;font-size:.8rem;display:flex}.form label.grow{flex:1;min-width:140px}.form input,.form textarea,.form select{background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:0;padding:.5rem .6rem}.form input:focus,.form textarea:focus,.form select:focus{outline:2px solid var(--accent-strong);outline-offset:-1px}button[type=submit],.form button{background:var(--accent-strong);color:#fff;cursor:pointer;border:none;border-radius:8px;align-self:flex-start;padding:.55rem 1.1rem;font-weight:600}button[type=submit]:hover{background:var(--accent)}.url-field{gap:.35rem;display:flex}.url-field input{flex:1;min-width:0}.url-field .mini-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:8px;flex-shrink:0;align-self:stretch;padding:0 .6rem;font-weight:400}.url-field .mini-btn:hover:not(:disabled){color:var(--text);border-color:var(--muted)}.url-field .mini-btn:disabled{opacity:.4;cursor:not-allowed}.link-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.2rem 0;font-size:.8rem;text-decoration:underline}.link-btn:hover{color:var(--danger)}.attendance{border-top:1px solid var(--border);flex-direction:column;gap:.4rem;margin:.6rem 0;padding-top:.6rem;display:flex}.att-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.att-name{font-size:.95rem}.att-buttons{gap:.35rem;display:flex}.att-btn{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--muted);border-radius:999px;padding:.25rem .7rem;font-size:.8rem}.att-btn.yes.active{color:#fff;background:#1f7a4d;border-color:#1f7a4d}.att-btn.no.active{background:var(--danger);border-color:var(--danger);color:#fff}.filter-bar{flex-wrap:wrap;gap:.4rem;margin:.25rem 0 1rem;display:flex}.chip{background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:999px;padding:.3rem .8rem;font-size:.8rem}.chip.active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.badge{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:.15rem .55rem;font-size:.72rem;font-weight:600}.badge.status-wishlist{color:#e6e08a;background:#2a2f1a;border-color:#5c5f2a}.badge.status-practicing{color:#9db8d6;background:#1e2733;border-color:#33465c}.badge.status-ready{color:#7fe0a8;background:#14321f;border-color:#1f7a4d}.song-links{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.pill{color:#fff;border-radius:999px;align-items:center;gap:.3rem;padding:.3rem .75rem;font-size:.82rem;font-weight:600;text-decoration:none;display:inline-flex}.pill.spotify{background:#1db954}.pill.spotify:hover{background:#1ed760}.pill.ytmusic{background:#d43426}.pill.ytmusic:hover{background:#ef4b3c}.pill.ref{background:var(--surface);border:1px solid var(--border);color:var(--text)}.pill.ref:hover{border-color:var(--muted)}.song-summary{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:.6rem;padding:0;display:flex}.song-summary .caret{color:var(--muted);flex-shrink:0;font-size:.8rem;transition:transform .15s}.song-summary .caret.open{transform:rotate(90deg)}.song-summary .song-title{flex:1;min-width:0}.song-detail{margin-top:.7rem}.modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;width:100%;max-width:560px;max-height:85vh;display:flex;overflow:hidden}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;padding:.85rem 1rem;display:flex}.modal-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1rem}.modal-close:hover{color:var(--text)}.modal-body{padding:1rem;overflow-y:auto}.lyrics-text{white-space:pre-wrap;margin:0;font-family:inherit;font-size:.95rem;line-height:1.5}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;padding:.7rem 1rem;display:flex}.song-actions{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.7rem;padding-top:.6rem;display:flex}.status-set{flex-wrap:wrap;gap:.35rem;display:flex}.status-set .att-btn.active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.row-actions{align-items:center;gap:.9rem;display:flex}.link-btn.danger:hover{color:var(--danger)}.edit-form{gap:.6rem}.edit-form .row-actions{margin-top:.2rem}.guest-tag{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border:1px solid var(--border);vertical-align:middle;border-radius:999px;margin-left:.45rem;padding:.05rem .4rem;font-size:.62rem}.guest-add{border-top:1px dashed var(--border);gap:.4rem;margin-top:.5rem;padding-top:.6rem;display:flex}.guest-add input{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex:1;min-width:0;padding:.35rem .6rem}.guest-add .guest-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:8px;align-self:auto;padding:.35rem .8rem;font-weight:500}.guest-add .guest-btn:hover{color:var(--text);border-color:var(--muted)}.guest-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 .15rem;font-size:.9rem;line-height:1}.guest-remove:hover{color:var(--danger)}.gate{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.gate-card{text-align:center;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.6rem;width:100%;max-width:320px;padding:2rem 1.5rem;display:flex}.gate-burgee{font-size:2.5rem}.gate-card h1{margin:0}.gate-card input{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:8px;padding:.6rem .7rem}.gate-card button{background:var(--accent-strong);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1rem;font-weight:600}.gate-card button:hover{background:var(--accent)}
