:root{--bg: #05060c;--ink: #eaf2ff;--muted: #8a9bb8;--acc: #ff4fd8;--acc2: #36d6ff;--gold: #ffd36e;--card: rgba(14, 18, 32, .62);--stroke: rgba(255, 255, 255, .08);--stroke-strong: rgba(255, 255, 255, .16);--glass: rgba(255, 255, 255, .035);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}#app{width:100%;height:100%;position:relative}canvas{display:block;image-rendering:pixelated;image-rendering:crisp-edges}.scanlines{position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(to bottom,#0000 0px 2px,#0000002e 3px);mix-blend-mode:multiply;z-index:40}.hud{position:fixed;inset:0;pointer-events:none;z-index:20;letter-spacing:.5px}.hud-top{position:absolute;top:16px;left:18px;right:140px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.chip{display:flex;flex-direction:column;gap:2px;min-width:104px;padding:10px 15px;background:var(--card);border:1px solid var(--stroke);border-radius:16px;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 8px 24px #00000059,inset 0 1px #ffffff0d}.chip-label{color:var(--muted);font-size:10px;letter-spacing:1.5px;text-transform:uppercase}.chip-value{color:var(--ink);font-size:22px;font-weight:600;letter-spacing:.5px}.chip-sub{color:var(--muted);font-size:11px}.chip-sub.hot{color:var(--gold)}.chip-sub.accent{color:var(--gold);letter-spacing:1.5px}.chip-health{min-width:128px}.hbar{width:100%;height:8px;border-radius:999px;background:#ffffff14;overflow:hidden;position:relative;margin:5px 0 3px}.hfill{display:block;height:100%;width:100%;border-radius:999px;background:linear-gradient(90deg,var(--acc2),var(--acc));box-shadow:0 0 12px #36d6ff73;transition:width .25s ease-out,background .2s linear}.hbar.critical .hfill{background:linear-gradient(90deg,#ff7a3c,#ff2a4a);box-shadow:0 0 10px #ff2a4a80;animation:hp-pulse .8s ease-in-out infinite}.chip-sub.critical{color:#ff5a6a;letter-spacing:2px;animation:blink .7s steps(2,start) infinite}.hbar.flash{animation:hp-flash .35s ease-out}@keyframes hp-pulse{50%{filter:brightness(1.45)}}@keyframes hp-flash{0%{box-shadow:0 0 0 3px #ff3c3ca6}to{box-shadow:0 0 0 6px #ff3c3c00}}.effects{position:absolute;top:68px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;min-width:200px}.effect-chip{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--stroke);border-left:3px solid var(--chip, #fff);border-radius:10px;padding:5px 10px;font-size:11px;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 6px 18px #0000004d}.effect-bar{flex:1;height:5px;border-radius:3px;background:#ffffff1a;position:relative;overflow:hidden}.effect-bar span{position:absolute;inset:0 auto 0 0;background:var(--chip, #fff);border-radius:3px}.pill{font-family:inherit;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--ink);background:var(--card);border:1px solid var(--stroke);border-radius:999px;padding:8px 16px;cursor:pointer;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 6px 18px #0000004d;transition:transform .12s ease-out,border-color .12s linear,background .12s linear}.pill:hover{border-color:var(--stroke-strong);background:#ffffff14;transform:translateY(-1px)}.pill:active{transform:translateY(0)}.lang-pill{position:fixed;top:16px;right:18px;z-index:50;color:var(--gold)}.pause-pill{position:fixed;top:16px;right:84px;left:auto;transform:none;z-index:50;width:44px;height:44px;display:none;place-items:center;border-radius:50%;background:var(--card);border:1px solid var(--stroke);cursor:pointer;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 6px 18px #0000004d;transition:transform .12s ease-out,border-color .12s linear,background .12s linear;color:var(--ink)}.pause-pill.show{display:grid}.pause-pill:hover{border-color:var(--stroke-strong);background:#ffffff14;transform:translateY(-1px)}.pause-pill:active{transform:translateY(0)}.pause-pill .pax{width:18px;height:18px}.pad-chip{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:44;display:none;align-items:center;gap:10px;padding:8px 14px;background:var(--card);border:1px solid var(--stroke);border-radius:999px;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 6px 18px #0000004d;pointer-events:none}.pad-chip.show{display:flex}.pad-chip .pax{width:20px;height:20px;color:var(--ink)}.ptag{display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:1.5px;text-transform:uppercase}.ptag:before{content:"";width:10px;height:10px;border-radius:50%;background:currentColor}.ptag.p1{color:var(--acc2)}.ptag.p2{color:var(--acc)}.ptag.muted{color:var(--muted)}.music-bar{display:none;position:absolute;top:64px;left:50%;transform:translate(-50%);flex-direction:column;align-items:center;gap:5px;min-width:280px;padding:9px 16px;background:var(--card);border:1px solid var(--stroke);border-radius:14px;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 8px 24px #00000059}.hud.mode-music .music-bar{display:flex}.hud.mode-music .chip-wave,.hud.mode-music .chip-health{display:none}.mb-name{color:var(--gold);font-size:13px;font-weight:600;letter-spacing:1px}.mb-time{color:var(--muted);font-size:10px;letter-spacing:1.5px}.mb-track{width:100%;height:5px;border-radius:3px;background:#ffffff1a;overflow:hidden}.mb-fill{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--acc2),var(--acc))}.pixel-name{position:fixed;top:22%;left:50%;transform:translate(-50%,-50%);z-index:38;display:none;image-rendering:pixelated;pointer-events:none}.pixel-name.show{display:block}.dev-rows{width:100%;display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.dev-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--stroke);border-radius:16px;background:var(--glass);transition:border-color .12s linear,background .12s linear}.dev-row.cursor{border-color:var(--stroke-strong);background:#ffffff0f}.dev-tiles{display:flex;gap:10px;flex:1}.dev-tile{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;font-family:inherit;color:var(--muted);background:#ffffff08;border:1px solid var(--stroke);border-radius:13px;cursor:pointer;transition:border-color .12s linear,transform .12s ease-out,background .12s linear}.dev-tile:hover{border-color:var(--stroke-strong);background:#ffffff0f;transform:translateY(-1px)}.dev-tile.sel{border-color:var(--acc2);color:var(--ink);background:#36d6ff14;box-shadow:0 0 0 1px #36d6ff59,0 8px 20px #36d6ff1f}.dev-tile .pax{width:44px;height:28px}.dev-name{font-size:11px;letter-spacing:1px;text-transform:uppercase}.dev-sub{font-size:9.5px;color:var(--muted);letter-spacing:1px;min-height:12px}.dev-tile.sel .dev-sub{color:var(--acc2)}.song-list{width:100%;display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.song-row{display:flex;align-items:center;gap:14px;padding:14px 16px;font-family:inherit;color:var(--ink);background:var(--glass);border:1px solid var(--stroke);border-radius:16px;cursor:pointer;text-align:left;transition:transform .12s ease-out,border-color .12s linear,background .12s linear}.song-row:hover{border-color:var(--stroke-strong);background:#ffffff0f;transform:translateY(-1px)}.song-row.cursor{border-color:var(--stroke-strong);background:#ffffff12;transform:translateY(-1px);box-shadow:0 10px 26px #00000059}.song-row.cursor .opt-chevron{color:var(--gold)}.song-ico{width:24px;height:24px;color:var(--acc2);flex:0 0 auto}.song-name{flex:1;font-size:15px;font-weight:500;letter-spacing:.5px}.banner{position:fixed;top:32%;left:50%;transform:translate(-50%,-50%) scale(1);z-index:30;font-size:28px;font-weight:600;letter-spacing:4px;color:#fff;text-shadow:0 2px 24px rgba(54,214,255,.45),0 1px 2px rgba(0,0,0,.6);opacity:0;transition:opacity .2s ease,transform .2s ease-out;pointer-events:none;text-transform:uppercase}.banner.show{opacity:1;transform:translate(-50%,-50%) scale(1.04)}.overlay{position:fixed;inset:0;z-index:35;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 120% at 50% 0%,#141a308c,#04060ed1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);pointer-events:auto;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:16px}.overlay.hidden{display:none}.overlay .panel{margin:auto}.panel{text-align:center;border:1px solid var(--stroke);border-radius:24px;box-shadow:0 30px 80px #0000008c,inset 0 1px #ffffff0f;padding:30px;background:linear-gradient(180deg,#14192cb8,#090c18d1);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);width:min(560px,92vw);display:flex;flex-direction:column;align-items:center}.logo{display:block;width:min(440px,72vw);height:auto;margin:6px 0 24px;image-rendering:pixelated;filter:invert(1) drop-shadow(0 0 28px rgba(255,79,216,.35))}.subtitle{color:var(--muted);font-size:12px;letter-spacing:2px;text-transform:uppercase;margin-bottom:16px}.over-title{font-size:34px;font-weight:700;letter-spacing:2px;color:var(--ink);text-transform:uppercase;margin-bottom:12px}.over-title.small{font-size:24px}.help{display:grid;grid-template-columns:auto 1fr;gap:5px 16px;text-align:left;font-size:12px;color:#b9cbe4;text-transform:none;margin-bottom:14px}.help b{color:var(--gold);letter-spacing:3px;text-transform:uppercase}.option-list{width:100%;display:flex;flex-direction:column;gap:10px;margin-top:auto;margin-bottom:12px}.option{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;width:100%;text-align:left;font-family:inherit;color:var(--ink);background:var(--glass);border:1px solid var(--stroke);border-radius:16px;padding:14px 16px;cursor:pointer;position:relative;overflow:hidden;transition:transform .12s ease-out,border-color .12s linear,background .12s linear}.option:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--acc),var(--acc2));opacity:0;transition:opacity .15s linear}.option:hover{border-color:var(--stroke-strong);background:#ffffff0f;transform:translateY(-1px)}.option.active{border-color:var(--stroke-strong);background:#ffffff12;transform:translateY(-1px);box-shadow:0 12px 30px #0006}.option.active:before{opacity:1}.opt-key{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#ffffff0f;border:1px solid var(--stroke);color:var(--gold);font-size:13px;font-weight:600}.opt-body{display:flex;flex-direction:column;gap:3px}.opt-title{font-size:15px;font-weight:600;letter-spacing:.5px}.opt-desc{font-size:11.5px;color:var(--muted);letter-spacing:.2px}.opt-keys{font-size:11px;color:var(--acc2);border:1px solid var(--stroke);border-radius:8px;padding:4px 9px;background:#ffffff0a;white-space:nowrap}body.ui-mobile .opt-keys{display:none}.opt-chevron{color:var(--muted);font-size:12px;transition:transform .12s ease-out,color .12s linear}.option.active .opt-chevron{color:var(--gold);transform:translate(2px)}.keyhint{font-size:11px;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;animation:blink 1.6s ease-in-out infinite}@keyframes blink{50%{opacity:.4}}.score-big{font-size:34px;font-weight:700;color:var(--gold);margin:8px 0}.tag{font-size:11px;color:var(--muted);letter-spacing:2px;text-transform:uppercase}.btn-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:14px}.mbtn{font-family:inherit;font-size:13px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--ink);background:#ffffff0d;border:1px solid var(--stroke);border-radius:999px;padding:12px 24px;cursor:pointer;transition:transform .12s ease-out,border-color .12s linear,background .12s linear}.mbtn:hover{border-color:var(--stroke-strong);background:#ffffff17;transform:translateY(-1px)}.mbtn:active{transform:translateY(0)}.mbtn.primary{border-color:#ffd36e80;color:var(--gold);background:#ffd36e14}.mbtn.primary:hover{background:#ffd36e24;border-color:#ffd36eb3}.touch-hints{display:none}body.ui-mobile:not(.in-game) .touch-hints{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:0 12px calc(14px + env(safe-area-inset-bottom));pointer-events:none}.thint{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--stroke);border-radius:999px;color:var(--muted);font-size:10px;letter-spacing:1.5px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.th-dot{width:10px;height:10px;border-radius:50%;background:#b4c8e666}.dpad{position:fixed;left:0;right:0;bottom:0;display:none;justify-content:space-between;align-items:flex-end;padding:0 16px calc(14px + env(safe-area-inset-bottom));z-index:25;pointer-events:none}body.ui-mobile.in-game .dpad.show{display:flex}.dpad.hide-right .dpair[data-side="1"]{display:none}.dpair{display:flex;align-items:center;gap:12px;pointer-events:auto}.dbtn{width:74px;height:74px;border-radius:24px;background:var(--card);border:1px solid var(--stroke);color:var(--ink);font-family:inherit;font-size:24px;cursor:pointer;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 8px 24px #00000059,inset 0 1px #ffffff0f;touch-action:none;user-select:none;transition:transform .08s ease-out,border-color .1s linear,background .1s linear}.dbtn:hover{border-color:var(--stroke-strong)}.dbtn.held{border-color:#ffd36e99;background:#ffd36e1a;transform:scale(.94);box-shadow:0 4px 14px #00000059}.pax{width:34px;height:34px;fill:currentColor;image-rendering:pixelated;filter:drop-shadow(0 2px 4px rgba(0,0,0,.45))}.pax.down{transform:rotate(180deg)}.dbtn.held .pax{fill:var(--gold)}.dtag{font-size:10px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase}@media (max-width: 780px){.hud-top{top:calc(10px + env(safe-area-inset-top));left:10px;right:104px;gap:6px}.chip{min-width:0;flex:1;padding:7px 10px;border-radius:13px}.chip-value{font-size:16px}.chip-sub{font-size:9.5px}.chip-label{font-size:8.5px}.chip-health{min-width:100px}.hbar{height:7px}.effects{top:66px;min-width:150px}.effect-chip{font-size:9.5px;padding:4px 8px}.lang-pill{top:calc(12px + env(safe-area-inset-top));right:10px;padding:6px 12px;font-size:11px}.pause-pill{top:calc(12px + env(safe-area-inset-top));right:60px;width:40px;height:40px}.pad-chip{top:calc(56px + env(safe-area-inset-top));bottom:auto;left:auto;right:10px;transform:none;padding:6px 10px;gap:8px}.music-bar{top:calc(60px + env(safe-area-inset-top));min-width:210px;padding:7px 12px}.mb-name{font-size:11px}.dev-tile .pax{width:34px;height:22px}.dev-tiles{gap:6px}.dev-row{padding:8px;gap:8px}.dbtn{width:68px;height:68px;border-radius:22px;font-size:22px}.panel{padding:20px 16px;border-radius:20px}.logo{width:min(320px,66vw);margin-bottom:16px}.subtitle{font-size:10px;margin-bottom:10px}.help{display:none}.option{min-height:56px;padding:14px;gap:10px;border-radius:15px}.opt-title{font-size:14px}.opt-desc{font-size:10.5px}.banner{font-size:20px;letter-spacing:2px}.over-title{font-size:24px}.keyhint{font-size:10px}}@media (max-height: 560px){.help{display:none}.logo{width:min(200px,34vw);margin-bottom:10px}.panel{padding:14px 16px}.subtitle{margin-bottom:8px}.option{min-height:48px;padding:10px 14px}.opt-desc{display:none}.over-title{font-size:22px}}
