:root{--font-display:"Chakra Petch", "Segoe UI", sans-serif;--font-body:"JetBrains Mono", "Courier New", monospace;--color-bg:#05070d;--color-surface:#0a101ab8;--color-border:#29e6ff38;--color-text:#d8e6f2;--color-text-muted:#6b7f95;--color-primary:#29e6ff;--color-danger:#ff2e6b;--color-warning:#ffb020;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:20px;--text-xl:28px;--text-2xl:44px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--panel-blur:8px;--panel-radius:6px;--transition-ui:.16s cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--color-bg);width:100%;height:100%;font-family:var(--font-body);color:var(--color-text);-webkit-font-smoothing:antialiased;overflow:hidden}body.playing{cursor:none}#game{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}#hud{pointer-events:none;z-index:10;font-family:var(--font-body);position:fixed;inset:0}.hud-label{font-size:var(--text-xs);letter-spacing:.22em;color:var(--color-text-muted)}.hud-value{font-variant-numeric:tabular-nums lining-nums;color:var(--color-text);font-weight:700}#top-bar{padding:var(--space-4) var(--space-6);justify-content:space-between;align-items:flex-start;display:flex;position:absolute;top:0;left:0;right:0}#debug-overlay{top:var(--space-2);left:var(--space-2);color:#39ff6e;pointer-events:none;white-space:pre;z-index:100;background:#000000bf;border-radius:3px;padding:6px 10px;font:11px/1.5 monospace;position:absolute}#wave-info{text-align:center;margin-left:200px}#wave-num{font-size:var(--text-xl);color:var(--color-primary)}#enemies-left{font-size:var(--text-xs);letter-spacing:.18em;color:var(--color-danger);margin-top:2px}#score-info{text-align:right}#score{font-size:var(--text-xl)}.hud-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--panel-radius);padding:var(--space-3) var(--space-4);-webkit-backdrop-filter:blur(var(--panel-blur));min-width:190px;position:absolute}#health-panel{left:var(--space-6);bottom:var(--space-6)}#ammo-panel{right:var(--space-6);bottom:var(--space-6);text-align:right}#health-bar{height:10px;margin:var(--space-2) 0;background:#29e6ff1f;border:1px solid #29e6ff59;border-radius:2px;overflow:hidden}#health-fill{background:linear-gradient(90deg, var(--color-primary), #7df3ff);width:100%;height:100%;transition:width .2s}#health-fill.low{background:linear-gradient(90deg,#ff2e6b,#ff6b93)}#health-num,#ammo{font-size:var(--text-lg)}.ammo-mag{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:400}#reload-hint{font-size:var(--text-xs);color:var(--color-warning);letter-spacing:.15em;visibility:hidden}#reload-hint.show{visibility:visible;animation:.9s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.25}}#crosshair{width:0;height:0;position:absolute;top:50%;left:50%}#crosshair .ch-dot{background:var(--color-primary);border-radius:50%;width:3px;height:3px;position:absolute;top:-1.5px;left:-1.5px}#crosshair .ch-line{background:var(--color-primary);position:absolute;box-shadow:0 0 6px #29e6ffcc}.ch-up{width:2px;height:8px;top:-16px;left:-1px}.ch-down{width:2px;height:8px;top:8px;left:-1px}.ch-left{width:8px;height:2px;top:-1px;left:-16px}.ch-right{width:8px;height:2px;top:-1px;left:8px}#crosshair.fire .ch-up{top:-20px}#crosshair.fire .ch-down{top:12px}#crosshair.fire .ch-left{left:-20px}#crosshair.fire .ch-right{left:12px}#hitmarker{color:#fff;font-size:var(--text-lg);opacity:0;text-shadow:0 0 8px var(--color-primary);font-weight:700;transition:opacity 90ms,transform 90ms;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.6)}#hitmarker.show{opacity:1;transform:translate(-50%,-50%)scale(1)}#hitmarker.kill{color:var(--color-danger)}#vignette{background:radial-gradient(#0000 55%,#02040a8c 100%);position:absolute;inset:0}#damage-flash{opacity:0;background:radial-gradient(#0000 40%,#ff2e6b59 100%);transition:opacity .3s;position:absolute;inset:0}#damage-flash.show{opacity:1;transition:opacity 40ms}#wave-banner{text-align:center;animation:.4s cubic-bezier(.16,1,.3,1) bannerIn;position:absolute;top:22%;left:0;right:0}#wave-banner-title{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:.3em;color:#fff;text-shadow:0 0 24px #29e6ff8c;font-weight:700}#wave-banner-sub{font-size:var(--text-sm);letter-spacing:.5em;color:var(--color-danger);margin-top:var(--space-2)}@keyframes bannerIn{0%{opacity:0;transform:translateY(-12px)}}#kill-toast{right:var(--space-6);font-size:var(--text-xs);letter-spacing:.15em;color:var(--color-warning);text-align:right;opacity:0;transition:opacity .25s;position:absolute;top:30%}#kill-toast.show{opacity:1}.screen{z-index:20;background:radial-gradient(at 50% 30%,#0a1424e0 0%,#03050af5 75%);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.screen-inner{text-align:center;padding:var(--space-8) var(--space-12);width:100%;max-width:560px;margin:auto}.screen-inner.wide{max-width:860px}.title-kicker{font-size:var(--text-xs);letter-spacing:.55em;color:var(--color-danger);margin-bottom:var(--space-3)}.title{font-family:var(--font-display);letter-spacing:.06em;color:#eef6ff;font-size:clamp(3rem,10vw,5.5rem);font-weight:700;line-height:1}.title-accent{color:var(--color-primary);text-shadow:0 0 32px #29e6ff99}.tagline{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-4);letter-spacing:.08em}.controls-grid{gap:var(--space-2) var(--space-8);margin:var(--space-8) auto;text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));max-width:420px;display:grid}.control-row{font-size:var(--text-xs);color:var(--color-text-muted);padding-bottom:var(--space-2);border-bottom:1px solid #29e6ff1a;justify-content:space-between;align-items:center;display:flex}.key{color:var(--color-primary);letter-spacing:.12em;font-weight:700}.screen-title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:.25em;margin-bottom:var(--space-6)}.go-title{color:var(--color-danger);text-shadow:0 0 24px #ff2e6b80}.stats-row{justify-content:center;gap:var(--space-6) var(--space-8);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.stat{text-align:center;min-width:96px}.stat-value{font-size:var(--text-xl);color:var(--color-primary)}.btn{font-family:var(--font-display);font-size:var(--text-base);letter-spacing:.25em;padding:var(--space-3) var(--space-8);border-radius:var(--panel-radius);cursor:pointer;transition:all var(--transition-ui);pointer-events:auto;font-weight:700}.btn-primary{color:#03222b;background:linear-gradient(#4deeff,#16c4de);border:none;box-shadow:0 0 28px #29e6ff59}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 40px #29e6ff8c}.btn-ghost{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.btn-ghost:hover{border-color:var(--color-primary);color:var(--color-primary)}.screen-note{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-6)}.settings{max-width:300px;margin:0 auto var(--space-8);text-align:left;gap:var(--space-3);display:grid}.settings label{font-size:var(--text-xs);letter-spacing:.2em;color:var(--color-text-muted);display:block}.settings input[type=range]{width:100%;accent-color:var(--color-primary)}.check-row{gap:var(--space-2);align-items:center;display:flex}#touch-controls{z-index:15;pointer-events:none;position:fixed;inset:0}#touch-controls .t-zone{pointer-events:auto;position:absolute;inset:0}#stick-base{border:1px solid var(--color-border);background:#0a101a66;border-radius:50%;width:110px;height:110px;position:absolute;bottom:120px;left:28px}#stick-nub{background:#29e6ff66;border-radius:50%;width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#fire-btn,#jump-btn{pointer-events:auto;width:84px;height:84px;font-family:var(--font-display);letter-spacing:.1em;color:#fff;background:#ff2e6b40;border:1px solid #ff2e6b99;border-radius:50%;font-weight:700;position:absolute;right:28px}#fire-btn{bottom:190px}#jump-btn{border-color:var(--color-border);background:#29e6ff26;bottom:90px}@media (width<=600px){.screen-inner{padding:var(--space-6) var(--space-4)}.controls-grid{gap:var(--space-2);grid-template-columns:1fr}#top-bar{padding:var(--space-2) var(--space-3)}#wave-info{margin-top:96px;margin-left:0}#score-info{margin-top:0}#score,#wave-num{font-size:var(--text-lg)}#health-panel{left:var(--space-3);min-width:130px;padding:var(--space-2) var(--space-3);bottom:260px}#ammo-panel{right:var(--space-3);min-width:130px;padding:var(--space-2) var(--space-3);bottom:310px}.touch-mode #ammo-panel{right:auto;left:var(--space-3);text-align:left;bottom:345px}.touch-mode #ability-bar{display:none}}.btn[disabled]{opacity:.55;cursor:progress}.dots:after{content:"";animation:1.2s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.boot-error{max-width:520px;color:var(--magenta,#ff2e6b);background:#ff2e6b14;border:1px solid #ff2e6b80;margin-top:14px;padding:10px 14px;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.5}.free-note{display:none}body.free-cursor .free-note{display:block}body.free-cursor .lock-note{display:none}#lock-hint{letter-spacing:.18em;color:var(--cyan,#29e6ff);pointer-events:none;background:#05070da6;border:1px solid #29e6ff73;padding:8px 16px;font-family:JetBrains Mono,monospace;font-size:12px;animation:1.4s ease-in-out infinite lockpulse;position:fixed;top:58%;left:50%;transform:translate(-50%)}@keyframes lockpulse{0%,to{opacity:.55}50%{opacity:1}}.coins{color:var(--color-warning);letter-spacing:.08em;font-weight:700}.coins.big{font-size:var(--text-lg)}#coins-hud{font-size:var(--text-sm);margin-top:2px}.wallet-row{font-size:var(--text-xs);letter-spacing:.22em;color:var(--color-text-muted);margin-bottom:var(--space-2)}.btn .coins{margin-left:var(--space-2);letter-spacing:.05em}.section-label{margin:var(--space-6) 0 var(--space-3)}.mode-grid{gap:var(--space-3);text-align:left;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.mode-card{--mode-color:var(--color-primary);padding:var(--space-4);border-radius:var(--panel-radius);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);font-family:var(--font-body);text-align:left;cursor:pointer;transition:all var(--transition-ui);flex-direction:column;gap:6px;display:flex;position:relative}.mode-card:hover{border-color:var(--mode-color);transform:translateY(-2px)}.mode-card.selected{border-color:var(--mode-color);box-shadow:0 0 24px color-mix(in srgb, var(--mode-color) 35%, transparent), inset 0 0 0 1px var(--mode-color)}.mode-card.selected:after{content:"SELECTED";letter-spacing:.2em;color:var(--mode-color);font-size:10px;position:absolute;top:10px;right:10px}.mode-name{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:.2em;color:var(--mode-color);font-weight:700}.mode-tag{letter-spacing:.2em;color:var(--color-text-muted);font-size:10px}.mode-desc{font-size:var(--text-xs);color:var(--color-text);opacity:.85;min-height:54px;line-height:1.5}.mode-best{letter-spacing:.2em;color:var(--color-text-muted);margin-top:auto;font-size:10px}.mode-best span{color:var(--color-text)}.controls-grid.compact{gap:var(--space-2) var(--space-4);max-width:760px;margin:var(--space-6) auto;grid-template-columns:repeat(4,minmax(0,1fr))}.ab-c{color:var(--color-warning)}.btn-row{justify-content:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.btn-small{font-size:var(--text-xs);padding:var(--space-2) var(--space-4);letter-spacing:.15em}.btn.locked{opacity:.5}.skin-grid{gap:var(--space-3);margin:var(--space-6) 0;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.skin-card{gap:var(--space-2);padding:var(--space-4);border-radius:var(--panel-radius);background:var(--color-surface);border:1px solid var(--color-border);transition:all var(--transition-ui);flex-direction:column;align-items:center;display:flex}.skin-card.equipped{border-color:var(--sk-accent);box-shadow:0 0 22px color-mix(in srgb, var(--sk-accent) 35%, transparent)}.skin-name{font-family:var(--font-display);font-size:var(--text-base);letter-spacing:.22em;color:var(--sk-accent);font-weight:700}.skin-desc{color:var(--color-text-muted);min-height:32px;font-size:11px;line-height:1.45}.skin-preview{width:150px;height:70px;margin-bottom:var(--space-2);filter:drop-shadow(0 0 10px var(--sk-glow));position:relative}.sk-body{background:var(--sk-body);border-radius:3px;width:90px;height:20px;position:absolute;top:22px;left:30px;box-shadow:inset 0 -4px #00000059,inset 0 1px #ffffff1f}.sk-barrel{background:var(--sk-body);border-radius:2px;width:36px;height:8px;position:absolute;top:27px;left:112px;box-shadow:inset 0 -2px #00000059}.sk-grip{background:var(--sk-body);border-radius:2px;width:14px;height:24px;position:absolute;top:40px;left:44px;transform:skew(-12deg);box-shadow:inset 0 -3px #00000059}.sk-core{width:44px;height:6px;box-shadow:0 0 10px var(--sk-glow);border-radius:2px;position:absolute;top:17px;left:58px}#timer-info{text-align:center;position:absolute;top:92px;left:50%;transform:translate(-50%)}#timer-num{font-size:var(--text-xl);color:var(--color-warning)}#timer-num.urgent{color:var(--color-danger);animation:.6s steps(2,end) infinite blink}#mult-info{font-size:var(--text-sm);color:var(--color-warning);letter-spacing:.15em;margin-top:2px}#boss-bar{text-align:center;width:min(520px,70vw);position:absolute;top:150px;left:50%;transform:translate(-50%)}#boss-name{color:#ff6a3d;letter-spacing:.4em;margin-bottom:6px}#boss-track{background:#ffffff14;border:1px solid #ff6a3d80;border-radius:2px;height:8px;overflow:hidden}#boss-fill{background:linear-gradient(90deg,#ff3b1f,#ffb020);width:100%;height:100%;transition:width .12s linear;box-shadow:0 0 14px #ff3b1fb3}#ability-bar{left:50%;bottom:var(--space-6);gap:var(--space-3);display:flex;position:absolute;transform:translate(-50%)}.ability{border:1px solid var(--color-border);border-radius:var(--panel-radius);width:84px;height:64px;-webkit-backdrop-filter:blur(var(--panel-blur));backdrop-filter:blur(var(--panel-blur));transition:border-color var(--transition-ui), transform var(--transition-ui);background:#0a101ae6;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative;overflow:hidden}.ability.ready{border-color:#29e6ff99}.ability.ready .ab-key{color:var(--color-primary);text-shadow:0 0 10px #29e6ffcc}.ability:not(.ready) .ab-key,.ability:not(.ready) .ab-name{opacity:.45}.ability.active{border-color:var(--color-warning);box-shadow:0 0 18px #ffb02080}.ability.used{transform:scale(.92)}.ability.denied{border-color:var(--color-danger);animation:.25s shakeX}.ability.pulse{animation:.5s ease-out abPulse}.ab-fill{background:#ff2e6b38;height:0%;transition:height 80ms linear;position:absolute;bottom:0;left:0;right:0}.ab-key{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;position:relative}.ab-name{letter-spacing:.2em;color:var(--color-text-muted);font-size:9px;position:relative}.ab-cd{color:var(--color-danger);font-size:11px;position:absolute;top:4px;right:6px}@keyframes shakeX{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes abPulse{0%{box-shadow:0 0 #29e6ffb3}to{box-shadow:0 0 0 14px #29e6ff00}}#overdrive-tint{pointer-events:none;opacity:0;background:radial-gradient(#0000 55%,#ffb02038 100%);transition:opacity .2s;position:absolute;inset:0}#overdrive-tint.show{opacity:1;animation:.5s ease-in-out infinite alternate odPulse}@keyframes odPulse{0%{opacity:.7}to{opacity:1}}#kill-toast.big{font-size:var(--text-lg);color:#ff6a3d}.go-title-good{color:var(--color-primary);text-shadow:0 0 24px #29e6ff80}#go-mode{margin-bottom:var(--space-6);letter-spacing:.3em}#go-best{font-size:var(--text-xs);letter-spacing:.25em;color:var(--color-text-muted);margin-bottom:var(--space-4)}#go-best.new-best{color:var(--color-warning);animation:.8s steps(2,end) 3 blink}.stat-value.coins{color:var(--color-warning)}#touch-abilities{pointer-events:auto;flex-direction:column;gap:10px;display:flex;position:absolute;bottom:290px;right:24px}.t-ab{border:1px solid var(--color-border);width:68px;height:44px;color:var(--color-primary);font-family:var(--font-display);letter-spacing:.12em;background:#29e6ff1f;border-radius:6px;font-size:11px;font-weight:700}.t-ab.cooling{opacity:.35}@media (width<=900px){.mode-grid{grid-template-columns:1fr}.controls-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-desc{min-height:0}}@media (width<=600px){#ability-bar{bottom:200px;left:24px;transform:none}.ability{width:56px;height:48px}.ab-name{display:none}#boss-bar{top:130px}#timer-info{text-align:right;top:96px;left:auto;right:24px;transform:none}.stats-row{gap:var(--space-4)}.stat{min-width:80px}.screen-inner{padding:var(--space-6) var(--space-4)}}#cheat-panel{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-4);background:#020408b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}#cheat-panel.hidden{display:none}.cheat-inner{border-radius:var(--panel-radius);width:min(560px,100%);padding:var(--space-6);font-family:var(--font-body);color:#c9f5d4;background:#060c08f5;border:1px solid #39ff6e73;margin:auto;box-shadow:0 0 40px #39ff6e26}.cheat-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4);display:flex}.cheat-kicker{color:#39ff6e}.cheat-title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:.14em;color:#eaffef;margin-top:var(--space-1)}#cheat-list{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.cheat-toggle{column-gap:var(--space-3);text-align:left;padding:var(--space-3);cursor:pointer;color:inherit;transition:background var(--transition-ui), border-color var(--transition-ui);background:#39ff6e0a;border:1px solid #39ff6e33;border-radius:4px;grid-template-rows:auto auto;grid-template-columns:auto 1fr;row-gap:2px;font-family:inherit;display:grid}.cheat-toggle:hover{border-color:#39ff6e8c}.cheat-toggle .ct-state{letter-spacing:.1em;text-align:center;color:#6b8f78;background:#ffffff0f;border-radius:3px;grid-row:1/span 2;align-self:center;width:34px;padding:3px 0;font-size:11px;font-weight:700}.cheat-toggle .ct-label{font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:.1em;color:#eaffef;font-weight:700}.cheat-toggle .ct-desc{color:#7fa58a;font-size:11px;line-height:1.35}.cheat-toggle.on{background:#39ff6e1f;border-color:#39ff6e}.cheat-toggle.on .ct-state{color:#04210d;background:#39ff6e}.cheat-actions{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.cheat-actions .btn{color:#c9f5d4;border-color:#39ff6e66}.cheat-foot{margin-top:var(--space-4);color:#6b8f78;font-size:11px}.cheat-foot b{color:#39ff6e}#cheat-badge{font-family:var(--font-body);letter-spacing:.3em;color:#39ff6e;background:#041409b3;border:1px solid #39ff6e80;border-radius:3px;padding:3px 10px;font-size:10px;position:absolute;top:14px;left:50%;transform:translate(-50%)}#cheat-badge.hidden{display:none}@media (width<=600px){#cheat-list{grid-template-columns:1fr}.cheat-inner{padding:var(--space-4)}}
