/* Railway workspace: opaque surfaces, restrained accents, clear control hierarchy. */
:root{--desk-bg:#131a20;--desk-raised:#1b242c;--desk-edge:#34414b;--desk-ink:#edf1f3;--desk-muted:#a5b2bc;--desk-accent:#a8d5d0;--desk-danger:#f29d9d}
body,button,input,select{font-family:Inter,'Segoe UI',Arial,sans-serif}button,select,input{font-size:13px}button{background:var(--desk-raised);border:1px solid var(--desk-edge);color:var(--desk-ink);border-radius:5px;transition:background .12s,border-color .12s}button:hover{background:#2b3842;border-color:#8296a5}button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #acd9d4;outline-offset:3px}button:disabled{opacity:.4;cursor:not-allowed}input[type=range]{accent-color:var(--desk-accent)}input[type=checkbox]{accent-color:var(--desk-accent)}[hidden]{display:none!important}
#bottomToolbar{height:58px;padding:9px 20px;gap:6px;background:#0d1319;border-top:1px solid #34414b}#bottomToolbar button,#bottomToolbar summary{border:0;background:transparent;color:#b9c5cd;font-size:12px;font-weight:600;min-height:36px;border-radius:4px;padding:8px 13px}#bottomToolbar button:hover,#bottomToolbar summary:hover{background:#26333d;color:white}#bottomToolbar .top-actions{gap:3px}#bottomToolbar #operator,#bottomToolbar #help{color:#edf1f3}#bottomToolbar #toggleDesk{color:#8f9fa9;border-left:1px solid #34414b;border-radius:0}
.drive-panel{bottom:74px;left:20px;right:20px;background:#131a20;border:1px solid #40505c;border-radius:6px;padding:19px 22px;gap:24px;box-shadow:0 4px 18px #0004;min-height:104px}.drive-panel .journey{min-width:160px;max-width:220px}.journey>span{font-size:10px;letter-spacing:.04em;line-height:1.6;color:#a3b3bf}.journey>b{font-size:17px;font-weight:600;margin-top:5px}.journey em{font-size:12px;color:#a4b4be}.speed>strong{font-size:46px;letter-spacing:-2px;font-weight:500;font-variant-numeric:tabular-nums}.speed>span{color:#9caebc;font-size:11px}.stop{border-left:1px solid #35414b;padding-left:24px}.stop>span,.controller label{font-size:10px;letter-spacing:.1em;color:#a9b8c2}.stop b{font-size:19px;line-height:1.5;font-weight:600}.stop small{line-height:1.6}.controller output{font-size:12px;font-weight:600;letter-spacing:0;color:#f0f4f5}.notches{font-size:9px;letter-spacing:.08em;color:#8fa0ad}.drive-actions{min-width:225px}.drive-actions button{min-height:35px;padding:8px 12px;font-weight:600}.drive-actions #auto[aria-pressed=true]{background:#25433f;border-color:#81b8ac;color:#dcf5ef}#emergency{background:#422329;border-color:#7c404a;color:#ffd6d6}#emergency:hover{background:#632e39}.route,.views,.dock-more>div{background:#131a20;border:1px solid #40505c;border-radius:6px}.route-heading{padding:18px}.station-row{padding:11px 13px}.station-row.active{background:#293b3e;border-radius:3px}.route-foot,#linePosition{background:#0f171d;padding:12px}.views{padding:8px;gap:4px;bottom:210px}.views button.active{background:#d2e6e1;color:#122722;border-color:#d2e6e1}#notice{background:#19262f;border:1px solid #50636f;border-radius:4px;font-size:12px;padding:10px 16px}#subtitle{border-radius:4px;line-height:1.6;background:#10181ff0;padding:12px 18px}
#dialog{background:#111920;color:var(--desk-ink);border:1px solid #495966;border-radius:8px;width:min(920px,94vw);max-width:920px;max-height:88vh;padding:30px;box-shadow:0 14px 60px #0008}#dialog::backdrop{background:#0008;backdrop-filter:none}#dialog h2{font-size:22px;font-weight:550;letter-spacing:-.4px;margin:0 42px 24px 0}#dialog p{color:#acbbc6;line-height:1.65;font-size:13px}#dialog .close{position:absolute;top:15px;right:18px;width:32px;height:32px;font-size:23px;padding:0;border:0;background:transparent;color:#b4c0ca}.control-grid[data-workspace]{display:block}.workspace-tabs{display:flex;gap:3px;border-bottom:1px solid #36434e;margin:0 0 24px;overflow:auto;scrollbar-width:thin}.workspace-tabs button{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:#a4b4c0;white-space:nowrap;padding:13px 14px;font-size:12px;font-weight:600}.workspace-tabs button[aria-selected=true]{color:#e3f5ee;border-bottom-color:#a7d7c7;background:#1b2c2b}.control-grid fieldset{background:#18222a;border:1px solid #34424e;border-radius:5px;padding:24px;gap:18px;min-height:260px}.control-grid legend{font-size:12px;letter-spacing:.02em;color:#d7e6e9;padding:0 8px}.control-grid label{font-size:13px;display:flex;justify-content:space-between;gap:20px}.control-grid label:has(input[type=checkbox]){justify-content:start}.control-grid select,.control-grid input[type=number]{min-height:36px;max-width:60%;background:#0f181f;border:1px solid #4b5b68;color:#e1e9ed;padding:8px 12px;border-radius:4px}.control-grid input[type=range]{flex:1;max-width:50%;min-width:100px}.control-grid button{padding:10px 14px;align-self:start}.control-grid input[type=checkbox]{width:17px;height:17px}.control-grid output{font-variant-numeric:tabular-nums;font-size:12px;min-width:45px;text-align:right}
#operatorPanel{background:#111920;inset:20px 20px 74px;border:1px solid #465764;border-radius:7px;padding:26px 30px;max-width:1500px;margin:auto}.ops-heading{top:-26px;background:#111920;padding:8px 0 20px}.ops-heading small{color:#a2c7bf;font-size:10px;letter-spacing:.14em}.ops-heading h2{font-size:27px;letter-spacing:-.5px;font-weight:550;margin:8px 0 0}.ops-heading button{font-size:12px;padding:9px 14px}#operatorPanel>p{font-size:12px;line-height:1.7;color:#9dacb7;max-width:900px}.ops-map{margin-top:24px;background:#0b1218;border:1px solid #344651;border-radius:4px;padding:18px}.ops-legend{flex-wrap:wrap;gap:12px 26px;color:#b3c3cc}.ops-settings{padding:20px;background:#18222a;border-radius:5px;gap:24px;border:1px solid #34424e}.ops-settings label{align-items:center;flex-wrap:wrap;line-height:1.6}.ops-settings select{border-radius:4px;background:#0f181f;padding:9px;border-color:#4b5b68}.ops-settings input[type=checkbox]{width:17px}.ops-settings input[type=range]{accent-color:#a2c7bf}#stockChoices{background:#101a22;border-color:#3b4c59;border-radius:4px;gap:10px 20px;padding:16px}#opsCards{grid-template-columns:repeat(auto-fill,minmax(305px,1fr));gap:12px}.ops-card{background:#19232c;border:1px solid #35444f;border-radius:5px;padding:18px;content-visibility:auto;contain-intrinsic-size:170px}.ops-card.selected{border-color:#86b8a9;box-shadow:inset 3px 0 #86b8a9}.ops-card b{font-size:12px;line-height:1.6}.stock-state{font-size:9px;background:#25353f;padding:4px 6px;border-radius:3px;height:max-content}.ops-card button{margin:3px 2px;padding:8px;font-size:11px}.fleet-filter{display:flex;align-items:center;gap:14px;color:#aabac5;font-size:12px;margin:18px 0}.fleet-filter input{width:min(380px,65%);background:#0d171e;border:1px solid #4b5b68;color:#eff5f8;padding:11px 14px;border-radius:4px}.station-desk{background:#18222a;border:1px solid #34424e;border-radius:5px;padding:24px;gap:24px}.station-desk>div:first-child{flex-basis:100%}.station-desk h3{font-size:22px;font-weight:500}.station-command-row{padding:18px 0;border-block:1px solid #34424e;gap:9px}.station-command-row button{padding:10px 13px}.station-desk output{padding:12px 14px;background:#101a22;border-radius:4px}.station-desk output:empty{display:none}.announcement-menu select,#passengerPanel select{background:#0f181f;border-color:#4b5b68;border-radius:4px}.announcement-transcript{background:#18232b;border-left-color:#9bcabe}.announcement-actions button{padding:10px 16px}#passengerPanel{background:#131a20;border:1px solid #40505c;border-radius:6px;bottom:74px;padding:20px}.dock-more>div{padding:18px}.dock-more a{font-size:13px;line-height:1.7}.ops-note{font-size:10px;line-height:1.6}
@media(max-width:1050px){.drive-panel{gap:12px;padding:15px}.drive-panel .journey{min-width:120px}.drive-actions{min-width:185px}.stop{padding-left:12px}.speed>strong{font-size:36px}#bottomToolbar{padding-inline:10px}#bottomToolbar button,#bottomToolbar summary{padding-inline:8px;font-size:11px}.workspace-tabs button{padding-inline:10px}}
@media(max-width:800px){#bottomToolbar{height:auto;min-height:94px;flex-wrap:wrap;padding:8px}.drive-panel{bottom:108px;left:10px;right:10px;grid-template-columns:1fr 1fr;gap:10px}.drive-panel .stop{display:none}.views{bottom:288px}.route{bottom:285px;left:10px}#operatorPanel{inset:10px 10px 108px;padding:18px}.ops-heading{top:-18px}.ops-heading h2{font-size:22px}#dialog{padding:20px}.control-grid fieldset{padding:18px}.workspace-tabs{margin-bottom:18px}.control-grid label{flex-wrap:wrap;gap:10px}.control-grid select{max-width:100%}#passengerPanel{bottom:108px;padding:14px}#opsCards{grid-template-columns:1fr}.ops-settings{padding:14px}.station-desk{padding:16px}.hide-desk .views{bottom:108px}}
@media(prefers-reduced-motion:reduce){button,select,input{transition:none}}

.drive-panel,#passengerPanel{bottom:calc(var(--dock-height,58px) + 16px)}#operatorPanel{bottom:calc(var(--dock-height,58px) + 16px)}.hide-desk .views{bottom:calc(var(--dock-height,58px) + 12px)}

/* Main driver console: tactile notches, instruments, separate PA bank. */
.drive-panel.driving-console{display:grid!important;grid-template-columns:minmax(150px,.85fr) 96px minmax(300px,2fr) 200px;gap:12px 22px;padding:16px 20px;border-top:3px solid #83bcb5;background:#111a21;align-items:center}.driving-console .journey{max-width:none;grid-column:1}.driving-console .speed{grid-column:2;border-right:1px solid #35434e;padding-right:14px}.driving-console .controller{grid-column:3;min-width:0}.driving-console .drive-actions{grid-column:4;min-width:0}.driving-console .stop{display:none}.driving-console .speed strong{font-size:48px}.driving-console .controller label{display:flex;justify-content:space-between;margin-bottom:10px}.driving-console #power{width:100%;height:16px;cursor:ew-resize}.driving-console .notches{display:none}.notch-bank{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin-top:8px}.notch-bank button{padding:9px 0;min-width:0;background:#24313d;border-bottom:3px solid #071017;font-size:11px;font-variant-numeric:tabular-nums}.notch-bank button[data-notch^="-"]{color:#ffbe91}.notch-bank button[aria-pressed=true]{background:#d4ece7;color:#102924;border-color:#8cbfb1;box-shadow:inset 0 2px 4px #0003}.effort-meter{display:flex;align-items:center;gap:10px;margin-top:9px;font-size:9px;color:#9db3bf}.effort-meter meter{flex:1;height:6px}.effort-meter output{font-size:10px;min-width:68px}.cab-pa{grid-column:1/-1;display:flex;align-items:center;gap:8px;border-top:1px solid #35434e;padding-top:10px}.cab-pa>div{display:flex;gap:16px;align-items:center;margin-right:auto}.cab-pa span{font-size:9px;letter-spacing:.12em;color:#7f9aa9}.cab-pa output{font-size:11px;color:#b4cacf}.cab-pa button{font-size:11px;padding:7px 12px;background:#192832}.driving-console[data-mode=emergency]{border-top-color:#fa8c82}.driving-console #brakeStatus{font-size:10px!important;margin-top:8px}.driving-console .drive-actions>div:has(#lights),.driving-console .drive-actions>div:has(#hvac),.driving-console .drive-actions>div:has(#horn){display:none}
@media(max-width:1050px){.drive-panel.driving-console{grid-template-columns:1fr 85px 2fr}.driving-console .drive-actions{grid-column:1/-1;display:flex;gap:8px}.driving-console .drive-actions>div{display:flex;flex:1;gap:8px}.driving-console .drive-actions button{flex:1}.cab-pa>div{flex-direction:column;align-items:start;gap:3px}}
@media(max-width:620px){.drive-panel.driving-console{grid-template-columns:1fr 85px;gap:10px;padding:12px}.driving-console .controller{grid-column:1/-1}.driving-console .speed strong{font-size:34px}.cab-pa{flex-wrap:wrap}.cab-pa>div{width:100%}.cab-pa button{flex:1;padding:7px 5px}.notch-bank button{padding:8px 0}.driving-console .journey>b{font-size:15px}.driving-console .drive-actions button{font-size:11px;padding:8px 6px}}

.desk-approach{display:block;margin-top:7px;font-size:11px;color:#b7cbd5;font-variant-numeric:tabular-nums}

@media(max-width:620px){.drive-panel.driving-console{padding:10px 12px;gap:7px}.driving-console .controller label{margin-bottom:4px}.driving-console .journey>span{font-size:9px}.driving-console .journey>b{margin-top:2px}.desk-approach{margin-top:4px;font-size:10px}.driving-console .notch-bank{margin-top:4px}.driving-console .notch-bank button{padding:6px 0}.driving-console .effort-meter{margin-top:5px}.driving-console #brakeStatus{margin-top:4px!important;font-size:9px!important}.driving-console .cab-pa{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding-top:7px}.driving-console .cab-pa>div{grid-column:1/-1;flex-direction:row;justify-content:space-between}.driving-console .cab-pa span{display:none}.driving-console .cab-pa output{font-size:10px}.driving-console .cab-pa button{font-size:10px}}

/* Compact desk: a persistent instrument strip with optional driving/PA banks. */
.drive-panel.driving-console{border-top-width:1px;border-radius:8px;gap:10px 18px;padding:10px 16px;box-shadow:0 6px 24px #0005;min-height:0}
.desk-header{grid-column:1/-1;display:flex;align-items:center;gap:8px;border-bottom:1px solid #2c3d48;padding-bottom:7px}.desk-header>span{margin-right:auto;font-size:9px;letter-spacing:.16em;color:#8ba0ad}.desk-header button{padding:5px 10px;min-height:28px;font-size:11px;background:transparent;border-color:#3b4b57}.driving-console:not(.desk-pa-open) .cab-pa{display:none!important}.driving-console .speed strong{font-size:38px}.driving-console .notch-bank button{border-bottom-width:1px;box-shadow:none;padding:6px 0}.driving-console .controller label{margin-bottom:5px}.driving-console .drive-actions button{min-height:30px;padding:6px 9px}.driving-console .journey>b{font-size:15px}.hide-desk .drive-panel.driving-console{display:none!important}
.drive-panel.driving-console.desk-minimised{grid-template-columns:72px minmax(80px,1fr) auto auto;gap:10px;max-width:680px;left:auto;right:16px;padding:9px 12px;align-items:center}
.desk-minimised .desk-header{display:contents}.desk-minimised .desk-header>span,.desk-minimised .desk-pa-toggle,.desk-minimised .journey,.desk-minimised .cab-pa,.desk-minimised .stop{display:none!important}.desk-minimised .desk-size-toggle{grid-column:4;grid-row:1;font-size:11px;padding:7px 10px;white-space:nowrap}
.desk-minimised .speed{grid-column:1;grid-row:1;padding:0;border:0;min-width:0}.desk-minimised .speed strong{font-size:28px;letter-spacing:-1px}.desk-minimised .speed>div{display:none}.desk-minimised .speed>span{font-size:9px}
.desk-minimised .controller{grid-column:2!important;grid-row:1}.desk-minimised .controller>*:not(label){display:none!important}.desk-minimised .controller label{font-size:0;margin:0;display:block}.desk-minimised #notchLabel{display:block;font-size:12px;white-space:nowrap}.desk-minimised .drive-actions{grid-column:3!important;grid-row:1;display:block;min-width:0}.desk-minimised .drive-actions>div:not(:has(#emergency)),.desk-minimised #pause{display:none!important}.desk-minimised .drive-actions>div:has(#emergency){display:block}.desk-minimised #emergency{font-size:10px;min-height:30px;padding:7px 10px;white-space:nowrap}
@media(max-width:620px){.drive-panel.driving-console.desk-minimised{left:10px;right:10px;grid-template-columns:62px minmax(55px,1fr) auto auto;gap:7px}.desk-minimised #emergency{padding:7px}.desk-minimised .desk-size-toggle{padding:7px}.drive-panel.driving-console:not(.desk-minimised){gap:7px;padding:9px 12px}}

/* Keep the original functional controller available in the compact desk. */
.desk-minimised .controller>#power{display:block!important;width:100%;min-width:90px;height:22px;margin:4px 0 0;cursor:pointer;accent-color:#55d6bf}
.drive-panel.driving-console.desk-minimised{max-width:740px;grid-template-columns:72px minmax(110px,1fr) auto auto}
.desk-minimised .controller label{display:flex;justify-content:space-between;align-items:center}
.desk-minimised .controller label::before{content:"BRAKE / POWER";font-size:8px;letter-spacing:.06em;color:#9faeb9}
@media(max-width:620px){.drive-panel.driving-console.desk-minimised{grid-template-columns:52px minmax(100px,1fr) auto auto;gap:7px;padding:8px}.desk-minimised .controller label::before{content:"CONTROLLER";font-size:7px}.desk-minimised .desk-size-toggle{font-size:10px;padding:5px}}

/* Compact desk retains the existing Auto drive control and its live state. */
.desk-minimised .drive-actions{display:grid;gap:4px}
.desk-minimised .drive-actions>div:has(#auto){display:block!important}
.desk-minimised .drive-actions #doors{display:none!important}
.desk-minimised #auto{width:100%;min-height:28px;padding:5px 9px;font-size:10px;white-space:nowrap}
.desk-minimised #auto[aria-pressed="true"]{color:#d9fff5;background:#17483d;border-color:#3d9c84}

.manual-stop-guide{grid-column:1/-1;border-top:1px solid #334550;padding-top:7px;min-width:0}.manual-stop-guide[hidden]{display:none!important}.manual-stop-guide>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:12px}.manual-stop-guide strong{color:#a8cadb;font-weight:600}.manual-stop-guide output{font-variant-numeric:tabular-nums}.manual-stop-guide small{display:block;color:#9aafbc;font-size:10px;margin-top:5px}.stop-guide-track{height:7px;position:relative;margin:8px 4px;background:#263740;border-radius:4px}.stop-guide-zone{position:absolute;left:48.56%;width:2.88%;height:100%;background:#68d8b0}.stop-guide-track i{position:absolute;top:-3px;height:13px;width:3px;background:#f2f7f9;transform:translateX(-50%)}.manual-stop-guide[data-state=brake] strong,.manual-stop-guide[data-state=overrun] strong{color:#ffac80}.manual-stop-guide[data-state=aligned] strong{color:#68d8b0}.desk-minimised .manual-stop-guide{grid-row:2;padding-top:5px}.desk-minimised .manual-stop-guide small{font-size:9px}

/* Lightweight loading screen, displayed before the module graph is ready. */
#loadingPanel{position:fixed;inset:0;z-index:9998;display:grid;place-items:center;background:radial-gradient(ellipse at 75% 15%,#22384c 0,transparent 65%),#0d151e;color:#edf3f8;font-family:Segoe UI,Arial,sans-serif}
.loading-card{width:min(570px,88vw);padding:34px;border:1px solid #3a4b5a;border-radius:12px;background:#14202beF;box-shadow:0 24px 80px #0005}
.loading-eyebrow{font-size:11px;letter-spacing:.22em;color:#9cb6c9}.loading-card h1{font-size:30px;margin:20px 0}.loading-card p{line-height:1.6;color:#c0ceda}.loading-card progress{display:block;width:100%;height:9px;margin:24px 0 12px;accent-color:#65bde0}.loading-stages{border-top:1px solid #354555;padding-top:18px;margin-top:24px;font-size:11px;color:#99b0c2}.loading-card .loading-tip{font-size:13px}.loading-card #loadingElapsed{font-size:12px;color:#879baa}#loadingRetry{margin-left:20px}

.controller>.desk-eta,.desk-minimised .controller>.desk-eta{display:flex!important;flex-direction:column;gap:3px;margin-top:5px;font-size:10px;line-height:1.35;color:#c0d7df;font-variant-numeric:tabular-nums;letter-spacing:.015em;overflow-wrap:anywhere}.desk-eta>span:last-child{color:#93a6b3;font-size:9px}.desk-eta>span:empty{display:none}
.premium-station-badge{display:block;font-style:normal;font-size:9px;color:#e4bd81;letter-spacing:.025em;margin-top:3px}.premium-station-detail{color:#e4bd81;font-size:12px}
