:root{--ink:#e9e2cf;--ink-dim:#9fa7ad;--brass:#f2b544;--brass-dark:#8a5a14;--rust:#b8432b;--steel:#35c6e8;--panel:#080d14d1;--void:#05090f;--font:"Courier New", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--void);height:100%;color:var(--ink);font-family:var(--font);overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;overflow:hidden}body{position:fixed;inset:0}#app{padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:repeating-linear-gradient(45deg, #ffffff04 0 8px, transparent 8px 16px), radial-gradient(ellipse at center, #0b1622 0%, var(--void) 70%);touch-action:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.stage{--u:1;font-size:max(11px, calc(var(--u) * 21px));touch-action:none;background:#0b2338;flex:none;position:relative;overflow:hidden;box-shadow:0 0 0 2px #1a232c,0 0 40px #000c}.playfield{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;touch-action:none;display:block;position:absolute;inset:0}.playfield.downscaled{image-rendering:auto}.hidden{display:none!important}.btn{font:inherit;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);border:3px solid var(--ink-dim);cursor:pointer;touch-action:manipulation;background:#1b1a18;min-width:11em;min-height:48px;padding:.6em 1.6em;font-size:1.05em;font-weight:700;box-shadow:0 4px #000}.btn:hover,.btn:focus-visible{border-color:var(--ink);filter:brightness(1.15);outline:none}.btn:active{transform:translateY(3px);box-shadow:0 1px #000}.btn-primary{color:var(--brass);border-color:var(--brass);background:#22180c}.btn:disabled{opacity:.5;cursor:default;filter:none}.btn-sound-text{min-width:0;min-height:44px;color:var(--ink-dim);border-width:2px;padding:.4em 1.1em;font-size:.75em}.btn-sound-text.is-muted{color:#ff8a65}.hud{pointer-events:none;text-shadow:0 2px #000;position:absolute;inset:0}.hud button{pointer-events:auto}.hud-top{background:linear-gradient(#04080d99,#04080d00);justify-content:space-between;align-items:center;gap:.6em;padding:.45em .55em;display:flex}.hud-hearts{gap:.25em;min-width:5em;display:flex}.heart svg{fill:#ff5a3c;filter:drop-shadow(0 2px #000);shape-rendering:crispedges;width:1.35em;height:1.2em;display:block}.heart.lost svg{fill:#2b2f35}.hud-score{letter-spacing:.1em;color:var(--brass);font-size:1.15em;font-weight:700}.hud-buttons{gap:.3em;display:flex}.hud-pause,.hud-sound{background:#0a1018b3;border-width:2px;justify-content:center;align-items:center;gap:.22em;width:max(44px,2.3em);min-width:0;height:max(44px,2.3em);min-height:0;padding:0;display:flex;box-shadow:0 3px #000}.hud-sound svg{width:1.25em;height:1em;fill:var(--ink);shape-rendering:crispedges;display:block}.hud-sound .cross,.hud-sound.is-muted .wave{display:none}.hud-sound.is-muted .cross{fill:#ff8a65;display:inline}.hud-pause span{background:var(--ink);width:.28em;height:.9em;display:block}.hud-stack{flex-direction:column;align-items:center;gap:.4em;padding:0 .6em;display:flex}.hud-boss{text-align:center;width:78%}.hud-boss-name{letter-spacing:.25em;color:#ff8a65;margin-bottom:.2em;font-size:.8em;font-weight:700}.bar{background:#1a1d22;border:2px solid #000;height:.65em;position:relative;box-shadow:0 0 0 1px #3b4048}.bar .fill{background:linear-gradient(#ff7a4a,#c2361c);width:100%;height:100%}.boss-bar .marker{background:var(--ink);opacity:.7;width:2px;position:absolute;top:-3px;bottom:-3px}.hud-boss.enraged .fill{background:linear-gradient(#b884ff,#6a2fd6)}.hud-status{justify-items:center;gap:.2em;min-width:0;display:grid}.hud-power{text-align:center;color:var(--brass);font-size:max(9px,.62em);font-weight:700}.hud-banner{text-align:center;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:linear-gradient(90deg,#0000,#04080dcc 15% 85%,#0000);padding:.6em 1em;font-size:1.05em;font-weight:700;position:absolute;top:33%;left:0;right:0}.hud-banner.warning{color:#ff8a65}@keyframes blink{50%{opacity:.45}}.screen{text-align:center;background:#04080dc7;flex-direction:column;justify-content:center;align-items:center;gap:.9em;padding:1.5em;display:flex;position:absolute;inset:0}.screen-menu{background:linear-gradient(#04080d8c,#04080de6),repeating-linear-gradient(0deg,#0000001f 0 2px,#0000 2px 4px)}.title{text-shadow:0 3px #000,0 0 18px #f2b54440;flex-direction:column;margin:0 0 .2em;line-height:1;display:flex}.title-main{letter-spacing:.08em;color:var(--brass);font-size:2.35em}.title-sub{letter-spacing:.42em;color:var(--steel);margin-top:.3em;font-size:1.15em}.tagline{color:var(--ink-dim);margin:0;font-size:.75em}.mission{border-top:2px solid var(--rust);border-bottom:2px solid var(--rust);flex-direction:column;gap:.2em;margin:.6em 0;padding:.5em 1.2em;display:flex}.mission-label{letter-spacing:.3em;text-transform:uppercase;color:#ff8a65;font-size:.75em}.mission-name{font-size:1.1em;font-weight:700}.menu-brand,.menu-actions{display:contents}.screen-intro{background:linear-gradient(#04080db3,#04080df0),repeating-linear-gradient(0deg,#0000001f 0 2px,#0000 2px 4px);gap:.9em}.intro-brand{flex-direction:column;align-items:center;gap:.5em;display:flex}.screen-intro .title{margin:0}.screen-intro .title-main{font-size:1.75em}.screen-intro .title-sub{font-size:.95em}.intro-kicker{letter-spacing:.3em;text-transform:uppercase;color:#ff8a65;margin:0;font-size:.68em}.intro-story{border-top:2px solid var(--rust);border-bottom:2px solid var(--rust);text-align:left;background:#00000059;max-width:24em;padding:.8em 1em;font-size:.74em;line-height:1.45}.intro-story p{margin:0;animation:.6s ease-out both intro-in}.intro-story p+p{margin-top:.6em}.intro-story p:nth-child(2){animation-delay:.35s}.intro-story p:nth-child(3){color:var(--brass);animation-delay:.7s}.screen-intro>.btn{animation:.6s ease-out 1.05s both intro-in}@keyframes intro-in{0%{opacity:0;transform:translateY(.4em)}}.controls{color:var(--ink-dim);margin:.8em 0 0;padding:0;font-size:.72em;line-height:1.7;list-style:none}.screen-title{letter-spacing:.15em;text-transform:uppercase;color:var(--brass);text-shadow:0 3px #000;margin:0;font-size:2em}.screen-defeat .screen-title{color:#ff6b4a}.screen-text{max-width:18em;color:var(--ink-dim);margin:0;font-size:.85em}.stats{text-align:left;grid-template-columns:auto auto;gap:.35em 1.4em;margin:.4em 0 .8em;font-size:.95em;display:grid}.stats dt{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.1em;align-self:center;font-size:.8em}.stats dd{text-align:right;margin:0;font-weight:700}.stats .stat-score{color:var(--brass);font-size:1.2em}.stats .stat-sep,.stats .stat-sep+dd{border-top:1px solid #2a3038;margin-top:.3em;padding-top:.4em}.stats .stat-credits{color:#97eab5;font-size:1.1em}.reward-breakdown{color:var(--ink-dim);margin:-.7em 0 0;font-size:.68em}.new-best{letter-spacing:.14em;text-transform:uppercase;color:var(--steel);margin:0;font-size:.8em;font-weight:700}.screen-hint{max-width:20em;color:var(--ink-dim);margin:-.4em 0 0;font-size:.65em}.screen-hangar{text-align:left;background:linear-gradient(#04080dbd,#04080df2),repeating-linear-gradient(90deg,#f2b54409 0 2px,#0000 2px 28px);justify-content:flex-start;align-items:stretch;gap:.55em;padding:.9em .9em .8em}.hangar-head{border-bottom:2px solid var(--rust);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.3em .8em;padding-bottom:.35em;display:flex}.screen-hangar .screen-title{font-size:1.55em}.wallet{flex-direction:column;align-items:flex-end;display:flex}.wallet-label{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);font-size:max(9px,.6em)}.wallet-value{letter-spacing:.08em;color:var(--brass);font-size:1.15em;font-weight:700}.hangar-tabs{grid-template-columns:1fr 1fr;gap:.45em;display:grid}.hangar-tab,.hangar-back,.upgrade-buy,.reset-actions .btn{border-width:2px;min-width:0;min-height:44px;padding:.35em .6em;font-size:max(11px,.8em);box-shadow:0 3px #000}.hangar-tab{color:var(--ink-dim)}.hangar-tab.is-active{color:var(--brass);border-color:var(--brass);background:#22180c}.hangar-body{overscroll-behavior:contain;touch-action:pan-y;flex:auto;min-height:0;padding:.15em .1em .3em;overflow:hidden auto}.hangar-panel{flex-direction:column;gap:.6em;display:flex}.aircraft-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45em;display:grid}.aircraft-card{letter-spacing:.03em;text-transform:none;background:#10141aeb;border-width:2px;flex-direction:column;align-items:center;gap:.25em;min-width:0;min-height:0;padding:.45em .2em .5em;font-size:max(10px,.66em);display:flex;box-shadow:0 3px #000}.aircraft-card.is-viewing{border-color:var(--steel);background:#0e1e28f2}.aircraft-card.is-locked .aircraft-sprite{filter:grayscale(.75)brightness(.55)}.aircraft-sprite{width:4.4em;height:4.4em;image-rendering:pixelated;display:block}.aircraft-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-weight:700;overflow:hidden}.aircraft-status{color:var(--ink-dim)}.aircraft-card.is-selected .aircraft-status{color:var(--brass)}.aircraft-card.is-locked .aircraft-status{color:#ff8a65}.aircraft-detail{background:#0a0e14e0;border:2px solid #2a3038;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.5em .8em;padding:.6em;display:grid}.detail-portrait .aircraft-sprite{width:4.6em;height:4.6em}.detail-name{letter-spacing:.06em;color:var(--brass);margin:0;font-size:1.05em}.detail-role{color:var(--ink-dim);margin:.1em 0 .45em;font-size:max(10px,.72em)}.aircraft-stats{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.3em .6em;margin:0;font-size:max(10px,.72em);display:grid}.aircraft-stats dt{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);font-size:.85em}.aircraft-stats dd{margin:0}.stat-hearts{letter-spacing:.12em;color:#ff5a3c}.stat-bar{align-items:center;gap:.45em;display:flex}.stat-bar .bar{flex:1;height:.6em}.stat-bar .fill{background:linear-gradient(#ffd27a,#c98a1c);display:block}.stat-value{text-align:right;min-width:3.2em;font-weight:700}.stats-note{color:var(--ink-dim);margin:.35em 0 0;font-size:max(9px,.62em)}.aircraft-action{grid-column:1/-1;width:100%;min-width:0}.upgrade{background:#0a0e14e0;border:2px solid #2a3038;gap:.35em;padding:.55em .6em;display:grid}.upgrade-head{align-items:center;gap:.6em;display:flex}.upgrade-name{letter-spacing:.08em;text-transform:uppercase;flex:1;font-size:.9em;font-weight:700}.pips{gap:.25em;display:flex}.pip{background:#1a1d22;border:2px solid #000;width:.7em;height:.7em;box-shadow:0 0 0 1px #3b4048}.pip.is-on{background:var(--brass)}.upgrade-level{color:var(--ink-dim);font-size:max(9px,.65em)}.upgrade-effect{color:var(--ink-dim);margin:0;font-size:max(10px,.7em)}.upgrade-buy{width:100%;color:var(--brass);border-color:var(--brass-dark)}.hangar-status{text-align:center;min-height:1.4em;color:var(--ink-dim);margin:0;font-size:max(10px,.72em)}.hangar-status[data-tone=success]{color:#97eab5}.hangar-status[data-tone=error]{color:#ff8a65}.hangar-notice{text-align:center;color:#ffd27a;border:1px dashed var(--brass-dark);margin:0;padding:.4em .6em;font-size:max(9px,.65em)}.hangar-actions{grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:.5em;display:grid}.hangar-launch{flex-direction:column;align-items:center;min-width:0;padding:.4em .6em;line-height:1.15;display:flex}.launch-name{letter-spacing:.08em;color:var(--ink);font-size:.62em}.btn-link{min-width:0;min-height:44px;color:var(--ink-dim);box-shadow:none;text-underline-offset:.25em;background:0 0;border:none;grid-column:1/-1;justify-self:center;padding:.3em .8em;font-size:max(10px,.65em);text-decoration:underline}.btn-link:active{transform:none}.reset-box{border:2px solid var(--rust);background:#280a06e6;gap:.6em;padding:.7em;display:grid}.reset-prompt{text-align:center;margin:0;font-size:max(10px,.75em)}.reset-actions{grid-template-columns:1fr 1fr;gap:.5em;display:grid}.btn-danger{color:#ff8a65;background:#2a0f0a;border-color:#ff6b4a}.fatal{text-align:center;max-width:24em;padding:1em}@media (prefers-reduced-motion:reduce){.hud-power.expiring,.intro-story p,.screen-intro>.btn{animation:none}}@media (orientation:landscape) and (max-height:500px) and (min-width:560px){.stage{overflow:visible}.hud-top,.hud-stack{width:min(220px,50vw - 50% - 24px);padding:0;font-size:12px;position:absolute;top:16px}.hud-top{background:0 0;flex-wrap:wrap;right:calc(100% + 12px)}.hud-stack{gap:12px;left:calc(100% + 12px)}.hud-boss{width:100%}.hud-boss-name{letter-spacing:.08em}.hud-power{text-align:center}.screen-hangar,.screen-defeat,.screen-victory,.screen-pause,.screen-menu,.screen-intro{z-index:2;padding:max(10px, env(safe-area-inset-top,0px)) max(16px, env(safe-area-inset-right,0px), calc((100vw - 760px) / 2)) max(10px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px), calc((100vw - 760px) / 2));font-size:13px;position:fixed;inset:0}.screen-hangar{gap:8px}.screen-defeat,.screen-victory,.screen-pause{background:#04080df2}.screen-hangar .screen-title{font-size:1.3em}.hangar-tabs .btn,.hangar-actions .btn{min-height:44px}.hangar-panel-aircraft{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start;display:grid}.hangar-panel-upgrades{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;display:grid}.hangar-panel-upgrades .stats-note{grid-column:1/-1}.aircraft-sprite{width:3.6em;height:3.6em}.hangar-actions{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;align-items:center}.hangar-actions .btn-link{grid-column:auto}.stage:has(>.screen-pause:not(.hidden),>.screen-defeat:not(.hidden),>.screen-victory:not(.hidden)) .hud{visibility:hidden}.screen-defeat,.screen-victory,.screen-pause,.screen-menu,.screen-intro{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-flow:dense;align-content:center;place-items:center;gap:8px 28px;display:grid}.screen-defeat>.btn,.screen-victory>.btn,.screen-defeat>.hangar-notice,.screen-victory>.hangar-notice{grid-column:2;width:100%}.screen-defeat>:not(.btn,.hangar-notice),.screen-victory>:not(.btn,.hangar-notice){grid-column:1}.screen-defeat .stats,.screen-victory .stats,.screen-defeat .reward-breakdown,.screen-victory .reward-breakdown{margin:0}.screen-menu .menu-brand,.screen-menu .menu-actions{flex-direction:column;align-items:center;gap:10px;display:flex}.screen-menu .title-main{font-size:1.7em}.screen-menu .title-sub{font-size:1em}.screen-menu .controls{margin:0}.screen-intro .intro-brand{grid-row:1/span 2}.screen-intro .title-main{font-size:1.7em}.screen-intro .title-sub{font-size:1em}.screen-intro .intro-story{padding:.6em .9em;font-size:.85em}.screen-pause>.screen-title,.screen-pause>.screen-hint{grid-column:1/-1}.screen-pause>.btn{width:100%;min-width:0}}.screen-map{text-align:left;background:linear-gradient(#04080dcc,#04080df5),repeating-linear-gradient(0deg,#f2b54408 0 2px,#0000 2px 28px);justify-content:flex-start;align-items:stretch;gap:.5em;padding:.8em .8em .75em}.map-head{border-bottom:2px solid var(--rust);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.2em .8em;padding-bottom:.3em;display:flex}.map-titles{flex-direction:column;gap:.15em;display:flex}.map-kicker{letter-spacing:.22em;text-transform:uppercase;color:#ff8a65;font-size:max(9px,.6em)}.screen-map .screen-title{font-size:1.35em}.map-progress{letter-spacing:.08em;color:var(--brass);font-size:max(10px,.72em);font-weight:700}.map-board-wrap{flex:1 1 0;place-items:center;min-height:0;display:grid;container-type:size}.map-board{border:2px solid var(--brass-dark);width:min(100cqw,90cqh);height:min(100cqh,111.11cqw);position:relative;overflow:hidden;box-shadow:0 0 0 2px #000,0 6px 18px #000000b3}.map-board img{image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.map-bg{width:100%;height:100%;display:block;position:absolute;inset:0}.map-decor,.map-route,.map-ring,.map-squadron{position:absolute;transform:translate(-50%,-50%)}.map-decor{filter:drop-shadow(0 2px #0009);width:15%}.map-route{opacity:.8;filter:grayscale()brightness(2.4)drop-shadow(0 1px #000);width:8%}.map-route.is-open{opacity:1;filter:sepia()saturate(4)hue-rotate(-12deg)brightness(2.6)drop-shadow(0 1px #000)}.map-node{aspect-ratio:1;width:max(44px,13%);min-width:0;min-height:0;box-shadow:none;z-index:2;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;transform:translate(-50%,-50%)}.map-node:active{box-shadow:none;transform:translate(-50%,-50%)scale(.94)}.map-node:focus-visible{outline:2px dashed var(--steel);outline-offset:2px}.map-node-icon{filter:drop-shadow(0 3px #000000b3);width:100%;height:100%}.map-node.is-locked .map-node-icon{filter:brightness(.75)drop-shadow(0 3px #000000b3)}.map-node-code{letter-spacing:.05em;color:var(--ink);border:1px solid var(--brass-dark);background:#04080dd9;padding:0 .3em;font-size:max(9px,.62em);position:absolute;bottom:-.5em}.map-node.is-viewing .map-node-code{color:var(--brass);border-color:var(--brass)}.map-ring{z-index:1;width:max(58px,17%);animation:1.4s ease-in-out infinite map-ring}.map-squadron{z-index:3;filter:drop-shadow(3px 5px #00000073);width:max(30px,9%);margin-top:-9%;margin-left:7%;transition:left .6s ease-in-out,top .6s ease-in-out;animation:1.8s ease-in-out infinite map-bob}@keyframes map-ring{50%{transform:translate(-50%,-50%)scale(1.08)}}@keyframes map-bob{50%{transform:translate(-50%,calc(-50% - 3px))}}.map-panel{background:var(--panel);border-top:2px solid var(--rust);border-bottom:2px solid var(--rust);flex-direction:column;gap:.25em;padding:.5em .65em;display:flex}.map-panel-top{justify-content:space-between;align-items:baseline;gap:.6em;display:flex}.map-label{letter-spacing:.18em;text-transform:uppercase;color:#ff8a65;font-size:max(9px,.62em)}.map-status{letter-spacing:.1em;text-transform:uppercase;border:1px solid;flex:none;padding:.05em .45em;font-size:max(9px,.62em);font-weight:700}.map-status[data-status=locked]{color:var(--ink-dim)}.map-status[data-status=unlocked]{color:var(--steel)}.map-status[data-status=completed]{color:var(--brass)}.map-name{letter-spacing:.04em;color:var(--ink);margin:0;font-size:1.05em}.map-description{color:var(--ink-dim);margin:0;font-size:max(10px,.68em);line-height:1.4}.map-facts{grid-template-columns:auto 1fr;gap:.1em .8em;margin:.15em 0 0;font-size:max(10px,.68em);display:grid}.map-facts dt{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.1em}.map-facts dd{margin:0}.map-threat{color:#ff8a65;letter-spacing:.15em}.map-reward{color:var(--brass);font-weight:700}.map-hint{color:var(--ink-dim);margin:0;font-size:max(9px,.62em)}.map-hint.is-locked{color:#ff8a65}.map-actions{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:.45em;display:grid}.map-actions .btn{border-width:2px;min-width:0;min-height:48px;padding:.35em .5em;font-size:max(11px,.8em);box-shadow:0 3px #000}.map-start:disabled{opacity:.45}.hangar-nav{gap:.4em;display:grid}.route-unlocked{max-width:20em;color:var(--brass);border:2px solid var(--brass-dark);background:#22180cd9;margin:0;padding:.35em .7em;font-size:max(10px,.74em);font-weight:700}@media (prefers-reduced-motion:reduce){.map-ring,.map-squadron{transition:none;animation:none}}@media (orientation:landscape) and (max-height:500px) and (min-width:560px){.screen-map{z-index:2;padding:max(10px, env(safe-area-inset-top,0px)) max(16px, env(safe-area-inset-right,0px), calc((100vw - 760px) / 2)) max(10px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px), calc((100vw - 760px) / 2));background:#04080df5;grid-template:"head head""board panel"minmax(0,1fr)"board actions"/minmax(0,1fr) minmax(0,1fr);gap:8px 14px;font-size:13px;display:grid;position:fixed;inset:0}.map-head{grid-area:head}.map-board-wrap{grid-area:board}.map-panel{grid-area:panel;overflow-y:auto}.map-actions{grid-area:actions}.map-actions .btn{min-height:44px}}
