:root{--bg:#0b1320;--panel:#111c2d;--line:#22344e;--ink:#dce6f4;--muted:#8ea2c0;--beam:#5ce1ff;--aim:#ffd166;--enemy:#ff6b3d;--btn:#1a2a42;--btn-hover:#22375a;--marcher:#b07cff;--star-off:#2b3c56;--f-display:"Unbounded", "Arial Black", system-ui, sans-serif;--f-body:"Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.5}.app{grid-template-columns:minmax(0,1fr) 340px;height:100%;display:grid;position:relative}@media (width<=860px){.app{grid-template-rows:60dvh auto;grid-template-columns:minmax(0,1fr);height:auto}}.stage{min-width:0;position:relative;overflow:hidden}.stage canvas{width:100%;height:100%;display:block}.hud{pointer-events:none;flex-wrap:wrap;gap:8px;display:flex;position:absolute;inset:12px 12px auto}.chip{font-family:var(--f-mono);border:1px solid var(--line);font-variant-numeric:tabular-nums;background:#0b1320c7;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:500}.chip b{color:var(--aim);font-weight:700}.chip small{color:var(--muted);font-size:11.5px}.chip.march{border-color:var(--marcher)}.chip.march b{color:var(--marcher)}.hud-buttons{pointer-events:auto;gap:6px;margin-left:auto;display:flex}.chip-btn{color:var(--ink);cursor:pointer}.chip-btn:hover{background:var(--btn)}.chip-btn:focus-visible{outline:2px solid var(--aim);outline-offset:2px}.toast{font-family:var(--f-display);color:var(--aim);text-shadow:0 2px 12px #0009;pointer-events:none;opacity:0;white-space:nowrap;font-size:clamp(18px,2.6vw,28px);font-weight:700;position:absolute;top:20%;left:50%;transform:translate(-50%)}.toast.show{animation:1.5s ease-out forwards toast}@keyframes toast{0%{opacity:0;transform:translate(-50%,8px)scale(.9)}12%{opacity:1;transform:translate(-50%)scale(1.05)}25%{transform:translate(-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-12px)}}.hint{color:var(--muted);pointer-events:none;text-shadow:0 1px 6px #000000e6;margin:0;font-size:15px;position:absolute;bottom:12px;left:14px;right:14px}.overlay{text-align:center;background:#080e18b8;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.overlay-box{justify-items:center;gap:12px;max-width:420px;display:grid}.overlay-buttons{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.overlay-stars{gap:10px;font-size:46px;line-height:1;display:flex}.overlay-stars span{color:var(--star-off);transition:color .2s,transform .3s}.overlay-stars span.lit{color:var(--aim);text-shadow:0 0 18px #ffd16699;transform:scale(1.15)}.overlay h2,.no-webgl-msg h2{font-family:var(--f-display);margin:0;font-size:26px}.overlay p,.no-webgl-msg p{color:var(--muted);margin:0}.no-webgl-msg{text-align:center;place-content:center;gap:8px;padding:24px;display:none;position:absolute;inset:0}.no-webgl .no-webgl-msg{display:grid}.panel{background:var(--panel);border-left:1px solid var(--line);padding:20px;padding-bottom:max(20px, env(safe-area-inset-bottom,0px));flex-direction:column;gap:16px;min-width:0;display:flex;overflow-y:auto}@media (width<=860px){.panel{border-left:0;border-top:1px solid var(--line)}}.brand{font-family:var(--f-display);letter-spacing:-.01em;font-size:22px;font-weight:800}.brand span{color:var(--enemy)}.plabel{font-family:var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:11.5px;display:block}.formula{font-family:var(--f-mono);color:var(--beam);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:28px;font-weight:700;overflow-x:auto}.growth-note{font-family:var(--f-mono);color:var(--muted);font-size:13px}.growth-note:empty{display:none}.warn{color:var(--aim);min-height:1.3em;font-size:13px}.tools,.axis{grid-template-columns:1fr 1fr;gap:6px;display:grid}.tool{font-family:var(--f-body);border:1px solid var(--line);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:8px;padding:8px 10px;font-size:14px;font-weight:700}.tool[aria-pressed=true]{background:var(--btn);color:var(--ink);border-color:var(--beam)}.tool:disabled{opacity:.45;cursor:default}.tool:focus-visible{outline:2px solid var(--aim);outline-offset:2px}.tool .count{font-family:var(--f-mono);color:var(--aim)}.btn.fire.barrier{background:var(--aim)}.chip.boss{border-color:#ff3d7f}.chip.boss b{color:#ff7aa8;letter-spacing:2px}.world-stars{float:right;color:var(--aim);letter-spacing:0;text-transform:none}.sliders{gap:14px;display:grid}.slider.locked{opacity:.55}.slider{grid-template-columns:22px minmax(0,1fr) 56px;align-items:center;gap:10px;display:grid}.slider label{font-family:var(--f-mono);font-size:17px;font-weight:700}.slider output{font-family:var(--f-mono);text-align:right;font-variant-numeric:tabular-nums}input[type=range]{width:100%;accent-color:var(--beam)}.typein{gap:8px;display:flex}.typein input{min-width:0;font-family:var(--f-mono);background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;flex:1;padding:8px 10px;font-size:15px}.err{color:var(--enemy);min-height:1.3em;margin-top:4px;font-size:13px}.btn{font-family:var(--f-body);border:1px solid var(--line);background:var(--btn);color:var(--ink);cursor:pointer;border-radius:8px;padding:8px 14px;font-size:15px;font-weight:700}.btn:hover{background:var(--btn-hover)}.btn.primary{background:var(--beam);color:#04202a;border-color:#0000}.btn.primary:hover{background:#8aeaff}.btn.fire{font-family:var(--f-display);letter-spacing:.04em;background:var(--enemy);color:#1a0b04;border-color:#0000;padding:14px;font-size:20px}.btn.fire:hover{background:#ff8559}.btn.fire:disabled{opacity:.45;cursor:default}.btn:focus-visible,.typein input:focus-visible,input[type=range]:focus-visible,.toggle input:focus-visible{outline:2px solid var(--aim);outline-offset:2px}.toggles{gap:8px;display:grid}.toggle{cursor:pointer;align-items:center;gap:10px;font-size:14.5px;display:flex}.toggle input{accent-color:var(--beam);width:17px;height:17px}.toggle small{color:var(--muted);font-family:var(--f-mono);margin-left:auto}.keys{color:var(--muted);margin-top:auto;font-size:13px;line-height:1.9}kbd{font-family:var(--f-mono);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:12px}.menu{z-index:5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding-block:max(32px, env(safe-area-inset-top,0px)) 40px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background:radial-gradient(at 30% 20%,#111c2dd1,#080e18f2);position:fixed;inset:0;overflow-y:auto}.menu-inner{gap:18px;max-width:640px;margin:0 auto;display:grid}.logo{font-family:var(--f-display);letter-spacing:-.02em;margin:0;font-size:clamp(40px,8vw,68px);font-weight:800;line-height:1}.logo span{color:var(--enemy)}.tagline{color:var(--muted);max-width:48ch;margin:0;font-size:18px}.menu-actions{flex-wrap:wrap;gap:8px;display:flex}.world-title{font-family:var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:10px 0 0;font-size:12.5px;font-weight:500}.worlds{gap:18px;display:grid}.worlds .world-title{margin-bottom:8px}.levels{gap:8px;margin:0;padding:0;list-style:none;display:grid}.level{text-align:left;width:100%;font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:12px;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 16px;display:grid}.level:hover:not(:disabled){border-color:var(--beam)}.level:focus-visible{outline:2px solid var(--aim);outline-offset:2px}.level.challenge{background:linear-gradient(120deg, #ffd1661a, transparent 60%), var(--panel);border-color:#ffd16673}.level.challenge .level-num{color:var(--aim)}.level.challenge:hover{border-color:var(--aim)}.level:disabled{opacity:.5;cursor:default}.level-num{font-family:var(--f-display);color:var(--beam);font-size:26px;font-weight:800}.level-text{min-width:0;display:grid}.level-text span{color:var(--muted);font-size:14.5px}.level-meta{font-family:var(--f-mono);color:var(--muted);justify-items:end;font-size:13px;display:grid}.level-meta .stars{color:var(--aim);letter-spacing:2px;font-size:18px}.howto{color:var(--muted);font-size:15px}.howto summary{cursor:pointer;color:var(--ink);font-weight:700}.howto ul{gap:6px;padding-left:20px;display:grid}.howto b{color:var(--ink)}.version{color:var(--muted);background:#080e18d9;border-radius:999px;justify-self:center;margin:8px 0 0;padding:3px 10px;font-size:12px;position:sticky;bottom:0}@media (prefers-reduced-motion:reduce){.toast.show{opacity:1;animation-duration:10ms}}
