@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0e14;--bg-elevated:#121820;--bg-panel:#161d27;--border:#243041;--text:#e8eef6;--text-dim:#8b98a8;--accent:#3dd68c;--accent-dim:#1f6b4a;--warn:#e6b84d;--danger:#e24b4b;--danger-glow:#e24b4b59;--info:#7ad4ff;--radius:10px;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--gap:clamp(.3rem, .8vh, .65rem);--pad:clamp(.35rem, .9vh, .7rem);--control-h:clamp(32px, 4.8vh, 44px);--stop-size:clamp(64px, 11vh, 96px);--dpad-arm:clamp(28px, 5.2vmin, 44px);--dpad-arm-cam:clamp(26px, 4.8vmin, 40px)}*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;max-height:100dvh;margin:0;overflow:hidden}body{font-family:var(--font);background:radial-gradient(1200px 600px at 20% -10%, #152033 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #1a1218 0%, transparent 45%), var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:manipulation}button{font-family:inherit}.auth-gate{place-content:center;min-height:100dvh;padding:1.5rem;display:grid}.auth-card{border:1px solid var(--border);border-radius:calc(var(--radius) + 2px);background:color-mix(in srgb, var(--bg-panel) 92%, black);gap:.85rem;width:min(100%,26rem);padding:1.25rem;display:grid;box-shadow:0 18px 48px #00000059}.auth-card h1{margin:0;font-size:1.35rem}.auth-lead{color:var(--text-dim);margin:0;line-height:1.45}.auth-form,.auth-recovery{gap:.65rem;display:grid}.auth-label{color:var(--text-dim);font-size:.82rem}.auth-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);width:100%;color:var(--text);font:inherit;padding:.65rem .75rem}.auth-textarea{resize:vertical;min-height:6rem;font-family:var(--mono);font-size:.78rem}.auth-button{border:1px solid var(--accent-dim);border-radius:var(--radius);background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 24%, transparent), transparent);color:var(--text);cursor:pointer;padding:.7rem 1rem;font-weight:600}.auth-button:disabled{opacity:.55;cursor:not-allowed}.auth-link-button{color:var(--info);text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.auth-error{color:var(--danger);margin:0}.auth-token-block{gap:.35rem;display:grid}.auth-token{border-radius:var(--radius);border:1px solid var(--border);max-height:8rem;color:var(--accent);font-family:var(--mono);white-space:pre-wrap;word-break:break-all;background:#06090d;margin:0;padding:.75rem;font-size:.72rem;line-height:1.35;overflow:auto}.auth-token-meta{color:var(--text-dim);gap:.25rem;font-size:.82rem;display:grid}.boot-screen{text-align:center;place-content:center;gap:.5rem;height:100%;padding:1rem;display:grid}.cockpit{gap:var(--gap);width:100%;height:100dvh;max-height:100dvh;padding:max(var(--pad), var(--safe-top)) max(var(--pad), var(--safe-right)) max(var(--pad), var(--safe-bottom)) max(var(--pad), var(--safe-left));grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.status-strip{background:color-mix(in srgb, var(--bg-elevated) 92%, black);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:.35rem;min-height:0;padding:clamp(.28rem,.7vh,.5rem) .6rem;display:flex;overflow:hidden}.status-strip__left,.status-strip__right{flex-wrap:nowrap;align-items:center;gap:.3rem;min-width:0;display:flex}.status-strip__right{flex-shrink:0}.settings-trigger,.settings-button,.settings-close{border:1px solid var(--border);color:var(--text);font-family:var(--font);cursor:pointer;background:#101722;border-radius:6px}.settings-trigger{font-family:var(--mono);padding:.16rem .45rem;font-size:clamp(.55rem,1.15vh,.64rem)}.status-logout{border:1px solid color-mix(in srgb, var(--danger) 45%, var(--border));color:#ffb4b4;font:clamp(.55rem, 1.15vh, .64rem) var(--mono);cursor:pointer;background:#101722;border-radius:6px;padding:.16rem .45rem}.status-logout:disabled{opacity:.55;cursor:not-allowed}.settings-backdrop{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#020509b8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.settings-dialog{background:var(--bg-panel);border-radius:var(--radius);border:1px solid #3a4658;gap:1rem;width:min(100%,420px);padding:1rem;display:grid;box-shadow:0 18px 48px #0000008c}.settings-dialog__header{justify-content:space-between;gap:1rem;display:flex}.settings-dialog h2,.settings-dialog p{margin:0}.settings-dialog h2{font-size:1rem}.settings-dialog__header p,.settings-mode small{color:var(--text-dim);font-size:.78rem;line-height:1.4}.settings-close{width:28px;height:28px;padding:0;font-size:1.2rem;line-height:1}.settings-modes{border:0;gap:.45rem;margin:0;padding:0;display:grid}.settings-modes legend,.settings-ip{color:var(--text-dim);font-family:var(--mono);font-size:.72rem}.settings-mode{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:flex-start;gap:.55rem;padding:.65rem;display:flex}.settings-mode--selected{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:color-mix(in srgb, var(--accent-dim) 30%, transparent)}.settings-mode span,.settings-ip{gap:.15rem;display:grid}.settings-mode strong{font-size:.86rem}.settings-ip input{border:1px solid var(--border);width:100%;color:var(--text);font:.85rem var(--mono);background:#0c1118;border-radius:6px;padding:.55rem .6rem}.settings-ports{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.settings-error{color:#ffb4b4;font-size:.8rem}.settings-emulator-tools{border:1px solid var(--border);background:#0c1118;border-radius:8px;gap:.55rem;padding:.75rem;display:grid}.settings-emulator-tools p{color:var(--text-dim);margin:0;font-size:.78rem;line-height:1.4}.settings-note{color:color-mix(in srgb, var(--accent) 80%, #dfffea);font-size:.78rem}.settings-dialog__actions{justify-content:flex-end;gap:.45rem;display:flex}.settings-button{padding:.45rem .7rem}.settings-button--primary{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-dim);color:var(--accent)}.diagnostics-dialog{align-content:start;width:min(100%,560px);max-height:min(90vh,720px);overflow:auto}.diagnostics-section{border-top:1px solid var(--border);gap:.55rem;padding-top:.35rem;display:grid}.diagnostics-section__header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.diagnostics-section h3,.diagnostics-subtitle{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin:0;font-size:.82rem}.diagnostics-kv{grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem .75rem;margin:0;display:grid}.diagnostics-kv>div{gap:.1rem;display:grid}.diagnostics-kv dt{color:var(--text-dim);font-size:.72rem}.diagnostics-kv dd{font-family:var(--mono);margin:0;font-size:.82rem}.diagnostics-kv--bad{color:var(--danger)}.diagnostics-list{gap:.25rem;max-height:180px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.diagnostics-list__row,.diagnostics-list__static{border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--mono);text-align:left;background:#0c121b;border-radius:6px;justify-content:space-between;gap:.75rem;padding:.35rem .45rem;font-size:clamp(.58rem,1.15vh,.7rem);display:flex}.diagnostics-list__row{cursor:pointer}.diagnostics-list__row span,.diagnostics-list__static span{color:var(--text-dim);flex-shrink:0}.diagnostics-schema{border-left:2px solid var(--border);margin:.25rem 0 .35rem .55rem;padding:.4rem .5rem}.diagnostics-schema__block{gap:.2rem;margin-bottom:.45rem;display:grid}.diagnostics-schema__block ul{margin:0;padding-left:1rem}.diagnostics-schema__block code,.diagnostics-list code{font-family:var(--mono)}.diagnostics-muted{color:var(--text-dim);margin:0;font-size:.78rem}.diagnostics-error{color:var(--danger);margin:0;font-size:.78rem}.settings-button--danger{border-color:color-mix(in srgb, var(--danger) 55%, var(--border));background:color-mix(in srgb, var(--danger) 18%, #101722);color:var(--danger)}.settings-rover-tools{border:1px solid var(--border);background:#0c1118;border-radius:.55rem;gap:.55rem;padding:.75rem;display:grid}.settings-rover-tools--danger{border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}.settings-rover-tools h3{margin:0;font-size:.86rem}.settings-rover-tools p,.settings-restart-confirm p{color:var(--text-dim);margin:0;font-size:.78rem}.settings-restart-confirm{gap:.55rem;display:grid}.settings-dialog__actions--inline{justify-content:flex-start;padding-top:.15rem}.brand{letter-spacing:.08em;text-transform:uppercase;flex-shrink:0;margin-right:.15rem;font-weight:700}.status-pill{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;background:#0f141c;border-radius:999px;align-items:center;gap:.3rem;padding:.16rem .45rem;font-size:clamp(.65rem,1.5vh,.78rem);display:inline-flex}.status-pill__short{display:none}.status-pill .dot{background:#5a6675;border-radius:50%;flex-shrink:0;width:.45rem;height:.45rem}.status-pill--ok{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 35%, var(--border))}.status-pill--ok .dot{background:var(--accent);box-shadow:0 0 8px color-mix(in srgb, var(--accent) 70%, transparent)}.status-pill--warn{color:var(--warn)}.status-pill--warn .dot{background:var(--warn)}.status-pill--bad{color:var(--danger)}.status-pill--bad .dot{background:var(--danger)}.meta-chip{font-family:var(--mono);color:var(--text-dim);border:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:6px;padding:.16rem .4rem;font-size:clamp(.6rem,1.4vh,.7rem)}.meta-chip--active{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.fault-banner{background:color-mix(in srgb, var(--danger) 18%, transparent);color:#ffb4b4;border:1px solid color-mix(in srgb, var(--danger) 45%, transparent);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;max-width:28vw;padding:.16rem .4rem;font-size:clamp(.62rem,1.4vh,.75rem);font-weight:600;overflow:hidden}.connection-health-banner{top:var(--safe-top);left:var(--safe-left);right:var(--safe-right);z-index:12;border-bottom:1px solid color-mix(in srgb, var(--danger) 45%, transparent);background:color-mix(in srgb, var(--bg-elevated) 92%, var(--danger) 8%);pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.55rem .85rem;display:flex;position:fixed;box-shadow:0 8px 24px #00000059}.connection-health-banner--warn{border-bottom-color:color-mix(in srgb, var(--warn) 45%, transparent);background:color-mix(in srgb, var(--bg-elevated) 92%, var(--warn) 8%)}.connection-health-banner__channels{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;flex-wrap:wrap;gap:.65rem 1rem;font-size:clamp(.62rem,1.35vh,.72rem);display:flex}.connection-health-banner__channel{color:var(--text-dim);align-items:center;gap:.4rem;display:inline-flex}.connection-health-banner__channel strong{color:var(--text);font-weight:600}.connection-health-banner__message{color:#ffd0d0;flex:16rem;margin:0;font-size:clamp(.72rem,1.5vh,.85rem);font-weight:600}.connection-health-banner--warn .connection-health-banner__message{color:#ffe8b8}.pilot-shell--health-banner .cockpit,.pilot-shell--health-banner .killer-mode{padding-top:calc(max(var(--pad), var(--safe-top)) + 3.25rem)}.stage{gap:var(--gap);grid-template-columns:minmax(0,1fr) minmax(260px,34vw);min-height:0;display:grid;overflow:hidden}.stage__primary{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.sensor-stage{flex:1;min-height:0;display:grid;position:relative;overflow:hidden}.sensor-stage__main{height:100%;min-height:0;position:relative;overflow:hidden}.sensor-stage__pip{aspect-ratio:16/10;border:1px solid color-mix(in srgb, var(--border) 70%, white 10%);z-index:3;background:#070b10;border-radius:8px;width:min(200px,28%);position:absolute;bottom:.55rem;right:.55rem;overflow:hidden;box-shadow:0 8px 24px #00000073}.sensor-stage__pip .video-panel,.sensor-stage__pip .video-panel__feed,.sensor-stage__pip .room-scene,.sensor-stage__pip .room-scene canvas{border:none;border-radius:0;height:100%;min-height:0}.video-panel,.sensor-canvas,.room-scene{border-radius:var(--radius);border:1px solid var(--border);background:#070b10;flex:auto;width:100%;height:100%;min-height:0;position:relative;overflow:hidden}.room-scene canvas{width:100%;height:100%;display:block}.room-scene__placeholder{z-index:1;text-align:center;color:var(--text-dim);background:#070b10;place-content:center;gap:.25rem;padding:.75rem;font-size:.85rem;display:grid;position:absolute;inset:0}.video-panel__feed{object-fit:contain;object-position:center;background:#070b10;width:100%;height:100%;display:block}.video-panel--empty{place-items:center;display:grid}.video-empty{text-align:center;color:var(--text-dim);gap:.25rem;padding:.75rem;font-size:.85rem;display:grid}.telemetry-overlay{z-index:2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:min(520px,100% - .8rem);font-family:var(--mono);color:var(--text);pointer-events:none;background:#060a10d1;border:1px solid #ffffff14;border-radius:5px;flex-wrap:wrap;gap:.2rem .4rem;padding:.16rem .35rem;font-size:clamp(.55rem,1.35vh,.65rem);line-height:1.15;display:flex;position:absolute;top:.4rem;left:.4rem}.telemetry-overlay b{color:var(--text-dim);margin-right:.15rem;font-weight:500}.stream-stats-overlay{z-index:2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:min(360px,100% - .8rem);font-family:var(--mono);color:var(--text);pointer-events:none;background:#060a10d1;border:1px solid #ffffff14;border-radius:5px;flex-wrap:wrap;justify-content:flex-end;gap:.2rem .4rem;padding:.16rem .35rem;font-size:clamp(.55rem,1.35vh,.65rem);line-height:1.15;display:flex;position:absolute;top:.4rem;right:.4rem}.stream-stats-overlay b{color:var(--text-dim);margin-right:.15rem;font-weight:500}.fpv-compass{z-index:3;opacity:.72;pointer-events:none;width:clamp(72px,14vh,96px);height:clamp(72px,14vh,96px);position:absolute;bottom:.55rem;left:.45rem}.fpv-compass__ring{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060a106b;border:1px solid #ffffff1f;border-radius:50%;position:absolute;inset:0;box-shadow:0 4px 16px #00000047}.fpv-compass__cardinal{transform-origin:50%;font-family:var(--mono);color:var(--text-dim);font-size:clamp(.5rem,1.1vh,.62rem);font-weight:600;line-height:1;position:absolute;top:50%;left:50%}.fpv-compass__cardinal--n{color:#f0f4f8;transform:translate(-50%,calc(-50% - 2.1em))}.fpv-compass__cardinal--e{transform:translate(calc(2.1em - 50%),-50%)}.fpv-compass__cardinal--s{transform:translate(-50%,calc(2.1em - 50%))}.fpv-compass__cardinal--w{transform:translate(calc(-50% - 2.1em),-50%)}.fpv-compass__tick{transform-origin:50% 440%;background:#ffffff2e;width:1px;height:10%;margin-left:-.5px;position:absolute;top:6%;left:50%}.fpv-compass__tick--major{background:#ffffff59;height:14%}.fpv-compass__marker{transform-origin:50%;position:absolute;inset:0}.fpv-compass__marker--body .fpv-compass__marker-bar{background:#3dd68cbf;border-radius:1px;width:2px;height:28%;margin-left:-1px;position:absolute;top:18%;left:50%;box-shadow:0 0 4px #3dd68c59}.fpv-compass__marker--look .fpv-compass__marker-arrow{filter:drop-shadow(0 0 3px #7fd4a873);border:5px solid #0000;border-top-width:0;border-bottom:12px solid #7fd4a8;width:0;height:0;margin-left:-5px;position:absolute;top:10%;left:50%}.fpv-compass__hub{background:#c5d0de;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 2px #060a10e6}.fpv-compass__readout{font-family:var(--mono);background:#060a107a;border:1px solid #ffffff14;border-radius:4px;justify-items:center;gap:.05rem;padding:.12rem .35rem;line-height:1;display:grid;position:absolute;top:-.1rem;left:50%;transform:translate(-50%,-100%)}.fpv-compass__bearing{color:#7fd4a8;font-size:clamp(.58rem,1.25vh,.68rem);font-weight:600}.fpv-compass__legend{color:var(--text-dim);letter-spacing:.08em;font-size:clamp(.45rem,1vh,.52rem)}.control-dock{z-index:2;padding:var(--pad);background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);grid-template-rows:auto auto auto auto;align-content:start;align-items:stretch;gap:clamp(.25rem,.9vh,.55rem);min-width:min(100%,280px);min-height:0;display:grid;position:relative;overflow:hidden}.control-sections-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:clamp(.3rem,1vw,.55rem);min-height:0;display:grid}.control-section{border:1px solid color-mix(in srgb, var(--border) 85%, white);background:color-mix(in srgb, var(--bg-elevated) 58%, transparent);border-radius:8px;align-content:start;gap:clamp(.25rem,.7vh,.4rem);min-width:0;min-height:0;padding:clamp(.3rem,.8vh,.5rem);display:grid}.control-section__title{color:var(--text);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:clamp(.64rem,1.45vh,.76rem);font-weight:700;line-height:1}.control-section--drive,.control-section--camera{justify-items:stretch}.control-section--drive .pad-block,.control-section--camera .pad-block{justify-self:center;width:100%}.control-section--safety{border-color:color-mix(in srgb, var(--danger) 35%, var(--border));background:color-mix(in srgb, var(--danger) 7%, var(--bg-elevated))}.panel-label{color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.2rem;font-size:clamp(.58rem,1.3vh,.7rem);line-height:1;display:block}.speed-selector__row{grid-template-columns:repeat(3,1fr);gap:.3rem;display:grid}.speed-btn,.view-tab,.aux-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;min-height:var(--control-h);height:var(--control-h);background:#101722;border-radius:8px}.speed-btn{place-items:center;padding:0;display:grid}.speed-chevron-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:clamp(18px,2.8vh,24px);height:clamp(18px,2.8vh,24px)}.speed-btn--active,.view-tab--active,.dpad__btn--active{background:color-mix(in srgb, var(--accent-dim) 65%, #1a222e);color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent)}.speed-btn:disabled,.aux-btn:disabled{opacity:.45;cursor:not-allowed}.pad-block{justify-items:center;gap:.2rem;min-width:0;display:grid}.pad-block__header{justify-content:space-between;align-items:center;gap:.35rem;width:100%;min-height:20px;display:flex}.pad-block__header .panel-label{margin-bottom:0}.pad-reset{border:1px solid var(--border);color:var(--text-dim);letter-spacing:.02em;text-transform:uppercase;cursor:pointer;background:#1a222e;border-radius:6px;padding:.12rem .45rem;font-size:.68rem;font-weight:600}.pad-reset:not(:disabled):hover{color:var(--text);border-color:color-mix(in srgb, var(--border) 60%, white 20%)}.pad-reset:disabled{opacity:.45;cursor:not-allowed}.drive-actions{gap:.2rem;display:flex}.continuous-drive-toggle{white-space:nowrap;align-items:center;gap:.28rem;display:inline-flex}.continuous-drive-toggle--active{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:color-mix(in srgb, var(--accent-dim) 65%, #1a222e);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.orientation-reset--active{color:var(--info);border-color:color-mix(in srgb, var(--info) 55%, var(--border));background:color-mix(in srgb, var(--info) 16%, #1a222e)}.stick-pad{--size:calc(var(--dpad-arm) * 3 + 8px);width:var(--size);height:var(--size);border:1px solid var(--border);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;background:#0c1118;border-radius:16px;position:relative;box-shadow:inset 0 1px #ffffff0a}.stick-pad--active{cursor:grabbing}.stick-pad--disabled{opacity:.5;cursor:not-allowed}.stick-pad__cross{pointer-events:none;position:absolute;inset:10%}.stick-pad__arm{background:linear-gradient(#2a3444 0%,#1a222e 100%);border:1px solid #3a4658;position:absolute;box-shadow:inset 0 1px #ffffff14,0 1px #0a0e14}.stick-pad__arm--n,.stick-pad__arm--s{border-radius:8px 8px 4px 4px;width:32%;height:38%;left:50%;transform:translate(-50%)}.stick-pad__arm--n{top:0}.stick-pad__arm--s{border-radius:4px 4px 8px 8px;bottom:0}.stick-pad__arm--w,.stick-pad__arm--e{border-radius:8px 4px 4px 8px;width:38%;height:32%;top:50%;transform:translateY(-50%)}.stick-pad__arm--w{left:0}.stick-pad__arm--e{border-radius:4px 8px 8px 4px;right:0}.stick-pad__hub{background:linear-gradient(#2a3444 0%,#1a222e 100%);border:1px solid #3a4658;border-radius:6px;width:28%;height:28%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stick-pad__knob{pointer-events:none;background:radial-gradient(circle at 35% 30%,#5a6a7e,#2a3444 55%,#151b24);border:1px solid #6a7a8e;border-radius:50%;width:28%;height:28%;transition:transform 40ms linear;position:absolute;top:50%;left:50%;box-shadow:0 2px 6px #00000073}.dpad{--arm:var(--dpad-arm);--gap:2px;grid-template-columns:var(--arm) var(--arm) var(--arm);grid-template-rows:var(--arm) var(--arm) var(--arm);gap:var(--gap);border:1px solid var(--border);touch-action:none;-webkit-user-select:none;user-select:none;background:#0c1118;border-radius:14px;grid-template-areas:".up.""left mid right"".down.";padding:clamp(4px,.8vh,8px);display:grid;box-shadow:inset 0 1px #ffffff0a}.dpad--camera{--arm:var(--dpad-arm-cam)}.dpad--disabled{opacity:.5}.dpad__btn,.dpad__center{color:#c5d0de;background:linear-gradient(#2a3444 0%,#1a222e 100%);border:1px solid #3a4658;box-shadow:inset 0 1px #ffffff14,0 1px #0a0e14}.dpad__btn{cursor:pointer;min-width:0;min-height:0;padding:0;position:relative}.dpad__btn:disabled{cursor:not-allowed}.dpad__btn--up{border-radius:8px 8px 3px 3px;grid-area:up}.dpad__btn--down{border-radius:3px 3px 8px 8px;grid-area:down}.dpad__btn--left{border-radius:8px 3px 3px 8px;grid-area:left}.dpad__btn--right{border-radius:3px 8px 8px 3px;grid-area:right}.dpad__btn:after{content:"";opacity:.85;border-style:solid;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dpad__btn--up:after{border-width:0 5px 7px;border-color:#0000 #0000 currentColor;transform:translate(-50%,calc(-50% - 1px))}.dpad__btn--down:after{border-width:7px 5px 0;border-color:currentColor #0000 #0000;transform:translate(-50%,calc(1px - 50%))}.dpad__btn--left:after{border-width:5px 7px 5px 0;border-color:#0000 currentColor #0000 #0000;transform:translate(calc(-50% - 1px),-50%)}.dpad__btn--right:after{border-width:5px 0 5px 7px;border-color:#0000 #0000 #0000 currentColor;transform:translate(calc(1px - 50%),-50%)}.dpad__center{pointer-events:none;border-radius:6px;grid-area:mid;place-items:center;font-size:clamp(.65rem,1.5vh,.85rem);display:grid}.camera-facing-tri{filter:drop-shadow(0 0 2px #7fd4a873);transform-origin:50% 70%;border:6px solid #0000;border-top-width:0;border-bottom:11px solid #7fd4a8;width:0;height:0;display:block}.camera-facing-overlay{pointer-events:none;z-index:2;place-items:center;width:48px;height:48px;display:grid;position:absolute;top:50%;left:50%}.camera-facing-overlay__tri{filter:drop-shadow(0 0 6px #0000008c);border:14px solid #0000;border-top-width:0;border-bottom:26px solid #7fd4a8d9;width:0;height:0;display:block}.camera-angles{font-family:var(--mono);color:var(--text-dim);gap:.4rem;font-size:clamp(.55rem,1.25vh,.68rem);line-height:1;display:flex}.aux-controls{gap:.2rem;min-height:0;display:grid}.aux-controls__grid{grid-template-columns:repeat(2,1fr);gap:.3rem;display:grid}.aux-btn{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:.35rem;padding:0 .35rem;font-size:clamp(.68rem,1.5vh,.82rem);font-weight:600;display:flex}.aux-btn__icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:clamp(16px,2.3vh,20px);height:clamp(16px,2.3vh,20px)}.aux-btn--on{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:color-mix(in srgb, var(--accent-dim) 55%, #101722)}.aux-btn--hold:active,.aux-btn--hold.aux-btn--on{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 45%, var(--border))}.stop-btn{border-radius:var(--radius);width:100%;min-height:var(--stop-size);height:var(--stop-size);box-shadow:0 0 0 1px #ff8a8a inset, 0 8px 18px var(--danger-glow);color:#fff;cursor:pointer;background:radial-gradient(circle at 50% 30%,#ff6b6b 0%,#c62828 48%,#7f1212 100%);border:none}.stop-btn__label{letter-spacing:.12em;font-size:clamp(.9rem,2.2vh,1.1rem);font-weight:800}.stop-btn:active{transform:scale(.98)}.control-hint{color:var(--warn);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:clamp(.65rem,1.4vh,.78rem);line-height:1.25;overflow:hidden}.keyboard-hint{color:var(--text-dim);font-family:var(--mono);letter-spacing:.08em;white-space:nowrap;font-size:clamp(.58rem,1.25vh,.68rem);line-height:1}.cockpit-bottom{gap:var(--gap);min-height:0;display:grid}.validation-panel{background:color-mix(in srgb, var(--bg-elevated) 92%, black);border:1px solid var(--border);border-radius:var(--radius);grid-template-rows:auto;min-height:0;display:grid;overflow:hidden}.validation-panel--open{grid-template-rows:auto auto}.validation-panel__bar{align-items:center;min-height:clamp(28px,4vh,34px);padding:0 .45rem;display:flex}.validation-panel__toggle{min-width:0;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;flex:auto;align-items:center;gap:.4rem;padding:.2rem .25rem;display:flex}.validation-panel__chevron{color:var(--text-dim);font-size:.75rem}.validation-panel__title{font-size:clamp(.72rem,1.5vh,.82rem);font-weight:600}.validation-panel__badge{border:1px solid color-mix(in srgb, var(--warn) 55%, var(--border));background:color-mix(in srgb, var(--warn) 12%, transparent);color:var(--warn);font-family:var(--mono);letter-spacing:.04em;border-radius:999px;padding:.08rem .35rem;font-size:clamp(.55rem,1.2vh,.65rem)}.validation-panel__summary{color:var(--text-dim);font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:clamp(.58rem,1.25vh,.68rem);overflow:hidden}.validation-panel__body{border-top:1px solid var(--border);gap:.45rem;padding:.45rem .55rem .55rem;display:grid}.validation-panel__note{color:var(--text-dim);margin:0;font-size:clamp(.62rem,1.3vh,.72rem);line-height:1.35}.validation-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.35rem;display:grid}.validation-metric{border:1px solid var(--border);background:#101722;border-radius:6px;gap:.08rem;padding:.35rem .45rem;display:grid}.validation-metric__label{color:var(--text-dim);letter-spacing:.03em;text-transform:uppercase;font-size:clamp(.58rem,1.2vh,.66rem)}.validation-metric__value{font-family:var(--mono);font-size:clamp(.68rem,1.45vh,.78rem)}.validation-metric__hint{color:var(--text-dim);font-size:clamp(.55rem,1.1vh,.62rem);line-height:1.25}.validation-health{flex-wrap:wrap;gap:.3rem;display:flex}.validation-health__chip{border:1px solid var(--border);font-family:var(--mono);border-radius:999px;padding:.18rem .42rem;font-size:clamp(.58rem,1.2vh,.66rem)}.validation-health__chip b{color:var(--text-dim);margin-right:.2rem;font-weight:500}.validation-health--ok{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));color:var(--accent)}.validation-health--pending,.validation-health--stale{border-color:color-mix(in srgb, var(--warn) 45%, var(--border));color:var(--warn)}.validation-health--bad{border-color:color-mix(in srgb, var(--danger) 45%, var(--border));color:var(--danger)}.ros-console{background:color-mix(in srgb, var(--bg-elevated) 92%, black);border:1px solid var(--border);border-radius:var(--radius);grid-template-rows:auto;min-height:0;display:grid;overflow:hidden}.ros-console--open{grid-template-rows:auto auto minmax(72px,22vh) auto}.ros-console__bar{border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:.45rem;min-height:clamp(28px,4vh,34px);padding:0 .45rem;display:flex}.ros-console--open .ros-console__bar{border-bottom-color:var(--border)}.ros-console__toggle{min-width:0;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;flex:auto;align-items:center;gap:.4rem;padding:.2rem .25rem;display:flex}.ros-console__chevron{color:var(--text-dim);flex-shrink:0;font-size:.75rem}.ros-console__title{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;flex-shrink:0;font-size:clamp(.62rem,1.35vh,.72rem);font-weight:600}.ros-console__summary{font-family:var(--mono);color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.55rem,1.2vh,.65rem);overflow:hidden}.ros-console__actions{flex-shrink:0;gap:.25rem;display:flex}.ros-console__action{border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);cursor:pointer;background:#101722;border-radius:6px;padding:.15rem .45rem;font-size:clamp(.55rem,1.15vh,.64rem)}.ros-console__action[aria-pressed=true]{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 45%, var(--border))}.ros-console__toolbar{border-bottom:1px solid var(--border);align-items:center;gap:.45rem;min-width:0;padding:.3rem .55rem;display:flex}.ros-console__filters{flex-shrink:0;gap:.2rem;display:flex}.ros-console__filter{border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);cursor:pointer;white-space:nowrap;background:#101722;border-radius:6px;padding:.12rem .4rem;font-size:clamp(.52rem,1.1vh,.62rem)}.ros-console__filter--active{color:var(--text);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:color-mix(in srgb, var(--accent) 8%, #101722)}.ros-console__search{border:1px solid var(--border);min-width:0;color:var(--text);font-family:var(--mono);background:#0d1219;border-radius:6px;flex:auto;padding:.18rem .45rem;font-size:clamp(.55rem,1.15vh,.64rem)}.ros-console__search::placeholder{color:var(--text-dim)}.ros-console__command{border-top:1px solid var(--border);background:#090d13;align-items:center;gap:.45rem;padding:.35rem .55rem;display:flex}.ros-console__prompt{color:var(--accent);font:600 .78rem var(--mono)}.ros-console__command-input{min-width:0;color:var(--text);font:.7rem var(--mono);background:0 0;border:0;outline:0;flex:1}.ros-console__command-input::placeholder{color:var(--text-dim)}.ros-console__command-send{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font:.63rem var(--mono);background:#121a25;border-radius:4px;padding:.2rem .45rem}.killer-mode{color:#e8cf91;background:#040404 url(/assets/killer-mode/v4/panel-surface-tile.png) 50%/420px;place-items:center;min-height:100dvh;display:grid;overflow:auto}.kv4-board{aspect-ratio:1672/941;width:min(100vw,177.7dvh);font-family:var(--mono);background:#070705;border:2px solid #493619;position:relative;overflow:hidden;box-shadow:0 0 0 6px #060504,0 24px 90px #000}.kv4-board:after{content:"";z-index:50;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 70px #000000b3,inset 0 0 0 2px #b4853629}.kv4-brand,.kv4-spirit,.kv4-optic,.kv4-return-plinth,.kv4-viewport,.kv4-speed,.kv4-servo,.kv4-aux,.kv4-instruments,.kv4-stop{position:absolute;overflow:hidden}.kv4-brand{place-items:center;width:18.3%;height:10.4%;display:grid;top:1.6%;left:1.6%}.kv4-brand img{object-fit:contain;width:100%;height:100%}.kv4-spirit{place-items:center;width:18.1%;height:16.7%;display:grid;top:12.2%;left:1.7%}.kv4-spirit>img{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.kv4-spirit>div{z-index:2;text-align:center;text-transform:uppercase;letter-spacing:.08em;gap:.15rem;font-size:clamp(.58rem,.75vw,.82rem);display:grid;position:relative}.kv4-spirit strong{color:#ef7350;font-size:1.15em}.kv4-spirit.is-online strong{color:#8ad893}.kv4-spirit .status-strip{z-index:3;background:0 0;border:0;min-height:0;padding:0;position:absolute;bottom:6%;left:50%;transform:translate(-50%)}.kv4-spirit .status-strip__left,.kv4-spirit .status-strip__right{gap:0}.kv4-spirit .status-pill,.kv4-spirit .meta-chip,.kv4-spirit .brand{display:none}.kv4-spirit .settings-trigger{background:#100a06;border-color:#705027;padding:.08rem .28rem;font-size:clamp(.42rem,.45vw,.55rem)}.kv4-optic{background:#070604;width:18.4%;height:39.1%;top:29.1%;left:1.5%}.kv4-optic>img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.kv4-optic__scope{z-index:2;aspect-ratio:1;cursor:grab;touch-action:none;background:radial-gradient(circle,#0000 0 5%,#7a0e082e 6%,#0000 43%,#d62e1933 44%,#0000 46%),repeating-radial-gradient(circle,#0000 0 20px,#b5471e24 21px 22px);border-radius:50%;width:54%;position:absolute;top:50%;left:23%;transform:translateY(-50%);box-shadow:inset 0 0 32px #000}.kv4-optic__scope:active{cursor:grabbing}.kv4-optic__reticle,.kv4-optic__reticle:after{content:"";pointer-events:none;background:#de462573;width:1px;position:absolute;top:12%;bottom:12%;left:50%}.kv4-optic__reticle:after{width:76%;height:1px;top:50%;bottom:auto;left:auto;transform:translate(-50%)}.kv4-optic__dot{pointer-events:none;background:#ff3f23;border-radius:50%;width:8px;height:8px;position:absolute;top:calc(50% - 4px);left:calc(50% - 4px);box-shadow:0 0 4px #fff,0 0 14px #f21c09}.kv4-optic__commands{z-index:4;grid-template-columns:repeat(5,1fr);gap:3%;display:grid;position:absolute;bottom:8%;left:12%;right:12%}.kv4-optic__commands button{aspect-ratio:1;color:#a6763e;cursor:pointer;background:#150c07;border:1px solid #67451c;padding:0;font-size:clamp(.46rem,.7vw,.7rem)}.kv4-optic__commands button.is-active{color:#ff7b52;border-color:#d04824;box-shadow:inset 0 0 9px #8f1d0e}.kv4-optic__readout{z-index:4;text-align:center;color:#a97c45;font-size:clamp(.38rem,.43vw,.5rem);position:absolute;bottom:2%;left:0;right:0}.kv4-return-plinth{place-items:center;width:18.4%;height:29.7%;display:grid;top:68.7%;left:1.5%}.kv4-return-plinth>img{object-fit:fill;filter:hue-rotate(92deg)saturate(.72)brightness(.78);width:100%;height:100%;position:absolute;inset:0}.kv4-return-plinth button{z-index:2;color:#daf0c8;cursor:pointer;text-transform:uppercase;background:radial-gradient(circle at 50% 35%,#4cb863e6,#0c5223c2 70%);border:1px solid #b0efb06b;place-content:center;gap:.08rem;width:63%;height:47%;display:grid;position:relative;box-shadow:inset 0 0 23px #073918,0 0 15px #30d55b4d}.kv4-return-plinth button span{font:clamp(.44rem,.54vw,.62rem) var(--mono);letter-spacing:.08em}.kv4-return-plinth button strong{font:700 clamp(.78rem,1.35vw,1.55rem) var(--mono);letter-spacing:.05em}.kv4-return-plinth button:active{filter:brightness(1.25);transform:scale(.98)}.kv4-viewport{background:#020302;width:51.9%;height:67.2%;top:1.4%;left:20%}.kv4-viewport__base{z-index:1;object-fit:fill;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.kv4-viewport__feed{z-index:2;opacity:.32;mix-blend-mode:screen;filter:sepia(.55)saturate(.5)brightness(.38)contrast(1.3);background:0 0;position:absolute;inset:15% 10% 8%;overflow:hidden}.kv4-viewport__feed .stage-view,.kv4-viewport__feed .video-panel{width:100%;height:100%}.kv4-viewport__feed .telemetry-overlay,.kv4-viewport__feed .stream-stats-overlay,.kv4-viewport__feed .fpv-compass{display:none}.kv4-speed{width:12.2%;height:57.5%;top:1.5%;left:72%}.kv4-speed>img,.kv4-servo>img,.kv4-aux>img,.kv4-stop>img{object-fit:fill;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.kv4-speed__active-texture{z-index:2;opacity:.98;mix-blend-mode:screen;filter:saturate(1.3)contrast(1.08)drop-shadow(0 0 7px #ea2f149e)}.kv4-speed__active-texture--0{clip-path:inset(26% 72% 50% 0)}.kv4-speed__active-texture--1{clip-path:inset(49% 72% 27% 0)}.kv4-speed__active-texture--2{clip-path:inset(72% 72% 4% 0)}.kv4-speed__buttons{z-index:3;grid-template-rows:repeat(3,1fr);gap:8.5%;display:grid;position:absolute;inset:25.7% 20% 10.5%}.kv4-speed__buttons button{color:#0000;cursor:pointer;background:0 0;border:0;font-size:0;position:relative}.kv4-servo{width:14.3%;height:36.8%;top:1.5%;left:84.2%}.kv4-servo__surface{touch-action:none;cursor:grab;width:56%;height:64%;position:absolute;top:22%;left:22%}.kv4-servo__rail{background:#9e783c;width:2px;position:absolute;top:5%;bottom:5%;left:50%;transform:translate(-50%);box-shadow:0 0 5px #000}.kv4-servo__knob{aspect-ratio:1;background:radial-gradient(circle,#6e6048 0 18%,#1b1711 22% 50%,#8b6a30 53% 60%,#100d09 64%);border:2px solid #8f6a31;border-radius:50%;width:30%;position:absolute;top:50%;left:50%;box-shadow:0 3px 7px #000}.kv4-servo__lamp{background:#fb3b20;border-radius:2px;width:6px;height:10px;position:absolute;top:calc(50% - 5px);box-shadow:0 0 7px #f52b14}.kv4-servo__lamp--left{left:-2%}.kv4-servo__lamp--right{right:-2%}.kv4-aux{width:14.3%;height:20.7%;top:38.3%;left:84.2%}.kv4-aux__buttons{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:3% 4%;display:grid;position:absolute;inset:26% 10% 9%}.kv4-aux__buttons button{cursor:pointer;background:0 0;border:0;min-width:0;min-height:0;padding:0;position:relative;overflow:hidden}.kv4-aux__buttons button img{object-fit:contain;filter:drop-shadow(0 2px 3px #000);width:92%;height:92%;position:absolute;inset:4%}.kv4-aux__buttons button.is-active img{filter:brightness(1.2)saturate(1.2)drop-shadow(0 0 7px #f02d12)}.kv4-instruments{background:#090704;grid-template-columns:repeat(3,1fr);gap:.6%;width:51.9%;height:29.6%;display:grid;top:68.8%;left:20%}.kv4-instrument{color:inherit;cursor:pointer;background:#080705;border:0;align-content:center;place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.kv4-instrument>img{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.kv4-instrument>p{z-index:2;color:#d3aa5a;text-transform:uppercase;letter-spacing:.1em;margin:0;font-size:clamp(.5rem,.62vw,.72rem);position:absolute;top:9%}.kv4-instrument__display{z-index:2;background:#060805;border:1px solid #443318;position:absolute;inset:26% 12% 24%;overflow:hidden}.kv4-instrument__display:before,.kv4-instrument__display:after{content:"";background:linear-gradient(90deg,#0000 49.5%,#c5994240 50%,#0000 50.5%),linear-gradient(#0000 49.5%,#c5994233 50%,#0000 50.5%);position:absolute;inset:0}.kv4-instrument--feed .kv4-instrument__display{background:linear-gradient(#060805bb,#060805ee),linear-gradient(165deg,#0000 47%,#a67c39 48% 49%,#0000 50%)}.kv4-instrument--map .kv4-instrument__display{background:repeating-radial-gradient(circle,#0000 0 12px,#b48b3c47 13px 14px),#060805}.kv4-instrument--auspex .kv4-instrument__display span{background:repeating-linear-gradient(90deg,#6a4a21 0 3px,#d0a554 4px 5px,#6a4a21 6px 8px);height:2px;position:absolute;top:48%;left:0;right:0}.kv4-instrument output{z-index:3;color:#a88648;font-size:clamp(.4rem,.48vw,.56rem);position:absolute;bottom:12%}.kv4-instrument[aria-pressed=true]{filter:brightness(1.22)}.kv4-instrument[aria-pressed=true] .kv4-instrument__display{border-color:#a57b34;box-shadow:inset 0 0 14px #ad7b2a2e,0 0 8px #ad7b2a2e}.kv4-instrument:before{content:"";z-index:2;pointer-events:none;border:1px solid #6d4f2261;position:absolute;inset:4% 3%}.kv4-instrument:after{content:"◉  ◈  ◉  ◈";z-index:3;color:#6d4b23;text-align:center;letter-spacing:.22em;pointer-events:none;border-top:1px solid #493318;padding:1.2% 0;font-size:clamp(.38rem,.48vw,.55rem);position:absolute;bottom:3%;left:8%;right:8%}.kv4-stop{place-items:center;width:26.5%;height:39.1%;display:grid;top:59.3%;left:72%}.kv4-stop button{z-index:2;color:#f2d7a5;cursor:pointer;text-transform:uppercase;background:radial-gradient(circle at 50% 35%,#e55b39e0,#71160eb3 70%);border:1px solid #f4c67c73;place-content:center;gap:.15rem;width:62%;height:48%;display:grid;position:relative;box-shadow:inset 0 0 25px #48100a,0 0 15px #e7321747}.kv4-stop button span{font:clamp(.55rem,.66vw,.76rem) var(--mono);letter-spacing:.08em}.kv4-stop button strong{font:700 clamp(1.6rem,3vw,3.5rem) var(--mono);letter-spacing:.06em}.kv4-stop button:active{filter:brightness(1.3);transform:scale(.98)}.ros-console__list{min-height:0;font-family:var(--mono);padding:.25rem 0;font-size:clamp(.55rem,1.2vh,.66rem);line-height:1.35;overflow:auto}.ros-console__empty{color:var(--text-dim);margin:0;padding:.55rem .75rem}.ros-console__entry{border-bottom:1px solid #ffffff0a;border-left:3px solid #0000;grid-template-columns:auto auto minmax(72px,1fr) auto;align-items:baseline;gap:.15rem .45rem;padding:.22rem .65rem .22rem .55rem;display:grid}.ros-console__entry--command{border-left-color:color-mix(in srgb, var(--accent) 70%, transparent)}.ros-console__entry--update{border-left-color:color-mix(in srgb, var(--info) 70%, transparent)}.ros-console__entry--lifecycle{border-left-color:color-mix(in srgb, var(--text-dim) 55%, transparent)}.ros-console__entry:hover{background:#ffffff08}.ros-console__time{color:var(--text-dim);white-space:nowrap}.ros-console__badge{letter-spacing:.04em;white-space:nowrap;border-radius:4px;padding:.05rem .28rem;font-size:.82em;font-weight:700}.ros-console__badge--command{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.ros-console__badge--update{color:var(--info);background:color-mix(in srgb, var(--info) 14%, transparent)}.ros-console__badge--lifecycle{color:var(--text-dim);background:#ffffff0f}.ros-console__topic{color:var(--info);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ros-console__type{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;justify-self:end;font-size:.88em;overflow:hidden}.ros-console__summary-line{color:var(--text);white-space:pre-wrap;word-break:break-word;grid-column:1/-1;margin:0}.ros-console__entry--command .ros-console__summary-line{color:color-mix(in srgb, var(--accent) 85%, var(--text))}.ros-console__entry--update .ros-console__summary-line{color:color-mix(in srgb, var(--info) 75%, var(--text))}.ros-console__entry--lifecycle .ros-console__summary-line{color:var(--text-dim)}.ros-console__repeat{color:var(--warn);grid-area:1/4;justify-self:end;font-size:.9em}.cockpit-footer{background:color-mix(in srgb, var(--bg-elevated) 92%, black);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:.45rem;min-height:0;padding:clamp(.28rem,.7vh,.45rem) .55rem;display:flex;overflow:hidden}.view-switcher{flex:auto;gap:.3rem;min-width:0;display:flex}.view-tab{text-align:center;flex:auto;padding:0;font-size:clamp(.75rem,1.7vh,.9rem);font-weight:600}@media (height<=720px){.panel-label,.camera-angles{display:none}}@media (height<=560px){.control-hint,.keyboard-hint,.status-pill--optional,.meta-chip--optional,.footer-meta{display:none}}@media (width<=1099px) and (width>=768px){.status-strip__left{flex-wrap:wrap}.stage{grid-template-columns:minmax(0,1fr) minmax(240px,32vw)}}@media (width<=767px){.status-strip{flex-wrap:nowrap}.status-pill__full{display:none}.status-pill__short{display:inline}.status-pill--optional,.meta-chip--optional,.footer-meta{display:none}.stage{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr;overflow:hidden}.control-dock{flex-shrink:0;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"drive camera safety""aux aux safety""hint hint hint";place-items:center stretch;gap:clamp(.2rem,.7vh,.4rem);padding:clamp(.3rem,.8vh,.5rem);display:grid;overflow:hidden}.control-sections-row{display:contents}.control-section{padding:clamp(.2rem,.6vh,.35rem)}.continuous-drive-toggle__label{display:none}.control-section--drive{grid-area:drive}.control-section--camera{grid-area:camera;align-self:stretch}.control-section--auxiliary{grid-area:aux}.control-section--safety{grid-area:safety;align-self:stretch}.aux-controls__grid{grid-template-columns:repeat(4,1fr)}.aux-btn{gap:0;padding:0}.aux-btn span{display:none}.control-section--safety .stop-btn{width:var(--stop-size);border-radius:var(--radius);justify-self:end}.control-dock>.control-hint{grid-area:hint}.pad-block>.control-hint,.panel-label,.camera-angles{display:none}.sensor-stage__pip{width:min(120px,36%);bottom:.35rem;right:.35rem}}@media (width<=430px){.fault-banner{max-width:34vw}}@media (width<=767px) and (height<=520px) and (orientation:landscape){.stage{grid-template-rows:1fr;grid-template-columns:minmax(0,1fr) minmax(280px,1fr)}.status-pill--optional,.meta-chip--optional,.footer-meta,.camera-angles,.panel-label,.control-hint{display:none}.control-dock{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"drive camera safety""aux aux safety";display:grid;overflow:hidden}.control-sections-row{display:contents}.control-section__title{display:none}.aux-controls__grid{grid-template-columns:repeat(4,1fr)}.control-section--safety .stop-btn{width:var(--stop-size);border-radius:var(--radius)}.sensor-stage__pip{width:min(100px,30%)}}
