:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#e7eefc;--muted:#9fb0cd;--gold:#efc48a}*{box-sizing:border-box}html,body{-webkit-user-select:none;user-select:none;background:#02050c;width:100%;height:100%;margin:0;font-family:Georgia,Iowan Old Style,Times New Roman,serif;overflow:hidden}canvas{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.vignette{pointer-events:none;z-index:2;background:radial-gradient(68% 55% at 50% 44%,#0000 18%,#04081238 58%,#02050eb8 100%),linear-gradient(#060c1c66 0%,#0000 20% 72%,#04081280 100%);position:fixed;inset:0}.tilt{pointer-events:none;z-index:3;position:fixed;inset:0;box-shadow:inset 0 0 120px #0a142859}.warm-bloom{pointer-events:none;z-index:2;mix-blend-mode:screen;background:radial-gradient(40% 28% at 50% 56%,#ffaa5a0d 0%,#0000 70%),radial-gradient(30% 20% at 42% 48%,#ffd28c06 0%,#0000 60%);position:fixed;inset:0}.frost{pointer-events:none;z-index:3;mix-blend-mode:screen;background:linear-gradient(115deg,#78a0dc05,#0000 40%,#ffdcb403 70%,#0000);position:fixed;inset:0}.grain{pointer-events:none;z-index:4;display:none;position:fixed;inset:0}.ui{z-index:5;pointer-events:none;position:fixed}#topBanner{padding:max(18px, env(safe-area-inset-top)) 20px 0;text-align:center;pointer-events:none;z-index:6;width:min(92vw,520px);inset:0 auto auto 50%;transform:translate(-50%)}#titleBanner{flex-direction:column;justify-content:center;align-items:center;transition:opacity 2.2s;display:flex}#titleBanner h1{letter-spacing:.28em;text-indent:.28em;color:var(--ink);text-shadow:0 0 28px #96beff4d,0 0 70px #78a0f029;margin:0;font-family:Georgia,Iowan Old Style,Times New Roman,serif;font-size:clamp(14px,2.8vw,24px);font-weight:400}#titleBanner p{letter-spacing:.22em;text-indent:.22em;color:var(--muted);margin:.55em 0 0;font-family:Georgia,Iowan Old Style,Times New Roman,serif;font-size:clamp(10px,1.25vw,13px);font-style:italic}#titleBanner.gone{opacity:0;pointer-events:none}#titleBanner.hidden{display:none}#hud{padding:12px max(12px, env(safe-area-inset-right));letter-spacing:.13em;color:var(--muted);justify-content:flex-end;align-items:center;max-height:100dvh;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;transition:opacity .7s;display:flex;inset:50% 0 auto auto;transform:translateY(-50%)}#readout{text-align:right;opacity:.9;flex-direction:column;align-items:stretch;gap:6px;display:flex}#passHud{padding:12px max(12px, env(safe-area-inset-left));letter-spacing:.13em;color:var(--muted);justify-content:flex-start;align-items:center;max-height:100dvh;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;transition:opacity .7s;display:flex;inset:50% auto auto 0;transform:translateY(-50%)}#nextStopName{text-align:center;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;transition:opacity 1.4s;position:relative;inset:auto;transform:none}#nextStopName.station-pending{opacity:0;pointer-events:none;padding:0;position:absolute;top:0;left:0;right:0}#nextStopName.station-ready{opacity:1;position:relative}#nextStopName .ns-label{letter-spacing:.28em;text-indent:.28em;text-transform:uppercase;color:#ffd9a38c;margin-bottom:6px;font-size:9px;display:block}#nextStopName .ns-name{letter-spacing:.18em;text-indent:.18em;color:var(--gold);text-shadow:0 0 10px #e8c48a38,0 1px #0000008c;text-transform:uppercase;font-size:clamp(13px,1.8vw,18px);font-weight:600;display:block}#topBanner.hud-off #nextStopName{opacity:0!important}#passReadout{text-align:left;opacity:.9;flex-direction:column;align-items:stretch;gap:6px;display:flex}#passToast{z-index:7;pointer-events:none;color:#ffd9a3e0;letter-spacing:.14em;text-transform:uppercase;opacity:0;background:linear-gradient(165deg,#2a1e12e0,#120e0aeb);border:1px solid #b48c5073;border-radius:4px;padding:8px 14px;font:10px ui-monospace,Menlo,Consolas,monospace;transition:opacity .35s;position:fixed;bottom:108px;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffdca029,0 8px 22px #0006}#passToast.show{opacity:1}@media (height<=620px){#passToast{bottom:92px}}.gauge-plate{pointer-events:none;-webkit-user-select:none;user-select:none;background:linear-gradient(165deg,#2a1e12c7,#120e0ae0);border:1px solid #b48c5073;border-radius:4px 4px 10px 10px;width:72px;padding:8px 6px 6px;font-family:ui-monospace,Menlo,Consolas,monospace;position:relative;box-shadow:inset 0 1px #ffdca02e,0 8px 22px #00000059}.gauge-plate .thr-title{text-align:center;letter-spacing:.18em;text-transform:uppercase;color:#ffd9a3bf;margin-bottom:6px;font-size:8px}.gauge-plate .thr-foot{text-align:center;letter-spacing:.12em;color:#ffd9a3b3;text-transform:uppercase;margin-top:5px;font-size:8px}#throttle{pointer-events:auto;cursor:ns-resize;flex-direction:column;align-items:center;width:72px;padding:8px 6px 6px;display:flex}#throttle .thr-title{text-align:center;width:100%;margin-bottom:6px}#throttle .thr-body{width:100%;height:112px;margin:0;position:relative}#throttle .thr-slot{background:linear-gradient(90deg,#1a120c,#0c0906,#1a120c);border:1px solid #8c6e3c80;border-radius:3px;width:22px;margin:0;position:absolute;top:2px;bottom:2px;left:50%;overflow:visible;transform:translate(-50%);box-shadow:inset 0 0 8px #000000b3}#throttle .thr-slot:before{content:"";z-index:0;background:linear-gradient(#ffc87859,#50321480);width:2px;margin-left:-1px;position:absolute;top:5px;bottom:5px;left:50%}#throttle .thr-fill-fwd,#throttle .thr-fill-rev{pointer-events:none;z-index:1;border-radius:1px;position:absolute;left:3px;right:3px}#throttle .thr-fill-fwd{background:linear-gradient(#efc48ad9,#a878308c);box-shadow:0 0 8px #ffc87833}#throttle .thr-fill-rev{background:linear-gradient(#78a0c859,#5a8cbeb3);box-shadow:0 0 8px #78aadc2e}#throttle .thr-idle{pointer-events:none;z-index:2;background:#ffd9a359;height:1px;margin-top:-.5px;position:absolute;left:2px;right:2px}#throttle .thr-set{pointer-events:none;z-index:3;background:#ffd9a38c;height:3px;margin-top:-1.5px;position:absolute;left:2px;right:2px;box-shadow:0 0 6px #ffc87859}#throttle .thr-lever{z-index:4;pointer-events:none;background:linear-gradient(#e8c878,#a87830 45%,#6a4818);border:1px solid #ffe6aa8c;border-radius:4px;justify-content:center;align-items:center;width:50px;height:16px;margin:0;transition:none;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 4px #00000080,inset 0 1px #fff0c880}#throttle .thr-lever span,#thrLeverLabel{letter-spacing:.1em;text-transform:uppercase;color:#281c0ceb;text-shadow:0 1px #fff0c859;white-space:nowrap;pointer-events:none;font-size:7px;font-weight:600;line-height:1}#throttle.dragging .thr-set{background:#ffe6b4d9}#throttle.rev .thr-lever{background:linear-gradient(#c8d8e8,#6a8aaa 45%,#3a5068);border-color:#c8dcf08c}#throttle.rev .thr-lever span,#throttle.rev #thrLeverLabel{color:#0c1624eb;text-shadow:0 1px #dcebff59}#speedo{padding-bottom:5px}#speedo .thr-title{margin-bottom:4px}#speedo .speedo-face{background:radial-gradient(circle at 40% 32%,#2a2218 0%,#14100c 55%,#0a0806 100%);border:1px solid #b48c5080;border-radius:50%;width:40px;height:40px;margin:0 auto 2px;position:relative;box-shadow:inset 0 0 10px #000000b3,inset 0 1px #ffffff0d}#speedo .speedo-face svg{width:100%;height:100%;position:absolute;inset:0}#speedo .speedo-needle{transform-origin:50% 100%;z-index:2;background:linear-gradient(#ffd090,#c47830 70%,#6a4018);border-radius:1px 1px 0 0;width:2px;height:13px;margin-left:-1px;transition:transform .18s ease-out;position:absolute;bottom:50%;left:50%;transform:rotate(-120deg);box-shadow:0 0 4px #ffb45059}#speedo .speedo-hub{z-index:3;background:radial-gradient(circle at 35% 30%,#fff2c8,#b8862e 70%,#6a4818);border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:0 1px 2px #00000080,inset 0 1px #ffffff59}#speedo .speedo-readout{text-align:center;margin-top:0}#speedo .speedo-readout .mph{color:var(--gold);letter-spacing:.04em;font-variant-numeric:tabular-nums;text-shadow:0 1px #0000008c;font-size:13px;font-weight:600}#speedo .speedo-readout .unit{letter-spacing:.18em;text-transform:uppercase;color:#ffd9a38c;margin-top:1px;font-size:7px;display:block}.odo-window{text-align:center;background:linear-gradient(#1a120c,#0c0906 60%,#14100c);border:1px solid #8c6e3c80;border-radius:3px;margin:0 2px 2px;padding:8px 4px 6px;box-shadow:inset 0 0 10px #000000bf,inset 0 1px #ffffff0a}.odo-digits{letter-spacing:.1em;color:var(--gold);font-variant-numeric:tabular-nums;text-shadow:0 0 8px #e8c48a33,0 1px #0009;font-size:14px;font-weight:600}.odo-digits .tenths{opacity:.55;letter-spacing:.06em;font-size:11px}.odo-label{letter-spacing:.18em;text-transform:uppercase;color:#ffd9a38c;white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin-top:4px;font-size:7px;overflow:hidden}#odo{padding-top:6px;padding-bottom:5px}#odo .thr-title{margin-bottom:4px}#odo .odo-window{margin:0 1px;padding:5px 3px 4px}#odo .odo-digits{letter-spacing:.08em;font-size:12px}#odo .odo-digits .tenths{font-size:10px}#odo .odo-label{margin-top:3px;font-size:7px}#bAuto{pointer-events:auto;cursor:pointer;color:#ffd9a3d9;flex-direction:column;align-items:center;width:72px;transition:border-color .18s,color .18s,box-shadow .18s;display:flex}#bAuto .auto-track{background:linear-gradient(#1a120c,#0c0906 60%,#14100c);border:1px solid #8c6e3c8c;border-radius:11px;width:44px;height:22px;margin:2px auto 0;position:relative;box-shadow:inset 0 0 10px #000000bf,inset 0 1px #ffffff0a}#bAuto .auto-knob{background:linear-gradient(#e8c878,#a87830 45%,#6a4818);border:1px solid #ffe6aa8c;border-radius:50%;width:16px;height:16px;transition:left .18s,background .18s,box-shadow .18s,border-color .18s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000080,inset 0 1px #fff0c873}#bAuto .auto-knob:after{content:"";background:radial-gradient(circle at 35% 30%,#fff2c8,#b8862e 70%);border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:inset 0 -1px 2px #00000059}#bAuto:hover{color:#ffe6bef2;border-color:#d2aa64a6}#bAuto:hover .auto-track{border-color:#d2aa648c}#bAuto.on{color:#ffe6b4f2;border-color:#b4a05ab3;box-shadow:inset 0 1px #ffdca038,0 8px 22px #00000059,0 0 14px #e8c48a1f}#bAuto.on .auto-track{background:linear-gradient(#2a2210,#181208 60%,#221a0e);border-color:#b48c46a6;box-shadow:inset 0 0 10px #0009,inset 0 0 12px #ffc8641f}#bAuto.on .auto-knob{background:linear-gradient(#ffe0a0,#c89840 45%,#8a6020);border-color:#fff0c8b3;left:calc(100% - 18px);box-shadow:0 0 8px #ffc86459,0 1px 3px #00000080,inset 0 1px #fffadc80}#bAuto .thr-foot{margin-top:5px}#bAuto.on .thr-foot{color:#ffdca0e6}#passHud.hud-off #bAuto,#passHud.hud-off #bCam{pointer-events:none!important}#bCam{pointer-events:auto;cursor:pointer;color:#ffd9a3d9;flex-direction:column;align-items:center;width:72px;transition:border-color .18s,color .18s;display:flex}#bCam .cam-face{background:linear-gradient(#1a120c,#0c0906 60%,#14100c);border:1px solid #8c6e3c8c;border-radius:4px;place-items:center;width:36px;height:28px;margin:1px auto 0;display:grid;box-shadow:inset 0 0 10px #000000bf,inset 0 1px #ffffff0a}#bCam .cam-face svg{opacity:.9;width:18px;height:18px;display:block}#bCam:hover{color:#ffe6bef2;border-color:#d2aa64a6}#bCam:hover .cam-face{border-color:#d2aa6499}#bCam:active .cam-face{background:linear-gradient(#2a2210,#181208);box-shadow:inset 0 0 10px #000000d9,0 0 8px #ffc87826}#bCam .thr-foot{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.08em;max-width:100%;margin-top:5px;font-size:7px;overflow:hidden}#actionBar{padding:0 12px max(14px, env(safe-area-inset-bottom));z-index:6;flex-direction:row;justify-content:center;align-items:flex-end;gap:14px;transition:opacity .7s;display:flex;inset:auto auto 0 50%;transform:translate(-50%)}#actionBar .act-btn{pointer-events:auto;cursor:pointer;color:#ffd9a3e0;-webkit-tap-highlight-color:transparent;touch-action:manipulation;flex-direction:column;justify-content:center;align-items:center;width:78px;min-height:72px;transition:border-color .16s,color .16s,transform .12s,box-shadow .16s;display:flex}#actionBar .act-face{background:radial-gradient(circle at 40% 32%,#2a2218 0%,#14100c 55%,#0a0806 100%);border:1px solid #b48c5080;border-radius:50%;place-items:center;width:42px;height:42px;margin:0 auto;display:grid;box-shadow:inset 0 0 10px #000000b3,inset 0 1px #ffffff0d}#actionBar .act-face svg{width:20px;height:20px;display:block}#actionBar .act-btn:hover{color:#ffe6befa;border-color:#d2aa64b3}#actionBar .act-btn:hover .act-face{border-color:#d2aa64b3}#actionBar .act-btn:active,#actionBar .act-btn.held{color:#ffecc8;border-color:#dcb464cc;transform:translateY(1px);box-shadow:inset 0 1px #ffdca038,0 4px 16px #0006,0 0 14px #ffc8782e}#actionBar .act-btn:active .act-face,#actionBar .act-btn.held .act-face{border-color:#e6be6ebf;box-shadow:inset 0 0 12px #000000bf,0 0 10px #ffc87833,inset 0 1px #ffffff14}#actionBar .thr-foot{margin-top:5px}#actionBar.hud-off{opacity:0!important;pointer-events:none!important}#actionBar.hud-off .act-btn{pointer-events:none!important}#pause{z-index:18;padding:24px max(16px, env(safe-area-inset-right));opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .28s;display:flex;position:fixed;inset:0}#pause:not(.open),#pause:not(.open) *{pointer-events:none!important}#pause.open{opacity:1;pointer-events:auto}#pause .pause-scrim{background:radial-gradient(70% 55% at 50% 45%,#080c168c,#02050cd1);position:absolute;inset:0}#pause .pause-plate{z-index:1;-webkit-user-select:none;user-select:none;color:#ffd9a3d9;background:linear-gradient(165deg,#2a1e12eb,#120e0af2);border:1px solid #b48c5080;border-radius:4px 4px 12px 12px;width:min(540px,94vw);padding:16px 16px 14px;font-family:ui-monospace,Menlo,Consolas,monospace;position:relative;box-shadow:inset 0 1px #ffdca02e,0 18px 48px #0000008c}#pause .pause-plate .thr-title{letter-spacing:.28em;margin-bottom:12px}#pause .ctrl-window{background:linear-gradient(#1a120c,#0c0906 60%,#14100c);border:1px solid #8c6e3c80;border-radius:3px;grid-template-columns:1fr 1fr;gap:4px 22px;margin:0 0 12px;padding:12px 12px 10px;display:grid;box-shadow:inset 0 0 12px #000000bf,inset 0 1px #ffffff0a}#pause .ctrl-col{flex-direction:column;min-width:0;display:flex}#pause .ctrl-head{letter-spacing:.22em;text-transform:uppercase;color:#ffd9a36b;border-bottom:1px solid #8c6e3c47;margin:8px 0 2px;padding:0 2px 5px;font-size:8px}#pause .ctrl-col>.ctrl-head:first-child{margin-top:0}#pause .ctrl-row{letter-spacing:.06em;color:#e8d2aac7;border-bottom:1px solid #8c6e3c1f;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:10px;min-height:26px;padding:4px 2px;font-size:10px;display:grid}#pause .ctrl-row:last-child{border-bottom:0}#pause .ctrl-row span{text-align:left;color:#c8b48c94;letter-spacing:.1em;text-transform:uppercase;font-size:8px;line-height:1.25}#pause kbd{box-sizing:border-box;width:100%;min-height:20px;color:var(--gold);letter-spacing:.04em;text-align:center;white-space:nowrap;background:linear-gradient(#2a2218,#14100c);border:1px solid #b48c5073;border-radius:3px;justify-content:center;align-items:center;padding:2px 4px;font:600 10px ui-monospace,Menlo,Consolas,monospace;display:inline-flex;box-shadow:inset 0 1px #ffdca01f,0 1px 2px #0006}#pause .pause-actions{justify-content:center;margin:4px 0 2px;display:flex}#bMute{pointer-events:auto;cursor:pointer;color:#ffd9a3d9;flex-direction:column;align-items:center;width:78px;transition:color .22s,opacity .22s,border-color .22s;display:flex}#bMute .mute-face{background:radial-gradient(circle at 40% 32%,#2a2218 0%,#14100c 55%,#0a0806 100%);border:1px solid #b48c5080;border-radius:50%;place-items:center;width:40px;height:40px;margin:0 auto;display:grid;box-shadow:inset 0 0 10px #000000b3,inset 0 1px #ffffff0d}#bMute svg{width:16px;height:16px;display:block}#bMute:hover{color:#ffe6bef2;border-color:#d2aa64a6}#bMute:hover .mute-face{border-color:#d2aa64b3}#bMute.muted{opacity:.7;color:#c8b48c73}#bMute.muted .mute-face{box-shadow:inset 0 0 12px #000000d9,inset 0 1px #ffffff08}#pause .thr-foot{margin-top:10px}@media (width<=520px){#pause .ctrl-window{grid-template-columns:1fr;gap:10px 0}}#eBrake{pointer-events:auto;cursor:pointer;color:#ffc8bee0;flex-direction:column;align-items:center;width:72px;padding-top:6px;padding-bottom:5px;transition:border-color .18s,color .18s;display:flex}#eBrake .eb-title{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:#ffa08cb3;margin-bottom:4px;font-size:7px}#eBrake .eb-well{background:linear-gradient(#1a120c,#0c0906 60%,#14100c);border:1px solid #8c463c8c;border-radius:3px;width:32px;height:40px;margin:0 auto 2px;position:relative;box-shadow:inset 0 0 10px #000000bf,inset 0 1px #ffffff0a}#eBrake .eb-slot{background:linear-gradient(#501e1ccc,#28100ee6);border-radius:1px;width:3px;margin-left:-1.5px;position:absolute;top:6px;bottom:6px;left:50%}#eBrake .eb-handle{z-index:2;background:linear-gradient(#e87868,#b03028 45%,#6a1814);border:1px solid #ffb4a08c;border-radius:3px;width:24px;height:12px;margin-left:-12px;transition:top .16s,background .16s,box-shadow .16s;position:absolute;top:8px;left:50%;box-shadow:0 2px 4px #0000008c,inset 0 1px #ffdcc866}#eBrake .eb-handle:after{content:"";background:radial-gradient(circle at 35% 30%,#ffd0c4,#a82820 70%);border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:inset 0 -1px 2px #0006}#eBrake:hover{color:#ffdcd2f2;border-color:#d2645ab3}#eBrake:hover .eb-handle{border-color:#ffc8b4b3}#eBrake.pulled{color:#ffaa96f2;border-color:#dc5046bf}#eBrake.pulled .eb-handle{background:linear-gradient(#ff6a58,#c02820 45%,#701410);top:calc(100% - 20px);box-shadow:0 0 10px #ff3c2859,0 2px 4px #0000008c,inset 0 1px #ffdcc859}#eBrake .thr-foot{color:#ff9682a6;margin-top:3px}#hud.hud-off #eBrake{pointer-events:none!important}#boot{z-index:20;background:#02050c;flex-direction:column;justify-content:center;align-items:center;gap:26px;transition:opacity 1.5s;display:flex;position:fixed;inset:0}#boot .lamp{background:var(--gold);border-radius:50%;width:12px;height:12px;animation:2.6s ease-in-out infinite pulse;box-shadow:0 0 26px 6px #ffc88c8c}@keyframes pulse{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}#boot p{color:var(--muted);letter-spacing:.32em;text-indent:.32em;margin:0;font-size:12px;font-style:italic}.gone{opacity:0!important;pointer-events:none!important}.hidden{pointer-events:none!important;display:none!important}#hud.hud-off,#passHud.hud-off,#topBanner.hud-off,#actionBar.hud-off{opacity:0!important;pointer-events:none!important}#hud.hud-off #throttle,#hud.hud-off #bMute{pointer-events:none!important}@media (height<=720px){#readout,#passReadout{gap:5px}#throttle .thr-body{height:96px}#speedo .speedo-face{width:36px;height:36px}#speedo .speedo-needle{height:12px}#speedo .speedo-readout .mph{font-size:12px}#eBrake .eb-well{height:34px}#actionBar .act-btn{width:72px;min-height:64px}#actionBar .act-face{width:36px;height:36px}}@media (height<=620px){#hud,#passHud{padding-top:8px;padding-bottom:8px}.gauge-plate{padding:6px 5px 5px}.gauge-plate .thr-title{margin-bottom:4px;font-size:7px}#throttle .thr-body{height:84px}#speedo .speedo-face{width:32px;height:32px}#eBrake .eb-well{width:28px;height:30px}#bAuto .auto-track{width:40px;height:18px}#bAuto .auto-knob{width:13px;height:13px;top:1.5px}#bAuto.on .auto-knob{left:calc(100% - 15px)}#bCam .cam-face{width:32px;height:24px}#actionBar{padding-bottom:max(10px, env(safe-area-inset-bottom));gap:10px}#actionBar .act-btn{width:66px;min-height:58px;padding:5px 4px 4px}#actionBar .act-face{width:32px;height:32px}#actionBar .act-face svg{width:16px;height:16px}}@media (width<=420px){#actionBar{gap:12px}#actionBar .act-btn{width:74px}}
