:root{--void:#04050d;--glass:#060816d6;--glass-strong:#060816e6;--accent:#33f0ff;--accent-glow:#33f0ff8c;--hot:#ff3d8b;--fit:#5fe3c0;--miss:#ff5d73;--orb:#ff6ad5;--life:#7ee081;--ink:#f2f6ff;--ink-dim:#8d97bd;--line:#8d97bd47;--display:"Chakra Petch", "Arial Narrow", system-ui, sans-serif;--mono:"Share Tech Mono", ui-monospace, Consolas, monospace;--cut:14px;--cut-shape:polygon(var(--cut) 0, 100% 0, 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, 0 100%, 0 var(--cut));--lean:8px;--lean-shape:polygon(var(--lean) 0, 100% 0, calc(100% - var(--lean)) 100%, 0 100%);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body,#root{height:100%}body{background:var(--void);color:var(--ink);font-family:var(--display);touch-action:manipulation;-webkit-user-select:none;user-select:none;margin:0;font-weight:500;overflow:hidden}.stage{position:fixed;inset:0}.stage canvas{display:block}.hud{pointer-events:none;padding-block:calc(14px + env(safe-area-inset-top,0px)) calc(14px + env(safe-area-inset-bottom,0px));padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));flex-direction:column;justify-content:space-between;display:flex;position:fixed;inset:0}.top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.stat{background:var(--glass);border-left:3px solid var(--accent);clip-path:var(--cut-shape);gap:2px;padding:10px 16px 12px 14px;display:grid}.stat-label{font:400 11px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}.stat-value{font-family:var(--display);font-variant-numeric:tabular-nums;text-shadow:0 0 18px var(--accent-glow);font-size:clamp(30px,6vw,48px);font-style:italic;font-weight:700;line-height:.95}.stat-sub{font:400 12px/1.3 var(--mono);color:var(--ink-dim);font-variant-numeric:tabular-nums}.multiplier{font:italic 700 16px/1 var(--display);color:var(--ink-dim);clip-path:var(--lean-shape);font-variant-numeric:tabular-nums;background:#8d97bd29;justify-self:start;padding:4px 12px;transition:color .2s,background .2s}.multiplier.active{color:var(--void);background:var(--orb);animation:.35s cubic-bezier(.3,1.8,.5,1) hud-pop}@keyframes hud-pop{0%{transform:scale(1.5)}to{transform:none}}.pill-orbs{color:var(--ink-dim)}.pill-orbs.all{color:var(--orb)}.pill-trace{color:var(--accent)}.lives{gap:3px;margin-bottom:6px;font-size:18px;line-height:1;display:flex}.heart{color:var(--line)}.heart.full{color:var(--life);text-shadow:0 0 8px #7ee08199}.heart.gained,.heart.lost{display:inline-block}.heart.gained{animation:.45s cubic-bezier(.3,1.8,.5,1) hud-pop}.heart.lost{animation:.5s ease-out heart-lost}@keyframes heart-lost{0%{color:var(--miss);transform:scale(1.4)}20%{transform:translate(-3px)scale(1.2)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{color:var(--miss);transform:translate(1px)}to{transform:none}}.life-word{color:var(--life)!important}.orb-word{color:var(--orb)!important}.right{text-align:right;border-left:none;border-right:3px solid var(--accent);clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));justify-items:end;padding:10px 14px 12px 16px}.right .stat-value{text-shadow:none;font-size:clamp(18px,3.5vw,26px)}.right .stat-value.stage-num{text-shadow:0 0 18px var(--accent-glow);margin-bottom:6px;font-size:clamp(28px,5vw,40px)}.mid{flex-direction:column;align-items:center;gap:8px;margin-top:8px;display:flex}.pill{font:400 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;background:var(--glass-strong);clip-path:var(--lean-shape);border-bottom:2px solid;padding:7px 16px}.pill.fits{color:var(--fit);animation:.25s cubic-bezier(.3,1.8,.5,1) hud-pop}.pill.blocked{color:var(--miss)}.toast{font:italic 700 clamp(18px, 3.6vw, 24px)/1 var(--display);text-transform:uppercase;letter-spacing:.04em;color:var(--accent);text-shadow:0 0 16px var(--accent-glow), 0 2px 0 #04050dcc;opacity:0;min-height:1.2em;transition:opacity .2s,transform .2s;transform:translate(-12px)}.toast.show{opacity:1;transform:none}.best-banner{font:italic 700 clamp(22px, 4.6vw, 34px)/1 var(--display);text-transform:uppercase;letter-spacing:.05em;color:var(--orb);text-shadow:0 0 22px var(--orb), 0 2px 0 #04050dcc;pointer-events:none;animation:2.6s ease-out forwards best-banner}@keyframes best-banner{0%{opacity:0;transform:scale(1.8)}10%{opacity:1;transform:scale(.95)}16%{transform:none}75%{opacity:1}to{opacity:0;transform:translateY(-10px)}}.right .stat-label.beaten,.right .stat-value.beaten{color:var(--orb)}.right .stat-value.beaten{text-shadow:0 0 14px var(--orb);animation:.4s cubic-bezier(.3,1.8,.5,1) hud-pop}.pad{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:10px 16px;display:flex}.axis{justify-items:center;gap:5px;display:grid}.axis-label{font:400 10px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);background:var(--glass-strong);clip-path:var(--lean-shape);padding:3px 8px}.axis-btns{gap:3px;display:flex}button{pointer-events:auto;font:600 14px/1 var(--display);color:var(--ink);background:var(--glass-strong);cursor:pointer;touch-action:manipulation;min-width:48px;height:46px;clip-path:var(--lean-shape);box-shadow:inset 0 -2px 0 var(--line);border:none;border-radius:0;justify-content:center;align-items:center;gap:8px;padding:0 14px;transition:background .12s,color .12s,box-shadow .12s;display:inline-flex}button:hover{box-shadow:inset 0 -2px 0 var(--accent)}button:active,button.held{background:var(--accent);color:var(--void)}button:focus-visible{box-shadow:inset 0 -3px 0 var(--accent), inset 0 0 0 1px var(--accent);background:#33f0ff38;outline:none}button:disabled{cursor:default;color:var(--ink-dim);box-shadow:none;background:#06081680}kbd{font:400 11px/1 var(--mono);color:var(--ink-dim)}button:active kbd,button.held kbd,.primary kbd{color:inherit;opacity:.7}.hurry{min-width:100px}.icon-btn{min-width:36px;height:28px;font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:0 12px}@media (hover:none){kbd{display:none}}.replay-bar{justify-content:center;align-items:center;gap:6px}.replay-label{font:italic 700 14px/1 var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--void);background:var(--hot);clip-path:var(--lean-shape);margin-right:6px;padding:8px 16px}.overlay{padding-block:24px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background:repeating-linear-gradient(0deg,#04050d2e 0 1px,#0000 1px 3px),radial-gradient(#04050d59,#04050dd1);place-items:safe center center;display:grid;position:fixed;inset:0;overflow-y:auto}.panel{--cut:22px;background:var(--glass-strong);border-left:4px solid var(--accent);width:min(100%,36rem);clip-path:var(--cut-shape);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);gap:16px;padding:28px 28px 26px;animation:.28s cubic-bezier(.2,.9,.3,1.2) panel-in;display:grid;position:relative}@keyframes panel-in{0%{opacity:0;transform:translate(-24px)skew(-6deg)}to{opacity:1;transform:none}}.panel h1{font:italic 700 clamp(28px, 7vw, 44px)/.95 var(--display);text-transform:uppercase;letter-spacing:-.01em;text-wrap:balance;margin:0}.panel h1 span{color:var(--accent);text-shadow:0 0 22px var(--accent-glow)}.panel p{color:var(--ink-dim);margin:0;line-height:1.5}.panel p strong{color:var(--ink)}.note{font:400 12px/1.4 var(--mono)}.rules{color:var(--ink-dim);gap:7px;margin:0;padding-left:18px;font-size:14px;line-height:1.45;display:grid}.rules li::marker{color:var(--accent)}.rules strong{font-weight:700}.keys{grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:13px;display:grid}@media (width>=520px){.keys{grid-template-columns:auto 1fr auto 1fr}}.keys dt{font-family:var(--mono);color:var(--accent)}.keys dd{color:var(--ink);margin:0}.big-num{font:italic 700 64px/1 var(--display);color:var(--accent);text-shadow:0 0 26px var(--accent-glow);font-variant-numeric:tabular-nums}.actions{flex-wrap:wrap;gap:6px;display:flex}.primary,.secondary{height:50px;font:italic 700 16px/1 var(--display);text-transform:uppercase;letter-spacing:.04em;padding:0 22px}.primary{background:var(--accent);color:var(--void);box-shadow:none;justify-self:start}.primary:hover{box-shadow:none;background:#8af7ff}.primary:focus-visible{background:var(--accent);box-shadow:inset 0 0 0 2px var(--void), inset 0 0 0 4px var(--accent)}.menu{gap:20px;width:min(100%,30rem)}.title{gap:10px;display:grid}.panel .title h1{font-size:clamp(38px,10vw,60px);line-height:.88}.title-tag{font:italic 700 13px/1 var(--display);letter-spacing:.3em;text-transform:uppercase;color:var(--void);background:var(--hot);clip-path:var(--lean-shape);justify-self:start;padding:6px 16px 6px 14px}.menu-best{font:400 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);align-items:baseline;gap:10px;display:flex}.menu-best b{font:italic 700 22px/1 var(--display);letter-spacing:0;color:var(--ink)}.menu-items{gap:4px;display:grid}.menu-items button{--lean:12px;height:52px;font:italic 700 19px/1 var(--display);text-transform:uppercase;letter-spacing:.03em;color:var(--ink);box-shadow:none;background:#8d97bd14;justify-content:flex-start;justify-self:stretch;gap:14px;padding:0 24px 0 20px;transition:background .12s,color .12s,transform .15s}.menu-items button:after{content:"▶";opacity:0;margin-left:auto;font-size:12px;transition:opacity .15s,transform .15s;transform:translate(-8px)}.menu-items button:hover:not(:disabled),.menu-items button:focus-visible{background:var(--accent);color:var(--void);box-shadow:none;transform:translate(8px)}.menu-items button:hover:not(:disabled):after,.menu-items button:focus-visible:after{opacity:1;transform:none}.menu-items button:disabled{color:var(--ink-dim);background:#8d97bd0a}.menu-items button:disabled:after{content:none}.menu-num{font:400 13px/1 var(--mono);color:var(--accent);min-width:1.6em;font-style:normal}.menu-items button:hover:not(:disabled) .menu-num,.menu-items button:focus-visible .menu-num{color:inherit}.menu-items kbd{margin-left:auto}.overlay.docked{background:repeating-linear-gradient(0deg,#04050d1f 0 1px,#0000 1px 3px),linear-gradient(#0000 30%,#04050dbf);align-items:end}.picker{gap:14px;width:min(100%,58rem)}.picker-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;display:flex}.picker-current{font:400 13px/1 var(--mono);letter-spacing:.08em;color:var(--ink-dim)}.picker-current b{font:italic 700 18px/1 var(--display);letter-spacing:0;text-transform:uppercase;color:var(--accent);margin-right:6px}.shape-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}@media (width>=760px){.shape-grid{grid-template-columns:repeat(6,1fr)}}.shape-card{--lean:0px;min-width:0;height:auto;clip-path:var(--cut-shape);--cut:10px;box-shadow:inset 0 -2px 0 var(--line);background:#8d97bd14;justify-items:center;gap:6px;padding:12px 8px 10px;display:grid}.shape-card.selected{box-shadow:inset 0 -3px 0 var(--accent), inset 0 0 0 1px var(--accent);background:#33f0ff29}.shape-card:active{background:#33f0ff4d}.shape-icon{width:100%;height:58px;overflow:visible}.shape-icon polygon{stroke:var(--void);stroke-width:.05px;stroke-linejoin:round}.face-top{fill:#b6fbff}.face-front{fill:var(--accent)}.face-side{fill:#1a9fb0}.shape-card:not(.selected) .shape-icon{opacity:.6}.shape-name{font:italic 700 16px/1 var(--display);text-transform:uppercase}.shape-about{font:400 11px/1 var(--mono);color:var(--ink-dim)}.shape-card:active .shape-about{color:inherit}.runs{scrollbar-color:var(--accent) transparent;scrollbar-width:thin;gap:4px;max-height:min(58vh,28rem);margin:0;padding:0 4px 0 0;list-style:none;display:grid;overflow-y:auto}.runs li{border-left:2px solid var(--line);background:#8d97bd12;justify-content:space-between;align-items:center;gap:14px;padding:10px 12px;display:flex}.runs li:first-child{border-left-color:var(--accent)}.runs.ranked li{justify-content:flex-start}.runs.ranked .run-info{flex:1}.run-rank{font:italic 700 22px/1 var(--display);text-align:right;min-width:1.4em;color:var(--ink-dim);font-variant-numeric:tabular-nums}.runs li:first-child .run-rank{color:var(--accent);text-shadow:0 0 14px var(--accent-glow)}.run-info{gap:4px;min-width:0;display:grid}.run-score{font:italic 700 24px/1 var(--display);font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:flex}.run-best{font:italic 700 11px/1 var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--void);background:var(--hot);clip-path:var(--lean-shape);padding:4px 10px}.run-detail{font:400 12px/1.3 var(--mono);color:var(--ink-dim)}.runs li.you{border-left-color:var(--hot);background:#ff3d8b14}.run-initials{font:400 15px/1 var(--mono);letter-spacing:.2em;color:var(--accent)}button.link{min-width:0;height:auto;font:inherit;color:var(--accent);box-shadow:none;clip-path:none;text-underline-offset:3px;background:0 0;padding:0;text-decoration:underline;display:inline}button.link:hover,button.link:focus-visible{box-shadow:none;color:var(--ink);background:0 0}.initials{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.initials label{font:400 12px/1.4 var(--mono);color:var(--ink-dim)}.initials input{width:4.2em;height:46px;font:italic 700 22px/1 var(--display);letter-spacing:.18em;text-transform:uppercase;color:var(--ink);background:var(--glass-strong);border:1px solid var(--line);border-radius:0;padding:0 10px}.initials input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.initials-error{font:400 12px/1.4 var(--mono);color:var(--miss);flex-basis:100%}@media (prefers-reduced-motion:reduce){.panel,.multiplier.active,.heart.gained,.heart.lost,.pill.fits,.right .stat-value.beaten{animation:none}.best-banner{animation:2.6s linear forwards pop-fade}.toast,.menu-items button,.menu-items button:hover:not(:disabled),.menu-items button:focus-visible{transition:none;transform:none}}.score-pop{--pop-size:24px;--pop-color:var(--ink);--pop-glow:transparent;--pop-time:1s;--pop-shake:0px;inset-inline:0;bottom:max(14%, calc(110px + env(safe-area-inset-bottom,0px)));pointer-events:none;justify-content:center;display:flex;position:fixed}@media (width<=640px){.score-pop{bottom:calc(190px + env(safe-area-inset-bottom,0px))}}.score-pop.tier-1{--pop-size:28px;--pop-color:var(--accent);--pop-glow:var(--accent-glow);--pop-time:1.1s}.score-pop.tier-2{--pop-size:32px;--pop-color:var(--orb);--pop-glow:#ff6ad599;--pop-time:1.2s;--pop-shake:1px}.score-pop.tier-3{--pop-size:38px;--pop-color:var(--orb);--pop-glow:#ff6ad5cc;--pop-time:1.3s;--pop-shake:2px}.score-pop.tier-4{--pop-size:44px;--pop-glow:#33f0ffd9;--pop-time:1.5s;--pop-shake:3px}.pop-inner{animation:pop-life var(--pop-time) ease-out forwards;justify-items:center;gap:4px;display:grid;position:relative}.pop-points{font-family:var(--display);font-style:italic;font-weight:700;font-size:var(--pop-size);color:var(--pop-color);font-variant-numeric:tabular-nums;text-shadow:0 0 10px var(--pop-glow), 0 0 24px var(--pop-glow), 0 2px 0 #0d0f2499;line-height:1;animation:80ms linear 6 pop-shake}.tier-4 .pop-points{background:linear-gradient(90deg, var(--accent), var(--orb), var(--fit), var(--accent));color:#0000;text-shadow:none;filter:drop-shadow(0 0 8px var(--pop-glow));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:80ms linear 10 pop-shake,1.2s linear infinite pop-shimmer}.pop-detail{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);font-size:12px}.pop-detail b{color:var(--pop-color);font-family:var(--display);font-size:1.4em;font-style:italic;font-weight:700}.tier-4 .pop-detail b{color:var(--accent)}.tier-3 .pop-inner:before,.tier-4 .pop-inner:before{content:"";border:2px solid var(--pop-glow);border-radius:50%;width:56px;height:56px;margin:-28px 0 0 -28px;animation:.7s ease-out forwards pop-ring;position:absolute;top:40%;left:50%}.pop-flash{background:radial-gradient(ellipse 40% 20% at 50% 78%, var(--pop-glow), transparent);animation:.6s ease-out forwards pop-flash;position:fixed;inset:0}@keyframes pop-life{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1.12)}24%{transform:scale(1)}75%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}@keyframes pop-shake{0%,to{translate:0}25%{translate:var(--pop-shake) calc(var(--pop-shake) * -.5)}75%{translate:calc(var(--pop-shake) * -1) calc(var(--pop-shake) * .5)}}@keyframes pop-shimmer{to{background-position:300% 0}}@keyframes pop-ring{0%{opacity:1;transform:scale(.4)}to{opacity:0;transform:scale(2.4)}}@keyframes pop-flash{0%{opacity:.35}to{opacity:0}}@keyframes pop-fade{0%,75%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.pop-inner{animation:pop-fade var(--pop-time) linear forwards}.pop-points,.tier-4 .pop-points{animation:none}.pop-inner:before,.pop-flash{display:none}}
