/* Jova Frontiers 5 — contextual UI architecture.  The world is the primary surface. */
:root{--ctx-edge:calc(10px + var(--safe-left));--ctx-edge-r:calc(10px + var(--safe-right));--ctx-bottom:calc(10px + var(--safe-bottom));--ctx-glass:#07141dc2;--ctx-line:#9cc5d42b;--ctx-accent:#7ee1c9;--ctx-warn:#ffbd68;--ctx-critical:#ff765f;--ctx-ui-scale:1}
.context-hud{opacity:var(--ctx-opacity,.92);position:fixed;inset:0;z-index:7;pointer-events:none;font-size:calc(14px * var(--ctx-ui-scale));color:#eef8fb}.context-hud button,.context-hud input,.context-hud select,.context-hud .ctx-popover{pointer-events:auto}.context-hud button{background:#07141db8;border:1px solid var(--ctx-line);backdrop-filter:blur(8px);box-shadow:0 6px 20px #0003}.context-hud button:hover{background:#102735d9}.context-hud.secondary-hidden .ctx-rail,.context-hud.secondary-hidden .ctx-clean{opacity:.18;transform:translateY(4px)}.ctx-rail,.ctx-clean{transition:opacity .25s ease,transform .25s ease}
.ctx-telemetry{position:absolute;top:calc(var(--header) + 12px);left:calc(12px + var(--safe-left));display:grid;grid-template-columns:auto auto;gap:3px 13px;padding:9px 11px;border-left:2px solid var(--ctx-accent);background:linear-gradient(90deg,#06131dd8,#06131d70 72%,transparent);border-radius:8px;min-width:214px;text-shadow:0 2px 10px #000}.ctx-phase{grid-column:1/-1;color:#9eb5c3;font-size:.67em;letter-spacing:1.3px}.ctx-primary span,.ctx-secondary span{display:block;color:#a9beca;font-size:.65em;letter-spacing:.8px}.ctx-primary b{display:block;font-size:1.55em;font-weight:520;font-variant-numeric:tabular-nums;margin-top:1px}.ctx-secondary{display:flex;align-items:end;gap:12px}.ctx-secondary b{display:block;font-size:.85em;font-weight:520;margin-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ctx-throttle{position:absolute;left:calc(8px + var(--safe-left));bottom:calc(20px + var(--safe-bottom));width:48px;height:205px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 3px;background:#06131d82;border:1px solid var(--ctx-line);border-radius:14px}.ctx-throttle button{width:40px;min-width:40px;min-height:31px;padding:3px;font-size:.62em}.ctx-throttle b{font:600 .78em ui-monospace,monospace}.ctx-throttle-track{position:relative;flex:1;width:36px;display:flex;align-items:center;justify-content:center}.ctx-throttle-track:before{content:'';position:absolute;width:3px;height:100%;border-radius:3px;background:#ffffff24}.ctx-throttle input{position:absolute;width:124px;height:34px;transform:rotate(-90deg);accent-color:var(--ctx-accent);min-height:0}.ctx-throttle i{pointer-events:none}
.ctx-attitude{position:absolute;left:50%;bottom:calc(10px + var(--safe-bottom));transform:translateX(-50%);pointer-events:none}.ctx-attitude>*{pointer-events:auto}.ctx-attitude #navballPanel{position:static!important;transform:none!important;margin:0!important}.ctx-attitude #navballPanel .row{display:none}.ctx-attitude #navballPanel .steering{display:none}.ctx-attitude #navball{width:152px!important;height:152px!important;max-width:28vw!important;max-height:28vw!important;opacity:.82;transition:opacity .2s,filter .2s}.ctx-attitude #navball:active,.ctx-attitude #navball:focus{opacity:1;filter:drop-shadow(0 0 14px #69d9c866)}
.ctx-stage{position:absolute;right:calc(12px + var(--safe-right));bottom:calc(18px + var(--safe-bottom));min-width:86px;min-height:58px;border-radius:14px!important;padding:8px 12px!important;background:#c98647e8!important;color:#14120f!important;border:0!important}.ctx-stage span{display:block;font-size:.63em;letter-spacing:1px}.ctx-stage b{font-size:1.15em}.ctx-stage:disabled{opacity:.38}
.ctx-rail{position:absolute;right:calc(10px + var(--safe-right));top:calc(var(--header) + 14px);display:flex;gap:5px;align-items:center}.ctx-rail button{width:42px;min-width:42px;height:42px;min-height:42px;padding:0;border-radius:13px;font-size:18px}.ctx-clean{position:absolute;right:calc(14px + var(--safe-right));bottom:calc(88px + var(--safe-bottom));width:38px;min-width:38px;height:38px;min-height:38px;border-radius:50%!important;padding:0!important}
.ctx-popover{position:absolute;right:calc(12px + var(--safe-right));top:calc(var(--header) + 64px);width:min(330px,calc(100vw - 24px));padding:10px;background:#07131def;border:1px solid #5c7b8b66;border-radius:15px;box-shadow:0 16px 50px #0008;backdrop-filter:blur(16px);animation:ctxIn .14s ease-out}.ctx-popover header{display:flex;align-items:center;justify-content:space-between;padding:2px 3px 7px;color:#cbe0e9;font-size:.75em;letter-spacing:1.1px}.ctx-popover header button{min-width:32px;width:32px;min-height:32px;height:32px;padding:0;border:0;background:none;font-size:20px}.ctx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.ctx-grid button{min-height:42px;padding:6px;font-size:.7em}.ctx-row{display:flex;gap:5px;margin-top:5px}.ctx-row>*{flex:1}.ctx-guidance-ring{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.ctx-guidance-ring button{min-height:44px;padding:6px;font-size:.67em}.ctx-checks{display:grid;grid-template-columns:1fr 1fr;gap:5px}.ctx-checks label{display:flex;align-items:center;gap:7px;margin:0;padding:8px;background:#ffffff08;border-radius:8px;font-size:.72em;letter-spacing:.3px}
.ctx-alerts{position:absolute;top:calc(var(--header) + 76px);left:50%;transform:translateX(-50%);display:grid;gap:5px;width:min(300px,70vw)}.ctx-alert{padding:7px 11px;background:#07131dd6;border:1px solid var(--ctx-line);border-radius:8px;text-align:center;font-size:.73em;letter-spacing:.8px;animation:ctxIn .16s}.ctx-alert.caution{border-color:#ffbd6866;color:#ffd598}.ctx-alert.warning{border-color:#ff8b656f;color:#ffc0a9}.ctx-alert.critical{background:#32120fdb;border-color:#ff765f;color:#ffe5de}
.ctx-mapbar{position:absolute;top:calc(var(--header) + 10px);left:50%;transform:translateX(-50%);display:flex;gap:5px;padding:4px;border:1px solid var(--ctx-line);background:#06131da8;border-radius:12px;backdrop-filter:blur(9px)}.ctx-mapbar button{min-height:36px;padding:5px 9px;font-size:.67em;letter-spacing:.4px}
.ctx-builder{position:absolute;left:calc(10px + var(--safe-left));right:calc(10px + var(--safe-right));bottom:calc(8px + var(--safe-bottom));height:52px;display:flex;align-items:center;justify-content:center;gap:7px;pointer-events:none}.ctx-builder>*{pointer-events:auto}.ctx-builder-tabs{display:flex;padding:3px;background:#06131dbb;border:1px solid var(--ctx-line);border-radius:12px}.ctx-builder-tabs button{min-height:40px;padding:5px 10px;font-size:.68em}.ctx-viewcube{display:grid;grid-template-columns:repeat(2,30px);grid-template-rows:repeat(2,22px);gap:2px;padding:3px;background:#06131dbb;border:1px solid var(--ctx-line);border-radius:9px}.ctx-viewcube button{min-width:30px;min-height:22px;height:22px;padding:0;font-size:.62em;border-radius:5px}.ctx-builder>#ctxFrameCraft{min-height:40px;padding:5px 10px;font-size:.68em}
.ctx-ui-debug{position:absolute;left:calc(10px + var(--safe-left));top:calc(var(--header) + 110px);margin:0;padding:8px 10px;background:#06131dec;border:1px solid #79d9ca77;border-radius:8px;color:#bff4e7;font:11px/1.45 ui-monospace,monospace;pointer-events:none}.ui-debug .context-hud:after{content:'';position:absolute;inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);border:1px dashed #77e7d477;pointer-events:none}
@keyframes ctxIn{from{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:none}}
/* Legacy flight controls remain as compatibility state holders but no longer consume layout or input. */
body.ui-overhaul-active #flight>.telemetry,body.ui-overhaul-active #flight>.flightleft,body.ui-overhaul-active #flight>.flightstatus,body.ui-overhaul-active #flight>.flightbottom,body.ui-overhaul-active #flight>.flighttools{display:none!important;pointer-events:none!important}
body.ui-overhaul-active #aircraftView>.telemetry,body.ui-overhaul-active #aircraftView>.planeStatus,body.ui-overhaul-active #aircraftView>.planeActions,body.ui-overhaul-active #aircraftView>.planeFlightControls{display:none!important;pointer-events:none!important}
body.ui-overhaul-active #roverView>.roverTelemetry,body.ui-overhaul-active #roverView>.roverObjective,body.ui-overhaul-active #roverView>.roverActions{display:none!important;pointer-events:none!important}
body.ui-overhaul-active #evaView>.evaTelemetry,body.ui-overhaul-active #evaView>.evaActions,body.ui-overhaul-active #evaView>.evaHint{display:none!important;pointer-events:none!important}
/* Builder: the contextual bottom strip replaces the old wall of camera buttons. */
body.ui-overhaul-active[data-mode=build] .builderToolbar,body.ui-overhaul-active[data-mode=build] .viewTools{display:none!important;pointer-events:none!important}body.ui-overhaul-active[data-mode=build] .viewlabel{opacity:.72}.clean-view .context-hud>*:not(.ctx-alerts):not(.ctx-clean){opacity:0!important;pointer-events:none!important}.clean-view .ctx-clean{opacity:.3!important}body.clean-view>header{opacity:0;pointer-events:none}.clean-view #heatWarning{opacity:.35}
/* Map view: no flight controls and no permanent planner slab. The planner is a contextual sheet. */
body.ui-overhaul-active.map-view #missionPlanner{display:none!important}body.ui-overhaul-active.map-view.planner-open #missionPlanner{display:block!important;top:calc(var(--header) + 58px);left:auto;right:calc(10px + var(--safe-right));width:min(360px,calc(100vw - 20px));max-height:calc(100dvh - var(--header) - 78px);padding:13px;background:#07131df0;backdrop-filter:blur(12px)}body.ui-overhaul-active.map-view .maptools{display:none!important}
@media(max-width:760px){.ctx-telemetry{top:calc(var(--header) + 6px);left:calc(7px + var(--safe-left));min-width:0;max-width:72vw;padding:7px 8px;gap:2px 8px}.ctx-primary b{font-size:1.25em}.ctx-secondary{gap:7px}.ctx-secondary b{font-size:.72em}.ctx-throttle{left:calc(5px + var(--safe-left));bottom:calc(9px + var(--safe-bottom));height:168px;width:44px}.ctx-throttle-track input{width:96px}.ctx-attitude{bottom:calc(4px + var(--safe-bottom))}.ctx-attitude #navball{width:124px!important;height:124px!important;max-width:31vw!important;max-height:31vw!important}.ctx-stage{right:calc(6px + var(--safe-right));bottom:calc(8px + var(--safe-bottom));min-width:74px;min-height:52px}.ctx-rail{right:calc(5px + var(--safe-right));top:calc(var(--header) + 6px);flex-direction:column}.ctx-rail button{width:38px;min-width:38px;height:38px;min-height:38px;font-size:16px}.ctx-clean{right:calc(7px + var(--safe-right));bottom:calc(68px + var(--safe-bottom));width:34px;min-width:34px;height:34px;min-height:34px}.ctx-popover{top:auto;bottom:calc(8px + var(--safe-bottom));right:calc(7px + var(--safe-right));width:min(330px,calc(100vw - 14px));max-height:58dvh;overflow:auto}.ctx-mapbar{top:calc(var(--header) + 5px);max-width:calc(100vw - 12px);overflow:auto;scrollbar-width:none}.ctx-mapbar button{white-space:nowrap;min-height:40px}.ctx-builder{justify-content:flex-start;overflow-x:auto;scrollbar-width:none}.ctx-builder-tabs button{min-width:64px}.ctx-viewcube{margin-left:auto}.ctx-alerts{top:calc(var(--header) + 58px);width:68vw}.ctx-ui-debug{top:calc(var(--header) + 90px);max-width:80vw}.map-view.planner-open #missionPlanner{top:auto!important;bottom:calc(8px + var(--safe-bottom));left:7px!important;right:7px!important;width:auto!important;max-height:58dvh!important}}
@media(max-width:1000px) and (orientation:landscape) and (max-height:600px){.ctx-telemetry{top:calc(var(--header) + 4px);transform:scale(.86);transform-origin:left top}.ctx-attitude #navball{width:108px!important;height:108px!important}.ctx-throttle{height:128px}.ctx-rail{top:calc(var(--header) + 4px);flex-direction:row;right:calc(6px + var(--safe-right))}.ctx-popover{top:calc(var(--header) + 48px);bottom:auto;max-height:70dvh}.ctx-stage{bottom:calc(7px + var(--safe-bottom))}}
.ctx-preset-row{display:grid;grid-template-columns:auto repeat(6,minmax(28px,1fr));align-items:center;gap:4px;margin-top:7px;padding-top:7px;border-top:1px solid var(--ctx-line)}.ctx-preset-row span{font-size:.61em;letter-spacing:1px;color:#9fb4c1}.ctx-preset-row button{min-width:28px;min-height:32px;height:32px;padding:2px;font-size:.68em}.ctx-preset-save{opacity:.72}
body[data-attitude-size=small] .ctx-attitude #navball{width:112px!important;height:112px!important}body[data-attitude-size=large] .ctx-attitude #navball{width:190px!important;height:190px!important}body[data-attitude-size=hidden] .ctx-attitude{display:none!important}
@media(max-width:760px){.ctx-preset-row{grid-template-columns:auto repeat(6,1fr)}body[data-attitude-size=large] .ctx-attitude #navball{width:148px!important;height:148px!important;max-width:34vw!important;max-height:34vw!important}}
/* Compact simulation-time control: always reachable in flight/map without recreating the old button wall. */
.ctx-time{position:absolute;right:calc(12px + var(--safe-right));bottom:calc(92px + var(--safe-bottom));display:flex;align-items:center;gap:3px;padding:3px;background:#06131da8;border:1px solid var(--ctx-line);border-radius:12px;backdrop-filter:blur(9px);pointer-events:auto}.ctx-time button{min-width:34px;width:34px;min-height:34px;height:34px;padding:0;border-radius:9px;font:600 .75em ui-monospace,monospace}.ctx-time #ctxTimeRate{min-width:56px;width:auto;padding:0 8px;color:#d9f5ed}.ctx-time-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.ctx-time-grid button{min-height:40px;padding:5px;font:600 .72em ui-monospace,monospace}.ctx-time-grid button.active{border-color:#76e0c8aa;background:#15372fe8}.ctx-popover-note{margin:8px 3px 1px;color:#9fb6c2;font-size:.68em;line-height:1.4}.context-hud.secondary-hidden .ctx-time{opacity:.32}.ctx-time{transition:opacity .25s ease}
@media(max-width:760px){.ctx-time{right:calc(6px + var(--safe-right));bottom:calc(69px + var(--safe-bottom));transform:scale(.92);transform-origin:right bottom}.ctx-time-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1000px) and (orientation:landscape) and (max-height:600px){.ctx-time{right:calc(96px + var(--safe-right));bottom:calc(7px + var(--safe-bottom));transform:scale(.88);transform-origin:right bottom}}
/* Builder information density: concise purpose first, engineering stats second. */
#partLibrary>button{position:relative}#partLibrary>button small{display:block;white-space:normal;line-height:1.25;opacity:.72;margin-top:3px}.partFavorite{position:absolute;top:5px;right:6px;z-index:2;width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#06131dbd;border:1px solid #ffffff1c;color:#78909c;font-size:15px;line-height:1;cursor:pointer;touch-action:manipulation}.partFavorite:hover,.partFavorite.active{color:#ffd06f;border-color:#ffd06f66;background:#372817d4}.settingRow{position:relative!important;display:grid!important;grid-template-columns:minmax(120px,1fr) auto;gap:5px 10px!important;align-items:center;padding:9px 44px 9px 10px!important;margin:5px 0!important;background:#ffffff06;border:1px solid #ffffff0b;border-radius:10px}.settingRow>input[type=checkbox]{justify-self:start}.settingRow>.settingHelp{grid-column:1/-1;color:#9eb4c0;font-size:.77em;line-height:1.4}.settingCost{grid-column:1/-1;color:#d4b77e;font-size:.68em;font-style:normal;letter-spacing:.3px}.settingReset{position:absolute;right:6px;top:6px;min-width:0!important;width:auto!important;min-height:27px!important;height:27px!important;padding:3px 6px!important;font-size:.64em!important}.settingsResetRow{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0 10px}.settingsResetRow button{min-height:32px;padding:5px 8px;font-size:.68em}#settingsSearch{width:100%;margin:4px 0 5px;min-height:40px}.settingRow[hidden]{display:none!important}

/* In-flight direct part controls */
.flight-part-menu{position:fixed;z-index:46;width:min(286px,calc(100vw - 24px));padding:13px 14px 14px;border:1px solid #8ab0c34d;border-radius:12px;background:linear-gradient(180deg,#07141def,#071019e8);box-shadow:0 12px 42px #0009;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#e7f2f8;touch-action:manipulation}
.flight-part-menu h3{margin:5px 28px 6px 0;font-size:16px;line-height:1.2}.flight-part-menu p{margin:0 0 10px;color:#9fb5c2;font-size:12px;line-height:1.45}.flight-part-menu .eyebrow{font-size:9px;letter-spacing:1.3px;color:#ffb56c}.flight-part-menu .primary{width:100%;margin-top:9px;min-height:44px}.flight-part-status{padding:8px 9px;border:1px solid #86a9ba2b;border-radius:8px;background:#ffffff08;color:#c5d9e4;font-size:11px;letter-spacing:.35px}.flight-part-close{position:absolute;right:7px;top:6px;width:38px;height:38px;min-height:38px;padding:0;border:0;background:transparent;font-size:24px;color:#9db1bd}.flight-part-close:hover{background:#ffffff0d}
@media(max-width:760px),(pointer:coarse){.flight-part-menu{width:min(310px,calc(100vw - 20px));padding:14px}.flight-part-menu p{font-size:13px}.flight-part-status{font-size:12px}}
