:root{--bg:#070816;--bg2:#10132e;--ink:#eaf6ff;--dim:#8f9bc4;--cyan:#5ff7ff;--gold:#ffd34d;--pink:#ff3d7f;
--font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);
-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
[hidden]{display:none!important}
button{font:inherit;color:inherit;cursor:pointer}
.screen{position:fixed;inset:0}
#home{overflow-y:auto;padding:calc(12px + var(--safe-t)) 16px calc(16px + var(--safe-b));
background:radial-gradient(120% 70% at 50% 0%,#1a1f4a 0%,var(--bg) 70%)}
.topbar{display:flex;align-items:center;justify-content:space-between;max-width:760px;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px}
.brand h1{font-size:22px;margin:0;letter-spacing:.5px}
.logo{width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff6d6 0 20%,#ffb347 40%,transparent 42%),
radial-gradient(circle,transparent 58%,var(--cyan) 60% 66%,transparent 68%);box-shadow:0 0 14px #ff9a3d88}
.tagline{color:var(--dim);margin:6px auto 16px;font-size:14px;max-width:760px}
.icon-btn{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;width:44px;height:44px;
display:grid;place-items:center;padding:0}
.icon-btn:active{transform:scale(.94)}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:760px;margin:0 auto}
@media (min-width:700px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.card{position:relative;text-align:left;background:linear-gradient(160deg,var(--bg2),#0a0c20);border:1px solid rgba(255,255,255,.08);
border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:6px;min-height:200px;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.card:active{transform:scale(.97)}
.card .art{aspect-ratio:1/1;border-radius:14px;display:grid;place-items:center;background:#05060f;overflow:hidden}
.card .art svg{width:78%;height:78%}
.card h3{margin:2px 0 0;font-size:16px}
.card p{margin:0;color:var(--dim);font-size:12px;line-height:1.3}
.card .best{margin-top:auto;font-size:13px;font-weight:700;color:var(--gold)}
.card .new{position:absolute;top:18px;right:18px;background:var(--pink);color:#fff;font-size:10px;font-weight:800;padding:3px 7px;border-radius:999px;letter-spacing:.5px}
.foot{display:flex;justify-content:space-between;color:#5d6890;font-size:11px;max-width:760px;margin:18px auto 0}
.badge-off{color:#7dffb0}
#play{background:#03040b;touch-action:none}
#stage{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.hud{position:absolute;left:0;right:0;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;
padding:calc(10px + var(--safe-t)) 12px 0;pointer-events:none}
.hud .icon-btn{pointer-events:auto;background:rgba(0,0,0,.35)}
.hud-mid{text-align:center;line-height:1}
.hud-sub{font-size:13px;font-weight:700;color:var(--gold);margin-top:4px;min-height:1em;letter-spacing:.5px}
.hud-score{font-size:34px;font-weight:800;text-shadow:0 0 14px rgba(95,247,255,.6);font-variant-numeric:tabular-nums}
.overlay{position:absolute;inset:0;display:grid;place-items:center;background:rgba(3,4,11,.55);backdrop-filter:blur(2px)}
.panel{width:min(86vw,360px);text-align:center;background:rgba(16,19,46,.92);border:1px solid rgba(255,255,255,.1);border-radius:22px;padding:22px 18px}
.panel h2{margin:0 0 6px;font-size:28px;letter-spacing:1px}
.panel p{margin:0 0 12px;color:var(--dim)}
.ov-score{font-size:56px;font-weight:800;line-height:1}
.ov-best{color:var(--gold);font-weight:700;margin:6px 0 16px;min-height:1.2em}
.btn{display:block;width:100%;border:0;border-radius:14px;padding:14px;font-size:17px;font-weight:700;margin-top:8px;background:rgba(255,255,255,.08)}
.btn.primary{background:linear-gradient(90deg,#29d9ff,#5ff7ff);color:#04121a}
.btn.ghost{background:transparent;border:1px solid rgba(255,255,255,.15)}
.btn.small{width:auto;display:inline-block;padding:8px 14px;font-size:14px;margin:0}
.btn:active{transform:scale(.97)}
.sheet-wrap{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center;z-index:5}
.sheet{width:min(100%,520px);background:var(--bg2);border-radius:22px 22px 0 0;padding:18px 18px calc(18px + var(--safe-b))}
.sheet h2{margin:0 0 10px}
.row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:16px}
.fine{color:var(--dim);font-size:12px}
.switch{appearance:none;-webkit-appearance:none;width:52px;height:30px;border-radius:999px;background:#2a2f55;position:relative;cursor:pointer;margin:0}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .15s}
.switch:checked{background:var(--cyan)}
.switch:checked::after{left:25px}
.teaser{border:2px dashed rgba(255,255,255,.14);border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:6px;min-height:200px;color:var(--dim)}
.teaser .q{aspect-ratio:1/1;border-radius:14px;display:grid;place-items:center;font-size:56px;font-weight:800;color:rgba(255,255,255,.18);background:rgba(255,255,255,.03)}
.teaser h3{margin:2px 0 0;font-size:16px;color:var(--ink)}
.teaser p{margin:0;font-size:12px;line-height:1.3}
.shelf{max-width:760px;margin:18px auto 10px;font-size:13px;text-transform:uppercase;letter-spacing:2px;color:var(--dim)}
.card .mode{font-weight:600;color:var(--dim);font-size:11px}
.picker{margin:4px 0 6px}
.chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:6px 0}
.chip{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);border-radius:999px;padding:7px 12px;font-size:13px;font-weight:700;color:var(--ink)}
.chip[aria-checked="true"]{background:var(--accent,#5ff7ff);color:#05060f;border-color:transparent}
.pick-hint{color:var(--dim);font-size:12px;min-height:1.2em;margin-bottom:4px}
.ov-tag{display:inline-block;font-size:12px;font-weight:700;color:var(--dim);margin-bottom:6px}
.banner{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);font-size:40px;font-weight:900;letter-spacing:2px;color:#fff;
text-shadow:0 0 18px var(--accent,#5ff7ff);pointer-events:none;z-index:1;animation:pop 1.1s ease-out forwards}
@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
@media (max-height:700px){.panel{padding:14px 14px}.ov-score{font-size:44px}.btn{padding:11px}}
