:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#f7fbff;--muted:#aeb8c9;--panel:#090e14c7;--panel-strong:#0a0f16eb;--line:#ffffff29;--cyan:#54d7ff;--mint:#5ff0ba;--amber:#ffc857;--rose:#ff6f91;--steel:#1f2933;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;color:var(--ink);background:#090e14;margin:0;overflow:hidden}button,input{font:inherit}button{border:1px solid var(--line);color:var(--ink);cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid var(--amber);outline-offset:2px}#scene-root{background:radial-gradient(circle at 35% 25%,#5ff0ba29,#0000 28%),linear-gradient(#101820 0%,#071119 58%,#05080d 100%);position:fixed;inset:0}#scene-root canvas{touch-action:none;width:100%;height:100%;display:block}.status-bar,.route-map,.service-panel,.control-deck,#messageToast{z-index:5;-webkit-backdrop-filter:blur(18px);position:fixed}.status-bar{z-index:9;border:1px solid var(--line);background:linear-gradient(90deg,#080d13db,#0e171ea3);border-radius:8px;grid-template-columns:minmax(220px,auto) minmax(0,1fr) auto;align-items:start;gap:5px;min-height:62px;padding:5px 7px;display:grid;top:8px;left:8px;right:8px}.toolbar-actions{align-self:center;align-items:stretch;gap:5px;display:inline-flex}.environment-panel{z-index:8;border:1px solid var(--line);background:#0a0f16f0;border-radius:8px;width:min(310px,100vw - 32px);padding:10px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 18px 46px #00000057}.environment-panel[hidden]{display:none}.environment-controls{gap:10px;display:grid}.env-button,.env-icon-button{height:36px;color:var(--ink);background:#ffffff12;border-radius:8px;justify-content:center;align-items:center;gap:5px;font-weight:850;display:inline-flex}.env-button{width:100%;padding:0 10px}.toggle-pill{background:#ffffff0e;border:1px solid #ffffff29;border-radius:999px;grid-template-columns:1fr 1fr;min-width:0;display:grid;overflow:hidden;box-shadow:inset 0 0 0 1px #00000029}.toggle-pill .tool-button,.toggle-pill .env-button{min-width:0;color:var(--muted);background:0 0;border:0;border-radius:0}.toggle-pill .tool-button+.tool-button,.toggle-pill .env-button+.env-button{border-left:1px solid #ffffff1f}.toggle-pill .tool-button.active,.toggle-pill .env-button.active{color:#071119;background:linear-gradient(135deg,#5ff0baf5,#54d7ffe0);box-shadow:inset 0 0 0 1px #f7fbff5c,0 0 14px #54d7ff3d}.day-night-pill{min-height:36px}.env-icon-button{width:32px;padding:0}.env-button svg,.env-icon-button svg,.env-slider svg{width:16px;height:16px;color:var(--cyan)}.env-button.active,.env-icon-button.active{background:#5ff0ba21;border-color:#5ff0bab8;box-shadow:0 0 16px #5ff0ba2e}.env-slider{grid-template-columns:auto 1fr;align-items:center;gap:8px;min-width:0;padding:2px 0;display:grid}.env-slider input{width:100%;accent-color:var(--cyan);margin:0}.weather-modes{grid-template-columns:repeat(5,1fr);align-items:center;gap:4px;display:grid}.map-toggle{background:#ffffff14;border-radius:8px;justify-content:center;align-self:stretch;align-items:center;gap:6px;min-width:30px;min-height:30px;padding:0 6px;font-weight:800;display:inline-flex}.map-toggle span{display:none}.map-toggle svg{width:13px;height:13px;color:var(--cyan)}.map-toggle[aria-expanded=true]{background:#5ff0ba21;border-color:#5ff0bab8}.route-map{border:1px solid var(--line);background:var(--panel);border-radius:8px;width:min(290px,100vw - 24px);padding:8px;transition:opacity .18s,transform .18s,visibility .18s;top:96px;right:12px}.route-map.is-minimized{visibility:hidden;opacity:0;pointer-events:none;display:none;transform:translateY(-8px)}.route-map-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.route-map-head span{color:var(--muted);text-transform:uppercase;align-items:center;gap:6px;font-size:12px;font-weight:800;display:inline-flex}.route-map-head svg{width:15px;height:15px;color:var(--cyan)}.route-map-head strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}#routeMapSvg{background:radial-gradient(circle at 25% 30%,#54d7ff21,#0000 34%),linear-gradient(135deg,#ffffff12,#ffffff06);border-radius:8px;width:100%;height:auto;display:block}.route-line,.route-progress{fill:none;stroke-linecap:round;stroke-linejoin:round}.route-line{stroke:#ffffff2e;stroke-width:7px}.route-progress{stroke:url(#routeGlow);stroke-width:4px}.route-station-dot{fill:#101820;stroke:#f7fbffc7;stroke-width:2px}.route-station-dot.is-current{fill:var(--amber);stroke:var(--ink)}.route-station-label{fill:#f7fbffb8;paint-order:stroke;stroke:#05080de0;stroke-width:3px;stroke-linejoin:round;font-size:8px;font-weight:800}.route-train circle{fill:var(--cyan);stroke:var(--ink);stroke-width:2px;filter:drop-shadow(0 0 6px #54d7ffcc)}.route-train path{fill:var(--amber);stroke:#05080db3;stroke-width:1.2px}.brand-lockup{align-items:center;gap:8px;min-width:220px;display:flex}.brand-mark{color:#071119;background:linear-gradient(135deg, var(--cyan), var(--mint));border:1px solid #54d7ffb3;border-radius:8px;place-items:center;width:30px;height:30px;font-weight:900;display:grid}.eyebrow,.status-grid span,.mini-grid span,.service-row span,.control-label,label span{color:var(--muted);margin:0;font-size:11px}h1{margin:2px 0 0;font-size:13px;line-height:1.15}.status-grid{grid-template-columns:repeat(5,minmax(68px,1fr));gap:4px;min-width:min(700px,50vw);padding-top:18px;display:grid}.status-grid>div,.mini-grid>div{border:1px solid var(--line);background:#ffffff0d;border-radius:8px;flex-direction:column;justify-content:center;gap:2px;min-height:27px;padding:3px 6px;display:flex}.status-grid strong,.mini-grid strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.service-panel{z-index:8;border:1px solid var(--line);background:var(--panel);border-radius:8px;width:218px;padding:8px;transition:opacity .18s,transform .18s,visibility .18s;top:96px;left:12px}.service-panel.is-hidden{visibility:hidden;opacity:0;pointer-events:none;transform:translate(-16px)}.service-row{align-items:center;gap:10px;display:flex}.service-row svg{color:var(--mint)}.service-row strong{margin-top:2px;font-size:12px;display:block}.flow-meter{background:#ffffff1a;border-radius:999px;height:6px;margin:7px 0;overflow:hidden}.flow-meter span{border-radius:inherit;background:linear-gradient(90deg, var(--mint), var(--amber), var(--rose));width:0%;height:100%;transition:width .18s;display:block}.mini-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.control-deck{border:1px solid var(--line);background:var(--panel-strong);border-radius:8px;grid-template-columns:minmax(0,1.82fr) minmax(0,.64fr) minmax(0,.96fr) minmax(82px,.35fr);grid-template-areas:"cockpit sounds view action";align-items:stretch;gap:3px;padding:3px;font-size:9px;display:grid;bottom:6px;left:6px;right:6px}.control-block{background:#ffffff0b;border:1px solid #ffffff1a;border-radius:8px;min-width:0;padding:3px}.control-label,label{justify-content:space-between;align-items:center;gap:5px;min-height:11px;display:flex}.control-label svg,label svg{width:14px;height:14px;color:var(--cyan)}label span,.control-label{text-transform:uppercase}label strong{color:var(--amber);font-size:11px}.cockpit-block{grid-area:cockpit}.control-deck>.control-block:nth-of-type(2){grid-area:sounds}.view-block{grid-area:view}.action-block{grid-area:action}.cockpit-layout{grid-template-columns:minmax(0,1.35fr) minmax(210px,.82fr);gap:4px;margin-top:3px;display:grid}.cockpit-speed{grid-template-columns:minmax(98px,1fr) 62px minmax(108px,.84fr);align-items:center;gap:5px;min-height:54px;display:grid}.speedometer{--speed-ratio:0;background:radial-gradient(circle at 50% 92%,#54d7ff38,#0000 42%),linear-gradient(#ffffff0f,#ffffff06);border-radius:8px;align-content:center;justify-items:center;width:100%;min-width:0;height:54px;padding:0 4px;display:grid;position:relative;overflow:hidden}.speedometer:before{background:conic-gradient(from 270deg, var(--cyan) 0deg, var(--mint) calc(var(--speed-ratio) * 124deg), var(--amber) calc(var(--speed-ratio) * 180deg), #ffffff21 0deg, #ffffff21 180deg, transparent 180deg);content:"";border-radius:50%;width:60px;height:60px;position:absolute;top:5px;left:50%;transform:translate(-50%);-webkit-mask:radial-gradient(circle,#0000 0 55%,#000 57% 67%,#0000 69%);mask:radial-gradient(circle,#0000 0 55%,#000 57% 67%,#0000 69%)}.speedometer:after{content:"";background:#f7fbff;border-radius:50%;width:7px;height:7px;position:absolute;bottom:8px;left:50%;transform:translate(-50%);box-shadow:0 0 0 3px #080d13e6}.speedometer svg{width:11px;height:11px;color:var(--cyan);position:absolute;top:7px;left:7px}.speedometer span{z-index:1;color:var(--muted);text-transform:uppercase;font-size:6px;line-height:1;position:absolute;top:22px}.speedometer strong{z-index:1;color:var(--amber);text-align:center;white-space:nowrap;max-width:100%;padding:0 6px;font-size:clamp(9px,1vw,13px);line-height:1.05;position:absolute;bottom:6px}.speedometer b{width:2px;height:24px;transform:translateX(-50%) rotate(calc(-90deg + var(--speed-ratio) * 180deg));transform-origin:50% calc(100% - 3px);background:linear-gradient(#f7fbff38,#f7fbffeb);border-radius:999px;position:absolute;bottom:8px;left:50%}input[type=range]{width:100%;height:16px;accent-color:var(--cyan);margin:0}.horn-button{background:linear-gradient(#ff5e3a2e,#ffd16614);flex-direction:column;gap:3px;min-width:62px;min-height:54px;font-weight:800}.horn-button svg{width:17px;height:17px}.throttle-cluster{grid-template-columns:24px minmax(78px,1fr);align-items:center;gap:6px;display:grid}.throttle-slider{transform-origin:50%;appearance:none;background:0 0;width:54px;height:18px;transform:rotate(-90deg)}.throttle-slider::-webkit-slider-runnable-track{background:linear-gradient(#05080de6,#34404ef2);border:1px solid #ffffff1a;border-radius:999px;height:7px;box-shadow:inset 0 0 0 1px #54d7ff14}.throttle-slider::-moz-range-track{background:linear-gradient(#05080de6,#34404ef2);border:1px solid #ffffff1a;border-radius:999px;height:7px;box-shadow:inset 0 0 0 1px #54d7ff14}.throttle-slider::-webkit-slider-thumb{cursor:grab;-webkit-appearance:none;background:linear-gradient(#f7fbfffa,#7ad6ffe0),linear-gradient(90deg,#0000 35%,#080d132e 35% 65%,#0000 65%);border:2px solid #f7fbffeb;border-radius:6px;width:16px;height:20px;box-shadow:0 2px 8px #00000073,0 0 12px #54d7ff6b}.throttle-slider::-moz-range-thumb{cursor:grab;background:linear-gradient(#f7fbff,#75dcff);border:2px solid #f7fbffeb;border-radius:6px;width:16px;height:20px;box-shadow:0 2px 8px #00000073,0 0 12px #54d7ff6b}.cockpit-actions{gap:4px;display:grid}.max-speed-button{width:100%;min-width:0;min-height:24px}.danger-action{color:#fff7f2;background:linear-gradient(135deg,#ff5e3aeb,#9a2020e0);border:1px solid #ff5e3aa8;border-radius:8px;justify-content:center;align-items:center;gap:4px;min-height:24px;padding:0 7px;font-weight:800;display:inline-flex}.cockpit-doors{align-content:start;gap:0;display:grid}.door-pill{grid-template-columns:repeat(3,1fr)}.cockpit-status{display:none}.control-deck.autopilot-selected .cockpit-doors{grid-template-columns:minmax(128px,.7fr) minmax(0,1fr);align-items:stretch}.control-deck.autopilot-selected .door-pill{grid-template-columns:1fr}.control-deck.autopilot-selected #doorOpen,.control-deck.autopilot-selected #doorClose{display:none}.control-deck.autopilot-selected .autopilot-button{background:linear-gradient(135deg,#54d7ff47,#5ff0ba33);border-radius:999px;min-height:100%}.control-deck.autopilot-selected .autopilot-button span{display:none}.control-deck.autopilot-selected .autopilot-button svg{width:24px;height:24px}.control-deck.autopilot-selected .throttle-cluster{display:none}.control-deck.autopilot-selected .cockpit-speed{grid-template-columns:minmax(108px,1fr) 68px}.button-row,.segmented{flex-wrap:wrap;gap:3px;margin-top:3px;display:flex}.view-pill{background:#ffffff0e;border:1px solid #ffffff29;border-radius:999px;grid-template-columns:repeat(5,1fr);min-width:0;display:grid;overflow:hidden;box-shadow:inset 0 0 0 1px #00000029}.view-pill button{min-width:0;color:var(--muted);background:0 0;border:0;border-radius:0}.view-pill button+button{border-left:1px solid #ffffff1f}.view-pill button.active{color:#071119;background:linear-gradient(135deg,#5ff0baf5,#54d7ffe0);box-shadow:inset 0 0 0 1px #f7fbff5c,0 0 14px #54d7ff3d}.sound-bank-panel{gap:4px;margin-top:4px;display:grid}.sound-bank-panel[hidden]{display:none}.sound-bank-row{color:var(--muted);grid-template-columns:46px minmax(0,1fr);align-items:center;gap:6px;font-size:10px;display:grid}.sound-bank-row select{width:100%;min-width:0;height:24px;color:var(--ink);background:#ffffff14;border:1px solid #ffffff29;border-radius:8px;padding:0 8px}.evolution-tray{z-index:11;border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);background:#0a0f16e6;border-radius:8px;width:min(276px,100vw - 16px);padding:7px;position:fixed;bottom:64px;right:8px}.evolution-tray[hidden]{display:none}.evolution-tray-head{margin-bottom:6px}.evolution-tray-head span{color:var(--muted);text-transform:uppercase;align-items:center;gap:6px;font-size:11px;font-weight:800;display:inline-flex}.evolution-tray-head svg{width:14px;height:14px;color:var(--amber)}.evolution-tray-list{gap:5px;display:grid}.evolution-chip{text-align:left;background:#ffffff0f;border-radius:8px;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:7px;min-width:0;padding:5px;display:grid}.evolution-chip-preview{width:72px;height:24px;display:block;overflow:visible}.evolution-chip-train{width:100%;height:100%;transform:scale(var(--chip-scale));transform-origin:50%;justify-content:center;align-items:center;gap:1px;display:flex}.chip-car,.chip-end{background:linear-gradient(135deg, var(--chip), var(--glow));box-shadow:inset 0 0 0 1px #f7fbff2e}.chip-car{border-radius:3px;width:13px;height:13px}.chip-end{width:10px;height:10px}.end-cone .chip-end,.end-sphere .chip-end{border-radius:999px}.end-triangle .chip-end,.end-diamond .chip-end{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.end-cone .chip-front,.end-triangle .chip-front,.end-diamond .chip-front{clip-path:polygon(0 50%,100% 0,100% 100%)}.end-cone .chip-rear,.end-triangle .chip-rear,.end-diamond .chip-rear{clip-path:polygon(0 0,100% 50%,0 100%)}.evolution-chip-copy{gap:2px;min-width:0;display:grid}.evolution-chip-copy strong,.evolution-chip-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evolution-chip-copy strong{font-size:11px}.evolution-chip-copy small{color:var(--muted);font-size:9px}.evolution-chip.active{background:#5ff0ba1f;border-color:#5ff0bacc}.tool-button,.icon-button,.segmented button,.primary-action,.danger-action{background:#ffffff14;border-radius:8px;justify-content:center;align-items:center;gap:3px;min-height:20px;display:inline-flex}.tool-button,.primary-action,.danger-action{padding:0 6px}.icon-button{width:22px;padding:0}.tool-button svg,.icon-button svg,.segmented svg,.primary-action svg,.danger-action svg{width:12px;height:12px}.tool-button:hover,.icon-button:hover,.segmented button:hover{background:#ffffff21;border-color:#ffffff61}.primary-action:hover{background:linear-gradient(135deg,#ffd978,#f0a76e);border-color:#ffc857c7}.danger-action:hover{background:linear-gradient(135deg,#ff7258fa,#ac2727f0);border-color:#ff7e60e0}.suggested:not(:disabled){border-color:#ffc857f2;animation:1.2s ease-in-out infinite action-pulse;box-shadow:0 0 0 1px #ffc8574d,0 0 18px #ffc85773}.tool-button.suggested:not(:disabled),.segmented button.suggested:not(:disabled){background:#ffc85729}.autopilot-button.active{background:linear-gradient(135deg,#54d7ff38,#5ff0ba2e);border-color:#54d7ffe6;box-shadow:0 0 16px #54d7ff42}@keyframes action-pulse{0%,to{box-shadow:0 0 0 1px #ffc85738,0 0 12px #ffc85752}50%{box-shadow:0 0 0 2px #ffc85761,0 0 24px #ffc8579e}}.segmented{grid-template-columns:repeat(5,1fr);display:grid}.segmented button{min-width:0;padding:0 6px}.segmented button.active,.tool-button.active,.icon-button.active{color:#fff;background:#5ff0ba29;border-color:#5ff0bae0}.action-block{justify-content:center;align-items:center;display:flex}.primary-action{color:#111827;background:linear-gradient(135deg,#ffd166,#f4a261);border-color:#ffc8578c;width:100%;min-height:22px;font-weight:800}.primary-action:disabled{cursor:not-allowed;opacity:.56;filter:grayscale(.35)}#messageToast{max-width:min(360px,100vw - 24px);color:var(--ink);opacity:0;pointer-events:none;background:#0a0f16d1;border:1px solid #ffffff2e;border-radius:8px;padding:8px 11px;font-size:11px;transition:opacity .18s,transform .18s;display:none;inset:82px auto auto 50%;transform:translate(-50%,-10px)}#messageToast.show{opacity:1;transform:translate(-50%)}@media (width<=1450px){.control-deck{grid-template-columns:minmax(0,1.1fr) minmax(0,.8fr) 76px;grid-template-areas:"cockpit cockpit action""sounds view action"}.cockpit-layout{grid-template-columns:minmax(0,1.08fr) minmax(132px,.78fr)}}@media (width<=1220px){.status-bar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand tools""grid tools"}.brand-lockup{grid-area:brand}.status-grid{grid-area:grid}.toolbar-actions{grid-area:tools;align-self:start}.status-grid{width:100%;min-width:0}.service-panel,.route-map{top:118px}.control-deck{grid-template-columns:minmax(0,1.3fr) minmax(0,.96fr) 82px;grid-template-areas:"cockpit cockpit action""sounds view action"}#messageToast{top:108px}}@media (width<=760px){.status-bar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand tools""grid grid";gap:5px;min-height:74px;padding:6px;top:6px;left:6px;right:6px}.toolbar-actions{align-self:start;gap:5px}.map-toggle{min-width:28px;min-height:28px;padding:0 5px}.brand-lockup{gap:8px;min-width:0}.brand-mark{width:28px;height:28px;font-size:12px}.eyebrow{font-size:10px}h1{text-overflow:ellipsis;white-space:normal;max-width:calc(100vw - 90px);font-size:12px;overflow:hidden}.status-grid{grid-template-columns:repeat(5,minmax(58px,1fr));gap:4px;padding-top:0}.status-grid>div{min-height:24px;padding:2px 4px}.status-grid span,.status-grid strong{font-size:9px}.environment-panel{width:min(290px,100vw - 12px);padding:8px;right:-4px}.environment-controls{gap:7px}.env-button,.env-icon-button{height:32px}.service-panel{width:min(176px,100vw - 12px);padding:6px;top:86px;left:6px}.service-row{gap:7px}.service-row svg{width:18px;height:18px}.service-row strong{font-size:13px}.flow-meter{height:6px;margin:7px 0}.mini-grid{gap:5px}.mini-grid>div{min-height:34px;padding:5px 7px}.mini-grid span{font-size:10px}.mini-grid strong{font-size:12px}.route-map{width:min(220px,100vw - 12px);padding:6px;top:86px;right:6px}.control-deck{scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:stretch;gap:3px;max-height:none;padding:3px;font-size:10px;display:flex;bottom:6px;left:6px;right:6px;overflow:auto hidden}.control-deck::-webkit-scrollbar{display:none}.control-block{flex:none;padding:5px}.cockpit-block{width:232px}.cockpit-layout{grid-template-columns:1fr;gap:5px}.cockpit-speed{grid-template-columns:minmax(76px,1fr) 50px minmax(78px,.92fr);gap:5px;min-height:50px}.speedometer:before{width:56px;height:56px;top:5px}.speedometer svg{width:12px;height:12px;top:10px;left:7px}.speedometer span{font-size:7px;top:31px}.speedometer strong{padding:0 6px;font-size:10px;bottom:7px}.speedometer b{height:20px;bottom:10px}.horn-button{gap:4px;min-width:50px;min-height:50px}.horn-button svg{width:14px;height:14px}.throttle-cluster{grid-template-columns:26px minmax(74px,1fr);gap:5px}.throttle-slider{width:50px}.cockpit-actions{gap:5px}.max-speed-button,.danger-action{gap:4px;min-height:24px;padding:0 6px}.cockpit-doors{gap:0}.control-deck.autopilot-selected .cockpit-doors{grid-template-columns:62px}.control-block:nth-of-type(2){width:138px}.view-block{width:188px}.action-block{justify-content:stretch;width:62px}.control-label{min-height:14px;font-size:9px}.control-label svg,label svg{width:14px;height:14px}.button-row,.segmented{gap:4px;margin-top:4px}.segmented{grid-template-columns:repeat(5,1fr)}.view-pill button span{display:none}.view-pill button{padding:0}.tool-button,.icon-button,.segmented button,.primary-action,.danger-action{gap:3px;min-height:20px}.tool-button,.primary-action,.danger-action{padding:0 5px}.icon-button{width:20px}.tool-button svg,.icon-button svg,.segmented svg,.primary-action svg,.danger-action svg{width:12px;height:12px}.primary-action{min-height:34px;padding:0 3px}.control-deck .suggested:not(:disabled){z-index:14;color:#071119;background:linear-gradient(135deg,#ffd166f5,#5ff0bae0);border-radius:999px;min-width:132px;min-height:42px;position:fixed;bottom:82px;right:10px;box-shadow:0 0 0 1px #f7fbff5c,0 12px 34px #00000057,0 0 28px #ffc8578c}.control-deck #doorOpen.suggested:not(:disabled),.control-deck #doorClose.suggested:not(:disabled){left:10px;right:auto}.control-deck #maxSpeedButton.suggested:not(:disabled){left:50%;right:auto;transform:translate(-50%)}#messageToast{max-width:min(260px,100vw - 16px);padding:6px 8px;font-size:10px;top:82px}.evolution-tray{width:min(214px,100vw - 16px);padding:6px;bottom:64px;right:8px}}
