:root{color-scheme:dark;--bg:#0b0d10;--panel:#101215;--line:#292b2d;--muted:#8a8d91;--white:#eaeae5;--yellow:#ffe63b;--pink:#ff3c83;--orange:#ff9945;--mono:Menlo,Consolas,"Liberation Mono",monospace}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--white);font-family:Arial,Helvetica,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font:inherit}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}button:disabled{opacity:.3;cursor:default}.site-shell{max-width:1440px;margin:auto;padding:0 58px}.masthead{height:106px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;color:var(--white);font-size:13px;font-weight:800;letter-spacing:1.2px}.brand img{width:43px;height:43px;object-fit:contain}.brand-sub{display:block;font:10px var(--mono);letter-spacing:2.8px;color:var(--muted);margin-top:7px}.edition{font:11px var(--mono);letter-spacing:1px;display:flex;align-items:center;gap:9px;color:var(--yellow)}.edition-number{margin-left:24px;color:var(--muted)}.status-dot{display:inline-block;width:6px;height:6px;background:var(--yellow);border-radius:50%;box-shadow:0 0 10px #ffe63b50}.page-heading{display:flex;align-items:end;justify-content:space-between;padding:37px 0 27px}.eyebrow{font:10px var(--mono);letter-spacing:1.5px;color:var(--muted);margin:0 0 13px}h1{font:900 clamp(28px,3.2vw,46px)/1 var(--mono);letter-spacing:-2px;margin:0}.title-pixel{color:var(--yellow);font-size:30px;vertical-align:middle;margin-left:19px}.game-tag{font:9px var(--mono);letter-spacing:1.4px;color:var(--muted);padding-bottom:4px}.arcade-layout{display:grid;grid-template-columns:minmax(0,1fr) 234px;gap:32px}.cabinet{border:1px solid #363631;background:#090b0d;min-width:0;box-shadow:0 12px 60px #0003;align-self:start}.hud{height:79px;display:grid;grid-template-columns:1fr 1.25fr .65fr 1fr;align-items:center;padding:0 28px;border-bottom:1px solid var(--line);gap:12px;background:#121417}.hud-label{display:block;font:9px var(--mono);letter-spacing:2px;color:var(--muted);margin-bottom:7px}.hud strong{font:bold 22px var(--mono);letter-spacing:1px}.high-score strong,.lives-block strong{color:var(--yellow)}.lives-block{text-align:right}.lives-block strong{font-size:19px}.screen{position:relative;overflow:hidden;background:#020406;aspect-ratio:3/2}.screen>canvas{width:100%;height:100%;display:block;outline-offset:-3px}.scanlines{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 3px,#0002 3px,#0002 4px);opacity:.35;z-index:3}.overlay{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:linear-gradient(0deg,#02040625,#02040665 30%,#02040690 70%,#02040625);z-index:2}.overlay[hidden]{display:none}.overlay-content{width:100%;padding:20px}.signal-label{font:9px var(--mono);letter-spacing:2px;color:var(--yellow)}.overlay h2{font:900 clamp(40px,5.5vw,77px)/.96 var(--mono);letter-spacing:-3px;margin:21px 0;color:var(--white);text-shadow:3px 3px 0 #ffffff15}.overlay h2 span{color:var(--yellow);text-shadow:4px 4px 0 #b16d142b}.overlay p{font-size:13px;color:#b2b3b1;line-height:1.7;margin:0 0 24px}.start-button{display:flex;align-items:center;justify-content:space-between;gap:50px;background:var(--yellow);color:#151609;border:0;padding:17px 23px;min-width:210px;margin:auto;font:bold 13px var(--mono);letter-spacing:1px;box-shadow:4px 4px 0 #756819;transition:background .15s,transform .15s}.start-button:hover{background:#fff27d;transform:translateY(-2px)}.start-button span{font-size:20px;line-height:14px}.keyboard-hint{display:block;margin-top:18px;font:8px var(--mono);letter-spacing:1.2px;color:#848779}.screen-corner{position:absolute;width:12px;height:12px;border-color:#ffe63b55;border-style:solid;pointer-events:none;z-index:4}.corner-tl{left:12px;top:12px;border-width:1px 0 0 1px}.corner-tr{right:12px;top:12px;border-width:1px 1px 0 0}.corner-bl{left:12px;bottom:12px;border-width:0 0 1px 1px}.corner-br{right:12px;bottom:12px;border-width:0 1px 1px 0}.cabinet-footer{height:49px;display:flex;justify-content:space-between;align-items:center;padding:0 18px;border-top:1px solid var(--line);font:9px var(--mono);letter-spacing:.7px;color:#969b93}.cabinet-footer>span{display:flex;align-items:center;gap:8px}.cabinet-footer>div{display:flex;gap:17px}.cabinet-footer button{background:none;border:0;color:#9ca099;padding:8px 0;font:12px var(--mono)}.cabinet-footer button span{font-size:8px}.cabinet-footer button:hover{color:var(--yellow)}.sidebar section{border-bottom:1px solid var(--line);padding:23px 0}.sidebar .mission{padding-top:3px}.sidebar .eyebrow{font-size:9px}.mission h2{font:bold 22px/1.1 var(--mono);letter-spacing:-.6px;margin:19px 0 14px}.mission>p:not(.eyebrow){font-size:12px;line-height:1.8;color:var(--muted)}.pilot{display:flex;align-items:center;gap:12px;margin-top:21px}.pilot img{width:43px;height:43px}.pilot span{display:block;font:8px var(--mono);color:var(--muted);letter-spacing:1px;margin-bottom:6px}.pilot strong{font:10px var(--mono);color:var(--yellow)}.control-row{display:flex;justify-content:space-between;align-items:center;margin-top:12px;color:#b7b8b6;font-size:11px}kbd{display:inline-flex;align-items:center;justify-content:center;border:1px solid #3c3d3d;border-bottom:3px solid #3c3d3d;min-width:25px;height:25px;border-radius:3px;font:11px var(--mono);color:var(--white);background:#17191c}.space-key{width:78px;letter-spacing:1px}.control-row small{font:9px var(--mono);color:var(--muted)}.hold-hint{font-size:10px;color:#6f7477;line-height:1.7;margin:17px 0 0}.target-row{display:flex;align-items:center;gap:9px;font:9px var(--mono);letter-spacing:.5px;margin-top:14px}.enemy-icon{width:33px;height:24px;image-rendering:pixelated}.target-row span{color:#9b9e9f}.target-row strong{margin-left:auto;font-weight:normal;color:var(--white)}.wave-note{font:8px var(--mono);color:var(--yellow);letter-spacing:.5px;margin-top:23px}.wave-note>span{font-size:14px;margin-right:5px}.bottom-strip{display:flex;justify-content:space-between;align-items:center;margin:25px 0 42px;font:8px var(--mono);letter-spacing:1px;color:#737778}.color-bars{display:flex;gap:4px}.color-bars i{height:6px;width:25px;background:#ffee00}.color-bars i:nth-child(2){background:#ffbd00}.color-bars i:nth-child(3){background:#ff8100}.color-bars i:nth-child(4){background:#ff2520}.color-bars i:nth-child(5){background:#ef0076}.site-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:22px 0 28px;font:9px var(--mono);letter-spacing:1px;color:#777c80}.site-footer b{color:var(--yellow);font-size:15px;margin-left:8px}.wave-announcement{position:absolute;inset:38% 0 auto;text-align:center;font:bold 36px var(--mono);letter-spacing:4px;color:var(--yellow);pointer-events:none;text-shadow:3px 3px #000;z-index:4;white-space:pre-line}.wave-announcement small{display:block;font-size:11px;margin-top:14px;letter-spacing:2px}.touch-controls{display:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.cabinet:fullscreen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#020406}.cabinet:fullscreen .hud,.cabinet:fullscreen .cabinet-footer{width:min(100%,120vh)}.cabinet:fullscreen .screen{width:min(100%,120vh);height:auto;max-height:calc(100vh - 130px)}
@media(min-width:1500px){.site-shell{padding-top:10px}.page-heading{padding-top:45px;padding-bottom:32px}}
@media(max-width:1100px){.site-shell{padding:0 30px}.arcade-layout{grid-template-columns:minmax(0,1fr) 200px;gap:24px}.overlay h2{font-size:58px}.overlay p{margin-bottom:18px}.signal-label{font-size:8px;letter-spacing:1px}.sidebar section{padding:17px 0}.mission h2{font-size:20px}.game-tag{font-size:8px}.cabinet-footer{padding:0 12px}.cabinet-footer>div{gap:12px}.cabinet-footer button span{display:none}.hud{padding:0 20px}.bottom-strip{letter-spacing:0}}
@media(max-width:800px){.site-shell{padding:0 20px}.masthead{height:82px}.edition-number,.game-tag{display:none}.page-heading{padding:28px 0 22px}.arcade-layout{grid-template-columns:1fr}.overlay h2{font-size:clamp(43px,9vw,72px)}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:24px}.sidebar .mission{display:none}.sidebar section{border-bottom:0}.bottom-strip{margin-top:10px;margin-bottom:25px}.bottom-strip>span:last-child{display:none}.hud{height:66px}.screen{min-height:0}.keyboard-hint{font-size:7px}.site-footer{font-size:8px}.title-pixel{font-size:24px}}
@media(max-width:480px){.site-shell{padding:0 12px}.brand{font-size:10px;gap:10px}.brand-sub{font-size:8px}.brand img{width:36px;height:36px}.edition{font-size:9px}.hud{padding:0 12px;gap:5px;height:61px}.hud strong{font-size:17px}.hud-label{font-size:8px;letter-spacing:1px}.lives-block strong{font-size:13px}.screen{aspect-ratio:3/2}.overlay-content{padding:10px}.overlay h2{font-size:40px;margin:13px 0}.signal-label{font-size:6px;letter-spacing:.5px}.overlay p{font-size:10px;line-height:1.4;margin-bottom:13px}.start-button{padding:11px 18px;min-width:170px;font-size:11px}.keyboard-hint{margin-top:12px;font-size:6px}.sidebar{gap:18px}.wave-note{font-size:7px}.wave-announcement{font-size:25px}.site-footer{font-size:6px}.page-heading .eyebrow{font-size:8px}.bottom-strip{font-size:7px}.color-bars i{width:15px}}
@media(pointer:coarse){.touch-controls{display:flex;gap:10px;padding:12px;border-top:1px solid var(--line);touch-action:none}.touch-controls button{background:#1c1e21;border:1px solid #424238;color:var(--yellow);padding:17px 26px;font:bold 16px var(--mono);touch-action:none;user-select:none}.touch-controls .touch-fire{margin-left:auto;background:var(--yellow);color:#141609;flex:1;max-width:50%}.keyboard-hint{visibility:hidden}.cabinet:fullscreen .touch-controls{display:flex;width:min(100%,120vh)}.cabinet:fullscreen .screen{max-height:calc(100dvh - 215px)}}
@media(prefers-reduced-motion:reduce){.scanlines{display:none}.start-button{transition:none}}

.radio-roster{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:20px}.radio-roster img{width:100%;height:39px;padding:4px;object-fit:contain;background:#f3f4ef;border-radius:3px}

.boss-panel{position:absolute;top:15px;left:25%;width:50%;z-index:1;pointer-events:none;font:10px var(--mono);color:#ff739f}.boss-panel[hidden]{display:none}.boss-panel>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}.boss-panel strong{color:#fff1cd;font-size:10px}.boss-health{height:7px;background:#331b29;border:1px solid #8b3b54}.boss-health i{display:block;height:100%;width:100%;background:#ff418b;transition:width .1s linear}@media(max-width:480px){.boss-panel{top:10px;left:15%;width:70%;font-size:7px}.boss-panel strong{font-size:7px}}

.boss-demo-button{display:block;margin:17px auto 0;padding:7px 15px;border:1px solid #ff418b88;background:#190b16;color:#ff87b6;font:bold 10px var(--mono);letter-spacing:1px}.boss-demo-button:hover{background:#3b1230;border-color:#ff418b}@media(max-width:480px){.boss-demo-button{margin-top:10px;padding:5px 10px;font-size:8px}.keyboard-hint{margin-top:8px}}
/* iOS long presses on game controls must stay game input, not text selection. */
.touch-controls,.touch-controls *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}

.ship-choice{display:flex;align-items:center;justify-content:center;gap:12px;margin:10px auto 14px}.ship-choice[hidden]{display:none}.ship-choice img{width:64px;height:64px;object-fit:contain}.ship-choice label{font:9px var(--mono);color:var(--yellow);text-align:left}.ship-choice select{display:block;margin-top:6px;max-width:210px;width:100%;padding:9px;background:#141b24;color:#fff;border:1px solid #69663d;border-radius:4px;font:13px var(--mono)}
@media(max-width:600px){.overlay-content{padding:8px}.overlay h2{font-size:32px;margin:8px 0}.overlay p{margin-bottom:6px;font-size:10px}.ship-choice{margin:5px auto 8px;gap:7px}.ship-choice img{width:40px;height:40px}.ship-choice select{padding:5px;font-size:11px;margin-top:3px}.ship-choice label{font-size:8px}.start-button{padding:10px 20px}.keyboard-hint{display:none}.boss-demo-button{margin-top:7px;padding:6px 12px}}

@media(max-width:600px){.overlay .signal-label,.overlay #overlay-description{display:none}.overlay h2{font-size:26px;line-height:1;margin:3px 0}.ship-choice{margin:3px auto 6px}.ship-choice img{width:36px;height:36px}.overlay .start-button{padding:8px 16px;font-size:11px;min-width:175px}.overlay .boss-demo-button{padding:4px 10px;margin-top:5px;font-size:8px}}

/* Phone-only cabinet: use the available viewport for the game and controls. */
@media (pointer:coarse) and (max-width:600px), (pointer:coarse) and (max-width:1100px) and (max-height:600px){
  body{background:#020406}
  .sr-only{top:0;left:0}
  .masthead,.page-heading,.sidebar,.bottom-strip,.site-footer{display:none}
  .site-shell{max-width:none;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);min-height:100svh;min-height:100dvh;display:flex;align-items:center;justify-content:center}
  main{width:100%}
  .arcade-layout{display:block}
  .cabinet{width:100%;border:0;box-shadow:none}
  .hud{height:48px;padding:0 10px;gap:6px}
  .hud-label{font-size:8px;margin-bottom:4px;letter-spacing:1px}
  .hud strong{font-size:17px}
  .lives-block strong{font-size:13px}
  .cabinet-footer{height:40px;padding:0 10px}
  .cabinet-footer>span{font-size:8px}
  .cabinet-footer button{min-width:40px;min-height:40px;padding:8px}
  .cabinet-footer>div{gap:2px}
  .touch-controls{display:flex;padding:8px;gap:12px}
  .touch-controls button{flex:1;min-height:58px;padding:12px;font-size:23px}
  .touch-controls .touch-fire{display:none}
  .screen{aspect-ratio:3/2}
}
@media (pointer:coarse) and (max-width:1100px) and (max-height:600px) and (orientation:landscape){
  .cabinet{position:relative;width:min(calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 100px),calc((100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 72px)*1.5));margin:auto;padding:0}
  .hud{height:36px}
  .hud-label{font-size:7px;margin-bottom:1px}
  .hud strong{font-size:14px}
  .cabinet-footer{height:36px}
  .cabinet-footer button{min-height:36px;padding:6px}
  .touch-controls{position:absolute;inset:36px -50px 36px;border:0;padding:0;justify-content:space-between;align-items:center;pointer-events:none}
  .touch-controls button{flex:none;width:46px;min-height:90px;pointer-events:auto;padding:6px;font-size:23px;border-radius:6px}
  .overlay .signal-label,.overlay #overlay-description,.keyboard-hint{display:none}
  .overlay-content{padding:5px}
  .overlay h2{font-size:24px;line-height:1;margin:3px 0}
  .ship-choice{margin:3px auto 5px;gap:7px}
  .ship-choice img{width:32px;height:32px}
  .ship-choice select{padding:4px;font-size:11px;margin-top:2px}
  .ship-choice label{font-size:8px}
  .overlay .start-button{padding:7px 16px;min-width:175px;font-size:11px}
  .overlay .boss-demo-button{margin-top:5px;padding:4px 10px;font-size:8px}
}

/* Keep the victory text readable over the cinematic boss explosion. */
.wave-announcement{z-index:2;text-shadow:0 2px 7px #000,0 0 22px #000,0 0 4px #000}
.wave-announcement small{color:#fff8db;text-shadow:0 2px 4px #000}
