:root{--bg:#05030a;--ink:#f2eeff;--ink-dim:#a99fd0;--accent:#ff3de0;--accent-2:#3dd6ff;--gold:#ffc23d;--panel:#100a22c7;--line:#bea0ff38;--font:"Bahnschrift", "Segoe UI", "Roboto Condensed", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--font);-webkit-user-select:none;user-select:none;touch-action:none;margin:0;overflow:hidden}#scene{width:100vw;height:100vh;display:block;position:fixed;inset:0}.hidden{display:none!important}#dmd-wrap{top:max(10px, env(safe-area-inset-top));z-index:5;pointer-events:none;background:linear-gradient(#1b1622,#0b080e);border:1px solid #3a2f44;border-radius:8px;width:min(420px,40vw);padding:5px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0009,inset 0 0 0 2px #000}#dmd{aspect-ratio:4;width:100%;image-rendering:pixelated;filter:drop-shadow(0 0 4px #ff6e148c);border-radius:3px;display:block}#hud{pointer-events:none;z-index:4;position:fixed;inset:0}.hud-top{flex-direction:column;gap:8px;display:flex;position:absolute;top:14px;left:16px}.hud-score{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(135deg,#140c2ccc,#280a3c99);border-radius:12px;padding:8px 14px 6px}.hud-label{letter-spacing:.3em;color:var(--ink-dim);font-size:11px}.roll{font-variant-numeric:tabular-nums;text-shadow:0 0 14px #ff3de08c;height:1em;font-size:clamp(26px,3.4vw,44px);font-weight:700;line-height:1;display:flex;overflow:hidden}.roll .digit{text-align:center;width:.62em;height:1em;display:inline-block;overflow:hidden}.roll .strip{line-height:1em;transition:transform .28s cubic-bezier(.2,.9,.3,1.3);display:inline-block}.roll .sep{opacity:.6;width:.28em}.hud-status{flex-wrap:wrap;gap:6px;max-width:360px;display:flex}.pill{letter-spacing:.08em;border:1px solid var(--line);background:#140c2cbf;border-radius:99px;padding:4px 10px;font-size:12px}.pill.lock b{vertical-align:0;background:#2a2440;border-radius:50%;width:8px;height:8px;margin-left:5px;display:inline-block}.pill.lock b.on{background:var(--accent-2);box-shadow:0 0 8px var(--accent-2)}.pill.lock b.lit{background:var(--accent-2);animation:.5s steps(2,end) infinite blink}.pill.dim{opacity:.45}.pill.eb,.pill.save{display:none}.pill.eb.show{color:#ffb35c;border-color:#ff9a2e;display:block}.pill.save.show{color:#ff7a7a;border-color:#ff3d3d;animation:.8s steps(2,end) infinite blink;display:block}.mb-badge{letter-spacing:.2em;opacity:0;background:linear-gradient(90deg,#ff3d3d,#ff9a2e);border-radius:10px;padding:8px 16px;font-weight:800;transition:all .3s;position:absolute;top:18px;right:18px;transform:translateY(-10px)}.mb-badge.show{opacity:1;animation:1s ease-in-out infinite alternate glow;transform:none}.mb-badge.wizard{background:linear-gradient(90deg,#ff3de0,#3dd6ff,#62ff9a,#ffc23d) 0 0/300%;animation:2s linear infinite rainbow}.hud-missions{left:16px;bottom:max(16px, env(safe-area-inset-bottom));gap:8px;display:flex;position:absolute}.m-icon{letter-spacing:.12em;color:var(--ink-dim);flex-direction:column;align-items:center;gap:4px;font-size:10px;display:flex}.m-icon i{opacity:.5;border:2px solid;border-radius:50%;width:22px;height:22px}.m-icon.m1{color:#ff6a3d}.m-icon.m2{color:#ffd23d}.m-icon.m3{color:#3dffb5}.m-icon.m4{color:#3d8bff}.m-icon.done i{opacity:1;background:currentColor;box-shadow:0 0 10px}.m-icon.selected i{opacity:1;animation:1s steps(2,end) infinite blink}.m-icon.ready i{animation:.3s steps(2,end) infinite blink}.m-icon.active i{opacity:1;background:currentColor;animation:.5s ease-in-out infinite alternate pulse}.m-icon span{color:var(--ink-dim)}.mission-bar{top:calc(max(10px, env(safe-area-inset-top)) + min(420px, 40vw) / 4 + 24px);letter-spacing:.08em;background:#280e46cc;border:1px solid #b36bff;border-radius:10px;align-items:center;gap:10px;width:min(420px,70vw);padding:6px 12px;font-size:13px;display:none;position:absolute;left:50%;transform:translate(-50%)}.mission-bar.show{display:flex}.mission-bar .mb-name{white-space:nowrap}.mb-track{background:#1a1030;border-radius:3px;flex:1;height:6px;overflow:hidden}.mb-fill{background:linear-gradient(90deg,#b36bff,#3dd6ff);height:100%;transition:width .25s linear}.mb-time{text-align:right;min-width:2ch;font-size:18px;font-weight:800}.mission-bar.hurry{border-color:#ff3d3d;animation:.3s infinite shakeX}.tilt-meter{bottom:max(18px, env(safe-area-inset-bottom));opacity:0;background:#0009;border:1px solid #553;border-radius:8px;width:160px;height:16px;transition:opacity .3s;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}.tilt-meter.show{opacity:1}.tm-fill{background:linear-gradient(90deg,#ffc23d,#ff3d3d);width:0;height:100%}.tilt-meter span{text-align:center;letter-spacing:.4em;font-size:10px;line-height:16px;position:absolute;inset:0}.tilt-meter.danger{border-color:#ff3d3d;box-shadow:0 0 14px #ff3d3d}.hud-center{text-align:center;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.callout{animation:.35s cubic-bezier(.2,1.4,.4,1) both calloutIn}.callout.out{animation:.35s ease-in both calloutOut}.c-text{letter-spacing:.06em;text-shadow:0 0 22px #ff3de0e6,0 4px #00000080;white-space:nowrap;font-size:clamp(30px,6vw,76px);font-weight:900}.c-sub{letter-spacing:.18em;color:#ffe7a8;text-shadow:0 2px 8px #000;margin-top:4px;font-size:clamp(14px,2.2vw,26px);font-weight:700}.callout.jackpot .c-text{background:linear-gradient(#fff6c8,#ffc23d 55%,#ff7a1c);color:#0000;filter:drop-shadow(0 0 18px #ffaa28e6);-webkit-background-clip:text;background-clip:text;animation:.25s ease-in-out 6 alternate throb}.callout.wizard .c-text{background:linear-gradient(90deg,#ff3de0,#3dd6ff,#62ff9a,#ffc23d,#ff3de0) 0 0/200%;color:#0000;filter:drop-shadow(0 0 20px #c878ffe6);-webkit-background-clip:text;background-clip:text;animation:1.5s linear infinite rainbow}.callout.tilt .c-text,.callout.warning .c-text{color:#ff3d3d;text-shadow:0 0 24px red;animation:.3s steps(2,end) infinite blink}.callout.award .c-text{color:#ffb35c;text-shadow:0 0 22px #ff7a1c}.callout.mission .c-text{color:#d9b6ff;text-shadow:0 0 22px #b36bff}.callout.combo .c-text{color:#fff27a;text-shadow:0 0 16px #ffae00;font-size:clamp(22px,4vw,46px)}.callout.info .c-text{font-size:clamp(22px,4.2vw,52px)}#hud.dmd-only .hud-top,#hud.dmd-only .hud-center,#hud.dmd-only .hud-pops,#hud.dmd-only .mission-bar{display:none!important}.hud-pops{position:absolute;inset:0}.score-pop{text-shadow:0 0 10px #ff3de0e6,0 2px 3px #000;white-space:nowrap;font-size:18px;font-weight:800;animation:1.2s ease-out forwards popUp;position:absolute;transform:translate(-50%,-50%)}.screen-flash{opacity:0;mix-blend-mode:screen;position:absolute;inset:0}.screen-vignette{opacity:0;position:absolute;inset:0}.screen-vignette.pulse{animation:1.2s ease-out vign}.fps{color:#9f9;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000;font-size:12px;display:none;position:absolute;bottom:8px;right:10px}.fps.show{display:block}.menu{z-index:10;-webkit-user-select:none;user-select:none;background:radial-gradient(#05030a1a,#05030aa6);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow:auto}.menu-main{flex-direction:column;align-items:center;gap:28px;margin-top:12vh;display:flex}.logo{text-align:center;line-height:.9}.logo-a,.logo-b{letter-spacing:.08em;font-size:clamp(48px,11vw,120px);font-weight:900}.logo-a{background:linear-gradient(#fff,#ff8af0);color:#0000;filter:drop-shadow(0 0 24px #ff3de0cc);-webkit-background-clip:text;background-clip:text}.logo-b{background:linear-gradient(#e6fbff,#3dd6ff);color:#0000;filter:drop-shadow(0 0 24px #3dd6ffcc);-webkit-background-clip:text;background-clip:text}.logo-c{letter-spacing:.6em;color:var(--ink-dim);margin-top:12px;font-size:13px}.menu-buttons{flex-direction:column;gap:10px;min-width:260px;margin-top:8px;display:flex}.menu button{font-family:var(--font);letter-spacing:.22em;color:var(--ink);border:1px solid var(--line);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#180e32b8;border-radius:12px;padding:12px 22px;font-size:16px;font-weight:700;transition:all .15s}.menu button:hover,.menu button:focus-visible{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 24px #ff3de073;outline:none;transform:translateY(-1px)}.menu button.primary{background:linear-gradient(90deg,#ff3de0,#8a4dff);border-color:#0000}.menu button.small{margin-left:10px;padding:6px 12px;font-size:12px}.menu-hint{color:var(--ink-dim);letter-spacing:.08em;text-align:center;max-width:90vw;font-size:13px}.menu-panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:18px;width:min(640px,94vw);max-height:92vh;padding:22px 26px;overflow:auto;box-shadow:0 20px 80px #0009}.menu-panel h2{letter-spacing:.3em;text-align:center;color:#fff;text-shadow:0 0 16px var(--accent);margin:0 0 16px;font-size:22px}.menu-panel .menu-buttons{align-items:stretch;max-width:320px;margin:18px auto 0}.tabs{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:14px;display:flex}.menu .tab{padding:8px 12px;font-size:12px}.menu .tab.on{border-color:var(--accent-2);box-shadow:0 0 14px #3dd6ff66}.opts{flex-direction:column;gap:4px;display:flex}.opt{letter-spacing:.04em;border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;gap:16px;padding:8px 4px;font-size:14px;display:flex}.opt select,.opt output{font-family:var(--font);font-size:14px}.opt select{color:var(--ink);border:1px solid var(--line);background:#160e2e;border-radius:8px;padding:6px 8px}.rng{align-items:center;gap:10px;display:flex}.rng input{width:160px;accent-color:var(--accent)}.rng output{text-align:right;min-width:4ch;color:var(--ink-dim)}.opt input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.menu .bind{letter-spacing:.05em;min-width:150px;padding:6px 12px;font-size:13px}.note{color:var(--ink-dim);align-items:center;padding:6px 4px;font-size:12px;display:flex}.scores{counter-reset:s;margin:0;padding:0;list-style:none}.scores li{counter-increment:s;font-variant-numeric:tabular-nums;border-bottom:1px solid #ffffff0f;justify-content:space-between;padding:8px 10px;font-size:18px;display:flex}.scores li:before{content:counter(s) ".";color:var(--ink-dim);width:2.2em}.scores li .n{letter-spacing:.3em;flex:1}.scores li.champ{color:var(--gold);text-shadow:0 0 12px #ffc23d99;font-size:22px}.audits{color:var(--ink-dim);text-align:center;margin-top:10px;font-size:12px}.help{color:#ddd6f5;font-size:14px;line-height:1.5}.help h3{letter-spacing:.2em;color:var(--accent-2);margin:14px 0 4px;font-size:14px}.help p{margin:0 0 6px}.hs-score{text-align:center;color:var(--gold);margin-bottom:14px;font-size:34px;font-weight:800}.initials{justify-content:center;gap:14px;margin-bottom:14px;display:flex}.initials span{text-align:center;border-bottom:3px solid #444;width:1.2em;font-size:54px;font-weight:900}.initials span.cur{border-color:var(--accent);color:#fff;animation:.6s steps(2,end) infinite blink}#touch-ui{display:none}body.touch.in-game #touch-ui{display:block}#touch-ui button{z-index:6;font-family:var(--font);letter-spacing:.15em;color:#fff;border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);touch-action:none;background:#280e468c;border-radius:50%;font-weight:800;position:fixed}#touch-plunger{right:max(14px, env(safe-area-inset-right));bottom:max(90px, calc(env(safe-area-inset-bottom) + 76px));width:86px;height:86px;font-size:12px}#touch-nudge{left:50%;bottom:max(44px, calc(env(safe-area-inset-bottom) + 30px));border-radius:20px;width:76px;height:40px;font-size:11px;transform:translate(-50%)}#fatal{text-align:center;justify-content:center;align-items:center;padding:30px;font-size:18px;display:flex;position:fixed;inset:0}@keyframes blink{50%{opacity:.25}}@keyframes pulse{to{transform:scale(1.2)}}@keyframes glow{to{box-shadow:0 0 26px #ff5a28e6}}@keyframes rainbow{to{background-position:200% 0}}@keyframes throb{to{transform:scale(1.08)}}@keyframes shakeX{25%{transform:translate(calc(-50% - 2px))}75%{transform:translate(calc(2px - 50%))}}@keyframes calloutIn{0%{opacity:0;filter:blur(8px);transform:scale(.4)}to{opacity:1;filter:none;transform:none}}@keyframes calloutOut{to{opacity:0;filter:blur(6px);transform:scale(1.3)}}@keyframes popUp{0%{opacity:1;transform:translate(-50%,-50%)scale(.8)}20%{transform:translate(-50%,-80%)scale(1.15)}to{opacity:0;transform:translate(-50%,-260%)scale(1)}}@keyframes vign{0%{opacity:1}to{opacity:0}}@media (max-width:1000px){#hud.with-dmd .hud-score{display:none}}@media (max-width:640px){.hud-top{top:calc(max(10px, env(safe-area-inset-top)) + 62vw / 4 + 24px);left:10px}.roll{font-size:24px}.hud-status{max-width:60vw}.pill{padding:3px 7px;font-size:10px}.m-icon span{display:none}.mb-badge{font-size:11px;top:auto;bottom:80px;right:10px}}
