:root{color-scheme:dark;--void:#0b1116;--panel:#0e171cf0;--panel-solid:#111c22;--field:#0a1418;--rule:#9fc3cf2e;--rule-strong:#9fc3cf5c;--tick:#a9dcffb3;--ink:#e4edef;--muted:#8ba2a9;--intent:#f0c44c;--actual:#a9dcff;--valid:#7fe0a0;--warn:#ff9a3d;--hostile:#ff5e57;--on-light:#071016;--line:var(--rule);--accent:var(--intent);--sans:'IBM Plex Sans','Segoe UI',Arial,sans-serif;--mono:'IBM Plex Mono','Cascadia Code',Consolas,monospace;font-family:var(--sans);font-synthesis:none;font-variant-numeric:tabular-nums}kbd{font:500 10px/1.4 var(--mono);color:var(--muted);border:1px solid var(--rule-strong);border-bottom-width:2px;border-radius:2px;padding:0 5px}select,input{color:var(--ink);background:var(--field);border:1px solid var(--rule);border-radius:2px}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--void);overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;color:inherit;background:transparent;border:1px solid var(--line);border-radius:2px;min-height:44px;touch-action:manipulation}button:hover:not(:disabled){background:#a9dcff14;border-color:var(--rule-strong)}button:disabled{opacity:.45;cursor:not-allowed}button,a,input,select,summary,canvas{outline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--accent)}[hidden]{display:none!important}a{color:var(--accent)}h1,h2,p{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}.battlefield{position:fixed;inset:0;height:100dvh;isolation:isolate;overflow:hidden}#world-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}#world-canvas.panning{cursor:grabbing}.panel{--t:linear-gradient(var(--tick),var(--tick));background:var(--t) 0 0/8px 1px,var(--t) 0 0/1px 8px,var(--t) 100% 0/8px 1px,var(--t) 100% 0/1px 8px,var(--t) 0 100%/8px 1px,var(--t) 0 100%/1px 8px,var(--t) 100% 100%/8px 1px,var(--t) 100% 100%/1px 8px,var(--panel);background-repeat:no-repeat;background-origin:border-box;border:1px solid var(--line);border-radius:2px;box-shadow:0 8px 28px #0000004d;backdrop-filter:blur(3px)}.hud-header{position:absolute;top:max(16px,env(safe-area-inset-top));left:max(20px,env(safe-area-inset-left));right:max(20px,env(safe-area-inset-right));height:62px;display:flex;align-items:center;padding:8px 16px;gap:22px}.brand{display:flex;align-items:center;gap:12px;font:500 26px var(--mono);color:var(--actual)}.brand>span{font:600 15px var(--sans);letter-spacing:4px;color:var(--ink)}.brand small{display:block;font:9px var(--mono);color:var(--muted);letter-spacing:1px;margin-top:5px}.session-info{margin-left:auto;display:flex;align-items:center;gap:22px;font:10px var(--mono);color:var(--muted)}.connection{display:flex;align-items:center;gap:7px}.connection i{width:6px;height:6px;border-radius:50%;background:var(--valid);box-shadow:0 0 6px var(--valid)}.connection.offline i{background:var(--warn);box-shadow:0 0 6px var(--warn)}.hud-header nav{display:flex;gap:6px}.hud-header button{width:44px;font-size:20px}.objective{position:absolute;top:96px;left:20px;padding:14px 16px;width:280px}.eyebrow{font:500 9px var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:var(--muted)}.objective strong{display:block;font-size:16px;margin:7px 0 10px;font-weight:600}.objective-bottom{display:flex;align-items:center;gap:12px;justify-content:space-between}.objective-bottom>span{font:10px var(--mono);color:var(--muted)}.objective button{font-size:11px;padding:0 10px}.survey{position:absolute;right:20px;top:96px;width:152px;padding:5px}.survey canvas{display:block;width:100%;aspect-ratio:4/3;cursor:crosshair;touch-action:none;border-radius:2px}.survey>span{display:block;text-align:center;font:8px var(--mono);padding:6px}.map-tools{position:absolute;right:20px;top:244px;display:grid;grid-template-columns:repeat(2,44px);padding:4px;gap:3px}.map-tools button{border:0;font-size:22px}.map-tools #zoom-label{display:none}.coordinates{position:absolute;left:22px;bottom:25px;font:10px var(--mono);letter-spacing:1px;color:var(--actual);text-shadow:0 1px 3px #000,0 0 6px #000}.save-indicator{position:absolute;right:20px;bottom:24px;display:grid;text-align:right;gap:4px;font:9px var(--mono);color:var(--ink);text-shadow:0 1px 3px #000,0 0 6px #000}.bottom-hud{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%)}.mode-dock{display:flex;padding:5px;gap:4px;white-space:nowrap}.mode-dock button{padding:0 15px;display:flex;align-items:center;justify-content:center;gap:8px;border:0;font-size:13px;min-height:48px}.mode-dock button.active,.mode-dock button[aria-expanded=true]{background:#f0c44c14;color:var(--intent);box-shadow:inset 0 0 0 1px var(--intent)}.mode-dock kbd{font-size:9px;color:inherit;opacity:.75}.map-hint{text-align:center;white-space:nowrap;margin:0 0 10px;font:10px var(--mono);letter-spacing:.5px;color:var(--ink);text-shadow:0 1px 3px #000,0 0 8px #000}.deployment-tray{position:absolute;bottom:118px;left:50%;transform:translateX(-50%);width:480px;max-width:calc(100% - 32px);padding:10px 14px}.tray-heading{display:flex;align-items:center;justify-content:space-between}.tray-heading>button,.section-heading>button{border:0;font-size:24px;width:44px}.tray-heading select{margin-left:8px;padding:8px;background:var(--field);border:1px solid var(--line);border-radius:2px;color:var(--ink);font-size:12px;min-height:44px}.unit-row{display:flex;gap:18px;overflow-x:auto;padding:6px 0}.unit-card{display:flex;align-items:center;gap:14px;padding:12px 18px;flex-shrink:0;text-align:left;border-color:var(--rule-strong);background:#0a141880}.unit-card strong{font-size:13px}.unit-card small,.unit-card em{display:block;font:10px var(--mono);color:var(--muted);margin-top:6px}.unit-card em{color:var(--actual);font-size:9px;font-style:normal;letter-spacing:.8px;margin-top:12px}.unit-art{display:grid;place-items:center;width:46px;height:46px;color:var(--actual);background:linear-gradient(var(--rule) 1px,transparent 1px) 0 0/11.5px 11.5px,linear-gradient(90deg,var(--rule) 1px,transparent 1px) 0 0/11.5px 11.5px,var(--field);border:1px solid var(--rule-strong);border-radius:2px;overflow:hidden}.tray-note{font-size:11px;line-height:1.7;align-self:center;color:var(--muted)}.site-panel{position:absolute;right:20px;bottom:98px;width:300px;max-height:calc(100dvh - 200px);overflow:auto;padding:12px 16px;scrollbar-width:thin}.section-heading{display:flex;align-items:center;gap:10px}.section-heading h2{font-size:14px;flex:1}.section-heading>span{font:10px var(--mono);color:var(--muted)}.terrain-info{display:flex;gap:10px;align-items:center;margin:8px 0}.terrain-info>span{width:30px;height:30px;border-radius:2px;flex-shrink:0}.terrain-info strong{font-size:12px}.terrain-info small{display:block;font:9px var(--mono);color:var(--muted);margin-top:4px}.site-reason{font-size:11px;line-height:1.5;color:var(--muted);margin:10px 0}.site-panel details{margin-bottom:10px;font-size:11px}.site-panel summary{cursor:pointer;padding:10px 0}.coordinate-inputs{display:flex;gap:8px;align-items:end;margin:6px 0}.coordinate-inputs label{flex:1;min-width:0;font:10px var(--mono)}.coordinate-inputs input{width:100%;display:block;background:var(--field);color:var(--ink);border:1px solid var(--line);padding:9px 6px;margin-top:5px;border-radius:3px;min-height:44px}.coordinate-inputs button{padding:0 10px}.primary-button,.secondary-button{width:100%;padding:10px;margin-top:7px;font-size:12px}.primary-button{background:var(--actual);color:var(--on-light);border:0;font-weight:600;letter-spacing:.4px}.primary-button>span{float:right}.danger{color:var(--hostile)}.touch-pad{display:none}.fire-button{position:absolute;right:40px;bottom:108px;width:76px;height:76px;border:1px solid var(--rule-strong);border-radius:50%;background:#0a1418db;color:var(--actual);font-size:32px;line-height:1}.fire-button small{display:block;font:9px var(--mono);margin-top:4px}.loading{position:absolute;inset:0;background:#000;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;z-index:50}.loading>*{opacity:0;transition:opacity .4s}.loading.slow>*,.loading.failed>*{opacity:1}.arrival{position:absolute;inset:0;z-index:50;background:#000;pointer-events:none;transition:opacity 1.2s ease-out}.arrival.clear{opacity:0}@media (prefers-reduced-motion:reduce){.arrival{transition:none}}.loading.hidden{display:none}.loading-mark{font:500 52px var(--mono);color:var(--actual)}.loading strong{font:13px var(--mono)}.loading p{font-size:12px;color:var(--muted)}.toast{position:fixed;top:90px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--rule-strong);border-radius:2px;padding:12px 18px;max-width:calc(100% - 30px);width:max-content;font-size:12px;pointer-events:none;opacity:0;z-index:20;box-shadow:0 8px 25px #0003}.toast.visible{opacity:1}dialog{max-width:540px;width:calc(100% - 32px);max-height:85dvh;overflow:auto;background:var(--panel-solid);color:var(--ink);border:1px solid var(--rule-strong);border-radius:3px;padding:30px}dialog::backdrop{background:#05090cc4}dialog h1{font-size:26px;font-weight:600;margin:14px 0}dialog p,dialog dd{font-size:13px;line-height:1.7;color:var(--muted)}dialog dt{font:500 11px var(--mono);letter-spacing:1.2px;text-transform:uppercase;color:var(--actual);margin:18px 0 4px}dialog dd{margin:0}dialog .dialog-close{float:right;border:0;font-size:24px;width:44px}dialog a{display:inline-block;margin-top:15px;font-size:13px}.checklist{font-size:12px;line-height:1.8;color:var(--muted);padding-left:20px}.checklist .done{color:var(--valid)}.fine-print{font-size:11px!important}.noscript{position:fixed;inset:0;background:var(--void);padding:30px}.readme-page{overflow:auto;background:#f3f2e9;color:#24332e}.readme-page main{max-width:760px;margin:0 auto;padding:28px 20px 64px;font:16px/1.65 system-ui,sans-serif}.readme-page p{margin:0 0 .85em}.readme-page h1{font-size:2rem;line-height:1.2;margin:.7em 0 .5em}.readme-page h2{font-size:1.25rem;line-height:1.3;margin:1.8em 0 .4em}.readme-page table{width:100%;border-collapse:collapse}.readme-page th,.readme-page td{padding:.45em .6em;border-bottom:1px solid #24332e33;text-align:left;vertical-align:top}.readme-page code{font:.9em var(--mono);overflow-wrap:anywhere}.readme-page a{color:#6a461f}
@media(max-width:760px),(pointer:coarse){.touch-pad{display:grid;position:absolute;left:max(18px,env(safe-area-inset-left));bottom:100px;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,44px);gap:4px}.touch-pad button{background:#0a1418db;border-color:var(--rule-strong);font-size:23px;touch-action:none}.touch-pad button:first-child{grid-column:2}.touch-pad button:nth-child(2){grid-column:1;grid-row:2}.touch-pad button:nth-child(3){grid-column:2;grid-row:2}.touch-pad button:nth-child(4){grid-column:3;grid-row:2}.touch-pad button:active{background:var(--actual);color:var(--on-light)}}
@media(max-width:760px){.hud-header{top:max(8px,env(safe-area-inset-top));left:10px;right:10px;height:56px;padding:6px 10px;gap:8px}.brand{font-size:26px;gap:8px}.brand>span{font-size:11px;letter-spacing:1.5px}.brand small{font-size:7px}.session-info{display:grid;gap:4px;font-size:8px}.session-info #presence{font-size:7px;max-width:112px}.hud-header nav{gap:1px}.hud-header button{width:40px;min-width:40px}.objective{top:76px;left:10px;width:calc(100% - 124px);padding:10px}.objective .eyebrow{font-size:7px;letter-spacing:.7px}.objective strong{font-size:12px;margin:6px 0}.objective-bottom{gap:6px}.objective-bottom>span{font-size:8px}.objective button{font-size:10px;padding:0 7px}.survey{right:10px;top:76px;width:103px}.survey>span{font-size:7px;padding:4px}.map-tools{right:10px;top:184px;grid-template-columns:44px}.coordinates,.save-indicator{display:none}.bottom-hud{bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 20px)}.mode-dock{width:100%;gap:2px}.mode-dock button{flex:1;padding:0 8px;font-size:12px;gap:5px}.mode-dock kbd{display:none}.map-hint{font-size:9px;white-space:normal;min-height:12px;line-height:1.4;padding:0 8px}.fire-button{right:24px;bottom:108px}.deployment-tray{bottom:204px;padding:8px 12px;max-width:calc(100% - 20px)}.tray-note{font-size:10px}.unit-card{padding:10px;gap:10px}.unit-card strong{font-size:12px}.site-panel{bottom:204px;right:10px;width:calc(100% - 20px);max-height:calc(100dvh - 278px);padding:8px 14px}.site-panel .terrain-info{margin:2px 0}.site-panel .site-reason{margin:6px 0}.site-panel summary{padding:7px 0}.toast{top:auto;bottom:206px;font-size:11px;padding:10px 12px}.battlefield:has(.site-panel:not([hidden])) .fire-button{visibility:hidden}}
@media(max-height:520px) and (orientation:landscape){.hud-header{height:48px;top:6px}.objective{top:64px;width:235px;padding:8px 12px}.objective .eyebrow{display:none}.objective strong{margin:0 0 4px}.survey{top:64px;width:90px}.survey>span{display:none}.map-tools{top:140px;grid-template-columns:repeat(2,44px)}.bottom-hud{width:auto;bottom:10px}.touch-pad{bottom:18px}.fire-button{bottom:20px;right:20px}.map-hint{display:none}.deployment-tray{bottom:78px;max-height:calc(100dvh - 140px);overflow:auto}.site-panel{right:130px;bottom:78px;width:300px;max-height:calc(100dvh - 145px)}.coordinates,.save-indicator{display:none}.toast{top:62px;bottom:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.ammo-status{position:absolute;right:25px;bottom:192px;font:9px var(--mono);color:var(--actual);text-shadow:0 1px 3px #000}.hit-feedback{position:absolute;bottom:140px;left:50%;transform:translateX(-50%);font:11px var(--mono);letter-spacing:2px;color:var(--ink);text-shadow:0 1px 3px #000,0 0 8px #000;opacity:0;pointer-events:none}.hit-feedback.visible{opacity:1}.effect-settings{border:1px solid var(--line);border-radius:2px;margin:20px 0;padding:10px 15px}.effect-settings legend{font:500 11px var(--mono);letter-spacing:1px;color:var(--actual)}.effect-settings label{display:flex;align-items:center;gap:10px;min-height:44px;font-size:12px}.effect-settings input{width:18px;height:18px;accent-color:var(--accent)}
@media(max-width:760px){.ammo-status{right:14px;bottom:192px;font-size:8px}.hit-feedback{bottom:210px;font-size:10px}.mode-dock button{padding:0 5px;font-size:11px}}
@media(max-height:520px) and (orientation:landscape){.ammo-status{bottom:103px;right:14px}.hit-feedback{bottom:87px}}
/* Readouts are deliberately non-interactive. A short local highlight confirms accepted shots. */
.weapon-display{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:2px 8px;min-width:160px;cursor:default;user-select:none}
.weapon-readout{display:flex;align-items:center;gap:7px;padding:3px 7px;border-radius:2px;font:11px var(--mono);color:var(--muted);min-height:23px}
.weapon-readout i{width:5px;height:5px;border-radius:50%;background:#3a4b52;flex-shrink:0}
.weapon-readout kbd{font-size:9px;width:30px;text-align:center;padding:0}
.weapon-readout.firing{background:#a9dcff1f;color:var(--actual)}.weapon-readout.firing i{background:var(--actual);box-shadow:0 0 6px var(--actual)}
.fire-button,.machine-gun-button,.ammo-status{display:none}
.machine-gun-button{position:absolute;right:24px;bottom:196px;width:68px;height:68px;border:1px solid var(--rule-strong);border-radius:50%;background:#0a1418db;color:var(--actual);font-size:27px;line-height:1;touch-action:none}
.machine-gun-button small{display:block;font:9px var(--mono);margin-top:4px}
.machine-gun-button:hover:not(:disabled){background:#16242bed}
.fire-button:hover:not(:disabled){background:#16242bed}
@media(max-width:760px),(pointer:coarse){.fire-button,.machine-gun-button{display:block}.weapon-display{min-width:138px;padding:2px}.weapon-readout{font-size:9px;gap:5px;padding:3px 5px}.weapon-readout kbd.mouse-label{display:none}.mode-dock button{font-size:10px;padding:0 6px}.battlefield:has(.site-panel:not([hidden])) .fire-button,.battlefield:has(.site-panel:not([hidden])) .machine-gun-button,.battlefield:has(.deployment-tray:not([hidden])) .fire-button,.battlefield:has(.deployment-tray:not([hidden])) .machine-gun-button{visibility:hidden}}
@media(max-height:520px) and (orientation:landscape){.machine-gun-button{bottom:112px;right:25px;width:64px;height:64px}.weapon-display{min-width:138px}.mode-dock kbd{display:none}}
.core-art{font-size:32px;color:var(--actual)}
.core-status{position:absolute;top:96px;left:50%;transform:translateX(-50%);padding:12px 18px;font:500 11px var(--mono);color:var(--actual);letter-spacing:2px;text-align:center;pointer-events:none;max-width:calc(100% - 30px)}
.deploying .objective,.deploying .survey,.deploying .map-tools,.deploying .touch-pad,.deploying .fire-button,.deploying .machine-gun-button,.deploying .bottom-hud,.deploying .ammo-status,.deploying .hit-feedback,.surveying .objective{visibility:hidden}
@media(max-width:760px){.core-status{top:78px;font-size:9px;letter-spacing:1px;width:max-content;max-width:calc(100% - 140px);left:12px;transform:none}.deploying .core-status{left:50%;transform:translateX(-50%);max-width:calc(100% - 24px)}.surveying .site-panel{bottom:98px;max-height:245px}.surveying .touch-pad{visibility:hidden}}
.robot-health{margin:10px 0;font:9px var(--mono)}.robot-health>div{display:flex;justify-content:space-between;margin-bottom:5px}.robot-health progress{display:block;width:100%;height:4px;accent-color:var(--valid);border:0}.robot-health progress::-webkit-progress-bar{background:#1e2b31}.robot-health progress::-webkit-progress-value{background:var(--valid)}.hurt #world-canvas{outline:3px solid var(--hostile);outline-offset:-3px}.hurt .robot-health{color:var(--hostile)}.recovery-panel{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);width:340px;max-width:calc(100% - 24px);padding:18px;z-index:4}.recovery-panel h2{font-size:19px;margin:10px 0}.recovery-panel p{font-size:12px;line-height:1.5;color:var(--muted);min-height:36px}.recovery-panel label{display:block;font-size:11px;margin:8px 0}.recovery-panel select{width:100%;min-height:44px;background:var(--field);color:var(--ink);border:1px solid var(--line);border-radius:2px;padding:8px}.recovery-panel small{display:block;margin-top:12px;font-size:10px;color:var(--muted)}.recovering .touch-pad,.recovering .fire-button,.recovering .machine-gun-button,.recovering .bottom-hud,.recovering .hit-feedback{visibility:hidden}@media(max-width:760px){.robot-health{font-size:8px;margin:7px 0}.recovery-panel{bottom:16px;padding:14px}.recovery-panel h2{font-size:17px}}@media(max-height:520px) and (orientation:landscape){.recovery-panel{left:auto;right:12px;transform:none;bottom:12px;width:280px;padding:12px;max-height:calc(100dvh - 78px);overflow:auto}}
#rail-options{display:flex;gap:10px;margin:10px 0}#rail-options label{flex:1;font-size:11px}#rail-options select,.artillery-panel select{display:block;width:100%;background:var(--field);color:var(--ink);border:1px solid var(--line);border-radius:2px;padding:8px;min-height:44px}.artillery-panel{position:absolute;right:20px;bottom:98px;width:300px;padding:12px 16px;max-height:calc(100dvh - 200px);overflow:auto;scrollbar-width:thin}.artillery-panel label{font-size:11px}.artillery-panel p{margin-top:10px;font-size:11px;line-height:1.5;color:var(--muted)}#artillery-status{font:11px var(--mono);color:var(--actual);min-height:30px}.rail-movement{display:flex;gap:6px;margin-top:8px}.rail-movement button{flex:1;font-size:11px}.artillery-control .touch-pad,.artillery-control .fire-button,.artillery-control .machine-gun-button,.artillery-control .weapon-display{visibility:hidden}@media(max-width:760px){.artillery-panel{right:10px;bottom:98px;width:calc(100% - 20px);max-height:290px;padding:8px 14px}.artillery-panel .fine-print{font-size:9px!important;margin-top:6px}.artillery-panel .section-heading h2{margin:5px 0}.artillery-panel .section-heading button{min-height:32px;height:32px}.artillery-control .toast{bottom:auto;top:225px}}@media(max-height:520px) and (orientation:landscape){.artillery-panel{width:280px;right:12px;bottom:78px;max-height:calc(100dvh - 145px)}}
.gun-directions{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:8px 0}.gun-directions button{font-size:11px;touch-action:none}.gun-directions button:active{background:var(--actual);color:var(--on-light)}#artillery-trajectory{font:10px/1.6 var(--mono);color:var(--actual);margin:8px 0}.artillery-orbit .objective,.artillery-orbit .survey{visibility:hidden}.artillery-panel #artillery-status{min-height:0;margin:8px 0}@media(max-width:760px){.artillery-control .artillery-panel{max-height:320px}.artillery-control .toast{top:76px;max-width:calc(100% - 30px)}}
.front-label{font-size:9px;color:var(--muted);display:block;margin:6px 0 3px}#drill-front{width:100%;min-height:34px;background:var(--field);color:var(--ink);border:1px solid var(--line);border-radius:2px;font-size:11px;margin-bottom:5px}#artillery-guard{color:var(--valid);font-size:10px}@media(max-width:760px){.front-label{display:none}#drill-front{font-size:10px;min-height:28px}}
.facility-controls{width:min(820px,calc(100vw - 40px));padding:10px 14px;text-align:left}.facility-heading,.facility-actions,.facility-readouts{display:flex;align-items:center;gap:10px}.facility-heading{font:10px var(--mono);justify-content:space-between}.facility-heading #artillery-status{margin:0;min-height:0;font-size:10px}.facility-heading button{min-height:32px;padding:4px 8px;font-size:10px}.facility-actions{margin:7px 0;gap:6px}.facility-actions button{flex:1;min-height:42px;font-size:12px}.facility-actions button[aria-pressed=true]{background:#f0c44c14;color:var(--intent);box-shadow:inset 0 0 0 1px var(--intent)}.facility-actions kbd,.facility-movement kbd{margin-right:6px}.facility-movement{font-size:11px;white-space:nowrap}.facility-readouts{justify-content:space-between;font-size:10px}.facility-readouts #artillery-trajectory{margin:0}.facility-controls .fine-print{display:block;margin:5px 0 0;font-size:10px}.artillery-control .touch-pad{visibility:visible}.artillery-control .mode-dock{display:none}.artillery-orbit .objective,.artillery-orbit .survey{visibility:visible}.artillery-control .bottom-hud{bottom:20px}.artillery-control .map-hint{font-size:10px}.artillery-control .facility-controls #artillery-fire{min-width:110px;background:var(--actual);color:var(--on-light);border:0;font-weight:600}.artillery-control .touch-pad{bottom:220px}.artillery-control .artillery-panel{display:none}@media(max-width:760px){.facility-controls{width:calc(100vw - 20px);padding:8px}.facility-heading{gap:6px;font-size:9px}.facility-heading #artillery-status{font-size:9px;max-width:130px}.facility-actions{flex-wrap:wrap;gap:4px}.facility-movement{display:none}.facility-actions button{font-size:10px;min-width:55px;padding:5px}.facility-actions kbd{margin-right:3px}.facility-readouts{display:block}.facility-readouts #artillery-guard{display:block;font-size:9px;margin-top:3px}.facility-controls .fine-print{font-size:9px}.artillery-control .facility-controls #artillery-fire{min-width:88px}.artillery-control .bottom-hud{bottom:14px}.artillery-control .map-hint{font-size:8px;max-width:340px;white-space:normal}.artillery-control .touch-pad{bottom:210px}.artillery-control .objective{max-width:190px}}@media(max-height:520px) and (orientation:landscape){.facility-controls{width:min(620px,calc(100vw - 40px));padding:5px 10px}.facility-readouts,.facility-controls .fine-print,.artillery-control .map-hint{display:none}.artillery-control .bottom-hud{bottom:8px}.artillery-control .touch-pad{bottom:130px}}

.switch-panel{position:absolute;right:20px;top:100px;width:290px;padding:12px 16px;z-index:3;max-height:calc(100dvh - 300px);overflow:auto}.switch-panel select{width:100%;min-height:44px;background:var(--field);color:var(--ink);border:1px solid var(--line);padding:6px}.switch-panel label{font-size:11px}#switch-status{font:11px/1.5 var(--mono);color:var(--actual)}.switch-panel h2{font-size:15px}.facility-heading strong{flex-shrink:0}#facility-switches{margin-left:auto}@media(max-width:760px){.switch-panel{top:76px;right:10px;width:calc(100% - 20px);max-height:340px}.facility-heading{flex-wrap:wrap}.facility-heading #artillery-status{order:3;max-width:none;width:100%}.facility-heading button{min-height:32px}.artillery-control .touch-pad{bottom:230px}}

.tank-loadout{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;margin-bottom:6px;font-size:10px}.tank-loadout label{display:flex;align-items:center;gap:8px}.tank-loadout select{min-height:32px;max-width:180px}.tank-loadout span{font-family:var(--mono);color:var(--actual)}#sentry-options{display:block;margin:8px 0}#sentry-options[hidden],.tank-loadout[hidden],.tank-loadout [hidden]{display:none}#aa-loadout:not([hidden]){display:flex;align-items:center;gap:10px;flex-wrap:wrap}#aa-loadout strong{color:#d7f6ff}#aa-loadout span{color:var(--muted)}

@media(max-width:760px){.tank-loadout{flex-wrap:wrap;font-size:9px}.tank-loadout select{max-width:125px;min-height:32px}.tank-loadout span{width:100%;text-align:center}}
@media(max-width:760px),(pointer:coarse){.battlefield:has(#tank-loadout:not([hidden])) .fire-button{bottom:190px}.battlefield:has(#tank-loadout:not([hidden])) .machine-gun-button{bottom:270px}.battlefield:has(#tank-loadout:not([hidden])) .touch-pad{bottom:190px}}

.tank-interact{margin-bottom:6px;width:100%;min-height:36px;background:var(--actual);color:var(--on-light);border:0;font-weight:600}.tank-interact[hidden]{display:none}
@media(max-width:760px),(pointer:coarse){.battlefield:has(#transport-drive-off:not([hidden])) .touch-pad{bottom:215px}.battlefield:has(#transport-drive-off:not([hidden])) .fire-button{bottom:215px}.battlefield:has(#transport-drive-off:not([hidden])) .machine-gun-button{bottom:295px}.battlefield:has(#transport-drive-off:not([hidden])) .communication{bottom:330px}}
@media(max-width:760px),(pointer:coarse){.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout:not([hidden])) .fire-button{bottom:230px}.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout:not([hidden])) .machine-gun-button{bottom:310px}.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout:not([hidden])) .touch-pad{bottom:230px}}

@media(max-width:760px),(pointer:coarse){.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout[hidden]) .touch-pad{bottom:160px}.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout[hidden]) .fire-button{bottom:155px}.battlefield:has(#tank-interact:not([hidden])):has(#tank-loadout[hidden]) .machine-gun-button{bottom:235px}}
.ship-controls{padding:10px 12px;width:min(640px,calc(100vw - 24px));font-size:11px}.ship-heading,.ship-actions{display:flex;align-items:center;gap:8px;justify-content:space-between}.ship-heading strong{font-size:11px;letter-spacing:1px}.ship-heading span{font:10px var(--mono);color:var(--actual)}.ship-heading button{padding:0 10px}.ship-actions{margin-top:8px}.ship-actions button{flex:1;padding:0 9px}.ship-actions button[aria-pressed=true]{background:#f0c44c14;color:var(--intent);box-shadow:inset 0 0 0 1px var(--intent)}.ship-controls p{font:10px/1.6 var(--mono);color:var(--muted);margin-top:8px}.ship-control .fire-button,.ship-control .machine-gun-button{display:none!important}.ship-control .touch-pad{bottom:300px!important}.ship-control .map-hint{white-space:normal;max-width:640px;line-height:1.5}.ship-control .coordinates,.ship-control .save-indicator{display:none}.ship-control #ship-interact{margin:6px 0 0}
@media(max-width:760px){.ship-heading{flex-wrap:wrap}.ship-heading strong{font-size:10px}.ship-heading button{min-height:36px}.ship-actions{gap:4px}.ship-actions button{padding:0 5px;font-size:10px}.ship-control .map-hint{font-size:9px;max-width:calc(100vw - 24px)}.battlefield:has(#ship-interact:not([hidden])):not(.ship-control) .touch-pad{bottom:160px}.battlefield:has(#ship-interact:not([hidden])):not(.ship-control) .fire-button{bottom:155px}.battlefield:has(#ship-interact:not([hidden])):not(.ship-control) .machine-gun-button{bottom:235px}}
.ship-secondary-row{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-top:6px}.ship-secondary-row span{flex:1;font:9px/1.5 var(--mono);color:var(--muted)}.ship-secondary-row span:last-child{text-align:right}.ship-secondary-row [data-ready=true]{color:var(--valid)}.ship-secondary-row .firing{color:var(--actual);text-shadow:0 0 7px var(--actual)}.ship-secondary-row button{padding:0 12px;font-size:10px;touch-action:none}.ship-secondary-row button:active{background:var(--actual);color:var(--on-light)}.ship-control .touch-pad{bottom:350px!important}

.submarine-depth{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.submarine-depth span{flex:1;min-width:170px;font:10px var(--mono);color:var(--actual)}.submarine-depth button{font-size:10px;padding:0 9px;min-height:36px}.submarine-depth[hidden]{display:none}

.aircraft-controls{padding:12px;width:min(620px,calc(100vw - 24px));font:11px var(--mono)}.aircraft-heading,.aircraft-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.aircraft-heading span{color:var(--actual)}.aircraft-controls p{font:10px/1.6 var(--mono);color:var(--muted);margin:8px 0}.aircraft-actions button{flex:1;min-height:42px;font-size:11px}.aircraft-control .fire-button,.aircraft-control .machine-gun-button,.aircraft-control .ammo-status{display:none!important}.aircraft-control .touch-pad{bottom:270px!important}.aircraft-control .map-hint{font-size:10px;white-space:normal}.aircraft-control .coordinates,.aircraft-control .save-indicator{display:none}@media(max-width:760px){.aircraft-controls{padding:10px}.aircraft-actions{gap:4px}.aircraft-actions button{padding:0 6px;font-size:10px}.aircraft-control .touch-pad{bottom:290px!important}.aircraft-control .objective{display:none}.battlefield:has(#aircraft-interact:not([hidden])):not(.aircraft-control) .touch-pad{bottom:170px}}
.aircraft-control .touch-pad button{font:600 13px var(--mono);padding:0;white-space:nowrap}
.aircraft-control .bottom-hud{width:min(620px,calc(100vw - 24px))}
/* Orbital presence has no body, weapon HUD or ground movement controls. */
.battlefield.in-orbit .touch-pad,
.battlefield.in-orbit .weapon-display,
.battlefield.in-orbit #fire-button,
.battlefield.in-orbit #machine-gun-button,
.battlefield.in-orbit #ammo-status,
.battlefield.in-orbit .objective,
.battlefield.in-orbit #tank-loadout { display: none; }
.account-link{display:inline-grid;place-items:center;min-width:34px;min-height:40px;padding:0 8px;color:var(--ink);text-decoration:none;font:12px var(--mono);border:1px solid var(--rule);border-radius:2px}.account-link:hover{border-color:var(--rule-strong);background:#a9dcff14}

.room-dialog { max-width: min(460px, calc(100vw - 24px)); max-height: 85dvh; overflow: auto; color: var(--ink); background: var(--panel-solid); border: 1px solid var(--rule-strong); border-radius: 3px; padding: 24px; }
.room-dialog::backdrop { background: #05090cc4; }
.room-dialog button { display: block; width: 100%; padding: 12px; margin: 12px 0; }
.room-dialog input { display: block; width: 100%; color: inherit; background: var(--field); padding: 12px; border: 1px solid var(--rule-strong); font-family: var(--mono); }
.room-dialog p { line-height: 1.5; }
.hud-header #room-button { width: auto; min-width: 44px; padding: 0 8px; font: 12px var(--mono); }
@media (max-width: 650px) { .hud-header nav { gap: 4px; flex-shrink: 0; } .hud-header .brand > span { display: none; } .hud-header .session-info { min-width: 0; } #campaign-link { font-size: 11px; padding: 6px; } }

#detection-status{position:absolute;top:84px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:8px 12px;border:1px solid var(--hostile);background:#2a1214ef;color:#ffd6d3;font:11px/1.5 var(--mono);text-align:center;pointer-events:none;z-index:3}@media(max-width:760px){#detection-status{top:72px;width:calc(100% - 24px);font-size:10px}}

#acid-warning{position:absolute;top:124px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:8px 12px;border:1px solid var(--warn);background:#2b1a0cee;color:#ffd9b3;font:11px/1.5 var(--mono);text-align:center;pointer-events:none;z-index:3}@media(max-width:760px){#acid-warning{top:112px;width:calc(100% - 24px);font-size:10px}}

#settlement-progress{display:block;font:10px/1.5 var(--mono);color:var(--actual);margin:5px 0}#settlement-targets{display:flex;gap:4px}#settlement-targets button{flex:1;min-height:34px;font:10px var(--mono);padding:3px}
@media(max-width:760px){.map-tools{grid-template-columns:repeat(2,44px)}}
#fog-status{position:absolute;left:50%;top:164px;transform:translateX(-50%);padding:7px 12px;border:1px solid #c895b9;background:#412e45ee;color:#f0c9e9;font:11px/1.5 var(--mono);text-align:center;pointer-events:none;z-index:3}
@media(max-width:760px){#fog-status{top:auto;bottom:360px;width:max-content;max-width:calc(100% - 24px);font-size:10px}}

#logistics-dialog h2{font-size:16px;margin:20px 0 8px}#logistics-dialog label,#construction-method-row{display:block;font-size:12px;margin:10px 0}#logistics-dialog select,#construction-method{display:block;width:100%;min-height:44px;background:var(--field);color:var(--ink);border:1px solid var(--line);border-radius:2px;margin-top:5px;padding:6px}.logistics-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.logistics-actions button{flex:1;padding:8px;font-size:12px}#logistics-message{color:var(--warn)}
/* Stage 1 instrument icons: inline line art, coloured by the surrounding control. */
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter;flex-shrink:0;vertical-align:middle}
.music-settings{margin:18px 0;padding:12px;border:1px solid var(--rule);display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.music-settings legend{font:12px var(--mono);color:var(--actual)}
.music-settings button{min-height:44px;padding:8px 14px}
.music-settings button[aria-pressed="true"]{border-color:var(--actual);color:var(--actual)}
.music-settings label{font-size:12px}
.music-settings input{min-width:80px;min-height:44px;flex:1;width:100px;accent-color:var(--actual)}
.music-settings p{flex-basis:100%;margin:0;font-size:11px;line-height:1.5}
/* Room chat stays small until opened; wheel owns the pointer but not WASD. */
/* Loading and load failures must not expose battlefield communication controls. */
#loading:not(.hidden) ~ .communication,#loading:not(.hidden) ~ .emote-cover{display:none}
.communication{position:absolute;left:20px;bottom:82px;width:min(340px,calc(100% - 40px));z-index:11;pointer-events:none;font:11px var(--mono)}
.communication button,.communication input,.chat-history{pointer-events:auto}
.communication,.communication button,.communication input{text-shadow:0 1px 2px #07161c,0 0 4px #07161c}
.communication button,.communication button:hover:not(:disabled){background:transparent;border-color:var(--rule-strong)}
.communication button:hover:not(:disabled){border-color:var(--actual)}
.communication-buttons{display:flex;gap:4px}
/* Placement actions sit above passive chat shortcuts on narrow screens.
   Explicitly opened chat can still take input above the placement sheet. */
@media(max-width:760px){.site-panel{z-index:12}.ship-systems-open .bottom-hud{z-index:12}.communication.chat-expanded{z-index:14}}
.communication-buttons button{min-height:36px;padding:6px 9px;background:transparent}
.communication kbd{font-size:9px;margin-left:4px}
.chat-history{background:transparent;border-left:2px solid var(--actual);margin-bottom:6px;padding:7px 9px}
#chat-messages{list-style:none;padding:0;margin:0;max-height:96px;overflow:auto;overflow-wrap:anywhere;line-height:1.5}
#chat-messages li{margin:4px 0;color:var(--ink)}
#chat-messages strong{color:var(--actual);font-weight:500}
.communication:not(.chat-expanded) #chat-messages li:not(:nth-last-child(-n+3)){display:none}
.chat-expanded #chat-messages{max-height:200px}
#chat-form{pointer-events:auto;background:transparent;border:1px solid var(--rule-strong);padding:10px;display:grid;grid-template-columns:1fr auto auto;gap:6px;margin-bottom:6px}
#chat-form[hidden],.emote-cover[hidden]{display:none}
#chat-form label,#chat-form small{grid-column:1/-1}
#chat-form small{font-size:10px;color:var(--muted)}
#chat-input{min-width:0;min-height:44px;background:transparent;border:1px solid var(--actual);color:var(--ink);padding:7px;font:14px var(--mono)}
#chat-form button{min-height:44px;padding:6px}
#chat-status{background:transparent;padding:8px;margin:4px 0;line-height:1.5;color:var(--warn)}
.emote-cover{position:absolute;inset:0;z-index:15;display:grid;place-items:center;background:#07161c28}
#emote-wheel{position:relative;width:300px;height:300px;border:1px solid var(--rule-strong);border-radius:50%;background:#101e22f2;box-shadow:0 5px 24px #0005}
.emote-option{position:absolute;transform:translate(-50%,-50%);width:78px;height:67px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font:10px var(--mono);background:#1c333c;border:1px solid var(--rule-strong)}
.emote-option img{image-rendering:pixelated;object-fit:contain}
.emote-option.selected,.emote-option:focus-visible{border-color:#f5d48c;background:#51472b;color:#ffe3a0}
.emote-center{position:absolute;inset:103px 84px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:6px;pointer-events:none;font:11px var(--mono)}
.emote-center small{font-size:9px;color:var(--muted)}
.emote-center button{pointer-events:auto;font:9px var(--mono);min-height:30px;padding:4px;white-space:nowrap}
@media(max-width:760px){.communication{left:10px;bottom:230px;width:min(310px,calc(100% - 20px))}.communication-buttons button{min-height:44px}.chat-expanded #chat-messages{max-height:110px}.communication:not(.chat-expanded) .chat-history{max-height:76px;overflow:hidden}}
@media(max-width:760px){.in-recycler .communication{bottom:350px}.chat-typing .communication{bottom:230px}.chat-typing .touch-pad,.chat-typing .fire-button,.chat-typing .machine-gun-button{visibility:hidden}}
@media(max-height:540px){.communication{bottom:82px}.chat-expanded #chat-messages{max-height:70px}}
.mode-dock svg.i{width:16px;height:16px}
.map-tools button,.hud-header nav button{display:grid;place-items:center}
.unit-art svg.i{width:30px;height:30px}

/* Stage 2: state-aware HUD. One banner names the operator state; orbit shows landing steps. */
.state-banner{font:500 10px var(--mono);letter-spacing:1.6px;color:var(--actual);border:1px solid var(--rule);border-radius:2px;padding:6px 10px;white-space:nowrap}
[data-state=placing] .state-banner{color:var(--intent);border-color:#f0c44c66}
[data-state=disabled] .state-banner{color:var(--hostile);border-color:#ff5e5766}
[data-state=descent] .state-banner,[data-state=orbit] .state-banner{border-color:#a9dcff66}
.supply-readout{width:auto!important;min-width:44px;padding:0 10px;font:500 11px var(--mono)!important;letter-spacing:1px;color:var(--ink);white-space:nowrap}
.orbit-steps{display:none;list-style:none;margin:0;padding:5px;gap:4px}
.in-orbit .orbit-steps{display:flex}
.in-orbit .mode-dock{display:none}
.orbit-steps li{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;font:500 11px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--muted);border-radius:2px}
.orbit-steps b{font-weight:500;opacity:.7}
.orbit-steps li.done{color:var(--valid)}
.orbit-steps li.done b::before{content:'✓ '}
.orbit-steps li.current{color:var(--intent);box-shadow:inset 0 0 0 1px var(--intent);background:#f0c44c14}
.landing-log{list-style:none;margin:8px 0 2px;padding:0;font:11px/1.9 var(--mono);color:var(--muted)}
.landing-log li.done{color:var(--valid)}
.landing-log kbd{margin-left:4px}
.site-analysis{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;margin:10px 0;padding:10px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font:10px/1.45 var(--mono)}
.site-analysis dt{color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-size:9px;padding-top:1px}
.site-analysis dd{margin:0;color:var(--ink)}
.site-analysis .checks{display:flex;flex-wrap:wrap;gap:3px 10px}
.site-analysis .ok{color:var(--valid)}
.site-analysis .fail{color:var(--hostile)}
.site-analysis .verdict{flex-basis:100%}
@media(max-width:760px){
.orbit-steps{width:100%}
.orbit-steps li{flex:1;justify-content:center;padding:0 4px;font-size:9px;letter-spacing:.4px;gap:4px;text-align:center}
.site-analysis{margin:6px 0;padding:6px 0;gap:3px 10px}
}
@media(max-width:900px){.state-banner{display:none}}
@media(max-width:650px){.hud-header .supply-readout{padding:0 6px;font-size:10px!important}.hud-header .session-info #presence{display:none}}
/* Stage 3: deployment catalogue. Tabs, coded asset cards, in-field list and spec sheet. */
.deployment-tray{width:min(880px,calc(100% - 32px));max-width:none;padding:10px 14px 14px;max-height:calc(100dvh - 230px);display:flex;flex-direction:column}
.tray-heading{gap:12px}
.force-tabs{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.force-tabs button{flex-shrink:0;min-height:38px;padding:0 12px;border:0;border-bottom:2px solid transparent;border-radius:0;font:500 11px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.force-tabs button[aria-selected=true]{color:var(--intent);border-bottom-color:var(--intent);background:#f0c44c0d}
.tray-supplies{font:500 11px var(--mono);letter-spacing:1px;white-space:nowrap}
.tray-body{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:14px;margin-top:10px;min-height:0}
.tray-panel{overflow:auto;min-height:0;scrollbar-width:thin}
.unit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.unit-grid .unit-card{width:100%;margin:0;padding:10px;gap:10px;align-items:flex-start}
.unit-body{display:flex;flex-direction:column;min-width:0}
.asset-code{font:500 9px var(--mono);letter-spacing:1.4px;color:var(--muted)}
.unit-grid .unit-card strong{margin-top:2px;font-size:13px}
.unit-grid .unit-card .asset-line{margin-top:4px}
.unit-grid .unit-card .asset-cost{margin-top:8px;color:var(--ink);font-size:10px;letter-spacing:.6px}
.unit-grid .unit-card.in-field .asset-cost{color:var(--valid)}
.unit-grid .unit-card.short .asset-cost{color:var(--hostile)}
.unit-grid .unit-card:hover:not(:disabled){border-color:#f0c44c88}
.in-field{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid var(--rule)}
.in-field .eyebrow{flex-basis:100%}
.in-field .secondary-button{width:auto;flex:1 1 200px;margin:0;min-height:40px}
.in-field label{display:flex;gap:8px;align-items:center;font-size:11px}
.in-field select{min-height:40px;padding:0 8px}
.in-field p{flex-basis:100%;margin:0;font-size:11px;line-height:1.5;color:var(--muted)}
/* Hovering a taller spec must not move the card away from the pointer. */
.asset-spec{contain:size;border-left:1px solid var(--rule);padding-left:14px;overflow:auto;font:10px/1.5 var(--mono);scrollbar-width:thin}
.asset-spec .unit-art{width:76px;height:76px;background-size:19px 19px,19px 19px,auto}
.asset-spec .unit-art svg.i{width:52px;height:52px}
.spec-title{margin:10px 0 8px}
.spec-title strong{display:block;margin-top:2px;font:600 15px var(--sans)}
.asset-spec dl{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;margin:0}
.asset-spec dt{color:var(--muted);text-transform:uppercase;font-size:9px;letter-spacing:1px;padding-top:1px}
.asset-spec dd{margin:0}
@media(max-width:760px){
.deployment-tray{bottom:96px;width:calc(100% - 20px);max-height:46dvh;padding:8px 10px 10px}
.tray-heading .eyebrow{display:none}
.force-tabs button{padding:0 9px;font-size:10px;min-height:40px}
.tray-body{grid-template-columns:minmax(0,1fr)}
.asset-spec{display:none}
.unit-grid{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(168px,64%);overflow-x:auto;padding-bottom:4px;scroll-snap-type:x proximity}
.unit-grid .unit-card{scroll-snap-align:start}
.in-field .secondary-button{flex-basis:140px}
}
@media(max-height:520px) and (orientation:landscape){.deployment-tray{max-height:calc(100dvh - 120px)}}
@media(max-width:760px){body:has(.deployment-tray:not([hidden])) .toast{top:76px;bottom:auto}}
/* Stage 4: key caps from the keymap, and the F1 key reference. */
.asset-code{display:flex;align-items:center;gap:6px}
.asset-key{font-size:9px;padding:0 4px;line-height:1.5}
.tab-keys{display:flex;gap:3px;flex-shrink:0}
.tab-keys kbd{font-size:9px}
.keys-dialog{max-width:620px}
.keys-dialog h2{font:500 10px var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:var(--actual);margin:20px 0 8px}
.keys-dialog dl{display:grid;grid-template-columns:minmax(110px,auto) 1fr;gap:6px 14px;margin:0}
.keys-dialog dt{margin:0;font:500 11px/1.6 var(--mono);color:var(--intent);letter-spacing:.5px;text-transform:none}
.keys-dialog dd{margin:0;font-size:12px;line-height:1.6;color:var(--ink)}
#keys-open{width:auto;padding:0 14px;margin:4px 0 8px}
#keys-open kbd{margin-left:8px}
@media(max-width:760px),(pointer:coarse){.asset-key,.tab-keys,.mode-dock kbd{display:none}}
/* Phones in cannon/battery overview: keep the objective line, drop drill and hull rows to free the map. */
@media(max-width:760px){.artillery-orbit .objective .robot-health,.artillery-orbit .objective .front-label,.artillery-orbit #drill-front,.artillery-orbit .objective-bottom,.artillery-orbit .landing-log{display:none}}

/* Recycler uses the existing instrument panels without changing the catalogue. */
.recycler-controls{position:absolute;bottom:140px;left:50%;transform:translateX(-50%);width:min(520px,calc(100% - 28px));padding:12px 16px;pointer-events:auto;font:12px var(--mono,monospace)}
.recycler-controls>span{float:right}.recycler-controls p{margin:6px 0}.in-recycler .weapon-display,.in-recycler #fire-button,.in-recycler #machine-gun-button{display:none}
@media(max-width:760px){.recycler-controls{bottom:220px;font-size:10px;width:calc(100% - 28px)}}

.in-recycler .bottom-hud{pointer-events:none}.in-recycler .bottom-hud>button,.in-recycler .bottom-hud .mode-dock{pointer-events:auto}

@media(max-width:760px),(pointer:coarse){.in-recycler .touch-pad{bottom:115px}}

.recycler-controls{backdrop-filter:none;background-color:var(--panel-solid)}
.in-recycler .map-hint{visibility:hidden}

.bridge-planner{position:fixed;right:18px;bottom:90px;width:360px;max-width:calc(100vw - 24px);padding:14px;z-index:5;backdrop-filter:none;background-color:var(--panel-solid);font:11px var(--mono)}.bridge-planner p{line-height:1.5}.bridge-planner>strong{display:block;margin:10px 0}.bridge-coordinates{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:8px;align-items:end}.bridge-coordinates input{display:block;width:100%;min-width:0;padding:8px;background:var(--field);border:1px solid var(--line);color:var(--ink)}.bridge-planner button{padding:6px}.bridge-planner button[aria-pressed=true]{border-color:var(--intent)}#bridge-confirm{width:100%;margin-top:8px}.battlefield:has(#bridge-planner:not([hidden])) #recycler-controls{display:none}@media(max-width:760px){.bridge-planner{bottom:76px;right:12px;width:calc(100vw - 24px)}}

.transport-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:8px}.transport-controls[hidden]{display:none}.transport-controls label{flex:1;min-width:120px}.transport-controls select{width:100%;min-height:34px}.transport-controls p{flex-basis:100%;margin:0}.ship-control:has(#transport-controls:not([hidden])) .touch-pad{bottom:450px!important}

/* Nearby ship and vehicle actions stack; keep the movement pad above both. */
@media(max-width:760px){.battlefield:has(#ship-interact:not([hidden])):has(#recycler-interact:not([hidden])):not(.ship-control) .touch-pad{bottom:215px}}
.bottom-hud{pointer-events:none}.bottom-hud>*{pointer-events:auto}.bottom-hud>.map-hint{pointer-events:none}

#shipyard-controls{flex-basis:100%;min-width:0;width:100%}
#shipyard-controls label{flex:1 1 200px;min-width:0}
#shipyard-controls select{min-width:0;max-width:100%;flex:1}
#shipyard-dialog{width:560px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}
#shipyard-dialog h2{margin:12px 0}#shipyard-select-label{display:block}#shipyard-select-label[hidden]{display:none}
#shipyard-select{width:100%;margin-top:6px}#shipyard-status{padding:12px;border:1px solid var(--line);color:var(--actual);font:12px var(--mono);line-height:1.5}
#shipyard-choices{display:grid;gap:10px}#shipyard-choices[hidden]{display:none}#shipyard-choices button{width:100%;text-align:left;min-height:44px}
#shipyard-choices small{display:block;margin:4px 0;color:var(--muted);font-size:11px}.shipyard-actions{display:flex;flex-wrap:wrap;gap:8px}.shipyard-actions button{flex:1 1 140px;min-height:40px}#shipyard-new-dialog{width:100%}

/* Both shared budgets remain readable without overlapping the mobile navigation. */
@media(max-width:650px){.hud-header{gap:5px}.hud-header .supply-readout{width:78px!important;min-width:78px;flex-shrink:0;white-space:pre-line;line-height:1.3;font-size:9px!important;letter-spacing:0;padding:0 3px}.hud-header nav{gap:2px}.hud-header .session-info{font-size:7px}.hud-header button{min-width:34px;width:34px}#campaign-link{font-size:9px;padding:4px}}

.bomber-panel{position:absolute;right:16px;bottom:110px;width:min(360px,calc(100% - 32px));z-index:30;padding:16px;max-height:60vh;overflow:auto}.bomber-panel label{display:block;margin:8px 0}.bomber-panel select{width:100%}.bomber-panel p{font-size:12px;line-height:1.5}.bomber-panel input{width:100%;min-width:0}.bomber-panel .coordinate-inputs{grid-template-columns:1fr 1fr}.bomber-panel .aircraft-actions{flex-wrap:wrap}@media(max-width:650px){.bomber-panel{bottom:95px;right:10px;max-height:48vh;padding:12px}}

@media(max-width:650px){.bomber-planning .objective,.bomber-planning .survey,.bomber-planning #aircraft-interact{display:none!important}}

.cruise-launch{width:100%;min-height:36px;margin-bottom:6px;background:var(--panel-solid);border-color:var(--rule-strong)}.bomber-planning #aircraft-cruise{display:none!important}

.carrier-controls{border-top:1px solid var(--rule);padding-top:8px}.carrier-controls>div{display:flex;gap:6px;margin-top:6px}.carrier-controls button{flex:1;font-size:11px;min-height:38px}.carrier-controls select{min-width:0;max-width:45%}.carrier-controls p{font:11px/1.5 var(--mono);color:var(--actual)}

@media(max-width:760px){.ship-control:has(#carrier-controls:not([hidden])) .touch-pad{bottom:450px!important}}

.orbital-live{position:absolute;top:84px;left:50%;transform:translateX(-50%);padding:8px 12px;font:11px var(--mono);color:var(--intent);pointer-events:none;z-index:12;max-width:calc(100% - 24px)}
#orbital-reason{color:var(--muted)}.orbital-planning .touch-pad{display:none!important}
@media(max-width:650px){.orbital-planning .objective,.orbital-planning .survey,.orbital-planning .bottom-hud,.orbital-planning .fire-button,.orbital-planning .machine-gun-button{display:none!important}#orbital-panel{bottom:12px;max-height:53vh}.orbital-live{top:70px;width:calc(100% - 24px);text-align:center;font-size:10px}.orbital-planning .map-tools{top:110px}}

#orbital-open,#bomber-open{font:600 13px var(--mono)}

/* A selected strike aims directly on the battlefield; no catalogue window. */
.orbital-planning .map-hint{visibility:hidden}
#orbital-panel.orbital-aiming{position:absolute;left:50%;bottom:132px;transform:translateX(-50%);width:min(660px,calc(100% - 32px));max-height:none;margin:0;padding:0;border:0;box-shadow:none;background:none;backdrop-filter:none;z-index:10;pointer-events:none;text-shadow:0 1px 3px #07161c,0 0 5px #07161c}
.orbital-aiming p{margin:3px 0;font:11px/1.4 var(--mono)}
.orbital-command-row{display:flex;gap:8px;align-items:center}.orbital-command-row p{flex:1;min-width:0}.orbital-command-row button{pointer-events:auto;min-height:36px;flex-shrink:0;padding:0 10px;font:11px var(--mono);text-shadow:inherit}
.orbital-aiming #orbital-reason{color:var(--hostile)}
.unit-card[aria-pressed=true]{border-color:var(--intent);background:#f0c44c12}
@media(max-width:760px){#orbital-panel.orbital-aiming{bottom:100px;width:calc(100% - 24px)}.orbital-command-row{flex-wrap:wrap;gap:5px}.orbital-command-row p{flex-basis:100%}.orbital-command-row button{min-height:44px}.orbital-aiming p{font-size:10px}.battlefield:has(#deployment-tray:not([hidden])) .communication{bottom:calc(46dvh + 110px)}}

#bridge-coordinates[hidden],#bridge-direction-label[hidden]{display:none}.bridge-planner>label{display:block;margin-top:8px}.bridge-planner select{display:block;width:100%;padding:8px;background:var(--field);color:var(--ink);border:1px solid var(--line)}.bridge-planner{max-height:calc(100vh - 180px);overflow-y:auto}
@media(max-width:650px){.bridge-planner{max-height:50vh}.battlefield:has(#bridge-planner:not([hidden])) .objective,.battlefield:has(#bridge-planner:not([hidden])) .touch-pad{display:none!important}}
@media(max-width:650px){.battlefield:has(#bridge-planner:not([hidden])) .survey,.battlefield:has(#bridge-planner:not([hidden])) .map-tools button:not(#zoom-in):not(#zoom-out){display:none}.battlefield:has(#bridge-planner:not([hidden])) .map-tools{top:100px}}
@media(max-width:650px){.battlefield:has(#bridge-planner:not([hidden])) .communication{bottom:calc(50vh + 88px)}}
@media(max-width:650px){.orbital-planning .map-tools button:not(#zoom-in):not(#zoom-out){display:none}}

/* Campaign globe: bounded browser rendering, no effect on simulation. */
#planet-dialog { width:min(650px,94vw); max-height:94dvh; padding:24px; overflow:auto; background:radial-gradient(ellipse at 50% 35%,#17313e,#0d1a23 72%); }
#planet-dialog h2 { margin:8px 0; font-size:28px; }
#planet-status { font:12px var(--mono,monospace); color:#a7cad3; }
#planet-open { font:9px var(--mono); letter-spacing:0; }
#frenzy-test { margin-top:8px; width:100%; min-height:32px; font:10px var(--mono); }
#frenzy-status { margin-top:6px; color:#ff9b87; font:10px/1.5 var(--mono); }
#planet-globe { display:block; width:min(100%,52dvh); height:auto; aspect-ratio:1; margin:0 auto; touch-action:none; cursor:grab; }
#planet-globe:active { cursor:grabbing; }
#planet-globe:focus-visible { outline:1px solid #dfc375; outline-offset:2px; }
.planet-turns { display:flex; justify-content:center; gap:8px; margin:6px 0 16px; }
.planet-turns button { min-width:44px; min-height:36px; }
.planet-route { display:flex; gap:8px; margin:6px 0; }
.planet-route select { min-width:0; flex:1; }
.planet-route button { white-space:nowrap; }
.planet-legend { display:flex; flex-wrap:wrap; gap:14px; font-size:12px; }
.planet-legend span:nth-child(1) { color:#ff707c; }.planet-legend span:nth-child(2) { color:#79caff; }.planet-legend span:nth-child(3) { color:#ffe19a; }
.planet-legend #planet-landing-legend{color:#a7e9c6}
.landing-zone-row{display:grid;gap:5px;margin:6px 0 10px;font:10px var(--mono);color:var(--muted)}
.landing-zone-row select{width:100%;min-width:0;min-height:38px;padding:7px 9px;color:var(--ink);background:var(--field);border:1px solid var(--line)}
.landing-zone-row small{font:9px/1.4 var(--sans)}
@media(max-width:760px){.in-orbit .site-panel:has(.landing-zone-row:not([hidden])) #place-building{position:sticky;bottom:0;z-index:1;box-shadow:0 -8px 14px var(--panel)}}
@media(max-width:650px) { #planet-dialog { padding:18px; }.planet-route { flex-direction:column; }#planet-globe { width:min(100%,40dvh); } }

/* Direct deployment: one orbital button, or two equal funding halves. */
.deployment-choice { display:grid; grid-template-columns:minmax(0,1fr); min-width:0; }
.deployment-choice.split { grid-template-columns:repeat(2,minmax(0,1fr)); gap:3px; }
.deployment-choice .unit-card { width:100%; min-width:0; height:100%; border-color:#5686a2; background:#18313d; }
.deployment-choice .ground-choice { border-color:#d6b657; background:#302b1b; }
.deployment-choice.split .unit-card { display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:10px; }
.deployment-choice.split .unit-art { width:28px; height:28px; min-width:28px; color:#a5d5f0; }
.deployment-choice.split .ground-choice .unit-art,.ground-choice .asset-cost { color:#f1cf76; }
.deployment-choice .asset-cost { white-space:normal; }
.deployment-choice.split .unit-body { width:100%; min-width:0; }
.deployment-choice.split .asset-line { display:none; }
.deployment-choice .unit-card:focus-visible { outline:2px solid #e9f5ff; outline-offset:2px; }
.delivery-buttons { display:flex; gap:6px; margin:12px 0; }
.delivery-buttons button { flex:1; min-height:44px; background:#18313d; border:1px solid #5686a2; }
#delivery-ground { background:#302b1b; border-color:#d6b657; color:#f1cf76; }
.delivery-buttons button[aria-pressed="true"] { box-shadow:inset 0 0 0 2px currentColor; }
#construction-method-row[hidden],#deployment-management-legacy[hidden],.deployment-choice[hidden],.ground-choice[hidden],.delivery-buttons[hidden],.delivery-buttons button[hidden] { display:none!important; }
/* Context workshops stay nonmodal: movement and the battlefield remain live. */
.facility-service { position:absolute; z-index:45; right:18px; bottom:112px; width:min(350px,calc(100% - 36px)); max-height:calc(100% - 220px); overflow:auto; padding:16px; border:1px solid #bba65a; background:#102128f5; box-shadow:0 8px 30px #0005; color:#e1e8e9; }
.facility-service[hidden] { display:none!important; }
.facility-service h2 { font-size:18px; margin:0 30px 10px 0; }
.facility-service p { font-size:12px; line-height:1.45; }
.facility-service .service-close { position:absolute; top:6px; right:8px; padding:6px 10px; }
.service-choices { display:grid; gap:6px; }
.service-choices button { text-align:left; min-height:44px; padding:10px; color:#f1d580; background:#302b1b; border:1px solid #9e884b; }
.service-choices button:disabled { opacity:.5; }
.service-help { color:#b6c7ca; }
#dock-card .unit-art { color:#a5d5f0; }
@media (max-width:760px) { .facility-service { right:10px; bottom:100px; width:min(320px,calc(100% - 20px)); max-height:45%; padding:12px; } .facility-service .service-help { font-size:11px; } }
.service-choices button small { display:block; margin-top:3px; font-size:11px; color:#c5bc9d; }
/* Remote control is a map mode, with no selection sidebar. */
#remote-markers { position:absolute; inset:0; z-index:12; pointer-events:none; overflow:hidden; }
#remote-markers[hidden] { display:none!important; }
.remote-marker { position:absolute; transform:translate(-50%,-50%); min-height:44px; width:58px; padding:4px; pointer-events:auto; border:2px solid #f0c44c; border-radius:5px; background:#252718e8; color:#ffe6a1; box-shadow:0 0 0 4px #f0c44c25; font:700 10px var(--mono); }
.remote-marker:hover:not(:disabled),.remote-marker:focus-visible { background:#665323; outline:2px solid #fff0ba; outline-offset:4px; }
.remote-marker.unavailable { border-color:#87938e; box-shadow:none; background:#1c2b2de8; color:#bcc5c0; }
.remote-selecting .objective,.remote-selecting .survey,.remote-selecting .weapon-display,.remote-selecting .fire-button,.remote-selecting .machine-gun-button { visibility:hidden; }
#remote-mode[aria-pressed="true"] { color:#f0c44c; border-color:#f0c44c; background:#f0c44c18; }
@media(max-width:760px) { .mode-dock .weapon-display { min-width:100px; } .mode-dock .weapon-readout { font-size:8px; padding:3px; } .mode-dock #remote-mode { padding:0 4px; } }

.remote-selecting .map-tools { top:96px; }
.remote-selecting .map-tools button:not(#zoom-in):not(#zoom-out) { display:none; }
.remote-selecting .weapon-display { display:none; }

#remote-air { position:absolute;z-index:14;left:50%;transform:translateX(-50%);bottom:18px;width:min(630px,calc(100% - 24px));padding:10px;font:11px var(--mono); }
#remote-air>div { display:flex;align-items:center;gap:8px;flex-wrap:wrap; } #remote-air strong { margin-right:auto; }
#remote-air select { background:var(--field);color:var(--ink);max-width:180px;min-height:40px; } #remote-air button { padding:4px 10px; }
#remote-air p { margin-top:6px;line-height:1.5; } .remote-air-planning .mode-dock,.remote-air-planning .map-hint { visibility:hidden; }

#remote-heli-actions{margin-top:8px}#remote-heli-actions [aria-pressed=true]{border-color:#efd387;color:#efd387;background:#3b382b}
#remote-air,#remote-naval{box-sizing:border-box;max-height:calc(100dvh - 100px);overflow:auto}
@media(max-width:760px) { .remote-air-planning .touch-pad { bottom:290px!important; } }

/* Shared encounter warning stays visible in robot, vehicle and aircraft HUDs. */
#frenzy-status{position:fixed;top:76px;left:50%;transform:translateX(-50%);z-index:24;max-width:min(720px,90vw);padding:8px 12px;border:1px solid #e3a358;background:#17201fee;color:#ffe3b1;font:11px/1.5 var(--font-mono,monospace);text-align:center;pointer-events:none}
#frenzy-status[hidden]{display:none}
@media(max-width:700px){#frenzy-status{top:88px;font-size:10px;max-width:90vw}}

/* Keep map controls beneath the actual minimap height, including its captions. */
.map-instruments { position:absolute; top:96px; right:20px; display:flex; flex-direction:column; align-items:flex-end; gap:8px; pointer-events:none; }
.map-instruments > .survey, .map-instruments > .map-tools { position:static; pointer-events:auto; }
.map-instruments > .map-tools { grid-template-columns:repeat(2,44px); }
.map-tools #planet-open { font-size:9px; }
.remote-selecting .map-instruments > .survey { display:none; }
@media(max-width:760px) { .map-instruments { top:76px; right:10px; } }
@media(max-height:520px) and (orientation:landscape) { .map-instruments { top:64px; } }


/* Sailing instruments stay separate from the optional systems panel. */
.ship-helm{position:absolute;right:max(20px,env(safe-area-inset-right));bottom:96px;width:138px;padding:10px;background:#0c1b21c9;border:1px solid var(--line);border-radius:3px;color:var(--ink);font:10px/1.5 var(--mono);box-shadow:0 3px 16px #0003;z-index:2}
#submarine-helm-depth{margin-top:6px;border-top:1px solid var(--line);padding-top:6px}#submarine-helm-depth span{display:block;font-size:9px;color:var(--intent)}#submarine-helm-depth button{display:block;width:100%;min-height:32px;margin-top:3px;padding:4px;font:10px var(--mono)}
#ship-throttle-order{display:block;color:var(--intent);font-size:10px}#ship-speed{display:block;min-height:30px;margin:4px 0 6px;font-variant-numeric:tabular-nums;color:var(--actual)}
.ship-telegraph{display:flex;gap:5px}.ship-throttles{display:flex;flex:1;flex-direction:column;gap:2px}.ship-throttles button{width:100%;min-height:30px;padding:0 5px;text-align:right;border-color:transparent;font:10px var(--mono)}.ship-throttles button[aria-pressed=true]{color:var(--intent);box-shadow:inset 0 0 0 1px var(--intent);background:#f0c44c14}
.ship-speed-track{position:relative;width:17px;flex:none}.ship-speed-rail{position:absolute;top:15px;bottom:15px;left:8px;border-left:1px solid var(--actual)}#ship-speed-needle{position:absolute;left:-5px;width:12px;height:2px;background:var(--actual);box-shadow:0 0 5px #a9dcff80;transform:translateY(-50%);transition:top .16s linear}#ship-speed-needle:after{content:'';position:absolute;left:9px;top:-3px;border-left:5px solid var(--actual);border-top:4px solid transparent;border-bottom:4px solid transparent}
.ship-helm small{display:block;font-size:8px;color:var(--muted);margin:6px 0}#ship-systems-toggle{width:100%;min-height:32px;font:10px var(--mono)}#ship-systems-toggle[aria-expanded=true]{color:var(--intent);border-color:var(--intent)}
.ship-control .bottom-hud{width:min(640px,calc(100vw - 24px))}.ship-control:not(.ship-systems-open) .map-hint{display:none}.ship-control:not(.ship-systems-open) .touch-pad{bottom:100px!important}
.ship-controls{max-height:calc(100dvh - 160px);overflow:auto;scrollbar-width:thin}.ship-heading{flex-wrap:wrap}#ship-systems-close{margin-left:auto;order:5;min-height:32px;font:10px var(--mono)}
@media(max-width:1100px){.ship-systems-open .ship-helm{visibility:hidden}}
@media(max-width:760px){.ship-helm{right:12px;bottom:88px;width:126px;padding:8px}.ship-throttles button{min-height:36px}.ship-speed-rail{top:18px;bottom:18px}.ship-helm small{font-size:7px}.ship-control:not(.ship-systems-open) .bottom-hud{width:calc(100vw - 24px)}}
@media(max-height:550px) and (orientation:landscape){.ship-helm{right:12px;bottom:16px;width:126px;padding:6px}.ship-throttles button{min-height:22px}.ship-speed-rail{top:11px;bottom:11px}.ship-helm small{display:none}#ship-speed{min-height:15px;margin:2px 0}.ship-control:not(.ship-systems-open) .bottom-hud{left:40%;width:220px}.ship-controls{max-height:calc(100dvh - 110px)}}
@media(prefers-reduced-motion:reduce){#ship-speed-needle{transition:none}}

@media(min-width:761px) and (max-height:850px){.ship-helm{right:132px}}
@media(max-height:550px) and (orientation:landscape){.ship-helm{right:124px}}

/* Fixed-wing instruments leave the centre free during manual flight. */
.flight-meter{position:absolute;right:20px;bottom:96px;width:158px;padding:10px;background:#0c1b21d9;border:1px solid var(--line);border-radius:3px;z-index:2;font:10px/1.5 var(--mono)}
.flight-meter strong,.flight-meter span,.flight-meter small{display:block}.flight-meter strong{color:var(--intent);font-size:10px}.flight-meter small{color:var(--muted);font-size:8px;margin:6px 0}#flight-speed{font-size:15px;color:var(--actual);margin:6px 0}#flight-speed-gauge{width:100%;height:4px;accent-color:var(--actual)}
.flight-bank{position:relative;height:34px;margin:7px 0;border-bottom:1px solid var(--rule)}.flight-bank:before{content:'';position:absolute;top:16px;left:20%;width:60%;border-top:1px dashed var(--muted)}#flight-bank-needle{position:absolute;top:15px;left:20%;width:60%;height:2px;background:var(--actual);transition:transform .12s linear}#flight-bank-label{color:var(--actual);font-size:9px}#flight-meter-status{color:var(--intent);min-height:30px;margin:6px 0}#flight-meter-status.threatened{color:var(--hostile)}#flight-meter-load{font-size:9px}#flight-systems-toggle{width:100%;min-height:32px;font:10px var(--mono)}#flight-systems-close{font:10px var(--mono);min-height:32px}
.fixed-wing-control:not(.flight-systems-open) .map-hint{display:none}.fixed-wing-control:not(.flight-systems-open) .touch-pad{bottom:100px!important}.aircraft-controls{max-height:calc(100dvh - 160px);overflow:auto}.aircraft-heading{flex-wrap:wrap}
@media(max-width:1100px){.flight-systems-open .flight-meter{visibility:hidden}}
@media(max-width:760px){.flight-meter{right:12px;bottom:88px;width:134px;padding:8px}}
@media(min-width:761px) and (max-height:780px){.flight-meter{right:132px}}
@media(max-height:550px) and (orientation:landscape){.flight-meter{right:124px;bottom:16px;width:132px;padding:6px}.flight-bank{height:24px;margin:2px 0}.flight-meter small{display:none}#flight-speed{margin:2px 0}#flight-meter-status{margin:2px 0;min-height:15px}.aircraft-controls{max-height:calc(100dvh - 110px)}}
@media(prefers-reduced-motion:reduce){#flight-bank-needle{transition:none}}
/* Green flight instruments: airspeed and bank, not simulated pitch/altitude. */
.flight-meter{color:#a9edbc;border-color:#81c69a66;background:#0b211de8;width:152px}
.flight-meter strong,#flight-speed,#flight-bank-label,#flight-meter-status{color:#b5f4c7}
.flight-speed-dial{position:relative;height:64px;width:112px;margin:4px auto 0;border-radius:60px 60px 0 0;border:1px solid #83b995;border-bottom:0;background:repeating-conic-gradient(from -120deg at 50% 100%,#ade8bc 0deg 1deg,transparent 1deg 20deg);clip-path:ellipse(60% 98% at 50% 100%)}
.flight-speed-dial:before{content:'';position:absolute;inset:8px 8px 0;border-radius:60px 60px 0 0;background:#0b211d}
.flight-speed-dial i{position:absolute;left:50%;bottom:0;height:50px;width:2px;background:#c3f7cd;transform-origin:50% 100%;transform:rotate(var(--speed-angle,-120deg));transition:transform .12s linear}
.flight-speed-dial b{position:absolute;bottom:3px;left:8px;font:8px var(--mono)}.flight-speed-dial b:nth-of-type(2){top:12px;bottom:auto;left:53px}.flight-speed-dial b:nth-of-type(3){left:auto;right:6px}
#flight-speed{display:inline-block;font-size:13px;margin:3px 0}#flight-heading{float:right;font-size:9px;padding-top:5px}
#flight-speed-gauge{display:none}.flight-bank{height:48px;border-bottom:0;border-top:1px solid #8ec69c;border-radius:65% 65% 0 0;margin:8px 4px 2px}.flight-bank:before{top:30px;left:10%;width:80%;border-color:#8ec69c55}.flight-bank .bank-arc{font-size:8px;text-align:center;margin-top:2px;white-space:pre}.flight-bank b{position:absolute;left:48%;top:8px}#flight-bank-needle{top:29px;left:15%;width:70%;background:#b5f4c7}#flight-bank-needle:before,#flight-bank-needle:after{content:'';position:absolute;top:-7px;height:14px;width:14px;border-top:1px solid #8ec69c;border-bottom:1px solid #8ec69c}#flight-bank-needle:before{left:10px}#flight-bank-needle:after{right:10px}
#flight-meter-status{min-height:16px;font-size:9px}#flight-systems-toggle{color:#b5f4c7;border-color:#81c69a66;font-size:9px}.flight-weapons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(100px,1.3fr);gap:4px;padding:8px;background:#10221fe8;border:1px solid #7eb28e66}.flight-weapons button{min-height:46px;padding:5px;font:10px var(--mono);color:#b9e5c4}.flight-weapons kbd{display:block;width:max-content;margin:0 auto 5px}.flight-weapons button.active{border-color:#e6cc8b;color:#efd999;background:#3b382b}.flight-weapons button.firing{background:#d1efb9;color:#132c23;border-color:#fff3b9}.flight-weapons.jet-weapons{grid-template-columns:1fr 1fr}.fixed-wing-control .bottom-hud{width:min(600px,calc(100vw - 24px))}.fixed-wing-control:not(.flight-systems-open) .touch-pad{bottom:94px!important}
.fixed-wing-control #aircraft-interact:disabled{display:none}
@media(max-width:760px){.flight-meter{width:125px;bottom:100px;padding:7px}.flight-speed-dial{width:96px;height:54px}.flight-speed-dial b:nth-of-type(2){left:45px}.flight-speed-dial i{height:44px}.flight-weapons{gap:3px;padding:5px;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(70px,1.3fr)}.flight-weapons button{font-size:9px;padding:4px;min-height:48px}.flight-meter small{font-size:7px}#flight-speed{font-size:11px}#flight-heading{font-size:8px}.fixed-wing-control .touch-pad{bottom:112px!important}}
@media(max-height:550px) and (orientation:landscape){.flight-speed-dial{display:none}.flight-meter{bottom:90px;right:124px}.flight-bank{height:38px}.flight-meter small{display:none}}
#flight-speed-gauge{appearance:none;border:0;background:#263d47}#flight-speed-gauge::-webkit-progress-bar{background:#263d47}#flight-speed-gauge::-webkit-progress-value{background:var(--actual)}#flight-speed-gauge::-moz-progress-bar{background:var(--actual)}

/* Aircraft dock: one aligned stack for weapons, parked controls and exit. */
.fixed-wing-control .bottom-hud{gap:6px}.aircraft-control .bottom-hud>.aircraft-controls,.fixed-wing-control .bottom-hud>.flight-weapons,.fixed-wing-control .bottom-hud>#aircraft-interact{width:100%;min-width:0;box-sizing:border-box;margin-inline:0}.flight-weapons.gunship-weapons{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(100px,1.3fr)}

#remote-naval{position:absolute;z-index:14;left:50%;transform:translateX(-50%);bottom:18px;width:min(760px,calc(100% - 24px));padding:10px;font:11px var(--mono);box-sizing:border-box}
#remote-naval>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap} #remote-naval strong{margin-right:auto} #remote-naval button,#remote-naval select{min-height:40px;padding:4px 9px} #remote-naval select{background:var(--field);color:var(--ink)} #remote-naval [aria-pressed="true"]{border-color:#efd387;color:#efd387} #remote-naval p{margin-top:6px;line-height:1.5} .remote-naval-planning .mode-dock,.remote-naval-planning .map-hint{visibility:hidden}
@media(max-width:760px){.remote-naval-planning .touch-pad{bottom:280px!important}}

@media(max-height:500px){.remote-naval-planning .touch-pad{bottom:150px!important;transform:scale(.8);transform-origin:bottom left}}

/* Keep landing and sling actions together, with stable instrument dimensions. */
.aircraft-interactions{display:flex;gap:6px;width:100%;margin-top:6px}
.aircraft-interactions #aircraft-interact{flex:1;min-width:0;margin:0;min-height:44px}
#helicopter-sling{flex:0 0 35%;min-width:132px;min-height:44px;background:#e8bf57;border:1px solid #f5d78a;color:#242015;font:600 11px var(--mono);padding:6px}
#helicopter-sling:hover:not(:disabled){background:#f5d78a}
#helicopter-sling-status{font:10px/1.4 var(--mono);color:var(--muted)}
.helicopter-dashboard{position:absolute;right:max(20px,env(safe-area-inset-right));bottom:96px;z-index:2;box-sizing:border-box;width:158px;display:grid;grid-template-columns:1fr;gap:10px;align-items:center;padding:10px;background:#0b211de8;border:1px solid #81c69a66;border-radius:3px;color:#b5f4c7;font:10px var(--mono);font-variant-numeric:tabular-nums;text-align:left;pointer-events:none;box-shadow:0 3px 16px #0003}
.helicopter-dashboard .heli-attitude{justify-self:center}
.heli-speed{display:grid;gap:4px}.heli-speed>small{font-size:8px;color:#8cb5a2}.heli-speed strong{font-size:20px;font-weight:500;white-space:nowrap}.heli-speed strong small{font-size:9px}.heli-speed>span{font-size:8px;min-height:10px}
#heli-speed-gauge{width:100%;height:4px;appearance:none;border:0;background:#263d36;accent-color:#b5f4c7}
#heli-speed-gauge::-webkit-progress-bar{background:#263d36}#heli-speed-gauge::-webkit-progress-value{background:#b5f4c7}#heli-speed-gauge::-moz-progress-bar{background:#b5f4c7}
.heli-angles{display:grid;gap:8px;font-size:9px;white-space:nowrap}
.heli-attitude{position:relative;width:76px;height:64px;overflow:hidden;border:1px solid #81c69a88;border-radius:50%;background:#122d2a}
#heli-horizon{position:absolute;inset:-35px;transform-origin:center;background:linear-gradient(to bottom,#173e3d 50%,#29352d 50%)}
#heli-horizon:after{content:'';position:absolute;top:50%;left:0;right:0;border-top:1px solid #b5f4c7}
#heli-horizon i,#heli-horizon b{position:absolute;left:42%;width:16%;height:13px;border-top:1px solid #81c69a;border-bottom:1px solid #81c69a}
#heli-horizon i{bottom:calc(50% + 7px)}#heli-horizon b{top:calc(50% + 7px)}
.heli-reticle{position:absolute;top:50%;left:17%;width:66%;height:6px;border-top:2px solid #f5d78a}
.heli-reticle:after{content:'';position:absolute;left:calc(50% - 3px);top:-4px;width:6px;height:6px;border:1px solid #f5d78a;background:#122d2a}
.helicopter-control .aircraft-controls{box-sizing:border-box}
@media(max-width:1100px){.helicopter-dashboard{right:12px;bottom:calc(var(--heli-hud-height,240px) + max(18px,env(safe-area-inset-bottom)) + 8px);width:180px;grid-template-columns:1fr 64px;gap:8px;padding:8px}.helicopter-dashboard .heli-attitude{width:64px;height:58px}.helicopter-dashboard .heli-angles{grid-column:1 / -1;font-size:8px;gap:5px}.helicopter-dashboard .heli-speed strong{font-size:18px}}
@media(max-width:760px){.helicopter-control .touch-pad{bottom:260px!important}.helicopter-control #aircraft-readout{font-size:9px}}
@media(max-height:520px) and (orientation:landscape){.helicopter-control .aircraft-controls{max-height:calc(100dvh - 145px);overflow:auto}.helicopter-control .touch-pad{bottom:110px!important}.helicopter-control .bottom-hud{left:12px;transform:none;width:calc(100vw - 316px)}.helicopter-dashboard{right:124px;bottom:16px;width:168px}}

/* AA controls share the action dock's intrinsic width, not the longer hint. */
.bottom-hud:has(#aa-loadout:not([hidden]))>.map-hint,
.bottom-hud:has(#aa-loadout:not([hidden]))>#tank-loadout{contain:inline-size;width:100%;min-width:0}
.bottom-hud:has(#aa-loadout:not([hidden]))>.map-hint{white-space:normal}
.bottom-hud:has(#aa-loadout:not([hidden])) #aa-loadout{flex:1;min-width:0}
.bottom-hud:has(#aa-loadout:not([hidden])) #build-mode{margin-left:auto;justify-content:flex-end;padding-right:5px}

/* Keep chat clear of the tank steering pad on narrow screens. */
@media(max-width:760px){.ground-steering:not(.in-recycler):not(.chat-typing) .communication{bottom:330px}}

/* The narrow victory ribbon reserves its own row above the working HUD. */
.planet-conquest{position:absolute;z-index:4;top:max(8px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:16px;min-height:30px;width:min(460px,calc(100% - 32px));padding:6px 32px;border:1px solid #d8b465;background:linear-gradient(90deg,#715124aa,#14201eee 20%,#14201eee 80%,#715124aa);clip-path:polygon(12px 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,12px 100%,0 50%);pointer-events:none;user-select:none;text-align:center}
.planet-conquest:before,.planet-conquest:after{content:'';position:absolute;top:5px;bottom:5px;width:18px;background:repeating-linear-gradient(120deg,#e6c27b 0 2px,transparent 2px 6px);opacity:.8}
.planet-conquest:before{left:12px}.planet-conquest:after{right:12px;transform:scaleX(-1)}
.planet-conquest strong{color:#ffe9ac;font:600 13px/1.2 var(--mono);letter-spacing:3px;text-shadow:0 0 12px #e6b75a88}
.planet-conquest span{color:#e5d6af;font:9px/1.3 var(--mono);white-space:nowrap}
.planet-conquered .hud-header,.planet-conquered .objective,.planet-conquered .map-instruments,.planet-conquered #detection-status,.planet-conquered #fog-status,.planet-conquered #acid-warning,.planet-conquered #frenzy-status{translate:0 32px}
.battlefield:has(#loading:not(.hidden)) .planet-conquest{display:none}
@media(max-width:760px){.planet-conquest{gap:10px;width:calc(100% - 20px);padding:6px 28px}.planet-conquest strong{font-size:11px;letter-spacing:2px}.planet-conquest span{font-size:8px}.planet-conquest:before{left:9px;width:13px}.planet-conquest:after{right:9px;width:13px}}
