:root{--red: #e9342f;--red-dark: #b8231f;--ink: #1b2230;--ink-soft: #4a5468;--paper: #fffaf0;--paper-edge: #eadfc8;--sky: #3e9be6;--green: #34c46a;--yellow: #ffb21f;--enemy: #ff4b3a;--purple: #9b5cff;--ui-panel: #10141B;--ui-panel-2: #1D2530;--ui-border: #485365;--ui-text: #F1F3F8;--ui-select: #FFC21A;--ui-danger: #E34B4B;--ui-button: #252F3D;--font: "Rubik", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:#000;font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;overscroll-behavior:none}#game{position:fixed;inset:0;overflow:hidden;touch-action:none}#stage,#stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}button{font-family:inherit;cursor:pointer}kbd{display:inline-grid;place-items:center;min-width:1.9em;height:1.9em;padding:0 .4em;border-radius:6px;border:2px solid var(--ink);border-bottom-width:4px;background:#fff;color:var(--ink);font:800 .78rem var(--font)}kbd.wide{min-width:3.6em}.btn{display:block;width:100%;padding:.85rem 1rem;border:3px solid var(--ink);border-radius:14px;background:#fff;color:var(--ink);font:800 1rem var(--font);letter-spacing:.08em;box-shadow:0 5px 0 var(--ink);transition:transform .08s,box-shadow .08s,background .15s}.btn+.btn{margin-top:.8rem}:where(:root:not(.pinch-nav)) .btn:hover{background:#fff3dc}:where(:root:not(.pinch-nav)) .btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}.btn-primary{background:var(--red);color:#fff;font-size:1.25rem;padding:1rem}:where(:root:not(.pinch-nav)) .btn-primary:hover{background:#f4453f}.toggles{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:1rem}.toggle{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .8rem;border:2px solid var(--ink);border-radius:12px;background:var(--paper);color:var(--ink);font:700 .85rem var(--font);white-space:nowrap}.toggle b{padding:.15rem .5rem;border-radius:6px;background:var(--ink-soft);color:#fff;font-size:.72rem;letter-spacing:.06em}.toggle[aria-pressed=true] b,.toggle-difficulty b{background:var(--green)}.toggle-difficulty[data-level=normal] b{background:#e09a1f}.toggle-difficulty[data-level=hard] b{background:var(--red)}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:20}.screen-modal{background:#00000073}.card,.menu-card{width:min(440px,100%);max-height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;padding:1.6rem;background:var(--paper);border:3px solid var(--ink);border-radius:22px;box-shadow:0 10px 0 var(--ink),0 24px 50px #0a1e3c59;animation:pop .28s cubic-bezier(.2,1.4,.4,1)}.card::-webkit-scrollbar,.menu-card::-webkit-scrollbar{display:none}.card-narrow{width:min(360px,100%)}.card h2{margin:0 0 1rem;font-size:1.9rem;font-weight:900;letter-spacing:-.01em}@keyframes pop{0%{transform:scale(.92) translateY(10px);opacity:0}}.screen-menu{flex-direction:column;gap:clamp(.5rem,2vh,1.4rem);overflow:hidden}.menu-logo{position:relative;top:max(-18px,-3vmin);margin:0;line-height:0;width:min(640px,94vw)}.menu-logo img{width:100%;height:auto;max-height:28vh;object-fit:contain;filter:drop-shadow(0 14px 24px rgba(0,0,0,.45));animation:logo-in .5s cubic-bezier(.2,1.4,.4,1),logo-bob 6s ease-in-out .5s infinite}@keyframes logo-in{0%{transform:scale(.8) translateY(-14px);opacity:0}}@keyframes logo-bob{50%{transform:translateY(-6px)}}.menu-card{position:relative;width:min(300px,100%)}#menu .menu-card{width:min(300px,50vmin);background:none;border:0;box-shadow:none;border-radius:0;padding:0 10px 10px 0}#menu .best{display:flex;justify-content:center;align-items:flex-end;gap:min(.45rem,1.2vmin);--vx: min(1.8px, .3vmin)}#menu .best b{--vx: min(2.4px, .4vmin)}@media(prefers-reduced-motion:reduce){.menu-logo img{animation:none}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.vtext{display:block;font-size:var(--vx, 3.4px);overflow:visible}#menu .btn,#menu .toggle{display:grid;place-items:center;border:0;border-radius:0;transition:transform .08s,filter .15s}#menu .btn{padding:min(.6rem,1.6vmin);--vx: min(2.7px, .45vmin)}#menu .btn+.btn,#menu .btn-row{margin-top:min(.8rem,2.13vmin)}#menu .btn-primary{--vx: min(3.8px, .633vmin);padding:min(.75rem,2vmin)}#menu .toggles{gap:min(.8rem,2.13vmin);margin-top:min(.95rem,2.53vmin)}#menu .toggle{display:flex;flex-direction:column;gap:min(5px,.83vmin);--vx: min(1.8px, .3vmin);padding:min(.45rem,1.2vmin) min(.4rem,1.07vmin) min(.55rem,1.47vmin)}#menu .toggle b{padding:3px 4px;border-radius:2px;--vx: min(1.6px, .267vmin);box-shadow:2px 2px #141e3259}#menu .best{margin-top:min(1rem,2.67vmin)}#menu .menu-page>.toggles:first-child{margin-top:0}#menu .toggles+.btn{margin-top:min(.8rem,2.13vmin)}#menu-options .toggles{grid-template-columns:1fr}#menu-options .toggle{flex-direction:row;justify-content:space-between;padding:min(.6rem,1.6vmin) min(1rem,2.67vmin)}.btn-row{margin-top:.8rem}.btn-online{background:var(--sky);color:#fff}:where(:root:not(.pinch-nav)) .btn-online:hover{background:#57b0f2}.lobby-status{margin:0 0 .6rem;font-weight:700}.lobby-roster{list-style:none;margin:0 0 .6rem;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.35rem}.lobby-roster li{padding:.35rem .6rem;border:2px solid var(--paper-edge);border-radius:10px;background:#fff;font-weight:700;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lobby-roster li.you{border-color:var(--ink)}.callsign{display:flex;align-items:center;gap:.6rem;margin:0 0 .8rem;font-weight:800;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.callsign input{flex:1;min-width:0;font:700 1rem var(--font);padding:.45rem .6rem;border:2px solid var(--ink);border-radius:10px;background:#fff;color:var(--ink)}.callsign input:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.craft-pick{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin:0 0 .8rem}.craft-preview{align-self:stretch;min-width:0;height:150px}#lobby .card:has(.lobby-roster li:nth-child(7)) .craft-preview{height:120px}.craft-pick .toggle{flex:none;align-self:stretch;flex-direction:row;justify-content:space-between;gap:6px;padding:.6rem 1rem}.best{margin-top:1.1rem;font-size:.78rem;font-weight:800;letter-spacing:.12em;color:var(--ink-soft)}.best b{color:var(--ink);font-size:1.1rem;margin-left:.4rem}.controls-grid{display:grid;grid-template-columns:auto auto auto;justify-content:center;align-items:center;gap:.85rem .6rem;margin:.4rem 0 1.4rem}.ctrl{display:contents;font-weight:700;font-size:1.05rem;letter-spacing:.04em}.ctrl>.keys{justify-content:center}.keys{display:inline-flex;gap:.25rem;min-width:4.4rem}.keys.arrows{justify-content:center}.moves{display:grid;gap:.6rem;margin-bottom:1rem}.btn-pair{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.btn-pair .btn+.btn{margin-top:0}.btn-pair .btn-primary{font-size:1rem}.move{padding:.75rem .75rem .8rem;border:2px solid var(--ink);border-radius:12px;text-align:center}.move-head{display:flex;justify-content:center;margin-bottom:.6rem}.move-head b{font-size:.95rem}.move-gesture{display:flex;justify-content:center;align-items:center;gap:.45rem;font-weight:700;font-size:1.15rem;margin-bottom:.6rem}.move p{margin:0;font-size:1.15rem;line-height:1.4;color:var(--ink-soft)}.note{font-size:.88rem;line-height:1.45;color:var(--ink-soft);margin:0 0 .8rem}.note b{color:var(--ink)}#controls .card,#controls .btn,#controls .move,#controls kbd,#reminder,#reminder kbd,#menu .btn,#menu .toggle,#pause .card,#pause .btn,#pause .toggle,#lobby .card,#lobby .btn,#lobby .toggle,#lobby .lobby-roster li,#lobby .callsign input,#results .card,#results .btn,#results .stat,#results .new-best,#webgl-error .card{border-radius:0;border-color:transparent;background:none;box-shadow:none;border-image-slice:2 fill;border-image-width:6px;border-image-repeat:stretch}#controls .card,#pause .card,#lobby .card,#results .card,#webgl-error .card{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%2310141B' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E");filter:drop-shadow(0 6px 0 #07090d)}#reminder{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%2310141B' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E");filter:drop-shadow(0 6px 0 #07090d)}#menu .btn,#menu .toggle,#controls .btn,#pause .btn,#pause .toggle,#lobby .btn,#lobby .toggle,#results .btn{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23252F3D' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E");filter:drop-shadow(0 5px 0 #07090d)}:where(:root:not(.pinch-nav)) #menu .btn:hover,:where(:root:not(.pinch-nav)) #menu .toggle:hover,:where(:root:not(.pinch-nav)) #controls .btn:hover,:where(:root:not(.pinch-nav)) #pause .btn:hover,:where(:root:not(.pinch-nav)) #pause .toggle:hover,:where(:root:not(.pinch-nav)) #lobby .btn:hover,:where(:root:not(.pinch-nav)) #lobby .toggle:hover,:where(:root:not(.pinch-nav)) #results .btn:hover{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%232E3A4B' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}:where(:root:not(.pinch-nav)) #menu .btn:active,:where(:root:not(.pinch-nav)) #menu .toggle:active,:where(:root:not(.pinch-nav)) #controls .btn:active,:where(:root:not(.pinch-nav)) #pause .btn:active,:where(:root:not(.pinch-nav)) #pause .toggle:active,:where(:root:not(.pinch-nav)) #lobby .btn:active,:where(:root:not(.pinch-nav)) #lobby .toggle:active,:where(:root:not(.pinch-nav)) #results .btn:active{filter:drop-shadow(0 1px 0 #07090d)}#controls .move,#lobby .lobby-roster li,#lobby .callsign input,#results .stat,#results .new-best{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%231D2530' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}#controls,#reminder,#pause,#lobby,#results,#webgl-error{font-family:"Pixelify Sans",var(--font);font-variant-ligatures:none}#controls .card,#controls .note,#controls .note b,#controls .move p,#controls .move p b,#reminder,#reminder b,#reminder .reminder-goal,#pause .card,#lobby .card,#lobby .note,#lobby .lobby-status,#lobby .lobby-roster li,#lobby .callsign,#results .card,#results .stat span,#results .stat b,#results .breakdown,#webgl-error .card,#webgl-error .note{color:var(--ui-text);text-shadow:0 2px 0 rgba(0,0,0,.55)}#controls h2,#pause h2,#lobby h2,#results h2,#webgl-error h2{--vx: 3.4px}#controls .btn,#pause .btn,#lobby .btn,#results .btn{display:grid;place-items:center;--vx: 2.5px}#results .results-kicker,#results .new-best,#lobby .results-kicker{--vx: 1.6px}#lobby .results-kicker{margin-bottom:0}.lobby-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.5rem}#lobby .lobby-countdown{--vx: 2px}#lobby .lobby-roster li.you{color:var(--ui-select)}#results .breakdown.ranked>:first-child{color:var(--ui-select)}#lobby .callsign input{font:600 1rem "Pixelify Sans",var(--font);color:var(--ui-text);padding:.5rem .7rem}#lobby .callsign input::placeholder{color:var(--ui-text);opacity:.55}#lobby .callsign input,#lobby #btn-lobby-cancel{height:2.5rem}#lobby #btn-lobby-cancel{padding-block:0}#lobby .callsign input:focus{outline:none;border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23ffc21a' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}#results .new-best{padding:.4rem .7rem}#results .online-result{display:none}#results.online .online-result{display:flex;flex-direction:column;align-items:center}#results.online .results-kicker,#results.online .results-head,#results.online .stats,#results.online .breakdown{display:none}#results .online-result h2{margin:0;--vx: 4.4px}#results .ores-sub{margin-top:.7rem;--vx: 1.9px}#results .ores-place{margin:1.1rem 0 1.2rem;--vx: 6px}#results .online-result .vtext{max-width:100%;height:auto}#results .ores-stats{align-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin-bottom:1.1rem}#results .ores-stats .stat{align-items:center}#results .ores-stats span{--vx: 1.7px}#results .ores-stats b{--vx: 3.4px}.results-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:1rem}#results .results-head h2{margin:0;min-width:0}#results .results-head h2 .vtext,#webgl-error h2 .vtext,#pause h2 .vtext{max-width:100%;height:auto}#results .results-head .new-best{flex:none;margin:0;animation:none}#pause .toggle,#lobby .toggle{--vx: 1.8px}#pause .toggle b,#lobby .toggle b{--vx: 1.4px}#controls .btn-pair .btn{--vx: 2.3px}#controls .move-head>b{--vx: 1.8px}#controls .move-gesture kbd{--vx: 2.3px;padding:.3rem .6rem}#controls kbd,#reminder kbd{--vx: 1.5px;font-size:inherit}#controls kbd,#reminder kbd{border-width:2px;border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23252F3D' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23485365' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E");border-image-width:4px;filter:drop-shadow(0 2px 0 #07090d)}.results-kicker{font-size:.72rem;font-weight:800;letter-spacing:.2em;color:var(--red);margin-bottom:.2rem}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin:.4rem 0 .8rem}.stat{min-width:0;background:#fff;border:2px solid var(--paper-edge);border-radius:12px;padding:.6rem;display:flex;flex-direction:column;gap:.2rem}.stat span{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.stat b{font-size:1.35rem;font-weight:900}.stat-big{grid-column:1 / -1;background:var(--ink);border-color:var(--ink);color:#fff}.stat-big span{color:#b8c3d6}.stat-big b{font-size:2.6rem}.breakdown{font-size:.82rem;color:var(--ink-soft);margin-bottom:1rem;line-height:1.5}.new-best{display:inline-block;margin:-.4rem 0 .6rem;padding:.25rem .7rem;background:var(--yellow);border:2px solid var(--ink);border-radius:999px;font-weight:900;font-size:.8rem;letter-spacing:.1em;animation:wobble 1s ease-in-out infinite alternate}@keyframes wobble{0%{transform:rotate(-3deg)}to{transform:rotate(3deg) scale(1.05)}}.hud{position:absolute;inset:0;pointer-events:none;z-index:10;color:#fff}.hud-top{position:absolute;left:0;right:0;top:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:1rem;padding:calc(14px + var(--safe-t)) calc(16px + var(--safe-r)) 0 calc(16px + var(--safe-l))}.hud-bars{display:flex;flex-direction:column;gap:8px}.bar{display:flex;align-items:center;gap:8px;width:min(300px,40vw);padding:6px 10px;border-radius:12px;background:#101a2c8c;border:2px solid rgba(255,255,255,.18)}.bar-label{font-size:.68rem;font-weight:800;letter-spacing:.1em;width:3.6em}.bar-track{flex:1;height:21px;border-radius:6px;background:#ffffff26;overflow:hidden}.bar-fill{height:100%;width:100%;border-radius:6px;transform-origin:left center;transition:background .2s}.bar-health .bar-fill{background:linear-gradient(180deg,#6fe38f,var(--green))}.bar-health.low .bar-fill{background:linear-gradient(180deg,#ff7a6b,var(--enemy))}.bar-health.low{animation:pulse .6s ease-in-out infinite alternate}.bar-boost .bar-fill{background:linear-gradient(180deg,#ffd56b,var(--yellow))}.bar-boost.active .bar-fill{background:linear-gradient(180deg,#fff,#ffe08a)}.bar-boost.empty .bar-fill{opacity:.45}.bar-value{font-size:.8rem;font-weight:800;min-width:2.2em;text-align:right;font-variant-numeric:tabular-nums}.bar-key{font-size:.6rem;opacity:.7;letter-spacing:.06em}@keyframes pulse{to{border-color:#ff5a46e6}}.weapon{display:flex;align-items:center;gap:8px;width:min(300px,40vw);padding:6px 10px;border-radius:12px;background:#101a2c8c;border:2px solid rgba(255,255,255,.18)}.weapon-name{flex:1;font-size:.78rem;font-weight:900;letter-spacing:.1em}.weapon.missile{border-color:#ffd34acc}.weapon.missile .weapon-name{color:#ffd34a}.missile-pips{display:flex;gap:6px;opacity:.45}.weapon.missile .missile-pips{opacity:1}.missile-pips i{position:relative;overflow:hidden;width:12px;height:24px;border-radius:4px 4px 2px 2px;border:2px solid #fff;background:transparent}.missile-pips i:after{content:"";position:absolute;inset:0;background:#ffffff8c;transform-origin:bottom;transform:scaleY(var(--reload, 0))}.missile-pips i.ready{background:#ffd34a}.missile-pips.many{gap:5px}.missile-pips.many i{width:10px}.weapon.dual .weapon-name{color:#d4b8ff}.hud-timer{font-size:2.1rem;font-weight:900;font-variant-numeric:tabular-nums;padding:2px 18px;border-radius:14px;background:#101a2c8c;border:2px solid rgba(255,255,255,.18);text-shadow:0 2px 0 rgba(0,0,0,.25)}.hud-timer.urgent{color:#ffd34a}.hud-score{justify-self:end;text-align:right;text-shadow:0 2px 0 rgba(0,0,0,.3)}.score-value{font-size:2.2rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}.score-sub{font-size:.78rem;font-weight:700;opacity:.9;letter-spacing:.04em}#hud.online .score-sub #kills{display:none}.reticle{position:absolute;left:50%;top:50%;width:76px;height:76px;transform:translate(-50%,-50%);z-index:1;will-change:transform}.reticle svg{width:100%;height:100%;overflow:visible}.reticle circle,.reticle line{fill:none;stroke:#ffffffeb;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 1px rgba(0,0,0,.85)) drop-shadow(0 1px 1px rgba(0,0,0,.5))}.reticle .dot{fill:#fff;stroke:none}.reticle.locked circle,.reticle.locked line{stroke:#ffd34a}.reticle.locked .dot{fill:#ffd34a}.reticle.missile svg{transform:rotate(45deg)}.reticle.missile.locked circle,.reticle.missile.locked line{stroke:#ff3b30;filter:drop-shadow(0 0 1px rgba(0,0,0,.85)) drop-shadow(0 0 4px rgba(255,59,48,.8))}.reticle.missile.locked .dot{fill:#ff3b30}.hitmarker{position:absolute;inset:18px;opacity:0}.hitmarker:before,.hitmarker:after{content:"";position:absolute;left:50%;top:50%;width:46px;height:4px;border-radius:2px;background:#fff;box-shadow:0 0 0 1px #0000004d}.hitmarker:before{transform:translate(-50%,-50%) rotate(45deg)}.hitmarker:after{transform:translate(-50%,-50%) rotate(-45deg)}.hitmarker.show{animation:hit .22s ease-out}.hitmarker.kill:before,.hitmarker.kill:after{background:#ffd34a}@keyframes hit{0%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(.8)}}.markers{position:absolute;inset:0;overflow:hidden}.marker{position:absolute;left:0;top:0;will-change:transform}.marker-box{position:absolute;width:40px;height:40px;left:-20px;top:-20px;border:3px solid var(--enemy);border-radius:6px;box-shadow:0 0 0 1px #00000040}.marker.selected .marker-box{width:56px;height:56px;left:-28px;top:-28px;border:4px solid #ffd34a;border-radius:4px;box-shadow:0 0 0 1px #00000059,0 0 14px #ffd34ab3;animation:target-pulse .7s ease-in-out infinite alternate}.marker-label{display:none}.marker.selected .marker-label{display:block;position:absolute;left:50%;top:-30px;transform:translate(-50%);font-size:.62rem;color:#ffd34a}.marker.selected .marker-health{top:-36px;height:5px}.marker.selected .marker-health i{background:#ffd34a}.marker.selected .marker-dist{top:32px;color:#ffd34a}.marker.selected.offscreen .marker-arrow:before{border-bottom-color:#ffd34a;border-bottom-width:26px;border-left-width:14px;border-right-width:14px}@keyframes target-pulse{to{transform:scale(1.12)}}.marker-health{position:absolute;left:-16px;top:-30px;width:32px;height:4px;border-radius:2px;background:#00000059;overflow:hidden}.marker-health i{display:block;height:100%;background:var(--enemy);transform-origin:left}.marker-dist{position:absolute;top:24px;left:0;transform:translate(-50%);font-size:.7rem;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.6);white-space:nowrap}.marker-arrow{position:absolute;left:-16px;top:-16px;width:32px;height:32px;display:grid;place-items:center}.marker-arrow:before{content:"";width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:20px solid var(--enemy);filter:drop-shadow(0 1px 1px rgba(0,0,0,.45))}.marker-pickup{position:absolute;width:26px;height:26px;left:-13px;top:-13px;border-radius:7px;border:2px solid #fff;display:grid;place-items:center;font-weight:900;font-size:1rem;color:#fff;box-shadow:0 2px #00000040}.marker-pickup.repair{background:var(--green)}.marker-pickup.boost{background:var(--yellow);color:#3a2400}.marker-pickup.dual{background:var(--purple)}.marker.offscreen .marker-pickup{transform:scale(.8);opacity:.9}.marker.pickup-arrow .marker-arrow:before{border-bottom-color:#fff;border-bottom-width:14px;border-left-width:7px;border-right-width:7px}.toasts{position:absolute;left:50%;top:27%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px}.toast{font-weight:900;font-size:1.15rem;letter-spacing:.06em;text-shadow:0 2px 0 rgba(0,0,0,.35);animation:toast 1.4s ease-out forwards}.toast.kill{color:#ffd34a;font-size:1.5rem}.toast.repair{color:#8dffb0}.toast.boost{color:#ffe08a}.toast.dual{color:#d4b8ff}.toast.bonus{color:#fff;font-size:1rem}@keyframes toast{0%{opacity:0;transform:translateY(10px) scale(.8)}15%{opacity:1;transform:translateY(0) scale(1.08)}25%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(-16px)}}.warning{position:absolute;left:50%;bottom:calc(22% + var(--safe-b));transform:translate(-50%);padding:.55rem 1.2rem;border-radius:999px;background:#c81e14d1;border:2px solid #fff;font-weight:900;letter-spacing:.12em;font-size:1rem;white-space:nowrap;animation:blink .5s steps(2,start) infinite}.warning.soft{background:#101a2cb3;animation:none}.warning.prompt{background:#101a2ccc;border-color:#ffd34a;color:#ffd34a;font-size:1.05rem;animation:prompt-pulse .45s ease-in-out infinite alternate}@keyframes prompt-pulse{to{box-shadow:0 0 0 4px #ffd34a59;transform:translate(-50%) scale(1.04)}}@keyframes blink{50%{opacity:.55}}.hud-alt{position:absolute;left:calc(16px + var(--safe-l));bottom:calc(14px + var(--safe-b));font-size:.78rem;font-weight:800;letter-spacing:.1em;padding:4px 10px;border-radius:8px;background:#101a2c73}.pause-btn{position:absolute;right:calc(16px + var(--safe-r));bottom:calc(14px + var(--safe-b));pointer-events:auto;width:40px;height:40px;border-radius:10px;border:2px solid rgba(255,255,255,.5);background:#101a2c80;color:#fff;font-weight:900;letter-spacing:-.1em}.damage-flash{position:absolute;inset:0;pointer-events:none;z-index:5;opacity:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(230,30,20,.55) 100%);transition:opacity .25s}.reminder{position:absolute;left:50%;bottom:calc(7% + var(--safe-b));transform:translate(-50%);z-index:12;pointer-events:none;padding:.9rem 1.2rem;border-radius:16px;background:#fffaf0f0;border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink);text-align:center;font-weight:700;font-size:.9rem;animation:reminder 4.5s ease-in-out forwards;width:max-content;max-width:calc(100vw - 32px)}.reminder-row{display:flex;align-items:center;justify-content:center;gap:.45rem;flex-wrap:wrap}.reminder-row kbd{font-size:.7rem}.reminder-goal{margin-top:.5rem;color:var(--red);font-weight:900}@keyframes reminder{0%{opacity:0;transform:translate(-50%,10px)}8%,85%{opacity:1;transform:translate(-50%)}to{opacity:0}}.hud .vtext,#reminder .vtext,#results .stat .vtext,#results .breakdown .vtext{display:inline-block;vertical-align:middle;font-size:var(--vx, max(1.25px, .12em));filter:drop-shadow(0 1px 1px rgba(0,0,0,.4))}.bar-label,.bar-value,.bar-key,.weapon-name,.hud-timer,.score-value,.score-sub,.hud-alt,.warning,.toast,.marker-dist,.marker-label,.marker-pickup,.pause-btn,.reminder-goal,#results .stat span,#results .stat b{line-height:0}.score-sub{display:flex;justify-content:flex-end;align-items:center;gap:.35em;margin-top:.45rem}.hud-timer{padding-block:.3em}.hud-alt{padding-block:6px}.warning{padding-block:.7rem}.pause-btn{display:grid;place-items:center;padding:0}#reminder .reminder-row>span{display:inline-flex}#results .stat span,#results .stat b{display:block}#results .stat{gap:.5rem}#results .stat .vtext{max-width:100%;height:auto}#results .breakdown{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;font-size:.9rem}.bar,.weapon,.hud-timer,.hud-alt,.warning,.pause-btn,.marker-pickup{border-radius:0;border:2px solid transparent;background:none;box-shadow:none;border-image-slice:2 fill;border-image-width:6px;border-image-repeat:stretch;border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.55' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='0.18' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.bar-health.low{animation:pulse-voxel .6s steps(1,end) infinite alternate}@keyframes pulse-voxel{50%,to{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.55' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ff5a46' fill-opacity='0.9' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}}.weapon.missile{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.55' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffd34a' fill-opacity='0.8' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.weapon.dual{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.55' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23b98cff' fill-opacity='0.8' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.hud-alt{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.45' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23101a2c' fill-opacity='0.45' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.warning{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23c81e14' fill-opacity='0.82' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.warning.soft{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.7' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.warning.prompt{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.8' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffd34a' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E");animation:prompt-pulse-voxel .45s ease-in-out infinite alternate}@keyframes prompt-pulse-voxel{to{filter:drop-shadow(0 0 4px rgba(255,211,74,.6));transform:translate(-50%) scale(1.04)}}.pause-btn{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23101a2c' fill-opacity='0.5' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='0.5' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.marker-pickup{filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}.marker-pickup.repair{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%2334c46a' fill-opacity='1' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.marker-pickup.boost{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23ffb21f' fill-opacity='1' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.marker-pickup.dual{border-image-source:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%239b5cff' fill-opacity='1' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffffff' fill-opacity='1' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E")}.bar-track,.bar-fill,.missile-pips i{border-radius:0;clip-path:polygon(2px 0,calc(100% - 2px) 0,calc(100% - 2px) 2px,100% 2px,100% calc(100% - 2px),calc(100% - 2px) calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,2px calc(100% - 2px),0 calc(100% - 2px),0 2px,2px 2px)}.marker-box,.marker-health{border-radius:0}.warning.soft,.warning.prompt,.marker-pickup.repair,.marker-pickup.boost,.marker-pickup.dual{background:none;box-shadow:none}.btn:focus,.toggle:focus{outline:3px solid #ffc21a;outline-offset:3px}#menu .btn:focus,#menu .toggle:focus,#controls .btn:focus,#pause .btn:focus,#pause .toggle:focus,#lobby .btn:focus,#lobby .toggle:focus,#results .btn:focus{outline:none;border-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%23252F3D' d='M2 1h3v1h1v3h-1v1h-3v-1h-1v-3h1z'/%3E%3Cpath fill='%23ffc21a' d='M2 0h3v1h-3zM1 1h1v1h-1zM5 1h1v1h-1zM0 2h1v3h-1zM6 2h1v3h-1zM1 5h1v1h-1zM5 5h1v1h-1zM2 6h3v1h-3z'/%3E%3C/svg%3E") 2 fill / 6px stretch;filter:drop-shadow(0 5px 0 #07090d) drop-shadow(0 0 6px rgba(255,194,26,.85))}#game .toggle b{--chip: var(--ink-soft);display:inline-grid;place-items:center;border-radius:0;box-shadow:none;background:var(--chip);clip-path:polygon(2px 0,calc(100% - 2px) 0,calc(100% - 2px) 2px,100% 2px,100% calc(100% - 2px),calc(100% - 2px) calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,2px calc(100% - 2px),0 calc(100% - 2px),0 2px,2px 2px)}#game .toggle[aria-pressed=true] b,#game .toggle-difficulty b{--chip: var(--green)}#game .toggle-difficulty[data-level=normal] b{--chip: #e09a1f}#game .toggle-difficulty[data-level=hard] b{--chip: var(--red)}#game .toggle-craft b{--chip: var(--green)}.input-debug{position:fixed;left:8px;right:8px;top:8px;z-index:100;pointer-events:none;padding:8px 10px;border-radius:10px;border:2px solid #5ef0ff;background:#000000c7;color:#e8fbff;font:600 13px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.input-debug-title{font-size:11px;letter-spacing:.2em;color:#5ef0ff}.input-debug-summary{margin-top:4px;font-size:16px;font-weight:800;color:#fff}.input-debug-action{margin-top:2px;font-size:16px;font-weight:800;color:#ffd34a}.input-debug-action.flash{animation:dbg-flash .5s ease-out}@keyframes dbg-flash{0%{color:#fff;text-shadow:0 0 8px #ffd34a}}.input-debug-counts{margin-top:2px;font-size:11px;color:#9fd8e6}.input-debug pre{margin:6px 0 0;font:inherit;white-space:pre-wrap;word-break:break-all}.threat-debug{position:fixed;left:8px;right:8px;bottom:8px;z-index:100;pointer-events:none;max-width:560px;padding:8px 10px;border-radius:10px;border:2px solid #ff7a4a;background:#000000c7;color:#ffeee6;font:600 12px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.threat-debug-title{font-size:11px;letter-spacing:.2em;color:#ff7a4a}.threat-debug-status{margin-top:4px;font-size:14px;font-weight:800;color:#b9c2c8}.threat-debug-status.on{color:#7dff9a}.threat-debug-dodge{margin-top:2px;font-size:14px;font-weight:800;color:#b9c2c8}.threat-debug-dodge.on{color:#ffd34a;text-shadow:0 0 6px rgba(255,211,74,.6)}.threat-debug-incoming{margin-top:2px;font-size:12px;font-weight:800;color:#b9c2c8}.threat-debug-incoming.on{color:#ff5a4a}.threat-debug-stats{margin-top:4px;font-size:11px;color:#ffc2a8}.threat-debug pre{margin:4px 0 0;font:inherit;white-space:pre-wrap}.perf-debug{position:fixed;left:8px;top:118px;z-index:101;pointer-events:none;margin:0;padding:5px 7px;border-radius:8px;border:2px solid #7dff9a;background:#000000c7;color:#e6ffe9;font:600 10px/1.3 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre}@media(max-width:640px){.hud-timer{font-size:1.5rem;padding:2px 10px}.score-value{font-size:1.6rem}.bar,.weapon{width:38vw;padding:4px 8px}.bar-label{font-size:.58rem}}@media(max-width:420px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats .stat:last-child{grid-column:1 / -1}}@media(max-height:640px){#results .stats{margin:.3rem 0 .6rem}#results .breakdown{gap:.3rem;margin-bottom:.8rem}}@media(max-height:520px){.card{padding:.9rem 1.1rem;border-radius:18px}.btn{padding:.55rem}.btn+.btn,.btn-row{margin-top:.5rem}.btn-primary{padding:.65rem;font-size:1.1rem}.toggles,.best{margin-top:.6rem}.card h2{font-size:1.4rem;margin-bottom:.6rem}.results-head{margin-bottom:.6rem}.stat-big b{font-size:1.9rem}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stats .stat-big{grid-column:auto}.stats .stat:last-child{grid-column:auto}.card{width:min(560px,100%)}}@media(max-height:520px)and (min-aspect-ratio:3/2){.menu-card{padding:.9rem 1.1rem;border-radius:18px}.screen-menu{flex-direction:row;gap:1.5rem}.menu-logo{top:0;width:min(420px,48vw)}.menu-logo img{max-height:70vh}#menu .menu-card{width:min(300px,100%)}#menu .btn{padding:.45rem;--vx: 2.3px}#menu .btn-primary{padding:.5rem;--vx: 3px}#menu .btn+.btn,#menu .btn-row{margin-top:.6rem}#menu .toggles{margin-top:.7rem;gap:.7rem}#menu .toggles+.btn{margin-top:.6rem}#menu .toggle{gap:4px;padding:.3rem .4rem .4rem;--vx: 1.6px}#menu .toggle b{--vx: 1.4px}#menu .best{margin-top:.7rem;--vx: 1.6px}#menu .best b{--vx: 2.1px}}
