/* Story screens use a working harbor chart, measured type and full-width rules. */
.archive-open{margin-left:auto;display:flex;align-items:center;gap:12px;border:0;border-bottom:1px solid #78897f;background:none;color:#d5ddcf;padding:10px 0;font-size:10px;letter-spacing:.12em;min-height:44px}.archive-open span{font-size:10px;letter-spacing:.04em}.title-header .edition-note{display:none}
#briefingScreen{z-index:35;background:linear-gradient(115deg,rgba(10,19,22,.98),rgba(16,28,29,.92));padding:24px max(26px,calc((100vw - 1240px)/2));overflow:auto;display:block;color:#e7e6d5;touch-action:pan-y}
#briefingScreen.hidden{display:none}.briefing-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #53625a;padding-bottom:14px;gap:18px}.briefing-header>span{font-size:10px;letter-spacing:.16em;color:#a8b6a7}.briefing-header button,#archiveClose{min-height:44px;padding:8px 14px;border:1px solid #58665e;background:transparent;color:#cbd6c9;font-size:11px}
.briefing-layout{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center;min-height:calc(100vh - 125px);padding:35px 0}.briefing-chart{min-width:0}.chart-heading{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #57685e;padding:0 0 14px;font-size:10px;letter-spacing:.08em;color:#d4d9c7}.chart-heading span:last-child{font-size:8px;color:#8eaa9d}
#briefingMap{margin-top:18px;border:1px solid #53645c;position:relative;background:#15272a;color:#91ac99;overflow:hidden}#briefingMap svg{display:block;width:100%;height:auto;max-height:54vh}.map-architecture{stroke:#91a89a;stroke-width:1.3;fill:none;opacity:.6}.map-architecture .map-land{fill:#263d3c;stroke:#95a591}.map-architecture .map-water{stroke:#617f86}.map-ship{fill:#5e6958;stroke:#d1c8a6}.map-route-ghost{fill:none;stroke:#dfb07b;stroke-opacity:.17;stroke-width:18}.map-route{fill:none;stroke:#f3b674;stroke-width:3;stroke-dasharray:370;stroke-dashoffset:370;animation:routeReveal 1.8s ease-out .1s forwards}.map-nodes{fill:#f5c087;stroke:#17282c;stroke-width:2}.map-nodes text{fill:#dce5d4;stroke:none;font-size:10px;font-family:var(--body);letter-spacing:.07em}.map-coord{fill:#98b09d;font-size:9px;letter-spacing:.08em}
#briefingRoute{display:flex;list-style:none;counter-reset:route;gap:8px;padding:18px 0 0;margin:0}#briefingRoute li{flex:1;counter-increment:route;font-size:11px;line-height:1.6;color:#c2ceb9}#briefingRoute li:before{content:'0' counter(route);display:block;color:#ddaf7e;font-size:9px;letter-spacing:.1em;margin-bottom:4px}#briefingLocation{margin-top:22px;font-size:10px;letter-spacing:.16em;color:#859b8e}
.briefing-copy>.eyebrow{font-size:9px;letter-spacing:.15em;color:#d7af80}.briefing-copy h2{font-weight:600;font-size:clamp(26px,3vw,42px);letter-spacing:.06em;line-height:1.4;margin:14px 0 18px}#briefingSummary{font-size:13px;line-height:1.95;color:#bfcabd}.briefing-objective{border-top:1px solid #627365;border-bottom:1px solid #45574e;margin:22px 0 12px;padding:14px 0}.briefing-objective>span{display:block;font-size:8px;letter-spacing:.18em;color:#dcae7c;margin-bottom:8px}.briefing-objective>strong{font-size:15px;font-weight:550;line-height:1.7}#briefingStakes{font-size:11px;color:#95ad9e;line-height:1.8;margin-bottom:19px}
.radio-transcript .transcript-line{position:relative;padding:12px 0;border-bottom:1px solid rgba(168,188,161,.16)}
.transcript-line>.say{position:absolute;right:0;top:10px;width:34px;height:34px;border:1px solid rgba(231,235,223,.28);border-radius:0;background:rgba(13,21,23,.6);color:var(--ink);font-size:11px;cursor:pointer;transition:border-color .15s,color .15s}.transcript-line>.say:hover{border-color:var(--ink)}.transcript-line>.say.playing{border-color:var(--accent);color:var(--accent)}.transcript-line>.say.off{opacity:.4}.transcript-line:has(>.say){padding-right:46px}.transcript-line>span{display:block;font-size:9px;color:#e7b584;letter-spacing:.07em;margin-bottom:6px}.transcript-line>p{font-size:13px;line-height:1.85;color:#ced8c7;margin:0}.briefing-copy .btn{margin-top:23px;min-width:245px;justify-content:space-between}.briefing-copy .btn>span{font-size:9px;letter-spacing:.13em}.briefing-note{display:block;font-size:10px;color:#9bae9c;margin-top:12px;line-height:1.7}
#clearStory{margin:20px 0 8px;text-align:left;max-width:640px}#clearStory .transcript-line{padding:10px 0}#clearStory .transcript-line>p{font-size:12px}#clearScreen .result-shell{max-width:760px}
#archiveModal{display:none;position:fixed;inset:0;z-index:100;background:rgba(4,12,15,.87);padding:30px;align-items:center;justify-content:center;touch-action:pan-y}#archiveModal.show{display:flex;animation:archiveDim .3s ease-out both}
#archiveModal.closing{animation:archiveDimOut .24s ease-in both}
@keyframes archiveDim{from{background:rgba(4,12,15,0)}to{background:rgba(4,12,15,.87)}}
@keyframes archiveDimOut{from{background:rgba(4,12,15,.87)}to{background:rgba(4,12,15,0)}}
#archiveModal.show .archive-shell{animation:archiveIn .42s cubic-bezier(.2,.8,.2,1) both}
#archiveModal.closing .archive-shell{animation:archiveOut .22s ease-in both}
@keyframes archiveIn{0%{opacity:0;transform:translateY(16px) scale(.985);clip-path:inset(0 0 100% 0)}45%{opacity:1;clip-path:inset(0 0 0 0)}100%{opacity:1;transform:none;clip-path:inset(0 0 0 0)}}
@keyframes archiveOut{to{opacity:0;transform:translateY(10px) scale(.99);clip-path:inset(100% 0 0 0)}}
@media(prefers-reduced-motion:reduce){#archiveModal.show .archive-shell,#archiveModal.show,#archiveModal.closing,#archiveModal.closing .archive-shell{animation:none}}
.enemy-shot{margin:0 0 12px;border:1px solid #45594e;background:#0e181b;overflow:hidden;max-width:520px}
.enemy-shot img{display:block;width:100%;aspect-ratio:8/5;object-fit:cover}.archive-shell{display:flex;flex-direction:column;width:min(850px,100%);max-height:calc(100dvh - 60px);padding:26px 32px;background:#172427;border:1px solid #748174;color:#d9e0d0;box-shadow:0 20px 90px #050d1099}.archive-shell>header{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid #59695d;padding-bottom:17px}.archive-shell .eyebrow{font-size:8px}.archive-shell h2{font-size:22px;font-weight:500;letter-spacing:.1em;margin-top:7px}.archive-tabs{display:flex;gap:22px;padding:14px 0}.archive-tabs button{padding:11px 0;border:0;border-bottom:2px solid transparent;color:#8fa699;background:none;font-size:12px;min-height:44px}.archive-tabs button[aria-pressed=true]{color:#efc190;border-bottom-color:#efc190}#archiveContent{overflow-y:auto;overscroll-behavior:contain;padding:0 13px 20px 0;touch-action:pan-y}#archiveContent>h3{font-size:15px;color:#eee8cf;letter-spacing:.06em;margin:22px 0 8px}#archiveContent>h3:first-child{margin-top:10px}.archive-empty{padding:35px 0;font-size:13px;color:#a7bda8;line-height:2}.enemy-record{padding:18px 0;border-bottom:1px solid #45594e}.enemy-record h3{font-family:var(--disp);font-size:26px;font-weight:500;letter-spacing:.08em}.enemy-record>span{display:block;font-size:11px;color:#e5b88a;margin:5px 0 17px}.enemy-record>p{display:flex;gap:18px;font-size:13px;line-height:1.9;margin:10px 0}.enemy-record p>b{font-size:10px;font-weight:500;white-space:nowrap;min-width:66px;color:#90aa99;padding-top:3px}.enemy-record p>span{color:#c6d4c1}
/* Leave the reticle, threat shapes and the three touch actions unobstructed. */
#missionRadio{position:absolute;left:50%;top:auto;bottom:calc(28px + env(safe-area-inset-bottom,0px));transform:translate(-50%,4px);width:min(560px,calc(100vw - 630px));max-width:none;padding:10px 16px 11px;background:rgba(9,20,24,.83);border-top:1px solid rgba(193,213,189,.4);border-bottom:1px solid rgba(193,213,189,.2)}#missionRadio.on{transform:translate(-50%,0)}#missionRadio>span{font-size:10px;border:0;padding:0;color:#e9bd90;line-height:1.5}#missionRadio[data-speaker]:not([data-speaker=operator])>span{color:#e79b83}#missionRadio>p{font-size:14px;line-height:1.7;margin-top:4px;text-shadow:none}
@keyframes routeReveal{to{stroke-dashoffset:0}}
@media(max-width:1100px){.briefing-layout{gap:32px}.briefing-copy h2{font-size:29px}.briefing-copy>.eyebrow{font-size:8px}.briefing-header>span{font-size:9px}}
@media(max-width:700px){.archive-open{gap:8px;font-size:9px}.archive-open span{font-size:9px}.title-header{gap:9px}#briefingScreen{padding:12px 20px calc(24px + env(safe-area-inset-bottom,0px))}.briefing-header{padding-bottom:8px}.briefing-header>span{font-size:8px;letter-spacing:.08em}.briefing-header button{font-size:10px;padding:7px 9px}.briefing-layout{display:flex;flex-direction:column;align-items:stretch;padding:22px 0 0;gap:25px;min-height:0}.chart-heading{font-size:9px;padding-bottom:10px}.chart-heading span:last-child{font-size:6px}#briefingMap{margin-top:12px}#briefingMap svg{height:190px;width:100%;max-height:none}#briefingRoute{padding-top:12px;gap:9px}#briefingRoute li{font-size:10px}#briefingLocation{margin-top:11px;font-size:9px}.briefing-copy h2{font-size:27px;margin:9px 0 13px}#briefingSummary{font-size:12px;line-height:1.85}.briefing-objective{margin-top:17px;padding:12px 0}.briefing-objective strong{font-size:13px}.transcript-line>p{font-size:12px}.briefing-copy .btn{width:100%;margin-top:20px}#missionRadio{bottom:calc(229px + env(safe-area-inset-bottom,0px));top:auto;left:18px;width:calc(100vw - 36px);padding:8px 12px;transform:translateY(4px)}#missionRadio.on{transform:translateY(0)}#missionRadio>span{font-size:9px}#missionRadio>p{font-size:12px;line-height:1.7}#archiveModal{padding:12px}.archive-shell{padding:19px 19px;max-height:calc(100dvh - 24px)}.archive-shell h2{font-size:19px}.archive-shell>header{gap:10px}.archive-shell .eyebrow{font-size:6px}#archiveContent{padding-right:6px}.enemy-record>p{display:block}.enemy-record p>b{display:block;margin-bottom:4px}.enemy-record>p,.transcript-line>p{font-size:12px}#clearStory .transcript-line>p{font-size:11px}}
@media(max-height:530px) and (orientation:landscape){#briefingScreen{padding:10px 24px 24px}.briefing-layout{padding-top:18px;align-items:start;gap:24px;grid-template-columns:.9fr 1.1fr}.briefing-header{padding-bottom:7px}#briefingMap svg{max-height:none;height:230px}.briefing-copy h2{font-size:27px;margin-top:9px}#briefingRoute li{font-size:9px}.briefing-copy .btn{min-height:44px}#missionRadio{left:50%;top:auto;bottom:12px;width:calc(100vw - 435px);padding:6px 10px;transform:translate(-50%,4px)}#missionRadio.on{transform:translate(-50%,0)}#missionRadio>span{font-size:8px}#missionRadio>p{font-size:11px;line-height:1.65}.archive-shell{max-height:calc(100dvh - 24px);padding:14px 23px}#archiveModal{padding:12px}}
@media(prefers-reduced-motion:reduce){.map-route{animation:none;stroke-dashoffset:0}#missionRadio{transition:none}}
/* The briefing heading takes programmatic focus for screen readers (showBriefing); the browser's focus ring made it look selected (2026-09-14). */
#briefingTitle:focus,#briefingTitle:focus-visible{outline:none;box-shadow:none}
/* Operation area on the monitor (2026-09-14): a scan band sweeps down while the architecture draws as wire and then fills, nodes pop in, the route runs last. */
#briefingMap.map-in .map-architecture path,#briefingMap.map-in .map-architecture circle{stroke-dasharray:var(--len,1400);stroke-dashoffset:var(--len,1400);fill-opacity:0;animation:mapWire 1s ease-out calc(var(--i,0)*.12s) forwards,mapFill .5s ease-out calc(.9s + var(--i,0)*.1s) forwards}
@keyframes mapWire{to{stroke-dashoffset:0}}@keyframes mapFill{to{fill-opacity:1}}
#briefingMap.map-in .map-route-ghost{opacity:0;animation:mapGhost .4s ease-out 1.3s forwards}@keyframes mapGhost{to{opacity:1}}
#briefingMap.map-in .map-route{animation:routeReveal 1.6s ease-out 1.3s forwards}
#briefingMap.map-in .map-nodes circle{transform-box:fill-box;transform-origin:center;transform:scale(0);animation:mapNode .35s cubic-bezier(.2,.9,.2,1.4) forwards}
#briefingMap.map-in .map-nodes circle:nth-of-type(1){animation-delay:1.4s}#briefingMap.map-in .map-nodes circle:nth-of-type(2){animation-delay:1.62s}#briefingMap.map-in .map-nodes circle:nth-of-type(3){animation-delay:1.84s}#briefingMap.map-in .map-nodes circle:nth-of-type(4){animation-delay:2.06s}#briefingMap.map-in .map-nodes circle:nth-of-type(5){animation-delay:2.28s}#briefingMap.map-in .map-nodes circle:nth-of-type(6){animation-delay:2.5s}
#briefingMap.map-in .map-nodes text{opacity:0;animation:mapGhost .3s ease-out forwards}
#briefingMap.map-in .map-nodes text:nth-of-type(1){animation-delay:1.5s}#briefingMap.map-in .map-nodes text:nth-of-type(2){animation-delay:1.72s}#briefingMap.map-in .map-nodes text:nth-of-type(3){animation-delay:1.94s}#briefingMap.map-in .map-nodes text:nth-of-type(4){animation-delay:2.16s}#briefingMap.map-in .map-nodes text:nth-of-type(5){animation-delay:2.38s}#briefingMap.map-in .map-nodes text:nth-of-type(6){animation-delay:2.6s}
@keyframes mapNode{to{transform:scale(1)}}
/* after the draw the monitor keeps a quiet life of its own: faint scanlines, a slow sweep every 9 s, and a ping on the objective */
#briefingMap::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.09) 2px 3px);pointer-events:none;z-index:1}
#briefingMap.map-in::after{content:"";position:absolute;left:0;right:0;top:-12%;height:12%;background:linear-gradient(180deg,rgba(190,240,255,0),rgba(190,240,255,.14) 60%,rgba(190,240,255,.28));animation:mapScan 1.2s linear .05s forwards,mapSweep 9s linear 3s infinite;pointer-events:none;z-index:1}
@keyframes mapScan{to{top:100%}}@keyframes mapSweep{0%{top:-12%;opacity:.35}22%{top:100%;opacity:.35}100%{top:100%;opacity:.35}}
.map-ping{fill:none;stroke:#f5c087;stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
#briefingMap.map-in .map-ping{animation:mapPing 2.6s ease-out 3.2s infinite}
@keyframes mapPing{0%{transform:scale(.6);opacity:.75}55%{transform:scale(2.3);opacity:0}100%{transform:scale(2.3);opacity:0}}
@media(prefers-reduced-motion:reduce){#briefingMap.map-in .map-architecture path,#briefingMap.map-in .map-architecture circle,#briefingMap.map-in .map-route-ghost,#briefingMap.map-in .map-nodes circle,#briefingMap.map-in .map-nodes text{animation:none;stroke-dashoffset:0;fill-opacity:1;opacity:1;transform:none}#briefingMap.map-in::after,#briefingMap.map-in .map-ping{animation:none;display:none}}
@media(min-width:701px) and (max-width:1100px) and (min-height:531px){#missionRadio{width:min(450px,58vw);bottom:146px}}
.briefing-unit{display:flex;flex-direction:column;gap:7px;margin:20px 0 0;padding:15px 0;border-top:1px solid #45594e}.briefing-unit strong{font-family:var(--disp);font-size:23px;font-weight:500;letter-spacing:.09em;color:#d9ddcb}.briefing-unit>span{font-size:10px;color:#b6c5b0;line-height:1.7}
#briefingScreen{background:linear-gradient(100deg,rgba(8,18,22,.82),rgba(12,24,27,.72) 44%,rgba(10,19,22,.9) 72%)}
.cinematic.arrival #missionRadio.on{visibility:visible!important;bottom:11vh;width:min(620px,calc(100vw - 70px));left:50%;transform:translateX(-50%);background:rgba(8,19,23,.88);z-index:30}.cinematic.arrival #cineTitle{bottom:31%}.cinematic.arrival #cineTitle strong{font-size:clamp(29px,5vw,58px)}
@media(max-width:700px){.cinematic.arrival #missionRadio.on{width:calc(100vw - 36px);bottom:12vh}.cinematic.arrival #cineTitle{bottom:38%}.briefing-unit{margin-top:14px;padding:11px 0}.briefing-unit strong{font-size:20px}}
#missionRadio.receiving:before{content:'INCOMING';position:absolute;right:15px;top:11px;font-size:8px;letter-spacing:.16em;color:#e5c59f}#missionRadio.receiving>p{opacity:.25;transform:translateX(3px)}#missionRadio>p{transition:opacity .16s,transform .16s}#missionRadio[data-speaker=operator]>span{color:#e7bb8e}#missionRadio[data-speaker=mayor]>span{color:#eaa78c}
@media(prefers-reduced-motion:reduce){#missionRadio.receiving>p{transform:none}#missionRadio>p{transition:none}}
.briefing-unit{gap:0}.briefing-unit>strong{font-size:28px;line-height:1.05;font-weight:500;letter-spacing:.07em}.briefing-unit>.unit-ja{font-size:9px;letter-spacing:.17em;color:#d5b999;margin-top:7px}.briefing-unit>.unit-role{font-size:11px;line-height:1.8;color:#99ad9e;max-width:34em;margin-top:13px}.enemy-record>h3{line-height:1.15}.enemy-record>span{font-size:10px;letter-spacing:.12em;margin-top:7px}
@media(max-width:700px){.briefing-unit>strong{font-size:25px}.briefing-unit>.unit-ja{font-size:8px}.briefing-unit>.unit-role{font-size:10px;margin-top:10px}}
#overheatStatus{padding:8px 10px 9px;margin-bottom:9px;background:rgba(40,19,16,.91);border:1px solid rgba(240,135,93,.65);color:#ffbd8f;box-shadow:0 0 15px rgba(197,73,28,.08)}#overheatStatus.hidden{display:none}#overheatStatus>div{display:flex;align-items:center;justify-content:space-between;gap:12px}#overheatLabel{font-family:var(--disp);font-size:20px;letter-spacing:.09em;font-weight:500;line-height:1}#coolingTime{font-size:15px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums}#overheatHint{display:block;font-size:9px;line-height:1.5;margin-top:6px;color:#e6bda5;letter-spacing:.025em}#overheatStatus.ready{border-color:#9accb3;background:rgba(18,42,34,.92);color:#c5f0d4}#overheatStatus.ready #overheatHint{color:#bed3c1}.overheated #heatFill{background:repeating-linear-gradient(110deg,#ffad78 0 5px,#e16543 5px 10px)}
@media(max-width:700px){#overheatStatus{padding:7px 8px;margin-bottom:7px}#overheatLabel{font-size:15px;letter-spacing:.055em}#coolingTime{font-size:13px}#overheatHint{font-size:8px;letter-spacing:0;line-height:1.6}}
@media(max-height:530px) and (orientation:landscape){#overheatLabel{font-size:16px}#overheatHint{font-size:8px}#overheatStatus{padding:7px 9px;margin-bottom:6px}}
/* Briefing controls share layout space, including the wider SOUND OFF label. */
.briefing-header{padding-right:0;flex-wrap:wrap}
.briefing-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-left:auto}
.briefing-actions .system-controls{position:static;z-index:auto;flex-shrink:0}
.briefing-actions button{white-space:nowrap}
.briefing-actions #mute{height:44px}
@media(max-width:700px){.briefing-header{gap:10px}.briefing-header>span{flex-basis:100%;max-width:none}.briefing-header button{margin-right:0}}
#heatWarning{position:absolute;z-index:2;display:flex;align-items:center;gap:6px;padding:5px 8px;background:rgba(34,15,12,.89);border:1px solid #f29765;box-shadow:0 0 9px rgba(230,99,51,.14);color:#ffc192;transform:translate(-50%,-100%);visibility:hidden;pointer-events:none;white-space:nowrap;text-shadow:none}#heatWarning.on{visibility:visible}#heatWarning>svg{width:12px;height:12px;stroke:#ffb682;fill:none;stroke-width:1.4}#heatWarning>span{font-family:var(--body);font-size:10px;font-weight:700;letter-spacing:.09em}#heatWarning:after{content:'';position:absolute;left:50%;bottom:-4px;width:5px;height:5px;border-right:1px solid #f29765;border-bottom:1px solid #f29765;background:#29170f;transform:translateX(-50%) rotate(45deg)}
@media(max-width:700px){#heatWarning{padding:4px 6px;gap:4px}#heatWarning>span{font-size:9px}#heatWarning>svg{width:11px;height:11px}}
@media(min-width:701px) and (max-width:1100px) and (min-height:531px){#missionRadio{bottom:184px}}
@media(max-height:530px) and (orientation:landscape){#missionRadio{width:calc(100vw - 475px)}}

/* The same local warning gives boost priority; the heat gauge stays visible. */
#heatWarning.evade{border-color:#fc88a0;color:#fff0eb;background:rgba(41,15,25,.92);box-shadow:0 0 12px rgba(246,75,115,.25)}#heatWarning.evade>svg{stroke:#ffa4b6}.tbtn.evade-cue{border-color:#ffc2cb!important;box-shadow:0 0 0 2px rgba(255,126,154,.3),0 0 22px rgba(255,100,142,.35)!important}
/* Compact desktop: keep radio out of the floor telegraphs and beside armour. */
@media(min-width:701px) and (max-width:1100px) and (min-height:531px){#missionRadio,#missionRadio.on{left:auto;right:22px;bottom:18px;width:min(360px,calc(100vw - 365px));transform:none}#missionRadio>p{font-size:12px;line-height:1.7}}

/* Departure shares the familiar radio voice; the final exchange is outside the cockpit. */
#bossDefeatFade{position:fixed;inset:0;z-index:15;pointer-events:none;background:#fff6e7;opacity:0;visibility:hidden;transition:none;mix-blend-mode:normal}
.cinematic.outro #missionRadio.on{visibility:visible!important;left:50%;right:auto;bottom:12vh;width:min(650px,calc(100vw - 48px));transform:translateX(-50%);padding:11px 17px;background:rgba(8,16,19,.88);border-color:rgba(213,219,202,.25)}
.cinematic.outro #missionRadio>p{font-size:clamp(12px,1.45vw,15px);line-height:1.85}
#endingBackdrop{position:fixed;inset:0;z-index:20;pointer-events:none;background:#020405;opacity:0}
#endingDialogue{position:fixed;z-index:26;left:50%;top:50%;transform:translate(-50%,-50%);width:min(660px,calc(100vw - 52px));color:#d4d8d1;pointer-events:none;text-shadow:none}
#endingDialogue[hidden]{display:none}
#endingDialogue>span{display:block;margin-bottom:24px;font-size:12px;letter-spacing:.15em;color:#89918e}
#endingDialogue>p{font-size:clamp(15px,1.6vw,19px);font-weight:400;line-height:2.05;letter-spacing:.045em;white-space:pre-line}
.ending-black #cinematicOverlay .cinematic-letterbox{background:#020405}
.ending-black #vignette{display:none}
body[data-state=paused] #endingDialogue{visibility:hidden}
@media(max-width:700px){.cinematic.outro #missionRadio.on{width:calc(100vw - 32px);bottom:12vh;padding:9px 12px}.cinematic.outro #missionRadio>p{font-size:12px;line-height:1.8}#endingDialogue{width:calc(100vw - 44px)}#endingDialogue>span{font-size:11px;margin-bottom:20px}#endingDialogue>p{font-size:15px;line-height:2}}
@media(max-height:530px) and (orientation:landscape){.cinematic.outro #missionRadio.on{bottom:12vh;width:min(640px,calc(100vw - 130px));padding:7px 14px}.cinematic.outro #missionRadio>p{font-size:12px;line-height:1.6}#endingDialogue{width:min(640px,calc(100vw - 90px))}#endingDialogue>span{margin-bottom:14px}#endingDialogue>p{font-size:15px;line-height:1.9}}
/* ---- Phones (2026-09-10): the radio shows who is talking, not the text. The transcript stays in the archive. ---- */
.talk{display:none;align-items:flex-end;gap:2px;height:11px;color:inherit}.talk i{display:block;width:3px;height:100%;background:currentColor;transform-origin:bottom;animation:talkBar .9s ease-in-out infinite}.talk i:nth-child(2){animation-delay:.15s}.talk i:nth-child(3){animation-delay:.3s}
@keyframes talkBar{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
@media(max-width:700px),(max-height:530px) and (orientation:landscape){
 /* 2026-09-13: the pill sits top-right under the pause button (the score moved to the bottom-left on phones), clear of the boss and midboss bars below it */
 body:not(.cinematic) #missionRadio{left:auto;right:calc(17px + env(safe-area-inset-right,0px));top:calc(70px + env(safe-area-inset-top,0px));bottom:auto;width:auto;max-width:min(62vw,300px);padding:6px 12px 6px 11px;display:flex;align-items:center;gap:9px;border:1px solid rgba(193,213,189,.32);border-top-width:1px;background:rgba(9,20,24,.8);transform:translateY(-4px)}
 body:not(.cinematic) #missionRadio.on{transform:none}
 body:not(.cinematic) #missionRadio>p{display:none}
 body:not(.cinematic) #missionRadio>span{font-size:11px;letter-spacing:.06em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body:not(.cinematic) #missionRadio>span:before{content:"通話：";color:#c9d1cb;font-weight:500}
 body:not(.cinematic) #missionRadio .talk{display:inline-flex;flex:0 0 auto}
 body:not(.cinematic) #missionRadio.receiving:before{content:none}
 body:not(.cinematic) #missionRadio.receiving>span{opacity:.55}
 body:not(.cinematic) #missionRadio.receiving .talk i{animation-play-state:paused;transform:scaleY(.3)}
}
@media(prefers-reduced-motion:reduce){.talk i{animation:none;transform:scaleY(.7)}}
@media(max-height:530px) and (orientation:landscape){body:not(.cinematic) #missionRadio{top:calc(126px + env(safe-area-inset-top,0px));left:calc(24px + env(safe-area-inset-left,0px));right:auto}}
