:root{--bg:#0f1020;--bg-2:#181a33;--card:#1e2140;--card-2:#262a52;--text:#eef0ff;--muted:#9aa0cc;--accent:#7c5cff;--accent-2:#34d1bf;--good:#34d17a;--bad:#ff5c7c;--border:#33386b;--hover:#2c3160}:root[data-theme=light]{--bg:#f4f5fb;--bg-2:#ffffff;--card:#ffffff;--card-2:#eef0f8;--text:#1a1c2e;--muted:#5b6088;--accent:#6d28d9;--accent-2:#0d9488;--good:#15803d;--bad:#be123c;--border:#d9dcec;--hover:#e4e7f5}*{box-sizing:border-box}body,html{margin:0;padding:0;background:radial-gradient(1200px 800px at 50% -10%,var(--bg-2),var(--bg));color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;min-height:100vh}.shell{max-width:720px;margin:0 auto;min-height:100vh;padding:32px 20px 80px;display:flex;flex-direction:column;gap:20px}.footer{margin-top:auto;padding-top:24px;text-align:center;color:var(--muted);font-size:12px}.brand{font-weight:800;font-size:28px;letter-spacing:-.02em;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:14px}.muted{color:var(--muted)}.prompt{font-size:20px;font-weight:700;line-height:1.3}.code{font-size:40px;font-weight:800;letter-spacing:.3em;text-align:center;color:var(--accent-2)}.row{display:flex;gap:10px;align-items:center}.spread{justify-content:space-between}.grow{flex:1 1}input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:12px 14px;font-size:16px;outline:none}input:focus{border-color:var(--accent)}button{background:var(--accent);color:white;border:none;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600;cursor:pointer;transition:transform .05s ease,opacity .15s ease}button:hover{opacity:.92}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:not-allowed}button.ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}button.secondary{background:var(--card-2);color:var(--text)}.list{display:flex;flex-direction:column;gap:8px}.player{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card-2);border-radius:10px}.dot{width:9px;height:9px;border-radius:50%;background:var(--good);flex-shrink:0}.dot.off{background:var(--muted)}.badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#0b0d1a;background:var(--accent-2);border-radius:999px;padding:2px 8px}.badge.you{background:var(--accent);color:white}.track{display:flex;align-items:center;gap:12px;padding:10px;background:var(--card-2);border-radius:12px;text-align:left;width:100%;color:var(--text)}.track:hover{background:var(--hover)}.art{width:52px;height:52px;border-radius:8px;object-fit:cover;background:var(--bg);flex-shrink:0}.art.big{width:120px;height:120px;border-radius:14px}.title{font-weight:700}.trackmeta{display:flex;flex-direction:column;gap:2px;min-width:0}.trackmeta .muted,.trackmeta .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}audio{width:100%;margin-top:4px}.center{text-align:center}.stack{display:flex;flex-direction:column;gap:10px}.error{color:var(--bad);font-size:14px}.pill{font-size:13px;color:var(--muted)}.scorerow{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--card-2);border-radius:10px}.scorerow.lead{background:linear-gradient(90deg,rgba(124,92,255,.25),rgba(52,209,191,.15));border:1px solid var(--accent)}.rank{color:var(--muted);width:24px}.pts,.rank{font-weight:800}.pts{margin-left:auto;font-size:18px}.delta{font-size:13px;font-weight:700}.correct,.delta{color:var(--good)}.incorrect{color:var(--bad)}.connbar{font-size:12px;color:var(--muted);text-align:center}.avatar{font-size:20px;line-height:1}.timer{align-self:center;font-size:15px;font-weight:800;color:var(--accent-2);background:var(--card-2);border-radius:999px;padding:4px 14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timer.urgent{color:var(--bad)}.avatarpick{display:flex;flex-wrap:wrap;gap:8px}.avatarpick button{font-size:22px;padding:8px 10px;background:var(--card-2);border:2px solid transparent}.avatarpick button.sel{border-color:var(--accent)}.vote{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:6px 10px;font-size:13px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}.vote.voted{background:var(--accent);border-color:var(--accent);color:white}.sheet{gap:12px}.sheet,.sheetclip{display:flex;flex-direction:column}.sheetclip{gap:8px;padding:12px;background:var(--card-2);border:1px solid transparent;border-radius:12px}.sheetclip.now{border-color:var(--accent)}.sheetclip.mine{border-style:dashed;border-color:var(--border);background:linear-gradient(0deg,rgba(52,209,191,.06),rgba(52,209,191,.06)),var(--card-2)}.minetag{font-size:12px;font-weight:700;color:var(--accent-2);white-space:nowrap}.sheethead{display:flex;align-items:baseline;gap:8px}.sheetnum{font-weight:800;color:var(--accent-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.opts{display:flex;flex-wrap:wrap;gap:6px}.opt{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:600}.opt.sel{background:var(--accent);border-color:var(--accent);color:white}.screen{display:flex;flex-direction:column;gap:20px;animation:screen-in .32s ease both}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.getready-num,.nowcard,.screen{animation:none}}.nowcard{animation:nowcard-in .4s ease both}@keyframes nowcard-in{0%{transform:scale(.98);box-shadow:0 0 0 0 rgba(124,92,255,0)}50%{box-shadow:0 0 0 4px rgba(124,92,255,.25)}to{transform:scale(1);box-shadow:0 0 0 0 rgba(124,92,255,0)}}.getready{position:fixed;inset:0;justify-content:center;background:radial-gradient(600px 400px at 50% 40%,var(--bg-2),var(--bg));z-index:50}.getready,.getready-inner{display:flex;align-items:center}.getready-inner{flex-direction:column;gap:12px}.getready-num{font-size:96px;font-weight:800;line-height:1;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent;animation:pop .4s ease both}@keyframes pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.kick{padding:4px 10px;font-size:13px;flex-shrink:0}.themetoggle{padding:6px 10px;font-size:16px;line-height:1;flex-shrink:0}.howto{margin:0;padding-left:20px;color:var(--muted);display:flex;flex-direction:column;gap:6px;line-height:1.4}