/* VECTOR STRIKE v3 — interface design system.
   One language for title, stage select, HUD, boss gauge, power gauge, pause,
   results and the debug panel: neutral ink on the scene, a cyan system colour
   for the player, a warm danger colour for bosses, and a quiet per-stage accent
   (body[data-stage]). No large panels cover play; labels are short and mono. */

:root{
  color-scheme:dark;
  --ink:#e6eff5;--ink-2:#b3c4d0;--muted:#7f94a5;--faint:#4a5f6e;
  --line:rgba(164,206,226,.17);--line-strong:rgba(176,222,238,.36);
  --glass:rgba(5,13,22,.66);--slate:rgba(6,14,24,.92);
  --system:#6fe6ee;--system-deep:#0a2a33;
  --accent:#6fe6ee;
  --warn:#ffb45f;--danger:#ff6557;--ok:#7be6b5;
  --font:"Inter","Helvetica Neue","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  --mono:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;
  --edge:clamp(16px,3vw,40px);
  --cut:9px;
  --ease:cubic-bezier(.2,.75,.2,1);
  --shadow-text:0 1px 3px rgba(2,8,14,.85);
}
body[data-stage="1"]{--accent:#f1b66c}
body[data-stage="2"]{--accent:#63d7ec}
body[data-stage="3"]{--accent:#b996ff}
body[data-stage="4"]{--accent:#ff8f52}
body[data-stage="5"]{--accent:#a9c0ff}
body[data-stage="6"]{--accent:#ff6573}

*{box-sizing:border-box}
body{margin:0;background:#060d18;color:var(--ink);font-family:var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;font:inherit;color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
[hidden]{display:none!important}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* ---------------------------------------------------------------- stage -- */
#flight{height:100svh;min-height:300px;position:relative;isolation:isolate}
#game-canvas{display:block;width:100%;height:100%;position:absolute;inset:0;transition:filter .9s ease}
.vignette{position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(90deg,rgba(4,10,19,.82),rgba(4,10,19,.35) 42%,transparent 70%),linear-gradient(0deg,rgba(4,10,19,.7),transparent 20%)}
.playing .vignette{background:linear-gradient(0deg,rgba(4,11,19,.28),transparent 12%,transparent 88%,rgba(4,11,19,.22))}
.scanlines{display:none}

/* ---------------------------------------------------------- shared atoms -- */
.label,#hud small,.result small,.encounter-card small{font:600 9px/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
kbd{font:600 9px/1 var(--mono);color:var(--ink);border:1px solid var(--line-strong);border-bottom-width:2px;padding:4px 6px;margin-right:6px;white-space:nowrap;border-radius:2px}

.primary,.secondary{display:flex;align-items:center;justify-content:space-between;gap:var(--s6);border:0;font-weight:700;letter-spacing:.16em;text-decoration:none;transition:background .18s var(--ease),color .18s,transform .18s var(--ease),box-shadow .18s}
.primary{min-width:240px;padding:16px 22px;background:var(--system);color:#062129;font-size:13px;clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%)}
.primary span{font-size:20px;line-height:1;transition:transform .18s var(--ease)}
.primary:hover{background:#a6fbff;transform:translateY(-1px)}.primary:hover span{transform:translate(2px,-2px)}
.primary:active{transform:translateY(0)}
.primary:disabled{cursor:wait;opacity:.5;transform:none}
.secondary{min-width:240px;padding:12px 22px;margin:0 0 var(--s2);background:rgba(8,20,31,.55);color:var(--ink-2);border:1px solid var(--line-strong);font-size:12px;letter-spacing:.12em}
.secondary:hover{color:#fff;border-color:var(--system);background:rgba(12,34,46,.7)}
.enter{display:block;margin-top:var(--s3);font:600 9px/1.4 var(--mono);letter-spacing:.2em;color:var(--muted)}

/* -------------------------------------------------------------- top bar -- */
.top{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:22px var(--edge);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:6px;color:var(--ink);text-decoration:none;font-size:13px;font-weight:800;letter-spacing:.24em}
.brand>span:not(.brand-icon){font-weight:300}
.brand-icon{color:var(--system);font-size:26px;margin-right:6px;line-height:1}
.brand small{margin-left:var(--s5);padding-left:var(--s5);border-left:1px solid var(--line);font:600 9px/1 var(--mono);letter-spacing:.22em;color:var(--accent)}
.top-right{display:flex;align-items:center;gap:var(--s3)}
.top button{min-height:30px;padding:0 12px;background:rgba(5,15,26,.55);border:1px solid var(--line-strong);color:var(--ink-2);font:600 9px/1 var(--mono);letter-spacing:.14em;transition:border-color .15s,color .15s}
.top button:hover{border-color:var(--system);color:#fff}
.top button[aria-pressed="false"]{color:var(--muted);border-color:var(--line)}
.playing .top{padding:10px var(--edge);border-bottom:0;filter:drop-shadow(var(--shadow-text))}
.playing .brand{font-size:10px;letter-spacing:.2em}.playing .brand small,.playing .brand-icon{display:none}
.playing .top button{min-height:24px;padding:0 9px;font-size:8px}

/* ---------------------------------------------------------------- title -- */
.overlay{position:absolute;z-index:3;top:50%;left:calc(var(--edge) + 4%);transform:translateY(-46%);width:min(640px,calc(100vw - 2 * var(--edge)))}
.overlay>*{animation:rise .6s var(--ease) both}
.overlay>:nth-child(2){animation-delay:.05s}.overlay>:nth-child(3){animation-delay:.1s}.overlay>:nth-child(4){animation-delay:.14s}.overlay>:nth-child(5){animation-delay:.18s}.overlay>:nth-child(n+6){animation-delay:.22s}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.intro-mark{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s5);font:600 10px/1 var(--mono);letter-spacing:.24em;color:var(--accent)}
.intro-mark::before{content:"";width:22px;height:1px;background:currentColor}
h1{margin:0;font-size:clamp(60px,8.4vw,126px);line-height:.86;font-weight:850;font-style:italic;letter-spacing:-.055em;text-shadow:0 6px 30px rgba(3,10,18,.45)}
h1 span{color:var(--system)}
.title-line{width:40px;height:3px;margin:var(--s5) 0 var(--s4);background:var(--accent)}
.lead{margin:0 0 var(--s5);font-size:17px;font-weight:500;letter-spacing:.14em;text-shadow:var(--shadow-text)}

/* Stage select: a keyboard-operable row of stage chips (← → move, ENTER launches). */
.stage-select{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin:0 0 var(--s4)}
.stage-select button{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:58px;padding:9px 10px 8px;border:1px solid var(--line-strong);background:rgba(5,14,24,.55);color:var(--ink-2);text-align:left;clip-path:polygon(0 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%);transition:border-color .16s,background .16s,color .16s,transform .16s var(--ease)}
.stage-select button b{font:700 17px/1 var(--mono);letter-spacing:.02em;color:var(--ink)}
.stage-select button span{font:600 8.5px/1 var(--mono);letter-spacing:.16em}
.stage-select button::before{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--stage-color,var(--system));transform:scaleX(0);transform-origin:left;transition:transform .2s var(--ease)}
.stage-select button:hover:not(:disabled){border-color:var(--stage-color,var(--system));color:#fff;transform:translateY(-1px)}
.stage-select button[aria-pressed="true"]{border-color:var(--stage-color,var(--system));background:linear-gradient(180deg,rgba(12,30,42,.82),rgba(6,16,26,.82));color:#fff}
.stage-select button[aria-pressed="true"]::before{transform:scaleX(1)}
.stage-select button[aria-pressed="true"] b{color:var(--stage-color,var(--system))}
.stage-select button.cleared::after{content:"";position:absolute;top:9px;right:9px;width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px var(--ok)}
.stage-select button:disabled{cursor:not-allowed;background:rgba(5,12,20,.5);border-style:dashed;border-color:rgba(150,180,195,.28);color:#71869a}
.stage-select button:disabled b{color:#71869a}
.stage-select button:disabled::after{content:"LOCK";position:absolute;top:10px;right:9px;font:700 7px/1 var(--mono);letter-spacing:.14em;color:#71869a}
#stage-select-1{--stage-color:#f1b66c}#stage-select-2{--stage-color:#63d7ec}#stage-select-3{--stage-color:#b996ff}
#stage-select-4{--stage-color:#ff8f52}#stage-select-5{--stage-color:#a9c0ff}#stage-select-6{--stage-color:#ff6573}
.launch-mode{margin:0 0 var(--s4);font-size:12px;letter-spacing:.04em;color:var(--ink-2);text-shadow:var(--shadow-text)}

/* ---------------------------------------------------------------- footer -- */
footer{position:absolute;z-index:4;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:var(--s4);padding:16px var(--edge);border-top:1px solid var(--line);background:linear-gradient(0deg,rgba(4,11,20,.7),rgba(4,11,20,.25))}
.controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s5);font-size:10px;color:var(--ink-2)}
.playing footer{display:none}

/* ------------------------------------------------------------------ HUD -- */
#hud{position:absolute;z-index:3;top:44px;left:var(--edge);right:var(--edge);display:grid;grid-template-columns:1fr auto 1fr;align-items:start;pointer-events:none;filter:drop-shadow(var(--shadow-text))}
.hull{display:flex;flex-direction:column;gap:6px}
#health{display:flex;gap:4px;height:10px}
#health .pip{width:22px;height:8px;border:1px solid rgba(111,230,238,.55);background:var(--system);clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%);transition:background .2s,border-color .2s,opacity .2s}
#health .pip.off{background:transparent;opacity:.45}
#flight[data-hp="1"] #health .pip:not(.off){background:var(--danger);border-color:var(--danger);animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45}}
#shield-state{font:700 8px/1 var(--mono);letter-spacing:.2em;color:var(--ok)}
.mission{min-width:160px;text-align:center}
.mission small{color:var(--accent)!important}
.progress{position:relative;height:2px;margin-top:8px;background:rgba(160,200,220,.2)}
.progress i{display:block;height:100%;width:0;background:var(--accent);transition:width .25s linear;box-shadow:0 0 6px var(--accent)}
.score{justify-self:end;text-align:right}
.score b{display:block;font:300 22px/1 var(--mono);letter-spacing:.12em;font-variant-numeric:tabular-nums}
.score span{display:block;margin-top:5px;font:600 8.5px/1 var(--mono);letter-spacing:.14em;color:var(--muted)}
.playing .score small{display:none}

/* Aim reticle and player-only collision guide. */
#aim{position:absolute;z-index:3;width:26px;height:26px;transform:translate(-50%,-50%);border:1px solid rgba(111,230,238,.42);border-radius:50%;pointer-events:none}
#aim:before,#aim:after{content:"";position:absolute;background:rgba(160,255,255,.75)}
#aim:before{width:7px;height:1px;left:9px;top:12px}#aim:after{width:1px;height:7px;left:12px;top:9px}
#combat-overlays{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
#incoming-warnings{position:absolute;inset:0}
.incoming{position:absolute;width:40px;height:40px;transform:translate(-50%,-50%);color:var(--warn)}
.arrival-ring{position:absolute;inset:0;border:2px solid currentColor;border-radius:50%;box-shadow:0 0 8px rgba(255,160,70,.35)}
.arrival-center{position:absolute;left:17px;top:17px;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.incoming.imminent{color:var(--danger)}
#damage-edges{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(255,74,50,.22) 72%,rgba(255,50,40,.55) 100%)}
#player-core{position:absolute;transform:translate(-50%,-50%);border:1px solid rgba(220,255,255,.75);border-radius:50%;background:rgba(140,239,255,.08);box-shadow:0 0 7px rgba(111,230,238,.35)}
#player-core:after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;transform:translate(-50%,-50%);border-radius:50%;background:#efffff}
#player-core.shielded{border-color:var(--ok);background:rgba(123,230,181,.14);box-shadow:0 0 12px rgba(123,230,181,.4)}

/* ------------------------------------------------------------ boss gauge -- */
#boss-hud{position:absolute;z-index:4;top:92px;left:50%;transform:translateX(-50%);width:min(400px,56vw);pointer-events:none;filter:drop-shadow(var(--shadow-text));animation:gauge-in .35s var(--ease) both}
@keyframes gauge-in{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%,0)}}
#boss-hud>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:7px}
#boss-name{font:700 11px/1 var(--font);letter-spacing:.2em;color:#ffe4cf}
#boss-status{font:600 9px/1 var(--mono);letter-spacing:.08em;color:#ffb991;white-space:nowrap}
#boss-hud[data-open="true"] #boss-status{color:var(--accent);text-shadow:0 0 8px var(--accent)}
#boss-health{position:relative;height:6px;background:rgba(40,16,14,.65);border:1px solid rgba(255,150,110,.35);clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
#boss-health::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),rgba(6,12,20,.6) calc(10% - 1px) 10%);pointer-events:none}
#boss-trail{position:absolute;inset:0 auto 0 0;background:#ffe1ad}
#boss-fill{position:relative;display:block;height:100%;background:linear-gradient(90deg,#ff7a4a,#ffc177);transition:width .1s}
#boss-hud[data-open="true"] #boss-fill{background:linear-gradient(90deg,#ff7a4a,#ffd9a0);box-shadow:0 0 8px rgba(255,190,120,.55)}
#boss-hud.enraged #boss-fill{background:linear-gradient(90deg,#ff3b3b,#ff7a64)}
#boss-hud.enraged #boss-name{color:#ffb0a4}

/* ----------------------------------------------------------- power gauge -- */
#power-panel{position:absolute;z-index:4;bottom:16px;left:50%;transform:translateX(-50%);width:min(500px,calc(100vw - 2 * var(--edge)));display:flex;gap:5px;align-items:stretch;filter:drop-shadow(0 2px 6px rgba(2,8,14,.5))}
.power-slots{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;flex:1;min-width:0}
.power-slot{position:relative;display:flex;align-items:center;justify-content:center;gap:4px;height:24px;padding:0 4px;min-width:0;border:1px solid rgba(120,160,178,.42);background:rgba(5,14,24,.78);clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);transition:background .12s,border-color .12s}
.power-slot b{font:700 8.5px/1 var(--mono);letter-spacing:.06em;color:var(--ink-2);overflow:hidden;text-overflow:clip;white-space:nowrap}
.power-slot>span{font:700 8px/1 var(--mono);color:var(--system)}
.power-slot.selected{border-color:var(--warn);background:linear-gradient(180deg,#7a4c20,#4c2f15);box-shadow:inset 0 -2px var(--warn)}
.power-slot.selected b,.power-slot.selected>span{color:#ffe6b8}
.power-slot.unavailable:not(.selected){opacity:.5}
.power-slot.unavailable.selected{border-style:dashed}
.power-slot.charged{animation:slot-charge .42s ease-out}
@keyframes slot-charge{0%{background:#ffb347;box-shadow:0 0 14px rgba(255,179,71,.7),inset 0 -2px #fff2c9}100%{box-shadow:inset 0 -2px #ffca73}}
#activate-power{width:30px;padding:0;border:1px solid var(--system);background:var(--system);color:#062129;font:800 10px/1 var(--mono);clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
#activate-power:disabled{border-color:rgba(90,120,135,.5);color:var(--faint);background:rgba(5,14,24,.78);cursor:default}

/* ---------------------------------------------- encounter card and toast -- */
.encounter-card{position:absolute;z-index:5;top:23%;left:50%;transform:translateX(-50%);width:min(620px,86vw);text-align:center;pointer-events:none;color:#dcf7ff;text-shadow:0 2px 14px rgba(4,12,20,.9);transition:opacity .12s}
.encounter-card small{color:var(--accent);letter-spacing:.42em;margin-bottom:12px}
.encounter-card strong{display:block;font-size:clamp(17px,2.4vw,28px);font-weight:600;letter-spacing:.3em;animation:track .9s var(--ease) both}
.encounter-card i{display:block;width:62%;height:1px;margin:14px auto 0;background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.encounter-card[data-kind=boss]{color:#ffe0cc}.encounter-card[data-kind=boss] small{color:var(--danger)}
.encounter-card[data-kind=boss] i{background:linear-gradient(90deg,transparent,var(--danger),transparent)}
@keyframes track{from{letter-spacing:.6em;opacity:0}to{letter-spacing:.3em;opacity:1}}
.toast{position:absolute;z-index:5;bottom:58px;left:50%;transform:translateX(-50%);font:700 11px/1 var(--mono);letter-spacing:.2em;color:var(--system);text-shadow:0 0 14px rgba(30,210,220,.7),var(--shadow-text);text-align:center;white-space:nowrap;pointer-events:none}

/* ---------------------------------------------------- pause and results -- */
.result,.pause-panel{position:absolute;z-index:6;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 2 * var(--edge)));max-height:calc(100svh - 32px);overflow-y:auto;padding:30px 32px 28px;background:var(--slate);border:1px solid var(--line-strong);box-shadow:0 30px 90px rgba(0,0,0,.55);clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px));animation:slate .28s var(--ease) both}
.result::before,.pause-panel::before{content:"";position:absolute;top:0;left:0;width:64px;height:2px;background:var(--accent)}
@keyframes slate{from{opacity:0;transform:translate(-50%,-47%)}to{opacity:1;transform:translate(-50%,-50%)}}
.result h2,.pause-panel h2{margin:12px 0 10px;font-size:32px;font-weight:800;font-style:italic;letter-spacing:-.02em;color:var(--ink)}
.result p,.pause-panel p{margin:0 0 var(--s3);font-size:12px;line-height:1.8;color:var(--ink-2)}
.result-numbers{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4);margin:var(--s4) 0;padding:var(--s4) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.result-numbers b{display:block;margin-top:8px;font:300 26px/1 var(--mono);letter-spacing:.06em;font-variant-numeric:tabular-nums}
#result-detail{margin-bottom:var(--s5);font:500 11px/1.8 var(--mono);color:var(--ink-2)}
.flight-rating{display:flex;align-items:center;gap:20px;padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:12px;grid-column:1}
#flight-rank{font:500 52px/1 var(--mono);color:var(--accent,#60e5e7)}
.flight-rating small,.flight-rating strong,.flight-rating span{display:block}
.flight-rating small{font:500 10px/1.6 var(--mono);letter-spacing:.12em;color:var(--ink-2)}
.flight-rating strong{font:400 24px/1.5 var(--mono);font-variant-numeric:tabular-nums}
.flight-rating span,#replay-goal{font:500 10px/1.8 var(--mono);color:var(--ink-2)}
#replay-goal{white-space:pre-line;margin-bottom:16px}
#chain{font:500 11px/1.8 var(--mono);letter-spacing:.03em;color:var(--accent,#60e5e7);background:linear-gradient(currentColor,currentColor) left bottom / var(--chain-life,0%) 1px no-repeat}
#chain[hidden]{display:none}
.result .primary,.pause-panel .primary,.result .secondary,.pause-panel .secondary{width:100%;min-width:0}
.result .primary+.primary{margin-top:var(--s2)}
#retry-boss{margin-bottom:var(--s2)}
#retry-boss:not([hidden])+#retry{background:transparent;color:var(--ink-2);border:1px solid var(--line-strong);clip-path:none;padding:12px 22px;font-size:12px}
#result-title-button,#pause-title-button{margin-top:var(--s2)}
.pause-controls{font:500 11px/1.9 var(--mono)!important}
.preferences{display:grid;gap:12px;margin:var(--s4) 0}
.preferences label{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);font-size:12px;color:var(--ink-2)}
.preferences input{width:min(180px,55%);accent-color:var(--system)}
.pad-controls{font-size:10px!important;color:var(--muted)!important;line-height:1.6}

/* ---------------------------------------------------------------- debug -- */
#debug-panel{position:absolute;z-index:8;right:var(--s4);bottom:56px;width:268px;padding:10px;background:rgba(5,13,22,.86);border:1px solid rgba(111,230,238,.35);box-shadow:0 8px 26px rgba(0,0,0,.45);color:var(--ink-2);font:10px var(--mono);pointer-events:auto;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%)}
.debug-heading,.debug-row{display:flex;align-items:center;gap:5px}
.debug-heading{justify-content:space-between;margin-bottom:8px;color:var(--system)}
.debug-heading b{letter-spacing:.14em}
.debug-row+.debug-row{margin-top:5px}
.debug-row>span{min-width:40px;color:var(--muted);font-size:8.5px;letter-spacing:.1em}
#debug-panel button{min-height:23px;padding:3px 6px;border:1px solid rgba(90,130,145,.6);background:rgba(12,30,42,.9);color:var(--ink-2);font:10px var(--mono);white-space:nowrap;transition:border-color .12s,background .12s}
#debug-panel button:hover,#debug-panel button[aria-pressed=true]{border-color:var(--system);background:rgba(30,70,82,.95);color:#fff}
#debug-panel button:disabled{opacity:.35;cursor:default}
#debug-invincible{flex:1}

/* ---------------------------------------------------------------- fatal -- */
#fatal{position:absolute;z-index:10;top:50%;left:50%;transform:translate(-50%,-50%);width:min(480px,calc(100vw - 32px));padding:30px;background:var(--slate);border:1px solid #ef9865}
#fatal p{line-height:1.8;font-size:13px;color:var(--ink-2)}
#fatal button{margin-top:var(--s3);padding:10px 16px;border:1px solid #ef9865;background:transparent}

/* ------------------------------------------------ presentation beats ----- */
#flight::before,#flight::after{content:"";position:absolute;left:0;right:0;height:0;background:#000;z-index:2;pointer-events:none;transition:height .45s ease}
#flight::before{top:0}#flight::after{bottom:0}
body[data-cine="on"] #flight::before,body[data-cine="on"] #flight::after{height:6.5vh}
body[data-cine="over"] #game-canvas{filter:saturate(.35) brightness(.8)}

/* ----------------------------------------------------------- responsive -- */
@media (max-height:760px){.overlay{transform:translateY(-44%)}h1{font-size:clamp(56px,7.4vw,96px)}.intro-mark{margin-bottom:var(--s4)}.title-line{margin:var(--s4) 0 var(--s3)}.lead{margin-bottom:var(--s4)}}
@media (max-width:850px){
  .brand small{display:none}
  .top{padding:16px var(--edge)}
  .overlay{left:var(--edge)}
  .stage-select{grid-template-columns:repeat(3,minmax(0,1fr))}
  footer{padding:12px var(--edge)}.controls{gap:var(--s2) var(--s3);font-size:9px}
  #hud{top:40px}.mission{min-width:110px}.score b{font-size:18px}
  #boss-hud{top:84px;width:min(360px,64vw)}
}
@media (max-width:600px){
  h1{font-size:clamp(46px,14vw,72px)}
  .lead{font-size:14px;letter-spacing:.08em}
  .stage-select button{min-height:50px;padding:8px}
  .stage-select button b{font-size:15px}
  .primary,.secondary{width:100%;min-width:0}
  footer,.enter{display:none}
  #hud{grid-template-columns:auto 1fr auto;gap:var(--s3)}#health .pip{width:16px}
  .power-slot{padding:0 2px;gap:2px}.power-slot b{font-size:7.5px;letter-spacing:0}.power-slot>span{font-size:7px}
  #boss-hud{width:calc(100vw - 2 * var(--edge))}
  #boss-hud>div:first-child{flex-wrap:wrap;gap:4px var(--s3)}
  .result,.pause-panel{padding:24px 20px 20px}.result h2,.pause-panel h2{font-size:26px}
  #debug-panel{right:8px;bottom:48px;width:244px;padding:7px}#debug-panel button{padding:2px 4px;font-size:9px}
}
@media (max-width:380px){.stage-select{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-select button{min-height:44px}}
@media (max-height:580px){
  h1{font-size:50px}.intro-mark{display:none}.title-line{margin:var(--s3) 0}.lead{font-size:14px;margin-bottom:var(--s3)}
  .stage-select button{min-height:40px;padding:6px 8px;gap:3px}.stage-select button b{font-size:13px}
  .primary{padding:11px 18px}.top{padding:10px var(--edge)}
  #hud{top:34px}#boss-hud{top:70px}#power-panel{bottom:10px}.toast{bottom:46px}
  .result-numbers{padding:var(--s2) 0;margin:var(--s2) 0}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Clipped controls cannot show an outline: their focus ring is drawn inside. */
.stage-select button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--stage-color,var(--system))}
.primary:focus-visible{outline:none;box-shadow:inset 0 0 0 2px #062129,inset 0 0 0 4px #bffcff}
#activate-power:focus-visible{outline:none;box-shadow:inset 0 0 0 2px #062129}
#next-stage::after{content:"↗";font-size:20px;line-height:1}
#next-stage:not([hidden])~#retry{background:transparent;color:var(--ink-2);border:1px solid var(--line-strong);clip-path:none;padding:12px 22px;font-size:12px}

/* Modals sit above the opt-in debug panel. */
.result,.pause-panel{z-index:9}

/* Landscape phones and other short screens: two-column slates, one row of stage chips. */
@media (max-height:480px){
  .overlay{width:min(600px,64vw)}
  .stage-select{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
  .stage-select button{min-height:38px;padding:5px 6px}.stage-select button span{font-size:7px;letter-spacing:.1em}
  .stage-select button:disabled::after{display:none}
  .launch-mode{margin-bottom:var(--s2)}
  #debug-panel{transform:scale(.8);transform-origin:bottom right;bottom:44px}
  .pause-panel,.result{width:min(700px,calc(100vw - 24px));display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:row dense;column-gap:28px;align-items:start;padding:18px 24px}
  .pause-panel h2,.result h2{margin:6px 0 8px;font-size:24px}
  .pause-panel>h2,.pause-panel>.pause-controls,.pause-panel>.pad-controls{grid-column:1}
  .pause-panel>.preferences{grid-column:2;grid-row:1 / span 2;margin:4px 0 8px}
  .pause-panel>button{grid-column:2}
  .result>small,.result>h2,.result>p,.result>.result-numbers{grid-column:1}
  .result>button,.result>.enter{grid-column:2}
  .result-numbers{margin:var(--s2) 0;padding:var(--s2) 0}.result-numbers b{font-size:20px}
  #result-detail{margin-bottom:0}
}
