:root{color-scheme:dark;--night:#10191e;--panel:#172329;--line:#34464d;--ink:#e8e9df;--muted:#98a8a6;--gold:#e4af64;--teal:#81c3c2;--red:#ed746b;--green:#9fc999;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(ellipse at 44% -20%,#34444a 0%,#172329 52%,#0c1317 100%);color:var(--ink)}body{padding:clamp(9px,2.3vw,30px)}button{font:inherit;color:inherit}.app-shell{max-width:1550px;margin:0 auto}.topbar{height:63px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #526066;padding:0 4px 12px;margin-bottom:18px}.brand{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border:1px solid #7b8c8e;border-radius:7px;color:var(--gold);font:600 14px Georgia,serif;box-shadow:inset 0 0 18px #f2d2a010}.brand b{display:block;font-size:12px;letter-spacing:.14em}.brand small{display:block;margin-top:4px;color:#a0aeab;font-size:8px;letter-spacing:.14em}.weather-strip{display:flex;align-items:center;gap:18px;color:#b8c1bd;font-size:9px;letter-spacing:.13em}.weather-strip strong{color:var(--ink);font-weight:600}.storm-dot{width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 12px #e4af6490}.sound-button{border:1px solid #42545a;border-radius:5px;background:#1c2a30;padding:8px 11px;font-size:8px;letter-spacing:.12em;color:#b3c0bd;cursor:pointer}.sound-button b{margin-left:5px;color:var(--teal)}.dispatch-grid{display:grid;grid-template-columns:minmax(0,1fr) 322px;gap:16px;align-items:stretch}.yard-panel{height:min(76vh,770px);min-height:570px;position:relative;overflow:hidden;border:1px solid #53656a;border-radius:10px;background:#18282d;box-shadow:0 25px 85px #0008,inset 0 0 45px #dce5e105}.yard-panel:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 65px #080f14a8}.panel-topline{position:absolute;z-index:3;top:14px;left:16px;right:16px;display:flex;justify-content:space-between;align-items:center;color:#d1d6ce;font-size:8px;letter-spacing:.15em;text-shadow:0 2px 8px #000}.live-dot{display:inline-block;margin-right:7px;width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 10px #81c3c2aa}.phase-pill{padding:5px 8px;border:1px solid #71827f;border-radius:4px;background:#121d20cc;color:#c8d1c9;font-size:8px;letter-spacing:.1em}.phase-pill.running{border-color:#8b724c;color:var(--gold)}.phase-pill.won{border-color:#6d9676;color:#b0d2a7}.phase-pill.lost{border-color:#8c4a44;color:#ff9388}.yard-panel canvas#yard-view{position:absolute;inset:0;width:100%;height:100%;display:block}.map-legend{position:absolute;z-index:2;left:16px;top:49px;display:flex;gap:12px;padding:7px 9px;border:1px solid #55676a77;border-radius:4px;background:#101c1ebd;color:#bdc6c0;font-size:7px;letter-spacing:.12em}.legend-line{display:inline-block;width:13px;height:2px;margin:0 4px 2px 0;background:#aab9b7}.legend-dot{display:inline-block;width:6px;height:6px;margin:0 4px 0 0;border-radius:50%}.legend-dot.gold{background:var(--gold)}.legend-dot.teal{background:var(--teal)}.yard-toast{position:absolute;z-index:2;left:50%;bottom:85px;transform:translateX(-50%);max-width:76%;padding:8px 14px;border:1px solid #a3b3ad44;border-radius:99px;background:#0d181bcc;color:#d7ddd6;text-align:center;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.yard-controls{position:absolute;z-index:3;left:12px;right:12px;bottom:12px;display:grid;grid-template-columns:minmax(140px,1fr) minmax(205px,1.1fr) auto;gap:9px;align-items:center;padding:8px;border:1px solid #75807a70;border-radius:7px;background:linear-gradient(95deg,#101a1edd,#172328eb 50%,#111d23e8);box-shadow:0 8px 28px #0005}.signal-status{display:flex;align-items:center;gap:9px;padding-left:4px}.signal-status>div{display:flex;flex-direction:column;gap:2px}.signal-status small{font-size:7px;letter-spacing:.13em;color:#aebbb6}.signal-status b{font-size:10px;letter-spacing:.12em;color:#ff9b8f}.signal-bulb{position:relative;width:16px;height:31px;border:2px solid #36464a;border-radius:6px;background:linear-gradient(#ed6359 0 28%,#263338 28% 69%,#263338 69%);box-shadow:0 0 12px #ed635988}.signal-bulb.green{background:linear-gradient(#263338 0 28%,#263338 28% 69%,#78c48f 69%);box-shadow:0 0 12px #78c48f99}.signal-bulb.amber{background:linear-gradient(#e0b468 0 28%,#263338 28% 69%,#263338 69%);box-shadow:0 0 12px #e0b46899}.clear-button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:1px solid #dda65d;border-radius:4px;background:linear-gradient(100deg,#d49950,#edbc77);padding:11px 13px;color:#202725;font-size:8px;font-weight:750;letter-spacing:.13em;cursor:pointer;transition:filter .2s,transform .2s}.clear-button:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1px)}.clear-button:disabled{border-color:#536368;background:#29363b;color:#899593;cursor:not-allowed}.clear-button span{font-size:15px}.speed-button{border:1px solid #53656a;border-radius:4px;background:#213039;padding:10px 11px;color:#b9c4bf;font-size:8px;letter-spacing:.1em;cursor:pointer}.speed-button b{color:var(--teal);margin-left:4px}.control-panel{display:flex;flex-direction:column;min-height:570px;padding:16px 17px 12px;border:1px solid #3a5057;border-radius:10px;background:linear-gradient(150deg,#202f34,#152228 65%,#121e23);box-shadow:0 20px 70px #0005}.sidebar-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #41545a;padding-bottom:12px}.sidebar-heading small,.orders-heading small,.turnouts-head small,.ops-legend>small{font-size:8px;color:#a6b6b0;letter-spacing:.16em}.sidebar-heading h2{margin:4px 0 0;font-size:14px;letter-spacing:.12em;font-weight:550}.signal-badge{border:1px solid #94564e;border-radius:4px;padding:5px 7px;color:#ff9a8f;font-size:8px;letter-spacing:.1em}.signal-badge.green{border-color:#618b6c;color:#a7d39b}.signal-badge.amber{border-color:#997c4d;color:#e5c07c}.operator-note{margin:12px 0 13px;color:#bfc9c2;font:italic 12px/1.55 Georgia,serif}.clock-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #3a4d52;border-bottom:1px solid #3a4d52}.clock-row small,.clock-row span{display:block}.clock-row small{font-size:8px;color:#a6b6b0;letter-spacing:.14em}.clock-row span{margin-top:4px;font-size:7px;color:#839591;letter-spacing:.1em}.clock-row>b{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}.clock-row.low>b{color:#ff8279}.meter-line{display:flex;justify-content:space-between;margin:13px 0 6px;color:#aebdb8;font-size:8px;letter-spacing:.13em}.meter-line b{color:#dce1d8}.safety-meter{height:5px;border-radius:9px;overflow:hidden;background:#314348}.safety-meter i{display:block;height:100%;width:100%;border-radius:9px;background:linear-gradient(90deg,#6ba89f,#a3c795);transition:width .2s}.safety-meter i.low{background:linear-gradient(90deg,#d28c54,#ed7168)}.orders-heading,.turnouts-head{display:flex;justify-content:space-between;align-items:center;margin:19px 0 7px}.orders-heading>span,.turnouts-head>span{color:var(--gold);font-size:7px;letter-spacing:.1em}.orders-list{list-style:none;margin:0;padding:0;border-top:1px solid #394b50}.orders-list li{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:7px;min-height:39px;border-bottom:1px solid #394b50;color:#dbe0d8}.orders-list .order-number{font:11px Georgia,serif;color:#81938f}.orders-list b{display:block;font-size:8px;letter-spacing:.1em;font-weight:600}.orders-list small{display:block;margin-top:3px;font-size:7px;color:#899a95}.orders-list .order-status{font-size:7px;letter-spacing:.09em;color:#869894}.orders-list li.active b{color:var(--gold)}.orders-list li.active .order-status{color:var(--gold)}.orders-list li.done b,.orders-list li.done .order-status{color:#a7d0a1}.orders-list li.late .order-status{color:#ff8b80}.turnouts-head{margin-top:15px;margin-bottom:7px}.switch-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:9px;padding:8px 7px;border:1px solid #35494e;border-radius:5px;background:#17262c;margin-bottom:6px}.switch-card.locked{opacity:.64}.switch-title{display:flex;align-items:center;gap:8px}.switch-code{display:grid;place-items:center;width:25px;height:25px;border:1px solid #61756f;border-radius:4px;color:var(--gold);font:11px Georgia,serif}.switch-title b{display:block;font-size:8px;letter-spacing:.11em}.switch-title small{display:block;margin-top:3px;color:#849590;font-size:6px;letter-spacing:.1em}.switch-options{display:flex;gap:3px}.switch-options button{border:1px solid #45585c;border-radius:3px;background:#1e3036;padding:6px 7px;color:#a9b9b3;font-size:6px;letter-spacing:.08em;cursor:pointer}.switch-options button.active{border-color:#d2a35e;background:#423b2e;color:#f2d29b}.switch-options button:disabled{cursor:not-allowed;opacity:.55}.route-readout{display:flex;gap:9px;align-items:flex-start;padding:9px;margin-top:6px;border:1px solid #52676777;border-radius:5px;background:#1d3031}.route-readout>i{color:var(--teal);font-size:17px;font-style:normal}.route-readout small{display:block;color:#9db3ad;font-size:7px;letter-spacing:.14em}.route-readout p{margin:4px 0 0;color:#d5ded5;font-size:8px;line-height:1.4}.ops-legend{display:grid;grid-template-columns:1fr 1fr;gap:6px 9px;margin-top:14px}.ops-legend>small{grid-column:1/-1}.ops-legend span{display:flex;align-items:center;gap:6px;color:#9eafaa;font-size:7px}kbd{display:inline-block;min-width:34px;text-align:center;border:1px solid #536469;border-radius:3px;background:#24343a;padding:3px 4px;color:#dae1d6;font:7px ui-monospace,monospace}.sidebar-footer{display:flex;flex-direction:column;gap:5px;margin-top:auto;padding-top:13px;color:#80918d;font-size:7px;letter-spacing:.11em}.briefing-shade,.result-shade{position:absolute;z-index:6;inset:0;display:grid;place-items:center;padding:18px;background:linear-gradient(90deg,#0e191ee0,#121e20a6 50%,#10191edc);backdrop-filter:blur(3px)}.briefing-shade[hidden],.result-shade[hidden]{display:none}.briefing-card{position:relative;width:min(492px,95%);padding:27px 29px 21px;border:1px solid #71807a;background:linear-gradient(145deg,#18272cf5,#19272bed);border-radius:8px;box-shadow:0 32px 100px #000a,inset 0 0 42px #d9e2dc09}.brief-kicker{display:flex;justify-content:space-between;color:#b0bcb5;font-size:7px;letter-spacing:.17em}.brief-index{color:#869792}.signal-emblem{position:absolute;right:37px;top:48px;display:flex;flex-direction:column;gap:3px;width:19px;padding:4px;border:1px solid #697775;border-radius:7px;background:#101a1d}.signal-emblem i{width:9px;height:9px;border-radius:50%;background:#344247}.signal-emblem i:first-child{background:#e3655b;box-shadow:0 0 11px #e3655b88}.signal-emblem i:last-child{background:#648b70;opacity:.7}.briefing-card h1{margin:24px 0 9px;color:#efeee4;font:400 48px/.94 Georgia,"Times New Roman",serif;letter-spacing:-.04em}.briefing-card h1 em{color:var(--gold);font-weight:400}.location-line{color:#99aca5;font-size:7px;letter-spacing:.15em}.brief-copy{max-width:415px;margin:17px 0;color:#c6d0c6;font-size:11px;line-height:1.65}.brief-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:13px 0 16px;padding:11px 0;border-top:1px solid #405257;border-bottom:1px solid #405257}.brief-stats div{display:flex;flex-direction:column;gap:4px;padding-left:12px;border-right:1px solid #405257}.brief-stats div:first-child{padding-left:0}.brief-stats div:last-child{border:0}.brief-stats b{color:#f0eee4;font-size:18px;font-weight:500}.brief-stats small{color:#94a8a2;font-size:7px;letter-spacing:.14em}.start-button{display:flex;align-items:center;justify-content:space-between;width:100%;border:1px solid #d7a45b;border-radius:4px;background:linear-gradient(100deg,#d49950,#edbc77);padding:12px 14px;color:#202725;font-size:8px;font-weight:750;letter-spacing:.16em;cursor:pointer;transition:filter .2s,transform .2s}.start-button:hover{filter:brightness(1.12);transform:translateY(-1px)}.start-button span{font-size:15px}.brief-note{margin:12px 0 0;color:#9bacaa;font-size:8px;line-height:1.5}.result-card h2{margin:26px 0 8px;font:400 34px Georgia,serif}.result-card>p{color:#c7d0c9;font-size:11px;line-height:1.6}.result-card .brief-stats{margin-top:18px}
@media(max-width:1100px){.dispatch-grid{grid-template-columns:minmax(0,1fr) 290px;gap:11px}.control-panel{padding:14px}.yard-panel{height:72vh}.switch-options button{padding:6px 5px}.weather-strip{gap:11px}}
@media(max-width:820px){body{padding:9px}.topbar{margin-bottom:10px}.dispatch-grid{grid-template-columns:1fr}.yard-panel{height:min(68vh,690px);min-height:490px}.control-panel{min-height:unset;display:grid;grid-template-columns:1fr 1fr;column-gap:15px}.sidebar-heading,.operator-note,.clock-row,.meter-line,.safety-meter,.orders-heading,.orders-list,.turnouts-head,.switch-card,.route-readout,.ops-legend,.sidebar-footer{grid-column:1/-1}.operator-note{margin:9px 0}.yard-toast{bottom:79px}.briefing-shade,.result-shade{backdrop-filter:blur(4px)}}
@media(max-width:520px){body{padding:6px}.topbar{height:50px;padding-bottom:8px}.brand-mark{width:32px;height:32px;font-size:12px}.brand b{font-size:9px}.brand small{font-size:6px}.weather-strip{gap:8px;font-size:7px}.weather-strip span:nth-last-child(-n+2){display:none}.sound-button{padding:7px 8px;font-size:7px}.yard-panel{height:61vh;min-height:440px;border-radius:7px}.panel-topline{top:10px;left:10px;right:10px;font-size:7px}.map-legend{top:38px;left:8px;gap:7px;padding:6px;font-size:6px}.yard-controls{left:6px;right:6px;bottom:6px;grid-template-columns:80px minmax(150px,1fr) auto;gap:5px;padding:5px}.signal-status{gap:5px}.signal-status small{font-size:5px}.signal-status b{font-size:8px}.signal-bulb{width:13px;height:26px}.clear-button{padding:10px 8px;font-size:7px;letter-spacing:.08em}.speed-button{padding:9px 7px;font-size:7px}.yard-toast{bottom:67px;max-width:90%;font-size:7px;padding:7px 10px}.briefing-card{width:100%;padding:21px 18px 16px}.briefing-card h1{font-size:40px;margin-top:21px}.signal-emblem{right:24px;top:42px;transform:scale(.88)}.brief-copy{font-size:10px}.brief-stats b{font-size:16px}.control-panel{padding:12px}.clock-row>b{font-size:19px}.orders-list li{min-height:36px}.switch-card{padding:7px 6px}.ops-legend span{font-size:6px}}
