:root{color-scheme:dark;--bg:#12221f;--panel:rgba(19,33,30,.90);--panel-solid:#1b2c28;--border:rgba(224,235,218,.12);--text:#f2f1e7;--muted:#a4b1a7;--mint:#b8d9b1;--amber:#e6bb79;--red:#d99680;--font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-family:var(--font);font-size:14px;color:var(--text)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#273a35}body{overscroll-behavior:none}button,input,select{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}button{border:0;background:none}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--mint);outline-offset:3px}button:disabled{opacity:.4;cursor:not-allowed}button:hover{filter:brightness(1.13)}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.icon-library{position:absolute;width:0;height:0;pointer-events:none}.icon{width:20px;height:20px;flex-shrink:0;vertical-align:middle}.icon.small{width:16px;height:16px}.glass{background:var(--panel);border:1px solid var(--border);box-shadow:0 8px 32px #0a161525;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}#viewport{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,#132e2b24 0%,transparent 20%,transparent 68%,#0c221e38 100%)}.topbar{position:absolute;top:22px;left:24px;right:24px;height:72px;display:flex;align-items:center;border-radius:15px;padding:0 20px;gap:18px}.brand{display:flex;align-items:center;gap:12px;padding:0;text-align:left}.brand-emblem{width:37px;height:42px;display:grid;place-items:center;color:var(--mint)}.brand-emblem svg{width:30px;height:35px;stroke-width:1.5}.brand-name{font-size:26px;font-weight:730;letter-spacing:-1.1px;line-height:1}.brand-name>span{display:block;margin-top:6px;font-size:8px;font-weight:600;letter-spacing:4.6px;text-align:center;color:var(--mint)}.top-divider{height:33px;width:1px;background:var(--border);margin:0 5px 0 14px}.location-button{text-align:left;padding:0;min-width:180px}.overline{font-size:9px;font-weight:600;letter-spacing:1.35px;color:var(--muted);line-height:1.5}.location-button>.overline{display:block;font-size:8px;letter-spacing:1.7px}.location-button>span:last-child{display:flex;align-items:center;gap:18px;margin-top:4px}.location-button b{font-size:14px;font-weight:520}.top-spacer{flex:1}.weather-top{display:flex;align-items:center;gap:10px;font-size:12px;white-space:nowrap}.weather-top svg{color:var(--amber)}.muted{color:var(--muted)}.live-pill{border:1px solid #b8d9b12c;color:var(--mint);font-size:8px;letter-spacing:1.1px;font-weight:650;border-radius:20px;padding:8px 10px;display:flex;gap:7px;align-items:center;white-space:nowrap}.live-pill i,.status-dot,.live-led{width:5px;height:5px;display:inline-block;border-radius:50%;background:var(--mint);box-shadow:0 0 9px #b8d9b135}.icon-button{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;color:#cad5cb;flex-shrink:0}.icon-button:hover{background:#ffffff0a}.icon-button.active{color:var(--mint);background:#b8d9b114}.journey-card{position:absolute;left:24px;top:118px;width:266px;padding:20px;border-radius:13px}.eyebrow{display:flex;align-items:center;gap:8px;letter-spacing:1.9px;font-size:9px;color:var(--mint);font-weight:620}.eyebrow button{margin-left:auto}.bare{padding:0;color:inherit;display:inline-flex;gap:7px;align-items:center}.journey-route{display:flex;gap:14px;margin:26px 0 24px}.route-line{height:46px;width:1px;background:linear-gradient(var(--mint),#b8d9b122);position:relative;margin:5px 4px 0 3px;flex-shrink:0}.route-line:before{content:'';position:absolute;width:7px;height:7px;border:2px solid var(--mint);border-radius:50%;top:0;left:-5px;background:var(--bg)}.route-line:after{content:'';position:absolute;width:4px;height:4px;border:1px solid #b8d9b166;border-radius:50%;bottom:0;left:-2.5px}.journey-card h2{font-weight:560;letter-spacing:-.25px;font-size:20px;margin:6px 0}.journey-card p{font-size:10px;color:var(--muted);margin:0;line-height:1.7}.primary{border-radius:7px;background:var(--mint);color:#233b2b;font-size:12px;font-weight:650;padding:12px 17px;display:inline-flex;align-items:center;justify-content:center;gap:14px}.depart{width:100%;justify-content:space-between}.depart .icon{width:17px}.journey-hint{margin-top:12px;text-align:center;color:var(--muted);font-size:9px;line-height:1.5}.tool-rail{position:absolute;right:24px;top:118px;display:flex;flex-direction:column;gap:7px;padding:10px 7px;border-radius:13px}.rail-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:43px;min-height:43px;border-radius:6px;color:#d0dbd0}.rail-button svg{width:19px;height:19px}.rail-button span{font-size:8px;font-weight:520;color:var(--muted)}.rail-button:hover{background:#b8d9b117;color:var(--mint)}.rail-separator{height:1px;background:var(--border);margin:3px 6px}.minimap-card{position:absolute;right:100px;top:118px;width:222px;border-radius:12px;padding:14px 14px 10px;background:rgba(21,38,34,.84)}.minimap-card>div:first-child{display:flex;align-items:center;justify-content:space-between}.minimap-card canvas{width:100%;height:123px;display:block;margin-top:8px}.map-caption{display:flex;justify-content:space-between;font-size:8px;color:var(--muted);border-top:1px solid var(--border);padding-top:9px;letter-spacing:.3px}.map-caption>span:first-child{display:flex;align-items:center;gap:5px}.map-dot{display:inline-block;width:4px;height:4px;background:var(--amber);border-radius:50%}.view-controls{position:absolute;bottom:230px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;border-radius:20px;padding:5px 9px;font-size:9px;letter-spacing:1px;background:#192c25bc;white-space:nowrap}.view-controls button{padding:4px 6px;display:flex;align-items:center;gap:9px;font-size:9px;color:#d5dfd1;letter-spacing:1.15px}.view-controls>button{font-size:17px}.keycap,kbd{font-family:var(--font);font-size:9px;border:1px solid #a5b7a638;background:#b3cdb00a;border-radius:3px;padding:1px 4px;color:#a8b7a5;line-height:1.4}.keycap{padding:2px 4px;font-size:8px}.cab-deck{position:absolute;left:24px;right:24px;bottom:44px;height:165px;border-radius:14px;display:grid;grid-template-columns:202px minmax(200px,1fr) minmax(255px,1.05fr) minmax(210px,.9fr);padding:18px 0 13px}.speed-section{border-right:1px solid var(--border);padding:0 18px}.train-ident{display:flex;align-items:center;gap:8px;white-space:nowrap;justify-content:center}.train-ident button{font-size:9px;font-weight:620;letter-spacing:1.2px}.train-ident>.icon{color:var(--mint);width:14px}.live-led{width:4px;height:4px}.speed-instrument{position:relative;width:163px;height:112px;margin:7px auto 0}.speed-arc{position:absolute;width:163px;height:105px;inset:0;stroke-width:2}.arc-track{stroke:#e9f0e322;stroke-width:3}.arc-fill{stroke:var(--mint);stroke-width:3;stroke-dasharray:0 100;transition:stroke-dasharray .2s}.speed-value{position:absolute;inset:23px 0 0;display:flex;flex-direction:column;align-items:center;gap:1px;font-variant-numeric:tabular-nums}.speed-value b{font-size:49px;line-height:1.1;font-weight:380;letter-spacing:-2px}.speed-value>span{color:var(--muted);font-size:10px}.speed-limit{position:absolute;right:0;bottom:5px;border:2px solid #b8bdab93;width:29px;height:29px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:650;background:#21342a}.traction-group{border-right:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;padding:1px 25px 0}.lever>span:first-child{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.2px;color:#c6d3c5;white-space:nowrap}.lever b{font-size:11px;color:var(--mint);letter-spacing:0;font-weight:500}.lever input{display:block;margin:21px 0 15px;width:100%;height:5px;background:#091810;accent-color:var(--mint);appearance:none;border-radius:3px;outline:0;cursor:pointer}.lever input::-webkit-slider-thumb{appearance:none;width:17px;height:27px;background:linear-gradient(90deg,#839580,#c3d3bd,#a1b599);border-radius:3px;box-shadow:0 3px 8px #0005;border:1px solid #e0ecd046}.lever input::-moz-range-thumb{width:15px;height:26px;background:var(--mint);border:0;border-radius:3px}.brake-lever input::-webkit-slider-thumb{background:linear-gradient(90deg,#997c57,#e7c899,#c6a675)}.brake-lever input::-moz-range-thumb{background:var(--amber)}.brake-lever b{color:var(--amber)}.lever-ticks{display:flex;justify-content:space-between;font-size:6px;letter-spacing:.5px;color:#839384}.reverser{grid-column:1/-1;display:flex;align-items:center;gap:14px;border-top:1px solid var(--border);padding-top:11px}.reverser>.overline{font-size:8px}.reverser>div{display:flex;gap:2px;border:1px solid var(--border);border-radius:4px;padding:2px}.reverser button{font-size:9px;width:24px;height:22px;border-radius:3px;color:var(--muted)}.reverser button.active{background:#b8d9b124;color:var(--mint)}#traction-status{font-size:7px;letter-spacing:.7px;color:var(--muted);margin-left:auto;text-align:right}.system-group{border-right:1px solid var(--border);padding:0 21px;display:grid;grid-template-rows:45px 37px 28px;gap:9px}.system-buttons{display:flex;gap:7px;justify-content:space-between}.system-buttons button{display:flex;flex:1;align-items:center;flex-direction:column;gap:5px;padding:3px 1px;border-radius:4px;color:#9eae9f}.system-buttons button svg{width:20px;height:20px}.system-buttons button>span{font-size:8px}.system-buttons button.active{color:var(--mint)}.system-buttons button.active>span{color:#d0dfc9}.system-buttons button:hover{background:#ffffff08}.small-meters{display:grid;grid-template-columns:1fr 1fr;gap:20px}.small-meters>div{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:6px}.small-meters>div>span{font-size:7px;color:var(--muted);letter-spacing:.6px}.small-meters b{font-size:11px;text-align:right;font-weight:500;white-space:nowrap}.small-meters small{font-size:8px;color:var(--muted);font-weight:400}.small-meters i{grid-column:1/-1;height:2px;background:#0c1a14;display:block}.small-meters em{height:100%;display:block;background:#96b88a;width:100%;max-width:100%}#grade-bar{width:50%;background:#b7ac8c}.emergency{border:1px solid #c67f674d;background:#9b544a12;display:flex;align-items:center;gap:8px;justify-content:center;border-radius:4px;color:var(--red);font-size:8px;font-weight:600;letter-spacing:.75px}.emergency kbd{border-color:#b8806955;color:#bf9381;margin-left:6px;font-size:7px}.emergency.latched{background:#8c372c66;border-color:#e99b7b;color:#ffd0af}.stop-square{border:1.3px solid currentColor;width:8px;height:8px;border-radius:1px}.next-stop{padding:0 24px 0 25px}.next-stop>.overline{display:flex;justify-content:space-between;align-items:center}.next-stop h3{margin:11px 0 11px;font-size:17px;letter-spacing:-.3px;font-weight:530}.stop-distance{display:flex;align-items:baseline;gap:5px}.stop-distance>b{font-size:25px;font-weight:400;font-variant-numeric:tabular-nums}.stop-distance>span{font-size:10px;color:var(--muted)}.stop-distance>.eta{margin-left:auto;font-size:6px;letter-spacing:.65px}.route-progress{height:2px;background:#8daa8230;position:relative;margin-top:11px}.route-progress>i{display:block;height:100%;background:var(--mint);width:5%}.route-progress>span{position:absolute;right:0;top:-3px;width:7px;height:7px;border-radius:50%;border:1px solid var(--mint);background:#22382a}.next-meta{display:flex;justify-content:space-between;margin-top:10px;font-size:8px;color:var(--muted)}#signal-status i{display:inline-block;width:4px;height:4px;background:var(--mint);border-radius:50%;margin-right:4px}.footer{position:absolute;left:26px;right:26px;bottom:16px;display:flex;gap:22px;align-items:center;justify-content:space-between;color:#e0e5dabb;font-size:8px;text-shadow:0 1px 3px #0008;white-space:nowrap}.keyboard-hints{display:flex;gap:5px;align-items:center}.keyboard-hints>span{margin:0 6px;color:#c7d6c588}.footer .bare{font-size:9px}.render-status{display:flex;gap:10px;align-items:center;letter-spacing:.6px}.render-status i{width:4px;height:4px;display:inline-block;background:var(--mint);border-radius:50%}.render-status b{font-size:8px;font-weight:650}.render-status>span{font-size:8px;color:#b9c4b5}.hidden{display:none!important}#toasts{position:fixed;left:50%;bottom:265px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:20;pointer-events:none;max-width:90vw}.toast{background:#162a23ec;border:1px solid #b8d9b133;box-shadow:0 4px 20px #0003;border-radius:8px;color:#ebeddf;padding:12px 20px;font-size:12px;max-width:540px;line-height:1.5;animation:toast-in .2s ease-out}.toast.error{border-color:#dba5817a}.paused-badge{position:absolute;left:50%;top:112px;transform:translateX(-50%);border-radius:8px;background:#192a25e8;border:1px solid var(--border);padding:10px 14px;font-size:9px;letter-spacing:1.5px;display:flex;align-items:center;gap:16px}.paused-badge button{color:var(--mint);font-size:11px;letter-spacing:0}.safety-banner{position:absolute;left:50%;bottom:270px;transform:translateX(-50%);background:#813d30eb;border:1px solid #e0ad8170;border-radius:7px;padding:12px 18px;font-size:11px;max-width:450px;text-align:center}.restore-hud{position:fixed;bottom:20px;right:20px;background:#18372dba;border:1px solid var(--border);border-radius:8px;padding:10px;color:#e9eddf;z-index:4}.loading{position:fixed;inset:0;background:radial-gradient(ellipse at 60% 30%,#375849,#172c25 50%,#101f1c);display:grid;place-items:center;z-index:80;transition:opacity .55s}.loading.done{opacity:0;pointer-events:none}.loading-inner{text-align:center;width:320px}.loading-mark{display:inline-grid;place-items:center;width:62px;height:74px;color:var(--mint);border:1px solid #b8d9b13a;border-radius:25px 25px 13px 13px}.loading-mark svg{width:36px;height:40px;stroke-width:1.15}.loading h1{font-size:49px;letter-spacing:-2.5px;font-weight:600;margin:18px 0}.loading h1>span{display:block;letter-spacing:8px;font-size:10px;color:var(--mint);margin:10px 0 0 8px;font-weight:500}.loading p{font-family:Georgia,serif;font-size:17px;color:#ccd7c6;font-style:italic}.loading-progress{margin:43px auto 13px;width:210px;height:2px;background:#d6e4c81f;border-radius:2px}.loading-progress i{display:block;height:100%;width:3%;background:var(--mint);transition:width .3s}.loading #loading-label{font-size:10px;color:var(--muted)}.loading small{display:block;margin-top:48px;color:#819486;font-size:9px;letter-spacing:1.6px}.fatal{position:fixed;inset:20%;padding:40px;background:#1b2c26;border:1px solid var(--red);border-radius:18px;z-index:100;overflow:auto}.fatal h1{font-size:24px}.fatal p{line-height:1.7;font-size:12px}.fatal .muted{font-size:11px}dialog{width:min(1000px,calc(100vw - 64px));max-height:calc(100dvh - 72px);color:var(--text);background:#1c2c27f7;border:1px solid #dce9cf2a;border-radius:17px;padding:0;box-shadow:0 25px 90px #0007;overscroll-behavior:contain}dialog::backdrop{background:#0b1a1677;backdrop-filter:blur(6px)}.dialog-header{padding:24px 28px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);background:#1c2c27f7;position:sticky;top:0;z-index:2}.dialog-header h1{font-size:25px;font-weight:500;letter-spacing:-.6px;margin:6px 0 0}.dialog-header>.icon-button{background:#ffffff08}#panel-content{padding:24px 28px 28px;line-height:1.6}.panel-intro{font-size:12px;color:#b2c0b0;max-width:670px;margin:0 0 22px}.world-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.world-card{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#26372d;text-align:left;padding:0;position:relative}.world-card.selected{border-color:#b8d9b185}.world-art{height:112px;position:relative;overflow:hidden;background:linear-gradient(175deg,var(--sky),#c2cfc0)}.world-art:before{content:'';position:absolute;inset:25px -20px -3px;background:var(--mount);clip-path:polygon(0% 100%,0% 90%,20% 18%,29% 38%,43% 0,64% 53%,73% 30%,100% 89%,100% 100%)}.world-art:after{content:'';position:absolute;inset:60px -15px -6px;background:var(--hill);clip-path:polygon(0 58%,20% 8%,36% 55%,59% 5%,80% 43%,100% 18%,100% 100%,0 100%)}.world-art .art-water{position:absolute;bottom:0;height:14px;left:0;right:0;background:var(--water);z-index:1}.world-art .art-track{position:absolute;bottom:13px;left:5%;right:-5%;height:2px;background:#c9c7b5;transform:rotate(-5deg);z-index:1}.world-art .art-train{position:absolute;z-index:1;width:46px;height:9px;background:#eeece0;border-radius:3px 8px 0 0;left:35%;bottom:17px;transform:rotate(-5deg);border-bottom:3px solid #b67555}.world-art .art-train:before{content:'';position:absolute;left:6px;right:5px;height:3px;top:1px;background:repeating-linear-gradient(90deg,#435c60 0 4px,#eeece0 4px 6px)}.world-card .card-text{padding:13px}.card-text .overline{font-size:7px;letter-spacing:1px}.card-text h3{font-weight:540;font-size:14px;line-height:1.2;margin:5px 0 9px}.card-text p{font-size:10px;color:var(--muted);margin:0}.world-card .check{position:absolute;top:8px;right:8px;background:#1f3c2ccd;color:var(--mint);font-size:9px;padding:2px 7px;border-radius:10px;z-index:2}.fleet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.fleet-card{background:#25362c;border:1px solid var(--border);border-radius:10px;padding:18px;text-align:left}.fleet-card.selected{border-color:#b8d9b175}.fleet-art{height:69px;display:grid;place-items:center;background:radial-gradient(ellipse,#566f432f,transparent)}.fleet-art svg{width:100%;height:60px;stroke-width:.8}.fleet-card h3{font-weight:520;font-size:17px;margin:13px 0 0}.fleet-card .family{font-size:10px;color:var(--mint)}.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:10px;margin:12px 0 16px}.spec-grid span{color:var(--muted);font-size:8px;display:block;letter-spacing:.7px}.spec-grid b{font-weight:500;font-size:12px}.secondary{background:#b8d9b112;border:1px solid #b8d9b131;border-radius:6px;padding:8px 12px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:#dae4d1}.secondary.selected,.secondary.active{background:#b8d9b12b;color:var(--mint);border-color:#b8d9b16b}.danger-button{color:#e2ac94;border-color:#c8967d50;background:#8b4c2c15}.panel-two-column{display:grid;grid-template-columns:1fr 1fr;gap:28px}.panel-section{border:1px solid var(--border);border-radius:10px;padding:20px;background:#ffffff02;margin-bottom:18px}.panel-section h3{font-size:14px;font-weight:520;margin:0 0 18px;color:#dce4d0}.field{display:block;margin:15px 0}.field>span{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#c1cebb;margin-bottom:9px}.field small{color:var(--muted);font-size:9px}.field input[type=range]{width:100%;accent-color:var(--mint);height:5px}.field input[type=number],.field input[type=text],.field select,select.select{background:#14251e;border:1px solid #b8d9b129;border-radius:5px;padding:9px 10px;width:100%;color:#dae1d2;font-size:12px}.toggle-row{display:flex;align-items:center;justify-content:space-between;font-size:11px;margin:16px 0;gap:20px}.toggle-row input{accent-color:var(--mint);width:17px;height:17px;flex-shrink:0}.toggle-row small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.button-row{display:flex;gap:9px;flex-wrap:wrap}.section-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:16px 0 10px}.weather-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.weather-choice{border:1px solid var(--border);padding:15px 8px;border-radius:7px;display:flex;align-items:center;justify-content:center;gap:7px;color:#bfceba;font-size:11px}.weather-choice.active{background:#b8d9b119;border-color:#b8d9b155}.weather-choice svg{width:18px;height:18px}.stats-table{width:100%;border-collapse:collapse;font-size:11px}.stats-table td{padding:9px 4px;border-bottom:1px solid var(--border)}.stats-table td:first-child{color:var(--muted)}.stats-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}.map-layout{display:grid;grid-template-columns:1fr 225px;gap:20px}.large-map-wrap{position:relative;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:#15291f}.large-map{display:block;width:100%;height:430px;touch-action:none;cursor:crosshair}.map-legend{display:flex;flex-wrap:wrap;gap:14px;padding:9px 12px;border-top:1px solid var(--border);font-size:9px;color:var(--muted)}.station-list button{width:100%;display:flex;justify-content:space-between;text-align:left;padding:11px 0;border-bottom:1px solid var(--border);font-size:11px;align-items:center}.station-list button>span{font-size:9px;color:var(--muted)}.map-note{font-size:10px;color:var(--muted);line-height:1.7;margin:15px 0}.editor-toolbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:13px}.editor-toolbar button{font-size:10px;padding:7px 10px}.editor-footer{display:flex;align-items:center;gap:10px;margin-top:15px;flex-wrap:wrap}.editor-footer .primary{margin-left:auto}.editor-status{font-size:10px;color:var(--muted)}.dispatch-train{border:1px solid var(--border);border-radius:7px;padding:13px;margin-bottom:10px;display:flex;align-items:center;gap:15px}.dispatch-train div{flex:1}.dispatch-train b{font-size:12px;font-weight:530}.dispatch-train small{display:block;color:var(--muted);font-size:9px}.mission-card{border:1px solid var(--border);border-radius:9px;padding:18px;display:flex;align-items:center;gap:18px;margin-bottom:12px}.mission-card .mission-icon{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:#b8d9b112;color:var(--mint)}.mission-card h3{font-weight:540;font-size:15px;margin:0 0 5px}.mission-card p{margin:0;color:var(--muted);font-size:11px}.mission-card .secondary{margin-left:auto;white-space:nowrap}.key-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 35px}.key-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border);font-size:12px}.guide-step{display:flex;gap:13px;font-size:12px;line-height:1.7;margin:16px 0;color:#c9d5bf}.guide-step>b{display:grid;place-items:center;border:1px solid var(--border);color:var(--mint);min-width:29px;height:29px;border-radius:50%;font-size:11px}.guide-step strong{color:var(--text);font-weight:550}.panel-notice{background:#b8d9b10a;border:1px solid #b8d9b124;border-radius:7px;padding:13px 15px;font-size:10px;color:var(--muted);margin-top:18px}.hud-hidden #app-ui,.hud-hidden .vignette{display:none}.hud-hidden #restore-hud{display:block!important}@keyframes toast-in{from{transform:translateY(6px);opacity:0}to{transform:translateY(0);opacity:1}}
@media(min-width:1600px){.cab-deck{grid-template-columns:225px minmax(230px,1.1fr) minmax(280px,1fr) minmax(240px,.9fr);height:180px;padding-top:23px;left:32px;right:32px}.view-controls{bottom:245px}.next-stop h3{font-size:20px}.speed-section{padding-top:0}.speed-instrument{width:175px}.speed-arc{width:175px;height:111px}.traction-group{padding:0 35px}.system-group{padding:0 32px}.topbar{left:32px;right:32px}.journey-card{left:32px}.tool-rail{right:32px}.minimap-card{right:108px}.next-stop{padding-left:32px}}
@media(max-width:1100px){.live-pill{display:none}.topbar{gap:13px}.cab-deck{grid-template-columns:174px 1fr 1.13fr}.next-stop{display:none}.traction-group{padding:0 20px}.system-group{border:0;padding:0 20px}.speed-section{padding:0 9px}.keyboard-hints{font-size:7px}.render-status{gap:7px}.minimap-card{width:190px}.journey-card{width:240px}.world-grid{grid-template-columns:repeat(3,1fr)}.reverser{gap:8px}}
@media(max-width:760px){.topbar{left:12px;right:12px;top:12px;height:59px;padding:0 12px;gap:7px;border-radius:11px}.brand{gap:6px}.brand-emblem{width:26px;height:33px}.brand-emblem svg{width:24px;height:28px}.brand-name{font-size:22px}.brand-name>span{font-size:6px;letter-spacing:3.8px;margin-top:5px}.top-divider{margin:0 5px;height:28px}.location-button{min-width:0;max-width:160px;flex:1}.location-button>.overline{font-size:6px;letter-spacing:1px}.location-button b{font-size:11px;white-space:nowrap}.location-button>span:last-child{gap:4px}.location-button .icon{width:12px}.weather-top{display:none}.top-spacer{display:none}.icon-button{width:30px}.desktop-only{display:none!important}.journey-card{left:12px;top:86px;width:218px;padding:15px}.journey-route{margin:18px 0}.journey-card h2{font-size:18px}.journey-card p{font-size:9px}.journey-hint{font-size:8px}.tool-rail{right:12px;top:86px;padding:6px 4px;gap:4px;border-radius:10px}.rail-button{width:38px;min-height:39px;gap:3px}.rail-button svg{width:17px;height:17px}.rail-button span{font-size:7px}.minimap-card{display:none}.cab-deck{left:12px;right:12px;bottom:33px;grid-template-columns:135px 1fr 1fr;height:146px;padding:13px 0 8px}.train-ident button{font-size:8px;letter-spacing:.5px}.train-ident .icon{display:none}.speed-instrument{width:122px;height:100px;margin-top:10px}.speed-arc{width:122px;height:90px}.speed-value{inset:24px 0 0}.speed-value b{font-size:36px}.speed-value>span{font-size:8px}.speed-limit{width:23px;height:23px;font-size:8px;bottom:4px;right:0}.traction-group{padding:0 12px;gap:9px 13px}.lever>span:first-child{font-size:7px;letter-spacing:.3px}.lever b{font-size:9px}.lever input{margin:22px 0 17px}.lever-ticks{font-size:5px}.lever-ticks span:nth-child(2){display:none}.reverser{gap:8px;padding-top:8px}.reverser>.overline{display:none}#traction-status{font-size:6px}.reverser button{height:19px;width:19px}.system-group{padding:0 12px;grid-template-rows:39px 30px 25px;gap:8px}.system-buttons{gap:1px}.system-buttons button>span{font-size:6px}.system-buttons button svg{width:17px;height:17px}.small-meters{gap:9px}.small-meters>div>span{font-size:5px;letter-spacing:.4px}.small-meters b{font-size:9px}.small-meters small{font-size:6px}.emergency{font-size:6px;letter-spacing:.25px;gap:5px}.emergency kbd{display:none}.view-controls{bottom:194px;font-size:8px}.view-controls #camera-name{font-size:8px}.footer{left:14px;right:14px;bottom:12px;font-size:7px}.keyboard-hints{display:none}.footer .bare{font-size:8px}.footer .icon{width:12px;height:12px}.render-status b,.render-status>span{font-size:6px}.safety-banner{bottom:230px;font-size:9px}#toasts{bottom:237px}.toast{font-size:10px;padding:10px 14px}dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:12px}.dialog-header{padding:17px 18px}.dialog-header h1{font-size:22px}.dialog-header .overline{font-size:8px}#panel-content{padding:18px}.fleet-grid{grid-template-columns:repeat(2,1fr);gap:10px}.fleet-card{padding:12px}.world-grid{grid-template-columns:repeat(2,1fr);gap:10px}.world-art{height:95px}.panel-two-column{grid-template-columns:1fr;gap:0}.panel-section{padding:15px;margin-bottom:15px}.map-layout{grid-template-columns:1fr}.large-map{height:330px}.map-layout>aside{display:none}.key-grid{grid-template-columns:1fr}.mission-card{padding:13px;gap:10px;flex-wrap:wrap}.mission-card .mission-icon{display:none}.mission-card .secondary{margin-left:0}.fatal{inset:12px;padding:25px}.paused-badge{top:82px;left:50%;font-size:7px;padding:7px 10px;gap:10px}.paused-badge button{font-size:9px}}
@media(max-width:560px) and (orientation:portrait){.cab-deck{height:226px;grid-template-columns:123px 1fr;grid-template-rows:119px 78px;padding:12px 0 10px;gap:10px 0}.speed-section{border-right:1px solid var(--border);padding:0 5px}.speed-instrument{width:112px}.speed-arc{width:112px;height:91px}.speed-value{top:25px}.speed-limit{bottom:3px}.traction-group{border:0;padding:2px 14px 0;gap:8px 18px}.lever input{margin:21px 0 15px}.lever>span:first-child{font-size:8px}.lever b{font-size:10px}.lever-ticks{font-size:6px}.reverser{padding-top:7px}.reverser button{width:25px;height:23px}.reverser #traction-status{font-size:7px}.system-group{grid-column:1/-1;border-top:1px solid var(--border);padding:11px 12px 0;display:grid;grid-template-columns:1fr 113px;grid-template-rows:40px 15px;gap:8px 12px}.system-buttons{grid-row:1;grid-column:1;gap:6px}.system-buttons button svg{width:20px;height:20px}.system-buttons button>span{font-size:7px}.emergency{grid-row:1;grid-column:2;letter-spacing:.5px;line-height:1.5;font-size:7px;padding:0 10px}.small-meters{grid-row:2;grid-column:1/-1;display:flex;justify-content:space-between;gap:20px}.small-meters>div{display:flex;gap:10px}.small-meters i{display:none}.small-meters b{font-size:8px}.small-meters>div>span{font-size:6px}.view-controls{bottom:275px}.safety-banner{bottom:316px;min-width:260px}#toasts{bottom:310px}.journey-card{width:210px}.brand-name{font-size:20px}.brand-name>span{font-size:5.5px;letter-spacing:3.6px}.location-button>.overline{font-size:5px;letter-spacing:.75px}.location-button b{font-size:10px}.top-divider{margin:0 4px}.topbar .icon-button{width:27px}.topbar #audio-toggle{display:none}.tool-rail{gap:3px}.rail-button{min-height:38px}.card-text h3{font-size:13px}.card-text .overline{font-size:6px}.fleet-card h3{font-size:14px}.spec-grid{gap:8px}.spec-grid b{font-size:11px}}
@media(max-height:570px) and (orientation:landscape){.topbar{top:9px;height:50px;left:12px;right:12px}.brand-name{font-size:21px}.brand-name>span{font-size:5px;letter-spacing:4px}.journey-card{top:72px;width:195px;padding:12px}.journey-route{margin:12px 0}.journey-card h2{font-size:16px}.journey-card p,.journey-hint{display:none}.journey-route .route-line{height:32px}.depart{font-size:10px;padding:9px 10px}.journey-card .overline{font-size:7px}.journey-card .eyebrow{font-size:7px}.tool-rail{top:72px;display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:6px}.rail-button{min-height:35px}.rail-separator{display:none}.rail-button span{font-size:6px}.minimap-card{display:none}.cab-deck{height:114px;bottom:25px;padding:9px 0 5px;grid-template-columns:139px 1fr 1.1fr;left:12px;right:12px}.speed-section{padding:0 7px}.train-ident button{font-size:7px}.speed-instrument{width:115px;height:76px;margin-top:1px}.speed-arc{width:115px;height:81px}.speed-value{top:20px}.speed-value b{font-size:32px}.speed-value>span{font-size:7px}.speed-limit{bottom:0}.traction-group{padding:0 16px;gap:3px 18px}.lever>span:first-child{font-size:7px}.lever input{margin:15px 0 12px}.lever-ticks{font-size:5px}.reverser{padding-top:7px}.reverser .overline{display:none}.reverser button{width:20px;height:17px}.reverser #traction-status{font-size:6px}.system-group{padding:0 15px;grid-template-rows:33px 20px 22px;gap:6px}.system-buttons button svg{height:17px}.system-buttons button>span{font-size:6px}.small-meters{gap:14px}.small-meters i{display:none}.small-meters>div>span{font-size:6px}.small-meters b{font-size:9px}.emergency{font-size:6px}.emergency kbd{display:none}.view-controls{bottom:150px;padding:3px 7px}.view-controls button{font-size:7px;padding:2px 3px}.view-controls>button{font-size:13px}.keycap{display:none}.footer{bottom:8px;font-size:7px}.keyboard-hints{display:none}.safety-banner{bottom:178px;font-size:9px;padding:8px 12px}#toasts{bottom:182px}.paused-badge{top:71px}.next-stop{display:none}.weather-top{font-size:10px}.live-pill{display:none}.world-art{height:78px}.world-grid{grid-template-columns:repeat(4,1fr)}dialog{max-height:calc(100dvh - 20px)}.dialog-header{padding:12px 20px}.dialog-header h1{font-size:19px}.dialog-header .overline{font-size:7px}.fleet-grid{grid-template-columns:repeat(3,1fr)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* All editor and dispatch controls remain available on a phone, below the map. */
@media(max-width:760px){.map-layout>aside{display:block}.map-layout>aside .field{margin-top:16px}.rail-button{min-height:42px}.footer{bottom:max(12px,env(safe-area-inset-bottom))}.cab-deck{bottom:max(33px,calc(env(safe-area-inset-bottom) + 25px))}.topbar{top:max(12px,env(safe-area-inset-top))}}
@media(max-height:570px) and (orientation:landscape){.rail-button{min-height:35px}.footer{bottom:8px}.cab-deck{bottom:25px}.topbar{top:9px}}

/* Expedition generator controls */
.expedition-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid #a9c19c26}
.expedition-head p{margin:8px 0 0;color:#bfccb7;line-height:1.65;max-width:580px}
.expedition-seed{font:11px monospace;white-space:nowrap;letter-spacing:.08em;color:#dfc599;border:1px solid #dfc59944;border-radius:6px;padding:9px 12px}
.generation-controls{display:grid;grid-template-columns:1.35fr 1fr 1fr 1fr;gap:20px;align-items:start}
.seed-entry{display:flex;gap:6px;align-items:center}.seed-entry input{min-width:0;width:100%;font:13px monospace}.seed-entry button{flex-shrink:0}
.expedition-stats{display:flex;gap:10px;flex-wrap:wrap;font:10px monospace;color:#c4d2bb;margin:12px 0 20px}.expedition-stats span{background:#a6bf9512;border:1px solid #a6bf951f;padding:7px 9px;border-radius:5px}
.expedition-preview{display:block;width:100%;height:134px;object-fit:cover;background:#1b3029}
.expedition-grid .card-text p{font-size:11px;line-height:1.55;min-height:36px;margin-bottom:8px}
.expedition-grid .card-text small{display:block;font-size:10px;color:#9ba992;line-height:1.5;min-height:28px}
.expedition-action{display:block;text-align:left;padding:0 16px 14px;color:#d9c6a2;font:9px monospace;letter-spacing:.12em}
@media(max-width:760px){.generation-controls{grid-template-columns:1fr 1fr;gap:12px}.expedition-head{align-items:flex-start;flex-direction:column;gap:10px}.expedition-grid .card-text p{font-size:10px}.expedition-preview{height:112px}}
@media(max-width:380px){.generation-controls{grid-template-columns:1fr}.expedition-stats{gap:5px}}

/* Cinematic Journeys: optional read-only guidance and non-modal photo controls. */
.driver-coach{display:block;width:100%;margin:14px 0 0;padding:12px 0 0;border:0;border-top:1px solid #bad2b12b;background:transparent;color:#c4d8bc;text-align:left;line-height:1.5;font-size:11px;cursor:pointer}
.driver-coach[hidden]{display:none}.coach-metrics{display:block;margin-top:7px;font-size:9px;color:#9cafa2}.coach-metrics b{color:#dfe7d2;margin-right:4px}.coach-metrics b+ b{margin-left:8px}.braking-advice #coach-message{color:#e8b97d}
#photo-mode,#journey-open{font-size:11px;padding:6px 8px}body.photo-mode #app-ui,body.photo-mode .vignette,body.photo-mode #restore-hud{visibility:hidden;pointer-events:none}
.photo-studio{position:fixed;z-index:35;bottom:max(22px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(700px,calc(100vw - 32px));padding:18px;border-radius:13px;background:#152923eb;color:#e0e7d8;box-sizing:border-box}
.studio-title{display:flex;gap:12px;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em}.studio-title small{display:block;font-size:10px;color:#a5b3a0;letter-spacing:0;margin-top:5px}.studio-fields{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:15px;align-items:end;margin-top:14px}.studio-fields label{display:grid;gap:8px;font-size:10px;text-transform:uppercase;color:#bdcdb5}.studio-fields input{width:100%;accent-color:#b9d5a7}.studio-fields select{max-width:100%;min-height:36px;background:#1d3429;color:#d8e4d0;border:1px solid #bacbaa44;border-radius:6px;padding:6px}
#route-profile{width:100%;height:200px;border-radius:8px;display:block;margin:15px 0}.journey-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:22px 0}.journey-stats div{border:1px solid #baceac25;border-radius:8px;padding:17px 12px;background:#a8c29908}.journey-stats b{display:block;font-size:27px;color:#d8e3c9;font-weight:500}.journey-stats span{display:block;font-size:10px;color:#a4b499;margin-top:6px}
@media(max-width:760px){.driver-coach{margin-top:6px;font-size:10px;padding-top:7px}.coach-metrics{font-size:8px}#photo-mode,#journey-open{padding:4px;font-size:10px}.view-controls{max-width:calc(100vw - 22px)}.studio-fields{grid-template-columns:1fr 1fr}.photo-studio{padding:12px;bottom:12px}.journey-stats{grid-template-columns:repeat(2,1fr)}.journey-stats div:last-child{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}.loading,.toast{animation:none!important;transition:none!important}}

/* The display pass owns vignette; do not darken the scene a second time. */
.vignette{display:none}
