:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f0f23;--surface:#1b1b30;--surface-2:#27273b;--surface-3:#33334d;--fg:#f8fafc;--muted:#94a3b8;--border:#2c2a5a;--accent:#22c55e;--accent-hover:#16a34a;--accent-fg:#0f172a;--secondary:#4338ca;--danger:#ef4444;--success:#22c55e;--ring:#fff;--backdrop:#04040cb8;--font-body:"Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"Righteous", var(--font-body);--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.6rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:8px;--radius:12px;--radius-lg:20px;--shadow-md:0 4px 12px #00000059;--shadow-lg:0 16px 40px #0000008c;--ease-out:cubic-bezier(.2, .8, .2, 1);--dur-fast:.15s;--dur:.22s;--tap:44px;--nav-h:60px;--mini-h:64px;--sidebar-w:232px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);font-family:var(--font-body);font-size:16px;line-height:1.5}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);-webkit-tap-highlight-color:transparent;margin:0}body{overscroll-behavior-y:none;min-height:100dvh}h1,h2,h3{margin:0;line-height:1.2}h1,.display{font-family:var(--font-display);letter-spacing:.01em;font-weight:400}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg);font-weight:600}h3{font-size:var(--text-md);font-weight:600}p{margin:0}a{color:inherit}button{font:inherit}::selection{background:var(--accent);color:var(--accent-fg)}.stack{gap:var(--space-3);flex-direction:column;display:flex}.stack-lg{gap:var(--space-5);flex-direction:column;display:flex}.row{gap:var(--space-2);align-items:center;display:flex}.row>.field{flex:1;min-width:0}.between{justify-content:space-between}.grow{flex:1;min-width:0}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.muted{color:var(--muted)}.small{font-size:var(--text-sm)}.xs{font-size:var(--text-xs)}.error{color:var(--danger)}.center{text-align:center;margin-top:20vh}.tabular{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}progress{width:100%;height:4px;accent-color:var(--accent)}audio{width:100%;height:40px}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.shell-main{max-width:880px;padding:calc(var(--space-4) + var(--safe-t)) var(--space-4) calc(var(--nav-h) + var(--mini-h) + var(--space-5) + var(--safe-b));margin:0 auto}.shell-main.no-player{padding-bottom:calc(var(--nav-h) + var(--space-5) + var(--safe-b))}.bottom-nav{z-index:40;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border);background:#0f0f23eb;grid-auto-columns:1fr;grid-auto-flow:column;display:grid;position:fixed;inset:auto 0 0}.nav-item{color:var(--muted);font-size:var(--text-xs);min-height:var(--tap);transition:color var(--dur-fast);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-weight:500;text-decoration:none;display:flex}.nav-item.active{color:var(--fg)}.nav-item.active svg{color:var(--accent)}.sidebar{display:none}.mini-player{z-index:41;left:var(--space-2);right:var(--space-2);bottom:calc(var(--nav-h) + var(--safe-b) + var(--space-2));height:var(--mini-h);border-radius:var(--radius);background:var(--surface-2);box-shadow:var(--shadow-lg);align-items:center;gap:var(--space-3);padding:0 var(--space-2) 0 var(--space-2);cursor:pointer;animation:slide-up var(--dur) var(--ease-out);display:flex;position:fixed;overflow:hidden}.mini-progress{background:var(--surface-3);height:2px;position:absolute;bottom:0;left:0;right:0}.mini-progress>span{background:var(--accent);height:100%;transition:width .25s linear;display:block}@media (width>=900px){.bottom-nav{display:none}.sidebar{gap:var(--space-1);width:var(--sidebar-w);z-index:40;padding:var(--space-5) var(--space-3);border-right:1px solid var(--border);background:#0a0a1a;flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0}.sidebar .brand{padding:0 var(--space-3) var(--space-5)}.sidebar .nav-item{justify-content:flex-start;gap:var(--space-3);padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);flex-direction:row}.sidebar .nav-item:hover{background:var(--surface);color:var(--fg)}.sidebar .nav-item.active{background:var(--surface)}.shell-main{margin-left:calc(var(--sidebar-w) + max(0px, (100vw - var(--sidebar-w) - 880px) / 2));padding-bottom:calc(var(--mini-h) + var(--space-6))}.shell-main.no-player{padding-bottom:var(--space-6)}.mini-player{left:calc(var(--sidebar-w) + var(--space-3));right:var(--space-3);bottom:var(--space-3)}}.brand{font-family:var(--font-display);color:var(--fg);font-size:1.5rem;text-decoration:none}.brand b{color:var(--accent);font-weight:400}.page-header{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:var(--tap);display:flex}.page-header h1{min-width:0}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--tap);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-fast), transform var(--dur-fast), opacity var(--dur-fast);border:1px solid #0000;border-radius:999px;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn-md{padding:0 var(--space-5);font-size:var(--text-sm)}.btn-sm{min-height:36px;padding:0 var(--space-4);font-size:var(--text-sm)}.btn-lg{min-height:52px;padding:0 var(--space-6);font-size:var(--text-md)}.btn-block{width:100%}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-secondary{color:var(--fg);border-color:var(--surface-3);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--surface-2);border-color:var(--muted)}.btn-ghost{color:var(--muted);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--fg)}.icon-btn{width:var(--tap);height:var(--tap);color:var(--fg);cursor:pointer;transition:background-color var(--dur-fast), color var(--dur-fast), transform var(--dur-fast);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-2)}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn.muted{color:var(--muted)}.icon-btn[aria-pressed=true]{color:var(--accent)}.icon-btn.solid{background:var(--fg);color:var(--bg)}.icon-btn.solid:hover:not(:disabled){background:#fff;transform:scale(1.04)}.icon-btn.lg{width:64px;height:64px}.icon-btn.accent{background:var(--accent);color:var(--accent-fg)}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:1em;height:1em;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--text-sm);color:var(--muted);font-weight:500}.input{min-height:var(--tap);padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--surface-3);background:var(--surface);width:100%;color:var(--fg);font:inherit;font-size:16px}.input::placeholder{color:var(--muted)}.input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.input[aria-invalid]{border-color:var(--danger)}.field-error{font-size:var(--text-xs);color:var(--danger)}.panel{background:var(--surface);border-radius:var(--radius);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.panel-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.badge{font-size:var(--text-xs);background:var(--surface-3);color:var(--fg);border-radius:999px;align-items:center;padding:1px 8px;font-weight:600;display:inline-flex}.badge.accent{background:var(--accent);color:var(--accent-fg)}.count{background:var(--accent);min-width:18px;height:18px;color:var(--accent-fg);border-radius:999px;place-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-grid}.empty{text-align:center;align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);color:var(--muted);flex-direction:column;display:flex}.empty svg{color:var(--surface-3)}.empty h3{color:var(--fg)}.cover{border-radius:var(--radius-sm);color:#ffffffe6;font-family:var(--font-display);text-transform:uppercase;-webkit-user-select:none;user-select:none;flex:none;place-items:center;display:grid;position:relative;overflow:hidden}.cover-sm{border-radius:6px;width:44px;height:44px;font-size:1.1rem}.cover-md{width:56px;height:56px;font-size:1.4rem}.cover-lg{aspect-ratio:1;border-radius:var(--radius-lg);width:min(78vw,340px);height:auto;box-shadow:var(--shadow-lg);font-size:5rem}.track-row{align-items:center;gap:var(--space-3);min-height:60px;padding:var(--space-2) var(--space-2);margin:0 calc(-1 * var(--space-2));border-radius:var(--radius-sm);transition:background-color var(--dur-fast);display:flex}.track-row.clickable{cursor:pointer}.track-row.clickable:hover,.track-row.clickable:focus-visible{background:var(--surface)}.track-row .title{font-weight:500}.track-row.active .title{color:var(--accent)}.track-row .sub{font-size:var(--text-sm);color:var(--muted)}.eq{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.eq i{background:var(--accent);border-radius:1px;width:3px;animation:.9s ease-in-out infinite eq}.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}.eq.paused i{height:4px;animation-play-state:paused}@keyframes eq{0%,to{height:4px}50%{height:14px}}.slider{appearance:none;cursor:pointer;touch-action:none;background:0 0;width:100%;height:24px;margin:0}.slider::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--fg) var(--pct), var(--surface-3) var(--pct));border-radius:999px;height:4px}.slider::-moz-range-track{background:linear-gradient(to right, var(--fg) var(--pct), var(--surface-3) var(--pct));border-radius:999px;height:4px}.slider:hover:not(:disabled)::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--pct), var(--surface-3) var(--pct))}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--fg);border:0;border-radius:50%;width:14px;height:14px;margin-top:-5px}.slider::-moz-range-thumb{background:var(--fg);border:0;border-radius:50%;width:14px;height:14px}.slider:disabled{cursor:default}.slider:disabled::-webkit-slider-thumb{visibility:hidden}.slider:disabled::-moz-range-thumb{visibility:hidden}.slider:disabled::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--pct), var(--surface-3) var(--pct))}.slider:focus-visible{outline-offset:0}.time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:var(--text-xs);min-width:2.8em}.tabs{gap:var(--space-2);scrollbar-width:none;margin:0 calc(-1 * var(--space-4));padding:0 var(--space-4);display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-4);cursor:pointer;background:var(--surface);color:var(--fg);font-size:var(--text-sm);transition:background-color var(--dur-fast), color var(--dur-fast);border:0;border-radius:999px;flex:none;font-weight:500;display:inline-flex}.tab:hover{background:var(--surface-2)}.tab[aria-selected=true]{background:var(--fg);color:var(--bg)}.tab[aria-selected=true] .count{background:var(--bg);color:var(--fg)}.modal-backdrop{z-index:100;background:var(--backdrop);padding:var(--space-4);animation:fade-in var(--dur-fast) ease-out;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);padding:var(--space-5);gap:var(--space-4);animation:pop-in var(--dur) var(--ease-out);flex-direction:column;display:flex;overflow:auto}.modal:focus{outline:none}.modal-sm{max-width:400px}.modal-md{max-width:560px}.modal-lg{max-width:800px}.modal-title{font-size:var(--text-lg);font-weight:600;font-family:var(--font-body)}.modal-footer{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.modal-backdrop.sheet{place-items:end center;padding:0}.modal.sheet{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:560px;padding-bottom:calc(var(--space-5) + var(--safe-b));animation:sheet-up var(--dur) var(--ease-out)}.modal.sheet:before{content:"";background:var(--surface-3);width:36px;height:4px;margin-top:calc(-1 * var(--space-2));border-radius:999px;align-self:center}.modal.full{max-width:none;height:100dvh;max-height:100dvh;padding:calc(var(--space-3) + var(--safe-t)) var(--space-5) calc(var(--space-5) + var(--safe-b));background:linear-gradient(180deg, var(--np-tint,#26265a) 0%, var(--bg) 70%);border-radius:0}.modal.full:before{display:none}.action-list{margin:0 calc(-1 * var(--space-2));flex-direction:column;display:flex}.action-item{align-items:center;gap:var(--space-4);min-height:52px;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--fg);font-size:var(--text-md);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.action-item:hover{background:var(--surface-2)}.action-item.danger{color:var(--danger)}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.97)}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}}.toast-stack{z-index:200;left:50%;top:calc(var(--space-3) + var(--safe-t));gap:var(--space-2);flex-direction:column;width:min(420px,100vw - 24px);display:flex;position:fixed;transform:translate(-50%)}.toast{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-2);box-shadow:var(--shadow-lg);font-size:var(--text-sm);border-left:4px solid var(--surface-3);animation:pop-in var(--dur) var(--ease-out);display:flex}.toast>span{flex:1}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-close{color:var(--muted);cursor:pointer;padding:0 0 0 var(--space-2);background:0 0;border:0;font-size:1.25rem;line-height:1}.np{gap:var(--space-5);flex-direction:column;width:100%;max-width:480px;height:100%;margin:0 auto;display:flex}.np-top{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.np-top .label{text-align:center;font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.np-cover{flex:1;place-items:center;min-height:0;display:grid}.np-title{font-size:var(--text-lg);font-weight:700}.np-controls{justify-content:space-between;align-items:center;display:flex}.hero{border-radius:var(--radius-lg);padding:var(--space-4);background:linear-gradient(135deg, var(--hero-a,#1e1b4b), var(--surface) 75%);gap:var(--space-4);flex-direction:column;display:flex}.dot{background:var(--surface-3);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot.online{background:var(--success);box-shadow:0 0 0 3px #22c55e33}.room-card{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius);background:var(--surface);color:inherit;transition:background-color var(--dur-fast), transform var(--dur-fast);text-decoration:none;display:flex}.room-card:hover{background:var(--surface-2)}.room-card:active{transform:scale(.99)}.auth{min-height:100dvh;padding:var(--space-5) var(--space-4);place-items:center;display:grid}.auth-card{gap:var(--space-5);flex-direction:column;width:100%;max-width:380px;display:flex}.auth-card .brand{text-align:center;font-size:2.4rem}.segmented{background:var(--surface);border-radius:999px;grid-template-columns:1fr 1fr;padding:4px;display:grid}.segmented button{min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;font-weight:600}.segmented button[aria-selected=true]{background:var(--fg);color:var(--bg)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.avatar{border-radius:50%}.cover img{object-fit:cover;width:100%;height:100%;display:block}.reaction-bar{justify-content:space-between;gap:var(--space-1);display:flex}.reaction-btn{min-height:var(--tap);cursor:pointer;transition:transform var(--dur-fast), background-color var(--dur-fast);background:#ffffff0f;border:0;border-radius:999px;flex:1;font-size:1.35rem;line-height:1}.reaction-btn:hover{background:#ffffff1f}.reaction-btn:active{transform:scale(1.25)}.reaction-layer{z-index:150;pointer-events:none;position:fixed;inset:0;overflow:hidden}.reaction-float{bottom:calc(var(--nav-h) + var(--mini-h) + var(--safe-b));font-size:2rem;animation:2.6s cubic-bezier(.2,.7,.3,1) forwards float-up;position:absolute}@keyframes float-up{0%{opacity:0;transform:translate(-50%)scale(.6)}12%{opacity:1;transform:translate(-50%,-30px)scale(1.15)}to{opacity:0;transform:translate(calc(20px - 50%),-55vh)scale(1)}}@media (prefers-reduced-motion:reduce){.reaction-float{opacity:0;animation:none}}.chat{gap:var(--space-3);flex-direction:column;display:flex}.chat-list{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;max-height:55dvh;padding-right:2px;display:flex;overflow-y:auto}.msg{gap:var(--space-2);align-items:flex-end;max-width:85%;display:flex}.msg.mine{flex-direction:row-reverse;align-self:flex-end}.bubble{padding:var(--space-2) var(--space-3);background:var(--surface-2);font-size:var(--text-sm);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:16px 16px 16px 4px}.msg.mine .bubble{background:var(--accent);color:var(--accent-fg);border-radius:16px 16px 4px}.bubble .who{font-size:var(--text-xs);color:var(--muted);margin-bottom:2px;font-weight:600;display:block}.msg-time{color:var(--muted);flex:none;padding-bottom:2px;font-size:10px}.chat-input{gap:var(--space-2);bottom:calc(var(--nav-h) + var(--mini-h) + var(--safe-b) + var(--space-3));background:var(--bg);padding:var(--space-2) 0;align-items:center;display:flex;position:sticky}@media (width>=900px){.chat-input{bottom:calc(var(--mini-h) + var(--space-5))}}.history-time{font-size:var(--text-xs);color:var(--muted);flex:none}.lyrics{text-align:left;scrollbar-width:none;width:100%;max-height:100%;padding:30% 4px;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 18% 82%,#0000);mask-image:linear-gradient(#0000,#000 18% 82%,#0000)}.lyrics::-webkit-scrollbar{display:none}.lyrics p{color:#ffffffd9;transition:color var(--dur), opacity var(--dur);margin:0 0 14px;font-size:1.25rem;font-weight:700;line-height:1.35}.lyrics.synced p{color:#ffffff59}.lyrics.synced p.past{color:#ffffff8c}.lyrics.synced p.current{color:#fff}.lyrics-empty{text-align:center;padding:0 var(--space-5)}.np-cover{overflow:hidden}.vote-btn{border:1px solid var(--surface-3);min-width:56px;min-height:36px;color:var(--muted);font-size:var(--text-sm);cursor:pointer;transition:all var(--dur-fast);background:0 0;border-radius:999px;align-items:center;gap:6px;margin-right:4px;padding:0 12px;font-weight:600;display:inline-flex}.vote-btn:hover{border-color:var(--muted);color:var(--fg)}.vote-btn.on{border-color:var(--accent);color:var(--accent);background:#22c55e1a}.vote-btn:active{transform:scale(.94)}.chips{gap:var(--space-2);scrollbar-width:none;margin:0 calc(-1 * var(--space-4));padding:0 var(--space-4) 2px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{background:var(--surface);min-height:40px;color:var(--fg);font-size:var(--text-sm);cursor:pointer;border:0;border-radius:999px;flex:none;align-items:center;gap:8px;padding:0 14px 0 6px;font-weight:500;display:inline-flex}.chip:hover{background:var(--surface-2)}.chip .chip-icon{background:var(--accent);width:28px;height:28px;color:var(--accent-fg);border-radius:50%;place-items:center;display:grid}.tr-note{opacity:.75;margin-top:4px;font-size:11px;display:block}.tr-note button{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.stat-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.stat{background:var(--surface-2);border-radius:var(--radius);padding:var(--space-3);text-align:center}.stat b{font-size:var(--text-lg);font-family:var(--font-display);color:var(--accent);font-weight:400;display:block}.stat span{font-size:var(--text-xs);color:var(--muted)}.rank{text-align:center;width:22px;color:var(--muted);flex:none;font-weight:700}select.input{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 20px),calc(100% - 15px);background-repeat:no-repeat;background-size:5px 5px;padding-right:40px}
