:root{
  color-scheme:light;
  --bg:#f4f2ed;
  --panel:#fbfaf7;
  --panel-2:#e9e6de;
  --ink:#16191b;
  --muted:#646b6e;
  --line:#c9c6bf;
  --line-dark:#8f918f;
  --black:#080b0b;
  --display:#e8f1e9;
  --active:#d6a91f;
  --active-soft:#f4d66a;
  --blue:#1d5d91;
  --alarm:#b54132;
  --shadow:0 10px 28px rgba(36,34,29,.08);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
button,input,select{font:inherit}
button{color:inherit}
a{color:var(--blue)}
.topbar{min-height:58px;padding:12px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:flex-start;background:rgba(251,250,247,.94);position:sticky;top:0;z-index:20;backdrop-filter:blur(10px)}
.brand{display:flex;align-items:baseline;gap:9px;margin:0;white-space:nowrap;letter-spacing:.09em}.brand strong{font-size:.92rem;font-weight:850}.brand span{font-size:.72rem;color:var(--muted);font-weight:500;letter-spacing:.14em}
.app-shell{max-width:1580px;margin:0 auto;padding:24px;display:grid;grid-template-columns:minmax(390px,520px) minmax(0,1fr);gap:24px;align-items:start}
.dsky-column{position:sticky;top:82px;display:grid;gap:12px}.dsky-frame{background:#d8d5cc;border:2px solid #878981;border-radius:12px;padding:14px;box-shadow:var(--shadow)}
.dsky-upper{display:grid;grid-template-columns:38% 62%;gap:12px}.lamp-bank{display:grid;grid-template-columns:1fr 1fr;border:2px solid #292d2c;background:#d4d1c8}.lamp-bank span{min-height:49px;border-right:1px solid #777a76;border-bottom:1px solid #777a76;display:grid;place-items:center;text-align:center;font:700 .66rem/1.08 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.015em;background:#dcd9d0}.lamp-bank span:nth-child(2n){border-right:0}.lamp-bank span:nth-last-child(-n+2){border-bottom:0}.lamp-bank span.on{background:var(--active-soft);color:#15130c}.lamp-bank span.alarm{background:#d98069;color:#24100c}
.dsky-display{position:relative;background:radial-gradient(circle at 50% 20%,#122019,#050807 62%);border:4px solid #282c2a;box-shadow:inset 0 0 0 2px #8f928e,inset 0 0 22px rgba(205,239,212,.08);min-height:300px;padding:20px 18px 14px;color:var(--display);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;text-shadow:0 0 7px rgba(217,245,223,.42)}
.comp-acty{position:absolute;left:12px;top:9px;font-size:.52rem;line-height:1.05;letter-spacing:.06em;color:#879d8b}.comp-acty.on{color:#e7f3e8}
.display-header{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;padding-left:28px;border-bottom:2px solid #a8b7ab;padding-bottom:9px}.display-header div{display:grid;gap:1px}.display-header small{font-size:.52rem;letter-spacing:.08em}.display-header b{font-size:2.55rem;font-weight:500;line-height:1}
.display-register{height:71px;display:flex;justify-content:flex-end;align-items:center;border-bottom:1px solid rgba(195,214,198,.2);font-size:3.55rem;letter-spacing:.055em;white-space:pre}.display-register:last-child{border-bottom:0}.dsky-display.flash .display-register{animation:displayFlash .6s steps(1) infinite}@keyframes displayFlash{50%{opacity:.18}}
.dsky-keyboard{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-top:12px}.dsky-keyboard button{min-height:55px;border:3px solid #333735;border-radius:7px;background:#090c0d;color:#f3f4f1;font:700 .78rem ui-monospace,SFMono-Regular,Consolas,monospace;box-shadow:inset 0 0 0 1px #a3a49f,0 2px 2px rgba(0,0,0,.28)}.dsky-keyboard button:active,.dsky-keyboard button.key-pressed{transform:translateY(1px);background:#1a2020}.dsky-keyboard span{min-height:55px}
.kicker{font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}
.detail-column{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.tabbar{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--line);background:#efede7}.tab{min-height:58px;border:0;border-right:1px solid var(--line);background:transparent;font-weight:800;letter-spacing:.06em;cursor:pointer}.tab:last-child{border-right:0}.tab.active{background:var(--panel);box-shadow:inset 0 -3px 0 var(--blue)}.tab:focus-visible{outline:3px solid rgba(29,93,145,.28);outline-offset:-3px}
.tab-panel{padding:28px}.tab-panel[hidden]{display:none}.panel-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:22px}.panel-heading h1{margin:.15em 0 0;font-size:clamp(1.65rem,3vw,2.5rem);line-height:1.04}.code-source-heading{display:block}.code-source-kicker{display:block;margin:0 0 8px;font:850 .62rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.11em;color:var(--muted)}.code-source-heading h1{margin:0;max-width:1050px;font-size:clamp(1.35rem,2.35vw,2.15rem);line-height:1.08;letter-spacing:-.015em}.kicker{margin:0;color:var(--blue)}.simple-heading{align-items:start}
.code-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f7f6f2}.code-meta{min-height:42px;padding:10px 14px;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);font:700 .76rem ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted)}.code-viewer{height:520px;overflow:auto;padding:10px 0;font:13px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;background:#fbfaf7}.code-line{display:grid;grid-template-columns:64px 1fr;padding:1px 18px 1px 0;white-space:pre}.code-line-number{padding-right:14px;text-align:right;color:#989b99;user-select:none}.code-line.highlight{background:#e4edf4;border-left:3px solid var(--blue)}.code-line.search-hit{background:#f5e9b9}.code-line code{overflow:visible}
.drawer{margin-top:18px;border-top:1px solid var(--line);padding-top:12px}.drawer summary{cursor:pointer;font-weight:750}.source-tools{margin-top:14px;display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}.source-tools label{display:grid;gap:5px;font-size:.74rem;font-weight:750;color:var(--muted)}.source-tools select,.source-tools input{width:100%;min-width:0;border:1px solid var(--line-dark);border-radius:6px;background:white;padding:9px}.source-tools button{border:1px solid var(--line-dark);border-radius:6px;background:#eceae4;padding:9px 14px;font-weight:750}.source-results{display:grid;gap:7px;margin-top:12px}.source-result{display:grid;text-align:left;border:1px solid var(--line);border-radius:6px;background:white;padding:9px 11px}.source-result strong{font-size:.76rem;color:var(--blue)}.source-result code{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-empty{color:var(--muted);font-size:.85rem}
.source-agc-now{margin-top:14px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#f7f8f6;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center}.source-agc-now-copy{min-width:0;display:grid;gap:3px}.source-agc-now-kicker{font:850 .62rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.11em;color:#2f7650}.source-agc-now strong{font:850 .76rem/1.35 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-agc-now code{font:700 .72rem/1.35 ui-monospace,SFMono-Regular,Consolas,monospace;color:#42494c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-agc-now small{color:var(--muted);font-size:.7rem}.source-agc-now button{border:1px solid var(--line-dark);border-radius:6px;background:#e7e5df;padding:9px 12px;font:850 .67rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.035em;white-space:nowrap}.source-agc-now button.ready{background:#1f5f8d;color:white;border-color:#184d72;cursor:pointer}.source-agc-now button.showing{background:#e3edf4;color:#184d72}.source-agc-now button:disabled{opacity:.65;cursor:default}
.video-shell{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#07090b;display:grid;place-items:center;min-height:520px;padding:18px}.onboard-film-stage{width:100%;min-height:484px;display:grid;place-items:center;background:#000;border-radius:10px}.onboard-film-frame{position:relative;width:min(66vh,92%);max-width:620px;aspect-ratio:1 / 1}.onboard-film-frame::after{content:"";position:absolute;left:14.6447%;top:14.6447%;width:70.7106%;height:70.7106%;border:3px solid rgba(255,255,255,.96);box-sizing:border-box;transform:rotate(45deg);transform-origin:center;pointer-events:none;z-index:3}.onboard-film-mask{position:absolute;inset:0;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);overflow:hidden;background:#000;z-index:1}.onboard-film-mask video{position:absolute;inset:-17%;width:134%;height:134%;object-fit:cover;object-position:center center;background:#000;transform:translate(1.3%,-1.2%)}.camera-start-note{position:absolute;left:50%;top:50%;z-index:4;transform:translate(-50%,-50%);max-width:calc(100% - 36px);padding:7px 10px;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:rgba(7,9,11,.78);color:rgba(255,255,255,.92);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:700;letter-spacing:.06em;line-height:1.25;text-align:center;white-space:normal;pointer-events:none;opacity:1;visibility:visible;transition:opacity .18s ease,visibility .18s ease}.camera-start-note.is-hidden{opacity:0;visibility:hidden}.voice-now{margin:0 0 18px;padding:18px 20px;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:8px;background:#f7f6f2;font-size:1.18rem}.voice-list{display:grid;gap:7px;max-height:610px;overflow:auto}.voice-event{display:grid;grid-template-columns:90px 1fr auto;gap:12px;align-items:start;text-align:left;border:1px solid transparent;border-radius:7px;background:transparent;padding:10px 12px;cursor:pointer}.voice-event:hover{background:#f0eee8}.voice-event.active{border-color:#a9bfd2;background:#e8f0f6}.voice-event time{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted)}.voice-event strong{font-size:.9rem}.voice-event span{font-size:.73rem;color:var(--muted)}
.systems-state-list{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.systems-state-row{display:grid;grid-template-columns:minmax(145px,210px) minmax(0,1fr);gap:22px;align-items:baseline;padding:15px 4px;border-bottom:1px solid var(--line)}.systems-state-row:last-child{border-bottom:0}.systems-state-row span{font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}.systems-state-row strong{font-size:.96rem;font-weight:750}.node-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.node-detail{border:1px solid var(--line);border-radius:8px;padding:13px;background:#f7f6f2}.node-detail h3{margin:0 0 5px;font-size:.95rem}.node-detail p{margin:0;color:var(--muted);font-size:.82rem}

.systems-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.systems-subtab{min-height:40px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.8rem;font-weight:800;letter-spacing:.06em;cursor:pointer}.systems-subtab.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.systems-view{display:block}.systems-view[hidden]{display:none!important}

.surface-mode-tabs{display:flex;gap:8px;margin-bottom:14px}.surface-mode-tab,.terrain-view-button{min-height:38px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.74rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.surface-mode-tab.active,.terrain-view-button.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.surface-mode-view{display:block}.surface-mode-view[hidden]{display:none!important}
.three-d-layout .surface-summary{align-content:start}.terrain-card{overflow:hidden}.terrain-toolbar{display:flex;justify-content:flex-end;padding:10px 12px 0}.terrain-view-buttons{display:flex;flex-wrap:wrap;gap:8px}.terrain-viewport{position:relative;padding:10px 12px 2px}.terrain-image{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#f2f2f2}.terrain-overlay{position:absolute;padding:4px 7px;border-radius:999px;background:rgba(19,24,27,.84);color:#fff;font-size:.6rem;font-weight:800;letter-spacing:.06em;pointer-events:none}.terrain-overlay.target{left:52%;top:28%}.terrain-overlay.touchdown{left:63%;top:64%}.terrain-overlay.west{left:74%;top:58%}
.surface-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.65fr);gap:18px;align-items:start}.surface-map-card{margin:0;border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}.surface-map-shell{position:relative}.surface-map-image{display:block;width:100%;height:auto}.surface-track-line{position:absolute;left:34%;top:53%;width:52%;border-top:3px dashed rgba(255,255,255,.75);transform:translateY(-50%)}.surface-marker{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;cursor:default}.surface-marker span{display:block;padding:5px 7px;border-radius:999px;background:rgba(22,25,27,.88);color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.06em;box-shadow:0 2px 6px rgba(0,0,0,.25)}.surface-marker::before{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%)}.surface-marker.target::before{background:#f4d66a;border:2px solid #7d6507}.surface-marker.touchdown::before{background:#81d6ff;border:2px solid #155a7b}.surface-marker.live{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:#ef5836;border:3px solid #fff;box-shadow:0 0 0 4px rgba(239,88,54,.18)}.surface-marker.live span{position:absolute;left:50%;top:-26px;transform:translateX(-50%);padding:4px 6px;border-radius:999px;background:#ef5836;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.05em}.surface-map-card figcaption{padding:10px 14px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line)}.surface-summary{display:grid;gap:12px}.metric-card,.control-card,.evidence-card{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;padding:14px}.metric-card small,.control-card small,.evidence-card small{display:block;font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}.metric-card strong,.control-card strong,.evidence-card strong{display:block;margin-top:4px;font-size:1.05rem}.metric-card p,.control-card p,.evidence-card p{margin:.45rem 0 0;color:#495053;font-size:.84rem}.metric-card.compact p{font-size:.78rem}
.controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analog-card{grid-row:span 2}.fdai-mini{position:relative;margin-top:10px;width:132px;height:132px;border-radius:50%;border:4px solid #70777a;background:linear-gradient(to bottom,#f8f8f8 0 50%,#101214 50% 100%);overflow:hidden}.fdai-cross{position:absolute;background:rgba(255,255,255,.85)}.fdai-cross.horizontal{left:10px;right:10px;top:50%;height:2px;transform:translateY(-50%)}.fdai-cross.vertical{top:10px;bottom:10px;left:50%;width:2px;transform:translateX(-50%)}.fdai-dot{position:absolute;width:18px;height:18px;border-radius:50%;background:transparent;border:3px solid #d93524;transform:translate(-50%,-50%)}
.evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.transport{max-width:1580px;margin:0 auto 18px;padding:0 24px;display:grid;grid-template-columns:46px 90px 46px 1fr;gap:9px;align-items:center}.transport-button,.play-button{height:46px;border:1px solid var(--line-dark);border-radius:8px;background:var(--panel);font-weight:800}.play-button{display:flex;align-items:center;justify-content:center;gap:8px;background:#1c4f7c;color:white;border-color:#1c4f7c}.timeline-wrap{min-width:0;position:relative;padding:4px 2px}.timeline-wrap input{width:100%;accent-color:var(--blue)}.timeline-labels{display:flex;justify-content:space-between;gap:10px;font-size:.72rem;color:var(--muted)}.timeline-labels strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.timeline-markers{position:absolute;left:8px;right:8px;top:9px;height:12px;pointer-events:none}.timeline-marker{position:absolute;width:5px;height:12px;border-radius:3px;background:#6d7272;transform:translateX(-50%)}.timeline-marker.alarm{background:var(--alarm);height:16px;top:-2px}.timeline-marker.phase{background:var(--blue)}
.mobile-dsky-strip{display:none}.mobile-dsky-strip span{display:grid;gap:0;text-align:center}.mobile-dsky-strip small{font-size:.5rem;letter-spacing:.08em}.mobile-dsky-strip strong,.mobile-dsky-strip b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:500}
footer{min-height:50px;border-top:1px solid var(--line);padding:14px 24px;display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:.75rem;background:#ece9e2}
@media(max-width:1100px){
  
.surface-mode-tabs{display:flex;gap:8px;margin-bottom:14px}.surface-mode-tab,.terrain-view-button{min-height:38px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.74rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.surface-mode-tab.active,.terrain-view-button.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.surface-mode-view{display:block}.surface-mode-view[hidden]{display:none!important}
.three-d-layout .surface-summary{align-content:start}.terrain-card{overflow:hidden}.terrain-toolbar{display:flex;justify-content:flex-end;padding:10px 12px 0}.terrain-view-buttons{display:flex;flex-wrap:wrap;gap:8px}.terrain-viewport{position:relative;padding:10px 12px 2px}.terrain-image{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#f2f2f2}.terrain-overlay{position:absolute;padding:4px 7px;border-radius:999px;background:rgba(19,24,27,.84);color:#fff;font-size:.6rem;font-weight:800;letter-spacing:.06em;pointer-events:none}.terrain-overlay.target{left:52%;top:28%}.terrain-overlay.touchdown{left:63%;top:64%}.terrain-overlay.west{left:74%;top:58%}
.surface-layout{grid-template-columns:1fr}.controls-grid,.evidence-grid{grid-template-columns:1fr}
  .app-shell{grid-template-columns:minmax(350px,440px) minmax(0,1fr);padding:16px;gap:16px}.dsky-display{min-height:270px}.display-register{font-size:3rem;height:64px}.dsky-keyboard button{min-height:48px}.tab-panel{padding:22px}.systems-flow{grid-template-columns:1fr;gap:7px}.flow-arrow{transform:rotate(90deg);justify-self:center}.system-detail{display:grid}.manual-status{justify-self:start}
  
.systems-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.systems-subtab{min-height:40px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.8rem;font-weight:800;letter-spacing:.06em;cursor:pointer}.systems-subtab.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.systems-view{display:block}.systems-view[hidden]{display:none!important}

.surface-mode-tabs{display:flex;gap:8px;margin-bottom:14px}.surface-mode-tab,.terrain-view-button{min-height:38px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.74rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.surface-mode-tab.active,.terrain-view-button.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.surface-mode-view{display:block}.surface-mode-view[hidden]{display:none!important}
.three-d-layout .surface-summary{align-content:start}.terrain-card{overflow:hidden}.terrain-toolbar{display:flex;justify-content:flex-end;padding:10px 12px 0}.terrain-view-buttons{display:flex;flex-wrap:wrap;gap:8px}.terrain-viewport{position:relative;padding:10px 12px 2px}.terrain-image{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#f2f2f2}.terrain-overlay{position:absolute;padding:4px 7px;border-radius:999px;background:rgba(19,24,27,.84);color:#fff;font-size:.6rem;font-weight:800;letter-spacing:.06em;pointer-events:none}.terrain-overlay.target{left:52%;top:28%}.terrain-overlay.touchdown{left:63%;top:64%}.terrain-overlay.west{left:74%;top:58%}
.surface-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.65fr);gap:18px;align-items:start}.surface-map-card{margin:0;border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}.surface-map-shell{position:relative}.surface-map-image{display:block;width:100%;height:auto}.surface-track-line{position:absolute;left:34%;top:53%;width:52%;border-top:3px dashed rgba(255,255,255,.75);transform:translateY(-50%)}.surface-marker{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;cursor:default}.surface-marker span{display:block;padding:5px 7px;border-radius:999px;background:rgba(22,25,27,.88);color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.06em;box-shadow:0 2px 6px rgba(0,0,0,.25)}.surface-marker::before{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%)}.surface-marker.target::before{background:#f4d66a;border:2px solid #7d6507}.surface-marker.touchdown::before{background:#81d6ff;border:2px solid #155a7b}.surface-marker.live{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:#ef5836;border:3px solid #fff;box-shadow:0 0 0 4px rgba(239,88,54,.18)}.surface-marker.live span{position:absolute;left:50%;top:-26px;transform:translateX(-50%);padding:4px 6px;border-radius:999px;background:#ef5836;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.05em}.surface-map-card figcaption{padding:10px 14px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line)}.surface-summary{display:grid;gap:12px}.metric-card,.control-card,.evidence-card{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;padding:14px}.metric-card small,.control-card small,.evidence-card small{display:block;font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}.metric-card strong,.control-card strong,.evidence-card strong{display:block;margin-top:4px;font-size:1.05rem}.metric-card p,.control-card p,.evidence-card p{margin:.45rem 0 0;color:#495053;font-size:.84rem}.metric-card.compact p{font-size:.78rem}
.controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analog-card{grid-row:span 2}.fdai-mini{position:relative;margin-top:10px;width:132px;height:132px;border-radius:50%;border:4px solid #70777a;background:linear-gradient(to bottom,#f8f8f8 0 50%,#101214 50% 100%);overflow:hidden}.fdai-cross{position:absolute;background:rgba(255,255,255,.85)}.fdai-cross.horizontal{left:10px;right:10px;top:50%;height:2px;transform:translateY(-50%)}.fdai-cross.vertical{top:10px;bottom:10px;left:50%;width:2px;transform:translateX(-50%)}.fdai-dot{position:absolute;width:18px;height:18px;border-radius:50%;background:transparent;border:3px solid #d93524;transform:translate(-50%,-50%)}
.evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.transport{padding:0 16px}.code-viewer{height:470px}
}
@media(max-width:820px){
  .surface-marker span{font-size:.55rem;padding:4px 5px}.fdai-mini{width:118px;height:118px}
  .topbar{padding:10px 14px}.brand{gap:7px}.brand strong{font-size:.86rem}.brand span{display:inline;font-size:.66rem}
  .app-shell{display:block;padding:12px}.dsky-column{position:relative;top:auto;margin-bottom:12px}.dsky-frame{max-width:600px;margin:auto}.detail-column{border-radius:9px}.tabbar{position:sticky;top:58px;z-index:12}.tab{min-height:50px;font-size:.8rem}.tab-panel{padding:18px}.panel-heading{display:grid;gap:10px}.code-source-heading{display:block}.code-source-heading h1{font-size:clamp(1.25rem,5.2vw,1.75rem)}.code-viewer{height:460px}.video-shell{min-height:300px;padding:10px}.onboard-film-stage{min-height:280px}.onboard-film-frame{width:min(82vw,92%)}.camera-start-note{max-width:78%;font-size:.66rem;padding:6px 8px;letter-spacing:.045em}.voice-list{max-height:none}
.systems-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.systems-subtab{min-height:40px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.8rem;font-weight:800;letter-spacing:.06em;cursor:pointer}.systems-subtab.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.systems-view{display:block}.systems-view[hidden]{display:none!important}

.surface-mode-tabs{display:flex;gap:8px;margin-bottom:14px}.surface-mode-tab,.terrain-view-button{min-height:38px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.74rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.surface-mode-tab.active,.terrain-view-button.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.surface-mode-view{display:block}.surface-mode-view[hidden]{display:none!important}
.three-d-layout .surface-summary{align-content:start}.terrain-card{overflow:hidden}.terrain-toolbar{display:flex;justify-content:flex-end;padding:10px 12px 0}.terrain-view-buttons{display:flex;flex-wrap:wrap;gap:8px}.terrain-viewport{position:relative;padding:10px 12px 2px}.terrain-image{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#f2f2f2}.terrain-overlay{position:absolute;padding:4px 7px;border-radius:999px;background:rgba(19,24,27,.84);color:#fff;font-size:.6rem;font-weight:800;letter-spacing:.06em;pointer-events:none}.terrain-overlay.target{left:52%;top:28%}.terrain-overlay.touchdown{left:63%;top:64%}.terrain-overlay.west{left:74%;top:58%}
.surface-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.65fr);gap:18px;align-items:start}.surface-map-card{margin:0;border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}.surface-map-shell{position:relative}.surface-map-image{display:block;width:100%;height:auto}.surface-track-line{position:absolute;left:34%;top:53%;width:52%;border-top:3px dashed rgba(255,255,255,.75);transform:translateY(-50%)}.surface-marker{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;cursor:default}.surface-marker span{display:block;padding:5px 7px;border-radius:999px;background:rgba(22,25,27,.88);color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.06em;box-shadow:0 2px 6px rgba(0,0,0,.25)}.surface-marker::before{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%)}.surface-marker.target::before{background:#f4d66a;border:2px solid #7d6507}.surface-marker.touchdown::before{background:#81d6ff;border:2px solid #155a7b}.surface-marker.live{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:#ef5836;border:3px solid #fff;box-shadow:0 0 0 4px rgba(239,88,54,.18)}.surface-marker.live span{position:absolute;left:50%;top:-26px;transform:translateX(-50%);padding:4px 6px;border-radius:999px;background:#ef5836;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.05em}.surface-map-card figcaption{padding:10px 14px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line)}.surface-summary{display:grid;gap:12px}.metric-card,.control-card,.evidence-card{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;padding:14px}.metric-card small,.control-card small,.evidence-card small{display:block;font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}.metric-card strong,.control-card strong,.evidence-card strong{display:block;margin-top:4px;font-size:1.05rem}.metric-card p,.control-card p,.evidence-card p{margin:.45rem 0 0;color:#495053;font-size:.84rem}.metric-card.compact p{font-size:.78rem}
.controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analog-card{grid-row:span 2}.fdai-mini{position:relative;margin-top:10px;width:132px;height:132px;border-radius:50%;border:4px solid #70777a;background:linear-gradient(to bottom,#f8f8f8 0 50%,#101214 50% 100%);overflow:hidden}.fdai-cross{position:absolute;background:rgba(255,255,255,.85)}.fdai-cross.horizontal{left:10px;right:10px;top:50%;height:2px;transform:translateY(-50%)}.fdai-cross.vertical{top:10px;bottom:10px;left:50%;width:2px;transform:translateX(-50%)}.fdai-dot{position:absolute;width:18px;height:18px;border-radius:50%;background:transparent;border:3px solid #d93524;transform:translate(-50%,-50%)}
.evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.transport{padding:0 12px;grid-template-columns:40px 74px 40px 1fr}.transport-button,.play-button{height:42px}.play-button span:last-child{display:none}.timeline-labels strong{display:none}.source-tools{grid-template-columns:1fr}.node-detail-grid{grid-template-columns:1fr}footer{display:grid;padding:12px 14px}
  .mobile-dsky-strip.visible{display:flex;position:fixed;top:0;left:0;right:0;z-index:30;height:48px;background:#090d0c;color:#e9f1e9;align-items:center;justify-content:space-around;border-bottom:1px solid #4b5550;box-shadow:0 5px 16px rgba(0,0,0,.2)}body.mobile-dsky-visible .topbar{top:48px}body.mobile-dsky-visible .tabbar{top:106px}
}
@media(max-width:520px){
  .systems-subtabs{gap:6px}.systems-subtab{padding:0 10px;font-size:.68rem}.surface-summary,.controls-grid,.evidence-grid{gap:8px}.surface-mode-tabs,.terrain-view-buttons{gap:6px}.surface-mode-tab,.terrain-view-button{padding:0 10px;font-size:.66rem}
  .app-shell{padding:8px}.dsky-frame{padding:8px;border-radius:8px}.dsky-upper{gap:7px}.lamp-bank span{min-height:39px;font-size:.54rem}.dsky-display{min-height:234px;padding:15px 11px 8px}.display-header{padding-left:22px}.display-header b{font-size:1.9rem}.display-register{height:54px;font-size:2.35rem}.dsky-keyboard{gap:4px;margin-top:7px}.dsky-keyboard button{min-height:43px;border-width:2px;font-size:.64rem}.tab{font-size:.7rem;letter-spacing:.035em}.tab-panel{padding:14px}.panel-heading h1{font-size:1.55rem}.code-meta{font-size:.65rem}.code-viewer{height:410px;font-size:11px}.code-line{grid-template-columns:48px 1fr;padding-right:8px}.voice-event{grid-template-columns:72px 1fr}.voice-event span{display:none}
.systems-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.systems-subtab{min-height:40px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.8rem;font-weight:800;letter-spacing:.06em;cursor:pointer}.systems-subtab.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.systems-view{display:block}.systems-view[hidden]{display:none!important}

.surface-mode-tabs{display:flex;gap:8px;margin-bottom:14px}.surface-mode-tab,.terrain-view-button{min-height:38px;padding:0 14px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;font-size:.74rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.surface-mode-tab.active,.terrain-view-button.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}.surface-mode-view{display:block}.surface-mode-view[hidden]{display:none!important}
.three-d-layout .surface-summary{align-content:start}.terrain-card{overflow:hidden}.terrain-toolbar{display:flex;justify-content:flex-end;padding:10px 12px 0}.terrain-view-buttons{display:flex;flex-wrap:wrap;gap:8px}.terrain-viewport{position:relative;padding:10px 12px 2px}.terrain-image{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#f2f2f2}.terrain-overlay{position:absolute;padding:4px 7px;border-radius:999px;background:rgba(19,24,27,.84);color:#fff;font-size:.6rem;font-weight:800;letter-spacing:.06em;pointer-events:none}.terrain-overlay.target{left:52%;top:28%}.terrain-overlay.touchdown{left:63%;top:64%}.terrain-overlay.west{left:74%;top:58%}
.surface-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.65fr);gap:18px;align-items:start}.surface-map-card{margin:0;border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}.surface-map-shell{position:relative}.surface-map-image{display:block;width:100%;height:auto}.surface-track-line{position:absolute;left:34%;top:53%;width:52%;border-top:3px dashed rgba(255,255,255,.75);transform:translateY(-50%)}.surface-marker{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;cursor:default}.surface-marker span{display:block;padding:5px 7px;border-radius:999px;background:rgba(22,25,27,.88);color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.06em;box-shadow:0 2px 6px rgba(0,0,0,.25)}.surface-marker::before{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%)}.surface-marker.target::before{background:#f4d66a;border:2px solid #7d6507}.surface-marker.touchdown::before{background:#81d6ff;border:2px solid #155a7b}.surface-marker.live{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:#ef5836;border:3px solid #fff;box-shadow:0 0 0 4px rgba(239,88,54,.18)}.surface-marker.live span{position:absolute;left:50%;top:-26px;transform:translateX(-50%);padding:4px 6px;border-radius:999px;background:#ef5836;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.05em}.surface-map-card figcaption{padding:10px 14px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line)}.surface-summary{display:grid;gap:12px}.metric-card,.control-card,.evidence-card{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;padding:14px}.metric-card small,.control-card small,.evidence-card small{display:block;font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}.metric-card strong,.control-card strong,.evidence-card strong{display:block;margin-top:4px;font-size:1.05rem}.metric-card p,.control-card p,.evidence-card p{margin:.45rem 0 0;color:#495053;font-size:.84rem}.metric-card.compact p{font-size:.78rem}
.controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analog-card{grid-row:span 2}.fdai-mini{position:relative;margin-top:10px;width:132px;height:132px;border-radius:50%;border:4px solid #70777a;background:linear-gradient(to bottom,#f8f8f8 0 50%,#101214 50% 100%);overflow:hidden}.fdai-cross{position:absolute;background:rgba(255,255,255,.85)}.fdai-cross.horizontal{left:10px;right:10px;top:50%;height:2px;transform:translateY(-50%)}.fdai-cross.vertical{top:10px;bottom:10px;left:50%;width:2px;transform:translateX(-50%)}.fdai-dot{position:absolute;width:18px;height:18px;border-radius:50%;background:transparent;border:3px solid #d93524;transform:translate(-50%,-50%)}
.evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.transport{grid-template-columns:36px 60px 36px 1fr;gap:5px}.transport-button,.play-button{height:38px}.systems-flow{font-size:.85rem}.manual-status{grid-template-columns:1fr}.manual-status span{border-right:0;border-bottom:1px solid #bdaa6e}.manual-status span:last-child{border-bottom:0}
}

/* v0.9.6 interactive terrain viewer */
.terrain-viewer-panel{border:1px solid var(--line);border-radius:12px;background:#11181b;overflow:hidden;box-shadow:var(--shadow)}
.terrain-controlbar{display:flex;justify-content:space-between;gap:16px;padding:12px 14px;border-bottom:1px solid #384247;background:#161f23;color:#eef1ef}
.terrain-control-group{display:grid;gap:7px}.terrain-control-group small{font-size:.62rem;letter-spacing:.12em;color:#9ea9ad;font-weight:800}.terrain-button-row{display:flex;flex-wrap:wrap;gap:7px}.terrain-camera-button,.terrain-relief-button{min-height:34px;padding:0 11px;border:1px solid #59666c;border-radius:999px;background:#222d31;color:#e7ecea;font-size:.68rem;font-weight:800;letter-spacing:.055em;cursor:pointer}.terrain-camera-button:hover,.terrain-relief-button:hover{background:#2c383d}.terrain-camera-button.active,.terrain-relief-button.active{background:#d7a826;border-color:#d7a826;color:#18140a}
.terrain-canvas-wrap{position:relative;height:640px;min-height:460px;background:radial-gradient(circle at 50% 18%,#283137 0,#10171a 58%,#090d0f 100%);overflow:hidden}.terrain-canvas-wrap canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.terrain-canvas-wrap canvas:active{cursor:grabbing}.terrain-loading{position:absolute;inset:0;display:grid;place-items:center;color:#dfe6e3;font-size:.86rem;letter-spacing:.06em;background:rgba(12,17,19,.78);z-index:3}.terrain-loading[hidden]{display:none}
.terrain-marker{position:absolute;transform:translate(-50%,-50%);z-index:4;pointer-events:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.55))}.terrain-marker span{display:block;padding:5px 7px;border-radius:999px;background:rgba(12,16,18,.88);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:.58rem;font-weight:850;letter-spacing:.06em;white-space:nowrap}.terrain-marker::after{content:'';position:absolute;left:50%;top:100%;width:1px;height:15px;background:rgba(255,255,255,.65)}.terrain-target span{border-color:#e6c769;color:#f5df94}.terrain-touchdown span{border-color:#87d8ff;color:#aee6ff}.terrain-west span{border-color:#c9cdd0;color:#e1e3e4}.terrain-live span{background:#e06137;border-color:#f4b79f;color:#fff}.terrain-live::after{background:#ee805a}
.terrain-statusbar{display:flex;justify-content:space-between;gap:12px;padding:9px 14px;border-top:1px solid #344045;background:#151d20;color:#aeb7ba;font-size:.7rem}.terrain-statusbar strong{color:#f3d67b;letter-spacing:.06em}.terrain-evidence-drawer{border-top:1px solid #344045;background:#f4f2ed;color:var(--ink);padding:10px 14px}.terrain-evidence-drawer summary{cursor:pointer;font-weight:800;font-size:.82rem}.terrain-evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}.terrain-evidence-grid p{margin:0;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fbfaf7;font-size:.78rem;color:#42494c}
@media(max-width:1100px){.terrain-controlbar{display:grid}.relief-control{justify-self:start}.terrain-canvas-wrap{height:560px}.terrain-statusbar{flex-wrap:wrap}}
@media(max-width:820px){.terrain-canvas-wrap{height:500px;min-height:380px}.terrain-evidence-grid{grid-template-columns:1fr}.terrain-controlbar{padding:10px}.terrain-statusbar span:last-child{display:none}}
@media(max-width:520px){.terrain-canvas-wrap{height:420px;min-height:340px}.terrain-camera-button,.terrain-relief-button{padding:0 8px;font-size:.61rem}.terrain-statusbar{font-size:.63rem}.terrain-marker span{font-size:.5rem;padding:4px 5px}}

/* v0.9.12 responsive tab/header correction
   On the stacked narrow layout the sticky tab bar could overlay the phase
   heading when the viewport was resized or the document was scrolled. Keep
   the tabs in normal document flow on narrow screens so headings can never
   pass underneath them. */
@media (max-width: 820px) {
  .tabbar {
    position: static;
    top: auto;
    z-index: auto;
  }
  body.mobile-dsky-visible .tabbar {
    top: auto;
  }
  .panel-heading {
    scroll-margin-top: 16px;
  }
}


/* v0.9.13 simplified mission identity header
   Keep the header as a quiet series/module identifier rather than a broadcast-style LIVE strip. */

/* v0.9.14 DSKY-to-tabs simplification
   Remove the duplicated GET / PHASE strip beneath the DSKY. On stacked layouts
   the tabs now follow the DSKY directly, with only a small structural gap.
   Program/phase context remains at the top of the active content panel and on
   the synchronized timeline. */

/* v0.9.27 source columns
   The source pane uses one semantic header row: Line, Code, Memory, Word.
   Comments and assembler-only directives leave Memory/Word blank; emitted
   fixed-memory rope words occupy the final two columns. */
.code-viewer{padding-top:0}
.code-column-header,
.code-line{
  display:grid;
  grid-template-columns:64px minmax(560px,1fr) 92px 70px;
  align-items:baseline;
  min-width:max-content;
}
.code-column-header{
  position:sticky;
  top:0;
  z-index:4;
  padding:9px 10px 9px 0;
  border-bottom:1px solid var(--line);
  background:#f7f6f2;
  color:var(--muted);
  font:800 .66rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.07em;
}
.code-column-header>span:first-child{padding-right:14px;text-align:right}
.code-column-code{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-right:10px}
.code-column-executing{display:inline-flex;align-items:center;gap:5px;color:#2f7650;font-size:.58rem;letter-spacing:.055em;white-space:nowrap}
.code-column-executing i{width:7px;height:7px;border-radius:50%;background:#4aa66e;box-shadow:0 0 0 3px rgba(74,166,110,.10)}
.code-line{padding:1px 10px 1px 0;white-space:pre}
.code-line-number{padding-right:14px;text-align:right;color:#989b99;user-select:none}
.code-line code{overflow:visible}
.code-memory,.code-word{
  text-align:right;
  color:#145c8a;
  font:700 .72rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.015em;
  user-select:none;
}
.code-row-comment code{color:#59615f}
.code-row-assembler code{color:#765c2a}
.code-line.execution-hit{
  background:#dff0e4;
  border-left:4px solid #357653;
  box-shadow:inset 0 1px 0 rgba(53,118,83,.2),inset 0 -1px 0 rgba(53,118,83,.2);
}
.code-line.execution-hit .code-line-number,
.code-line.execution-hit .code-memory,
.code-line.execution-hit .code-word{color:#275e42;font-weight:850}
@media(max-width:520px){
  .code-column-header,.code-line{grid-template-columns:48px minmax(520px,1fr) 84px 62px}
  .code-column-header{font-size:.56rem;padding-right:6px}
  .code-column-header>span:first-child{padding-right:10px}
  .code-column-code{padding-right:8px}
  .code-column-executing{font-size:.5rem}
  .code-memory,.code-word{font-size:.63rem}
  .code-line{padding-right:6px}
}

/* v0.9.24 video-only tab
   The VIDEO tab intentionally contains only the synchronized onboard film.
   Voice/transcript material remains in the VOICE tab. */


/* v0.9.26 Systems simplification
   STATE replaces the generic INPUT → LGC → OUTPUT flow. The default Systems
   view now reports only concise current LM system states; phase headings and
   duplicate explanatory copy are removed. */
@media(max-width:520px){
  .systems-state-row{grid-template-columns:minmax(104px,38%) minmax(0,1fr);gap:10px;padding:12px 0}
  .systems-state-row span{font-size:.59rem}
  .systems-state-row strong{font-size:.84rem}
}


/* v0.9.28 mobile Surface and 3D control correction
   The inherited mobile rules accidentally restored the desktop two-column
   Surface grid, pushing the 2D map partly outside the viewport. Keep the map
   and summary in one explicit mobile column. Terrain controls remain above
   the WebGL canvas and use full tap targets. */
@media (max-width:820px){
  #systems-view-surface,
  #surface-mode-map,
  #surface-mode-3d{
    width:100%;
    min-width:0;
  }
  #surface-mode-map .surface-layout{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:12px;
    align-items:start;
    width:100%;
    min-width:0;
  }
  #surface-mode-map .surface-map-card,
  #surface-mode-map .surface-summary{
    grid-column:1;
    width:100%;
    min-width:0;
  }
  #surface-mode-map .surface-map-card{order:1}
  #surface-mode-map .surface-summary{order:2}
  #surface-mode-map .surface-map-shell{
    width:100%;
    min-width:0;
    overflow:hidden;
  }
  #surface-mode-map .surface-map-image{
    display:block;
    width:100%;
    max-width:100%;
    height:auto;
  }
  .terrain-controlbar{
    position:relative;
    z-index:6;
  }
  .terrain-camera-button,
  .terrain-relief-button{
    position:relative;
    z-index:7;
    touch-action:manipulation;
  }
}
@media (max-width:520px){
  .surface-mode-tabs{flex-wrap:wrap}
  .terrain-controlbar{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:12px;
  }
  .terrain-control-group,
  .terrain-button-row{
    width:100%;
    min-width:0;
  }
  .terrain-button-row{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .terrain-camera-button,
  .terrain-relief-button{
    width:100%;
    min-height:42px;
    padding:0 8px;
    font-size:.62rem;
  }
  .terrain-camera-button[data-camera="full"]{grid-column:1/-1}
}


/* v0.9.29 DSKY-inspired systems controls
   Give the Systems interactive controls a shared visual language with the DSKY
   keypad: squarer geometry, dark key faces, inset borders, and compact uppercase
   labels. The main CODE / VIDEO / VOICE / SURFACE / SYSTEMS tabs remain unchanged. */
:root{
  --dsky-key-bg:#090c0d;
  --dsky-key-border:#333735;
  --dsky-key-inset:#a3a49f;
  --dsky-key-text:#f3f4f1;
  --dsky-key-active:#1c4f7c;
  --dsky-key-active-inset:#c0d6ea;
  --dsky-key-active-border:#27455c;
}
.systems-subtabs,
.surface-mode-tabs{gap:10px}
.systems-subtab,
.surface-mode-tab,
.terrain-view-button,
.terrain-camera-button,
.terrain-relief-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:0 14px;
  border:2px solid var(--dsky-key-border);
  border-radius:10px;
  background:var(--dsky-key-bg);
  color:var(--dsky-key-text);
  font:800 .74rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.06em;
  text-transform:uppercase;
  box-shadow:inset 0 0 0 1px var(--dsky-key-inset), 0 1px 2px rgba(0,0,0,.18);
  cursor:pointer;
  transition:background .12s ease,border-color .12s ease,transform .08s ease,box-shadow .12s ease;
}
.systems-subtab:hover,
.surface-mode-tab:hover,
.terrain-view-button:hover,
.terrain-camera-button:hover,
.terrain-relief-button:hover{
  background:#14191b;
}
.systems-subtab:active,
.surface-mode-tab:active,
.terrain-view-button:active,
.terrain-camera-button:active,
.terrain-relief-button:active{
  transform:translateY(1px);
}
.systems-subtab.active,
.surface-mode-tab.active,
.terrain-view-button.active,
.terrain-camera-button.active,
.terrain-relief-button.active{
  background:var(--dsky-key-active);
  border-color:var(--dsky-key-active-border);
  color:#fff;
  box-shadow:inset 0 0 0 1px var(--dsky-key-active-inset), 0 1px 2px rgba(0,0,0,.15);
}
.systems-subtab:focus-visible,
.surface-mode-tab:focus-visible,
.terrain-view-button:focus-visible,
.terrain-camera-button:focus-visible,
.terrain-relief-button:focus-visible{
  outline:3px solid rgba(29,93,145,.25);
  outline-offset:2px;
}
.terrain-control-group small{color:#aab3b7}
.terrain-button-row{gap:8px}
@media (max-width:820px){
  .systems-subtabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .systems-subtab{width:100%}
}
@media (max-width:520px){
  .systems-subtab,
  .surface-mode-tab,
  .terrain-view-button,
  .terrain-camera-button,
  .terrain-relief-button{
    min-height:44px;
    padding:0 10px;
    font-size:.68rem;
    letter-spacing:.05em;
  }
  .surface-mode-tabs{flex-wrap:wrap;gap:10px}
  .surface-mode-tab{min-width:84px}
}


/* v0.9.30 surface map cleanup
   Simplifies the 2D landing-area map presentation: removes the extra
   synthetic track line, trims the marker pills, and keeps source
   provenance in the figcaption rather than baked into the image. */
.surface-track-line{display:none !important}
.surface-map-card figcaption{padding:10px 14px;font-size:.76rem;color:var(--muted);border-top:1px solid var(--line)}
.surface-marker span{
  display:block;
  padding:4px 8px 4px 18px;
  border-radius:999px;
  background:rgba(18,22,24,.72);
  border:1px solid rgba(255,255,255,.24);
  color:#fff;
  font-size:.54rem;
  font-weight:800;
  letter-spacing:.05em;
  box-shadow:0 1px 4px rgba(0,0,0,.22);
  backdrop-filter:blur(1px);
}
.surface-marker::before{
  content:'';
  position:absolute;
  left:8px;
  top:50%;
  width:10px;
  height:10px;
  border-radius:50%;
  transform:translateY(-50%);
}
.surface-marker.target::before{background:#f4d66a;border:2px solid #7d6507}
.surface-marker.touchdown::before{background:#81d6ff;border:2px solid #155a7b}
.surface-marker.live{
  width:18px;
  height:18px;
  border-radius:50%;
  background:#ef5836;
  border:3px solid #fff;
  box-shadow:0 0 0 3px rgba(239,88,54,.14);
}
.surface-marker.live span{
  position:absolute;
  left:50%;
  top:-23px;
  transform:translateX(-50%);
  padding:3px 6px;
  border-radius:999px;
  background:#ef5836;
  border:1px solid rgba(255,255,255,.22);
  color:#fff;
  font-size:.52rem;
  font-weight:800;
  letter-spacing:.05em;
}
@media (max-width:820px){
  .surface-marker span{padding:3px 7px 3px 16px;font-size:.5rem}
  .surface-marker::before{left:7px;width:9px;height:9px}
  .surface-marker.live{width:16px;height:16px}
  .surface-marker.live span{top:-21px;font-size:.5rem}
}


/* v0.9.33: Surface map emphasis and shared LGC-aim wording */
.surface-layout-map-only{display:block !important}
.surface-map-card-wide{width:100%}
#surface-mode-map .surface-map-card-wide{max-width:none}
#surface-mode-map .surface-track-line{width:52%}
.terrain-statusbar strong#terrain-reference-summary{color:#f3d67b;letter-spacing:.06em}
@media (min-width:821px){
  #surface-mode-map .surface-layout{display:block !important}
}

/* v0.9.38 continuous validated AGC run in SYSTEMS */
.systems-subtabs{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  max-width:520px;
}
.computer-run{display:grid;gap:14px}
.computer-run-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:14px 16px;
  border:1px solid #34443d;
  border-radius:10px;
  background:#101817;
  color:#eef4ef;
}
.computer-run-identity{display:grid;gap:3px}
.computer-run-identity small,
.computer-run-meta small,
.computer-card>small,
.computer-alarm-sequence header small{
  font:800 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.11em;
  color:var(--muted);
}
.computer-run-identity small{color:#9fb0a7}
.computer-run-identity strong{font:850 1.05rem/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.04em}
.computer-run-state{display:flex;align-items:center;gap:8px;font:800 .67rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.07em;color:#b9c7c0;text-align:right}
.computer-run-state i{width:10px;height:10px;border-radius:50%;background:#5c8e75;box-shadow:0 0 0 4px rgba(92,142,117,.14);flex:0 0 auto}
.computer-run-state.capture{color:#dff5e6}
.computer-run-state.capture i{background:#54c27c;box-shadow:0 0 0 4px rgba(84,194,124,.18)}
.computer-run-meta{
  display:grid;
  grid-template-columns:minmax(150px,.8fr) minmax(95px,.45fr) minmax(140px,.65fr) minmax(220px,1.35fr);
  border:1px solid var(--line);
  border-radius:9px;
  background:#f7f6f2;
  overflow:hidden;
}
.computer-run-meta>div{display:grid;gap:5px;padding:12px 14px;border-right:1px solid var(--line);min-width:0}
.computer-run-meta>div:last-child{border-right:0}
.computer-run-meta strong{font:800 .9rem/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}
.computer-run-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:12px}
.computer-card{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;padding:15px;min-width:0;height:275px;overflow:hidden}
.computer-card.capture{border-color:#74a68a;background:#f1f8f3;box-shadow:inset 4px 0 0 #3f815d}
.computer-card.alarm{border-color:#c98372;background:#fff5f1;box-shadow:inset 4px 0 0 #b64c38}
.computer-card h2{margin:6px 0 5px;font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.12;overflow-wrap:anywhere}
.computer-card>small em{font:700 .56rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;font-style:normal;letter-spacing:.04em;color:#7b8480;margin-left:5px}
.computer-source-window{height:62px;margin:7px 0 5px;display:flex;flex-direction:column;justify-content:center;gap:3px;overflow:hidden;min-width:0}
.computer-source-instruction{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;font:850 clamp(1.05rem,2vw,1.35rem)/1.15 ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.computer-source-window.has-comment .computer-source-instruction{-webkit-line-clamp:1}
.computer-source-comment{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font:750 .76rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;color:#52605a;overflow-wrap:anywhere}
.computer-source-ref,.computer-executive-result{margin:0;color:#455053;font:700 .76rem/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}
.computer-card-note{margin:12px 0 0;padding-top:10px;border-top:1px solid var(--line);color:#5e6668;font-size:.76rem}
.computer-capture-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.computer-capture-facts span{display:grid;gap:4px;padding:9px;border:1px solid #bfd0c5;border-radius:7px;background:#fbfdfb;min-width:0}
.computer-capture-facts small{font-size:.56rem;letter-spacing:.08em;color:#65726c;font-weight:800}
.computer-capture-facts strong{font:800 .72rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}
.computer-resource-meters{display:grid;gap:10px;margin-top:13px}
.computer-meter-row{display:grid;grid-template-columns:78px minmax(100px,1fr) 48px;gap:10px;align-items:center}
.computer-meter-row>span{font:800 .62rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;color:#5b6662}
.computer-meter-row>strong{font:800 .72rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;text-align:right}
.computer-meter-row.critical>span,.computer-meter-row.critical>strong{color:#a13a2c}
.computer-meter-blocks{display:flex;gap:4px;min-width:0}
.computer-meter-block{display:block;width:13px;height:13px;border:1px solid #9ba49f;border-radius:3px;background:#e2e5e2}
.computer-meter-block.used{background:#376e54;border-color:#2c5c45}
.computer-meter-block.critical{background:#c45743;border-color:#973a2a}

.computer-cycle-card{
  display:grid;
  grid-template-columns:minmax(220px,.8fr) minmax(180px,1.5fr) minmax(250px,1fr);
  gap:14px;
  align-items:center;
  padding:13px 15px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#f7f6f2;
}
.computer-cycle-card.high-load{border-color:#c9a85b;background:#fffaf0}
.computer-cycle-card.unavailable{opacity:.66}
.computer-cycle-copy{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:baseline;min-width:0}
.computer-cycle-copy small{grid-column:1/-1;font:800 .6rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em;color:#69716e}
.computer-cycle-copy strong{font:850 1.18rem/1 ui-monospace,SFMono-Regular,Consolas,monospace}
.computer-cycle-copy span{font-size:.7rem;color:#596164;line-height:1.3}
.computer-cycle-meter{height:16px;border:1px solid #9ca5a1;border-radius:4px;background:#e4e7e4;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.computer-cycle-meter i{display:block;height:100%;width:0;background:#a47a24;transition:width .08s linear}
.computer-cycle-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.computer-cycle-facts span{display:grid;gap:3px;padding:7px 8px;border:1px solid #d1d2cd;border-radius:6px;background:#fbfaf7;min-width:0}
.computer-cycle-facts small{font:800 .52rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#777d7a}
.computer-cycle-facts b{font:800 .67rem/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}

.computer-time-card{display:grid;gap:9px;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:#fbfaf7;min-height:250px;overflow:hidden}
.computer-time-card.unavailable{opacity:.66}
.computer-time-card.accounting-warning{border-color:#b64c38;background:#fff5f1}
.computer-time-header{display:flex;justify-content:space-between;align-items:end;gap:16px}
.computer-time-header>div{display:grid;gap:3px;min-width:0}
.computer-time-header small{font:800 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.11em;color:var(--muted)}
.computer-time-header span{font-size:.67rem;color:#60686a}
.computer-time-header strong{font:800 .62rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.05em;color:#59635f;white-space:nowrap}
.computer-time-stack{display:flex;height:12px;border:1px solid #9ca5a1;border-radius:4px;background:#e4e7e4;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.computer-time-stack i{display:block;height:100%;width:0;transition:width .08s linear;min-width:0}
.computer-time-stack [data-time-segment="software"]{background:#406c59}
.computer-time-stack [data-time-segment="rr"]{background:#a47a24}
.computer-time-stack [data-time-segment="pipa"]{background:#657d8f}
.computer-time-stack [data-time-segment="other-input"]{background:#8a7564}
.computer-time-stack [data-time-segment="timer"]{background:#8c9169}
.computer-time-stack [data-time-segment="output"]{background:#7f667e}
.computer-time-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.computer-time-grid>span{display:grid;grid-template-columns:1fr auto;gap:3px 8px;padding:7px 8px;border:1px solid #d1d2cd;border-radius:6px;background:#f7f6f2;min-width:0}
.computer-time-grid>span.zero{opacity:.48}
.computer-time-grid small{grid-column:1/-1;font:800 .52rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.07em;color:#6d7572;overflow-wrap:anywhere}
.computer-time-grid b{font:850 .72rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#26332e}
.computer-time-grid em{font:700 .58rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;font-style:normal;color:#747b79;text-align:right;white-space:nowrap}
.computer-time-note{margin:0;font-size:.64rem;color:#687073;line-height:1.25}
.software-mix{display:grid;gap:7px;padding-top:9px;border-top:1px solid #d6d6d0}
.software-mix-header{display:flex;justify-content:space-between;align-items:end;gap:14px}
.software-mix-header>div{display:grid;gap:3px;min-width:0}
.software-mix-header small{font:800 .61rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em;color:#55635e}
.software-mix-header span{font-size:.63rem;color:#6b7371}
.software-mix-header strong{font:800 .58rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.05em;color:#66706c;white-space:nowrap}
.software-mix-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
.software-mix-grid>span{display:grid;gap:4px;padding:6px 7px;border:1px solid #d6d7d2;border-radius:6px;background:#f4f4f0;min-width:0;min-height:45px}
.software-mix-grid>span.zero{opacity:.43}
.software-mix-grid small{grid-column:1/-1;font:800 .48rem/1.05 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.055em;color:#68726e;overflow-wrap:anywhere}
.software-mix-grid b{font:850 .69rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#27342f}
.software-mix-grid em{font:700 .53rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;font-style:normal;color:#7a807e;text-align:right;white-space:nowrap}
.software-mix-note{margin:0;font-size:.59rem;line-height:1.25;color:#747b79}

.computer-alarm-sequence{border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}
.computer-alarm-sequence header{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:8px 11px;border-bottom:1px solid var(--line)}
.computer-alarm-sequence header strong{font:800 .76rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em}
.computer-alarm-steps{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:0;overflow-x:auto}
.computer-alarm-step{display:grid;grid-template-columns:auto auto;gap:3px 9px;padding:8px 10px;border:0;border-right:1px solid var(--line);min-width:120px;background:#fbfaf7;color:inherit;font:inherit;text-align:left;appearance:none;cursor:pointer}
.computer-alarm-step:hover{background:#f4f7f8}
.computer-alarm-step:focus-visible{outline:3px solid rgba(29,93,145,.32);outline-offset:-3px;position:relative;z-index:1}
.computer-alarm-step:active{background:#eaf2f7}
.computer-alarm-step:last-child{border-right:0}
.computer-alarm-step small{font:800 .56rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#8a908d;align-self:center}
.computer-alarm-step strong{font:850 1rem/1 ui-monospace,SFMono-Regular,Consolas,monospace}
.computer-alarm-step span{grid-column:1/-1;font-size:.66rem;color:#5d6567}
.computer-alarm-step time{grid-column:1/-1;font:700 .61rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;color:#737b7c}
.computer-alarm-step.past{background:#f0f1ee;color:#59605d}
.computer-alarm-step.current{background:#fff0eb;box-shadow:inset 0 -4px 0 #b64c38}
.computer-alarm-step.current strong{color:#a2392a}
.computer-alarm-step.future{opacity:.72}
.computer-run-basis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#efede7}
.computer-run-basis span{padding:9px 11px;border-right:1px solid var(--line);font-size:.69rem;color:#4f585a}
.computer-run-basis span:last-child{border-right:0}
.computer-run-basis b{display:block;margin-bottom:2px;font:800 .56rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#676e70}
@media(max-width:820px){
  .systems-subtabs{grid-template-columns:repeat(3,minmax(0,1fr));max-width:none}
  .computer-run-grid{grid-template-columns:1fr}
  .computer-card{height:290px}
  .computer-run-meta{grid-template-columns:1fr 1fr}
  .computer-run-meta>div:nth-child(2n){border-right:0}
  .computer-run-meta>div:nth-child(n+3){border-top:1px solid var(--line)}
  .computer-cycle-card{grid-template-columns:1fr}
  .computer-cycle-facts{grid-template-columns:repeat(4,minmax(0,1fr))}
  .computer-time-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .software-mix-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .computer-run-basis{grid-template-columns:1fr}
  .computer-run-basis span{border-right:0;border-bottom:1px solid var(--line)}
  .computer-run-basis span:last-child{border-bottom:0}
}
@media(max-width:520px){
  .systems-subtab{font-size:.61rem;padding:0 6px}
  .computer-run-header{align-items:flex-start;padding:12px}
  .computer-run-state{font-size:.58rem;max-width:48%}
  .computer-run-meta>div{padding:10px}
  .computer-run-meta strong{font-size:.76rem}
  .computer-card{padding:12px;height:310px}
  .computer-card h2{font-size:1rem}
  .computer-capture-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
  .computer-cycle-facts{grid-template-columns:1fr 1fr}
  .computer-time-header{align-items:start;display:grid;gap:5px}
  .computer-time-grid{grid-template-columns:1fr 1fr}
  .computer-time-grid>span{min-height:52px}
  .software-mix-header{align-items:start;display:grid;gap:4px}
  .software-mix-grid{grid-template-columns:1fr 1fr}
  .software-mix-grid>span{min-height:48px}
  .software-mix-note{font-size:.57rem}
  .computer-time-note{font-size:.61rem}
  .computer-cycle-copy{grid-template-columns:1fr}
  .computer-cycle-copy strong,.computer-cycle-copy span{grid-column:1}
  .computer-meter-row{grid-template-columns:70px minmax(82px,1fr) 44px;gap:7px}
  .computer-meter-block{width:11px;height:11px}
  .computer-alarm-sequence header{display:grid;gap:5px}
  .computer-alarm-steps{grid-template-columns:repeat(5,112px)}
}

/* v0.9.42 exact paused AGC source-browser jump */
.code-column-executing.program-counter{color:#145c8a}
.code-column-executing.program-counter i{background:#2e78a6;box-shadow:0 0 0 3px rgba(46,120,166,.10)}
.code-line.program-counter-hit{background:#e4edf4;border-left:4px solid var(--blue);box-shadow:inset 0 1px 0 rgba(31,95,141,.16),inset 0 -1px 0 rgba(31,95,141,.16)}
.code-line.program-counter-hit .code-line-number,.code-line.program-counter-hit .code-memory,.code-line.program-counter-hit .code-word{color:#145c8a;font-weight:850}
@media(max-width:820px){.source-agc-now{grid-template-columns:1fr}.source-agc-now button{width:100%}}

/* v0.9.44 Systems Controls refresh */
.controls-lead{
  border:1px solid var(--line);
  border-radius:10px;
  background:#f7f6f2;
  padding:16px 18px;
  margin-bottom:12px;
}
.controls-lead small{display:block;font-size:.67rem;letter-spacing:.11em;color:var(--muted);font-weight:800}
.controls-lead strong{display:block;margin-top:4px;font-size:1.15rem}
.controls-lead p{margin:.55rem 0 0;color:#495053;font-size:.88rem;max-width:72ch}
.controls-grid-enhanced{align-items:start}
.sketch-card{display:flex;flex-direction:column;gap:10px;min-height:225px;position:relative;overflow:hidden}
.control-sketch-frame{
  min-height:118px;
  border:1px solid #d9d0bf;
  border-radius:8px;
  background:linear-gradient(180deg,#f1ecdf 0%,#e7dfd0 100%);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px;
}
.control-sketch{width:100%;height:96px;display:block}
.control-sketch path,.control-sketch rect,.control-sketch circle,.control-sketch line{
  fill:none;
  stroke:#24343f;
  stroke-width:2.4;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.control-sketch text{
  fill:#24343f;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:16px;
  font-weight:700;
  letter-spacing:.04em;
}
.sketch-card .fdai-mini{margin:0 auto}
.control-card[data-state="active"],
.control-card[data-state="approach"],
.control-card[data-state="manual"],
.control-card[data-state="locked"],
.control-card[data-state="high-gain"],
.control-card[data-state="pitchover"]{
  border-color:#69a97f;
  box-shadow:inset 0 0 0 1px rgba(44,117,72,.18);
}
.control-card[data-state="active"] .control-sketch-frame,
.control-card[data-state="approach"] .control-sketch-frame,
.control-card[data-state="manual"] .control-sketch-frame,
.control-card[data-state="locked"] .control-sketch-frame,
.control-card[data-state="high-gain"] .control-sketch-frame,
.control-card[data-state="pitchover"] .control-sketch-frame{
  background:linear-gradient(180deg,#edf6ef 0%,#deebdf 100%);
  border-color:#a9ccb3;
}
.control-card[data-state="surface"] .control-sketch-frame,
.control-card[data-state="complete"] .control-sketch-frame,
.control-card[data-state="hold"] .control-sketch-frame{
  background:linear-gradient(180deg,#f1ecdf 0%,#e7dfd0 100%);
}
.control-card[data-state="inactive"] .control-sketch-frame,
.control-card[data-state="standby"] .control-sketch-frame,
.control-card[data-state="omni"] .control-sketch-frame,
.control-card[data-state="searching"] .control-sketch-frame,
.control-card[data-state="reference"] .control-sketch-frame,
.control-card[data-state="auto"] .control-sketch-frame{
  background:linear-gradient(180deg,#f1ecdf 0%,#e7dfd0 100%);
}
@media (max-width: 900px){
  .controls-lead strong{font-size:1.02rem}
  .sketch-card{min-height:unset}
}

/* v0.9.45 voice timing + expanded physical controls */
.voice-event{grid-template-columns:104px minmax(0,1fr) 116px}
.voice-event span{text-align:right;font:800 .62rem/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.05em}
.voice-event.active{border-color:#7fa9c7;background:#e7f0f6;box-shadow:inset 4px 0 0 var(--blue)}
.voice-now{min-height:64px;display:flex;align-items:center}
.controls-lead.compact{padding:13px 16px}
.controls-lead.compact p{max-width:90ch}
.control-card[data-state="alert"]{border-color:#c98265;box-shadow:inset 0 0 0 1px rgba(170,72,40,.18)}
.control-card[data-state="alert"] .control-sketch-frame{background:linear-gradient(180deg,#fff1e9 0%,#f3dfd5 100%);border-color:#dfad99}
.control-card[data-state="monitoring"],.control-card[data-state="armed"],.control-card[data-state="off"]{border-color:var(--line)}
.control-card[data-state="active"] strong,.control-card[data-state="approach"] strong,.control-card[data-state="manual"] strong,.control-card[data-state="locked"] strong,.control-card[data-state="high-gain"] strong,.control-card[data-state="pitchover"] strong{color:#276f45}
.control-card[data-state="alert"] strong{color:#a33f28}
.safing-status{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:2px}
.safing-status span{display:flex;justify-content:space-between;gap:8px;padding:7px 8px;border:1px solid #d4d0c7;border-radius:6px;background:#fbfaf7}
.safing-status b{font:800 .58rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;color:#61696b}
.safing-status em{font:800 .65rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;font-style:normal;color:#202629}
.touchdown-card{min-height:245px}.keypad rect{stroke-width:1.7}
@media(max-width:520px){.voice-event{grid-template-columns:88px minmax(0,1fr);gap:6px 9px}.voice-event span{grid-column:2;text-align:left}.safing-status{grid-template-columns:1fr}}

/* v0.9.46 audio-master Voice synchronization */
.voice-sync-status{
  display:flex;
  align-items:flex-start;
  gap:12px;
  margin:0 0 10px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:7px;
  background:#f7f5ef;
}
.voice-sync-status>span{
  flex:0 0 auto;
  padding:4px 7px;
  border:1px solid #aeb8bf;
  border-radius:999px;
  background:#edf3f6;
  font:800 .58rem/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.08em;
  color:#234f68;
}
.voice-sync-status p{margin:0;font-size:.78rem;line-height:1.4;color:#555e61}
.voice-now{
  min-height:64px;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:center;
  gap:6px;
}
.voice-now-line{
  display:grid;
  grid-template-columns:minmax(112px,150px) minmax(0,1fr);
  gap:10px;
  align-items:start;
}
.voice-now-line b{
  font:800 .68rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.055em;
  color:#245b78;
}
.voice-now-line>span{font-style:normal;line-height:1.45}
.voice-now-quiet{font-style:normal;color:#6d7476}
.voice-event.houston{box-shadow:inset 2px 0 0 rgba(61,109,139,.28)}
.voice-event.houston.active{box-shadow:inset 4px 0 0 var(--blue)}
.voice-event.onboard span::after{content:' · ONBOARD';font-size:.52rem;color:#777}
@media(max-width:520px){
  .voice-sync-status{display:block}.voice-sync-status>span{display:inline-block;margin-bottom:7px}
  .voice-now-line{grid-template-columns:1fr;gap:2px}
}

.voice-event.pao{box-shadow:inset 2px 0 0 rgba(127,104,58,.30)}
.voice-event.pao.active{box-shadow:inset 4px 0 0 #846f42;background:#f1ede2}

/* v0.9.48 pinned Voice transcript + Find Transcript */
.voice-list{
  scroll-behavior:auto;
  scroll-padding-top:0;
  overscroll-behavior:contain;
}
.voice-event[aria-current="true"]{
  border-color:#7fa9c7;
  background:#e7f0f6;
  box-shadow:inset 4px 0 0 var(--blue);
}
.voice-event.speaking[aria-current="true"]{
  outline:1px solid rgba(36,91,120,.12);
  outline-offset:-1px;
}
.voice-event.last-spoken[aria-current="true"]{
  background:#edf3f6;
}
.voice-search-drawer{margin-top:16px}
.voice-search-tools{
  margin-top:14px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:end;
}
.voice-search-tools label{
  display:grid;
  gap:5px;
  font-size:.74rem;
  font-weight:750;
  color:var(--muted);
}
.voice-search-tools input{
  width:100%;
  min-width:0;
  border:1px solid var(--line-dark);
  border-radius:6px;
  background:white;
  padding:9px;
}
.voice-search-tools button{
  border:1px solid var(--line-dark);
  border-radius:6px;
  background:#eceae4;
  padding:9px 14px;
  font-weight:750;
}
.voice-search-results{
  display:grid;
  gap:7px;
  margin-top:12px;
}
.voice-search-result span{
  margin-top:3px;
  font-size:.76rem;
  line-height:1.35;
  color:#30383b;
}
@media(max-width:520px){
  .voice-search-tools{grid-template-columns:1fr}
}

/* v0.9.50 grouped Systems controls + graphic cleanup */
.control-group{margin:16px 0 22px}
.control-group:first-of-type{margin-top:14px}
.control-group-heading{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;align-items:start;margin:0 2px 10px;padding-bottom:9px;border-bottom:1px solid #d8d3ca}
.control-group-index{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid #bfc8ce;border-radius:50%;font:800 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#35586f;background:#f4f7f8}
.control-group-heading h3{margin:0;font-size:.78rem;letter-spacing:.11em;color:#39474f}
.control-group-heading p{margin:.28rem 0 0;max-width:82ch;font-size:.79rem;line-height:1.45;color:#60686b}
.control-card-wide{grid-column:1 / -1}
.control-sketch .sketch-label-small{font-size:9px;letter-spacing:.03em}
.control-sketch-mode text:first-child,.control-sketch-mode .mode-unit>text:first-child{font-size:13px}
.control-sketch-quantity path,.control-sketch-quantity line{stroke-width:2}
.control-sketch-antenna circle{fill:#24343f;stroke:none}
.control-sketch-safing line{stroke:#a8afb2;stroke-width:1.2}
.control-sketch-safing circle,.control-sketch-safing rect,.control-sketch-safing path{stroke-width:2.3}
@media(max-width:900px){.control-group{margin-bottom:18px}.control-group-heading{grid-template-columns:30px minmax(0,1fr)}.control-group-index{width:27px;height:27px}}
@media(max-width:520px){.control-group-heading p{font-size:.75rem}.control-card-wide{grid-column:auto}}

/* v0.9.51 primary AGC / CONTROLS tabs, secondary project menu, collapsible controls */
.topbar{justify-content:space-between}
.project-menu-button{
  min-width:76px;min-height:38px;padding:0 10px;border:1px solid var(--line-dark);border-radius:7px;
  background:#f4f2ec;color:#202629;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  cursor:pointer;font:800 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em
}
.project-menu-button:hover{background:#ece9e1}
.project-menu-button:focus-visible,.project-menu-close:focus-visible,.control-group-tool:focus-visible{outline:3px solid rgba(29,93,145,.28);outline-offset:2px}
.project-menu-icon{display:grid;gap:3px;width:17px}
.project-menu-icon i{display:block;height:2px;border-radius:2px;background:currentColor}
.project-menu-label{white-space:nowrap}
body.project-menu-open{overflow:hidden}
.project-menu-scrim{position:fixed;inset:0;z-index:80;background:rgba(15,20,22,.34);display:flex;justify-content:flex-end;align-items:stretch}
.project-menu-scrim[hidden]{display:none!important}
.project-menu{width:min(470px,calc(100vw - 20px));height:100%;overflow:auto;background:#f7f6f2;border-left:1px solid var(--line-dark);box-shadow:-18px 0 40px rgba(0,0,0,.16);color:var(--ink)}
.project-menu-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line);background:rgba(247,246,242,.97);backdrop-filter:blur(8px)}
.project-menu-header div{display:grid;gap:3px}.project-menu-header small{font-size:.61rem;letter-spacing:.12em;color:var(--muted);font-weight:800}.project-menu-header strong{font-size:1.02rem;letter-spacing:.04em}
.project-menu-close{width:38px;height:38px;border:1px solid var(--line-dark);border-radius:50%;background:#efede7;color:#333;font-size:1.35rem;line-height:1;cursor:pointer}
.project-menu-body{padding:10px 14px 22px}
.project-menu-section{border-bottom:1px solid #d8d3ca}
.project-menu-section>summary{list-style:none;position:relative;padding:15px 30px 15px 2px;cursor:pointer;font-weight:850;font-size:.78rem;letter-spacing:.075em;color:#34444c}
.project-menu-section>summary::-webkit-details-marker{display:none}
.project-menu-section>summary::after{content:'';position:absolute;right:8px;top:50%;width:8px;height:8px;border-right:2px solid #617077;border-bottom:2px solid #617077;transform:translateY(-65%) rotate(45deg);transition:transform .15s ease}
.project-menu-section[open]>summary::after{transform:translateY(-35%) rotate(225deg)}
.project-menu-section-body{padding:0 2px 15px;color:#51595b;font-size:.8rem;line-height:1.48}
.project-menu-section-body p{margin:.2rem 0 .75rem}
.project-menu-links{display:grid;gap:7px}
.project-menu-links a{display:block;padding:9px 10px;border:1px solid #d5d1c8;border-radius:7px;background:#fbfaf7;color:#285b79;text-decoration:none;font-weight:750}
.project-menu-links a:hover{background:#eef3f5}
.project-version-badge{padding:9px 10px;border:1px solid #c9d5dc;border-radius:7px;background:#edf3f6;color:#244e67;font:800 .69rem/1.35 ui-monospace,SFMono-Regular,Consolas,monospace}
.project-menu-help{margin:0;padding-left:20px}.project-menu-help li{margin:0 0 8px}
#project-menu .evidence-grid{grid-template-columns:1fr;gap:8px;margin-bottom:10px}
#project-menu .evidence-card{padding:11px 12px;background:#fbfaf7}
#project-menu .evidence-card strong{font-size:.92rem}
#project-menu .evidence-card p{font-size:.76rem}
.project-evidence-details{margin-top:10px;border:1px solid #d4d0c7;border-radius:8px;background:#fbfaf7;padding:10px 12px}
.project-evidence-details>summary{cursor:pointer;font-weight:800;font-size:.77rem}
.project-evidence-details .node-detail-grid{margin-top:10px}

/* Six first-class educational views. */
.tabbar{grid-template-columns:repeat(6,minmax(0,1fr))}

/* Controls now stand alone as a first-class tab. */
.control-group-tools{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px;margin:0 0 12px}
.control-group-tool{min-height:34px;padding:0 10px;border:1px solid var(--line-dark);border-radius:999px;background:#f1efe8;color:#3e484c;font:800 .61rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;cursor:pointer}
.control-group-tool:hover{background:#e9e7e0}.control-group-tool.active{background:#1c4f7c;border-color:#1c4f7c;color:#fff}
details.control-group{margin:12px 0 14px}
details.control-group>.control-group-heading{list-style:none;position:relative;cursor:pointer;padding-right:32px;margin-bottom:0}
details.control-group>.control-group-heading::-webkit-details-marker{display:none}
details.control-group>.control-group-heading::after{content:'';position:absolute;right:8px;top:11px;width:8px;height:8px;border-right:2px solid #617077;border-bottom:2px solid #617077;transform:rotate(45deg);transition:transform .15s ease}
details.control-group[open]>.control-group-heading{margin-bottom:10px}
details.control-group[open]>.control-group-heading::after{transform:rotate(225deg);top:15px}
.controls-grid-enhanced{align-items:stretch}
.controls-grid-enhanced>.control-card{height:100%}
.controls-grid-enhanced>.sketch-card{min-height:236px}
.controls-grid-enhanced>.sketch-card>small{min-height:1.7em}
.controls-grid-enhanced>.sketch-card>strong{min-height:2.45em}
.controls-grid-enhanced>.sketch-card>p{margin-top:auto}
.controls-grid-enhanced>.touchdown-card>p{margin-top:auto}

@media(max-width:820px){
  .tabbar{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tab:nth-child(3n){border-right:0}
  .tab:nth-child(-n+3){border-bottom:1px solid var(--line)}
  .project-menu{width:min(430px,calc(100vw - 12px))}
  .project-menu-label{display:none}.project-menu-button{min-width:44px;width:44px;padding:0}
  .controls-grid-enhanced>.sketch-card{min-height:unset}
  .controls-grid-enhanced>.sketch-card>small,.controls-grid-enhanced>.sketch-card>strong{min-height:0}
}
@media(max-width:520px){
  .control-group-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  #control-follow-playback{grid-column:1/-1}
  .control-group-tool{width:100%;min-height:38px}
  .project-menu-body{padding-left:11px;padding-right:11px}
}


/* v0.9.52 interface polish: compact Controls heading, discreet menu, mobile-fixed transport, minimal footer */
.controls-title{margin:0 0 12px}
.controls-title .code-source-kicker{margin:0}

.project-menu-button{
  min-width:40px;width:40px;min-height:40px;height:40px;padding:0;border:0;border-radius:7px;
  background:transparent;color:#687174;opacity:.62;gap:0;transition:color .15s ease,opacity .15s ease,background .15s ease;
}
.project-menu-button:hover,.project-menu-button[aria-expanded="true"]{background:transparent;color:var(--blue);opacity:1}
.project-menu-label{display:none!important}
.project-menu-icon{width:19px;gap:4px}
.project-menu-icon i{height:2px}
.project-menu-button:focus-visible{outline:2px solid var(--blue);outline-offset:2px;opacity:1;color:var(--blue)}

.site-footer{min-height:36px;padding:9px 24px;display:flex;justify-content:center;align-items:center;border-top:1px solid var(--line);background:#ece9e2;color:#777d7f;font-size:.68rem;letter-spacing:.025em;text-align:center}

@media(max-width:820px){
  /* Playback drives every view, so keep it immediately beneath the sticky project header on mobile. */
  .transport{
    position:fixed;top:58px;left:0;right:0;z-index:19;max-width:none;margin:0;padding:6px 12px;
    grid-template-columns:40px 74px 40px minmax(0,1fr);gap:6px;
    background:rgba(251,250,247,.97);border-bottom:1px solid var(--line);
    box-shadow:0 4px 14px rgba(36,34,29,.09);backdrop-filter:blur(10px);
  }
  .transport-button,.play-button{height:42px}
  .app-shell{padding:66px 12px 12px}
  .tabbar{top:112px}
  body.mobile-dsky-visible .transport{top:106px}
  body.mobile-dsky-visible .tabbar{top:160px}
  .site-footer{display:flex;padding:9px 12px}
}
@media(max-width:520px){
  .transport{padding:6px 8px;grid-template-columns:36px 58px 36px minmax(0,1fr);gap:5px}
  .transport-button,.play-button{height:38px}
  .app-shell{padding:62px 8px 8px}
  .timeline-labels{font-size:.62rem}
  .site-footer{font-size:.62rem}
}

/* v0.9.53 mobile hierarchy correction
   Project identity and replay controls stay above the compact DSKY status strip. */
@media(max-width:820px){
  body.mobile-dsky-visible .topbar{top:0}
  body.mobile-dsky-visible .transport{top:58px}
  .mobile-dsky-strip.visible{top:112px;z-index:18}
  body.mobile-dsky-visible .tabbar{top:auto}
}
@media(max-width:520px){
  .mobile-dsky-strip.visible{top:108px}
}

/* v0.9.54 mobile usability polish
   Preserve the complete compact DSKY readout and keep the primary section
   tabs available while scrolling.  The mobile tabs borrow the tactile visual
   language of the DSKY keypad without pretending to be spacecraft controls. */
@media(max-width:820px){
  .topbar{
    height:58px;
    min-height:58px;
  }
  .transport{
    height:54px;
    min-height:54px;
    top:58px;
  }
  .mobile-dsky-strip.visible{
    top:112px;
    height:52px;
    min-height:52px;
    padding:4px 10px 5px;
    z-index:18;
    align-items:stretch;
    overflow:visible;
  }
  .mobile-dsky-strip span{
    min-width:48px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:2px;
  }
  .mobile-dsky-strip small{
    display:block;
    margin:0;
    font-size:.48rem;
    line-height:1;
    letter-spacing:.09em;
    color:#b9c8bd;
  }
  .mobile-dsky-strip strong{
    display:block;
    font-size:1rem;
    line-height:1.05;
    color:#edf5ef;
  }
  .mobile-dsky-strip b{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:82px;
    font-size:1rem;
    line-height:1.05;
    color:#edf5ef;
  }

  /* Keep the six primary destinations reachable once their row reaches the
     top of the content column.  Sticky retains normal document flow and avoids
     covering the full-size DSKY before the compact strip takes over. */
  .tabbar{
    position:sticky;
    top:112px;
    z-index:17;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    padding:6px;
    border:1px solid #8f928e;
    border-left:0;
    border-right:0;
    background:#d7d4cb;
    box-shadow:0 4px 12px rgba(36,34,29,.10);
  }
  body.mobile-dsky-visible .tabbar{
    top:164px;
  }
  .tab{
    min-height:38px;
    border:2px solid #343936!important;
    border-radius:6px;
    background:#0a0e0f;
    color:#f2f4f1;
    font:800 .68rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
    letter-spacing:.055em;
    box-shadow:inset 0 0 0 1px #969a95,0 1px 1px rgba(0,0,0,.22);
  }
  .tab:hover{
    background:#182021;
  }
  .tab.active{
    background:var(--blue);
    color:#fff;
    border-color:#174a70!important;
    box-shadow:inset 0 0 0 1px #8fb3cc,0 1px 1px rgba(0,0,0,.22);
  }
  .tab:focus-visible{
    outline:3px solid rgba(29,93,145,.32);
    outline-offset:2px;
  }
  .panel-heading,
  .controls-title,
  .source-agc-now,
  .voice-event{
    scroll-margin-top:236px;
  }
}
@media(max-width:520px){
  .transport{
    height:50px;
    min-height:50px;
  }
  .mobile-dsky-strip.visible{
    top:108px;
    height:50px;
    min-height:50px;
    padding:4px 6px;
  }
  .mobile-dsky-strip span{min-width:42px}
  .mobile-dsky-strip small{font-size:.45rem}
  .mobile-dsky-strip strong,.mobile-dsky-strip b{font-size:.96rem}
  .mobile-dsky-strip b{min-width:76px}
  .tabbar{top:108px;padding:5px;gap:4px}
  body.mobile-dsky-visible .tabbar{top:158px}
  .tab{min-height:36px;font-size:.64rem;letter-spacing:.04em;border-radius:5px}
}


/* v0.9.56 mobile DSKY continuity + playback spacing correction
   Keep the compact DSKY flush against the playback bar on every tab.  The
   requested breathing room now lives *inside* the transport beneath its
   buttons rather than as an empty gap between transport and DSKY. */
@media(max-width:820px){
  .transport{
    height:58px;
    min-height:58px;
    padding:6px 12px 10px;
  }
  .mobile-dsky-strip.visible{
    top:116px; /* 58px header + 58px transport; no external gap */
  }
  body.mobile-dsky-visible .tabbar{
    position:fixed;
    top:168px; /* compact DSKY bottom */
    left:0;
    right:0;
    width:auto;
    z-index:20;
    margin:0;
  }
  /* A fixed tabbar leaves normal flow, so restore its occupied height to
     prevent the active panel jumping beneath the navigation. */
  body.mobile-dsky-visible .detail-column{
    padding-top:95px;
  }
  .panel-heading,
  .controls-title,
  .source-agc-now,
  .voice-event{
    scroll-margin-top:270px;
  }
}
@media(max-width:520px){
  .transport{
    height:54px;
    min-height:54px;
    padding:6px 8px 10px;
  }
  .mobile-dsky-strip.visible{
    top:112px; /* 58px header + 54px transport; no external gap */
  }
  body.mobile-dsky-visible .tabbar{
    top:162px;
  }
  body.mobile-dsky-visible .detail-column{
    padding-top:88px;
  }
  .panel-heading,
  .controls-title,
  .source-agc-now,
  .voice-event{
    scroll-margin-top:258px;
  }
}

/* v0.9.57 mobile navigation stabilization
   Mobile now uses one invariant replay chrome stack on every primary tab:
   project header -> transport -> compact DSKY -> primary tabs -> content.
   The full-size DSKY remains the desktop instrument; on phones/tablets the
   compact DSKY is the persistent computer status display. */
@media(max-width:820px){
  /* Remove the full cockpit DSKY from the narrow flow.  Keeping both the full
     instrument and a conditional compact strip made the navigation geometry
     change from tab to tab and when scrolling in opposite directions. */
  .dsky-column{display:none!important}

  .topbar{height:58px;min-height:58px;position:sticky;top:0;z-index:40}
  .transport{
    position:fixed!important;
    top:58px!important;
    left:0;right:0;
    height:58px;min-height:58px;
    padding:6px 12px 10px;
    z-index:39;
  }
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    display:flex!important;
    position:fixed!important;
    top:116px!important;
    left:0;right:0;
    height:52px;min-height:52px;
    padding:4px 10px 5px;
    z-index:38;
    background:#090d0c;
    color:#e9f1e9;
    align-items:stretch;
    justify-content:space-around;
    border-bottom:1px solid #4b5550;
    box-shadow:0 4px 10px rgba(0,0,0,.14);
  }
  .tabbar,
  body.mobile-dsky-visible .tabbar{
    position:fixed!important;
    top:168px!important;
    left:0;right:0;
    width:auto;
    margin:0;
    z-index:37;
  }

  /* Header itself remains in normal flow (58px).  Reserve the rest of the
     fixed chrome stack so every active panel begins below the tab buttons. */
  .app-shell{
    display:block;
    padding:206px 12px 12px!important;
  }
  .detail-column,
  body.mobile-dsky-visible .detail-column{
    padding-top:0!important;
    min-width:0;
  }

  /* Voice is intentionally an inner transcript scroller on mobile.  This
     gives visitors a visible, controllable vertical rail instead of relying
     on the browser's often-hidden page scrollbar. */
  #panel-voice{min-width:0}
  .voice-list{
    max-height:calc(100vh - 282px)!important;
    max-height:calc(100dvh - 282px)!important;
    min-height:250px;
    overflow-y:scroll!important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-gutter:stable;
    scrollbar-width:auto;
    scrollbar-color:#8d9697 #ebe9e2;
    padding-right:3px;
  }
  .voice-list::-webkit-scrollbar{width:10px}
  .voice-list::-webkit-scrollbar-track{background:#ebe9e2;border-left:1px solid #d0ccc3}
  .voice-list::-webkit-scrollbar-thumb{background:#8d9697;border:2px solid #ebe9e2;border-radius:8px}
  .voice-list::-webkit-scrollbar-thumb:hover{background:#667174}

  .panel-heading,
  .controls-title,
  .source-agc-now,
  .voice-event,
  .control-group{
    scroll-margin-top:262px!important;
  }
}
@media(max-width:520px){
  .transport{
    height:54px;min-height:54px;
    padding:6px 8px 10px;
  }
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    top:112px!important;
    height:50px;min-height:50px;
    padding:4px 6px;
  }
  .tabbar,
  body.mobile-dsky-visible .tabbar{
    top:162px!important;
  }
  .app-shell{
    padding:198px 8px 8px!important;
  }
  .voice-list{
    max-height:calc(100vh - 270px)!important;
    max-height:calc(100dvh - 270px)!important;
    min-height:230px;
  }
  .panel-heading,
  .controls-title,
  .source-agc-now,
  .voice-event,
  .control-group{
    scroll-margin-top:250px!important;
  }
}

/* v0.9.58 Surface / AGC / LPD refinement */
/* Keep the AGC Program Counter geometry invariant as source names/comments change. */
.computer-source-window{
  height:76px;
  min-height:76px;
  max-height:76px;
  justify-content:flex-start;
  padding-top:4px;
  box-sizing:border-box;
}
.computer-source-instruction{
  min-height:2.3em;
  max-height:2.3em;
  -webkit-line-clamp:2;
}
.computer-source-window.has-comment .computer-source-instruction{
  -webkit-line-clamp:2;
}
.computer-source-comment{
  min-height:2.6em;
  max-height:2.6em;
  -webkit-line-clamp:2;
}
.computer-source-comment[hidden]{
  display:-webkit-box;
  visibility:hidden;
}
.computer-source-ref{
  min-height:2.9em;
  max-height:2.9em;
  overflow:hidden;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.computer-capture-facts{min-height:61px}

/* The new Commander-window and cross-pointer sketches share the existing mission-era line treatment. */
.control-sketch-window path,
.control-sketch-crosspointer path,
.control-sketch-crosspointer rect,
.control-sketch-crosspointer circle{
  vector-effect:non-scaling-stroke;
}


/* v0.9.59 simplified project menu, intuitive Controls state colour, DSKY identification/tooltips */
.dsky-caption{padding:7px 4px 0;text-align:center;font:850 .61rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em;color:#596166}
.project-menu-version-line{display:flex;align-items:center;padding:14px 2px 1px;border-top:1px solid rgba(118,128,132,.18);color:#8a9092;font:500 .64rem/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.03em}
.project-menu-reference-links{margin-top:12px;padding-top:12px;border-top:1px solid #d8d3ca}
.dsky-tooltip{position:fixed;z-index:120;max-width:min(300px,calc(100vw - 24px));padding:8px 10px;border:1px solid #68716d;border-radius:6px;background:#0c1110;color:#f4f5f1;box-shadow:0 8px 24px rgba(0,0,0,.28);font:700 .72rem/1.35 ui-sans-serif,system-ui,sans-serif;pointer-events:none}
[data-dsky-tip]{cursor:help}
[data-dsky-tip]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:820px){.dsky-caption{display:none}}

/* v0.9.60 rights-clean source list */
.project-menu-source-list a{display:grid;gap:2px}
.project-menu-source-list a strong{font-size:.79rem;color:#285b79}
.project-menu-source-list a span{font-size:.72rem;line-height:1.36;color:#5a6062;font-weight:500}

/* v0.9.61 mobile-first AGC refinement */
.computer-run-grid{align-items:stretch}
.computer-card{height:auto;min-height:0;overflow:visible}
.computer-execution-card .computer-source-window{
  height:2.65em;
  min-height:2.65em;
  max-height:2.65em;
  margin:7px 0 4px;
  padding-top:0;
  justify-content:flex-start;
}
.computer-execution-card .computer-source-instruction{
  min-height:2.3em;
  max-height:2.3em;
  -webkit-line-clamp:2;
}
#computer-source-comment{display:none!important}
.computer-execution-card .computer-source-ref{
  min-height:2.75em;
  max-height:2.75em;
  margin:0;
  overflow:hidden;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.computer-capture-facts{margin-top:8px;min-height:0}
.computer-card-note{display:none!important}
.computer-view-code{
  width:100%;
  min-height:36px;
  margin-top:10px;
  padding:9px 0 0;
  border:0;
  border-top:1px solid var(--line);
  background:transparent;
  color:var(--blue);
  font:850 .68rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.07em;
  text-align:left;
  cursor:pointer;
}
.computer-view-code:hover,.computer-view-code:focus-visible{text-decoration:underline}
.computer-view-code:disabled{opacity:.35;cursor:default;text-decoration:none}
.computer-time-card{min-height:0}
.software-mix-header{display:block}
.software-mix-header>div{display:block}
.software-mix-note,.computer-time-note{display:none!important}
.computer-run-basis{display:none!important}

@media(max-width:820px){
  .computer-card{height:auto!important;min-height:0!important;padding:11px 12px}
  .computer-run{gap:10px}
  .computer-run-grid{gap:10px}
  .computer-resource-meters{margin-top:10px}
}

@media(max-width:520px){
  .computer-alarm-steps{
    display:grid;
    grid-template-columns:1fr;
    overflow:visible;
  }
  .computer-alarm-step{
    grid-template-columns:24px 46px minmax(72px,1fr) auto;
    align-items:center;
    gap:6px;
    min-width:0;
    padding:8px 9px;
    border-right:0;
    border-bottom:1px solid var(--line);
  }
  .computer-alarm-step:last-child{border-bottom:0}
  .computer-alarm-step small{grid-column:1}
  .computer-alarm-step strong{grid-column:2;font-size:.92rem}
  .computer-alarm-step span{grid-column:3;font-size:.62rem;white-space:nowrap}
  .computer-alarm-step time{grid-column:4;font-size:.56rem;white-space:nowrap;text-align:right}
  .computer-alarm-step.current{box-shadow:inset 4px 0 0 #b64c38}
}

/* v0.9.62 alarm inspection: alarm rows are navigation controls. */
.computer-run{scroll-margin-top:24px}
@media(max-width:820px){.computer-run{scroll-margin-top:262px}}
@media(max-width:520px){.computer-run{scroll-margin-top:250px}}


/* v0.9.63 mobile-first Controls cards */
@media(max-width:700px){
  .controls-grid-enhanced{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .controls-grid-enhanced>.analog-card{grid-row:auto}
  .controls-grid-enhanced>.control-card{position:relative;padding:10px 10px 11px;min-height:0;border-radius:12px;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
  .controls-grid-enhanced>.control-card .control-sketch-frame{min-height:84px;padding:8px}
  .controls-grid-enhanced>.control-card .control-sketch{height:60px}
  .controls-grid-enhanced>.control-card .fdai-mini{width:92px;height:92px;border-width:3px}
  .controls-grid-enhanced>.control-card small{margin-top:8px;font-size:.58rem;line-height:1.18;min-height:2.32em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .controls-grid-enhanced>.control-card strong{margin-top:6px;font-size:.82rem;line-height:1.14;min-height:2.32em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .controls-grid-enhanced>.control-card p{display:none}
  .controls-grid-enhanced>.control-card:last-child:nth-child(odd){grid-column:1 / -1}
  .controls-grid-enhanced>.touchdown-card{grid-column:1 / -1}
  .controls-grid-enhanced>.control-card.is-expanded{grid-column:1 / -1;padding:12px 12px 13px}
  .controls-grid-enhanced>.control-card.is-expanded .control-sketch-frame{min-height:104px;padding:10px}
  .controls-grid-enhanced>.control-card.is-expanded .control-sketch{height:76px}
  .controls-grid-enhanced>.control-card.is-expanded .fdai-mini{width:114px;height:114px}
  .controls-grid-enhanced>.control-card.is-expanded small,.controls-grid-enhanced>.control-card.is-expanded strong{min-height:0;display:block;overflow:visible}
  .controls-grid-enhanced>.control-card.is-expanded p{display:block;margin-top:.55rem;font-size:.82rem;line-height:1.42}
  .controls-grid-enhanced>.control-card.is-expanded strong{font-size:.96rem;line-height:1.2}
  .controls-grid-enhanced>.control-card.is-expanded::after{content:"TAP TO COLLAPSE";display:block;margin-top:.55rem;font:800 .56rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#6d7579}
}
\n\n/* v0.9.64 Code tab hierarchy: live AGC source first, event code on demand */\n.source-agc-section{margin:0 0 14px}\n.source-agc-section>.code-source-kicker{margin-bottom:6px}\n.source-agc-section .source-agc-now{margin-top:0}\n.code-event-drawer{margin:0 0 16px;border:1px solid var(--line);border-radius:10px;background:#f7f6f2;overflow:hidden}\n.code-event-summary{position:relative;display:block;cursor:pointer;padding:14px 46px 14px 14px;background:#fbfaf7;list-style:none}\n.code-event-summary::-webkit-details-marker{display:none}\n.code-event-summary::after{content:'⌄';position:absolute;right:16px;top:50%;transform:translateY(-50%);font:800 1rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#657176}\n.code-event-drawer[open]>.code-event-summary::after{content:'⌃'}\n.code-event-summary .code-source-kicker{margin-bottom:6px}\n.code-event-summary h1{margin:0;max-width:1050px;font-size:clamp(1.35rem,2.35vw,2.15rem);line-height:1.08;letter-spacing:-.015em}\n.code-event-drawer>.code-card{border:0;border-top:1px solid var(--line);border-radius:0}\n.source-browse-drawer{margin-top:0}\n.source-browse-drawer summary{text-transform:none}\n@media(max-width:820px){\n  .source-agc-section{margin-bottom:10px}\n  .source-agc-section .source-agc-now{grid-template-columns:minmax(0,1fr) auto;padding:9px 10px;gap:8px}\n  .source-agc-section .source-agc-now-copy{gap:2px}\n  .source-agc-section .source-agc-now strong{font-size:.72rem}\n  .source-agc-section .source-agc-now code{font-size:.68rem}\n  .source-agc-section #source-agc-note{display:none}\n  .source-agc-section .source-agc-now button{width:auto;min-width:104px;padding:8px 9px;font-size:.6rem}\n  .code-event-summary{padding:12px 40px 12px 12px}\n  .code-event-summary h1{font-size:1.08rem;line-height:1.13}\n  .code-event-summary .code-source-kicker{font-size:.56rem}\n  .code-event-drawer .code-viewer{height:410px}\n  .source-agc-section,.code-event-summary,.source-browse-drawer{scroll-margin-top:262px}\n}\n@media(max-width:520px){\n  .source-agc-section .source-agc-now{grid-template-columns:minmax(0,1fr) auto;padding:8px 9px}\n  .source-agc-section .source-agc-now button{min-width:92px;padding:7px 8px;font-size:.56rem}\n  .code-event-summary h1{font-size:1rem}\n  .code-event-drawer .code-viewer{height:390px}\n  .source-agc-section,.code-event-summary,.source-browse-drawer{scroll-margin-top:250px}\n}\n

/* v0.9.65 Code-tab inspection polish */
.source-agc-section{margin-bottom:18px}
.code-event-drawer{
  margin:0 0 16px;
  border:0;
  border-top:1px solid var(--line);
  border-radius:0;
  background:transparent;
  overflow:visible;
  padding-top:12px;
}
.code-event-summary{
  position:static;
  display:list-item;
  cursor:pointer;
  padding:0;
  background:transparent;
  list-style:disclosure-closed;
  font-weight:750;
  color:var(--text);
}
.code-event-summary::-webkit-details-marker{display:inline}
.code-event-summary::after{content:none!important}
.code-event-drawer[open]>.code-event-summary{list-style:disclosure-open}
.code-event-summary span{font:inherit;letter-spacing:0;color:inherit}
.code-event-content{margin-top:12px}
.code-event-content>h1{margin:0 0 12px;max-width:1050px;font-size:clamp(1.35rem,2.35vw,2.15rem);line-height:1.08;letter-spacing:-.015em}
.code-event-drawer .code-card{border:1px solid var(--line);border-radius:10px;overflow:hidden}
@media(max-width:820px){
  .source-agc-section{margin-bottom:16px}
  .code-event-drawer{padding-top:11px;margin-bottom:16px}
  .code-event-content{margin-top:10px}
  .code-event-content>h1{font-size:1.08rem;line-height:1.13;margin-bottom:10px}
  .code-event-summary{font-size:.84rem}
}
@media(max-width:520px){
  .source-agc-section{margin-bottom:15px}
  .code-event-content>h1{font-size:1rem}
  .code-event-summary{font-size:.8rem}
}


/* v0.9.66 Code disclosure hierarchy + direct Program Counter inspection */
#panel-code .code-event-drawer,
#panel-code .source-browse-drawer{
  margin:0;
  border:0;
  border-top:1px solid var(--line);
  border-radius:0;
  background:transparent;
  overflow:visible;
  padding:0;
}
#panel-code .code-event-drawer{margin-bottom:0}
#panel-code .source-browse-drawer{margin-top:0}
#panel-code .code-drawer-summary{
  display:list-item;
  cursor:pointer;
  padding:12px 0;
  margin:0;
  list-style-position:inside;
  font:800 .92rem/1.25 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--text);
  background:transparent;
}
#panel-code .code-event-summary span{
  font:inherit;
  letter-spacing:0;
  color:inherit;
}
#panel-code .code-event-content{margin:0;padding:0 0 16px}
#panel-code .code-event-content>h1{
  margin:0 0 10px;
  max-width:1050px;
  font-size:1.02rem;
  line-height:1.22;
  letter-spacing:0;
  font-weight:800;
}
#panel-code .source-browse-drawer .source-tools{margin-top:2px;padding-bottom:10px}
@media(max-width:820px){
  #panel-code .code-drawer-summary{padding:11px 0;font-size:.82rem}
  #panel-code .code-event-content>h1{font-size:.9rem;line-height:1.2;margin-bottom:9px}
  #panel-code .source-agc-section{margin-bottom:16px}
}
@media(max-width:520px){
  #panel-code .code-drawer-summary{font-size:.78rem}
  #panel-code .code-event-content>h1{font-size:.86rem}
}


/* v0.9.67 Code heading hierarchy + compact mobile source search */
#panel-code .code-event-content>h1{
  font-size:.92rem;
  line-height:1.25;
  font-weight:750;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.01em;
}
#panel-code .code-drawer-summary{
  text-transform:uppercase;
}
#panel-code #source-agc-jump{
  white-space:nowrap;
}
@media(max-width:820px){
  #panel-code .code-event-content>h1{font-size:.82rem;line-height:1.24}
}
@media(max-width:520px){
  #panel-code .source-browse-drawer .source-tools{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px;
    align-items:end;
  }
  #panel-code .source-browse-drawer .source-tools label:first-child{grid-column:1 / -1}
  #panel-code .source-browse-drawer .source-tools label:nth-child(2){grid-column:1}
  #panel-code #source-search-button{
    grid-column:2;
    width:auto;
    min-width:82px;
    min-height:42px;
    padding:9px 12px;
    align-self:end;
  }
  #panel-code .code-event-content>h1{font-size:.78rem}
}


/* v0.9.68 Program Counter card hierarchy polish */
.source-agc-section>.code-source-kicker{font-size:.57rem;letter-spacing:.12em}
.source-agc-now #source-agc-note{display:none!important}
.source-agc-now #source-agc-instruction{font-size:.78rem;line-height:1.32;color:#171c1f}
.source-agc-now #source-agc-location{font-size:.68rem;line-height:1.3;color:#596165}
@media(max-width:820px){
  .source-agc-section>.code-source-kicker{font-size:.54rem}
  .source-agc-now #source-agc-instruction{font-size:.73rem}
  .source-agc-now #source-agc-location{font-size:.64rem}
}


/* v0.9.70 specialised AGC layout: live machine state first, Executive + alarms prominent, source bridge last */
#panel-agc .computer-run{gap:12px}
#panel-agc .computer-executive-card{height:auto;min-height:0;overflow:visible}
#panel-agc .computer-execution-card{height:auto;min-height:0;overflow:visible}
#panel-agc .computer-alarm-sequence{margin:0}
#panel-agc .computer-time-card{margin:0}
@media(max-width:820px){
  #panel-agc .computer-run{gap:10px}
}


/* v0.9.71 Program Counter final visual alignment
   Match AGC COMPUTER TIME's card treatment, reduce the Program Counter's
   visual scale to the Code-tab source bridge, and keep the three source facts
   as an equal one-row group. Behaviour is unchanged. */
#panel-agc .computer-execution-card{
  padding:11px 13px;
  border-radius:9px;
  background:#fbfaf7;
}
#panel-agc .computer-execution-card>small{
  display:block;
  font:800 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.11em;
  color:var(--muted);
}
#panel-agc .computer-execution-card .computer-source-window{
  height:2.45em;
  min-height:2.45em;
  max-height:2.45em;
  margin:6px 0 3px;
}
#panel-agc .computer-execution-card .computer-source-instruction{
  min-height:0;
  max-height:2.64em;
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#171c1f;
  -webkit-line-clamp:2;
}
#panel-agc .computer-execution-card .computer-source-ref{
  min-height:0;
  max-height:2.6em;
  font:700 .68rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#596165;
  -webkit-line-clamp:2;
}
#panel-agc .computer-execution-card .computer-capture-facts{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
  margin-top:7px;
}
#panel-agc .computer-execution-card .computer-capture-facts span{
  gap:3px;
  padding:7px 8px;
}
#panel-agc .computer-execution-card .computer-capture-facts small{
  font-size:.52rem;
  letter-spacing:.08em;
}
#panel-agc .computer-execution-card .computer-capture-facts strong{
  font-size:.67rem;
  line-height:1.15;
}
#panel-agc .computer-execution-card .computer-view-code{
  min-height:30px;
  margin-top:8px;
  padding-top:8px;
}
@media(max-width:820px){
  #panel-agc .computer-execution-card{padding:11px 12px}
}

/* v0.9.72 Controls visual harmonisation
   Keep the cockpit drawings and live-state semantics, but bring Controls back
   into the same restrained technical language as CODE and AGC. */
#panel-controls .control-group-tools{
  gap:6px;
  margin-bottom:14px;
}
#panel-controls .control-group-tool{
  min-height:32px;
  padding:0 10px;
  border:1px solid var(--line-dark);
  border-radius:6px;
  background:#e7e5df;
  color:#42494c;
  font:850 .59rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.055em;
  box-shadow:none;
}
#panel-controls .control-group-tool:hover{background:#dedbd4}
#panel-controls .control-group-tool.active{
  background:#1f5f8d;
  border-color:#184d72;
  color:#fff;
}

#panel-controls .control-group-heading{
  grid-template-columns:30px minmax(0,1fr);
  gap:10px;
  margin-left:0;
  margin-right:0;
  padding-bottom:10px;
  border-bottom-color:var(--line);
}
#panel-controls .control-group-index{
  width:28px;
  height:22px;
  margin-top:1px;
  border:1px solid #aeb8bd;
  border-radius:4px;
  background:#f7f8f6;
  color:#35586f;
  font:850 .58rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.04em;
}
#panel-controls .control-group-heading h3{
  font-size:.76rem;
  letter-spacing:.105em;
  color:#39474f;
}
#panel-controls .control-group-heading p{
  margin-top:.24rem;
  color:#596165;
  font-size:.78rem;
}

#panel-controls .controls-grid-enhanced{
  gap:10px;
}
#panel-controls .controls-grid-enhanced>.control-card{
  border-radius:8px;
  background:#fbfaf7;
  padding:12px;
  box-shadow:none;
}
#panel-controls .control-sketch-frame{
  min-height:112px;
  border-color:var(--line);
  border-radius:6px;
  background:#f3f2ee;
  padding:9px;
}
#panel-controls .control-card[data-state="surface"] .control-sketch-frame,
#panel-controls .control-card[data-state="complete"] .control-sketch-frame,
#panel-controls .control-card[data-state="hold"] .control-sketch-frame,
#panel-controls .control-card[data-state="inactive"] .control-sketch-frame,
#panel-controls .control-card[data-state="standby"] .control-sketch-frame,
#panel-controls .control-card[data-state="omni"] .control-sketch-frame,
#panel-controls .control-card[data-state="searching"] .control-sketch-frame,
#panel-controls .control-card[data-state="reference"] .control-sketch-frame,
#panel-controls .control-card[data-state="auto"] .control-sketch-frame{
  background:#f3f2ee;
  border-color:var(--line);
}
#panel-controls .control-card[data-state="active"],
#panel-controls .control-card[data-state="approach"],
#panel-controls .control-card[data-state="manual"],
#panel-controls .control-card[data-state="locked"],
#panel-controls .control-card[data-state="high-gain"],
#panel-controls .control-card[data-state="pitchover"]{
  border-color:#6fa783;
  box-shadow:inset 3px 0 0 rgba(44,117,72,.34);
}
#panel-controls .control-card[data-state="active"] .control-sketch-frame,
#panel-controls .control-card[data-state="approach"] .control-sketch-frame,
#panel-controls .control-card[data-state="manual"] .control-sketch-frame,
#panel-controls .control-card[data-state="locked"] .control-sketch-frame,
#panel-controls .control-card[data-state="high-gain"] .control-sketch-frame,
#panel-controls .control-card[data-state="pitchover"] .control-sketch-frame{
  background:#eef5ef;
  border-color:#a9cbb3;
}
#panel-controls .control-card[data-state="alert"] .control-sketch-frame{
  background:#fbf0ea;
  border-color:#d9a995;
}
#panel-controls .controls-grid-enhanced>.control-card>small{
  margin-top:8px;
  font:850 .61rem/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.09em;
  color:#5e676b;
}
#panel-controls .controls-grid-enhanced>.control-card>strong{
  margin-top:5px;
  font:850 .84rem/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.015em;
  color:#171c1f;
}
#panel-controls .controls-grid-enhanced>.control-card>p{
  color:#51595d;
  font-size:.81rem;
  line-height:1.43;
}
#panel-controls .control-card[data-state="active"]>strong,
#panel-controls .control-card[data-state="approach"]>strong,
#panel-controls .control-card[data-state="manual"]>strong,
#panel-controls .control-card[data-state="locked"]>strong,
#panel-controls .control-card[data-state="high-gain"]>strong,
#panel-controls .control-card[data-state="pitchover"]>strong{color:#276f45}
#panel-controls .control-card[data-state="alert"]>strong{color:#a33f28}

@media(max-width:700px){
  #panel-controls .controls-grid-enhanced>.control-card{
    border-radius:8px;
    padding:9px 9px 10px;
  }
  #panel-controls .controls-grid-enhanced>.control-card .control-sketch-frame{
    min-height:82px;
    padding:7px;
  }
  #panel-controls .controls-grid-enhanced>.control-card small{
    margin-top:7px;
    font-size:.55rem;
  }
  #panel-controls .controls-grid-enhanced>.control-card strong{
    margin-top:5px;
    font-size:.76rem;
  }
  #panel-controls .controls-grid-enhanced>.control-card.is-expanded{
    padding:11px 11px 12px;
  }
}
@media(max-width:520px){
  #panel-controls .control-group-tool{min-height:36px;border-radius:6px}
  #panel-controls .control-group-heading{grid-template-columns:28px minmax(0,1fr)}
  #panel-controls .control-group-index{width:26px;height:21px}
}



/* v0.9.73 Shared technical accordion language
   CODE now uses the same full-row disclosure treatment as CONTROLS; Controls
   loses the decorative 01–05 identifiers; and the AGC Program Counter readout
   exactly follows the compact Code-tab instruction/source typography. */
.technical-accordion-heading,
#panel-controls .control-group-heading{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:0;
  align-items:start;
  position:relative;
  list-style:none;
  cursor:pointer;
  margin:0;
  padding:10px 34px 10px 0;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.technical-accordion-heading::-webkit-details-marker,
#panel-controls .control-group-heading::-webkit-details-marker{display:none}
.technical-accordion-heading::after,
#panel-controls .control-group-heading::after{
  content:'';
  position:absolute;
  right:8px;
  top:14px;
  width:8px;
  height:8px;
  border-right:2px solid #617077;
  border-bottom:2px solid #617077;
  transform:rotate(45deg);
  transition:transform .15s ease;
}
details[open]>.technical-accordion-heading::after,
#panel-controls details.control-group[open]>.control-group-heading::after{
  transform:rotate(225deg);
  top:18px;
}
.technical-accordion-heading h3,
#panel-controls .control-group-heading h3{
  margin:0;
  font-size:.76rem;
  line-height:1.22;
  font-weight:800;
  letter-spacing:.105em;
  color:#39474f;
}
.technical-accordion-heading p,
#panel-controls .control-group-heading p{
  margin:.24rem 0 0;
  max-width:82ch;
  color:#596165;
  font-size:.78rem;
  line-height:1.45;
}

/* Controls: the section names are sufficient; remove the visual number gutter. */
#panel-controls .control-group-heading{
  grid-template-columns:minmax(0,1fr);
  gap:0;
  padding-right:34px;
}
#panel-controls details.control-group[open]>.control-group-heading{margin-bottom:10px}
#panel-controls .control-group-index{display:none!important}

/* Code: three consistent technical accordions. */
#panel-code .source-agc-section,
#panel-code .code-event-drawer,
#panel-code .source-browse-drawer{
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  overflow:visible;
}
#panel-code .source-agc-section{margin-bottom:0}
#panel-code .code-drawer-summary{
  display:grid;
  list-style:none;
  padding:10px 34px 10px 0;
  margin:0;
  font:inherit;
  text-transform:none;
  color:inherit;
  background:transparent;
}
#panel-code .code-drawer-summary::-webkit-details-marker{display:none}
#panel-code .code-drawer-summary::after{content:''}
#panel-code .technical-accordion-content{padding:10px 0 12px}
#panel-code .source-agc-now{margin:0}
#panel-code .code-event-content{margin:0;padding:10px 0 12px}
#panel-code .source-browse-drawer .source-tools{margin-top:10px;padding-bottom:10px}
#panel-code .code-event-content>h1{margin-bottom:10px}

/* Program-counter content stays compact when the new disclosure is open. */
#panel-code .source-agc-now-copy{gap:3px}
#panel-code .source-agc-now #source-agc-instruction{
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#171c1f;
}
#panel-code .source-agc-now #source-agc-location{
  font:700 .68rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#596165;
}

/* AGC Program Counter: exact same instruction/reference rhythm as Code. */
#panel-agc .computer-execution-card .computer-source-window{
  height:auto;
  min-height:0;
  max-height:none;
  margin:7px 0 0;
  display:grid;
  justify-content:start;
  gap:3px;
  overflow:hidden;
}
#panel-agc .computer-execution-card .computer-source-instruction{
  min-height:0;
  max-height:none;
  display:block;
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#171c1f;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  -webkit-line-clamp:unset;
}
#panel-agc .computer-execution-card .computer-source-ref{
  min-height:0;
  max-height:none;
  display:block;
  margin:0;
  font:700 .68rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#596165;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  -webkit-line-clamp:unset;
}
#panel-agc .computer-execution-card .computer-capture-facts{margin-top:8px}

@media(max-width:820px){
  .technical-accordion-heading,
  #panel-controls .control-group-heading,
  #panel-code .code-drawer-summary{padding:9px 32px 9px 0}
  .technical-accordion-heading::after,
  #panel-controls .control-group-heading::after{top:13px}
  details[open]>.technical-accordion-heading::after,
  #panel-controls details.control-group[open]>.control-group-heading::after{top:17px}
  .technical-accordion-heading h3,
  #panel-controls .control-group-heading h3{font-size:.72rem}
  .technical-accordion-heading p,
  #panel-controls .control-group-heading p{font-size:.74rem}
  #panel-code .technical-accordion-content{padding:9px 0 11px}
  #panel-code .source-agc-now{grid-template-columns:minmax(0,1fr) auto;padding:9px 10px;gap:8px}
  #panel-code .source-agc-now #source-agc-instruction{font-size:.73rem}
  #panel-code .source-agc-now #source-agc-location{font-size:.64rem}
}
@media(max-width:520px){
  .technical-accordion-heading p,
  #panel-controls .control-group-heading p{font-size:.71rem}
  #panel-code .source-agc-now{padding:8px 9px}
}

/* v0.9.74 Disclosure-arrow repair + shared primary action buttons
   Restore the CURRENT LANDING EVENT CODE chevron suppressed by the older
   v0.9.65 rule, and make Controls + Browse Source actions use the same
   compact blue technical-button language as the Code Program Counter action. */
#panel-code .code-event-summary::after{
  content:''!important;
}

#panel-controls .control-group-tool,
#panel-code #source-search-button{
  min-height:34px;
  padding:9px 12px;
  border:1px solid #184d72;
  border-radius:6px;
  background:#1f5f8d;
  color:#fff;
  font:850 .67rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.035em;
  box-shadow:none;
  cursor:pointer;
}
#panel-controls .control-group-tool:hover,
#panel-code #source-search-button:hover{
  background:#184d72;
  border-color:#143f5e;
}
#panel-controls .control-group-tool.active{
  background:#1f5f8d;
  border-color:#184d72;
  color:#fff;
}
#panel-controls .control-group-tool:focus-visible,
#panel-code #source-search-button:focus-visible{
  outline:3px solid rgba(29,93,145,.28);
  outline-offset:2px;
}

@media(max-width:520px){
  #panel-controls .control-group-tool,
  #panel-code #source-search-button{
    min-height:36px;
    padding:9px 11px;
    font-size:.61rem;
  }
}

/* v0.9.75 Expanded accordion cleanup
   Collapsed CODE and CONTROLS disclosures keep their thin section divider.
   When expanded, that divider becomes transparent so the content's own
   card/table borders and whitespace provide the hierarchy without a busy
   extra rule. Keeping the 1px border transparent preserves layout height. */
#panel-code details[open] > .technical-accordion-heading,
#panel-controls details.control-group[open] > .control-group-heading{
  border-bottom-color:transparent;
}

/* v0.9.76 AGC focus accordions
   Split the live AGC view into four independently collapsible sections using
   the same technical disclosure language as CODE and CONTROLS. All sections
   remain open by default; their state is remembered for the browser session. */
#panel-agc .computer-run{
  gap:0;
}
#panel-agc .agc-technical-accordion{
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  overflow:visible;
}
#panel-agc .agc-accordion-content{
  padding:10px 0 12px;
}
#panel-agc .agc-executive-content{
  display:grid;
  gap:12px;
}
#panel-agc .agc-state-content .computer-run-meta,
#panel-agc .agc-time-content .computer-time-card,
#panel-agc .agc-program-counter-content .computer-execution-card{
  margin:0;
}
#panel-agc details.agc-technical-accordion[open] > .technical-accordion-heading{
  border-bottom-color:transparent;
}
/* The accordion title now carries these section labels; avoid repeating them
   inside the expanded card while retaining all live values and sublabels. */
#panel-agc #agc-time-drawer .computer-time-header > div > small,
#panel-agc #agc-program-counter-drawer #computer-execution-label{
  display:none;
}
#panel-agc #agc-program-counter-drawer .computer-source-window{
  margin-top:0;
}
#panel-agc .agc-technical-accordion{scroll-margin-top:24px}

@media(max-width:820px){
  #panel-agc .agc-accordion-content{padding:9px 0 11px}
  #panel-agc .agc-executive-content{gap:10px}
  #panel-agc .agc-technical-accordion{scroll-margin-top:262px}
}
@media(max-width:520px){
  #panel-agc .agc-technical-accordion{scroll-margin-top:250px}
}


/* v0.9.77 final cross-tab control polish
   Remove redundant Controls title text via HTML; keep its toolbar as the first
   control-row. Surface 2D/3D now uses the same compact technical button family
   as CODE/CONTROLS, with a neutral inactive state and blue active state, and
   aligns the mode group to the right. */
#panel-controls .control-group-tools{
  margin-top:0;
}
#panel-surface .surface-mode-tabs{
  justify-content:flex-end;
  gap:6px;
  margin:0 0 14px;
}
#panel-surface .surface-mode-tab{
  min-height:34px;
  padding:9px 12px;
  border:1px solid var(--line-dark);
  border-radius:6px;
  background:#e7e5df;
  color:#42494c;
  font:850 .67rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.035em;
  text-transform:uppercase;
  box-shadow:none;
  cursor:pointer;
  transform:none;
}
#panel-surface .surface-mode-tab:hover{
  background:#dedbd4;
}
#panel-surface .surface-mode-tab:active{
  transform:none;
}
#panel-surface .surface-mode-tab.active{
  background:#1f5f8d;
  border-color:#184d72;
  color:#fff;
  box-shadow:none;
}
#panel-surface .surface-mode-tab:focus-visible{
  outline:3px solid rgba(29,93,145,.28);
  outline-offset:2px;
}
@media(max-width:520px){
  #panel-surface .surface-mode-tabs{
    justify-content:flex-end;
    flex-wrap:nowrap;
    gap:6px;
  }
  #panel-surface .surface-mode-tab{
    width:auto;
    min-width:0;
    min-height:36px;
    padding:9px 11px;
    font-size:.61rem;
  }
}

/* v0.9.78 Voice focus + transcript browsing
   Bring VOICE into the shared CODE / AGC / CONTROLS disclosure language.
   FOLLOW PLAYBACK preserves the compact pinned transcript window; FULL
   TRANSCRIPT removes the inner height limit and disables automatic pinning so
   the complete powered-descent transcript can be browsed as a normal page. */
#panel-voice .voice-panel-tools{
  display:flex;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:6px;
  margin:0 0 10px;
}
#panel-voice .voice-panel-tool,
#panel-voice #voice-search-button{
  min-height:34px;
  padding:9px 12px;
  border:1px solid #184d72;
  border-radius:6px;
  background:#e7e5df;
  color:#42494c;
  font:850 .67rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.035em;
  box-shadow:none;
  cursor:pointer;
}
#panel-voice .voice-panel-tool:hover,
#panel-voice #voice-search-button:hover{
  background:#dedbd4;
}
#panel-voice .voice-panel-tool.active,
#panel-voice #voice-search-button{
  background:#1f5f8d;
  border-color:#184d72;
  color:#fff;
}
#panel-voice .voice-panel-tool.active:hover,
#panel-voice #voice-search-button:hover{
  background:#184d72;
  border-color:#143f5e;
  color:#fff;
}
#panel-voice .voice-panel-tool:focus-visible,
#panel-voice #voice-search-button:focus-visible{
  outline:3px solid rgba(29,93,145,.28);
  outline-offset:2px;
}
#panel-voice .voice-technical-accordion{
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  overflow:visible;
}
#panel-voice .voice-technical-accordion + .voice-technical-accordion{
  margin-top:0;
}
#panel-voice .voice-accordion-content,
#panel-voice .voice-search-content{
  padding:10px 0 12px;
}
#panel-voice details.voice-technical-accordion[open] > .technical-accordion-heading{
  border-bottom-color:transparent;
}
#panel-voice .voice-search-drawer{margin-top:0}
#panel-voice .voice-search-tools{margin-top:0}
#panel-voice .voice-search-results{margin-bottom:0}

/* Full-transcript browsing deliberately overrides the desktop and mobile inner
   scroller rules.  The current/last-spoken highlight continues updating, but
   the page is never pulled back to the audio position until FOLLOW PLAYBACK is
   selected again. */
#panel-voice.voice-full-transcript-mode .voice-list{
  max-height:none!important;
  height:auto!important;
  min-height:0!important;
  overflow:visible!important;
  overflow-y:visible!important;
  overscroll-behavior:auto!important;
  scrollbar-gutter:auto!important;
  padding-right:0!important;
}
#panel-voice.voice-full-transcript-mode .voice-event{
  scroll-margin-top:24px;
}

@media(max-width:520px){
  #panel-voice .voice-panel-tools{
    justify-content:flex-end;
    flex-wrap:nowrap;
  }
  #panel-voice .voice-panel-tool,
  #panel-voice #voice-search-button{
    min-height:36px;
    padding:9px 11px;
    font-size:.61rem;
  }
  #panel-voice .voice-accordion-content,
  #panel-voice .voice-search-content{padding:9px 0 11px}
}

/* v0.9.79 mobile transcript focus + expandable DSKY + register help
   - FOLLOW PLAYBACK uses a shorter mobile transcript window with an explicit
     vertical scrollbar; FULL TRANSCRIPT remains normal page flow.
   - The compact mobile DSKY can expand the existing full DSKY in document flow
     and collapse back without changing replay state.
   - R1/R2/R3 participate in the existing DSKY hover/tap help system. */
.display-register[data-dsky-tip]{cursor:help}
.display-register[data-dsky-tip]:focus-visible{
  outline:2px solid rgba(143,188,214,.55);
  outline-offset:-3px;
}
.mobile-dsky-collapse{display:none}

@media(max-width:820px){
  .mobile-dsky-strip{cursor:pointer;touch-action:manipulation}
  .mobile-dsky-strip:focus-visible{
    outline:3px solid rgba(143,188,214,.65);
    outline-offset:-3px;
  }

  /* Expand in normal document flow beneath the fixed replay/navigation chrome.
     The full instrument itself is the same live DSKY used on desktop. */
  body.mobile-dsky-expanded .mobile-dsky-strip{
    display:none!important;
  }
  body.mobile-dsky-expanded .tabbar,
  body.mobile-dsky-expanded.mobile-dsky-visible .tabbar{
    top:116px!important;
  }
  body.mobile-dsky-expanded .app-shell{
    padding-top:154px!important;
  }
  body.mobile-dsky-expanded .dsky-column{
    display:grid!important;
    position:relative!important;
    top:auto!important;
    width:100%;
    max-width:620px;
    margin:0 auto 12px;
    gap:0;
  }
  body.mobile-dsky-expanded .dsky-frame{
    position:relative;
    width:100%;
    margin:0 auto;
  }
  body.mobile-dsky-expanded .dsky-caption{display:none}
  body.mobile-dsky-expanded .mobile-dsky-collapse{
    display:flex;
    margin:0 0 8px auto;
    min-height:32px;
    padding:8px 10px;
    align-items:center;
    justify-content:center;
    border:1px solid #184d72;
    border-radius:6px;
    background:#1f5f8d;
    color:#fff;
    font:850 .64rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
    letter-spacing:.04em;
    cursor:pointer;
  }
  body.mobile-dsky-expanded .mobile-dsky-collapse:hover{
    background:#184d72;
    border-color:#143f5e;
  }
  body.mobile-dsky-expanded .mobile-dsky-collapse:focus-visible{
    outline:3px solid rgba(29,93,145,.28);
    outline-offset:2px;
  }

  /* The compact FOLLOW PLAYBACK transcript is intentionally smaller than the
     previous near-viewport-height scroller.  The existing scrollbar styling
     remains visible at the right edge. */
  #panel-voice:not(.voice-full-transcript-mode) .voice-list{
    height:clamp(280px,44dvh,390px)!important;
    max-height:clamp(280px,44dvh,390px)!important;
    min-height:0!important;
    overflow-y:scroll!important;
    scrollbar-gutter:stable;
  }
}

@media(max-width:520px){
  body.mobile-dsky-expanded .tabbar,
  body.mobile-dsky-expanded.mobile-dsky-visible .tabbar{
    top:112px!important;
  }
  body.mobile-dsky-expanded .app-shell{
    padding-top:148px!important;
  }
  body.mobile-dsky-expanded .dsky-column{
    margin-bottom:8px;
  }
  body.mobile-dsky-expanded .mobile-dsky-collapse{
    min-height:30px;
    padding:7px 9px;
    font-size:.6rem;
  }
  #panel-voice:not(.voice-full-transcript-mode) .voice-list{
    height:clamp(260px,42dvh,350px)!important;
    max-height:clamp(260px,42dvh,350px)!important;
  }
}

/* v0.9.81 mobile chrome hierarchy
   On narrow screens the primary navigation now comes first beneath the project
   header, followed by the shared replay transport and then the compact/full DSKY:
   header -> tabs -> playback -> DSKY -> selected view.  The total reserved chrome
   height is unchanged, so panel scroll offsets and content geometry remain stable. */
@media(max-width:820px){
  .tabbar,
  body.mobile-dsky-visible .tabbar,
  body.mobile-dsky-expanded .tabbar,
  body.mobile-dsky-expanded.mobile-dsky-visible .tabbar{
    top:58px!important;
    z-index:39!important;
  }
  .transport{
    top:153px!important; /* 58px header + 95px two-row primary tabs */
    z-index:38!important;
  }
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    top:211px!important; /* tabs + 58px replay transport */
    z-index:37!important;
  }
}
@media(max-width:520px){
  .tabbar,
  body.mobile-dsky-visible .tabbar,
  body.mobile-dsky-expanded .tabbar,
  body.mobile-dsky-expanded.mobile-dsky-visible .tabbar{
    top:58px!important;
  }
  .transport{
    top:146px!important; /* 58px header + 88px compact two-row tabs */
  }
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    top:200px!important; /* tabs + 54px compact replay transport */
  }
}

/* v0.9.85 mobile Voice timestamp/text separation
   Long GET timestamps (for example 102:33:10.5) now have a dedicated fixed
   column on phones so they can never overlap the spoken transcript text. */
@media(max-width:520px){
  #panel-voice .voice-event{
    grid-template-columns:102px minmax(0,1fr);
    column-gap:12px;
    row-gap:6px;
  }
  #panel-voice .voice-event time{
    white-space:nowrap;
    font-size:.88rem;
    line-height:1.4;
    min-width:0;
  }
  #panel-voice .voice-event strong{
    min-width:0;
    overflow-wrap:anywhere;
  }
  #panel-voice .voice-event span{
    grid-column:2;
  }
}

/* v0.9.86 mobile AGC Computer Time cycle-count wrapping
   Keep the accepted v0.9.85 interface intact; only narrow-screen computer-time
   cards change. Percent and cycle count stack so long values cannot overrun. */
@media(max-width:520px){
  #panel-agc .computer-time-grid>span{
    grid-template-columns:1fr;
    gap:4px;
    align-content:start;
  }
  #panel-agc .computer-time-grid b,
  #panel-agc .computer-time-grid em{
    grid-column:1;
    text-align:left;
    min-width:0;
  }
  #panel-agc .computer-time-grid em{
    white-space:normal;
    overflow-wrap:anywhere;
    line-height:1.2;
  }
}


/* v0.9.89 — About, crawler metadata and release-candidate cleanup */
.project-menu-about-body>p{margin:.35rem 0 .9rem}
.project-menu-about-body a:not(.project-menu-source-list a){color:#285b79;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.project-menu-subheading{margin:1.15rem 0 .55rem!important;padding-top:.9rem;border-top:1px solid #d8d3ca;color:#687174;font:850 .64rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em}
.project-menu-company{margin-top:1rem!important;padding-top:.85rem;border-top:1px solid #d8d3ca;color:#34444c}

@media(max-width:430px){.camera-start-note{max-width:72%;font-size:.62rem;line-height:1.3;padding:5px 7px;letter-spacing:.035em}}


/* v1.0.2: tighten CURRENT EVENT CODE heading spacing only. */
#panel-code .code-event-content > h2{
  margin-top:0;
}


/* v1.0.2: make all collapsible section headers read as interactive
   without competing with primary action buttons. */
.technical-accordion-heading,
#panel-controls .control-group-heading{
  transition:background-color .15s ease;
}
.technical-accordion-heading h3,
#panel-controls .control-group-heading h3{
  color:var(--blue);
}
.technical-accordion-heading::after,
#panel-controls .control-group-heading::after{
  border-right-color:var(--blue);
  border-bottom-color:var(--blue);
}
.technical-accordion-heading:hover,
#panel-controls .control-group-heading:hover{
  background:rgba(29,93,145,.045);
}


/* v1.0.2: Code drawer summaries have a more-specific transparent base rule,
   so give their hover state matching specificity. */
#panel-code .code-drawer-summary:hover{
  background:rgba(29,93,145,.045);
}


/* v1.0.3 — mobile slim DSKY expand affordance
   Keep the authentic black DSKY face, but make the collapsed strip clearly
   interactive with the same blue cue used elsewhere. Expanded DSKY keeps its
   existing blue SLIM ↑ collapse button unchanged. */
@media(max-width:820px){
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    border:1px solid #1f5f8d!important;
    border-bottom:2px solid #1f5f8d!important;
    box-shadow:inset 0 0 0 1px rgba(29,93,145,.24),0 5px 16px rgba(0,0,0,.2);
    padding-right:34px!important;
  }
  .mobile-dsky-strip::after{
    content:'';
    position:absolute;
    right:34px;
    top:50%;
    width:8px;
    height:8px;
    border-right:2px solid #2d84bf;
    border-bottom:2px solid #2d84bf;
    transform:translateY(-65%) rotate(45deg);
    pointer-events:none;
  }
}


/* v1.0.3 — final slim DSKY mobile alignment
   Keep the DSKY face black, remove the blue outline, and use a five-column
   grid so the live register is centred between NOUN and the expand chevron. */
@media(max-width:820px){
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    border:0!important;
    border-bottom:1px solid #4b5550!important;
    box-shadow:0 5px 16px rgba(0,0,0,.2);
    padding-left:0!important;
    padding-right:0!important;
    display:grid!important;
    grid-template-columns:18% 18% 18% 28% 18%;
    justify-content:normal!important;
  }
  .mobile-dsky-strip span{
    min-width:0!important;
  }
  .mobile-dsky-strip b{
    grid-column:4;
    grid-row:1;
    width:100%;
    min-width:0!important;
    justify-content:center;
    text-align:center;
  }
  .mobile-dsky-strip::after{
    position:static;
    grid-column:5;
    grid-row:1;
    justify-self:center;
    align-self:center;
    right:auto;
    top:auto;
    transform:rotate(45deg);
  }
}


/* v1.0.3 follow-up — align slim DSKY chevron with accordion chevrons below */
@media(max-width:820px){
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    grid-template-columns:18% 18% 18% minmax(0,1fr) 44px;
    padding-right:14px!important;
  }
  .mobile-dsky-strip b{
    grid-column:4;
    justify-self:center;
    align-self:center;
    padding-right:0;
  }
  .mobile-dsky-strip::after{
    grid-column:5;
    justify-self:center;
    align-self:center;
    margin-right:0;
  }
}


/* v1.0.3 — simplified mobile DSKY controls
   Slim display shows only PROG / VERB / NOUN plus the standard expand chevron.
   Expanded display uses the same chevron language for collapse. */
@media(max-width:820px){
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    display:grid!important;
    grid-template-columns:18% 18% 18% minmax(0,1fr) 44px;
    padding-left:0!important;
    padding-right:14px!important;
  }
  .mobile-dsky-strip b,
  #mobile-register{
    display:none!important;
  }
  .mobile-dsky-strip::after{
    grid-column:5;
    justify-self:center;
    align-self:center;
  }

  .mobile-dsky-collapse{
    width:44px!important;
    min-width:44px!important;
    height:40px!important;
    min-height:40px!important;
    padding:0!important;
    border:0!important;
    border-radius:6px!important;
    background:transparent!important;
    color:transparent!important;
    box-shadow:none!important;
    display:grid!important;
    place-items:center!important;
    font-size:0!important;
    cursor:pointer;
  }
  .mobile-dsky-collapse:hover{
    background:rgba(29,93,145,.045)!important;
  }
  .mobile-dsky-collapse:focus-visible{
    outline:3px solid rgba(29,93,145,.28)!important;
    outline-offset:2px;
  }
  .mobile-dsky-collapse-chevron{
    display:block;
    width:8px;
    height:8px;
    border-right:2px solid var(--blue);
    border-bottom:2px solid var(--blue);
    transform:rotate(225deg);
    pointer-events:none;
  }
}


/* v1.0.3 — centre the slim DSKY PROG / VERB / NOUN group.
   The chevron is positioned independently so it does not pull the three
   DSKY fields off the visual centre of the strip. */
@media(max-width:820px){
  .mobile-dsky-strip,
  .mobile-dsky-strip.visible{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 58px 58px 58px minmax(0,1fr)!important;
    padding-left:14px!important;
    padding-right:14px!important;
    align-items:center!important;
  }
  .mobile-dsky-strip > span:nth-child(1){grid-column:2}
  .mobile-dsky-strip > span:nth-child(2){grid-column:3}
  .mobile-dsky-strip > span:nth-child(3){grid-column:4}
  .mobile-dsky-strip > span{
    width:58px!important;
    min-width:58px!important;
    justify-self:center!important;
    text-align:center!important;
  }
  .mobile-dsky-strip::after{
    position:absolute!important;
    right:34px!important;
    top:50%!important;
    grid-column:auto!important;
    justify-self:auto!important;
    align-self:auto!important;
    transform:translateY(-65%) rotate(45deg)!important;
  }
}


/* v1.0.4 — Code-tab hierarchy refinement */
#panel-code .code-event-content > h2{
  font-size:1.3rem;
  line-height:1.18;
}
#panel-code #source-select{
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  font-weight:600;
}
@media(max-width:520px){
  #panel-code .code-event-content > h2{
    font-size:1.15rem;
  }
}


/* v1.0.4 — unify Code-tab current-value typography with CAE L */
#panel-code .code-event-content > h2,
#panel-code #source-select,
#panel-code #source-search{
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#171c1f;
}
#panel-code #source-search::placeholder{
  color:#6b7275;
  opacity:1;
}


/* v1.0.4 — keep AGC Program Counter instruction typography identical to
   Code > AGC PROGRAM COUNTER NOW. */
#panel-agc #computer-source-instruction{
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace!important;
  color:#171c1f!important;
  letter-spacing:0!important;
}
#panel-agc #computer-source-ref{
  font:700 .68rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace!important;
  color:#596165!important;
}
@media(max-width:820px){
  #panel-agc #computer-source-instruction{
    font-size:.73rem!important;
  }
  #panel-agc #computer-source-ref{
    font-size:.64rem!important;
  }
}


/* v1.0.4 — present the current Code-tab event as a technical state value.
   The underlying event text is unchanged; only this display is uppercased. */
#panel-code .code-event-content > h2{
  text-transform:uppercase;
}


/* v1.0.4 — AGC Executive normal-state typography + stable alarm height
   Normal NO PROGRAM ALARM matches the Code-tab current-event value.
   The title row permanently reserves enough height for the larger 1201/1202
   alarm treatment so the content below does not jump when an alarm appears. */
#panel-agc #computer-executive-title{
  min-height:1.55rem;
  white-space:nowrap;
}
#panel-agc #computer-executive-card:not(.alarm) #computer-executive-title{
  font:850 .78rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#171c1f;
  text-transform:uppercase;
}


/* v1.0.7 — OPERATOR section: remove the redundant divider above the legal
   operator text and restore normal paragraph spacing below the section label. */
.project-menu-about-body .project-menu-company{
  margin-top:.35rem!important;
  padding-top:0;
  border-top:0;
}


/* v1.0.8 — Mobile source-tool labels: compensate for Android text inflation
   so File/Search visually match the compact CAE L value. */
@media(max-width:820px){
  #panel-code .source-browse-drawer .source-tools label{
    font:850 .64rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace!important;
    color:#171c1f!important;
    -webkit-text-size-adjust:none;
    text-size-adjust:none;
  }
}


/* v1.0.8 — make the mobile source selector/search text visually match CAE L.
   Native form controls otherwise retain the larger desktop value size on Android. */
@media(max-width:820px){
  #panel-code #source-select,
  #panel-code #source-search{
    font:850 .73rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace!important;
    color:#171c1f!important;
    -webkit-text-size-adjust:none;
    text-size-adjust:none;
  }
  #panel-code #source-search::placeholder{
    font:850 .73rem/1.32 ui-monospace,SFMono-Regular,Consolas,monospace;
    color:#6b7275;
    opacity:1;
  }
}


/* v1.0.8 — alarm sequence navigation cue.
   Alarm numbers are blue while available as navigation targets; the currently
   active alarm keeps the existing red alarm treatment. Applies desktop/mobile. */
#panel-agc .computer-alarm-step strong{
  color:var(--blue);
}
#panel-agc .computer-alarm-step.current strong{
  color:#a2392a;
}


/* v1.0.9 — masthead acts as a home/reset control without changing its layout. */
.brand-home{
  display:inline-flex;
  color:inherit;
  text-decoration:none;
  cursor:pointer;
}
.brand-home .brand span{
  transition:color .12s ease;
}
@media(hover:hover){
  .brand-home:hover .brand span{
    color:var(--blue);
  }
}
.brand-home:focus-visible{
  outline:2px solid rgba(29,93,145,.45);
  outline-offset:4px;
  border-radius:3px;
}
