:root{--bg:#0d0b12;--surface:#171522;--surface-2:#211e2e;--text:#f2f0f7;--muted:#a09bb4;--accent:#c2a4ff;--accent-ink:#1a1030;--line:#2c2839;--danger:#ff8189;--radius:14px;--shell:640px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.shell{max-width:var(--shell);margin:0 auto;min-height:100dvh;padding-bottom:84px;background:var(--bg)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 16px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.brand{font-weight:700;letter-spacing:-.02em;font-size:18px}.brand span{color:var(--accent)}.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:var(--shell);display:grid;grid-template-columns:repeat(4,1fr);background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:8px 0 max(8px,env(safe-area-inset-bottom));z-index:30}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:var(--muted);padding:6px 0}.tabbar a.active{color:var(--accent)}.tabbar .glyph{font-size:18px;line-height:1}main{padding:16px}h1{font-size:22px;margin:4px 0 16px;letter-spacing:-.02em}h2{font-size:15px;margin:22px 0 10px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.row{display:flex;gap:12px;align-items:center;padding:10px}.row+.row{border-top:1px solid var(--line)}.thumb{width:64px;height:64px;flex:none;border-radius:10px;background:linear-gradient(140deg,var(--surface-2),#322c46);display:grid;place-items:center;font-size:22px;object-fit:cover}.grow{min-width:0;flex:1 1}.title{font-weight:600;font-size:15px}.sub,.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sub{color:var(--muted);font-size:13px;margin-top:2px}.scroller{display:flex;gap:12px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.scroller::-webkit-scrollbar{display:none}.tile{width:148px;flex:none}.tile .art{width:148px;height:148px;border-radius:12px;background:linear-gradient(140deg,var(--surface-2),#37304e);display:grid;place-items:center;font-size:34px;border:1px solid var(--line);object-fit:cover}.tile .title{margin-top:8px;white-space:normal;font-size:14px;line-height:1.25}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:999px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.block{width:100%;display:block}.btn:disabled{opacity:.5;cursor:default}.input{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:15px}.input:focus{outline:2px solid var(--accent);outline-offset:1px}.stack{display:flex;flex-direction:column;gap:12px}.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.muted,.pill{color:var(--muted);font-size:13px}.pill{border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:var(--surface)}.pill.on{border-color:var(--accent);color:var(--accent)}.empty{color:var(--muted);font-size:14px;padding:24px 8px;text-align:center}.notice{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--surface);border-radius:10px;padding:12px;font-size:13px}.error{color:var(--danger);font-size:13px}.player{width:100%;border-radius:12px;background:#000;aspect-ratio:16/9}.badge{font-size:11px;text-transform:uppercase;letter-spacing:.06em;border-radius:6px;padding:3px 7px;background:var(--surface-2);color:var(--muted)}.badge.live{color:#7ee0a8}