/* Display software lives on glass. Depth is reserved for the input deck and hardware. */
:root{--glass:#050e0a;--phosphor:#bcf5cc;--muted-phosphor:#85ac93;--glass-line:#294d39}
body{background:#070c09;background-image:none}
body::before{box-shadow:none}body::after{opacity:.16}
.shell{max-width:1440px;min-height:100dvh;padding:0 32px 24px;background:radial-gradient(ellipse at 50% 0,#112b1c70,transparent 65%),var(--glass);border:0;box-shadow:inset 0 0 90px #0005}
.shell>header{height:72px;gap:18px}.brand{font-size:24px;letter-spacing:1px}.brandmark{background:none;color:var(--cyan);box-shadow:none;padding:0;font-size:20px}.daily{font-size:10px}.shell main{padding-bottom:0}
.hubnav{display:flex;gap:8px;padding:0;margin:0 0 32px;background:none;border:0;box-shadow:none;justify-content:flex-start}
.hubnav button,.hubnav button:hover:not(:disabled),.hubnav button.selected,.hubnav button:active{flex-direction:row;min-height:44px;gap:9px;padding:10px 18px;background:none;border:0;box-shadow:none;transform:none;text-shadow:none;color:var(--muted-phosphor)}
.hubnav button.selected{background:#b7f8ca;color:#08190e}.hubnav button:hover:not(.selected){color:#d7ffe3;background:#122d1d}.navkey-light{display:none}.navkey-symbol .icon{width:16px;height:16px}.navkey-label{font:12px var(--mono);letter-spacing:0;text-transform:none}
.shell footer{display:none}
#hubcontent{min-height:50vh}.missionselect{max-width:none;margin:0;display:flex;flex-direction:column;gap:30px}#levels{order:0}#operations{order:1}#resume{order:-1}
.missionselect .levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;gap:18px;background:none;border:0;box-shadow:none}
.missionselect .levels::before,.missionselect .levels::after{display:none}
.missionselect .levels button.terminal-contract{display:flex;flex-direction:column;align-items:stretch;gap:0;position:relative;padding:24px;min-height:405px;background:linear-gradient(180deg,#12301d55,transparent 60%);color:var(--phosphor);border:1px solid var(--glass-line);box-shadow:none;text-align:left;transform:none;overflow:hidden}
@media(hover:hover) and (pointer:fine){.missionselect .levels button.terminal-contract:hover{border-color:#85dca0;background:#0c2215;box-shadow:inset 2px 0 #98ffb0;transform:none}}
.terminal-contract::before{content:'';position:absolute;width:30px;height:2px;background:var(--cyan);top:0;left:24px}
.contract-topline{display:flex;justify-content:space-between;align-items:center;gap:8px;font:10px var(--mono);color:var(--muted-phosphor)}
.contract-state{display:inline-flex;align-items:center;gap:6px;color:#b0d7bc}.contract-state .icon{width:13px;height:13px}
.contract-identity{display:flex;align-items:center;gap:12px;margin:30px 0 22px;font:12px var(--ui);color:var(--muted-phosphor)}.contract-identity .corp-logo{height:36px;width:36px;color:var(--phosphor);flex:none}
.contract-name{font:600 clamp(24px,2.4vw,36px)/1.08 var(--ui);letter-spacing:.4px;min-height:78px;max-width:16ch;color:#d5ffe1}
.contract-kind{font:12px var(--mono);color:var(--muted-phosphor);margin:8px 0 24px}
.contract-data{display:flex;gap:32px}.contract-data>span{font:23px var(--mono)}.missionselect .levels .contract-data small{font:10px var(--mono);color:var(--muted-phosphor);margin-top:5px}
.contract-effects{font:13px/1.7 var(--ui);margin:22px 0;color:#aac9b4;min-height:67px}.contract-effects>span{display:block}
.contract-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:18px}
.contract-reward{display:flex;align-items:center;gap:6px;font:25px var(--mono);flex-wrap:wrap}.contract-reward .icon{height:21px;width:21px}.missionselect .levels .contract-reward small{font:10px var(--mono);margin:0 0 0 3px;color:var(--muted-phosphor)}
.contract-open{display:flex;align-items:center;gap:8px;font:12px var(--mono)}.contract-open .icon{width:16px;height:16px}
.terminal-contract.is-cleared{border-color:#3d7750!important}.terminal-contract.is-cleared .contract-state{color:#b7f8ca}.terminal-contract.is-cleared::before{width:100%;left:0;background:#3d7750}
.operation-board,.operation-track,.operation-display,.operation-blueprint,.operation-plaque{background:none;border:0;box-shadow:none}
.operation-board{padding:24px 0 0;margin:0}.operation-rack-label{padding:0 0 20px;font:11px var(--mono);letter-spacing:1px}.rack-indicator{display:none}.operation-tracks{gap:32px}.operation-track{padding:0 8px 0 0}.operation-plaque{margin-bottom:16px}.operation-display{padding:0}.operation-track .corp-logo{width:24px;height:24px}.operation-track .corp-wordmark b{font-size:16px}.operation-track .corp-wordmark small{display:none}.operation-status{font-size:9px}.operation-status>span{font-size:18px}.operation-blueprint{padding:0;min-height:44px;margin-top:15px}.operation-blueprint b{font-size:14px}.operation-blueprint>.icon{width:18px;height:18px}.operation-blueprint>.icon:last-child{display:none}.operation-offers button{background:#102619;min-height:44px}
.hubpanel{background:none;border:0;padding:20px 0;box-shadow:none}.briefgrid{gap:48px;grid-template-columns:1.2fr 1fr}.briefing>h2{font-size:36px;letter-spacing:1px;margin:22px 0}.brief-issuer{margin-bottom:12px}.briefing .briefsteps{margin:22px 0 28px}.briefing .briefsteps li{font-size:19px}.brief-effect-bank{gap:0}.brief-effect{background:none;box-shadow:none;padding:0 0 14px}.brief-effect-heading{padding:8px 0!important}.brief-effect-heading>span{font-size:16px!important}.brief-effect p{padding-left:34px;max-width:60ch}.brief-intel{margin-top:4px}.brief-intel-heading{color:var(--phosphor)}
.bounty-display{background:#0b1c12;border:0;box-shadow:none;padding:20px;margin:12px 0}.briefpay .bounty-display .bounty{font-size:40px}.briefsecurity{font-size:11px}.briefloadout{border:0;background:none;box-shadow:none;padding:12px 8px 22px}.briefpay{padding-top:20px}
#briefdeck.hardware-edit,#briefdeck.hardware-edit:hover{background:none;box-shadow:none;border:1px solid var(--glass-line);transform:none;font:13px var(--mono);min-height:44px;color:var(--phosphor)}
#deploy.deploy{box-shadow:none;min-height:76px}.briefpay>small{font:11px var(--mono)}
.dealer-counter{background:none;border:0;box-shadow:none;padding:0}.dealer-counter::before,.dealer-counter::after{display:none}.counter-rail{background:none;border:0;box-shadow:none;padding:0 0 24px}.engraved-label{font:18px var(--ui);text-shadow:none}.engraved-label small{display:block;font:10px var(--mono);margin-top:5px;color:var(--muted-phosphor)}.counter-balance{font-size:24px}.dealer-stock{gap:24px}.market-item{background:none;box-shadow:none;border:1px solid var(--glass-line);padding:18px}.display-well{background:radial-gradient(ellipse,#18332255,transparent 70%);border:0;box-shadow:none}.bin-label{border:0;background:none}.counter-foot{border:0;font-size:9px;padding:20px 0}.counter-foot>span{display:none}.price-ticket{box-shadow:none;background:#122b1c;border:1px solid #3d664a;min-height:48px}.price-ticket>span{font-size:9px}.price-ticket:disabled{opacity:.5}.inventory-note p{font-weight:400}.bus-offer,.shell-product{background:none;border:1px solid var(--glass-line);box-shadow:none}.sectiontitle h2{font:20px var(--ui)}.sectiontitle small{font-size:9px}.module-wishes button{min-height:44px}.historylist article{padding:22px;background:#0b1c1244;border-bottom:1px solid var(--glass-line)}.after-action{background:none;box-shadow:none;border:0;padding:16px 0}.after-action .debrief-heading{min-height:44px;align-items:center}.runresult{max-width:900px;margin:0 auto}.runresult>h2{font-size:48px}.runresult button{background:#102b1b;border:1px solid #3d664a}.historylist .decision-timeline strong{position:static}
/* An active connection has its own focused cockpit. */
body[data-playing=true] .shell>header{display:none}body[data-playing=true] .shell{padding-top:20px}body[data-playing=true] .game{padding-top:0}
#runmenu{display:none}body[data-playing=true] #runmenu{display:grid;place-items:center;width:40px;height:40px;min-height:40px;background:none;border:1px solid var(--glass-line);box-shadow:none;font-size:20px;flex:none}
body[data-playing=true] #missions,body[data-playing=true] #abandon{display:none!important}.playhead{border:0!important}.minimapframe{background:#07150ddd;box-shadow:none;border:1px solid #2d573c}.map{background-color:#050e0a;box-shadow:inset 0 0 65px #0004}.map .node{background:#07180e;box-shadow:none;border:1px solid #7db891}.map .node::before{display:none}.map .node.current{background:#b6ffcb;box-shadow:0 0 30px #9dffb533}.map .node.current::after{border-color:#91e9a9}.mapstamp{display:none}
body[data-busy=true] .map::after{content:'SECURITY PHASE';position:absolute;bottom:10px;right:12px;z-index:10;padding:8px 12px;background:#07150f;color:#d1ffdd;font:11px var(--mono);letter-spacing:1px;border-left:2px solid var(--cyan);pointer-events:none}
#run-menu{width:min(420px,calc(100vw - 32px));padding:24px;background:#07150d;border:1px solid #6da982;box-shadow:0 0 80px #000;color:#c7f8d4}#run-menu::backdrop{background:#010805cc}.menu-top{display:flex;align-items:center;justify-content:space-between}.menu-top h2{font:24px var(--ui);margin:0}.menu-top button{background:none;border:0;font-size:24px;width:44px;height:44px}#run-menu p{font:13px/1.6 var(--mono);color:#99bda4;margin:20px 0}#run-menu>button{display:block;width:100%;text-align:left;min-height:48px;margin-top:8px;padding:12px;background:#112b1b;border:0;font:14px var(--mono)}#run-menu #menu-resume{background:#b6f4c7;color:#0b2012}#run-menu #menu-disconnect{color:#f0c291;background:none}
button:focus-visible,a:focus-visible{outline:2px solid #c4ffcf;outline-offset:4px}
@media(max-width:700px){
 .shell{padding:0 16px 20px}.shell>header{height:60px;gap:10px}.brand{font-size:20px}.hubnav{gap:2px;margin-bottom:20px;justify-content:space-between}.hubnav button{padding:10px 8px;gap:6px;min-height:44px}.navkey-label{font-size:11px}.navkey-symbol .icon{width:14px;height:14px}
 .missionselect{gap:16px}.missionselect .levels{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:2px 2px 14px;scroll-padding:2px}.missionselect .levels button.terminal-contract{flex:0 0 88%;min-width:0;min-height:385px;padding:22px;scroll-snap-align:start}.contract-name{font-size:32px;min-height:70px}.contract-identity{margin:25px 0 18px}.contract-kind{margin-bottom:20px}.contract-effects{margin:18px 0;min-height:64px}.contract-data{gap:32px}.contract-topline{font-size:10px}.contract-reward{font-size:24px}
 .operation-board{padding:12px 0}.operation-tracks{grid-template-columns:1fr;gap:26px}.operation-track{padding:0}.operation-plaque{margin-bottom:12px}.operation-display{padding:0}.operation-blueprint{margin-top:10px}.operation-track .operation-display p{font-size:13px}
 .briefgrid{grid-template-columns:1fr;gap:8px}.hubpanel{padding:8px 0}.briefing>h2{font-size:30px;margin:18px 0}.briefing .briefsteps{margin:18px 0}.briefing .briefsteps li{font-size:17px}.brief-effect p{font-size:13px!important;margin-bottom:8px!important}.brief-intel p{font-size:13px!important}.briefpay{padding-top:18px}.brief-issuer .corp-logo{width:32px;height:32px}.brief-issuer .corp-wordmark b{font-size:20px}.brief-issuer .corp-wordmark small{font-size:6px}.briefsecurity{font-size:10px}.bounty-display{padding:16px 12px}.counter-rail{padding:0 0 18px}.market-item{padding:15px}.dealer-stock{gap:16px}.counter-foot{font-size:8px}.sectiontitle{align-items:flex-start;gap:10px}.sectiontitle small{max-width:130px;text-align:right}.shell-product{padding:18px}.historylist article{padding:16px}.historylist h2{font-size:22px}.runresult>h2{font-size:34px}
 body[data-playing=true] .shell{height:100dvh;min-height:0;padding:max(8px,env(safe-area-inset-top)) 10px max(8px,env(safe-area-inset-bottom));overflow:hidden}
 body[data-playing=true] #gamescreen{grid-template-rows:auto minmax(100px,1fr) auto;gap:6px}
 body[data-playing=true] .missiontitle{margin-bottom:9px;gap:10px}body[data-playing=true] .missiontitle #leveltitle{font-size:19px}body[data-playing=true] #runmenu{width:36px;height:36px;min-height:36px}
 body[data-playing=true] .console{margin:0;padding:10px 8px}body[data-playing=true] .network{overflow:hidden}body[data-playing=true] .map{min-height:100px}body[data-playing=true] .feed{padding:0}body[data-playing=true] #log{margin:0;min-height:16px}body[data-playing=true] .panelhead{display:none}body[data-playing=true] .telemetry{grid-column:1/-1}body[data-playing=true] .telemetry summary{min-height:24px;line-height:24px}body[data-playing=true] .telemetry[open]>div{bottom:28px}
}
@media(max-height:700px) and (max-width:700px){body[data-playing=true] .console .mobilecontrols .actions button{min-height:65px}body[data-playing=true] .console .actiontext small{font-size:9px}body[data-playing=true] .deckplate{padding-bottom:5px}body[data-playing=true] .dpad{grid-template-rows:repeat(3,40px)}body[data-playing=true] .metriclabel{font-size:8px}body[data-playing=true] .hud .metricvalue{height:20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;scroll-behavior:auto!important}}
.counter-balance{background:none;border:0;box-shadow:none;padding:0}.counter-balance small{font-size:9px;color:var(--muted-phosphor)}
.price-ticket,.price-ticket b,.price-ticket>span{color:var(--phosphor)}.price-ticket:disabled{color:#96b39f;opacity:.65}.price-ticket:disabled b,.price-ticket:disabled>span{color:#96b39f}.price-ticket:disabled{background:#0a1810}
#resume{font:13px var(--mono);text-align:left;background:#122f1e;color:var(--phosphor);border:1px solid #456f52;box-shadow:none;padding:14px 18px;min-height:48px}
@media(max-width:700px){.missionselect #resume{margin:0}.missionselect .levels button.terminal-contract{min-height:400px}.contract-name{min-height:58px}.contract-identity{margin:22px 0 18px}.contract-kind{margin-bottom:18px}.contract-effects{min-height:60px;margin:16px 0}.contract-bottom{padding-top:10px}}
.hubnav button.selected,.hubnav button.selected:hover:not(:disabled),.hubnav button.selected:active{background:#b7f8ca;color:#08190e;box-shadow:none;transform:none}
.map{overflow:hidden}.map-motion-ghosts{position:absolute;inset:0;pointer-events:none;z-index:2}.route-transition{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:12;background:#07180eed;color:#d4ffe0;padding:6px 12px;font:12px var(--mono);letter-spacing:2px;pointer-events:none}
.map .link-pulse{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}.link-pulse line{stroke:#e0ffe9;stroke-width:3;stroke-linecap:square;filter:drop-shadow(0 0 4px #b0ffca) drop-shadow(0 0 9px #72ff98)}
/* The result is a programmatic reading destination, not an interactive control. */
#runresult:focus,#runresult:focus-visible{outline:none}
/* A continuous terminal transcript: scrolling belongs to the page. */
.after-action .decision-timeline{max-height:none;overflow:visible;margin:12px 0;list-style:none;padding:0}
.after-action .decision-timeline li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;padding:9px 0;font:12px/1.5 var(--mono);overflow-wrap:anywhere}
.after-action .decision-cycle{font:11px/1.7 var(--mono);color:var(--muted-phosphor)}
.decision-command{display:flex;flex-wrap:wrap;gap:3px 12px;align-items:baseline;color:var(--phosphor)}
.decision-command b{font:600 12px/1.5 var(--mono)}.decision-intent{color:var(--cyan);font-size:11px}
.after-action .decision-timeline p{font:12px/1.5 var(--mono);margin:2px 0;color:#b0cdb9}
.after-action .decision-timeline .belief-record{font-size:10px;color:var(--muted-phosphor)}
.after-action .decision-timeline .decision-source{display:block;font:9px/1.5 var(--mono);letter-spacing:0;color:var(--muted-phosphor);margin-top:2px}
.after-action .debrief-events p{font:11px/1.5 var(--mono);margin:5px 0}
@media(max-width:700px){.after-action .decision-timeline li{gap:7px;grid-template-columns:26px minmax(0,1fr)}.decision-command{gap:2px 8px}.after-action .debrief-heading{font-size:15px}.after-action .debrief-heading span{font-size:10px}}
.contract-effects>span{display:flex;align-items:center;gap:8px;min-height:23px}.contract-effects .icon{width:16px;height:16px;flex:0 0 16px;color:var(--phosphor)}.contract-effects>span>span{min-width:0}
/* Desktop cockpit uses the available display height instead of a fixed map. */
@media(min-width:701px){
 body[data-playing=true] .shell{max-width:none;width:100%;height:100dvh;min-height:640px;padding:20px 28px 16px;display:flex;flex-direction:column}
 body[data-playing=true] .shell main{flex:1;min-height:0;display:flex;flex-direction:column}
 body[data-playing=true] #gamescreen{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,25vw,360px);grid-template-rows:auto minmax(0,1fr);gap:16px 28px;padding:0}
 body[data-playing=true] .playhead{grid-column:1/-1;grid-row:1;margin:0;padding:0 0 6px;min-height:64px}
 body[data-playing=true] .network{grid-column:1;grid-row:2;display:flex;flex-direction:column;min-height:0;min-width:0}
 body[data-playing=true] .mission{flex:none;min-height:30px;padding:0 0 10px;margin:0}
 body[data-playing=true] .map{flex:1;height:auto;min-height:0;width:100%;margin:0}
 body[data-playing=true] .mapfoot{flex:none;padding:10px 0 0;min-height:28px}
 body[data-playing=true] #gamescreen>aside{grid-column:2;grid-row:2;display:flex;flex-direction:column;min-width:0;min-height:0;gap:16px;padding-top:30px}
 body[data-playing=true] .console{flex:none;margin:0;padding:16px}
 body[data-playing=true] .console .actions button{min-height:100px;padding:12px 6px}
 body[data-playing=true] .console .actiontext{font-size:16px}
 body[data-playing=true] .console .actiontext small{font-size:11px}
 body[data-playing=true] .feed{margin:0;padding:0;border:0}
 body[data-playing=true] .telemetry{margin:0;padding:0;border:0}
 body[data-playing=true] .telemetry[open]{min-height:0;overflow:auto}
 body[data-playing=true] .map .node{width:72px;height:72px;min-height:72px}
 body[data-playing=true] .map .node .num{font-size:26px;line-height:30px}
}
@media(min-width:701px) and (max-height:740px){
 body[data-playing=true] .shell{padding-top:12px;min-height:540px}
 body[data-playing=true] .console{padding:12px}
 body[data-playing=true] .console .actions button{min-height:84px;padding:8px 4px}
 body[data-playing=true] #gamescreen>aside{gap:10px}
}
/* Float the overview inside the display, with breathing room on both axes. */
.map .minimapframe{top:20px;right:20px}
@media(max-width:700px){.map .minimapframe{top:12px;right:12px}}
#runmenu .icon{display:block;width:20px;height:20px;flex:none;color:var(--phosphor)}
body[data-playing=true] #runmenu{padding:8px;background:#0b1d12;border-color:#395e45}
body[data-playing=true] #runmenu:hover{background:#183923;border-color:#88c89c}
body[data-playing=true] #runmenu:active{background:#234b30}
/* A quiet echo of the completed network, using the real run topology. */
.result-echo{display:none}.result-copy{min-width:0}.result-copy>h2{font-size:48px}.result-copy>small{font:11px var(--mono);letter-spacing:1px;color:var(--muted-phosphor)}
@media(min-width:1000px){
 #runresult{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.55fr);gap:64px;max-width:1220px;align-items:start}
 .result-copy{grid-column:1;grid-row:1}
 .result-echo{display:block;grid-column:2;grid-row:1;position:sticky;top:48px;margin-top:40px;pointer-events:none;color:var(--cyan)}
 .result-echo svg{display:block;width:100%;overflow:visible}
 .echo-network{animation:echo-settle 1.2s ease-out both}
 .echo-network path{stroke:currentColor;stroke-width:.65;opacity:.27}
 .echo-network rect{fill:currentColor;opacity:.48}
 .echo-position>rect:first-child{stroke:currentColor;stroke-width:1.2;fill:#07140c}
 .echo-ring{stroke:currentColor;stroke-width:1;animation:echo-arrival 1.8s ease-out both}
 .echo-lost .echo-position{animation:echo-disconnect 1.5s ease-out both}
}
@keyframes echo-settle{from{opacity:0}to{opacity:1}}
@keyframes echo-arrival{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(2)}}
@keyframes echo-disconnect{from{opacity:1}to{opacity:.15}}
@media(max-width:700px){.result-copy>h2{font-size:34px}}
@media(prefers-reduced-motion:reduce){.result-echo *{animation:none!important}.echo-ring{display:none}.echo-lost .echo-position{opacity:.15}}
/* The route is ambient context behind the debrief, never a competing panel. */
@media(min-width:1000px){
 #runresult{position:relative;display:block;isolation:isolate;max-width:1220px;min-height:600px}
 .result-copy{position:relative;z-index:1;max-width:780px}
 .result-echo{position:absolute;z-index:0;inset:-40px -70px auto auto;width:min(78vw,900px);margin:0;opacity:.42;mask-image:linear-gradient(90deg,transparent 0%,#0003 30%,#000 70%),linear-gradient(#000,transparent);mask-composite:intersect;max-width:100%}
 .result-echo .echo-network path{opacity:.3}.result-echo .echo-network rect{opacity:.5}
 .echo-route{stroke:var(--phosphor);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:echo-route-draw var(--route-duration,4s) linear .4s forwards;filter:drop-shadow(0 0 2px #98ffb055)}
}
@keyframes echo-route-draw{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.echo-route{animation:none;stroke-dashoffset:0}}
/* Keep the longer wordmark clear of resource indicators on narrow displays. */
.brand{white-space:nowrap}
@media(max-width:700px){.shell>header{gap:8px}.shell>header .brand{font-size:17px;letter-spacing:.3px;gap:5px}.shell>header .brandmark{font-size:15px}}
@media(max-width:380px){.shell>header .brand{font-size:15px}.shell>header{gap:6px}}
/* Route monogram: three junctions and a smaller runner at the open endpoint. */
.shell>header .brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none;flex-shrink:0}
.runner-logo{display:block;width:32px;height:32px;flex:none;color:var(--phosphor)}
.runner-wordmark{display:flex;flex-direction:column;gap:2px;font:700 17px/.95 var(--ui);letter-spacing:2.4px;color:var(--phosphor)}
.runner-wordmark>span{font-size:13px;letter-spacing:2px}
.brand:hover .runner-logo{filter:drop-shadow(0 0 5px #98ffb050)}
@media(max-width:700px){.shell>header .brand{gap:7px}.runner-logo{width:26px;height:26px}.runner-wordmark{font-size:14px;letter-spacing:1.7px}.runner-wordmark>span{font-size:10px;letter-spacing:1.7px}}
/* Keep hub navigation anchored as screens change height or content margins. */
html{scrollbar-gutter:stable}
#hubcontent{display:flow-root;overflow-anchor:none}
@media(max-width:700px){
 .shell>header{flex-wrap:nowrap;flex-shrink:0}
 .hubnav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;height:44px;flex-shrink:0}
 .hubnav button{min-width:0;width:100%;white-space:nowrap}
 #hubcontent>.workbench{margin-top:0}
 #hubcontent>.dealer-counter,#hubcontent>.historylist{margin-top:0}
}
/* A single-screen equipment workbench, with paged inventory and readable inspection. */
body[data-screen=deck] .shell{height:100dvh;min-height:620px;display:flex;flex-direction:column;padding-bottom:12px}
body[data-screen=deck] main{flex:1;min-height:0;display:flex;flex-direction:column}
body[data-screen=deck] .hubnav{flex:none;margin-bottom:12px}
body[data-screen=deck] #hubcontent{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}
.deck-tabs{display:flex;gap:8px;flex:none}.deck-tabs button{min-height:36px;padding:7px 14px;font:12px var(--mono);background:none;border:1px solid #34523e;box-shadow:none}.deck-tabs button[aria-pressed=true]{background:#173822;border-color:#87bf98}
.deck-page{min-height:0;flex:1}
.deck-page[data-deck-page=programs]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-rows:36px minmax(160px,1fr) auto;gap:12px 24px}
.deck-page .workbench{grid-column:1;grid-row:1/3;margin:0;padding:18px;min-height:0}
.deck-page .hardware-vents{margin:12px 0;height:8px}.deck-page .hardware-bottom{margin-top:12px;padding-top:10px}.deck-page .hardware-top{gap:10px}.deck-page .hardware-brand{font-size:21px}.deck-page .bus-display{padding:8px 12px}.deck-page .socket-bank{gap:12px}.deck-page .decksocket{min-height:0;padding:10px 7px 16px}.deck-page .socket-indicator{margin-top:12px}
.case-navigation{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:10px;font:11px var(--mono)}.case-navigation button{min-height:36px;width:40px;padding:4px;background:#122b1b;border:1px solid #34523e}
.deck-page .module-case{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:12px;min-height:0;align-content:center;margin:0}
.deck-page .case-cell{min-width:0}.deck-page .loose-module{width:100%}.deck-page .cartridge{padding:10px 6px 14px}.deck-page .cart-label{padding:8px 6px}.deck-page .cart-face{padding:10px 0;gap:8px}.deck-page .cart-face strong{font-size:18px}.deck-page .cart-face .icon{width:25px;height:25px}.deck-page .cart-effect{font:12px/1.4 var(--ui)!important}.deck-page .cart-series{font-size:7px}.deck-page .cart-serial{font-size:5px}.deck-page .cart-grip{margin-bottom:8px}
.deck-page .deck-instruction{grid-column:1;grid-row:3;margin:0;font:11px/1.5 var(--mono);align-self:center}
.deck-page .module-inspector{grid-column:2;grid-row:3;padding:14px;margin:0;min-height:130px;background:#0a1b11;border:1px solid #34523e}
.deck-page .module-inspector>span{font:600 15px var(--ui);color:var(--phosphor)}.deck-page .module-inspector p{font:12px/1.4 var(--mono);margin:5px 0;color:#b7d6c1}.deck-page .module-inspector p:first-of-type{font:600 17px/1.35 var(--ui);color:#dcffe5}.deck-page .module-inspector p:last-child{font-size:10px;color:#8fb69b}
.deck-page .hardware-bay>.sectiontitle{margin:0 0 12px}.deck-page .hardware-case{gap:6px}.deck-page .hardware-case button{font-size:12px;min-height:36px}.deck-page .hardware-sockets{margin-bottom:10px}
@media(max-width:700px){
 body[data-screen=deck] .shell{padding:0 16px max(8px,env(safe-area-inset-bottom));min-height:620px}
 body[data-screen=deck] .shell>header{height:60px;min-height:60px}
 body[data-screen=deck] .hubnav{margin-bottom:8px}
 body[data-screen=deck] #hubcontent{gap:8px}
 .deck-tabs{gap:6px}.deck-tabs button{flex:1;min-height:32px;padding:6px;font-size:11px}
 .deck-page[data-deck-page=programs]{grid-template-columns:1fr;grid-template-rows:minmax(175px,1fr) 18px 30px 118px 114px;gap:6px}
 .deck-page .workbench{grid-column:1;grid-row:1;padding:10px 12px;display:flex;flex-direction:column}
 .deck-page .hardware-brand{font-size:15px;letter-spacing:1px}.deck-page .hardware-brand small{display:none}.deck-page .bus-display{min-width:0;display:flex;align-items:center;gap:8px;padding:3px 7px}.deck-page .bus-display b{font-size:16px;margin:0}.deck-page .bus-display small{font-size:6px}
 .deck-page .hardware-vents,.deck-page .hardware-bottom,.deck-page .socket-indicator{display:none}.deck-page .socket-bank{margin-top:8px;gap:9px;flex:1;min-height:0}.deck-page .socket-title{font-size:7px;margin-bottom:3px}.deck-page .decksocket{padding:5px 5px 10px;min-height:0;height:calc(100% - 14px)}
 .deck-page .cartridge{padding:6px 4px 10px}.deck-page .cart-label{padding:5px}.deck-page .cart-grip{height:4px;margin:0 0 4px}.deck-page .cart-face{padding:5px 0;gap:4px}.deck-page .cart-face strong{font-size:14px}.deck-page .cart-face .icon{width:20px;height:20px}.deck-page .cart-series{font-size:6px}.deck-page .cart-level{margin-top:5px}.deck-page .cart-serial,.deck-page .cart-effect,.deck-page .cart-rule{display:none}
 .deck-page .deck-instruction{grid-column:1;grid-row:2;font-size:10px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .case-navigation{grid-column:1;grid-row:3;font-size:10px}.case-navigation button{height:30px;min-height:30px}
 .deck-page .module-case{grid-column:1;grid-row:4;padding:5px 10px 10px;gap:12px;align-content:start}.deck-page .case-status{display:none}.deck-page .loose-module{padding:0}.deck-page .module-case .cart-face{flex-direction:row;justify-content:flex-start;gap:5px}.deck-page .module-case .cart-face strong{font-size:12px}.deck-page .module-case .cart-face .icon{width:16px;height:16px}
 .deck-page .module-inspector{grid-column:1;grid-row:5;padding:8px 10px;min-height:0}.deck-page .module-inspector>span{font-size:13px}.deck-page .module-inspector p{font-size:10px;margin:3px 0}.deck-page .module-inspector p:first-of-type{font-size:15px}.deck-page .module-inspector p:last-child{font-size:9px}
 .deck-page .hardware-socket{padding:10px;gap:5px}.deck-page .hardware-socket span{font-size:11px}.deck-page .hardware-case button{font-size:11px;padding:7px;min-height:34px}.deck-page .hardware-case .icon{width:14px;height:14px}.deck-page .hardware-bay #hardware-hint{font-size:11px}.deck-page .sectiontitle h2{font-size:19px}
}
.deck-page .deck-instruction{min-height:0;padding:0;position:relative;z-index:1}
@media(max-width:700px){.deck-page .workbench{box-shadow:inset 0 0 0 3px #101c15}.deck-page .module-inspector{overflow-wrap:anywhere}.deck-page .cart-face strong{overflow-wrap:anywhere}}
@media(max-width:700px){
 .deck-page .module-case .cart-face{flex-direction:column;align-items:flex-start;gap:3px;padding:3px 0}
 .deck-page .module-case .cart-series{display:none}
 .deck-page .module-case .cart-face strong{font-size:11px;white-space:nowrap;letter-spacing:0}
 .deck-page .module-case .cart-face .icon{width:14px;height:14px}
 .deck-page .module-case .cartridge-overclock .cart-face strong,.deck-page .module-case .cartridge-radar .cart-face strong{font-size:9px}
}
/* Cartridges are manufactured objects: identical proportions in every deck tray. */
.deck-page{--module-width:min(11vw,17vh,145px)}
.deck-page .cartridge,.deck-page .compact.cartridge{width:var(--module-width);height:auto;aspect-ratio:2/3;min-height:0;margin:0 auto;padding:8px 6px 10px;display:grid;grid-template-rows:6px minmax(0,1fr) 10px 8px;gap:6px;transform:none;box-sizing:border-box}
.deck-page .cart-grip{height:6px;margin:0}
.deck-page .cart-label{min-height:0;display:flex;flex-direction:column;padding:6px}
.deck-page .cart-series{font-size:6px;letter-spacing:0}
.deck-page .cart-face{flex:1;min-height:0;gap:5px;padding:7px 0;justify-content:center}
.deck-page .cart-face strong{font-size:16px;line-height:1;white-space:nowrap;letter-spacing:0}
.deck-page .cartridge-overclock .cart-face strong{font-size:13px}
.deck-page .cart-face .icon{width:21px;height:21px}
.deck-page .cart-effect{font:11px/1.25 var(--ui)!important;margin-top:6px}
.deck-page .cart-level{margin:0;height:10px}.deck-page .cart-serial{margin:0;font-size:4px;line-height:8px}
.deck-page .decksocket,.deck-page .loose-module{display:block;width:calc(var(--module-width) + 20px);height:auto;min-height:0;margin:0 auto;padding:8px 8px 16px;box-sizing:border-box}
.deck-page .socket-wrap{min-width:0}.deck-page .case-cell{padding:0;border:0;background:none;box-shadow:none}
.deck-page .loose-module{background:#050d08;border:2px solid #253c2c;transform:none}
.deck-page .loose-module:hover{transform:none}
@media(min-width:701px){
 .deck-page[data-deck-page=programs]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:36px auto minmax(110px,1fr);align-content:start}
 .deck-page .workbench{align-self:start;width:100%;padding:14px;box-shadow:inset 0 0 0 3px #101c15}
 .deck-page .hardware-top{height:48px}.deck-page .hardware-vents{height:6px;margin:8px 0}.deck-page .socket-title{height:13px;margin-bottom:10px}.deck-page .socket-indicator{margin-top:12px}
 .deck-page .module-case{align-content:start;align-self:start;padding:53px 14px 20px;gap:12px}
 .deck-page .case-status{margin:16px 0 0;font-size:7px}
 .deck-page .hardware-bottom{height:33px;margin-top:12px;padding-top:8px}
 .deck-page .module-inspector{grid-column:1/-1;grid-row:3;min-height:0;align-self:start}
 .deck-page .deck-instruction{grid-column:1;grid-row:2;align-self:end;transform:translateY(28px);font-size:10px}
 .deck-page .module-inspector{margin-top:28px}
}
@media(max-width:700px){
 .deck-page{--module-width:64px}
 .deck-page[data-deck-page=programs]{grid-template-rows:minmax(175px,1fr) 18px 30px 130px 114px}
 .deck-page .socket-bank{align-content:center;flex:1}.deck-page .socket-title{max-width:84px;margin:0 auto 4px}
 .deck-page .cartridge,.deck-page .compact.cartridge{padding:5px 4px 7px;grid-template-rows:4px minmax(0,1fr) 6px;gap:4px}
 .deck-page .cart-grip{height:4px}.deck-page .cart-label{padding:4px}.deck-page .cart-face,.deck-page .module-case .cart-face{flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:3px 0}
 .deck-page .cart-face strong,.deck-page .module-case .cart-face strong{font-size:10px}
 .deck-page .cartridge-overclock .cart-face strong,.deck-page .cartridge-radar .cart-face strong{font-size:8px}
 .deck-page .cart-face .icon,.deck-page .module-case .cart-face .icon{width:16px;height:16px}
 .deck-page .cart-series,.deck-page .cart-effect,.deck-page .cart-serial,.deck-page .cart-rule{display:none}
 .deck-page .cart-level{height:6px}.deck-page .decksocket,.deck-page .loose-module{padding:6px 8px 12px;height:auto}
 .deck-page .module-case{padding:6px;gap:6px}.deck-page .socket-bank{gap:6px}
}
/* Notices never resize the screen, including errors and finish selection. */
#notice{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:50;width:max-content;max-width:calc(100vw - 32px);margin:0;box-shadow:0 4px 20px #0008}
@media(min-width:701px){
 .deck-page{--module-width:min(11vw,15vh,145px)}
 .deck-page .module-case{padding-top:59px}
 .deck-page .module-inspector{margin-top:20px;padding:10px 14px}
 .deck-page .deck-instruction{transform:translateY(22px)}
}
/* Physical expansion boards and a calibrated display preview. */
.custom-label{display:flex;align-items:center;justify-content:space-between;gap:10px;font:11px var(--mono);letter-spacing:.7px;color:#b8d9c2}.custom-label>span{font-size:8px;color:#829e8c}
.expansion-layout{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:22px;height:100%;align-content:start}
.expansion-chassis,.finish-preview{padding:20px;background:linear-gradient(135deg,#344238,#17271d);border:1px solid #657e6c;box-shadow:inset 0 0 0 4px #102017;min-width:0}
.expansion-bays{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0 14px}.expansion-bay{display:flex;flex-direction:column;align-items:center;gap:14px;min-height:210px;padding:14px 10px;background:#061009;border:2px solid #344e3c;box-shadow:inset 0 3px 14px #000a;text-align:center}.expansion-bay>small{align-self:flex-start;font:9px var(--mono);color:#8caa95}.expansion-bay b{font:17px var(--ui)}.bay-status{font:8px var(--mono);color:#8bb699}.empty-connector{display:grid;place-items:center;width:80px;height:86px;background:repeating-linear-gradient(90deg,#1c2c21 0 4px,#080e0a 4px 9px);border:1px solid #2f4b38;font:26px var(--mono);color:#526d5b}
.expansion-chip{display:grid;place-items:center;position:relative;width:80px;height:86px;padding:12px;background:repeating-linear-gradient(90deg,#a18f58 0 3px,#131d15 3px 7px);border:5px solid #243b2b;box-shadow:0 4px 0 #020805,inset 0 0 0 2px #73836b}.expansion-chip:before{content:'';position:absolute;inset:9px;background:linear-gradient(135deg,#465f46,#1d3022);border:1px solid #7b997c}.expansion-chip .icon{position:relative;width:30px;height:30px;color:#c7e7b9}.expansion-chassis #hardware-hint{font:11px/1.5 var(--mono);min-height:32px;color:#a6c0ae;margin:12px 0}
.custom-key{min-height:40px;padding:10px 14px;border:1px solid #4c7057;background:#142d1d;color:var(--phosphor);font:12px var(--mono);box-shadow:none}.custom-key:disabled{opacity:.5}
.expansion-library{min-width:0}.expansion-stock{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:24px 12px;margin-top:14px;background:repeating-linear-gradient(45deg,#101a13 0 2px,#0c150f 2px 5px);border:1px solid #34513e}.expansion-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:18px;padding:16px 6px;min-width:0;background:#0a150e;border:1px solid #2d4735}.expansion-item b{font:15px/1.2 var(--ui);min-height:36px}.expansion-item small{font:8px var(--mono);color:#91ab99}.expansion-item.selected{border-color:#b3e7bc;background:#193022}
.custom-inspector{padding:16px 20px;background:#0a1b11;border:1px solid #34523e;min-width:0}.expansion-layout>.custom-inspector{grid-column:1/-1}.custom-inspector>small{font:9px var(--mono);color:#8eac98}.custom-inspector h3{font:600 22px var(--ui);margin:5px 0 10px;color:var(--phosphor)}.custom-inspector p{font:15px/1.5 var(--ui);margin:8px 0;color:#bed7c6}.custom-inspector>span{font:11px var(--mono);color:#90ae9a}.custom-inspector .custom-key{margin-left:18px}
.finish-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:28px;align-items:start}.finish-preview{padding:24px}.finish-display{padding:20px;background:radial-gradient(ellipse,#14351e,#030b06);border:6px solid #09120c;box-shadow:0 1px 0 #6d8070,inset 0 0 35px #0008;margin:24px 0}.preview-status,.preview-code{display:flex;justify-content:space-between;font:10px var(--mono);color:var(--phosphor);gap:10px}.preview-code{font-size:8px}.finish-display svg{display:block;width:100%;margin:34px 0;color:var(--cyan)}.finish-display svg path{fill:none;stroke:currentColor;stroke-width:1}.finish-display svg rect{fill:#102919;stroke:currentColor;stroke-width:1}.finish-display svg .preview-current{fill:currentColor;filter:drop-shadow(0 0 5px #98ffb055)}.finish-sample-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.finish-sample-keys>span{display:grid;place-items:center;padding:18px;background:linear-gradient(#344c3b,#1a2f21);border:1px solid #59765f;box-shadow:0 3px 0 #030a05,inset 0 1px #9fc6a633}.finish-sample-keys .icon{width:25px;height:25px}
.finish-options{display:grid;gap:10px;margin:18px 0}.finish-options button{display:flex;align-items:center;text-align:left;gap:16px;padding:15px;background:#0c1e13;border:1px solid #34513e;min-height:70px}.finish-options button[aria-pressed=true]{border-color:var(--phosphor);background:#173422}.finish-options button>span:nth-child(2){flex:1;font:18px var(--ui)}.finish-options small{display:block;font:9px var(--mono);margin-top:5px;color:#91af9c}.finish-options .icon{width:18px;height:18px}.finish-swatch{width:28px;height:28px;background:var(--swatch);box-shadow:inset 0 0 0 4px #0005}.finish-controls .custom-inspector .custom-key{margin:8px 0 0}.finish-controls #finish-feedback{font:10px var(--mono);min-height:15px}
@media(max-width:700px){
 .expansion-layout{grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr);gap:10px}
 .expansion-chassis{padding:12px}.custom-label{font-size:9px}.custom-label>span{font-size:7px}.expansion-bays{gap:10px;margin:10px 0 7px}.expansion-bay{min-height:126px;padding:8px;gap:6px}.expansion-bay b{font-size:14px}.expansion-bay>small{font-size:7px}.bay-status{font-size:6px}.expansion-chip,.empty-connector{width:52px;height:56px}.expansion-chip{padding:6px;border-width:3px}.expansion-chip:before{inset:5px}.expansion-chip .icon{width:22px;height:22px}.expansion-chassis #hardware-hint{font-size:9px;min-height:14px;margin:6px 0}.custom-key{min-height:32px;padding:6px 10px;font-size:10px}.expansion-chassis #remove-hardware{width:100%}
 .expansion-stock{gap:8px;padding:8px;margin-top:6px}.expansion-item{gap:5px;padding:6px;min-height:102px}.expansion-item b{font-size:12px;min-height:28px}.expansion-item small{font-size:6px}.custom-inspector{padding:10px 12px}.custom-inspector>small{font-size:7px}.custom-inspector h3{font-size:17px;margin:3px 0 5px}.custom-inspector p{font-size:12px;line-height:1.35;margin:5px 0}.custom-inspector>span{font-size:9px}.custom-inspector .custom-key{margin:6px 0 0;min-height:28px}
 .finish-layout{grid-template-columns:1fr;gap:12px}.finish-preview{padding:12px}.finish-display{padding:10px;border-width:4px;margin:10px 0}.finish-display svg{height:76px;margin:8px 0}.preview-status{font-size:8px}.preview-code{font-size:6px}.finish-sample-keys{gap:8px}.finish-sample-keys>span{padding:8px}.finish-sample-keys .icon{width:18px;height:18px}.finish-controls>.custom-label{display:none}.finish-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:0 0 10px}.finish-options button{flex-direction:column;gap:6px;padding:8px 3px;text-align:center;min-height:90px}.finish-options button>span:nth-child(2){font-size:13px}.finish-options small{font-size:6px}.finish-options .icon{display:none}.finish-swatch{width:20px;height:20px}.finish-controls .custom-inspector p{font-size:12px}.finish-controls .custom-inspector h3{font-size:18px}
}
@media(max-width:700px){
 .expansion-chassis{position:relative;padding:10px}
 .expansion-bays{margin-top:8px}.expansion-bay{min-height:112px;gap:4px}
 .expansion-chassis #hardware-hint{padding-right:92px;min-height:28px;display:flex;align-items:center;margin-bottom:0}
 .expansion-chassis #remove-hardware{position:absolute;right:10px;bottom:10px;width:88px;font-size:8px;padding:4px;min-height:28px}
 .expansion-stock{padding:6px}.expansion-item{min-height:90px;gap:4px}.expansion-item .expansion-chip{width:44px;height:46px}.expansion-item b{min-height:25px;font-size:11px}
 .expansion-layout{gap:8px}.expansion-layout>.custom-inspector{padding:8px 10px}.expansion-layout>.custom-inspector h3{font-size:16px}.expansion-layout>.custom-inspector p{font-size:11px;margin:4px 0}.expansion-layout>.custom-inspector .custom-key{min-height:26px;padding:4px 8px}
}
@media(min-width:701px) and (max-height:800px){
 .expansion-chassis{padding:16px}.expansion-bays{margin:14px 0 10px}.expansion-bay{min-height:170px;gap:9px;padding:10px}.expansion-layout{gap:16px}.expansion-stock{padding:16px 12px}.expansion-item{gap:12px;padding:12px 6px}
}
/* Keep the enclosure bevel, without the detached horizontal shadow rail. */
#gamescreen .console{box-shadow:inset 0 0 0 3px #0c150f,inset 0 0 0 4px #354539,0 10px 22px #0004}
/* Archived route telemetry stays readable at every screen size. */
.historylist .archive-run{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(240px,1fr);gap:24px;align-items:start}
.archive-copy{min-width:0}
.archive-route{min-width:0;position:sticky;top:20px;text-align:right}
.archive-route .result-echo{display:block;position:relative;inset:auto;width:100%;max-width:480px;margin:0 auto;opacity:1;mask-image:none;color:var(--cyan)}
.archive-route svg{display:block;width:100%;overflow:visible}
.archive-route .echo-network path{stroke:currentColor;stroke-width:.65;opacity:.25}
.archive-route .echo-network rect{fill:currentColor;opacity:.5}
.archive-route text{fill:currentColor;font:9px var(--mono);opacity:.8}
.archive-route .echo-position>rect:first-child{stroke:currentColor;stroke-width:1.2;fill:#07140c}
.archive-route .echo-route{stroke:var(--phosphor);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:echo-route-draw var(--route-duration,4s) linear .4s forwards}
.archive-route .echo-ring{stroke:currentColor;animation:echo-arrival 1.8s ease-out both}
.archive-route button{font:12px var(--mono);min-height:44px}
.archive-route-missing{font:12px var(--mono);color:var(--muted-phosphor)}
@media(max-width:700px){.historylist .archive-run{grid-template-columns:1fr;gap:8px}.archive-route{position:static;grid-row:1}.archive-route .result-echo{max-width:300px}}
@media(prefers-reduced-motion:reduce){.archive-route .echo-route{animation:none;stroke-dashoffset:0}}
/* Terminal commands belong to the display; only the hardware has a casing. */
.hubnav button,.hubnav button.selected,.hubnav button:hover:not(:disabled),.hubnav button.selected:hover:not(:disabled),.hubnav button:active,.hubnav button.selected:active{
 background:transparent;border:0;box-shadow:none;transform:none;color:var(--muted-phosphor);position:relative
}
.hubnav button.selected,.hubnav button.selected:hover:not(:disabled){color:var(--phosphor);text-shadow:0 0 12px #98ffb033}
.hubnav button::before{content:'›';position:absolute;left:3px;font:18px var(--mono);opacity:0}
.hubnav button.selected::before{opacity:1}
.deck-tabs{gap:22px}
.deck-tabs button,.deck-tabs button[aria-pressed=true],.deck-tabs button:hover:not(:disabled){border:0;background:none;box-shadow:none;transform:none;padding:7px 0;color:var(--muted-phosphor)}
.deck-tabs button::before{content:'[';visibility:hidden;margin-right:6px}.deck-tabs button::after{content:']';visibility:hidden;margin-left:6px}
.deck-tabs button[aria-pressed=true]{color:var(--phosphor)}
.deck-tabs button[aria-pressed=true]::before,.deck-tabs button[aria-pressed=true]::after{visibility:visible}
.case-navigation{justify-content:center;gap:4px;touch-action:pan-y;user-select:none}
.case-navigation>span{order:0;min-width:160px;text-align:center;font-size:10px;color:var(--muted-phosphor);font-variant-numeric:tabular-nums}
.case-navigation button,.case-navigation button:hover:not(:disabled),.case-navigation button:active{width:44px;min-width:44px;height:36px;min-height:36px;padding:0;border:0;background:none;box-shadow:none;transform:none;color:var(--phosphor);font:26px/1 var(--mono)}
.case-navigation button:disabled{opacity:.2}
.deck-page .module-inspector,.deck-page .custom-inspector{background:none;border:0;box-shadow:none;padding-left:0;padding-right:0}
.deck-page .module-inspector{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(0,1.3fr);column-gap:24px;row-gap:4px}
.deck-page .module-inspector>span{grid-column:1;grid-row:1;color:var(--phosphor)}
.deck-page .module-inspector p{margin:0}
.deck-page .module-inspector p:first-of-type{grid-column:2;grid-row:1}
.deck-page .module-inspector p:nth-of-type(2){grid-column:1;grid-row:2;color:var(--muted-phosphor)}
.deck-page .module-inspector p:last-child{grid-column:2;grid-row:2}
.deck-page .custom-key,.deck-page .custom-key:hover:not(:disabled){background:none;border:0;box-shadow:none;color:var(--phosphor);text-align:left;padding-left:0}
.deck-page .custom-key::before{content:'› ';color:var(--muted-phosphor)}
.finish-options button,.finish-options button[aria-pressed=true]{background:none;border-color:transparent;box-shadow:none}
.finish-options button[aria-pressed=true]{color:var(--phosphor)}
.finish-options button[aria-pressed=false]{color:var(--muted-phosphor)}
.finish-options button[aria-pressed=true] .finish-swatch{outline:1px solid var(--phosphor);outline-offset:4px}
.hubnav button:focus-visible,.deck-tabs button:focus-visible,.case-navigation button:focus-visible,.custom-key:focus-visible{outline:1px dashed var(--phosphor);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.hubnav button:hover:not(.selected),.deck-tabs button:hover:not([aria-pressed=true]),.case-navigation button:hover:not(:disabled){color:var(--phosphor);text-shadow:0 0 10px #98ffb055}}
@media(max-width:700px){
 .hubnav button::before{left:0;font-size:14px}.hubnav button{padding-left:10px}
 .deck-tabs{gap:6px}.deck-tabs button{padding:6px 0}
 .case-navigation button{height:30px;min-height:30px}
 .deck-page .module-inspector{display:block}.deck-page .module-inspector p{margin-top:3px}
}
/* One prompt, one label; a reserved cursor column prevents selection shifts. */
.hubnav button::before{content:none}
.hubnav button,.hubnav button.selected,.hubnav button:hover:not(:disabled){display:flex;align-items:center;justify-content:flex-start;gap:8px}
.nav-cursor{display:inline-block;flex:0 0 1ch;width:1ch;font:14px var(--mono);visibility:hidden;color:var(--phosphor)}
.hubnav button.selected .nav-cursor{visibility:visible}
@media(max-width:700px){.hubnav button,.hubnav button.selected,.hubnav button:hover:not(:disabled){padding:10px 4px;gap:4px}.nav-cursor{font-size:11px}}

@media(min-width:1000px){
 .shell>header .brand{flex:none;margin-right:12px}
 .shell>header .hubnav,body[data-screen=deck] .shell>header .hubnav{flex:0 0 auto;width:auto;height:44px;margin:0;gap:4px}
 .shell>header .hubnav button{padding:10px 10px;white-space:nowrap}
 .shell>header .daily{margin-left:auto}
}
@media(max-width:700px){
 .shell>header,body[data-screen=deck] .shell>header{height:60px;min-height:60px;flex-shrink:0}
}
/* Hover must never change a navigation command's geometry. */
@media(min-width:1000px){
 .shell>header .hubnav button,
 .shell>header .hubnav button:hover:not(:disabled),
 .shell>header .hubnav button.selected,
 .shell>header .hubnav button.selected:hover:not(:disabled),
 .shell>header .hubnav button:active{padding:10px;gap:8px;border:0;transform:none}
}
@media(min-width:701px) and (max-width:999px){
 .hubnav button,.hubnav button:hover:not(:disabled),.hubnav button.selected,.hubnav button.selected:hover:not(:disabled),.hubnav button:active{padding:10px 18px;gap:8px;border:0;transform:none}
}
@media(max-width:700px){
 .hubnav button,.hubnav button:hover:not(:disabled),.hubnav button.selected,.hubnav button.selected:hover:not(:disabled),.hubnav button:active{padding:10px 4px;gap:4px;border:0;transform:none}
}

@media(max-width:700px){
 .hubnav,body[data-screen=deck] .hubnav{height:44px;min-height:44px;margin:0 0 8px}
}
/* A consistent focus signal, including pointer-free controller navigation. */
button:focus-visible,a:focus-visible,summary:focus-visible,
body[data-input=gamepad] button:focus,body[data-input=gamepad] a:focus,body[data-input=gamepad] summary:focus{
 outline:2px solid var(--phosphor);outline-offset:3px
}
body[data-input=gamepad] #actions kbd{font-size:10px;letter-spacing:0}
#disconnect-confirm{max-width:420px}#disconnect-confirm button{min-height:44px}
/* Software is phosphor on glass: open records and command prompts, no nested frames. */
.missionselect .levels button.terminal-contract,
.missionselect .levels button.terminal-contract:hover,
.missionselect .levels button.terminal-contract.is-cleared{
 border:0!important;box-shadow:none;outline:none;transform:none;
 background:linear-gradient(180deg,#12301d25,transparent 75%);padding:24px;min-height:360px
}
.terminal-contract::before,.terminal-contract.is-cleared::before{display:none}
.contract-name{position:relative;padding-left:20px;margin-left:-20px;min-height:58px}
.contract-name::before{content:'>';position:absolute;left:0;top:3px;font:20px var(--mono);opacity:0}
.contract-identity{margin:24px 0 20px}.contract-kind{margin-bottom:22px}
.missionselect .levels button.terminal-contract:focus-visible,
body[data-input=gamepad] .missionselect .levels button.terminal-contract:focus{outline:none;background:radial-gradient(ellipse at 30% 35%,#255d393d,transparent 75%)}
.terminal-contract:focus-visible .contract-name::before,body[data-input=gamepad] .terminal-contract:focus .contract-name::before{opacity:1}
.terminal-contract:focus-visible .contract-name,body[data-input=gamepad] .terminal-contract:focus .contract-name{text-shadow:0 0 16px #98ffb044}
@media(hover:hover) and (pointer:fine){.missionselect .levels button.terminal-contract:hover{background:radial-gradient(ellipse at 30% 35%,#255d3925,transparent 75%)}.terminal-contract:hover .contract-name::before{opacity:1}}
/* Shared command treatment for pause, briefing, market, archive and confirmations. */
button.terminal-command,button.terminal-command:hover:not(:disabled),button.terminal-command:active{
 position:relative;background:transparent!important;border:0!important;box-shadow:none!important;transform:none!important;
 color:var(--phosphor);min-height:44px;padding-left:26px;outline:none;text-align:left
}
button.terminal-command::before{content:'>';position:absolute;left:4px;top:50%;transform:translateY(-50%);font:16px var(--mono);opacity:0}
button.terminal-command:focus-visible,body[data-input=gamepad] button.terminal-command:focus{outline:none;background:linear-gradient(90deg,#245d393f,transparent)!important;text-shadow:0 0 10px #98ffb033}
button.terminal-command:focus-visible::before,body[data-input=gamepad] button.terminal-command:focus::before{opacity:1}
@media(hover:hover) and (pointer:fine){button.terminal-command:hover:not(:disabled)::before{opacity:1}button.terminal-command:hover:not(:disabled){background:linear-gradient(90deg,#245d3925,transparent)!important}}
button.terminal-command:disabled{opacity:.45}
#run-menu,#modal,#disconnect-confirm{border:0;box-shadow:0 18px 100px #000b;background:radial-gradient(ellipse at 0 0,#143021,#050e09 70%);padding:32px;max-height:calc(100dvh - 40px);overflow:auto}
#run-menu{width:min(440px,calc(100vw - 32px))}
#run-menu h2,#disconnect-confirm h2{font:600 28px var(--ui);margin:0 44px 18px 0;color:var(--phosphor)}
#run-menu>p{font:12px/1.7 var(--mono);max-width:38ch;margin:0 0 24px;color:var(--muted-phosphor)}
#run-menu button:not(#menu-close){display:block;width:100%;font:15px var(--mono);min-height:48px;margin:2px 0;padding:12px 12px 12px 26px}
#run-menu #menu-disconnect{color:var(--amber);margin-top:18px}
#run-menu #menu-close,#modal #close{width:44px;height:44px;padding:0;position:absolute;right:16px;top:20px;text-align:center}
#run-menu #menu-close::before,#modal #close::before{content:none}
#run-menu #menu-close:focus-visible,#modal #close:focus-visible{outline:1px dashed var(--phosphor);outline-offset:-6px}
.market-item,.bus-offer,.shell-product{border:0;background:none;box-shadow:none}
.historylist article{border:0;background:none}
#briefdeck.hardware-edit,#briefdeck.hardware-edit:hover{border:0}
#deploy.deploy{border:0;background:linear-gradient(90deg,#173c2544,transparent);box-shadow:none}
#deploy.deploy:focus-visible,body[data-input=gamepad] #deploy.deploy:focus{outline:0;box-shadow:inset 3px 0 var(--phosphor)}
/* Focus stays on the existing hardware surface, rather than adding an outer frame. */
.decksocket:focus-visible,.loose-module:focus-visible,.expansion-bay:focus-visible,.expansion-item:focus-visible,
body[data-input=gamepad] :is(.decksocket,.loose-module,.expansion-bay,.expansion-item):focus{outline-offset:-5px}
.hubnav button:focus-visible,body[data-input=gamepad] .hubnav button:focus{outline:0;text-decoration:none;color:#e1ffea;text-shadow:0 0 12px #98ffb055}
.hubnav button:focus-visible .nav-cursor,body[data-input=gamepad] .hubnav button:focus .nav-cursor{visibility:visible}
.deck-tabs button:focus-visible,.case-navigation button:focus-visible,body[data-input=gamepad] .deck-tabs button:focus,body[data-input=gamepad] .case-navigation button:focus{outline:0;background:transparent;text-decoration:none;color:#e1ffea;text-shadow:0 0 12px #98ffb055}
summary:focus-visible,body[data-input=gamepad] summary:focus{outline:0;background:linear-gradient(90deg,#245d3944,transparent);text-decoration:underline;text-underline-offset:4px}
@media(max-width:700px){.missionselect .levels button.terminal-contract{padding:20px;min-height:360px}#run-menu,#modal,#disconnect-confirm{padding:24px}#run-menu h2{font-size:25px}}
#run-menu #menu-resume{color:var(--phosphor);font-weight:600}
/* One continuous display surface; focus is conveyed by the prompt and type. */
.missionselect .levels button.terminal-contract,
.missionselect .levels button.terminal-contract:hover,
.missionselect .levels button.terminal-contract.is-cleared,
.missionselect .levels button.terminal-contract:focus-visible,
body[data-input=gamepad] .missionselect .levels button.terminal-contract:focus{background:transparent}
.contract-name{margin-left:0;padding-left:26px}
.contract-name::before{left:0;top:4px}
button.terminal-command:focus-visible,body[data-input=gamepad] button.terminal-command:focus,
button.terminal-command:hover:not(:disabled){background:transparent!important}
#run-menu,#modal,#disconnect-confirm{background:var(--glass)}
.bounty-display,#deploy.deploy{background:transparent}
summary:focus-visible,body[data-input=gamepad] summary:focus{background:transparent}

/* The canvas continues beyond the content column without a vignette seam. */
body{background-color:var(--glass)}
.shell{background:transparent;box-shadow:none}
/* Decorative route geometry must stay inside its result surface. */
#runresult{min-width:0;width:100%;max-width:1220px;overflow:clip}
#runresult .result-echo{right:0;max-width:100%;overflow:hidden}
#runresult .result-copy{max-width:100%;min-width:0;overflow-wrap:anywhere}
#runresult .result-copy>button{max-width:100%;white-space:normal}
#runresult .decision-timeline li>div{min-width:0}
@media(min-width:1000px){#runresult .result-copy{max-width:780px}}

/* Mission selection: compact records with a shared text edge and cursor gutter. */
.missionselect{gap:38px}
.missionselect .levels{gap:clamp(16px,3vw,48px);align-items:start}
.missionselect .levels button.terminal-contract,
.missionselect .levels button.terminal-contract:hover,
.missionselect .levels button.terminal-contract.is-cleared{
 padding:22px 20px 18px 42px;min-height:0;overflow:visible
}
.contract-topline{font-size:11px;line-height:1.4}
.contract-topline>span:first-child{color:var(--phosphor)}
.contract-state{font-size:10px;color:var(--muted-phosphor)}
.contract-identity{margin:25px 0 10px;gap:9px;font-size:12px}
.contract-identity .corp-logo{width:26px;height:26px}
.contract-name{padding:0;margin:0;min-height:0;max-width:none;font-size:clamp(27px,2.5vw,38px);line-height:1.15;letter-spacing:0}
.contract-name::before{left:-24px;top:7px;font-size:18px}
.contract-kind{margin:8px 0 22px;font-size:11px;line-height:1.5}
.contract-data{gap:0;flex-wrap:wrap;color:var(--muted-phosphor)}
.contract-data>span{font:11px/1.7 var(--mono);white-space:nowrap}
.contract-data>span+span::before{content:'·';margin:0 9px}
.contract-effects{margin:15px 0 18px;min-height:72px;font-size:13px;line-height:1.6}
.contract-effects>span{min-height:24px;gap:8px}
.contract-effects .icon{width:14px;height:14px;flex-basis:14px;color:var(--muted-phosphor)}
.contract-bottom{justify-content:flex-start;flex-wrap:wrap;gap:12px 24px;margin:0;padding:0}
.contract-reward{font-size:23px;line-height:1.5}
.contract-reward .icon{width:18px;height:18px}
.contract-open{font-size:11px;min-height:44px;align-items:center}
.terminal-contract.is-cleared .contract-name{color:var(--muted-phosphor)}
.terminal-contract.is-cleared:focus-visible .contract-name{color:var(--phosphor)}
@media(hover:hover) and (pointer:fine){.terminal-contract.is-cleared:hover .contract-name{color:var(--phosphor)}}
.missionselect .operation-board{padding:0 20px 0 42px}
.missionselect .operation-rack-label{padding:0 0 22px;font-size:10px;color:var(--muted-phosphor)}
.missionselect .operation-tracks{gap:clamp(24px,4vw,64px)}
.missionselect .operation-plaque{margin-bottom:12px}
.missionselect .operation-track .corp-logo{width:20px;height:20px}
.missionselect .operation-track .corp-wordmark b{font-size:14px;color:var(--muted-phosphor)}
.missionselect .operation-status>span{font-size:16px}
.missionselect .operation-display p{font-size:12px;margin:10px 0;line-height:1.5}
.missionselect .operation-blueprint{margin-top:10px;min-height:32px}
.missionselect .operation-blueprint b{font-size:12px}
@media(max-width:700px){
 .missionselect{gap:28px}
 .missionselect .levels button.terminal-contract,
 .missionselect .levels button.terminal-contract:hover,
 .missionselect .levels button.terminal-contract.is-cleared{padding:16px 14px 10px 30px;min-height:0}
 .contract-topline{font-size:10px}.contract-state{font-size:9px}
 .contract-name{font-size:29px;min-height:67px;display:flex;align-items:center}
 .contract-name::before{left:-20px;top:50%;transform:translateY(-50%);font-size:16px}
 .contract-identity{margin:20px 0 6px}.contract-kind{margin:3px 0 18px}
 .contract-bottom{gap:4px 16px}.contract-reward{font-size:22px}.contract-open{font-size:10px}
 .missionselect .operation-board{padding:0 14px 0 30px}
 .missionselect .operation-tracks{gap:26px}
}

/* Center the mission board; both tiers use identical columns and text insets. */
@media(min-width:701px){
 .missionselect{width:100%;max-width:1200px;margin-inline:auto;--mission-gap:clamp(20px,3vw,42px);--mission-inset:28px}
 .missionselect .levels,.missionselect .operation-tracks{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--mission-gap)}
 .missionselect .levels button.terminal-contract,
 .missionselect .levels button.terminal-contract:hover,
 .missionselect .levels button.terminal-contract.is-cleared{padding-inline:var(--mission-inset)}
 .missionselect .operation-board{padding-inline:0}
 .missionselect .operation-rack-label{padding-inline:var(--mission-inset)}
 .missionselect .operation-track{min-width:0;padding-inline:var(--mission-inset)}
 .contract-name{font-size:clamp(27px,2.3vw,34px)}
}

/* Center the complete selection board in the space below the desktop header. */
@media(min-width:1000px){
 body[data-screen=missions] .shell{display:flex;flex-direction:column;min-height:100dvh}
 body[data-screen=missions] .shell>header{flex-shrink:0}
 body[data-screen=missions] .shell>main{flex:1;display:flex;flex-direction:column;justify-content:center;padding-block:24px}
 body[data-screen=missions] .missionselect{flex:none}
}
/* A vertical mobile list makes every daily contract discoverable by normal scrolling. */
@media(max-width:700px){
 .missionselect .levels{display:grid;grid-template-columns:minmax(0,1fr);overflow:visible;scroll-snap-type:none;padding:0;gap:32px}
 .missionselect .levels button.terminal-contract,
 .missionselect .levels button.terminal-contract:hover,
 .missionselect .levels button.terminal-contract.is-cleared{width:100%;min-height:0;padding:12px 16px 12px 30px}
 .contract-name{display:block;min-height:0;font-size:29px}
 .contract-identity{margin:16px 0 10px}
 .contract-kind{margin:6px 0 16px}
 .contract-effects{min-height:0;margin:12px 0}
 .contract-bottom{margin-top:4px}
 .missionselect .operation-board{margin-top:16px}
}
.chargevalue .icon{width:30px;height:30px;display:block}
#briefdeck.hardware-edit{gap:0}
/* The connection indicator keeps its geometry while charging. */
#deploy .chargevalue,#start .chargevalue{
 box-sizing:border-box;flex:0 0 50px;width:50px;height:50px;min-width:50px;
 padding:0;place-items:center;font-variant-numeric:tabular-nums;white-space:nowrap
}
/* Give the edit command's cursor a clear gap before its label. */
#briefdeck.hardware-edit{padding-left:38px}
/* Mission telemetry belongs to the network display. */
body[data-playing=true] .map>.mission,.map>.mission{
 position:absolute;z-index:5;top:22px;left:22px;right:190px;min-height:0;
 padding:0;margin:0;border:0;background:none;pointer-events:none
}
.map>.mission::before{content:none;display:none;font:9px/1.4 var(--mono);letter-spacing:1.4px;color:var(--muted-phosphor);margin-bottom:8px}
body[data-playing=true] .map>.mission h2,.map>.mission h2{font:13px/1.55 var(--mono);letter-spacing:0;color:var(--phosphor);margin:0;overflow-wrap:anywhere}
.map>.mission h2::before{content:'> ';color:var(--cyan)}
.map>.mission button{pointer-events:auto}
body[data-playing=true] #gamescreen>aside{padding-top:0}
@media(max-width:700px){
 body[data-playing=true] .map>.mission,.map>.mission{top:14px;left:14px;right:112px}
 .map>.mission::before{font-size:7px;letter-spacing:1px;margin-bottom:4px}
 body[data-playing=true] .map>.mission h2,.map>.mission h2{font-size:10px;line-height:1.5}
}
body[data-playing=true] .map>.mission,.map>.mission{display:block}
body[data-playing=true] .map>.mission h2,.map>.mission h2{display:block;padding:0}
body[data-playing=true] .map>.mission h2::before,.map>.mission h2::before{
 content:'>';display:inline;position:static;width:auto;height:auto;margin:0 9px 0 0;
 padding:0;background:none;border:0;box-shadow:none;transform:none;vertical-align:baseline
}
#map #hazardstatus{top:auto;bottom:64px;left:22px;right:22px;pointer-events:none}
@media(max-width:700px){#map #hazardstatus{left:14px;right:14px;bottom:46px;font-size:7px}}

#minimap .mini-node.unexplored{fill:none;stroke:currentColor;stroke-width:.8;opacity:.55}
#minimap .mini-node.visited{opacity:1}

/* Quiet terminal readout, separate from the network geometry. */
#map .contact-feedback{position:absolute;z-index:12;inset:auto 22px 20px auto;transform:none;width:max-content;max-width:min(380px,calc(100% - 210px));pointer-events:none;text-align:left}
.contact-feedback{padding:12px 16px;background:var(--bg,#030a06);border:0;box-shadow:none;color:var(--text);font-family:var(--mono,monospace);line-height:1.5;text-shadow:none}
.contact-feedback strong{display:block;font:600 15px/1.4 var(--mono,monospace);letter-spacing:.02em;color:var(--text)}
.contact-feedback[data-damage="true"] strong{color:#ffad99}
.contact-feedback span,.contact-feedback small{display:block;font-size:12px;overflow-wrap:anywhere;letter-spacing:0}
.contact-feedback span{margin-top:6px;color:var(--text)}
.contact-feedback small{margin-top:3px;color:var(--text);opacity:1}
.contact-result{position:relative;margin:18px 0;max-width:100%}
@media(max-width:700px){#map .contact-feedback{right:14px;bottom:76px;max-width:calc(100% - 28px);padding:10px 12px}.contact-feedback strong{font-size:13px}.contact-feedback span,.contact-feedback small{font-size:11px}}
.after-action .debrief-heading{cursor:default;margin:0;min-height:44px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:inherit;font-weight:700}
.currency-symbol{display:inline-flex;align-items:center;vertical-align:-.12em;line-height:1}
.currency-symbol>.icon{width:1em;height:1em;min-width:1em;display:block}

/* Physical display housing; illumination belongs to the glass inside it. */
#gamescreen .network{
 position:relative;isolation:isolate;padding:17px 17px 0;border-radius:18px;
 background:linear-gradient(135deg,#354139 0%,#232f28 24%,#17221b 65%,#111b15 100%);
 border:1px solid #47544b;
 box-shadow:inset 0 1px 1px #bac9bb45,inset 1px 0 1px #b1c7b322,inset -1px -2px 2px #000b,0 5px 0 #0b130e,0 6px 0 #303b32,0 14px 24px #0009;
 overflow:hidden;
}
#gamescreen .network::before{
 content:'';position:absolute;inset:7px;z-index:16;pointer-events:none;
 background:radial-gradient(circle at 3px 3px,#617266 0 1px,#111a14 2px 3px,transparent 4px),radial-gradient(circle at calc(100% - 3px) 3px,#617266 0 1px,#111a14 2px 3px,transparent 4px),radial-gradient(circle at 3px calc(100% - 3px),#435247 0 1px,#0a120d 2px 3px,transparent 4px),radial-gradient(circle at calc(100% - 3px) calc(100% - 3px),#435247 0 1px,#0a120d 2px 3px,transparent 4px);
}
#map{
 background-color:var(--glass);
 background-image:linear-gradient(#8ab79a08 1px,transparent 1px),linear-gradient(90deg,#8ab79a08 1px,transparent 1px);
 background-size:26px 26px;background-position:center;
 border:1px solid #060c08;border-radius:8px;isolation:isolate;
 box-shadow:0 -2px 0 #050a07,0 1px 0 #81978638,-1px 0 0 #050a07,1px 0 0 #81978618;
}
#map::before{display:none}
#map::after{
 content:'';display:block;position:absolute;inset:0;z-index:15;pointer-events:none;
 border:0;border-radius:inherit;padding:0;background:none;
 box-shadow:inset 0 5px 8px #000b,inset 4px 0 7px #0005,inset 0 -1px 2px #9cae9e16;
}
#gamescreen .network .mapfoot{min-height:32px;padding:8px 8px 9px;margin:0;color:#a2b7a7;text-shadow:0 1px #000}
#map .minimapframe{background:var(--glass)}
@media(max-width:700px){
 #gamescreen .network{padding:9px;border-radius:12px;box-shadow:inset 0 1px 1px #bac9bb35,inset -1px -1px 2px #000b,0 3px 0 #0b130e,0 7px 12px #0008}
 #gamescreen .network::before{inset:3px;background-size:100% 100%;opacity:.7}
 #map{border-radius:5px;background-size:22px 22px}
 #map::after{box-shadow:inset 0 3px 6px #0009,inset 2px 0 4px #0005}
 #gamescreen .network .mapfoot{min-height:23px;padding:5px 4px 6px}
}

/* Companion input unit: cast housing, recessed key bed, tactile caps. */
#gamescreen .console{
 position:relative;isolation:isolate;border-radius:18px;border:1px solid #47544b;
 background:linear-gradient(135deg,#354139 0%,#232f28 24%,#17221b 65%,#111b15 100%);
 box-shadow:inset 0 1px 1px #bac9bb45,inset 1px 0 1px #b1c7b322,inset -1px -2px 2px #000b,0 5px 0 #0b130e,0 6px 0 #303b32,0 14px 24px #0009;
}
#gamescreen .console::before{
 content:'';display:block;position:absolute;inset:7px;z-index:3;pointer-events:none;padding:0;
 background:radial-gradient(circle at 3px 3px,#617266 0 1px,#111a14 2px 3px,transparent 4px),radial-gradient(circle at calc(100% - 3px) 3px,#617266 0 1px,#111a14 2px 3px,transparent 4px),radial-gradient(circle at 3px calc(100% - 3px),#435247 0 1px,#0a120d 2px 3px,transparent 4px),radial-gradient(circle at calc(100% - 3px) calc(100% - 3px),#435247 0 1px,#0a120d 2px 3px,transparent 4px);
}
#gamescreen .console .deckplate{padding:4px 5px 14px;color:#99ad9f;text-shadow:0 1px 1px #000;font-size:9px;letter-spacing:.08em}
#gamescreen .console .deckplate b{color:#c1d2c5}
#gamescreen .console .actions{
 padding:9px 9px 13px;gap:13px;border-radius:11px;
 background:#0a120d;border:1px solid #080e0a;
 box-shadow:inset 0 3px 7px #000b,0 1px 0 #8ba18f30;
}
#gamescreen .console .actions button{
 border:1px solid #4b6051;border-radius:8px;
 background:linear-gradient(145deg,#3b5041,#25392c 65%,#203226);
 box-shadow:inset 0 1px 1px #d5ecda35,inset 1px 0 1px #bdd6c018,0 4px 0 #17271c,0 5px 0 #070c09,0 7px 5px #0008;
 color:var(--phosphor);text-shadow:0 1px 1px #07120b;
 transition:transform .1s,box-shadow .1s,border-color .15s;
}
#gamescreen .console .actions button:disabled{
 background:linear-gradient(145deg,#233027,#18231c);
 border-color:#344239;box-shadow:inset 0 1px 1px #bed5c112,0 2px 0 #101b14,0 3px 3px #0008;
 transform:translateY(2px);
}
#gamescreen .console .actions button:disabled .actiontext{color:#809387}
#gamescreen .console .actions button:disabled .actiontext small{color:#819488}
#gamescreen .console .actions button:disabled .actionicon{color:#718a79}
#gamescreen .console .actions button .actiontext small{color:#c1d0c5}
#gamescreen .console .effectline + .effectline{color:#a6bcae}
#gamescreen .console .actions kbd{color:#b4c9bb;opacity:1;top:8px;right:9px}
#gamescreen .console .actions button:focus-visible,
body[data-input=gamepad] #gamescreen .console .actions button:focus{
 outline:2px solid var(--phosphor);outline-offset:2px;
}
@media(hover:hover) and (pointer:fine){
 #gamescreen .console .actions button:not(:disabled):hover{background:linear-gradient(145deg,#465e4d,#2b4434 65%,#253b2c);border-color:#819f8b}
 #gamescreen .console #holdbutton:hover:not(:disabled){border-color:#8eac98;color:var(--phosphor)}
}
#gamescreen .console .actions button:not(:disabled):active{
 transform:translateY(3px);box-shadow:inset 0 1px 3px #0005,0 1px 0 #132018,0 2px 2px #0009;
}
#gamescreen .console #holdbutton{border-radius:5px;background:#14221a;border:1px solid #43594a;box-shadow:inset 0 1px 0 #a4bba922,0 2px 0 #080f0b;color:#b8cbbc}
#gamescreen .console #holdbutton:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 1px 3px #0008}
@media(max-width:700px){
 #gamescreen .console{border-radius:12px;box-shadow:inset 0 1px 1px #bac9bb35,inset -1px -1px 2px #000b,0 3px 0 #0b130e,0 7px 12px #0008}
 #gamescreen .console::before{inset:3px;opacity:.7}
 #gamescreen .console .deckplate{font-size:7px;padding:1px 5px 7px}
 #gamescreen .console .mobilecontrols .actions{padding:5px 5px 8px;gap:8px;border-radius:8px}
 #gamescreen .console .actions button{border-radius:6px}
}
@media(prefers-reduced-motion:reduce){#gamescreen .console .actions button{transition:none}}

/* CRT glass treatment stays inside the display, above its rendered content. */
#map::after{
 background:repeating-linear-gradient(to bottom,transparent 0 2px,#0000001f 2px 3px);
 background-size:100% 3px;
}
#map::before{
 content:'';display:block;position:absolute;inset:0;z-index:14;
 width:auto;height:auto;margin:0;border:0;outline:0;border-radius:inherit;
 pointer-events:none;transform:translateY(-100%);
 background:linear-gradient(to bottom,transparent 42%,#b8ffd503 46%,#b8ffd50a 49.5%,#d9ffe811 50%,transparent 51%);
 animation:crt-readout-sweep 16s linear infinite;
}
#map .mission h2,#map .node .num{ text-shadow:0 0 6px #9affbe24 }
@keyframes crt-readout-sweep{from{transform:translateY(-100%)}to{transform:translateY(100%)}}
@media(max-width:700px){#map::after{background:repeating-linear-gradient(to bottom,transparent 0 2px,#00000014 2px 3px)}}
@media(prefers-reduced-motion:reduce){#map::before{animation:none;display:none}}

/* Thumb control uses the same recessed mechanics as the program keys. */
#gamescreen .console .dpad{
 position:relative;isolation:isolate;padding:5px;gap:0;
 border:1px solid #080e0a;border-radius:50%;background:#0a120d;
 box-shadow:inset 0 3px 8px #000c,0 1px 0 #94ac9c30;
 grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,44px);
}
#gamescreen .console .dpad button{
 position:relative;min-width:0;min-height:44px;padding:0;
 background:linear-gradient(145deg,#3b5041,#25392c 65%,#203226);
 border:1px solid #4b6051;border-radius:5px;
 box-shadow:inset 0 1px 1px #d5ecda35,0 3px 0 #14251a,0 5px 4px #0009;
 color:var(--phosphor);transform:none;touch-action:manipulation;
 transition:transform .1s,box-shadow .1s;
}
#gamescreen .console .dpad-up{border-radius:10px 10px 3px 3px}
#gamescreen .console .dpad-down{border-radius:3px 3px 10px 10px}
#gamescreen .console .dpad-left{border-radius:10px 3px 3px 10px}
#gamescreen .console .dpad-right{border-radius:3px 10px 10px 3px}
#gamescreen .console .dpad [data-direction] .icon{display:none}
#gamescreen .console .dpad [data-direction]::after{
 content:'';display:block;width:9px;height:9px;border-top:2px solid currentColor;border-right:2px solid currentColor;
 transform:rotate(45deg);filter:drop-shadow(0 1px 1px #0008);
}
#gamescreen .console .dpad .dpad-up::after{transform:translateY(2px) rotate(-45deg)}
#gamescreen .console .dpad .dpad-down::after{transform:translateY(-2px) rotate(135deg)}
#gamescreen .console .dpad .dpad-left::after{transform:translateX(2px) rotate(-135deg)}
#gamescreen .console .dpad .dpad-right::after{transform:translateX(-2px) rotate(45deg)}
#gamescreen .console .dpad #padwait{border-radius:5px;margin:2px;min-height:40px;background:linear-gradient(145deg,#26372b,#1b2a20);border-color:#3c5043;box-shadow:inset 0 2px 4px #0006,0 1px 0 #a4b9a51a;color:#b1c7b8}
#gamescreen .console .dpad #padwait .icon{width:15px;height:15px}
#gamescreen .console .dpad button:disabled{
 background:linear-gradient(145deg,#233027,#18231c);border-color:#344239;color:#607968;
 box-shadow:inset 0 1px 1px #bed5c112,0 2px 0 #101b14;transform:translateY(1px);
}
#gamescreen .console .dpad button:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 1px 3px #0007,0 1px 0 #132018}
#gamescreen .console .dpad button:focus-visible{outline:2px solid var(--phosphor);outline-offset:2px;z-index:2}
@media(prefers-reduced-motion:reduce){#gamescreen .console .dpad button{transition:none}}

/* Menu key is a hardware control, distinct from the in-run wait action. */
body[data-playing=true] #runmenu{
 width:44px;height:44px;min-height:44px;padding:10px;border-radius:9px;
 background:linear-gradient(145deg,#3b5041,#25392c 65%,#203226);
 border:1px solid #4b6051;
 box-shadow:inset 0 1px 1px #d5ecda35,inset 1px 0 1px #bdd6c018,0 3px 0 #14251a,0 5px 5px #0008;
 transition:transform .1s,box-shadow .1s,border-color .15s;
}
body[data-playing=true] #runmenu .icon{width:22px;height:22px;color:var(--phosphor)}
@media(hover:hover) and (pointer:fine){body[data-playing=true] #runmenu:hover{background:linear-gradient(145deg,#465e4d,#2b4434);border-color:#819f8b}}
body[data-playing=true] #runmenu:active{transform:translateY(2px);background:#25392c;box-shadow:inset 0 1px 3px #0006,0 1px 0 #132018}
body[data-playing=true] #runmenu:focus-visible{outline:2px solid var(--phosphor);outline-offset:3px}
@media(prefers-reduced-motion:reduce){body[data-playing=true] #runmenu{transition:none}}

@media(min-width:701px){
 #gamescreen .console #holdbutton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:48px;height:32px;min-height:32px;padding:6px 9px;border-radius:6px;line-height:1}
 #gamescreen .console #holdbutton .wait-key-icon{display:flex;align-items:center}
 #gamescreen .console #holdbutton .icon{display:block;width:18px;height:18px;color:var(--phosphor)}
 #gamescreen .console #holdbutton kbd{position:static;display:block;margin:0;align-self:flex-end;font:12px/1 var(--mono);color:#a6bcae;opacity:1}
 #gamescreen .console #holdbutton:focus-visible{outline:2px solid var(--phosphor);outline-offset:3px}
}

/* Section rules establish hierarchy without enclosing each contract in a card. */
#missionselect .operation-board{border-top:1px solid var(--glass-line);padding-top:26px}
#missionselect .terminal-contract,#missionselect .operation-track{position:relative}
#missionselect .terminal-contract:not(:last-child)::after,
#missionselect .operation-track:not(:last-child)::after{
 content:'';display:block;position:absolute;top:12px;bottom:12px;right:0;width:1px;
 background:var(--glass-line);pointer-events:none;
}
@media(max-width:700px){
 #missionselect .operation-board{padding-top:22px}
 #missionselect .terminal-contract:not(:last-child)::after,
 #missionselect .operation-track:not(:last-child)::after{top:auto;bottom:0;left:0;right:0;width:auto;height:1px}
 #missionselect .operation-track:not(:last-child){padding-bottom:24px}
 #missionselect .levels button.terminal-contract{padding-bottom:22px}
}

/* Match the cursor to the title's typeface and first line, at every breakpoint. */
#missionselect .contract-name::before{
 left:-24px;top:0;width:18px;height:1.15em;
 display:flex;align-items:center;justify-content:center;
 font:inherit;font-weight:400;line-height:1.15;transform:none;
}
@media(max-width:700px){#missionselect .contract-name::before{left:-22px;width:16px}}

/* Fixed glass telemetry: status changes never resize the cockpit. */
#map .mission #stateLabel{
 display:block;margin-top:8px;font:10px/16px var(--mono);letter-spacing:.06em;
 color:var(--pink);text-shadow:0 0 8px #ffbf7033;pointer-events:none;
}
#map .mission #stateLabel[hidden]{display:block!important;visibility:hidden}
#map .minimapframe,#map .minimapframe.scanning{display:flex;flex-direction:column;gap:4px}
#map #scanstatus{position:static;flex:0 0 12px;font:8px/12px var(--mono);text-align:right;white-space:nowrap}
#map #minimap{display:block;flex:1;min-height:0;width:100%;height:0}
#gamescreen #telemetry{min-width:0;margin-top:16px;padding:0;border:0}
#telemetry .telemetry-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:24px}
#telemetry .telemetry-heading h3{margin:0;font:600 13px/20px var(--ui);color:var(--muted-phosphor)}
#telemetry .telemetry-heading>span{font:8px/14px var(--mono);text-align:right;color:var(--muted-phosphor)}
#telemetry .telemetry-lines{height:128px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
#telemetry .telemetry-lines p{margin:0 0 5px;font:10px/17px var(--mono);overflow-wrap:anywhere}
#telemetry .telemetry-lines:focus-visible{outline:1px solid var(--muted-phosphor);outline-offset:3px}
@media(max-width:700px){
 #map .mission #stateLabel{font-size:8px;line-height:12px;margin-top:6px;letter-spacing:0}
 body[data-playing=true] #map .minimapframe,body[data-playing=true] #map .minimapframe.scanning{width:92px;height:92px;padding:4px}
 #map #scanstatus{font-size:7px}
 body[data-playing=true] #gamescreen #telemetry{grid-column:1/-1;margin:0;align-self:stretch}
 #telemetry .telemetry-heading{min-height:20px;gap:8px}
 #telemetry .telemetry-heading h3{font-size:12px;line-height:18px}
 #telemetry .telemetry-heading>span{font-size:7px;line-height:12px}
 #telemetry .telemetry-lines{height:60px}
 #telemetry .telemetry-lines p{font-size:9px;line-height:15px;margin:0}
}

/* The current node carries the three-command security clock. */
#map .node.current:has(.node-turn-frame)::after{display:none}
#map .node .node-turn-frame{
 position:absolute;inset:-10px;width:calc(100% + 20px);height:calc(100% + 20px);
 overflow:visible;pointer-events:none;fill:none;stroke-linejoin:miter;
}
#map .node-turn-frame .turn-track{stroke:var(--phosphor);stroke-opacity:.22;stroke-width:1}
#map .node-turn-frame .turn-progress{stroke:var(--phosphor);stroke-width:2;filter:drop-shadow(0 0 3px #98ffb055)}
#map .node-turn-frame.is-warning .turn-progress{stroke:#efb46b;stroke-width:3;filter:drop-shadow(0 0 4px #efb46b66)}
#map .node .node-cycle{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%);font:9px/14px var(--mono);white-space:nowrap;color:var(--phosphor);background:var(--glass);padding:0 4px;pointer-events:none}
#map .node:has(.node-turn-frame.is-warning) .node-cycle{color:#efb46b}
@media(max-width:700px){#map .node .node-cycle{font-size:8px;line-height:12px}}

/* Relay utility is independent of the objective's layout. */
#map #wipe-logs{position:absolute;top:112px;left:22px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;min-height:44px;padding:4px 0;border:0;background:none;box-shadow:none;color:var(--phosphor);font:11px/16px var(--mono);text-align:left;white-space:normal}
#map #wipe-logs small{font:9px/13px var(--mono);color:var(--muted-phosphor)}
#map #wipe-logs:hover{background:none;box-shadow:none;text-shadow:0 0 8px var(--phosphor)}
#map #wipe-logs:focus-visible{outline:1px solid var(--phosphor);outline-offset:4px}
@media(max-width:700px){#map #wipe-logs{top:84px;left:14px;font-size:10px;line-height:14px}#map #wipe-logs small{font-size:8px;line-height:12px}}

/* Spent relays remain traversable; only their utility is offline. */
#map .node.relay-used:not(.current){border-color:#607268;border-style:dashed}
#map .node.relay-used .symbol{opacity:.4}
#map .node .relay-used-tag{position:absolute;right:4px;top:5px;font:6px/9px var(--mono);letter-spacing:.3px;color:var(--muted-phosphor)}
#map .node.current .relay-used-tag{color:#264b33}
#minimap .mini-type.relay-used{opacity:.35}

#map #route-power{position:absolute;top:164px;left:22px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;min-height:44px;padding:4px 0;border:0;background:none;box-shadow:none;color:var(--phosphor);font:11px/16px var(--mono);text-align:left}
#map #route-power small{font:9px/13px var(--mono);color:var(--muted-phosphor)}
#map #route-power:hover{background:none;box-shadow:none;text-shadow:0 0 8px var(--phosphor)}
#map .node.scan-zone:not(.current){border-color:#efb46b;border-style:dashed}
#map .node .scan-zone-marker{position:absolute;bottom:-6px;left:-6px;width:14px;height:14px;background:#e9ac65;color:#172017;font:bold 11px/14px var(--mono);text-align:center;border:1px solid #07120b}
#map #hazardstatus{white-space:normal;max-width:calc(100% - 44px);line-height:1.5}
@media(max-width:700px){#map #route-power{top:132px;left:14px;font-size:10px;line-height:14px}#map #route-power small{font-size:8px;line-height:12px}#map #hazardstatus{max-width:calc(100% - 28px)}}

/* Instruments are anchored to the glass; the node itself carries the cycle. */
#map .screen-hud{position:absolute;inset:auto 22px 16px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:28px;margin:0;padding:12px 0 0;border-top:1px solid var(--glass-line);background:var(--glass);pointer-events:none}
#map .screen-hud .hudmetric{display:flex;align-items:center;gap:12px;min-width:0}
#map .screen-hud .trace-metric{flex:1}
#map .screen-hud .metriclabel{margin:0;font:10px/16px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted-phosphor)}
#map .screen-hud #trace{font:18px/22px var(--mono);min-width:4ch;color:var(--phosphor)}
#map .screen-hud .meter{flex:1;max-width:180px;height:7px;margin:0;padding:0;border:0;background:#253a2d;box-shadow:none}
#map .screen-hud .meter>div{mask-image:repeating-linear-gradient(90deg,#000 0 4px,transparent 4px 6px)}
#map .screen-hud #hp{display:flex;gap:6px;align-items:center;height:22px}
#map .screen-hud #hp i{display:block;width:10px;height:17px;border:1px solid var(--phosphor)}
#map .screen-hud #hp .intact{background:var(--phosphor);box-shadow:0 0 8px #98ffb044}
#map .screen-hud #hp .depleted{border-color:#536f5e;background:none}
#map .screen-hud #hp[data-critical=true] .intact{background:#efb46b;border-color:#efb46b}
#map .screen-hud #trace[data-critical=true]{color:#efb46b}
#map #enemyintel{bottom:68px}
#map #hazardstatus{bottom:112px}
#map .contact-feedback{bottom:68px}
#map[data-contact-damage=true] .node-turn-frame .turn-progress{stroke:#ff786b;filter:drop-shadow(0 0 4px #ff786b66)}
#map[data-contact-damage=true] .node-cycle{color:#ff9185}
#map[data-contact-damage=true] #hp .intact{background:#ff786b;border-color:#ff786b}
@media(max-width:700px){
 #map .screen-hud{inset:auto 14px 12px;gap:14px;padding-top:10px}
 #map .screen-hud .hudmetric{gap:7px}
 #map .screen-hud .metriclabel{font-size:8px;letter-spacing:0}
 #map .screen-hud #trace{font-size:14px;min-width:4ch}
 #map .screen-hud .meter{height:5px;max-width:90px;min-width:20px}
 #map .screen-hud #hp{gap:4px}
 #map .screen-hud #hp i{width:7px;height:13px}
 #map #enemyintel{bottom:58px}
 #map #hazardstatus{bottom:94px}
 #map .contact-feedback{bottom:118px}
}

/* Mobile relay utilities belong to the control deck, not the network viewport. */
#relay-tray{display:none}
@media(max-width:700px){
 #gamescreen .console #relay-tray{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:58px;margin-top:8px;padding-top:6px;border-top:1px solid #718a7830}
 #gamescreen #relay-tray .relay-command{position:relative;inset:auto;width:100%;min-width:0;min-height:44px;padding:3px 0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;border:0;background:none;box-shadow:none;white-space:normal;text-align:left;color:var(--phosphor);font:10px/14px var(--mono)}
 #gamescreen #relay-tray .relay-command[hidden]{display:flex!important;visibility:hidden;pointer-events:none}
 #gamescreen #relay-tray .relay-command small{font:8px/12px var(--mono);color:var(--muted-phosphor);overflow-wrap:anywhere}
 #gamescreen #relay-tray .relay-command::before{content:none}
 #gamescreen #relay-tray .relay-command:focus-visible{outline:1px solid var(--phosphor);outline-offset:2px}
}

/* Native safe areas leave the cockpit clear of the camera and home indicator. */
html[data-native=ios] body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html[data-native=ios] input,html[data-native=ios] textarea{user-select:text;-webkit-user-select:text}
html[data-native=ios] .shell{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
html[data-native=ios] body[data-playing=true] .shell{height:100dvh;box-sizing:border-box}

/* Contact telemetry is anchored to the map overview, without an extra panel. */
#map .minimapframe #enemyintel{position:absolute;inset:calc(100% + 7px) 0 auto auto;width:max-content;max-width:180px;height:16px;margin:0;pointer-events:none}
#map .contact-line{display:flex;align-items:center;justify-content:flex-end;gap:5px;height:16px;white-space:nowrap;font:8px/16px var(--mono);color:#efb46b}
#map .contact-line .icon{position:static;inset:auto;width:9px;height:9px;flex:none}
#map .contact-line.is-clear{color:var(--muted-phosphor);opacity:.75}
@media(max-width:700px){#map .minimapframe #enemyintel{max-width:150px;top:calc(100% + 5px)}#map .contact-line{font-size:7px}}

/* Mission header: one physical connection key, aligned opposite the title. */
body[data-playing=true] .playhead{display:flex;align-items:center;justify-content:space-between;gap:16px}
body[data-playing=true] .playhead .missiontitle{min-width:0;margin:0;flex:1}
body[data-playing=true] .playhead #leveltitle{margin:0}
body[data-playing=true] .playhead #runmenu{width:68px;height:44px;min-height:44px;margin:0;flex:0 0 68px}
body[data-playing=true] .playhead #runmenu .icon{width:24px;height:24px}
@media(max-width:700px){body[data-playing=true] .playhead #runmenu{width:60px;flex-basis:60px}}

/* A recessed status display above the keys, all within one enclosure. */
#gamescreen .console .console-readout{margin:0 1px 14px;padding:10px 12px;border-radius:7px;background:#06100a;border:1px solid #0b160e;box-shadow:inset 0 2px 5px #000b,0 1px 0 #a0b7a32a;min-width:0}
#gamescreen .console .console-readout .feed{margin:0 0 5px;padding:0;border:0}
#gamescreen .console .console-readout #log{height:16px;min-height:16px;overflow:hidden;font:10px/16px var(--mono);white-space:nowrap;text-overflow:ellipsis;color:var(--phosphor)}
#gamescreen .console #telemetry{margin:0;padding:0}
#gamescreen .console #telemetry .telemetry-heading{min-height:18px}
#gamescreen .console #telemetry .telemetry-heading h3{font:8px/16px var(--mono);letter-spacing:.08em;text-transform:uppercase}
#gamescreen .console #telemetry .telemetry-heading>span{font-size:7px}
#gamescreen .console #telemetry .telemetry-lines{height:36px;min-height:0}
#gamescreen .console #telemetry .telemetry-lines p{font:9px/18px var(--mono);margin:0;color:var(--muted-phosphor)}
#gamescreen .console .controls{display:none}
@media(max-width:700px){
 body[data-playing=true] #gamescreen>aside{display:block}
 #gamescreen .console .console-readout{margin-bottom:8px;padding:7px 10px}
 #gamescreen .console .console-readout .feed{margin-bottom:2px}
 #gamescreen .console #relay-tray{min-height:44px;margin:0 0 8px;padding:0;border:0;gap:10px}
 #gamescreen #relay-tray .relay-command{min-height:44px;padding:0;justify-content:center}
 #gamescreen #relay-tray .relay-command small{display:none}
 #gamescreen .console .deckplate{padding-bottom:8px}
}

/* One moulded rubber rocker, seated in a machined thumb well. */
#gamescreen .console .dpad{
 --rocker:polygon(33.333% 0,66.667% 0,66.667% 33.333%,100% 33.333%,100% 66.667%,66.667% 66.667%,66.667% 100%,33.333% 100%,33.333% 66.667%,0 66.667%,0 33.333%,33.333% 33.333%);
 padding:6px;gap:0;border:1px solid #101913;background:radial-gradient(ellipse at 50% 60%,#080e0b 48%,#1b251e 70%,#3a483e 72%,#17211b 76%);
 box-shadow:inset 0 3px 8px #000b,inset 0 -1px 0 #a7b9ab24,0 1px 0 #91a49630;
}
#gamescreen .console .dpad::before,#gamescreen .console .dpad::after{content:'';position:absolute;inset:6px;clip-path:var(--rocker);pointer-events:none;z-index:-1}
#gamescreen .console .dpad::before{background:#080e0b;transform:translateY(5px);filter:drop-shadow(0 3px 2px #000)}
#gamescreen .console .dpad::after{
 background:repeating-linear-gradient(0deg,#ffffff03 0 1px,transparent 1px 3px),linear-gradient(145deg,#667268 0%,#3b483e 3%,#26332b 35%,#1b261f 75%,#101a14 98%);
 box-shadow:inset 0 2px 1px #b8c9bb44,inset 2px 0 1px #b8c9bb22,inset 0 -3px 2px #070d09;
 transition:transform .1s;
}
#gamescreen .console .dpad button,#gamescreen .console .dpad button:disabled{
 background:none;border:0;border-radius:0;box-shadow:none;transform:none;opacity:1;color:#9db3a3;
}
#gamescreen .console .dpad .dpad-up{border-radius:5px 5px 0 0;box-shadow:inset 1px 1px 1px #bed3c02e}
#gamescreen .console .dpad .dpad-left{border-radius:5px 0 0 5px;box-shadow:inset 1px 1px 1px #bed3c022}
#gamescreen .console .dpad .dpad-right{border-radius:0 5px 5px 0;box-shadow:inset -2px 0 2px #0005}
#gamescreen .console .dpad .dpad-down{border-radius:0 0 5px 5px;box-shadow:inset 0 -3px 2px #0006}
#gamescreen .console .dpad [data-direction]::after{width:8px;height:8px;border-width:2px;filter:drop-shadow(0 -1px 0 #000) drop-shadow(0 1px 0 #b9d2c226)}
#gamescreen .console .dpad [data-direction]:disabled::after{color:#45594c}
#gamescreen .console .dpad #padwait{
 margin:3px;min-height:38px;border:0;border-radius:50%;background:radial-gradient(ellipse at 50% 65%,#28372d,#17241b 65%,#101b14 90%);
 box-shadow:inset 0 2px 4px #0009,0 1px 0 #9aaf9d26;color:#7d9584;
}
#gamescreen .console .dpad #padwait .icon{width:12px;height:12px;filter:drop-shadow(0 -1px 0 #000)}
#gamescreen .console .dpad:has(button:active:not(:disabled))::after{transform:translateY(2px)}
#gamescreen .console .dpad button:active:not(:disabled){transform:translateY(2px);background:#0002;box-shadow:inset 0 2px 3px #0005;color:#c0e0c9}
#gamescreen .console .dpad button:focus-visible{outline:2px solid var(--phosphor);outline-offset:-3px}
@media(prefers-reduced-motion:reduce){#gamescreen .console .dpad::after{transition:none}}

/* Shared mould radii and fine-grain, field-worn polymer. */
:root{--deck-grain:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22128%22%20height%3D%22128%22%3E%3Cfilter%20id%3D%22n%22%3E%3CfeTurbulence%20type%3D%22fractalNoise%22%20baseFrequency%3D%22.85%22%20numOctaves%3D%223%22%20stitchTiles%3D%22stitch%22/%3E%3CfeColorMatrix%20type%3D%22saturate%22%20values%3D%220%22/%3E%3CfeComponentTransfer%3E%3CfeFuncA%20type%3D%22linear%22%20slope%3D%22.16%22/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20filter%3D%22url%28%23n%29%22/%3E%3C/svg%3E");--rocker-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M39%200H61Q67%200%2067%206V27Q67%2033%2073%2033H94Q100%2033%20100%2039V61Q100%2067%2094%2067H73Q67%2067%2067%2073V94Q67%20100%2061%20100H39Q33%20100%2033%2094V73Q33%2067%2027%2067H6Q0%2067%200%2061V39Q0%2033%206%2033H27Q33%2033%2033%2027V6Q33%200%2039%200Z%22/%3E%3C/svg%3E")}
#gamescreen .console,#gamescreen .network{
 background-image:var(--deck-grain),linear-gradient(115deg,#a2b4a51a,transparent 12%,transparent 88%,#0003),linear-gradient(135deg,#354139 0%,#232f28 24%,#17221b 65%,#111b15 100%);
 background-size:128px 128px,100% 100%,100% 100%;
}
#gamescreen .console .dpad{border-radius:18px;background-image:var(--deck-grain),radial-gradient(ellipse at 50% 60%,#080e0b 48%,#1b251e 70%,#3a483e 72%,#17211b 76%);background-size:128px 128px,100% 100%}
#gamescreen .console .dpad::before,#gamescreen .console .dpad::after{clip-path:none;-webkit-mask:var(--rocker-mask) center/100% 100% no-repeat;mask:var(--rocker-mask) center/100% 100% no-repeat}
#gamescreen .console .dpad::after{background-image:var(--deck-grain),linear-gradient(145deg,#77877a 0%,#45564a 4%,#2e4034 35%,#203026 75%,#111d15 98%);background-size:128px 128px,100% 100%}
#gamescreen .console .dpad .dpad-up,#gamescreen .console .dpad .dpad-left,#gamescreen .console .dpad .dpad-right,#gamescreen .console .dpad .dpad-down{border-radius:8px;box-shadow:none}
#gamescreen .console .dpad #padwait{border-radius:8px;background-image:var(--deck-grain),radial-gradient(ellipse at 50% 65%,#28372d,#17241b 65%,#101b14 90%);background-size:128px 128px,100% 100%}
#gamescreen .console .actions button{background-image:var(--deck-grain),linear-gradient(145deg,#3b5041,#25392c 65%,#203226);background-size:128px 128px,100% 100%}
#gamescreen .console .actions button:disabled{background-image:var(--deck-grain),linear-gradient(145deg,#233027,#18231c)}

/* Quiet thumb recess; relay commands belong to the readout above the keys. */
#gamescreen .console .dpad{background-image:var(--deck-grain),linear-gradient(150deg,#101b14,#1b2920);background-size:128px 128px,100% 100%;border-radius:12px;box-shadow:inset 0 3px 6px #000c,inset 1px 0 3px #0008,0 1px 0 #8da39230}
@media(max-width:700px){
 #gamescreen .console .console-readout{margin-bottom:10px}
 #gamescreen .console .console-readout #relay-tray{margin:3px 0 0;padding:0;min-height:44px;border-top:1px solid #6e937922;align-items:center}
 #gamescreen .console .mobilecontrols{align-items:center}
 #gamescreen .console .dpad{align-self:center}
}

/* Fixed-size intel rail: one illuminated tick per remaining command. */
#map #scanstatus{display:flex;align-items:center;justify-content:flex-end;gap:2px;height:12px;min-height:12px;flex:0 0 12px;overflow:hidden}
#map #scanstatus .scan-segment{display:block;flex:0 1 4px;min-width:1px;height:4px;background:var(--phosphor);box-shadow:0 0 4px #9dffb555}
#map #scanstatus .scan-offline{width:9px;height:9px;border:1px solid var(--muted-phosphor);background:linear-gradient(135deg,transparent 43%,var(--muted-phosphor) 44% 56%,transparent 57%);opacity:.7}

/* Pulse lives above the overview, never inside its drawing area. */
#map #scanstatus{position:absolute;inset:auto 0 calc(100% + 4px) auto;width:100%;height:8px;min-height:8px;pointer-events:none}
#map .minimapframe,#map .minimapframe.scanning{gap:0}
@media(min-width:701px){#map .minimapframe,#map .minimapframe.scanning{width:122px;height:122px}}

.mission-target{display:inline-flex;align-items:baseline;gap:.3em;color:#efc084;font-weight:inherit}
.mission-target>.icon{position:static!important;display:inline-block;width:.85em;height:.85em;flex:none;align-self:center;color:inherit;vertical-align:middle}
#map .mission #objective .mission-target{font:inherit;letter-spacing:inherit}

#map .mission #objective .mission-target>.icon{position:static;inset:auto;display:inline-block;width:.85em;height:.85em;min-width:.85em;max-width:.85em;flex:0 0 .85em;aspect-ratio:1}

#gamescreen .console #telemetry .security-timing{white-space:nowrap}
#gamescreen .console #telemetry .security-timing.is-warning{color:#efb46b;text-shadow:0 0 6px #efb46b22}

/* Connection menu: quiet icon, generous touch target. */
body[data-playing=true] .playhead #runmenu{background:none;border:0;box-shadow:none;transform:none}
body[data-playing=true] .playhead #runmenu .icon{color:var(--muted-phosphor);transition:color .15s,filter .15s}
body[data-playing=true] .playhead #runmenu:hover .icon,body[data-playing=true] .playhead #runmenu:focus-visible .icon{color:var(--phosphor);filter:drop-shadow(0 0 5px #a3ffbc66)}
body[data-playing=true] .playhead #runmenu:active .icon{opacity:.7}

/* Mission command: compact terminal verb, prominent target, quiet progress rail. */
#map .mission #objective{position:relative;padding-left:13px;font:12px/1.4 var(--mono);color:var(--muted-phosphor)}
body[data-playing=true] #map .mission #objective::before{position:absolute;left:0;top:0;margin:0;color:#789886;font-size:11px}
#map .mission #objective .objective-verb{display:block;font:9px/14px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:#87a592;margin-bottom:4px}
#map .mission #objective .mission-target{display:flex;align-items:center;gap:7px;font:600 21px/1.2 var(--ui);color:#efc084;letter-spacing:.02em}
#map .mission #objective .mission-target>.icon{width:17px;height:17px;min-width:17px;max-width:17px;flex:0 0 17px;filter:drop-shadow(0 0 4px #efc08420)}
#map .mission #objective .objective-detail{display:flex;align-items:center;gap:8px;margin-top:7px;font:10px/14px var(--mono);color:#a7bcad}
#map .objective-progress{display:flex;gap:4px}
#map .objective-progress i{display:block;width:15px;height:3px;background:#344b3c}
#map .objective-progress i.complete{background:#efc084;box-shadow:0 0 5px #efc08433}
@media(max-width:700px){
 #map .mission #objective .mission-target{font-size:17px;gap:6px}
 #map .mission #objective .mission-target>.icon{width:14px;height:14px;min-width:14px;max-width:14px;flex-basis:14px}
 #map .mission #objective .objective-verb{font-size:8px;line-height:12px;margin-bottom:3px}
}

/* Mission names are live data on a narrow inset glass display. */
body[data-playing=true] .playhead .missiontitle{
 position:relative;isolation:isolate;min-height:48px;max-width:640px;padding:10px 16px;
 border-radius:7px;border:1px solid #0a140d;background:#06100a;
 box-shadow:inset 0 3px 7px #000b,inset 1px 0 3px #0008,0 1px 0 #79968238;
}
body[data-playing=true] .playhead .missiontitle::after{
 content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
 background:repeating-linear-gradient(to bottom,transparent 0 2px,#0002 2px 3px),linear-gradient(115deg,#b3e4c209,transparent 45%);
}
body[data-playing=true] .playhead .missiontitle #leveltitle{
 color:#b5f5ca;font:600 25px/1.15 var(--ui);letter-spacing:.075em;
 text-shadow:0 0 9px #92ffb02b;overflow-wrap:anywhere;
}
@media(max-width:700px){
 body[data-playing=true] .playhead{gap:8px}
 body[data-playing=true] .playhead .missiontitle{min-height:44px;padding:9px 12px;border-radius:6px;max-width:none}
 body[data-playing=true] .playhead .missiontitle #leveltitle{font-size:17px;line-height:1.2;letter-spacing:.055em}
 body[data-playing=true] .playhead #runmenu{width:44px;flex-basis:44px}
}

#gamescreen .console #telemetry .cycle-counter{display:inline-flex;align-items:center;gap:6px;color:var(--phosphor)}
#gamescreen .console #telemetry .cycle-counter .icon{position:static;width:12px;height:12px;color:var(--muted-phosphor)}
#gamescreen .console #telemetry .cycle-counter b{font:12px/16px var(--mono);letter-spacing:.04em;font-variant-numeric:tabular-nums}

/* Cycle counter shares the existing log row; no extra status line. */
#gamescreen .console .console-readout{position:relative}
#gamescreen .console .console-readout #log{padding-right:45px}
#gamescreen .console #telemetry .telemetry-heading{height:0;min-height:0;margin:0;padding:0}
#gamescreen .console #telemetry .telemetry-heading h3{position:absolute;right:12px;top:10px;margin:0;line-height:16px}
#gamescreen .console #telemetry .security-timing{display:none;position:absolute;left:12px;right:58px;top:10px;text-align:left;font:9px/16px var(--mono)}
#gamescreen .console #telemetry .security-timing.is-warning,#gamescreen .console #telemetry .security-timing.is-busy{display:block}
#gamescreen .console .console-readout:has(.security-timing.is-warning) #log,#gamescreen .console .console-readout:has(.security-timing.is-busy) #log{visibility:hidden}
@media(max-width:700px){
 #gamescreen .console #telemetry .telemetry-heading h3{right:10px;top:7px}
 #gamescreen .console #telemetry .security-timing{left:10px;top:7px}
}

body[data-playing=true] .playhead #music{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;margin:0;padding:10px;background:none;border:0;box-shadow:none;color:var(--muted-phosphor)}
body[data-playing=true] .playhead #music .icon{width:21px;height:21px}
body[data-playing=true] .playhead #music:hover,body[data-playing=true] .playhead #music:focus-visible{color:var(--phosphor);filter:drop-shadow(0 0 5px #a3ffbc66)}
body[data-playing=true] .playhead #music[aria-pressed="true"]{opacity:.55}

/* Tactical warnings share the fixed readout area, never float over the network. */
#gamescreen .console #hazardstatus{position:static;inset:auto;transform:none;width:auto;max-width:none;height:auto;min-height:0;margin:0;padding:0;overflow:visible;white-space:normal;overflow-wrap:anywhere;font:9px/18px var(--mono);color:#efb46b;pointer-events:auto;scrollbar-width:thin}
#gamescreen .console #hazardstatus:empty{display:none}


/* Hub: daily selection, separate operations, persistent thumb navigation. */
#profile-button{display:grid;place-items:center;width:40px;height:44px;flex:0 0 40px;border:0;background:none;padding:9px;color:var(--muted-phosphor)}
#profile-button .icon{width:22px;height:22px}
#profile-button:hover{color:var(--phosphor);filter:drop-shadow(0 0 5px #a3ffbc55);box-shadow:none}
.contracts-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:24px}
.contracts-heading small{font:9px/1.4 var(--mono);letter-spacing:.12em;color:var(--muted-phosphor)}
.contracts-heading h1,.hub-section-heading h1,.profile-panel h1{font:600 30px/1.15 var(--ui);letter-spacing:.02em;margin:5px 0 0;color:var(--phosphor)}
#contract-count{font:12px var(--mono);white-space:nowrap;color:var(--muted-phosphor)}
#contract-pager{display:none}
#missionselect #resume{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:12px 16px;width:100%;text-align:left;border:1px solid #42654e;border-radius:8px;background:#0c1d13;box-shadow:inset 0 1px 0 #a0cca51a;color:var(--phosphor)}
#missionselect #resume[hidden]{display:none}
#resume>.icon{width:24px;height:24px}#resume span{font:600 18px/1.2 var(--ui)}#resume small{display:block;margin-top:4px;font:10px var(--mono);color:var(--muted-phosphor)}
.hubnav .navkey-symbol{display:flex}.hubnav .navkey-symbol .icon{width:18px;height:18px}
.hub-section-heading{margin:12px 0 28px}.hub-section-heading p{color:var(--muted-phosphor);font:12px/1.5 var(--mono)}
body[data-screen=operations] .operation-board{margin:0;padding:0;border:0}
body[data-screen=operations] .operation-rack-label{display:none}
body[data-screen=operations] .operation-tracks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
body[data-screen=operations] .operation-track{padding:24px 0;border-top:1px solid var(--glass-line)}
.profile-panel{max-width:620px;margin:24px auto}.profile-panel h1{margin-bottom:24px}
.profile-panel>button{display:flex;align-items:center;gap:16px;width:100%;padding:20px 4px;background:none;border:0;border-bottom:1px solid var(--glass-line);text-align:left}
.profile-panel>button>.icon{width:25px;height:25px;flex:none}.profile-panel>button span{font:600 21px var(--ui)}.profile-panel small{display:block;margin-top:5px;font:11px/1.4 var(--mono);color:var(--muted-phosphor)}
@media(min-width:701px){#contract-count{display:none}.hubnav button{gap:8px!important}body[data-screen=missions] .shell>main{justify-content:flex-start}#missionselect{margin-top:28px}}
@media(max-width:700px){
 body:not([data-playing=true]) .shell{padding:env(safe-area-inset-top,0px) 16px calc(88px + env(safe-area-inset-bottom,0px));min-height:100dvh}
 body:not([data-playing=true]) .shell>header{height:64px;min-height:64px;gap:10px;flex-wrap:nowrap}
 body:not([data-playing=true]) header .daily,body:not([data-playing=true]) header #help,body:not([data-playing=true]) header #music,body:not([data-playing=true]) header #save-status{display:none!important}
 body:not([data-playing=true]) header .brand{margin-right:auto}
 body:not([data-playing=true]) header .budget{margin:0;gap:8px}
 body:not([data-playing=true]) header .wallet{font-size:12px;margin:0}
 body:not([data-playing=true]) header #profile-button{width:36px;flex-basis:36px;padding:8px}
 body:not([data-playing=true]) .shell>main{padding:0;display:block}
 body:not([data-playing=true]) footer{display:none}
 body:not([data-playing=true]) #hubnav{
  position:fixed;z-index:30;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;
  margin:0;padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px));border:0;border-top:1px solid #465b4b;border-radius:16px 16px 0 0;
  background-image:var(--deck-grain),linear-gradient(#26342b,#142019);background-size:128px 128px,100% 100%;box-shadow:0 -4px 18px #0006,inset 0 1px 0 #9dbba21c;
 }
 body:not([data-playing=true]) #hubnav button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:52px;margin:0;padding:5px 2px;border:0;border-radius:8px;background:none;box-shadow:none;transform:none;color:#809b89}
 body:not([data-playing=true]) #hubnav button::before,body:not([data-playing=true]) #hubnav button::after{content:none}
 body:not([data-playing=true]) #hubnav button.selected{color:#c0f5ce;background:#09180f;box-shadow:inset 0 2px 4px #0006,0 1px 0 #a0b8a51a}
 body:not([data-playing=true]) #hubnav .navkey-symbol{display:flex!important}
 body:not([data-playing=true]) #hubnav .navkey-symbol .icon{width:21px;height:21px}
 body:not([data-playing=true]) #hubnav .navkey-label{font:10px/13px var(--mono);letter-spacing:0;text-transform:none}
 body[data-screen=missions] #missionselect{width:100%;margin:8px 0 0;min-width:0}
 .contracts-heading{margin-bottom:12px}.contracts-heading h1{font-size:27px}.contracts-heading small{font-size:8px}
 #missionselect #levels{position:relative;display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0;margin:0;align-items:stretch;overscroll-behavior-x:contain}
 #missionselect #levels::-webkit-scrollbar{display:none}
 #missionselect #levels button.terminal-contract,#missionselect #levels button.terminal-contract:hover,#missionselect #levels button.terminal-contract.is-cleared{
  flex:0 0 100%;width:100%;min-width:0;min-height:380px;height:clamp(380px,calc(100svh - 240px),610px);scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;flex-direction:column;align-items:stretch;padding:22px 20px;margin:0;text-align:left;border:0;border-radius:10px;
  background:#09150e;box-shadow:inset 0 1px 0 #78988326,inset 0 -1px 0 #0008;
 }
 body[data-screen=missions]:has(#resume:not([hidden])) #levels button.terminal-contract{height:clamp(340px,calc(100svh - 318px),540px);min-height:340px}
 #missionselect .terminal-contract::after,#missionselect .contract-name::before{content:none!important}
 #missionselect .contract-topline{font-size:10px}
 #missionselect .contract-identity{margin:24px 0 14px;gap:10px}
 #missionselect .contract-identity>svg{width:34px;height:34px}
 #missionselect .contract-name{font-size:32px;line-height:1.08;min-height:0}
 #missionselect .contract-kind{margin:8px 0 18px;font-size:12px}
 #missionselect .contract-data{font-size:10px;gap:10px;margin:0 0 12px}
 #missionselect .contract-effects{margin:4px 0 20px;gap:7px;min-height:0;font-size:12px}
 #missionselect .contract-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:10px}
 #missionselect .contract-reward{font-size:25px}#missionselect .contract-open{font-size:11px}
 #contract-pager{display:flex;align-items:center;justify-content:center;gap:0;margin:3px 0}
 #contract-pager button{display:grid;place-items:center;width:36px;height:36px;min-height:36px;border:0;background:none;padding:0;box-shadow:none}
 #contract-pager i{width:6px;height:5px;border-radius:0;background:#405b49;transition:width .15s}
 #contract-pager [aria-current=true] i{width:18px;border-radius:0;background:var(--phosphor)}
 body[data-screen=operations] .operation-tracks{grid-template-columns:1fr;gap:12px}
 body[data-screen=operations] .operation-track{padding:22px 0}
 .hub-section-heading{margin:14px 0 20px}.profile-panel{margin:16px 0}
}
/* The hub is a physical selector, not a landing page. */
.contracts-heading{display:none}
@media(max-width:700px){
 body[data-screen=missions] #missionselect{display:block;margin-top:6px}
 body:not([data-playing=true]) #hubnav{height:auto;min-height:68px}
 #missionselect #resume{justify-content:flex-start;gap:12px;min-height:58px;height:58px;padding:8px 14px;margin:0 0 14px;border-radius:9px;background-image:var(--deck-grain),linear-gradient(140deg,#263a2c,#16271c);background-size:128px 128px,100% 100%;box-shadow:inset 0 1px 0 #94b89d33,0 2px 0 #050d08}
 #missionselect #resume::before,#missionselect #resume::after{content:none}
 #missionselect #resume>span{display:block;flex:1;text-align:left;font:600 17px/19px var(--ui);text-transform:none;letter-spacing:.01em}
 #missionselect #resume>span small{margin:0 0 3px;font:7px/10px var(--mono);letter-spacing:.12em;color:#91b99c}
 #missionselect #resume>.icon{width:23px;height:23px;flex:none;color:#b7f2c4}
 #missionselect #levels{border-radius:14px;background:#0a130d;box-shadow:0 4px 0 #050b07,0 5px 0 #334438,0 9px 20px #0006}
 #missionselect #levels button.terminal-contract,#missionselect #levels button.terminal-contract:hover,#missionselect #levels button.terminal-contract.is-cleared{
 height:clamp(370px,calc(100svh - 214px),620px);min-height:370px;padding:25px 24px;border:8px solid #26382c;border-radius:14px;
 background:linear-gradient(130deg,#102219,#07130c 65%);box-shadow:inset 0 2px 8px #000a,inset 0 -1px 0 #91b79c2a;
 }
 body[data-screen=missions]:has(#resume:not([hidden])) #levels button.terminal-contract{height:clamp(370px,calc(100svh - 286px),548px);min-height:370px}
 #missionselect .contract-topline{font-size:9px;color:#91ae9c}
 #missionselect .contract-state{font-size:0;line-height:12px}
 #missionselect .contract-state::after{content:'';display:inline-block;width:5px;height:5px;background:#9cf9b6;box-shadow:0 0 7px #9cf9b655;border-radius:1px}
 #missionselect .is-cleared .contract-state::after{display:none}
 #missionselect .contract-state .icon{width:12px;height:12px}
 #missionselect .contract-identity{margin:28px 0 20px;gap:12px;font-size:12px}
 #missionselect .contract-identity>svg{width:46px;height:46px}
 #missionselect .contract-name{font:600 36px/1 var(--ui);letter-spacing:.015em;color:#c6f8d4}
 #missionselect .contract-kind{font:11px/16px var(--mono);margin:10px 0 24px;color:#92b49e}
 #missionselect .contract-effects{font-size:12px;margin:12px 0 18px;gap:8px}
 #missionselect .contract-reward small{display:none}
 #missionselect .contract-open{color:#b7ddc2;font-size:10px}
 #missionselect .contract-bottom{padding-top:16px;border-top:1px solid #9abd9f22}
 #contract-pager{height:44px;gap:0;margin:8px 0 0}
 #contract-pager .pager-count{font:10px/16px var(--mono);color:#8ea999;margin-right:12px}
 body:not([data-playing=true]) #hubnav{padding-top:7px;background-image:var(--deck-grain),linear-gradient(145deg,#344339,#18281e);box-shadow:inset 0 1px 0 #c5dac433,0 -3px 14px #0008}
 body:not([data-playing=true]) #hubnav button{min-height:52px;color:#8da794}
 body:not([data-playing=true]) #hubnav button.selected{background:#0b1b11;color:#c0f5ce;box-shadow:inset 0 2px 5px #000a,0 1px 0 #bdd2c12a}
}

#missionselect #levels button.terminal-contract{position:relative;isolation:isolate;overflow:hidden}
#missionselect #levels .contract-watermark{position:absolute;right:-25px;bottom:60px;width:210px;height:210px;display:block;z-index:-1;pointer-events:none;color:#98c5a7;opacity:.075;transform:rotate(-8deg)}
#missionselect #levels .contract-watermark svg{width:100%;height:100%;display:block;color:inherit}
@media(max-width:700px){#missionselect #levels .contract-watermark{width:245px;height:245px;right:-38px;bottom:74px;opacity:.085}}
@media(min-width:701px){
 #missionselect #resume{justify-content:flex-start;gap:12px;min-height:58px;height:58px;max-width:480px;margin-bottom:22px}
 #missionselect #resume::before,#missionselect #resume::after{content:none}
 #missionselect #resume>span{flex:1;text-align:left;font:600 19px/1.2 var(--ui);text-transform:none}
 #missionselect #resume small{font:8px/12px var(--mono);margin:0 0 4px}
}

#missionselect .contract-open{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;color:#abd6b8}
#missionselect .contract-open .icon{width:23px;height:23px}
#missionselect .terminal-contract:hover .contract-open,#missionselect .terminal-contract:focus-visible .contract-open{color:#d0ffdf;filter:drop-shadow(0 0 6px #a0ffc44d)}

/* Two discrete preparation screens. */
.brief-flow{max-width:760px;margin:0 auto;min-height:0;display:flex;flex-direction:column;gap:16px;padding:16px 24px 24px;box-sizing:border-box}
.brief-route{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font:12px var(--mono);flex-shrink:0}
.brief-route button{background:none;border:0;padding:8px;width:44px;height:44px}.brief-route svg{width:22px;height:22px}
.brief-flow .briefing{padding:0;min-height:0}.brief-flow .briefing h2,.brief-flow>h2{font-size:32px;margin:12px 0 16px}
.brief-flow .brief-issuer{display:flex;align-items:center;justify-content:space-between;gap:12px}.brief-flow .brief-issuer>small{font:10px var(--mono)}
.brief-flow .briefsteps{margin:16px 0}.brief-flow .briefsteps li{font-size:17px;line-height:1.4}
.brief-flow .brief-effect-bank{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}.brief-flow .brief-effect{padding:0}.brief-flow .brief-effect-heading{padding:0!important}.brief-flow .brief-effect-heading>span{font-size:14px!important}.brief-flow .brief-effect-heading small{font-size:11px}
.brief-flow .brief-intel{margin:16px 0 0}.brief-flow .brief-intel p{font-size:14px;line-height:1.45;margin:0}
.brief-reward{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;border-top:1px solid #284333;padding-top:16px}.brief-reward>span{font:26px var(--mono)}.brief-reward svg{width:22px;height:22px}.brief-reward small{font:11px var(--mono);color:var(--muted)}
.brief-continue{display:flex;align-items:center;justify-content:space-between;min-height:54px;background:none;border:0;border-top:1px solid #284333;text-align:left;font:18px var(--mono);padding:12px 0}.brief-continue svg{width:26px;height:26px}
.brief-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:auto 0}.brief-slot{min-width:0}.brief-slot .cartridge{width:100%;box-sizing:border-box}.brief-slot label{display:flex;gap:8px;align-items:center;margin-top:16px;font:11px var(--mono);color:var(--muted)}.brief-slot select{min-width:0;width:100%;font:16px var(--mono);color:var(--phosphor);background:#0b1911;border:1px solid #34513d;border-radius:6px;padding:10px 6px}.loadout-power{display:flex;align-items:center;justify-content:space-between;font:14px var(--mono);color:var(--muted)}.loadout-power svg{width:24px;height:24px}.brief-launch{margin-top:auto}.brief-launch #deploy{width:100%}
@media(min-width:701px){.brief-flow{min-height:calc(100svh - 160px)}}
@media(max-width:700px){
 body[data-screen="briefing"] main,body[data-screen="loadout"] main{padding-bottom:0}
 .brief-flow{height:calc(100svh - 152px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:0 8px 8px;gap:10px}
 .brief-flow .briefing h2,.brief-flow>h2{font-size:26px;margin:8px 0 12px}.brief-flow .brief-issuer>small{font-size:9px}.brief-flow .briefsteps{margin:12px 0}.brief-flow .briefsteps li{font-size:15px}.brief-flow .brief-intel p{font-size:12px}.brief-flow .brief-effect-heading>span{font-size:12px!important}.brief-flow .brief-effect-heading small{font-size:10px}.brief-flow .brief-intel{margin-top:12px}.brief-flow .brief-issuer .corp-logo{width:28px;height:28px}
 .brief-slots{gap:8px}.brief-slot label{flex-direction:column;align-items:stretch;gap:5px}.brief-slot .cart-face{flex-direction:column;gap:8px}.brief-slot .cart-face strong{font-size:13px}.brief-slot .cart-effect{font-size:10px}.brief-slot .cart-series{font-size:8px}.brief-slot .cart-serial{font-size:7px}.brief-slot select{font-size:16px;padding:10px 2px}.brief-reward{padding-top:10px}.brief-route{min-height:40px}
}

.brief-reward>span{display:flex;align-items:center;gap:8px}
@media(max-height:700px) and (max-width:700px){.brief-flow{gap:5px}.brief-flow .brief-intel{margin-top:6px}.brief-flow .brief-intel p{font-size:11px;line-height:1.25}.brief-flow .briefsteps{margin:6px 0}.brief-flow .briefing h2{font-size:22px;margin:5px 0}.brief-flow .brief-issuer .corp-wordmark{display:none}.brief-flow .brief-effect-bank{gap:5px}.brief-route{min-height:30px}.brief-route button{height:30px;padding:4px}.brief-continue{min-height:42px;padding:8px 0}.brief-slots .cart-serial,.brief-slots .cart-series{display:none}.brief-slots .cart-face svg{width:24px;height:24px}.brief-slot label{margin-top:8px}}
.brief-flow .brief-slot{display:flex;flex-direction:column;gap:10px;padding:8px 0;background:none!important;border:0;box-shadow:none!important;transform:none;color:var(--muted-phosphor);text-align:left}.brief-slot-number{font:12px var(--mono);display:block;padding:0 6px}.brief-slot.selected .brief-slot-number{color:var(--phosphor)}.brief-slot.selected .cartridge{filter:brightness(1.15);outline:1px solid var(--phosphor);outline-offset:4px}.brief-slot:not(.selected) .cartridge{filter:brightness(.8)}
.brief-flow .brief-slots{margin:auto 0 12px}.brief-module-case{display:flex;overflow-x:auto;gap:16px;padding:12px 2px;flex-shrink:0;border-top:1px solid #284333;scroll-snap-type:x proximity}.brief-module-case button{display:flex;gap:10px;align-items:center;flex:0 0 auto;scroll-snap-align:start;background:none!important;border:0;box-shadow:none!important;padding:6px;color:var(--phosphor);text-align:left;font:14px var(--mono)}.brief-module-case svg{width:25px;height:25px}.brief-module-case small{display:block;font:10px var(--mono);color:var(--muted-phosphor);margin-top:4px}.brief-module-case button:disabled{opacity:.3}.brief-launch{padding-top:14px;border-top:1px solid #284333}
.brief-flow .brief-launch #deploy,.brief-flow .brief-launch #briefresume{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:12px 0;background:none!important;box-shadow:none!important;border:0;border-radius:0;text-align:left;color:var(--phosphor);font:22px var(--display);min-height:70px}.brief-flow .brief-launch #briefresume:before{display:none}.brief-resume small{display:block;font:11px var(--mono);color:var(--muted-phosphor);margin-top:8px}.brief-resume svg{width:28px;height:28px}.brief-launch #deploy .chargevalue{background:none;box-shadow:none;border:0}.brief-module-case button:hover,.brief-resume:hover{filter:drop-shadow(0 0 5px #8cffb54d)}
/* Dossier commands stay unfilled in every interaction state. */
#hubcontent .brief-flow .brief-route button,#hubcontent .brief-flow #briefcontinue,
#hubcontent .brief-flow .brief-route button:is(:hover,:active,:focus,:focus-visible),
#hubcontent .brief-flow #briefcontinue:is(:hover,:active,:focus,:focus-visible){background:transparent!important;background-image:none!important;box-shadow:none!important;text-decoration:none;transform:none}
#hubcontent .brief-flow .brief-route button::before,#hubcontent .brief-flow .brief-route button::after,
#hubcontent .brief-flow #briefcontinue::before,#hubcontent .brief-flow #briefcontinue::after{display:none!important}
#hubcontent .brief-flow .brief-route button:is(:hover,:focus-visible),#hubcontent .brief-flow #briefcontinue:is(:hover,:focus-visible){color:#d0ffdf;text-shadow:0 0 9px #9bffbd66}
#hubcontent .brief-flow .brief-route button:focus-visible,#hubcontent .brief-flow #briefcontinue:focus-visible{outline:1px dashed #91b99d;outline-offset:3px}
.brief-display{position:relative;isolation:isolate;overflow:hidden;min-height:148px;display:flex;flex-direction:column;justify-content:space-between;gap:26px;padding:20px 22px;border:5px solid #233329;border-radius:16px;background:#07110c;box-shadow:0 2px 0 #080c09,inset 0 3px 12px #000,0 0 0 1px #526554,inset 0 -1px 0 #63846b40;box-sizing:border-box}
.brief-display::after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 3px,#0002 3px 4px);z-index:2}
.brief-display-top{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;z-index:1;font:11px var(--mono);color:#91b39b}
.brief-display-mark{position:absolute;right:-12px;bottom:-26px;width:155px;height:155px;opacity:.16;pointer-events:none;z-index:-1}.brief-display-mark .corp-logo{width:100%;height:100%}
.brief-flow .briefing .brief-display h2{position:relative;max-width:85%;margin:0;font:32px/1.1 var(--display);letter-spacing:1px;color:#c7ffda;text-shadow:0 0 13px #6bff9b33;overflow-wrap:anywhere}
.brief-threat{display:flex;gap:4px;align-items:flex-end;height:15px;flex-shrink:0}.brief-threat i{width:4px;height:7px;background:#294032}.brief-threat i:nth-child(2){height:11px}.brief-threat i:nth-child(3){height:15px}.brief-threat i.lit{background:#b5d9a0;box-shadow:0 0 5px #b5d9a030}
@media(max-width:700px){.brief-display{min-height:138px;padding:16px 18px;gap:24px}.brief-flow .briefing .brief-display h2{font-size:28px}.brief-flow .briefsteps{margin:18px 0}.brief-display-top{font-size:10px}}
@media(max-height:700px) and (max-width:700px){.brief-display{min-height:104px;padding:12px 14px;gap:14px}.brief-flow .briefing .brief-display h2{font-size:23px}.brief-flow .briefsteps{margin:8px 0}.brief-display-mark{width:120px;height:120px}}
.brief-display .brief-threat{display:grid;place-items:center;min-width:26px;height:24px;font:14px var(--mono);letter-spacing:2px;color:#a8cbb2;border:1px solid #68897255;border-radius:3px;padding:0 4px;box-sizing:border-box}.brief-display .brief-threat[data-level=hard]{color:var(--amber);border-color:#c99c5e66}
/* Effects explain gameplay; the repeated narrative is omitted from the compact dossier. */
.brief-flow .brief-effect-bank{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}
.brief-flow .brief-effect p{padding:0!important;margin:7px 0 0!important;font:12px/1.4 var(--mono)!important;color:#9fbaa7;max-width:none}
.brief-flow .brief-effect-heading{min-height:22px;align-items:center}.brief-flow .brief-effect-heading>span{color:var(--phosphor)}
@media(max-width:700px){.brief-flow .brief-effect-bank{gap:14px 16px}.brief-flow .brief-effect p{font-size:11px!important;line-height:1.4!important}.brief-flow .briefing .brief-display{min-height:120px;gap:16px}.brief-flow .briefing .brief-display h2{font-size:25px}}
@media(max-width:700px) and (max-height:700px){.brief-flow .brief-effect-bank{gap:8px 12px}.brief-flow .brief-effect p{font-size:10px!important;line-height:1.25!important}.brief-flow .briefing .brief-display{min-height:90px;padding:10px 14px}.brief-flow .briefing .brief-display h2{font-size:22px}}

.brief-route .brief-difficulty{font:12px var(--mono);color:var(--muted-phosphor);letter-spacing:0;background:none;border:0;padding:0 4px}.brief-route .brief-difficulty[data-level=hard]{color:var(--amber)}
@media(max-width:700px){
 body:not([data-playing=true]) #hubnav{min-height:54px;padding:4px 12px calc(5px + env(safe-area-inset-bottom,0px));border-radius:13px 13px 0 0}
 body:not([data-playing=true]) #hubnav button{min-height:44px;padding:3px 2px;gap:3px}
 body:not([data-playing=true]) #hubnav .navkey-symbol .icon{width:20px;height:20px}
}

/* NODE RUNNER typography: machined titles, readable UI, monospaced telemetry. */
@font-face{font-family:'PP Supply Sans';src:url('./fonts/PPSupplySans-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'PP Supply Sans';src:url('./fonts/PPSupplySans-Medium.woff2') format('woff2');font-weight:500 600;font-style:normal;font-display:swap}
@font-face{font-family:'PP Supply Sans';src:url('./fonts/PPSupplySans-Bold.woff2') format('woff2');font-weight:700 900;font-style:normal;font-display:swap}
@font-face{font-family:'PP Supply Mono';src:url('./fonts/PPSupplyMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'PP Neue Machina';src:url('./fonts/PPNeueMachina-InktrapMedium.woff2') format('woff2');font-weight:400 700;font-style:normal;font-display:swap}
:root{--mono:'PP Supply Mono',monospace;--ui:'PP Supply Sans',sans-serif;--display:'PP Neue Machina','PP Supply Sans',sans-serif}
.contract-name,.brief-flow h2,#leveltitle,.result-copy h2,.profile-panel h1,.hub-section-heading h1{font-family:var(--display);font-weight:500;letter-spacing:-.035em;line-height:1.15}
.brief-flow .briefing .brief-display h2{font-family:var(--display);font-weight:500;letter-spacing:-.035em;line-height:1.15;max-width:100%}
.brief-flow .brief-effect p{font-family:var(--ui)!important;font-size:13px!important;line-height:1.45!important}
#gamescreen .actions button{font-family:var(--ui)}
@media(max-width:700px){
 #missionselect .contract-name{font-size:30px;line-height:1.12}
 .brief-flow .briefing .brief-display h2{font-size:26px}
 #gamescreen .actions button{font-size:12px}
 .brief-flow .brief-effect p{font-size:12px!important}
 .brief-slot .cart-face strong{font-size:11px}
}
@media(max-width:370px){#missionselect .contract-name{font-size:27px}.brief-flow .briefing .brief-display h2{font-size:23px}}
/* Navigation is a compact deck rail; the home-indicator inset is outside its case. */
@media(max-width:700px){
 body:not([data-playing=true]) #hubnav{left:12px;right:12px;bottom:max(8px,env(safe-area-inset-bottom,0px));height:62px;min-height:62px;padding:5px 6px;gap:4px;border:1px solid #405346;border-radius:14px;background-image:var(--deck-grain),linear-gradient(155deg,#25362b,#142219);box-shadow:inset 0 1px 0 #b7d4ba26,0 3px 0 #080e0a,0 8px 24px #0008}
 body:not([data-playing=true]) #hubnav button{min-height:50px;height:50px;padding:4px 2px;gap:5px;border-radius:9px;color:#94ab9b}
 body:not([data-playing=true]) #hubnav .navkey-symbol .icon{width:22px;height:22px}
 body:not([data-playing=true]) #hubnav .navkey-label{font:500 11px/14px var(--ui);letter-spacing:0;white-space:nowrap}
 body:not([data-playing=true]) #hubnav button.selected{color:#c8ffdb;background:#0a170f;box-shadow:inset 0 1px 4px #0009,0 1px 0 #c1dec019}
 body:not([data-playing=true]) #hubnav button.selected .navkey-symbol{filter:drop-shadow(0 0 5px #9dffbd44)}
 body:not([data-playing=true]) #hubnav button:focus-visible{outline:1px solid #c8ffdb;outline-offset:-2px}
}
@media(max-width:700px){body:not([data-playing=true]) #hubnav{width:auto;min-width:0}}

.module-case .case-cell.is-installed .loose-module .cartridge{filter:grayscale(1) brightness(.55);opacity:.7}
.module-case .case-cell.is-installed .loose-module:is(:hover,:focus-visible,.picked) .cartridge{filter:grayscale(1) brightness(.75);opacity:.85}

#deploy{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.brief-launch #deploy .chargevalue{position:relative;flex:0 0 58px;width:58px;height:58px;display:grid;place-items:center;font:18px var(--mono)}
.brief-launch #deploy .chargevalue,.brief-launch #deploy.charging .chargevalue{background:none!important;box-shadow:none!important;border:0}

.brief-flow .brief-launch #deploy{padding-left:18px;padding-right:12px}

/* Shared footer geometry keeps next-step and jack-in commands in the same place. */
.brief-flow .brief-launch #deploy,#hubcontent .brief-flow #briefcontinue{height:82px;min-height:82px;flex-shrink:0;margin:0;padding:12px 12px 12px 18px;border:0;gap:16px;font:22px var(--display);color:var(--phosphor)}
#hubcontent .brief-flow #briefcontinue .chargevalue{display:grid;place-items:center;flex:0 0 58px;width:58px;height:58px;padding:0;background:none;border:0;box-shadow:none}
#hubcontent .brief-flow #briefcontinue .chargevalue svg{width:30px;height:30px}
.brief-flow .brief-next-launch{margin-top:0}
.brief-flow .brief-reward{margin-bottom:14px}
#hubcontent .brief-flow #briefcontinue{width:100%;box-sizing:border-box}

.icon-interface{shape-rendering:geometricPrecision}#profile-button .icon-interface{width:24px;height:24px}
/* A single object on a padded dealer's tray. */
.market-room{height:calc(100svh - 120px);max-height:920px;max-width:720px;margin:12px auto 0;display:flex;flex-direction:column;gap:12px;min-height:0}
.market-sections{display:flex;gap:8px;flex-shrink:0;justify-content:space-between}.market-sections button{flex:1;min-width:0;border:0;padding:8px 4px;background:none!important;box-shadow:none!important;font:14px var(--ui);color:var(--muted-phosphor)}.market-sections button[aria-pressed=true]{color:var(--phosphor);text-shadow:0 0 8px #9cffb344}
.market-cabinet{flex:1;min-height:0;position:relative;padding:28px;border:1px solid #53604d;border-radius:18px;background-image:var(--deck-grain),linear-gradient(130deg,#333a2d,#151e16 55%,#273021);box-shadow:inset 0 1px 0 #c6ceaa3b,inset 0 0 0 5px #152017,0 5px 0 #070d08,0 15px 35px #0008;overflow:hidden}
.market-cabinet:before,.market-cabinet:after{content:'';position:absolute;top:11px;width:7px;height:7px;border-radius:50%;background:#0a100b;box-shadow:inset 0 1px 2px #000,0 1px 0 #9aa58c44}.market-cabinet:before{left:12px}.market-cabinet:after{right:12px}
.market-cabinet>article{height:100%;min-height:0;display:flex;flex-direction:column;gap:18px;padding:0;border:0;background:none;box-shadow:none;margin:0}
.market-stage,.market-cabinet .hardware-emblem{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:28px 24px;background:repeating-linear-gradient(135deg,#0d150e 0 2px,#111a12 2px 5px);border-radius:11px;box-shadow:inset 0 3px 12px #000c,0 1px 0 #a9b79a33;border:1px solid #070d08}
.market-stage>.cartridge{width:210px;max-width:100%;flex:none;transform:rotate(-5deg);filter:drop-shadow(10px 17px 8px #0009);font-size:16px}.market-stage .cart-face{flex-direction:column;align-items:flex-start;gap:14px}.market-stage .cart-face strong{font:500 clamp(18px,3.5vw,26px)/1.1 var(--display);letter-spacing:-.04em;overflow-wrap:anywhere;max-width:100%}.market-stage .cart-face .icon{width:34px;height:34px}.market-stage .cart-effect{font:13px/1.4 var(--ui)}.market-stage .cart-serial{font-size:7px}
/* Long names also fit their smaller deck/library labels. */
.cart-face strong{min-width:0;overflow-wrap:anywhere}.cartridge-radar .cart-face strong,.cartridge-overclock .cart-face strong{font-size:clamp(10px,2.6vw,20px);letter-spacing:-.04em}
.market-spec{flex-shrink:0}.market-spec>span{font:10px var(--mono);color:#a4b499}.market-spec h2,.market-cabinet .hardware-product h2{font:24px/1.1 var(--display);margin:0 0 6px;letter-spacing:-.035em}.market-spec p,.market-cabinet .hardware-product>p{font:14px/1.4 var(--ui);color:#a4b499;margin:6px 0 0}.market-cabinet .hardware-product>small{display:none}.market-cabinet .hardware-emblem{width:100%;height:auto;margin:0}.market-cabinet .hardware-emblem .icon{width:82px;height:82px;padding:18px;background:#28372a;border:3px solid #526248;box-shadow:5px 6px 0 #030805,0 0 0 10px #0a130b;box-sizing:content-box;color:#a9c091}
.market-cabinet .price-ticket,.market-cabinet .market-order{position:relative;isolation:isolate;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:66px;margin:0;padding:12px 18px;border:1px solid #68755c;border-radius:8px;background:linear-gradient(#3d4c35,#263221)!important;box-shadow:inset 0 1px 1px #dce5b84d,0 5px 0 #080e08,0 7px 8px #0008!important;color:#d1e9bc;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.market-cabinet .price-ticket:before{content:'';position:absolute;inset:auto auto 0 0;height:3px;width:var(--purchase,0%);background:#c3ffae;box-shadow:0 0 10px #bcff9e;z-index:1}.market-cabinet .price-ticket.is-pressing{transform:none;box-shadow:inset 0 2px 4px #0006,0 2px 0 #080e08!important}.market-cabinet .price-ticket>span{font:15px var(--ui);letter-spacing:0}.market-cabinet .price-ticket>b{font:23px var(--mono)}.market-cabinet .price-ticket:disabled{opacity:.55}.market-cabinet .price-ticket small{font-size:16px}.market-cabinet .market-order{font:15px var(--ui)}.market-cabinet .blueprint-lock{margin:0;padding:12px;font:11px var(--mono);flex-shrink:0}.market-cabinet .shell-sample{width:230px;max-width:100%;height:230px;transform:rotate(-6deg);box-shadow:10px 16px 12px #0009}.market-stage .bus-component{width:220px;max-width:100%;height:180px;transform:rotate(-5deg)}
.market-pagination{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;height:40px}.market-pagination>button{display:grid;place-items:center;width:44px;height:44px;border:0;background:none!important;box-shadow:none!important}.market-pagination>button:disabled{opacity:.25}.market-segments{display:flex;align-items:center;justify-content:center;flex:1;min-width:0}.market-segments button{flex:1;max-width:30px;min-width:0;height:36px;min-height:36px;padding:0;display:grid;place-items:center;border:0;background:none!important;box-shadow:none!important}.market-segments i{width:6px;height:5px;border-radius:0;background:#405b49;transition:width .15s}.market-segments [aria-current=true] i{width:18px;background:var(--phosphor)}#market-feedback{height:16px;flex-shrink:0;font:11px var(--ui);color:#a9d2b3;text-align:center}
@media(max-width:700px){.market-room{height:calc(100svh - 164px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0;gap:8px}.market-sections{gap:2px}.market-sections button{font-size:12px;padding:6px 0;min-height:38px}.market-cabinet{padding:18px 16px}.market-cabinet>article{gap:13px}.market-stage{padding:20px 16px}.market-stage>.cartridge{width:170px}.market-stage .cart-face strong{font-size:22px}.market-stage .cart-face .icon{width:30px;height:30px}.market-spec p,.market-cabinet .hardware-product>p{font-size:12px}.market-spec h2,.market-cabinet .hardware-product h2{font-size:21px}.market-cabinet .price-ticket{min-height:60px;padding:10px 14px}.market-cabinet .shell-sample{width:175px;height:190px}.market-cabinet .hardware-emblem .icon{width:60px;height:60px}.market-spec>span{font-size:9px}}
@media(max-width:700px) and (max-height:700px){.market-cabinet{padding:14px}.market-cabinet>article{gap:8px}.market-stage{padding:10px}.market-stage>.cartridge{width:125px}.market-stage .cart-face{gap:5px;padding:7px 0}.market-stage .cart-face strong{font-size:17px}.market-stage .cart-face .icon{width:20px;height:20px}.market-stage .cart-effect{font-size:10px}.market-stage .cart-serial,.market-stage .cart-grip{display:none}.market-cabinet .shell-sample{width:120px;height:130px}.market-cabinet .hardware-emblem .icon{width:35px;height:35px;padding:10px}.market-cabinet .price-ticket{min-height:48px}.market-spec p{font-size:11px}}

/* Pressing changes the key's lighting, never its geometry. */
.market-cabinet .price-ticket,.market-cabinet .price-ticket:hover:not(:disabled),.market-cabinet .price-ticket:active,.market-cabinet .price-ticket:focus-visible{transform:none;box-sizing:border-box;border:1px solid #68755c}
.market-cabinet .price-ticket{transition:box-shadow 100ms ease,color 100ms ease}
.market-cabinet .price-ticket::before{opacity:1;left:0;top:auto;bottom:0;transform:none;pointer-events:none}
.market-cabinet .price-ticket:focus-visible{outline:1px solid #c3ffae;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.market-cabinet .price-ticket{transition:none}}

/* Keep the display recess fixed while only the merchandise moves. */
.market-spec{height:76px;box-sizing:border-box}
@media(max-width:700px){.market-spec{height:66px}}
@media(max-width:700px) and (max-height:700px){.market-spec{height:58px}}

/* Hardware keeps the same recess and footer regardless of copy length or lock state. */
.market-cabinet .hardware-product .market-spec,.market-hardware .market-spec{height:96px}
/* Reserve the same footer for every hardware item, including unlock requirements. */
.market-cabinet .hardware-product .price-ticket,
.market-cabinet .hardware-product .blueprint-lock,
.market-cabinet .market-hardware .price-ticket{height:76px;min-height:76px;box-sizing:border-box}
.market-cabinet .hardware-product .blueprint-lock{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-content:center;align-items:center;gap:4px 12px;padding:10px 14px}
.market-cabinet .blueprint-lock>span{grid-column:1;grid-row:1;font:10px/1.2 var(--mono)}
.market-cabinet .blueprint-lock>small{grid-column:1;grid-row:2;margin:0;font:12px/1.3 var(--ui);min-width:0}
.market-cabinet .blueprint-lock>b{grid-column:2;grid-row:1 / 3;white-space:nowrap;font:20px/1 var(--mono)}
@media(max-width:700px) and (max-height:700px){
 .market-cabinet .hardware-product .market-spec,.market-hardware .market-spec{height:84px}
 .market-cabinet .hardware-product .price-ticket,.market-cabinet .hardware-product .blueprint-lock,.market-cabinet .market-hardware .price-ticket{height:72px;min-height:72px}
}
/* Completed runs: one recessed display, real route, and a fixed action rail. */
body[data-result=true] .shell{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:20px}
body[data-result=true] .shell>header{flex-shrink:0}
body[data-result=true] .shell>main{flex:1;min-height:0;display:flex;flex-direction:column;padding:0}
#runresult:not([hidden]){position:relative;display:flex;flex-direction:column;flex:1;min-height:0;max-height:850px;width:100%;max-width:880px;gap:14px;padding:0;margin:12px auto 0;background:none;border:0;box-shadow:none;overflow:visible}
.result-display{position:relative;isolation:isolate;flex:1;min-height:0;overflow:hidden;padding:34px;border:10px solid #29352c;border-radius:22px;background:#06100a;box-shadow:0 0 0 1px #5d6c5e,inset 0 3px 16px #000,0 5px 0 #050a06}
.result-display:after{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;border-radius:12px;box-shadow:inset 0 0 40px #0007;background:repeating-linear-gradient(0deg,#0001 0 1px,transparent 1px 4px)}
#runresult .result-copy{position:relative;z-index:1;display:flex;flex-direction:column;height:100%;max-width:none;min-height:0;overflow-wrap:normal}
.result-heading h2{font:500 clamp(26px,4vw,48px)/1.1 var(--display);letter-spacing:-.04em;margin:0;max-width:520px;text-shadow:0 2px 14px #000}
.result-heading p{margin:8px 0 0;color:#c79d88;font:12px var(--ui)}
.is-lost .result-heading h2{color:#ffab8c}
.result-route-space{flex:1;min-height:24px}
#runresult .result-echo{position:absolute;display:block;inset:0;top:5%;width:100%;height:74%;max-width:none;margin:0;opacity:.65;mask-image:linear-gradient(transparent,#000 20%,#000 65%,transparent);pointer-events:none;color:#79b68a}
#runresult .result-echo svg{display:block;width:100%;height:100%;overflow:visible}
#runresult .echo-network path{stroke:currentColor;stroke-width:.7;opacity:.3}
#runresult .echo-network rect{fill:currentColor;opacity:.5}
#runresult .echo-route{stroke:var(--phosphor);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:echo-route-draw var(--route-duration,4s) linear .3s forwards;filter:drop-shadow(0 0 3px #98ffb066)}
#runresult .echo-position>rect:first-child{stroke:var(--phosphor);stroke-width:1.3;fill:#07140c}
#runresult .echo-ring{display:none}
.result-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:16px 0;border-top:1px solid #52745b66;background:#06100ae8}
.result-stats>div{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:4px 8px}
.result-stats .icon{width:18px;height:18px;color:#789c81}
.result-stats b{font:26px/1.2 var(--mono);font-weight:400;white-space:nowrap}
.result-stats em{font:14px var(--mono);font-style:normal;color:#8ea999}
.result-stats small{grid-column:2;font:12px var(--ui);color:#8ea999}
.result-payout{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #52745b66;padding-top:14px;background:#06100a}
.result-payout>span{display:flex;align-items:center;gap:12px}.result-payout>span>.icon{width:24px;height:24px}.result-payout b{font:36px/1 var(--mono);font-weight:400}
#runresult .result-payout button{display:flex;align-items:center;gap:8px;padding:8px 0;margin:0;border:0;background:none;box-shadow:none;font:12px var(--ui);color:#9cb8a4}
.result-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}
#runresult .result-actions button{display:flex;align-items:center;justify-content:center;gap:12px;margin:0;padding:12px 18px;min-height:52px;border:0;background:none;box-shadow:none;font:16px var(--ui)}
#runresult .result-actions button:first-child{color:var(--phosphor)}
#runresult .result-actions button:last-child{color:#9cb8a4}
#runresult .result-actions .icon{width:21px;height:21px}
@media(max-width:700px){
 body[data-result=true] .shell{padding-bottom:calc(88px + env(safe-area-inset-bottom));padding-top:env(safe-area-inset-top);min-height:0}
 #runresult:not([hidden]){margin-top:10px;gap:8px}
 .result-display{padding:22px 16px 18px;border-width:7px;border-radius:17px}
 .result-heading h2{font-size:30px;max-width:260px}
 .result-stats{gap:8px;padding:14px 0}.result-stats>div{grid-template-columns:1fr;gap:4px}.result-stats .icon{display:none}.result-stats b{font-size:24px}.result-stats small{grid-column:1;font-size:11px}
 .result-payout b{font-size:30px}#runresult .result-actions button{font-size:14px;padding:8px;min-height:48px}
}
@media(max-height:700px){.result-display{padding-top:18px}.result-heading h2{font-size:28px}.result-stats{padding:10px 0}.result-payout{padding-top:8px}.result-payout b{font-size:27px}}
@media(prefers-reduced-motion:reduce){#runresult .echo-route{animation:none;stroke-dashoffset:0}}
/* Three compact corporate channels share one screen. */
body[data-screen=operations] .shell{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:20px}
body[data-screen=operations] .shell>header{flex-shrink:0}
body[data-screen=operations] .shell>main{flex:1;min-height:0;display:flex;flex-direction:column;padding:0}
body[data-screen=operations] #hubcontent{flex:1;min-height:0;display:flex;padding:12px 0 0}
body[data-screen=operations] .operation-board{flex:1;min-height:0;width:100%;display:flex}
body[data-screen=operations] .operation-tracks{width:100%;height:100%;min-height:0;gap:16px}
body[data-screen=operations] .operation-track{position:relative;display:flex;flex-direction:column;justify-content:center;gap:20px;min-height:0;padding:24px;border:1px solid #526253;border-radius:14px;background-image:var(--deck-grain),linear-gradient(135deg,#28372d,#142019);box-shadow:inset 0 1px 0 #a8c3a533,0 4px 0 #040a05}
body[data-screen=operations] .operation-plaque{padding:0;margin:0}
body[data-screen=operations] .operation-display{position:static;padding:16px;border:1px solid #061008;border-radius:8px;background:#07120c;box-shadow:inset 0 2px 8px #0008}
body[data-screen=operations] .operation-pips{margin-top:12px}
body[data-screen=operations] .operation-blueprint{margin:0;padding:0;background:none;box-shadow:none;min-height:32px}
body[data-screen=operations] .operation-blueprint small{font-size:8px}
body[data-screen=operations] .operation-offers{margin:0;gap:6px}
body[data-screen=operations] .operation-offers button{padding:8px 0;min-height:44px;background:none!important;border:0;box-shadow:none;font:14px var(--ui)}
@media(max-width:700px){
 body[data-screen=operations] .shell{padding-top:env(safe-area-inset-top);padding-bottom:calc(88px + env(safe-area-inset-bottom));min-height:0}
 body[data-screen=operations] #hubcontent{padding-top:8px}
 body[data-screen=operations] .operation-tracks{grid-template-columns:1fr;grid-template-rows:repeat(3,minmax(0,1fr));gap:10px}
 body[data-screen=operations] .operation-track{justify-content:center;gap:6px;padding:12px 14px;border-radius:11px}
 body[data-screen=operations] .operation-plaque{padding-right:46px;height:24px;flex-shrink:0}
 body[data-screen=operations] .operation-plaque .corp-logo{width:22px;height:22px}
 body[data-screen=operations] .corp-wordmark b{font-size:14px}
 body[data-screen=operations] .operation-led{display:none}
 body[data-screen=operations] .operation-status{position:absolute;top:12px;right:14px}
 body[data-screen=operations] .operation-status>b{display:none}
 body[data-screen=operations] .operation-status>span{font-size:18px}
 body[data-screen=operations] .operation-display{padding:0;border:0;border-radius:0;background:none;box-shadow:none}
 body[data-screen=operations] .operation-pips{margin:0;gap:8px}
 body[data-screen=operations] .operation-pips span{font-size:8px;line-height:1.2}
 body[data-screen=operations] .operation-pips i{height:3px;margin-bottom:3px}
 body[data-screen=operations] .operation-display p{font:11px/1.25 var(--ui);margin:5px 0 0}
 body[data-screen=operations] .operation-blueprint{min-height:24px;gap:7px}
 body[data-screen=operations] .operation-blueprint>.icon{height:16px;width:16px}
 body[data-screen=operations] .operation-blueprint span{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
 body[data-screen=operations] .operation-blueprint small{font:8px var(--ui);margin:0;text-transform:lowercase}
 body[data-screen=operations] .operation-blueprint b{font:12px/1.2 var(--ui)}
 body[data-screen=operations] .operation-offers{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:12px}
 body[data-screen=operations] .operation-offers button{font-size:12px;padding:2px 0;gap:6px;line-height:1.1}
 body[data-screen=operations] .operation-offers .icon{height:16px;width:16px;flex-shrink:0}
 body[data-screen=operations] .operation-offers small{font-size:8px;margin-top:3px}
}
@media(max-width:700px) and (max-height:700px){
 body[data-screen=operations] .operation-tracks{gap:8px}
 body[data-screen=operations] .operation-track{padding:8px 12px;gap:3px}
 body[data-screen=operations] .operation-status{top:8px;right:12px}
 body[data-screen=operations] .operation-display p{margin-top:3px}
 body[data-screen=operations] .operation-plaque{height:22px}
}
/* Let each channel breathe through readable type and distributed rows. */
@media(max-width:700px){
 body[data-screen=operations] .operation-track{justify-content:space-between;padding:12px 14px;gap:5px}
 body[data-screen=operations] .operation-track .corp-wordmark b{font-size:17px;letter-spacing:1px}
 body[data-screen=operations] .operation-plaque{height:26px}
 body[data-screen=operations] .operation-status{top:12px;right:14px}
 body[data-screen=operations] .operation-status>span{font-size:21px}
 body[data-screen=operations] .operation-pips span{font:10px/1.2 var(--ui)}
 body[data-screen=operations] .operation-pips i{height:4px;margin-bottom:4px}
 body[data-screen=operations] .operation-display p{font-size:13px;line-height:1.3;margin-top:7px}
 body[data-screen=operations] .operation-track:has(.operation-offers button) .operation-display p{display:none}
 body[data-screen=operations] .operation-blueprint b{font-size:14px}
 body[data-screen=operations] .operation-blueprint small{font-size:10px}
 body[data-screen=operations] .operation-offers button{font-size:14px;min-height:44px}
 body[data-screen=operations] .operation-offers small{font:10px/1.2 var(--mono)}
}
@media(max-width:700px) and (max-height:700px){
 body[data-screen=operations] .operation-track{padding:10px 12px;gap:3px}
 body[data-screen=operations] .operation-status{top:10px;right:12px}
 body[data-screen=operations] .operation-plaque{height:24px}
}
/* Deck and Market share the same department navigation. */
.deck-tabs.market-sections{gap:8px;justify-content:space-between}
.deck-tabs.market-sections button,.deck-tabs.market-sections button[aria-pressed],.deck-tabs.market-sections button:hover:not(:disabled){flex:1;min-width:0;min-height:44px;padding:8px 4px;border:0;background:none;box-shadow:none;font:14px var(--ui);text-decoration:none;transform:none}
.deck-tabs.market-sections button::before,.deck-tabs.market-sections button::after{content:none;display:none}
.deck-tabs.market-sections button[aria-pressed=true]{color:var(--phosphor);text-shadow:0 0 8px #9cffb344}
@media(max-width:700px){.deck-tabs.market-sections{gap:2px}.deck-tabs.market-sections button,.deck-tabs.market-sections button[aria-pressed],.deck-tabs.market-sections button:hover:not(:disabled){font-size:12px;padding:6px 0;min-height:38px}}
/* Contract channels: one job or pirate transmission at a time. */
body[data-screen=missions] .shell{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:20px}
body[data-screen=missions] .shell>header{flex-shrink:0}
body[data-screen=missions] .shell>main{flex:1;min-height:0;display:flex;flex-direction:column;padding:0;justify-content:flex-start}
body[data-screen=missions] #missionselect{display:flex;flex:1;flex-direction:column;gap:10px;min-height:0;width:min(100%,760px);margin:10px auto 0}
#missionselect #operations{order:0;flex-shrink:0;padding:0;border:0;margin:0}
#missionselect #resume{order:1;flex-shrink:0;margin:0}
#missionselect #levels{order:2;position:relative;display:flex;flex:1;min-height:0;width:100%;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding:0;margin:0;border-radius:14px;background:#0a130d;box-shadow:0 4px 0 #050b07,0 5px 0 #334438,0 9px 20px #0006}
#missionselect #levels::-webkit-scrollbar{display:none}
#missionselect #levels button.terminal-contract,#missionselect #levels button.terminal-contract:hover,#missionselect #levels button.terminal-contract.is-cleared,body[data-screen=missions]:has(#resume:not([hidden])) #levels button.terminal-contract,#missionselect #levels .broadcast-card{position:relative;flex:0 0 100%;width:100%;min-width:0;min-height:0;height:100%;scroll-snap-align:start;scroll-snap-stop:always;box-sizing:border-box;margin:0;padding:clamp(20px,3vw,32px);border:8px solid #26382c;border-radius:14px;display:flex;flex-direction:column;align-items:stretch;text-align:left;isolation:isolate;overflow:hidden;background:linear-gradient(130deg,#102219,#07130c 65%);box-shadow:inset 0 2px 8px #000a,inset 0 -1px 0 #91b79c2a}
#missionselect #levels .terminal-contract::after{content:none}
#missionselect .terminal-contract .contract-identity{margin:22px 0 16px}
#missionselect .terminal-contract .contract-name{font:500 clamp(28px,4vw,42px)/1.08 var(--display);margin:0;padding:0}
#missionselect .terminal-contract .contract-name::before{content:none}
#missionselect .terminal-contract .contract-kind{margin:10px 0 18px}
#missionselect .terminal-contract .contract-data{margin:0 0 12px}
#missionselect .terminal-contract .contract-effects{margin:0;min-height:0;gap:7px}
#missionselect .terminal-contract .contract-bottom{margin-top:auto;padding-top:14px}
#missionselect #contract-pager{order:3;display:flex;align-items:center;justify-content:space-between;height:40px;flex-shrink:0;margin:0;gap:8px}
#contract-pager .feed-pages{display:flex;align-items:center;justify-content:center;gap:0}
#contract-pager button{display:grid;place-items:center;width:36px;height:36px;min-height:36px;padding:0;border:0;background:none!important;box-shadow:none!important}
#contract-pager button::before,#contract-pager button::after{content:none}
#contract-pager i{width:6px;height:5px;border-radius:0;background:#405b49;transition:width .15s}
#contract-pager [aria-current=true] i{width:18px;background:var(--phosphor)}
#contract-pager .broadcast-page .icon{width:15px;height:15px;color:#6c8777;transition:color .15s,filter .15s}
#contract-pager .broadcast-page[aria-current=true] .icon{color:#f0c98c;filter:drop-shadow(0 0 4px #f0c98c55)}
#contract-pager .feed-step .icon{width:20px;height:20px}#contract-pager .feed-step:disabled{opacity:.25}
#missionselect #levels .broadcast-card{background:#121812;color:#e5d7ad;border-color:#394337}
.broadcast-station{display:flex;align-items:center;gap:8px;color:#d3d7b4;flex-shrink:0;font:10px var(--mono)}
.broadcast-station>.icon{width:23px;height:23px}.broadcast-station b{font:500 13px var(--display);letter-spacing:.06em}.broadcast-station>span{margin-left:auto;font-size:8px;color:#a6ac91}
.broadcast-art{position:relative;flex:1;min-height:40px;display:grid;place-items:center;overflow:hidden;margin:10px 0;color:#c9ce9b}
.broadcast-art>svg{width:min(70%,240px);height:100%;max-height:230px;opacity:.65;transform:rotate(-7deg);filter:drop-shadow(5px 5px 0 #0006)}
.broadcast-art::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,#101b1488 3px 5px);pointer-events:none}
.broadcast-scan{position:absolute;inset:0;background:linear-gradient(transparent 48%,#dce9b422 50%,transparent 52%);animation:pirate-tune 1s ease-out both;pointer-events:none}
.broadcast-copy{position:relative;flex-shrink:0;max-width:540px}
.broadcast-copy h2{font:500 clamp(27px,4vw,44px)/1.02 var(--display);letter-spacing:-.045em;color:#e7dfb8;margin:0 0 12px}
.broadcast-copy p{font:15px/1.4 var(--ui);color:#b6bda7;max-width:440px;margin:0}
.broadcast-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0;padding-top:18px;margin-top:18px;border-top:1px solid #a2ad7e33;font:8px var(--mono);color:#909a79}
.broadcast-wave{font-size:17px;letter-spacing:2px;color:#c6cf9d;white-space:nowrap}
@keyframes pirate-tune{from{opacity:.8;transform:translateY(-50%)}to{opacity:0;transform:translateY(50%)}}
@media(max-width:700px){
 body[data-screen=missions] .shell{padding-top:env(safe-area-inset-top);padding-bottom:calc(88px + env(safe-area-inset-bottom));min-height:0}
 body[data-screen=missions] #missionselect{margin-top:8px;gap:8px}
 #missionselect .terminal-contract .contract-identity{margin:18px 0 14px}
 #missionselect .terminal-contract .contract-identity>svg{width:36px;height:36px}
 #missionselect .terminal-contract .contract-kind{margin:8px 0 16px;font-size:11px}
 #missionselect .terminal-contract .contract-data{font-size:10px}
 .broadcast-copy p{font-size:13px;line-height:1.35}
 .broadcast-footer{margin-top:14px;padding-top:12px}
}
@media(max-width:700px) and (max-height:740px){
 #missionselect #levels button.terminal-contract,#missionselect #levels button.terminal-contract:hover,#missionselect #levels button.terminal-contract.is-cleared,body[data-screen=missions]:has(#resume:not([hidden])) #levels button.terminal-contract,#missionselect #levels .broadcast-card{padding:16px 18px;border-width:6px}
 #missionselect .terminal-contract .contract-identity{margin:12px 0 10px}
 #missionselect .terminal-contract .contract-identity>svg{width:26px;height:26px}
 #missionselect .terminal-contract .contract-name{font-size:27px}
 #missionselect .terminal-contract .contract-kind{margin:6px 0 10px}
 #missionselect .terminal-contract .contract-effects{font-size:11px;gap:4px}
 #missionselect .terminal-contract .contract-data{margin-bottom:8px}
 .broadcast-copy h2{font-size:27px;margin-bottom:8px}
 .broadcast-footer{margin-top:10px;padding-top:8px}
}
@media(prefers-reduced-motion:reduce){.broadcast-scan{animation:none;display:none}#contract-pager i,#contract-pager .broadcast-page .icon{transition:none}}
#missionselect .wire-reward{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0;min-height:44px;padding:10px 0;margin-top:12px;border:0;border-top:1px solid #a2ad7e44;background:none!important;box-shadow:none!important;color:#e7dfb8;font:14px/1.2 var(--ui);text-align:left}
#missionselect .wire-reward b{display:flex;align-items:center;gap:5px;white-space:nowrap;font:17px var(--mono)}
#missionselect .wire-reward .icon{width:17px;height:17px}
#missionselect .wire-reward:disabled{color:#9da98f}
#missionselect .wire-reward::before,#missionselect .wire-reward::after{content:none}
.wire-feedback{display:block;min-height:14px;flex-shrink:0;font:10px/1.3 var(--ui);color:#a2ac95}
.broadcast-card:has(.wire-reward) .broadcast-footer{margin-top:8px;padding-top:8px}

/* Suppress double-tap zoom while retaining normal scrolling and pinch zoom. */
html,body{touch-action:manipulation}
/* Profile rows remain bare commands in every touch and keyboard state. */
.profile-panel>button,.profile-panel>button:hover:not(:disabled),.profile-panel>button:active,.profile-panel>button:focus,.profile-panel>button:focus-visible{background:transparent!important;background-image:none!important;box-shadow:none!important;transform:none;border-color:var(--glass-line)}
.profile-panel>button:hover:not(:disabled),.profile-panel>button:active,.profile-panel>button:focus-visible{color:var(--phosphor);text-shadow:0 0 10px #98ffb055}
/* Jack-in: moving signal inside the existing fill, with a physical plug engagement. */
#deploy.deploy::before,#start::before{content:'';inset:0 auto 0 0;transform:none;width:var(--charge,0%);opacity:1;background:repeating-linear-gradient(110deg,#a9ffc10a 0 1px,transparent 1px 9px),linear-gradient(90deg,#163421,#2c5c3a);background-size:36px 100%,100% 100%;pointer-events:none}
#deploy.deploy::after,#start::after{height:3px;background:linear-gradient(90deg,#78b98b,#c4ffcf);box-shadow:2px 0 9px #adffc488;pointer-events:none}
#deploy.charging::before,#start.charging::before{animation:jack-signal-flow .6s linear infinite}
#deploy .chargevalue .icon,#start .chargevalue .icon{transition:transform .16s ease-out,filter .16s ease-out}
#deploy.charging .chargevalue .icon,#start.charging .chargevalue .icon{animation:jack-plug-engage 2s cubic-bezier(.2,.7,.3,1) both}
#deploy.charging .startcopy,#start.charging .startcopy{animation:jack-label-lock 2s ease-out both}
#deploy .chargevalue::after,#start .chargevalue::after{content:'';position:absolute;right:3px;top:20px;width:9px;height:18px;opacity:0;background:repeating-linear-gradient(0deg,currentColor 0 2px,transparent 2px 8px);pointer-events:none}
#deploy.charging .chargevalue::after,#start.charging .chargevalue::after{animation:jack-contacts 2s ease-out both}
@keyframes jack-signal-flow{from{background-position:0 0,0 0}to{background-position:36px 0,0 0}}
@keyframes jack-plug-engage{0%{transform:translateX(0);filter:none}25%{transform:translateX(-4px);filter:drop-shadow(0 0 2px #adffc455)}75%{transform:translateX(-4px);filter:drop-shadow(0 0 5px #adffc499)}100%{transform:translateX(1px);filter:drop-shadow(0 0 9px #d3ffdf)}}
@keyframes jack-contacts{0%,15%{opacity:0;transform:scaleX(.2)}45%{opacity:.3;transform:scaleX(.5)}100%{opacity:.85;transform:scaleX(1)}}
@keyframes jack-label-lock{from{text-shadow:none}to{text-shadow:0 0 12px #adffc466}}
@media(prefers-reduced-motion:reduce){#deploy.charging::before,#start.charging::before,#deploy.charging .chargevalue .icon,#start.charging .chargevalue .icon,#deploy.charging .chargevalue::after,#start.charging .chargevalue::after,#deploy.charging .startcopy,#start.charging .startcopy{animation:none}#deploy .chargevalue .icon,#start .chargevalue .icon{transition:none}}
/* Paging must not resize when a touch leaves a navigation arrow hovered. */
.expansion-library .case-navigation{height:36px;min-height:36px}
.expansion-library .case-navigation button,.expansion-library .case-navigation button:hover:not(:disabled),.expansion-library .case-navigation button:active,.expansion-library .case-navigation button:focus{height:36px;min-height:36px;padding:0;transform:none}
.expansion-stock .expansion-item b{height:2.4em;min-height:2.4em;line-height:1.2;flex-shrink:0}
@media(max-width:700px){.expansion-library .case-navigation{height:30px;min-height:30px}.expansion-library .case-navigation button,.expansion-library .case-navigation button:hover:not(:disabled),.expansion-library .case-navigation button:active,.expansion-library .case-navigation button:focus{height:30px;min-height:30px}}

/* Deck service station: one fitted work surface, with recessed inventory and readout. */
body[data-screen=deck] .shell main{display:flex;flex-direction:column;min-height:0}
body[data-screen=deck] #hubcontent{width:100%;max-width:1180px;margin:0 auto;flex:1;min-height:0}
body[data-screen=deck] .deck-page{--module-width:clamp(78px,10vw,145px)}
body[data-screen=deck] .deck-page[data-deck-page=programs]{grid-template-rows:36px minmax(280px,1fr) 112px;gap:12px 24px}
body[data-screen=deck] .workbench,body[data-screen=deck] .expansion-chassis,body[data-screen=deck] .finish-preview{border-radius:20px;border:1px solid #627065;background:radial-gradient(circle at 12px 12px,#6e7b6f 0 2px,#0b130e 3px 5px,transparent 6px),radial-gradient(circle at calc(100% - 12px) 12px,#6e7b6f 0 2px,#0b130e 3px 5px,transparent 6px),repeating-linear-gradient(112deg,#ffffff02 0 1px,transparent 1px 4px),linear-gradient(145deg,#39463c,#202c24 48%,#172019);box-shadow:inset 0 2px 1px #b7c8b02b,inset 0 0 0 3px #0a100c,0 4px 0 #080d09,0 5px 0 #48554a,0 12px 22px #0005}
body[data-screen=deck] .workbench{align-self:stretch;display:flex;flex-direction:column;padding:24px 18px 18px;max-width:none}
body[data-screen=deck] .hardware-brand{font:16px var(--mono);letter-spacing:1px;color:#a7b5a8;text-shadow:0 1px #000}
body[data-screen=deck] .hardware-brand small{display:none}
body[data-screen=deck] .hardware-vents{width:25%;opacity:.65}
body[data-screen=deck] .socket-bank{flex:1;align-content:center;gap:10px}
body[data-screen=deck] .socket-title{max-width:calc(var(--module-width) + 20px);margin:0 auto 9px}
body[data-screen=deck] .decksocket{border-radius:8px;box-shadow:inset 0 4px 10px #000,inset 0 0 0 1px #506052,0 1px 0 #8c9c8155}
body[data-screen=deck] .socket-indicator{justify-content:center}
body[data-screen=deck] .cartridge{border-radius:5px}
body[data-screen=deck] .module-case{align-self:stretch;align-content:center;padding:18px 12px;border-radius:12px;border:1px solid #344537;background:repeating-linear-gradient(135deg,#101b1300 0 2px,#67786609 2px 3px),#080f0a;box-shadow:inset 0 3px 14px #000,0 1px #71806c44}
body[data-screen=deck] .loose-module{border-radius:6px;border-color:#1d2c21;box-shadow:inset 0 2px 8px #000;background:#050b07}
body[data-screen=deck] .module-inspector,body[data-screen=deck] .expansion-layout>.custom-inspector{align-self:stretch;margin:0;padding:14px 18px;border:1px solid #344f3d;border-radius:8px;background:repeating-linear-gradient(0deg,#92f5ac03 0 1px,transparent 1px 3px),#07110b;box-shadow:inset 0 3px 10px #0009,0 1px #80977a33;align-content:center}
body[data-screen=deck] .deck-instruction{transform:none;align-self:end;font-size:9px;padding-bottom:4px}
body[data-screen=deck] .case-navigation button,body[data-screen=deck] .case-navigation button:hover:not(:disabled){height:36px;min-height:36px;padding:0;transform:none;background:none;box-shadow:none;border:0}
body[data-screen=deck] .expansion-layout{grid-template-rows:minmax(280px,1fr) 130px;align-content:stretch}
body[data-screen=deck] .expansion-chassis{display:flex;flex-direction:column}
body[data-screen=deck] .expansion-bays{flex:1;align-items:center}
body[data-screen=deck] .expansion-library{display:flex;flex-direction:column}
body[data-screen=deck] .expansion-stock{flex:1;align-content:center;border-radius:12px}
body[data-screen=deck] .finish-layout{height:100%;align-items:stretch}
body[data-screen=deck] .finish-preview{display:flex;flex-direction:column}
body[data-screen=deck] .finish-display{flex:1;display:flex;flex-direction:column;justify-content:space-between;border-radius:12px}
@media(max-width:700px){
 body[data-screen=deck] .deck-page{--module-width:clamp(64px,9.6dvh,91px)}
 body[data-screen=deck] .deck-page[data-deck-page=programs]{grid-template-rows:minmax(178px,1fr) 18px 30px minmax(124px,.7fr) 100px;gap:7px}
 body[data-screen=deck] .workbench{padding:16px 12px 12px;border-radius:16px}
 body[data-screen=deck] .hardware-top{height:24px;flex:none}
 body[data-screen=deck] .hardware-brand{font-size:12px;letter-spacing:.6px}
 body[data-screen=deck] .socket-bank{margin-top:10px;align-content:center;gap:6px}
 body[data-screen=deck] .socket-title{font-size:7px;margin-bottom:5px}
 body[data-screen=deck] .deck-instruction{font-size:9px;align-self:center;padding:0}
 body[data-screen=deck] .module-case{padding:10px 6px;gap:6px}
 body[data-screen=deck] .case-navigation,body[data-screen=deck] .case-navigation button,body[data-screen=deck] .case-navigation button:hover:not(:disabled){height:30px;min-height:30px}
 body[data-screen=deck] .module-inspector{padding:10px 14px;display:block}
 body[data-screen=deck] .module-inspector p{margin:4px 0 0}
 body[data-screen=deck] .deck-page .cart-face strong{font-size:11px}
 body[data-screen=deck] .deck-page .cartridge-overclock .cart-face strong,body[data-screen=deck] .deck-page .cartridge-radar .cart-face strong{font-size:9px}
 body[data-screen=deck] .deck-page .cart-face .icon{width:21px;height:21px}
 body[data-screen=deck] .expansion-layout{grid-template-rows:minmax(210px,1fr) minmax(160px,.7fr) 132px;gap:10px}
 body[data-screen=deck] .expansion-chassis{padding:18px 14px 12px}
 body[data-screen=deck] .expansion-bays{margin:10px 0}
 body[data-screen=deck] .expansion-layout>.custom-inspector{padding:10px 14px}
 body[data-screen=deck] .finish-layout{grid-template-rows:minmax(230px,1fr) auto;gap:14px}
 body[data-screen=deck] .finish-preview{padding:18px 14px}
 body[data-screen=deck] .finish-display svg{flex:1;min-height:70px;max-height:200px}
}
@media(max-width:700px) and (max-height:720px){
 body[data-screen=deck] .deck-page{--module-width:62px}
 body[data-screen=deck] .deck-page[data-deck-page=programs]{grid-template-rows:minmax(168px,1fr) 16px 30px 118px 94px;gap:5px}
 body[data-screen=deck] .workbench{padding:12px 10px 10px}
 body[data-screen=deck] .module-inspector{padding:8px 12px}
 body[data-screen=deck] .expansion-layout{grid-template-rows:205px 145px minmax(115px,1fr);gap:6px}
 body[data-screen=deck] .finish-layout{grid-template-rows:minmax(205px,1fr) auto;gap:8px}
}
/* Keep the same compositing surface when previewing a finish: `none` would
   recreate the containing block for fixed navigation on the first colour change. */
body{--system-finish:sepia(0) saturate(1) hue-rotate(0deg)}
body[data-skin]{background-color:#070c09}
.shell{transition:filter 220ms ease}
@media(prefers-reduced-motion:reduce){.shell{transition:none}}
@media(max-width:700px) and (min-height:721px){
 body[data-screen=deck] .deck-page .cart-face strong{font-size:13px}
 body[data-screen=deck] .deck-page .cart-face .icon{width:26px;height:26px}
}

/* NIGHT EXCHANGE — a remote dealer transmission, not another equipment bay. */
body[data-screen=market] .market-cabinet{display:flex;flex-direction:column;gap:18px;padding:22px;border:1px solid #456257;border-radius:3px;background:linear-gradient(155deg,#112523,#070e13 65%);box-shadow:inset 0 0 45px #0007,0 12px 32px #0005}
body[data-screen=market] .market-cabinet::before{left:0;top:0;width:52px;height:2px;border-radius:0;background:#c6a778;box-shadow:0 0 10px #e5b36e55}
body[data-screen=market] .market-cabinet::after{display:none}
.dealer-channel{display:flex;justify-content:space-between;align-items:center;flex:none;font:9px var(--mono);letter-spacing:1px;color:#86a99f}
.dealer-channel>span:first-child{display:flex;align-items:center;gap:8px}.dealer-channel i{width:4px;height:4px;background:#e5b36e;box-shadow:0 0 8px #e5b36e77}
body[data-screen=market] .market-cabinet>article{flex:1;height:auto;min-height:0}
body[data-screen=market] .market-stage,body[data-screen=market] .hardware-emblem{position:relative;isolation:isolate;border:0;border-radius:0;background:radial-gradient(ellipse at 50% 65%,#4e817b24,transparent 62%),repeating-linear-gradient(0deg,transparent 0 31px,#6a9d9810 31px 32px),repeating-linear-gradient(90deg,transparent 0 31px,#6a9d9810 31px 32px);box-shadow:none;overflow:hidden}
body[data-screen=market] .market-stage::after,body[data-screen=market] .hardware-emblem::after{content:'';position:absolute;inset:12px;border:1px solid #578c8030;clip-path:polygon(0 0,18px 0,18px 1px,calc(100% - 18px) 1px,calc(100% - 18px) 0,100% 0,100% 18px,calc(100% - 1px) 18px,calc(100% - 1px) calc(100% - 18px),100% calc(100% - 18px),100% 100%,calc(100% - 18px) 100%,calc(100% - 18px) calc(100% - 1px),18px calc(100% - 1px),18px 100%,0 100%);pointer-events:none;z-index:-1}
body[data-screen=market] .market-spec{border-top:1px solid #42675d66;padding-top:12px}
body[data-screen=market] .market-spec>span{color:#d9b784}
body[data-screen=market] .market-cabinet .price-ticket,body[data-screen=market] .market-cabinet .market-order{border:1px solid #8b7959;border-radius:2px;background:linear-gradient(110deg,#3f3829,#211f18)!important;color:#eed5aa;box-shadow:inset 0 1px #ddc99b25,0 3px #020707!important}
body[data-screen=market] .market-cabinet .price-ticket::before{background:#f2ca8e;box-shadow:0 0 10px #e5b36e}
body[data-screen=market] .market-cabinet .price-ticket.is-pressing{box-shadow:inset 0 2px 8px #000a!important}
.market-cabinet>.market-ad{color:#ead3a4;gap:12px;position:relative;background:repeating-linear-gradient(0deg,#e5bd7c04 0 1px,transparent 1px 4px)}
.market-ad header{display:flex;justify-content:space-between;align-items:center;flex:none;height:auto;border:0;padding:0;color:#e5c691}
.market-ad header::after{display:none}.market-ad header>b{font:26px var(--display);letter-spacing:-1px}.market-ad header>span{font:8px var(--mono);letter-spacing:1px}
.ad-sigil{flex:1;min-height:65px;display:grid;place-items:center;overflow:hidden;color:#d8a862;background:radial-gradient(ellipse,#b77b3024,transparent 65%)}.ad-sigil svg{height:100%;max-height:210px;max-width:85%;filter:drop-shadow(0 0 12px #d8a86233)}
.ad-copy{flex:none}.ad-copy>small{font:8px var(--mono);letter-spacing:1.5px;color:#ad956b}.ad-copy h2{font:clamp(32px,6vh,56px)/.95 var(--display);letter-spacing:-.06em;margin:10px 0;color:#efdab1}.ad-copy p{font:14px/1.45 var(--ui);max-width:34ch;color:#b7ad96;margin:12px 0}
.sponsor-claim,.sponsor-claim:hover:not(:disabled),.sponsor-claim:active{display:flex;align-items:center;justify-content:space-between;gap:14px;flex:none;min-height:58px;padding:12px 0;border:0;border-top:1px solid #b08c5466;border-radius:0;background:none!important;box-shadow:none!important;color:#e9c990;text-align:left;transform:none}
.sponsor-claim>span{font:14px var(--ui)}.sponsor-claim>b{display:flex;gap:5px;align-items:center;white-space:nowrap;font:23px var(--mono)}.sponsor-claim .icon{width:20px;height:20px}.sponsor-claim:disabled{opacity:.65}.ad-receipt{height:14px;font:9px var(--mono);color:#aa9a7d;flex:none}
@media(max-width:700px){body[data-screen=market] .market-cabinet{padding:16px;gap:12px}.dealer-channel{font-size:8px;letter-spacing:.5px}.market-ad header>b{font-size:22px}.ad-copy h2{font-size:40px}.ad-copy p{font-size:13px}.market-cabinet>.market-ad{gap:8px}}
@media(max-width:700px) and (max-height:700px){body[data-screen=market] .market-cabinet{padding:12px;gap:8px}.ad-copy h2{font-size:32px;margin:7px 0}.ad-copy p{font-size:11px;margin:7px 0}.market-ad header>b{font-size:18px}.sponsor-claim{min-height:44px;padding:8px 0}.sponsor-claim>span{font-size:12px}.ad-sigil{min-height:40px}.ad-receipt{font-size:8px}}

/* Custom hardware schematics: generously sized in the dealer scan, compact on PCB. */
.hardware-glyph{shape-rendering:geometricPrecision}
body[data-screen=market] .market-cabinet .hardware-emblem .hardware-glyph{width:180px;height:180px;padding:0;background:none;border:0;box-shadow:none;color:#c5d9bd;filter:drop-shadow(0 0 12px #99c7ac22)}
body[data-screen=market] .market-cabinet .hardware-emblem .hardware-glyph-heatsink{color:#d5bc8e}
body[data-screen=market] .market-cabinet .hardware-emblem .hardware-glyph-antenna{color:#9ecdc8}
.expansion-chip>.hardware-glyph{width:100%;height:100%;padding:3px;box-sizing:border-box}
@media(max-width:700px){body[data-screen=market] .market-cabinet .hardware-emblem .hardware-glyph{width:152px;height:152px}}
@media(max-width:700px) and (max-height:700px){body[data-screen=market] .market-cabinet .hardware-emblem .hardware-glyph{width:112px;height:112px}}

/* Shared page rail baseline for Contracts and Market. */
body[data-screen=market] .shell{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:20px}
body[data-screen=market] .shell>header{flex-shrink:0}
body[data-screen=market] .shell>main{flex:1;min-height:0;display:flex;flex-direction:column;padding:0;justify-content:flex-start}
body[data-screen=market] #hubcontent{flex:1;min-height:0;display:flex;flex-direction:column}
body[data-screen=market] .market-room{position:relative;flex:1;height:auto;max-height:none;width:100%;min-height:0}
body[data-screen=market] #market-feedback{position:absolute;left:0;right:0;bottom:-16px;height:16px;pointer-events:none}
@media(max-width:700px){body[data-screen=market] .shell{padding-top:env(safe-area-inset-top);padding-bottom:calc(88px + env(safe-area-inset-bottom))}}

/* Both page rails use the same chevrons and touch targets. */
#contract-pager .feed-step,.market-pagination>button{width:44px;height:44px;min-height:44px;flex:0 0 44px}
#contract-pager .feed-step .icon,.market-pagination>button .icon{width:24px;height:24px}

/* Tactile response stays local to the key, never the screen around it. */
:is(.feed-step,.market-pagination>button,.case-navigation>button,.market-sections>button,.hubnav button,.custom-key){transition:translate 110ms ease-out,filter 110ms ease-out}
:is(.feed-step,.market-pagination>button,.case-navigation>button,.market-sections>button,.hubnav button,.custom-key):active:not(:disabled){translate:0 2px;filter:brightness(.82)}
.decksocket .cartridge,.expansion-bay .expansion-chip{transition:translate 120ms ease-out}
.decksocket:active .cartridge,.expansion-bay:active .expansion-chip{translate:0 2px}
body[data-screen=market] .market-cabinet .price-ticket.is-pressing{translate:0 2px;box-shadow:inset 0 2px 8px #000a,0 1px #020707!important}
body[data-screen=market] .market-cabinet .price-ticket{transition:translate 110ms ease-out,box-shadow 110ms ease-out}
/* Fine wear belongs to the hardware grip; labels and displays stay clean. */
.cart-grip{background-image:repeating-linear-gradient(90deg,#0005 0 1px,#b5c3ae12 1px 2px,transparent 2px 5px);box-shadow:inset 0 1px #d8e7ce20,inset 0 -1px #0008}
.socket-latch{box-shadow:inset 0 1px #d5e3ca38,0 2px 2px #0008}
@media(prefers-reduced-motion:reduce){:is(.feed-step,.market-pagination>button,.case-navigation>button,.market-sections>button,.hubnav button,.custom-key),.decksocket .cartridge,.expansion-bay .expansion-chip,body[data-screen=market] .market-cabinet .price-ticket{transition:none;translate:none!important}}

/* Corporate contracts: a relief insignia between the brief and its data strip. */
#missionselect #levels .terminal-contract{--contract-metal:#91b39c;--contract-line:#5d92704a}
#missionselect #levels .terminal-contract[data-corp=helix]{--contract-metal:#9ebcbb;--contract-line:#6b9b9c48}
#missionselect #levels .terminal-contract[data-corp=orbital]{--contract-metal:#b9b599;--contract-line:#99976a48}
#missionselect .terminal-contract .contract-identity{margin:18px 0 12px}
#missionselect .terminal-contract .contract-name{font-size:clamp(32px,4vw,46px);letter-spacing:-.035em;max-width:100%;text-wrap:balance}
#missionselect .terminal-contract .contract-kind{margin:8px 0 14px;color:#9fb4a5}
#missionselect .terminal-contract .contract-visual{position:relative;display:block;flex:1;min-height:68px;margin:0 -12px 16px;overflow:hidden;isolation:isolate;border-top:1px solid var(--contract-line);border-bottom:1px solid var(--contract-line);background:radial-gradient(ellipse at 65% 55%,#accbbd13,transparent 65%),linear-gradient(115deg,#020a0666,#17291e55);box-shadow:inset 0 8px 18px #0005,inset 0 -1px #d5e8cf0d}
#missionselect #levels .contract-visual .contract-watermark{position:absolute;inset:10% 5% 4% auto;width:70%;height:86%;z-index:0;display:grid;place-items:center;color:var(--contract-metal);opacity:.62;transform:rotate(-8deg);filter:drop-shadow(1px 1px 0 #d2e5d029) drop-shadow(7px 9px 0 #01070499)}
#missionselect #levels .contract-visual .contract-watermark svg{width:100%;height:100%;max-height:260px}
.contract-circuit{position:absolute;inset:0;width:100%;height:100%;stroke:var(--contract-line);stroke-width:1}
.contract-visual-grain{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 3px,#06110924 3px 4px);box-shadow:inset 0 0 25px #030b0670}
#missionselect .terminal-contract .contract-data{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 14px;padding:0;font-family:var(--mono)}
#missionselect .terminal-contract .contract-data>span{display:flex;align-items:baseline;gap:8px;white-space:nowrap}
#missionselect .terminal-contract .contract-data>span+span{border-left:1px solid var(--contract-line);padding-left:14px}
#missionselect .terminal-contract .contract-data>span+span::before{content:none}
#missionselect .terminal-contract .contract-data b{font-size:25px;font-weight:400;color:#c6e7cc;line-height:1}
#missionselect .terminal-contract .contract-data small{font-size:10px;color:#92aa99}
#missionselect .terminal-contract .contract-effects{display:flex;flex-flow:row wrap;gap:5px 14px;font-size:12px;margin:0 0 12px;flex-shrink:0}
#missionselect .terminal-contract .contract-effects>span{min-height:19px;gap:6px}
#missionselect .terminal-contract .contract-bottom{margin-top:0;padding-top:12px;border-top:1px solid var(--contract-line);flex-shrink:0}
#missionselect .terminal-contract .contract-open{width:40px;height:40px;display:grid;place-items:center;color:#cae8ce;border-left:1px solid var(--contract-line);padding-left:14px}
@media(max-width:700px) and (max-height:740px){
 #missionselect .terminal-contract .contract-identity{margin:10px 0 8px}
 #missionselect .terminal-contract .contract-name{font-size:28px}
 #missionselect .terminal-contract .contract-kind{margin:6px 0 10px}
 #missionselect .terminal-contract .contract-visual{min-height:36px;margin-bottom:10px}
 #missionselect .terminal-contract .contract-data{margin-bottom:8px}
 #missionselect .terminal-contract .contract-data b{font-size:21px}
 #missionselect .terminal-contract .contract-data small{font-size:9px}
 #missionselect .terminal-contract .contract-effects{font-size:10px;gap:3px 10px;margin-bottom:8px}
 #missionselect .terminal-contract .contract-bottom{padding-top:7px}
}

/* Pre-run preparation is a compact physical rack, with a separate module tray. */
.loadout-screen{min-height:0}
.brief-flow.loadout-screen>h2{font:500 clamp(23px,4vw,32px)/1.08 var(--display);margin:4px 0 10px;letter-spacing:-.035em;flex-shrink:0}
.prep-console{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;padding:16px 13px 13px;border:1px solid #566253;border-radius:16px;background-image:var(--deck-grain),linear-gradient(135deg,#344035,#152119 65%,#29362c);box-shadow:inset 0 1px #d2dfb93d,inset 0 0 0 4px #19241c,0 4px #050b07,0 5px #475246}
.prep-power{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:0 3px 14px;color:#91a58e;font:10px var(--mono)}
.prep-power>span:first-child{text-shadow:0 1px #000}
.prep-power>b{font:16px var(--mono);color:#c4dcc2;white-space:nowrap}.prep-power small{font-size:9px;color:#9dad98}
.prep-power-meter{display:flex;gap:3px;margin-left:auto;padding:4px;background:#08130d;border:1px solid #3e5142;border-radius:2px}
.prep-power-meter i{width:5px;height:10px;background:#26392c}.prep-power-meter i.lit{background:#a6d8ad;box-shadow:0 0 3px #a6d8ad33}
.loadout-screen .prep-console .brief-slots{flex:1;min-height:0;gap:9px;margin:0;padding:10px 7px 15px;background:#061009;border:1px solid #405443;border-radius:9px;box-shadow:inset 0 3px 10px #000b}
.loadout-screen .prep-console .brief-slot{position:relative;justify-content:center;gap:7px;padding:0 2px 9px!important;min-height:0;min-width:0}
.loadout-screen .brief-slot-number{display:flex;align-items:center;justify-content:space-between;padding:0 3px;font:9px var(--mono)}
.loadout-screen .brief-slot-number i{width:4px;height:4px;background:#364d3c}
.loadout-screen .selected .brief-slot-number i{background:#bbf4c7;box-shadow:0 0 6px #bbf4c777}
.loadout-screen .prep-console .brief-slot .cartridge{flex:1;max-height:210px;min-height:0;display:flex;flex-direction:column;padding:9px 5px 12px;outline:none;filter:brightness(.78);box-shadow:inset 0 0 0 2px #27382b,inset 0 0 0 3px #54664d,0 4px #010603,0 7px 8px #0008;transform:none}
.loadout-screen .prep-console .brief-slot.selected .cartridge{filter:brightness(1.08);box-shadow:inset 0 0 0 2px #27382b,inset 0 0 0 3px #869e79,0 4px #010603,0 7px 8px #0008}
.prep-console .cart-label{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:7px 4px}
.prep-console .cart-face{align-items:center;padding:7px 0;gap:12px;min-width:0}
.loadout-screen .prep-console .cart-face strong{font-size:clamp(10px,3vw,16px);letter-spacing:-.035em;overflow-wrap:anywhere;max-width:100%}
.prep-console .cart-face .icon{width:27px;height:27px}
.prep-console .cart-effect,.prep-console .cart-series,.prep-console .cart-serial,.prep-console .cart-rule{display:none}
.prep-console .cart-grip{height:5px;flex-shrink:0;margin:0 1px 7px}
.prep-console .cart-level{margin-top:8px;flex-shrink:0}
.prep-console .cart-pins{bottom:-5px;height:6px}
.prep-latch{position:absolute;bottom:2px;left:30%;right:30%;height:4px;border:1px solid #4f6151;background:linear-gradient(#65745e,#26372a);box-shadow:0 2px #000}
.prep-readout{display:flex;align-items:center;gap:10px;flex-shrink:0;min-height:64px;margin-top:12px;padding:10px;box-sizing:border-box;background:#06100b;border:1px solid #415346;border-radius:5px;box-shadow:inset 0 2px 6px #0008,0 1px #a0b39015}
.prep-readout>span>.icon{width:24px;height:24px;color:#95c6a0}.prep-readout>div{flex:1;min-width:0}.prep-readout b{font:16px var(--display);color:#c9e9ce}.prep-readout p{font:11px/1.4 var(--ui);color:#9bb4a3;margin:4px 0 0}.prep-readout>small{align-self:flex-start;font:9px var(--mono);color:#92ad9b}
.prep-library{flex-shrink:0;margin-top:8px;min-width:0}
.prep-library-rail{display:flex;align-items:center;justify-content:space-between;font:10px var(--mono);color:#8eaa98;min-height:32px}
.prep-library-rail>div{display:flex;gap:4px}.prep-library-rail button{display:grid;place-items:center;width:38px;height:32px;min-height:32px;padding:0;background:none!important;border:0;box-shadow:none!important}.prep-library-rail .icon{width:18px;height:18px}.prep-library-rail button:disabled{opacity:.25}
.loadout-screen .brief-module-case{gap:8px;margin:0;padding:5px 1px 9px;border:0;scrollbar-width:none;overscroll-behavior-x:contain}
.loadout-screen .brief-module-case::-webkit-scrollbar{display:none}
.loadout-screen .brief-module-case button{flex:0 0 44%;min-width:0;gap:10px;padding:12px 10px;min-height:63px;border:1px solid #3a4d3d;border-radius:5px;background:linear-gradient(130deg,#263329,#152219)!important;box-shadow:inset 0 1px #bfceb91b,0 3px #030906!important;font:14px var(--display)}
.loadout-screen .brief-module-case button>span{min-width:0;overflow-wrap:anywhere}.loadout-screen .brief-module-case .icon{width:24px;height:24px;flex-shrink:0}.loadout-screen .brief-module-case small{font-size:9px;margin-top:5px}
.loadout-screen .brief-module-case button.is-installed{filter:saturate(.3);color:#829589}.loadout-screen .brief-module-case button:disabled{opacity:.45}
.loadout-screen .brief-launch{margin-top:0;flex-shrink:0}
@media(max-width:700px) and (max-height:740px){
 .brief-flow.loadout-screen{gap:6px}
 .brief-flow.loadout-screen>h2{font-size:23px;margin:0 0 4px}
 .prep-console{padding:11px 9px 10px;border-radius:12px}
 .prep-power{padding-bottom:8px;font-size:8px}.prep-power>b{font-size:13px}
 .loadout-screen .prep-console .brief-slots{padding:7px 4px 11px;gap:6px}
 .loadout-screen .prep-console .brief-slot{gap:4px;padding-bottom:7px!important}
 .loadout-screen .prep-console .brief-slot .cartridge{padding:5px 4px 7px}
 .prep-console .cart-grip{margin-bottom:3px;height:4px}.prep-console .cart-label{padding:4px 2px}.prep-console .cart-face{gap:5px;padding:4px 0}.prep-console .cart-face .icon{width:21px;height:21px}
 .prep-console .cart-level{margin-top:5px}
 .prep-readout{min-height:50px;margin-top:8px;padding:7px;gap:8px}.prep-readout b{font-size:14px}.prep-readout p{font-size:10px;margin-top:2px}
 .prep-library{margin-top:2px}.loadout-screen .brief-module-case button{min-height:52px;padding:8px;font-size:12px}.loadout-screen .brief-module-case{padding-bottom:6px}
 .loadout-screen .brief-launch{padding-top:5px}
}
@media(max-width:700px) and (max-height:740px){
 .prep-console .cart-grip{display:none}
 .loadout-screen .prep-console .cart-face{flex-direction:row;align-items:center;justify-content:center;gap:4px;padding:0;min-height:20px}
 .loadout-screen .prep-console .cart-face .icon{width:14px;height:14px;flex-shrink:0}
 .loadout-screen .prep-console .cart-face strong{font-size:9px;line-height:1.1}
}
.reward-clock{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font:10px var(--mono);margin-left:auto;font-variant-numeric:tabular-nums}
.reward-clock .icon{width:12px;height:12px}
.ad-receipt,.wire-feedback{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:18px}
#jacks,#lives{position:relative}
#jacks .resource-countdown,#lives .resource-countdown{position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);margin:0;padding:0;border:0;font:8px/1 var(--mono);color:#94b49d;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:0}
.streak-fee{display:inline-flex;align-items:center;align-self:center;padding:3px 5px;border:1px solid #b4c39a55;color:#d0d6a4;font:10px/1 var(--mono);white-space:nowrap}
.result-streak{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;padding:8px 0;color:#a9c4ae;font:11px var(--ui)}
.result-streak b{display:flex;align-items:center;gap:4px;color:#d0d6a4;font:12px var(--mono)}.result-streak .icon{width:12px;height:12px}.result-streak small{font-size:10px;color:#8ea493}
.runner-streak{margin:18px 0 24px;padding:18px;border:1px solid #3b5140;background:#09160e;box-shadow:inset 0 2px 10px #0006}
.runner-streak>div:first-child{display:flex;align-items:center;justify-content:space-between;font:13px var(--ui)}.runner-streak>div>b{font:25px var(--mono)}.runner-streak small{font:10px var(--mono);color:#829c8a}
.streak-tiers{display:flex;gap:8px;margin-top:16px}.streak-tiers>span{display:flex;flex:1;flex-direction:column;gap:6px;border-top:3px solid #2c4032;padding-top:8px;color:#708975}.streak-tiers>span.earned{border-color:#bbd2a3;color:#d0e6b8}.runner-streak p{font:12px/1.4 var(--ui);color:#94ad9b;margin:16px 0 0}

/* Training replaces feed copy within the existing secondary screen. */
#training-coach{color:var(--phosphor);padding:2px 0;min-width:0}
#training-coach strong{display:block;font:600 13px/1.3 var(--mono);color:var(--bright);margin:5px 0}
#training-coach p{font:12px/1.5 var(--mono);margin:0;max-width:55ch;color:#b5cbbb;overflow-wrap:anywhere}
.training-progress{display:flex;gap:4px;height:3px}
.training-progress i{flex:1;background:#8ab99a22}.training-progress i.done{background:#a7efb8}
body[data-training="true"] .console-readout>.feed,body[data-training="true"] #telemetry,body[data-training="true"] #hazardstatus,body[data-training="true"] #relay-tray{display:none!important}
body[data-training="true"] .console-readout{min-height:115px}
.training-focus{filter:drop-shadow(0 0 5px #a7efb888);outline:1px solid #b5f7c8!important;outline-offset:3px}
.training-dialog{max-width:420px}.training-dialog .training-cost{color:#a7efb8;font-size:12px}.training-dialog button{display:block;width:100%;text-align:left;background:transparent!important;margin-top:12px}
@media(max-height:740px){#training-coach p{font-size:10px;line-height:1.4}#training-coach strong{font-size:11px;margin:3px 0}body[data-training="true"] .console-readout{min-height:98px}}

.result-payout .result-xp{gap:5px;font:14px var(--mono);color:#b7f8ca}.result-payout .result-xp b{font-size:20px}.result-payout .result-xp small{font-size:10px}

/* Runner credential: inset phosphor glass and three latched fee indicators. */
.runner-pass{position:relative;padding:14px;border-radius:16px 16px 9px 9px;border:1px solid #526154;background:repeating-linear-gradient(103deg,#d4e7cc04 0 1px,transparent 1px 4px),linear-gradient(150deg,#344238,#1b241e 47%,#111a14);box-shadow:inset 0 2px 1px #b7c6af55,inset 0 -3px 2px #0009,0 8px 16px #0005;margin:0 0 20px}
.runner-pass::before,.runner-pass::after{content:'';position:absolute;top:6px;width:5px;height:5px;border-radius:50%;background:#07100b;box-shadow:0 1px 1px #92aa7b66,inset 0 1px 1px #000;z-index:2}.runner-pass::before{left:7px}.runner-pass::after{right:7px}
.pass-screen{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:1fr auto;align-items:end;gap:18px 12px;padding:22px 19px 16px;border:1px solid #0a100b;border-radius:7px;background:repeating-linear-gradient(0deg,transparent 0 3px,#b7f8ca05 3px 4px),radial-gradient(ellipse at 25% 35%,#13351f,#06120b 75%);box-shadow:0 1px 1px #9aaf8e44,inset 0 5px 12px #000b,inset 0 0 0 3px #020904}
.pass-mark{position:absolute;right:-16px;top:10px;width:180px;height:180px;color:#9bcfaa;opacity:.045;z-index:-1;transform:rotate(-8deg)}
.pass-rank>span,.pass-xp>span{display:block;font:10px var(--mono);color:#8fae96;letter-spacing:.04em}
.pass-rank>strong{display:block;margin:3px 0 -7px;font:500 76px/.95 var(--display);letter-spacing:-.08em;color:#c5ffd5;text-shadow:0 0 20px #9affb345,0 2px 1px #000;font-variant-numeric:tabular-nums}
.pass-xp{text-align:right;padding-bottom:3px}.pass-xp>b{display:block;font:22px/1.2 var(--mono);color:#b9ecc6;font-variant-numeric:tabular-nums}.pass-xp>span{margin-top:4px}
.pass-progress{grid-column:1/-1;min-width:0}.pass-segments{display:flex;gap:3px;height:12px}.pass-segments>i{flex:1;background:linear-gradient(to top,#a9efb9 var(--fill),#35544066 var(--fill));box-shadow:inset 0 0 0 1px #06150c88}
.pass-progress>div:last-child{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font:9px var(--mono);color:#7f9c86}.pass-progress>div:last-child b{color:#a9c3b0;font-size:12px}
.pass-streak{display:grid;grid-template-columns:74px 1fr;align-items:center;gap:12px;margin:17px 3px 12px}
.pass-streak-count>span{display:block;font:9px var(--mono);color:#aab7a9;text-shadow:0 1px #000}.pass-streak-count>strong{display:block;font:500 34px/1.05 var(--display);color:#d0dcc9;letter-spacing:-.05em;text-shadow:0 2px 1px #000}
.profile-panel .pass-streak-count>small{font:9px var(--mono);margin:3px 0 0;color:#91a28e}
.pass-multipliers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.pass-tier{min-width:0;text-align:center;position:relative;padding:15px 2px 8px;background:linear-gradient(140deg,#1e2c22,#111c15);border:1px solid #465344;border-radius:5px;box-shadow:inset 0 1px 1px #849a7522,0 3px 0 #080f0a,inset 0 -2px 2px #0006;color:#80907c}
.pass-tier>i{position:absolute;top:6px;left:calc(50% - 9px);width:18px;height:3px;background:#061109;box-shadow:0 1px #81927522}.pass-tier.earned>i{background:#bdf79f;box-shadow:0 0 7px #a1ef8580}.pass-tier.earned{color:#d3edbb;border-color:#7c9063}
.pass-tier>b{font:16px/1.2 var(--mono)}.profile-panel .pass-tier>b>small{display:inline;font:10px var(--mono);color:inherit;margin:0}.pass-tier>span{display:block;font:8px var(--mono);margin-top:5px;color:#8a9b84}
.pass-rules{border-top:1px solid #899d7b22;margin:0 4px;padding:10px 0 0}.pass-rules>summary{cursor:pointer;font:9px var(--mono);color:#a2b59a;list-style-position:inside}.pass-rules p{font:11px/1.5 var(--mono);color:#b2c2aa;margin:10px 0 3px}
@media(min-width:700px){.pass-screen{padding:27px}.pass-rank>strong{font-size:96px}.pass-streak{grid-template-columns:105px 1fr;gap:20px}.pass-tier{padding:19px 4px 12px}.pass-tier>b{font-size:21px}}

.result-context{margin-top:16px;flex-shrink:0;text-shadow:0 1px 4px #000;background:linear-gradient(90deg,#06100aee,#06100a66)}
.result-mission{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.result-mission h3{font:500 22px/1.15 var(--display);letter-spacing:-.02em;margin:0;color:#b5d6bd;overflow-wrap:anywhere}
.result-difficulty{font:10px var(--mono);color:#a2be9e;flex:none}.result-difficulty[data-difficulty="hard"]{color:#ecb278}.result-difficulty[data-difficulty="normal"]{color:#c9c595}
.result-enemies,.result-effects{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:8px;font:10px/1.4 var(--mono);color:#9ab19e}
.result-enemies>span,.result-effects>span{display:inline-flex;align-items:center;gap:5px;min-width:0}.result-enemies .icon,.result-effects .icon{width:12px;height:12px;flex:none}.result-enemies{color:#d0b18b}.result-effects{color:#94b59c}
.result-payout [data-payout-count]{display:inline-block;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";white-space:nowrap}
@media(max-width:700px){.result-context{margin-top:12px}.result-mission h3{font-size:19px}.result-enemies,.result-effects{font-size:9px;gap:4px 9px}.result-payout>span{gap:6px}.result-payout>span>.icon{width:19px;height:19px}#runresult .result-payout button span{display:none}.result-payout{gap:10px}}
@media(max-height:700px){.result-context{margin-top:9px}.result-mission h3{font-size:17px}.result-enemies,.result-effects{margin-top:5px;font-size:8px}.result-route-space{min-height:12px}}
/* Expedition sluice: a persistent choice, not a dismissible reward popup. */
.dive-sluice .result-copy{gap:clamp(12px,3vh,26px)}
.dive-depth{display:flex;gap:10px;justify-content:space-between}
.dive-depth>div{display:grid;gap:6px;flex:1;color:#698876;border-top:2px solid #294234;padding-top:10px}
.dive-depth>div.cleared{color:#b6efc8;border-color:#9df0b4}
.dive-depth i{font:normal 25px var(--font-mono,monospace)}
.dive-depth span{font-size:11px}
.dive-vault{flex:1;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:18px 0}
.dive-vault>small{color:#9ab4a2}.dive-vault strong{font-size:44px;display:flex;align-items:center;gap:12px;text-shadow:0 0 18px #8affb02a}.dive-vault strong .icon{width:28px;height:28px}
.dive-vault>span,.dive-choice-note{font-size:12px;color:#a7b9ac;line-height:1.5;margin:0}
.dive-next{display:grid;gap:5px}.dive-next>span{display:flex;align-items:center;gap:8px;color:#efbc7d}.dive-next small{font-size:10px;color:#9ba99e}
#wires .warden-warned,#minimap .warden-warned{stroke:#efbc7d;stroke-dasharray:6 4;opacity:1}
#wires .warden-locked,#minimap .warden-locked{stroke:#ed8e78;stroke-dasharray:2 8;opacity:.8}
@media(max-height:700px){.dive-sluice .result-copy{gap:12px}.dive-vault{padding:5px 0}.dive-vault strong{font-size:32px}.dive-choice-note{font-size:11px}}
/* Deep dives remain contracts, with a recognisable layered network silhouette. */
.terminal-contract[data-mode="deep-dive"]{--dive-accent:#e2bd82;border-color:#706246;background-image:linear-gradient(130deg,#b9944c0b,transparent 48%)}
.terminal-contract[data-mode="deep-dive"] .contract-kind{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:11px}
.dive-card-label{color:var(--dive-accent);font-size:10px;letter-spacing:.12em;border-left:3px solid currentColor;padding-left:7px}
.terminal-contract[data-mode="deep-dive"] .contract-circuit{opacity:.15}
.terminal-contract[data-mode="deep-dive"] .contract-watermark{opacity:.045}
.dive-card-depth{position:absolute;width:100%;height:100%;inset:0;color:#cfb47e;stroke:currentColor;stroke-width:1;opacity:.65}
.dive-card-depth .dive-depth-plane{fill:#15221b;fill-opacity:.9}
.dive-card-depth .dive-depth-route{stroke:#b6ebbe;stroke-width:2}
.dive-card-depth .dive-depth-spine{stroke-dasharray:3 5}
.dive-card-depth text{stroke:none;fill:currentColor;font:10px monospace}
.contract-reward .dive-max{display:inline!important;font-size:.48em;align-self:center;letter-spacing:0;white-space:nowrap;color:#c5ac7e}
#runresult .dive-sluice .dive-choice-note{font:12px/1.45 var(--ui);color:#a7b9ac;margin:0}
#runresult .dive-sluice .dive-vault{min-height:0}
@media(max-height:700px){#runresult .dive-sluice .result-copy{gap:9px}#runresult .dive-sluice .dive-choice-note{font-size:11px}#runresult .dive-sluice .result-stats{padding:8px 0}#runresult .dive-sluice .dive-next{gap:3px}}
#runresult .dive-sluice .result-copy{gap:12px}
#runresult .dive-sluice .result-copy>*{flex-shrink:0}
#runresult .dive-sluice .dive-vault{min-height:90px;padding:4px 0}
#runresult .dive-sluice .result-stats>div{grid-template-columns:1fr}
#runresult .dive-sluice .result-stats small{grid-column:1}
@media(max-height:700px){#runresult .dive-sluice .result-copy{gap:9px}}
/* Burn Run is a timed signal, with a stable countdown inside the existing HUD. */
.burn-card-label{display:inline-block;color:#efa579;border-left:3px solid currentColor;padding-left:7px;font-size:10px;letter-spacing:.12em}
.terminal-contract[data-mode="burn-run"]{border-color:#795443;background-image:linear-gradient(135deg,#bb5d3012,transparent 60%)}
.terminal-contract[data-mode="burn-run"] .contract-kind{font-size:11px}
.burn-timer{display:flex;align-items:center;justify-content:center;gap:7px;color:#edbc7e;white-space:nowrap;min-width:0}
.burn-timer[hidden]{display:none}.burn-timer .icon{width:15px;height:15px}.burn-timer b{font:22px var(--mono);font-variant-numeric:tabular-nums}.burn-timer[data-urgent="true"]{color:#ff927e;text-shadow:0 0 9px #ff674b55}
.screen-hud.has-burn-timer{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}.screen-hud.has-burn-timer .burn-timer{grid-column:2;grid-row:1}.screen-hud.has-burn-timer .integrity-metric{grid-column:3;grid-row:1}
#burn-delay{display:flex;gap:8px;align-items:center;background:none;box-shadow:none;border:0;color:#efbd80;font:13px var(--ui);padding:8px}
#burn-delay[hidden]{display:none}#map>#burn-delay{position:absolute;bottom:20px;left:24px;z-index:8}
#runresult .burn-ready .result-copy{gap:20px;justify-content:center}
.burn-ready-clock{display:flex;align-items:center;gap:18px;color:#edbc7e}.burn-ready-clock strong{font:clamp(50px,9vw,80px)/1 var(--mono);font-variant-numeric:tabular-nums}.burn-ready-clock .icon{width:30px;height:30px}
#runresult .burn-ready p{font:18px/1.45 var(--ui);margin:0}.burn-rules{display:grid;gap:12px;font-size:12px}.burn-rules>span{display:flex;align-items:center;gap:8px}.burn-rules .icon{width:16px;height:16px;flex-shrink:0}
#runresult .burn-ready .result-copy>small{font:11px/1.45 var(--ui);color:#9eafa3;letter-spacing:0}
@media(max-width:700px){.screen-hud.has-burn-timer{gap:6px}.burn-timer{gap:4px}.burn-timer b{font-size:18px}.burn-timer .icon{width:12px;height:12px}#relay-tray:has(#burn-delay:not([hidden])){flex-wrap:wrap}}
@media(max-height:700px){#runresult .burn-ready .result-copy{gap:14px}.burn-ready-clock strong{font-size:48px}}
#map .screen-hud.has-burn-timer{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px}
#map .screen-hud.has-burn-timer .integrity-metric{justify-content:flex-end}
#map #burn-timer .icon{position:static;inset:auto;display:block;width:15px;height:15px;min-width:15px;flex:0 0 15px}
#map #burn-delay .icon{position:static;inset:auto;width:15px;height:15px}
@media(max-width:700px){#map .screen-hud.has-burn-timer{gap:6px}#map .screen-hud.has-burn-timer .meter{display:none}#map .screen-hud.has-burn-timer .integrity-metric .metriclabel{display:none}#map #burn-timer .icon{width:12px;height:12px;min-width:12px;flex-basis:12px}}
#map>#burn-delay{bottom:68px}
@media(max-width:700px){body[data-burn=true] #gamescreen #relay-tray #route-power{display:none!important}#gamescreen #relay-tray #burn-delay{font:11px/14px var(--ui);padding:3px 0;min-height:44px;white-space:normal}}
/* Burn contracts: dark amber warning glass, without extra signage. */
#levels .terminal-contract[data-mode="burn-run"]{border-color:#876044;background:linear-gradient(145deg,#30231c 0%,#181714 42%,#101713 100%);box-shadow:inset 0 1px 0 #dfbb7a26,inset 0 0 50px #0006,0 5px 0 #030704}
#levels .terminal-contract[data-mode="burn-run"] .contract-visual{background:radial-gradient(ellipse at 50% 50%,#d7782420,transparent 72%),#0f100c;border-color:#bd89483b}
#levels .terminal-contract[data-mode="burn-run"] .contract-circuit{opacity:.08}
#levels .terminal-contract[data-mode="burn-run"] .contract-kind,#levels .terminal-contract[data-mode="burn-run"] .contract-topline{color:#d6ad82}
#levels .terminal-contract[data-mode="burn-run"] .contract-reward{color:#edc291}
.burn-card-signal{position:absolute;inset:0;width:100%;height:100%;color:#df9e5c}
.burn-card-signal .burn-wave{stroke:currentColor;opacity:.2;stroke-width:1.2}
.burn-card-signal .burn-brackets{stroke:currentColor;stroke-width:2;opacity:.65}
.burn-card-signal .burn-glass{fill:#11130df2;stroke:#e5b97622}
.burn-card-signal text{fill:#f4c58b;font:54px var(--mono);letter-spacing:-2px}
.burn-card-signal .burn-fuse{stroke:#e0a26925;stroke-width:3}
.burn-card-signal .burn-fuse-live{stroke:#e6aa66;stroke-width:3;stroke-dasharray:3 3}
#missionselect #levels button.terminal-contract[data-mode="burn-run"],body[data-screen=missions]:has(#resume:not([hidden])) #levels button.terminal-contract[data-mode="burn-run"]{border-color:#584334;background:linear-gradient(145deg,#30231c 0%,#191714 48%,#111510 100%);box-shadow:inset 0 1px 0 #dfbb7a26,inset 0 0 50px #0006,0 5px 0 #030704}
/* Keep complete SVG artwork inside one bounded composited surface during swipes.
   Filtered/oversized SVG layers can be repainted in clipped tiles by WKWebView. */
#levels .terminal-contract:is([data-mode="burn-run"],[data-mode="deep-dive"]) .contract-visual{transform:translateZ(0);backface-visibility:hidden;contain:paint}
.burn-card-signal,.dive-card-depth{overflow:hidden;display:block}
/* Reusable actions sit in the existing rails, without adding another page row. */
.contract-channels .contract-reroll{margin-left:auto;position:relative;display:flex;align-items:center;gap:6px;min-width:64px;min-height:44px;padding:6px 8px;background:none!important;box-shadow:none!important;border:0;color:var(--phosphor);font:13px var(--mono)}
.contract-reroll .icon{width:20px;height:20px}.contract-reroll time{position:absolute;right:8px;bottom:-5px;font:9px var(--mono);color:var(--muted-phosphor);font-variant-numeric:tabular-nums}.contract-reroll:disabled{opacity:.4}
.brief-route .urgent-hack{margin-left:auto;display:flex;align-items:center;gap:8px;width:auto;padding:8px 0 8px 12px;background:none!important;border:0;box-shadow:none!important;color:var(--muted-phosphor);font:12px var(--mono)}
.brief-route .urgent-hack .icon{width:18px;height:18px}.urgent-hack:hover,.contract-reroll:not(:disabled):hover{color:var(--phosphor);filter:drop-shadow(0 0 5px #8cffb54d)}
[data-recharge]{font-variant-numeric:tabular-nums;white-space:nowrap;font:16px var(--mono);margin-left:8px}

/* Objective telemetry lives on the node, independently of the security cycle frame. */
#map .node-objective-rail{position:absolute;top:calc(100% + 14px);left:50%;translate:-50% 0;display:flex;align-items:center;justify-content:center;gap:5px;padding:4px 6px;min-height:16px;background:#06110bf2;color:#ffc578;pointer-events:none;white-space:nowrap;box-shadow:0 2px 8px #0006}
#map .node-objective-rail>.icon{width:17px;height:17px}
#map .breach-layer{display:block;width:14px;height:14px;color:#ffc578}
#map .breach-layer .icon{width:14px;height:14px}
#map .breach-layer.broken{opacity:.2;color:#8aa998}
#map .objective-pip{width:8px;height:8px;box-sizing:border-box;border:1px solid #9cc6ae;background:transparent}
#map .objective-pip.complete{background:#b9ffcf;box-shadow:0 0 5px #9affb84d}
#map .node[data-objective=done] .symbol,#map .node[data-objective=done] .node-objective-rail{color:#b9ffcf}
#map .node.exit[data-objective=locked] .symbol{opacity:.35}
#map .node.exit[data-objective=ready] .symbol{opacity:1;filter:drop-shadow(0 0 4px #b5ffd0)}
#map .node.exit[data-objective=ready]{border-style:double;border-width:3px;border-color:#b9ffcf}
#map .node.exit[data-objective=ready] .node-objective-rail{color:#b9ffcf}
#map .node[data-objective=primed] .node-objective-rail{border-bottom:2px solid #b9ffcf}
#map .node-data-stream{position:absolute;left:50%;top:20%;display:flex;gap:4px;pointer-events:none;color:#d2ffe2}
#map .node-data-stream i{width:3px;height:10px;background:currentColor;box-shadow:0 0 8px currentColor}
#map .node-data-stream i:nth-child(2){margin-top:7px}
#map .enemybadge .is-hound{color:#ff8c78;background:#26100d;border:2px solid #ff8c78;clip-path:polygon(15% 0,85% 0,100% 15%,100% 85%,85% 100%,15% 100%,0 85%,0 15%);filter:drop-shadow(0 0 3px #ff74574d)}
#map .mini-threat.is-hound,#map .contact-line.is-hound{color:#ff8c78;fill:#ff8c78}
#map .contact-feedback.screen-impact{position:absolute;inset:0;max-width:none;width:auto;padding:0;border-radius:inherit;background:transparent;box-shadow:inset 0 0 32px 8px #c9ffe175;border:2px solid #c9ffe1;z-index:11;pointer-events:none}
#map .contact-feedback.screen-impact[data-hit=true]{box-shadow:inset 0 0 40px 10px #ff584c66;border-color:#ff8c78}
@media(max-width:700px){#map .node-objective-rail{gap:4px;padding:3px 4px}#map .breach-layer,#map .breach-layer .icon{width:12px;height:12px}}
#minimap .mini-type.objective-done{opacity:.35;filter:none}
#minimap .mini-type.exit-ready{color:#ccffdc;filter:drop-shadow(0 0 1px #b9ffcf)}
