*{box-sizing:border-box}body{margin:0;background:#c0c0c0;color:#111;font:13px Tahoma,Arial,sans-serif}button,input,select,textarea{font:13px Tahoma,Arial,sans-serif}button{background:#d4d0c8;border:2px outset #eee;padding:4px 10px;cursor:pointer}button:active{border-style:inset}input,select,textarea{background:#fff;border:2px inset #eee;padding:5px}.login{position:fixed;inset:0;display:grid;place-items:center;background:#008080}.dialog,.window,.panel{background:#d4d0c8;border:2px outset #fff;box-shadow:2px 2px #555}.dialog{width:380px}.titlebar,header{background:#000080;color:#fff;padding:6px 8px;font-weight:bold}.pad{padding:12px}.dialog label{display:block;margin-bottom:4px}.dialog input{width:100%;margin-bottom:10px}.err{color:#a00;margin-top:8px}header{display:flex;justify-content:space-between;align-items:center;height:32px}nav{padding:5px;border-bottom:1px solid #777;background:#d4d0c8}main{padding:10px;max-width:1500px;margin:auto}.toolbar{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:10px}.yardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:10px}.panel h2{font-size:14px;margin:0;padding:6px;background:#808080;color:#fff}.train{margin:7px;border:1px solid #777;background:#eee}.trainhead{display:flex;justify-content:space-between;align-items:center;padding:6px;background:#fff}.tag{font-weight:bold;font-size:15px}.status{padding:2px 6px;border:1px solid #555;background:#ddd;font-weight:bold}.status.ready{background:#fff59a}.status.departed{background:#b7e5b7}.status.detect{background:#ffd6a1}.details{padding:7px;border-top:1px solid #aaa}.stats{display:flex;gap:14px;flex-wrap:wrap;margin:5px 0}.locos{font-weight:bold}.tags span{display:inline-block;background:#ffe55c;border:1px solid #a88;padding:2px 5px;margin:2px}.edit{display:grid;grid-template-columns:160px 1fr;gap:6px;align-items:start;margin-top:8px}.edit textarea{height:60px;resize:vertical}.cars{width:100%;border-collapse:collapse;margin-top:8px;background:#fff}.cars th,.cars td{border:1px solid #999;padding:4px;text-align:left}.cars th{background:#d4d0c8}.muted{color:#555}.warn{color:#8a3b00;font-weight:bold}.modal{position:fixed;inset:0;background:#0008;display:grid;place-items:center;z-index:10}.modal[hidden]{display:none}.window{width:min(1050px,94vw);max-height:88vh;overflow:auto}.x{float:right;padding:0 6px}.row{display:flex;gap:6px}.row input{flex:1}.result{background:#fff;border:1px solid #777;padding:7px;margin:6px 0;display:grid;grid-template-columns:1fr auto;gap:8px}.handover{background:#fff;border:1px solid #777;padding:8px;margin:6px 0}.archive .train{opacity:.9}@media(max-width:700px){.yardgrid{grid-template-columns:1fr}.edit{grid-template-columns:1fr}.row{flex-direction:column}}

.logpanel{height:calc(100vh - 105px);display:flex;flex-direction:column}.logmeta{display:flex;gap:12px;align-items:center;padding:7px;border-bottom:1px solid #777}.logmeta span{margin-left:auto}.loghint{padding:5px 8px;background:#eee;border-bottom:1px solid #999}.loglines{flex:1;overflow:auto;background:#111;color:#ddd;font:12px Consolas,"Courier New",monospace;padding:4px}.logline{display:grid;grid-template-columns:78px 1fr;gap:7px;padding:2px 4px;border-bottom:1px solid #222;white-space:pre-wrap;overflow-wrap:anywhere}.logkind{font-weight:bold;color:#aaa}.logline.error{color:#ff8f8f;background:#2a0d0d}.logline.error .logkind{color:#ff5f5f}.logline.warning{color:#ffe39a;background:#29220b}.logline.warning .logkind{color:#ffd24d}.logline.network{color:#8fd3ff}.logline.network .logkind{color:#55baff}.logline.world{color:#a9e7aa}.logline.world .logkind{color:#6fd873}.logline.info{color:#ddd}

/* Hidden muss auch gegen komponentenspezifische display-Regeln gewinnen. */
[hidden]{display:none!important}
/* v1.7 layout + live chat */
*,*:before,*:after{box-sizing:border-box}.train,.details,.edit{min-width:0}.edit{grid-template-columns:150px minmax(0,1fr);gap:6px 10px;align-items:start}.edit input,.edit textarea,.edit select{width:100%;max-width:100%;min-width:0}.edit textarea{min-height:76px;resize:vertical}.actions{display:flex;gap:5px;flex-wrap:wrap}.route{margin-bottom:5px}.health{margin-left:auto;margin-right:8px;font-size:11px;color:#333}.chatpanel,.logpanel{background:#c8c8c8}.chatmeta,.logmeta,.loghint{background:#d6d6d6;border-bottom:1px solid #888;padding:6px 8px;font-size:12px}.chatlines,.loglines{height:430px;overflow:auto;background:#e7e7e7;border:2px inset #ddd;padding:5px;font:12px "Courier New",monospace}.chatmsg{padding:3px 5px;border-bottom:1px solid #ccc;white-space:pre-wrap;word-break:break-word}.run8msg{color:#a00000}.dispomsg{color:#111}.run8sample{color:#a00000}.chattime{color:#666}.context{color:inherit;opacity:.8}.chatinput{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;padding:7px;background:#c8c8c8}.chatinput input{width:100%;min-width:0}.logline{display:grid;grid-template-columns:75px minmax(0,1fr);gap:7px;padding:2px 4px;border-bottom:1px solid #d2d2d2;white-space:pre-wrap;word-break:break-word}.logkind{font-weight:bold}.logline.error{color:#a00000}.logline.warning{color:#8a5b00}.logline.network{color:#003a8c}.logline.world{color:#166600}.logline.info{color:#222}.tablewrap{overflow:auto;max-width:100%}.status.moving{background:#d9e5ff;border-color:#6f86a8}.status.arrived{background:#dcefdc;border-color:#6b966b}@media(max-width:700px){.edit{grid-template-columns:1fr}.edit>span{display:none}.yardgrid{grid-template-columns:1fr}.health{width:100%;margin:4px 0}.row{flex-wrap:wrap}.row>*{min-width:0;max-width:100%}}
.livebar{margin:6px 0;padding:5px 7px;border:1px solid #6d7f93;background:#dce7f2}.cars.live td,.cars.live th{white-space:nowrap}.cars.live tbody tr:nth-child(even){background:#f1f1f1}
/* v1.9.5 - stabile Dispo-Oberflaeche */
.trainhead{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}.trainhead>span:last-child{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;text-align:right}.status{display:inline-block;white-space:nowrap;line-height:1.2}.status.detect{background:#ffd6a1;border-color:#9b6b2f;color:#4d2d00}.stats small{font-size:10px;font-weight:normal;color:#555}.loadstate{display:inline-block;min-width:52px;text-align:center;padding:1px 4px;border:1px solid #888}.loadstate.loaded{background:#fff0a8}.loadstate.empty{background:#e3e3e3;color:#444}
/* v1.9.6 */
.status.deleted{background:#c00000;color:#fff;border-color:#700}.status.dispo{background:#d4d0c8}.suggest{margin-top:4px;padding:4px;background:#fff6bf;border:1px solid #9b8b42}.suggest button{padding:1px 6px}.trackon{font-weight:bold;background:#cfe8cf}

/* v1.9.7 - minimierbare Zugkarten */
.minbtn{padding:1px 6px;font-size:11px;white-space:nowrap}.train.collapsed{background:#f0f0f0}.train.collapsed .trainhead{padding:5px 6px}.compactbody{padding:5px 7px;border-top:1px solid #aaa;display:grid;gap:4px}.compactroute{font-size:12px}.compactlive{padding:4px 6px;border:1px solid #6d7f93;background:#dce7f2;font-size:11px}.train.collapsed .tag{font-size:13px}

/* v1.9.8 - Live/Autosave Consist Matching */
.match{display:inline-block;padding:2px 5px;border:1px solid #8a7b35;background:#fff1a8;font-weight:bold}.match.safe{background:#d7efd7;border-color:#668d66}.livecars>td{background:#e9e9e9!important;padding:5px 10px!important}.livecars details{min-width:700px}.matchreason{margin:5px 0;color:#555;font-size:11px}.livecars .locos{margin:5px 0}.livecars summary{cursor:pointer;font-weight:bold}

.forum h3{margin:16px 0 6px}.forumnew{border:2px inset #eee;padding:10px;background:#e8e8e8}.forumnew textarea{width:100%;min-height:95px;margin:7px 0;resize:vertical}.forumnew .row{margin-bottom:6px}.forumnew select{min-width:130px}.topic{padding:0;overflow:hidden}.topictop{display:flex;justify-content:space-between;gap:10px;padding:8px;background:#d9d9d9;border-bottom:1px solid #aaa}.topicmeta{font-size:11px;color:#555;margin-top:3px}.topictext{padding:10px;line-height:1.45;white-space:normal}.topic.important{border-left:5px solid #9b7600}.topic.urgent{border-left:5px solid #a00000}.reply{margin:6px 10px;padding:8px 10px;background:#f2f2f2;border-left:3px solid #777}.topictools{display:flex;gap:6px;padding:8px;background:#ddd;border-top:1px solid #aaa}.topictools input{flex:1}.forumdone{margin-top:16px}.forumdone>summary{font-weight:bold;cursor:pointer;padding:6px;background:#bbb}
.order{border:1px solid #888;background:#eee;margin:8px;padding:10px}.order h3{margin:0 0 8px}.order label{display:block;margin:5px}.order textarea{width:100%;min-height:70px}.humpok{background:#b8e6b8;padding:2px 5px}.humpbad{background:#f3b0b0;color:#700;padding:2px 5px}
.humpstation{margin:8px 0;padding:8px 10px;border:1px solid #b9d6bd;background:#eef8ef;border-radius:5px}.linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;padding:16px}.linkcard{display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid #c8ced6;border-radius:7px;background:#fff;color:#111;text-decoration:none}.linkcard:hover{border-color:#777;background:#f5f6f7}.linkcard span{color:#5d6570;font-size:.92em}
/* v1.14.0 */
header{height:auto;min-height:38px;gap:12px;flex-wrap:wrap}.presence{display:flex;gap:18px;flex:1;justify-content:center;font-size:11px;font-weight:normal}.compacttop{display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-width:0}.typebadge,.orderbadge{display:inline-block;padding:3px 7px;border:1px solid #555;border-radius:3px;font-size:11px;font-weight:bold;white-space:normal}.type-A{background:#dce9ff}.type-B{background:#e9ddff}.type-C{background:#ddd}.type-D{background:#f3e1c8}.type-E{background:#eee}.type-F{background:#e0e0e0}.type-G{background:#dff0c8}.type-H{background:#ffd9a8}.type-I{background:#d5e8f0}.type-K{background:#e6d8c8}.type-L{background:#cfe8cf}.type-M{background:#f3e5b5}.type-O{background:#e7d7ec}.type-P{background:#c9e9ff}.type-Q{background:#cfe4ff}.type-R{background:#d9edc9}.type-S{background:#c4def8}.type-T{background:#ead7bf}.type-U{background:#e1d5c5}.type-V{background:#f1d1d1}.type-W{background:#e6e6b8}.type-X{background:#d9f0d0}.type-Y{background:#d8d8f2}.type-Z{background:#ffd36a}.orderbadge,.status.orderstatus{background:#d7c4ff;border-color:#7156a5;color:#25143d}.status.accepted{background:#ffd36a}.checkline{display:flex!important;align-items:center;gap:8px}.checkline input{width:auto!important}.orderstation{margin:12px;border:1px solid #777;background:#d4d0c8}.orderstation>h3{margin:0;padding:7px;background:#808080;color:#fff}.order.locked{border-left:5px solid #9a6a00}.orderhead{display:flex;justify-content:space-between;gap:10px;align-items:center}.industrystatus{padding:7px;margin:7px 0;background:#fff0a8;border:1px solid #9b8b42}.industrystatus.ready{background:#b8e6b8;border-color:#4f8a4f}.acceptbtn{font-weight:bold;background:#cfe8cf}.online{background:#b8e6b8;padding:2px 5px}@media(max-width:800px){.presence{order:3;width:100%;justify-content:flex-start;flex-wrap:wrap}.compacttop{align-items:flex-start}.trainhead{grid-template-columns:1fr}.trainhead>span:last-child{justify-content:flex-start}.orderhead{align-items:flex-start;flex-direction:column}}

/* v1.15 */
nav.handover-gated button:disabled{opacity:.45;cursor:not-allowed}.handover-ackbar{position:sticky;bottom:0;margin-top:16px;padding:12px;display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff4b8;border:2px solid #8a7200;box-shadow:0 -2px 6px #0003;z-index:4}.handover-ackbar .ackbtn{background:#b8e6b8;font-weight:bold;padding:8px 14px}.handover-acked{margin-top:12px;padding:8px;background:#dcefdc;border:1px solid #6b966b;text-align:right}.workerbadge{display:inline-block;padding:3px 7px;border:1px solid #246b4a;border-radius:3px;background:#bce8d1;color:#103d2a;font-size:11px;font-weight:bold}.arrivebtn{background:#cfe8cf}.suggest{margin-top:4px;padding:5px;background:#fff5b8;border:1px solid #9b8b42}.trainhead>span:last-child{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}@media(max-width:700px){.handover-ackbar{align-items:stretch;flex-direction:column}.handover-ackbar .ackbtn{width:100%}}
/* v1.16 - stabile Live-Liste, Filter und Betreiber */
.filterbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding:8px 10px;margin:0 0 10px;background:#dedede;border:1px solid #999}.filterbar label{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:bold}.filterbar select{min-width:145px}.operatorbadge{display:inline-block;padding:2px 6px;border:1px solid #555;border-radius:3px;background:#dce7f2;color:#111;font-size:11px}.cars.live tbody tr{transition:none}.livecars details>summary,.order details>summary{cursor:pointer}

nav button.role-hidden{display:none!important}

.type-HUMP{background:#9ed9d0;border-color:#287b70;color:#123b36}.acceptedbybadge{display:inline-block;padding:3px 7px;border:1px solid #35735b;border-radius:3px;background:#bfe8d2;color:#153c2e;font-size:11px;font-weight:bold;white-space:nowrap}.filterbar{position:relative;z-index:5}.filterbar select:focus{outline:2px solid #2b579a;outline-offset:1px}

/* FUN1337 Easter egg */
.funegg{position:fixed;inset:0;z-index:10000;background:#020304;color:#38ff66;overflow:hidden;cursor:pointer;user-select:none;font-family:"Courier New",monospace;display:flex;align-items:center;justify-content:center}
.funegg::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0,rgba(255,255,255,.025) 1px,transparent 1px,transparent 4px);pointer-events:none;animation:funscan 8s linear infinite}
.funegg::after{content:"";position:absolute;inset:-20%;background:radial-gradient(circle,rgba(0,255,70,.08),transparent 48%);animation:funpulse 2.2s ease-in-out infinite}
.funbox{position:relative;z-index:2;width:min(1040px,96vw);height:min(720px,94vh);border:2px solid #38ff66;box-shadow:0 0 18px #0f5, inset 0 0 40px rgba(0,255,80,.08);background:rgba(0,5,3,.94);padding:18px;box-sizing:border-box;overflow:hidden}
.funlogo{margin:0;text-align:center;font-size:clamp(7px,1.15vw,14px);line-height:1;color:#72ff92;text-shadow:0 0 8px #00ff55;animation:funflicker 3s infinite}
.funtrain{margin:10px auto 0;white-space:pre;text-align:center;font-size:clamp(6px,.85vw,11px);line-height:1.05;color:#d7ffe0;text-shadow:0 0 5px #00ff55}
.funmodel{text-align:center;color:#ffef69;font-weight:bold;letter-spacing:.22em;margin-top:7px;text-shadow:0 0 7px #d8c900}
.funbar{position:absolute;left:0;right:0;bottom:42px;border-top:1px solid #38ff66;border-bottom:1px solid #38ff66;padding:9px 0;overflow:hidden;white-space:nowrap;background:#001a09;color:#baffc9;font-weight:bold;font-size:18px}
.funscroll{display:inline-block;padding-left:100%;animation:funmarquee 13s linear infinite}
.funhint{position:absolute;bottom:12px;left:0;right:0;text-align:center;font-size:12px;color:#6aaa78;letter-spacing:.14em}
.funstars{position:absolute;inset:0;opacity:.4;background-image:radial-gradient(#39ff6a 1px,transparent 1px);background-size:29px 31px;animation:funstars 12s linear infinite;pointer-events:none}
@keyframes funmarquee{to{transform:translateX(-100%)}}
@keyframes funpulse{50%{opacity:.35;transform:scale(1.05)}}
@keyframes funscan{to{transform:translateY(16px)}}
@keyframes funstars{to{background-position:58px 62px}}
@keyframes funflicker{0%,96%,100%{opacity:1}97%{opacity:.35}98%{opacity:.85}99%{opacity:.55}}

/* v1.20.0 - Livemap + FUN1337 refresh */
.funegg{position:fixed;inset:0;z-index:10000;background:rgba(28,36,45,.96);display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:Arial,sans-serif;color:#111}.funegg::before,.funegg::after,.funstars{display:none!important}.funbox{width:min(900px,94vw);height:auto;max-height:92vh;background:#dfe5eb;border:1px solid #647382;box-shadow:0 10px 38px #0008;padding:0;overflow:hidden}.funtitle{background:linear-gradient(#234f7d,#173a60);color:#fff;font-size:26px;font-weight:bold;padding:14px 20px;letter-spacing:.04em;text-shadow:0 1px #000}.funtitle span{font-weight:normal;color:#dceaf7}.funimagewrap{padding:22px;display:flex;justify-content:center;background:#eef2f5}.funimage{max-width:min(760px,86vw);max-height:52vh;object-fit:contain;image-rendering:auto;border:1px solid #8896a3;background:#fff}.funbar{position:relative;left:auto;right:auto;bottom:auto;background:#173a60;color:#fff;border:0;border-top:1px solid #0c2945;border-bottom:1px solid #0c2945;padding:10px 0;font-size:16px}.funhint{position:relative;bottom:auto;padding:10px;text-align:center;background:#d2d8de;color:#4d5965;font-size:11px;letter-spacing:.08em}.funscroll{animation:funmarquee 18s linear infinite}
.mappanel{margin:10px;border:1px solid #778491;background:#cfd7df;box-shadow:inset 0 0 0 1px #fff}.maplegend{padding:7px 10px;background:#e4e8ec;border-bottom:1px solid #9aa5af;font-size:11px;color:#46515b}#livemapsvg{display:block;width:100%;height:min(70vh,760px);background:#eef1ec;touch-action:none;cursor:grab}#livemapsvg:active{cursor:grabbing}.mapbg{fill:#eef1ec}.maproute{fill:none;stroke:#555;stroke-width:1.25;vector-effect:non-scaling-stroke;opacity:.78}.route-120,.route-150,.route-200{stroke:#1e4f78;stroke-width:1.7}.trainmarker circle{fill:#ffdc45;stroke:#202020;stroke-width:2;vector-effect:non-scaling-stroke}.trainmarker text{font:700 11px Arial,sans-serif;fill:#111;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.trainmarker:hover circle{fill:#ff8b3d;stroke-width:3}
/* v1.21.0 - echte Livemap */
.realmapwrap{position:relative;margin:10px;border:1px solid #707b86;background:#d5dbe0;box-shadow:inset 0 0 0 1px #fff}
#run8-leaflet-map{height:min(76vh,820px);min-height:560px;background:#d8dde1;font:12px Arial,sans-serif}
.maptoolbar{gap:10px;flex-wrap:wrap}.maptoolbar label{display:flex;align-items:center;gap:5px;font-size:11px}.maptoolbar select{min-width:90px}
.mapkey{position:absolute;z-index:500;left:10px;bottom:10px;background:rgba(242,244,246,.94);border:1px solid #7d8790;padding:6px 8px;font-size:11px;box-shadow:1px 1px 3px #555;display:flex;gap:10px;flex-wrap:wrap}.mapkey span{display:flex;align-items:center;gap:4px}.mapdot{width:10px;height:10px;border-radius:50%;display:inline-block;border:2px solid #fff;box-shadow:0 0 0 1px #222}.mapdot.bnsf,.run8-train-marker.bnsf{background:#ef8a22}.mapdot.up,.run8-train-marker.up{background:#ffd329}.mapdot.other,.run8-train-marker.other{background:#3f8fc4}.mapdot.stale{background:#999}.run8-marker-shell{background:transparent;border:0}.run8-train-marker{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px #222,0 1px 5px #000;cursor:pointer}.run8-train-marker.stale{filter:grayscale(1);opacity:.7;border-style:dashed}.trainpopup{min-width:220px;line-height:1.55;color:#222}.trainpopup h3{margin:0 0 6px;padding:3px 6px;background:#102c53;color:#fff;font-size:14px}.fallbackbadge{background:#777;color:#fff;padding:1px 4px;font-size:10px}.mapmissing{margin:0 10px 10px;padding:7px 10px;border:1px solid #a7adb2;background:#eef1f3;font-size:11px;color:#4d555c}.leaflet-popup-content-wrapper{border-radius:2px;border:1px solid #5d6974}.leaflet-control-attribution{font-size:10px!important}
/* Das gelieferte GIF besitzt nur einen Bildframe. Die Anzeige wird deshalb zusätzlich sichtbar animiert. */
.funimage-animated{animation:funTrainMotion 4.2s ease-in-out infinite alternate;transform-origin:50% 65%;will-change:transform,filter}
@keyframes funTrainMotion{0%{transform:scale(1) translateX(-2%);filter:brightness(.88)}45%{transform:scale(1.045) translateX(1%);filter:brightness(1.08)}100%{transform:scale(1.09) translateX(3%);filter:brightness(.96)}}

/* v1.22.0 */
main{max-width:none!important;width:100%;padding:8px 10px}.dispatchboard{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:10px;align-items:start}.stationboard{display:grid;grid-template-columns:repeat(auto-fit,minmax(470px,1fr));gap:10px}.stationpanel{min-width:0}.yardzones{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:5px}.yardzone{border:1px solid #999;background:#c8c8c8;min-width:0}.yardzone>h3{margin:0;padding:5px 6px;background:#aaa;font-size:11px;display:flex;justify-content:space-between}.yardzone .train{margin:4px}.yardzone .compactbody{font-size:11px}.emptyzone{padding:10px;text-align:center;color:#666}.arrivedzone>h3{background:#b9d9b9}.dispozone>h3{background:#c9b9df}.readyzone>h3{background:#eadf9b}.routeboard{position:sticky;top:6px;max-height:calc(100vh - 90px);overflow:auto}.routeboard .train{margin:5px}.localorderbox{margin:8px;border:1px solid #777;background:#eee}.localorderbox>summary{padding:8px;font-weight:bold;cursor:pointer}.localorderbox label{display:block;margin:6px}.localorderbox select,.localorderbox input,.localorderbox textarea{width:100%}.localorderbox textarea{min-height:60px}.localbadge,.trainorderbadge{display:inline-block;padding:2px 6px;border:1px solid #555;border-radius:3px;font-size:10px;font-weight:bold;margin-left:6px}.localbadge{background:#d7e8ff}.trainorderbadge{background:#e1d0ff}.archivedorder button{float:right}@media(max-width:1200px){.dispatchboard{grid-template-columns:1fr}.routeboard{position:static;max-height:none}.stationboard{grid-template-columns:1fr}}@media(max-width:800px){.yardzones{grid-template-columns:1fr}}

/* v1.22.1 - FUN1337/Credits restored */
.creditslink{position:fixed;right:8px;bottom:5px;z-index:9000;padding:1px 6px!important;font-size:9px!important;line-height:14px;opacity:.72}
.creditslink:hover{opacity:1}
.funegg{position:fixed!important;inset:0!important;z-index:10000!important;background:rgba(0,0,0,.68)!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}
.funbox{width:min(900px,94vw)!important;height:min(650px,90vh)!important;background:#d4d0c8!important;border:2px outset #fff!important;box-shadow:5px 5px 20px #000a!important;padding:0!important;overflow:hidden!important;display:grid!important;grid-template-rows:auto 1fr auto auto!important;cursor:default!important}
.funtitle{background:#000080!important;color:#fff!important;font:700 22px Tahoma,Arial,sans-serif!important;padding:9px 12px!important;text-shadow:none!important}
.funtitle span{font-weight:normal!important;color:#fff!important}
.funbounce{position:relative!important;overflow:hidden!important;min-height:360px!important;background:#20242a!important;border-top:1px solid #666!important;border-bottom:1px solid #666!important}
.funbounceimg{position:absolute!important;left:0!important;top:0!important;width:min(360px,42vw)!important;max-height:210px!important;object-fit:contain!important;background:transparent!important;border:0!important;filter:drop-shadow(3px 4px 4px #0008)!important;will-change:transform!important;pointer-events:none!important}
.funbar{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;margin:0!important;background:#808080!important;color:#fff!important;border:0!important;border-top:1px solid #555!important;border-bottom:1px solid #555!important;padding:7px 0!important;font:700 13px Tahoma,Arial,sans-serif!important;overflow:hidden!important;white-space:nowrap!important}
.funscroll{display:inline-block!important;padding-left:100%!important;animation:funmarquee 18s linear infinite!important}
.funhint{position:relative!important;bottom:auto!important;padding:6px!important;background:#d4d0c8!important;color:#444!important;text-align:center!important;font:10px Tahoma,Arial,sans-serif!important;letter-spacing:0!important}

/* v1.22.2 tracker-inspired livemap */
.map-shell{height:calc(100vh - 78px);display:grid;grid-template-rows:34px 1fr auto;min-height:520px}
.map-topbar{display:flex;align-items:center;gap:12px;background:#d4d0c8;border:1px solid #888;padding:3px 7px;font-size:11px}.map-topbar button{margin-left:auto}
.realmapwrap{position:relative;min-height:0}.realmapwrap #run8-leaflet-map{height:100%!important;min-height:480px}
.map-layerbox{position:absolute;z-index:800;right:10px;top:10px;width:190px;background:rgba(238,238,238,.96);border:1px solid #666;box-shadow:2px 2px 7px #0005;padding:8px;font:11px Tahoma,Arial,sans-serif}.map-layerbox>b{display:block;margin-bottom:5px}.map-layerbox label{display:block;margin:4px 0}.map-layerbox select{font-size:10px;max-width:110px}.map-subfilters{padding-left:18px;border-left:2px solid #aaa;margin:3px 0 7px}.map-layerbox hr{border:0;border-top:1px solid #aaa}
.map-legend{position:absolute;z-index:800;left:10px;bottom:10px;background:rgba(238,238,238,.94);border:1px solid #777;padding:5px 7px;font:10px Tahoma,Arial,sans-serif;display:flex;gap:10px}.trainkey{display:inline-block;width:10px;height:10px;border:1px solid #222;margin-right:3px;vertical-align:-1px}.trainkey.player{background:#1e88e5}.trainkey.ai{background:#ef8c00}.trainkey.uncrewed{background:#777}
.tracker-icon-shell{background:transparent!important;border:0!important}.tracker-train,.tracker-cluster{height:23px;line-height:21px;border:1px solid #202020;border-radius:3px;box-shadow:1px 2px 4px #0007;color:#fff;text-align:center;padding:0 7px;font:bold 10px Tahoma,Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.tracker-train.player{background:#1e88e5}.tracker-train.ai{background:#ef8c00}.tracker-train.uncrewed{background:#6f7479}.tracker-train.bnsf{border-bottom:3px solid #f3b300}.tracker-train.up{border-bottom:3px solid #e4d000}.tracker-train.selected{outline:3px solid #111;transform:scale(1.08)}.tracker-cluster{background:#263746;min-width:78px}
.tracker-popup h3{margin:0 0 7px;border-bottom:1px solid #aaa;padding-bottom:4px}.popupgrid{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;font-size:11px}.tracker-stackrow{width:100%;display:flex!important;justify-content:space-between!important;gap:12px;margin:3px 0!important;padding:5px!important;background:#eee!important;color:#111!important;border:1px solid #aaa!important;text-align:left!important}.tracker-stackrow:hover{background:#dbe7f1!important}.stacktag{font-weight:bold}.stacktag.player{color:#126bb4}.stacktag.ai{color:#b46300}.stacktag.uncrewed{color:#555}

/* v1.22.3 - Dispo readability / details fix */
.dispatchboard{grid-template-columns:minmax(0,1fr) 430px!important;gap:12px!important}
.stationboard{grid-template-columns:repeat(auto-fit,minmax(620px,1fr))!important;gap:12px!important}
.stationpanel{min-width:0!important;overflow:visible!important}
.yardzones{
 display:grid!important;
 grid-template-columns:1fr!important;
 gap:8px!important;
 padding:8px!important
}
.yardzone{
 width:100%!important;
 min-width:0!important;
 min-height:82px!important;
 background:#c8c8c8!important
}
.yardzone>h3{
 min-height:28px!important;
 box-sizing:border-box!important;
 padding:6px 9px!important;
 font-size:12px!important;
 align-items:center!important
}
.yardzone .train{
 width:auto!important;
 min-width:0!important;
 margin:7px!important;
 padding:8px!important;
 box-sizing:border-box!important;
 font-size:12px!important
}
.yardzone .train h3,.yardzone .train h4{
 font-size:13px!important;
 line-height:1.25!important;
 white-space:normal!important
}
.yardzone .compactbody{
 font-size:12px!important;
 line-height:1.35!important
}
.yardzone .row,.yardzone .actions{
 display:flex!important;
 flex-wrap:wrap!important;
 gap:6px!important
}
.yardzone button,.routeboard button{
 min-height:27px!important;
 padding:4px 8px!important;
 font-size:11px!important;
 cursor:pointer!important
}
.routeboard{min-width:0!important}
.routeboard .train{
 margin:7px!important;
 padding:8px!important;
 font-size:12px!important
}
/* Existing details/dropdowns must remain inside the viewport. */
.modal,.dialog,.detailsmodal,.details-dialog{
 box-sizing:border-box!important;
 max-width:94vw!important;
 max-height:90vh!important;
 overflow:auto!important
}
.modal input,.modal select,.modal textarea,
.dialog input,.dialog select,.dialog textarea,
.detailsmodal input,.detailsmodal select,.detailsmodal textarea,
.details-dialog input,.details-dialog select,.details-dialog textarea{
 max-width:100%!important;
 box-sizing:border-box!important
}
@media (min-width:1700px){
 .stationboard{grid-template-columns:repeat(2,minmax(620px,1fr))!important}
}
@media (max-width:1350px){
 .dispatchboard{grid-template-columns:1fr!important}
 .routeboard{position:static!important;max-height:none!important}
 .stationboard{grid-template-columns:1fr!important}
}

/* v1.22.5 - local order assignment uses Dispo-style search */
.localorderhint{margin:7px;padding:7px 9px;border:1px solid #9a9a9a;background:#e8e8e8;font-size:11px}
.searchoverlay{position:fixed;inset:0;z-index:9400;background:rgba(0,0,0,.48);display:flex;align-items:flex-start;justify-content:center;padding:5vh 20px;box-sizing:border-box}
.searchdialog{width:min(1050px,96vw);max-height:90vh;overflow:auto;background:#d4d0c8;border:2px outset #fff;box-shadow:4px 5px 18px #0008}
.searchhead{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;background:#000080;color:#fff;padding:7px 9px;font-size:13px}.searchhead button{min-width:30px}
.searchtools{display:flex;gap:8px;align-items:center;padding:9px;border-bottom:1px solid #999}.searchtools input{flex:1;min-width:0;padding:7px;font-size:12px}.searchtools span{white-space:nowrap;font-weight:bold}
.local-search-note{padding:7px 10px;background:#e5e5e5;border-bottom:1px solid #aaa;font-size:11px}
.searchresults{padding:7px}.assignresult{display:flex;gap:10px;align-items:stretch;margin:6px 0;padding:8px;border:1px solid #888;background:#f3f3f3}.assignresult-main{flex:1;min-width:0}.assignresult-title{display:flex;justify-content:space-between;gap:10px;font-size:13px}.assignresult-meta{display:flex;flex-wrap:wrap;gap:5px 18px;margin-top:5px;font-size:11px}.assignresult-cars{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.assignresult-cars span{padding:2px 5px;background:#ddd;border:1px solid #bbb;font-size:10px}.assignpick{min-width:95px;font-weight:bold}.search-empty{padding:30px;text-align:center;color:#666}
.selected-consist{margin:10px;padding:10px;border:1px solid #777;background:#eee;font-size:12px}.selected-consist>div+div{margin-top:4px;color:#555}
.localorderform{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:10px}.localorderform label{font-weight:bold;font-size:11px}.localorderform input,.localorderform textarea{display:block;width:100%;box-sizing:border-box;margin-top:3px;padding:6px}.localorderform .wide{grid-column:1/-1}.localorderform textarea{min-height:90px;resize:vertical}.searchactions{display:flex;justify-content:space-between;gap:8px;padding:10px;border-top:1px solid #999}.searchactions .primary,.toolbar .primary{font-weight:bold}
@media(max-width:700px){.localorderform{grid-template-columns:1fr}.localorderform .wide{grid-column:auto}.assignresult{display:block}.assignpick{width:100%;margin-top:7px}}

/* v1.22.8 - order filter restored */
.orderfilterbar{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:7px;padding:7px;background:#c8c8c8;border:1px solid #888;font-size:11px}
.orderfilterbar label{display:flex;align-items:center;gap:4px}.orderfilterbar select,.orderfilterbar input{min-height:25px;box-sizing:border-box}.orderfilterbar input{flex:1;min-width:220px;padding:4px 6px}.orderfilterbar button.active{font-weight:bold;background:#b9d7b5;border:2px inset #fff}.filtercount{margin-left:auto;font-weight:bold}

/* v1.22.9 - persistent Livemap train information */
.maptraindetails{position:absolute;right:12px;bottom:42px;z-index:1100;width:310px;max-width:calc(100% - 24px);max-height:55%;overflow:auto;background:#efefef;border:2px outset #fff;box-shadow:2px 3px 10px #0007;color:#111}
.mapdetailhead{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background:#000080;color:#fff;font-size:12px}.mapdetailhead button{min-width:28px}
.maptraindetails .tracker-popup{padding:7px}.maptraindetails .tracker-popup h3{margin:0 0 6px}.maptraindetails .popupgrid{display:grid;grid-template-columns:max-content 1fr;gap:4px 9px;font-size:11px}
.maptraindetails .popupgrid b{white-space:nowrap}.tracker-train.selected{outline:3px solid #111;outline-offset:2px;font-weight:bold}

/* v1.23.0 regression-restoration */
.modal{position:fixed!important;inset:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;overflow:hidden!important;display:flex!important;align-items:flex-start!important;justify-content:center!important;padding:8px!important;background:#0008!important;z-index:9000!important}
.modal[hidden]{display:none!important}
.modal>.window{position:relative!important;left:auto!important;top:auto!important;transform:none!important;width:min(1180px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;max-height:calc(100vh - 24px)!important;overflow:auto!important;margin:0 auto!important}
.modal>.window>.pad{min-width:0!important}
.modal .row{display:grid!important;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(260px,2fr) auto!important;gap:6px!important}
.modal .result{min-width:0!important}
.modal #results{overflow-x:hidden!important}
.traintypebadge{display:inline-block;margin-left:6px;padding:2px 5px;background:#dbe5f1;border:1px solid #7d8ea3;font-size:10px;font-weight:bold;vertical-align:middle}
@media(max-width:850px){.modal .row{grid-template-columns:1fr!important}.modal>.window{width:calc(100vw - 12px)!important;max-width:calc(100vw - 12px)!important}}

/* v1.23.1 - badge colors restored from supplied backup */
.compacttop{display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-width:0}
.typebadge,.orderbadge{display:inline-block;padding:3px 7px;border:1px solid #555;border-radius:3px;font-size:11px;font-weight:bold;white-space:normal}
.type-A{background:#dce9ff}.type-B{background:#e9ddff}.type-C{background:#ddd}.type-D{background:#f3e1c8}.type-E{background:#eee}.type-F{background:#e0e0e0}.type-G{background:#dff0c8}.type-H{background:#ffd9a8}.type-I{background:#d5e8f0}.type-K{background:#e6d8c8}.type-L{background:#cfe8cf}.type-M{background:#f3e5b5}.type-O{background:#e7d7ec}.type-P{background:#c9e9ff}.type-Q{background:#cfe4ff}.type-R{background:#d9edc9}.type-S{background:#c4def8}.type-T{background:#ead7bf}.type-U{background:#e1d5c5}.type-V{background:#f1d1d1}.type-W{background:#e6e6b8}.type-X{background:#d9f0d0}.type-Y{background:#d8d8f2}.type-Z{background:#ffd36a}
.type-HUMP{background:#9ed9d0;border-color:#287b70;color:#123b36}
.orderbadge,.status.orderstatus{background:#d7c4ff;border-color:#7156a5;color:#25143d}
.status.accepted{background:#ffd36a}
.acceptedbybadge{display:inline-block;padding:3px 7px;border:1px solid #35735b;border-radius:3px;background:#bfe8d2;color:#153c2e;font-size:11px;font-weight:bold;white-space:nowrap}

/* v1.23.2 targeted regression fixes */
.maptraindetails{display:none!important}
.orderstationbadge{display:inline-block;margin-left:6px;padding:2px 6px;background:#808080;color:#fff;border:1px solid #555;font-size:11px;font-weight:bold}
.checkline{display:flex!important;align-items:center;gap:8px}.checkline input{width:auto!important}
.typebadge,.orderbadge{display:inline-block;padding:3px 7px;border:1px solid #555;border-radius:3px;font-size:11px;font-weight:bold;white-space:normal}
.type-A{background:#dce9ff}.type-B{background:#e9ddff}.type-C{background:#ddd}.type-D{background:#f3e1c8}.type-E{background:#eee}.type-F{background:#e0e0e0}.type-G{background:#dff0c8}.type-H{background:#ffd9a8}.type-I{background:#d5e8f0}.type-K{background:#e6d8c8}.type-L{background:#cfe8cf}.type-M{background:#f3e5b5}.type-O{background:#e7d7ec}.type-P{background:#c9e9ff}.type-Q{background:#cfe4ff}.type-R{background:#d9edc9}.type-S{background:#c4def8}.type-T{background:#ead7bf}.type-U{background:#e1d5c5}.type-V{background:#f1d1d1}.type-W{background:#e6e6b8}.type-X{background:#d9f0d0}.type-Y{background:#d8d8f2}.type-Z{background:#ffd36a}.type-HUMP{background:#9ed9d0;border-color:#287b70;color:#123b36}

/* v1.23.3 — FUN1337 / Credits CRT treatment */
#funOverlay,.fun-overlay,.funoverlay,#creditsOverlay,.credits-overlay,.creditsoverlay,
.fun-window,.funwindow,.credits-window,.creditswindow,.fun-content,.credits-content{
  background:#000 !important;
  color:#d9dcff !important;
}
#funOverlay,.fun-overlay,.funoverlay,#creditsOverlay,.credits-overlay,.creditsoverlay{
  position:fixed;
}
.fun-window,.funwindow,.credits-window,.creditswindow,.fun-content,.credits-content{
  border-color:#30369a !important;
  box-shadow:inset 0 0 55px rgba(35,43,145,.28),0 0 18px rgba(20,25,90,.55) !important;
  overflow:hidden;
}
.fun-window::before,.funwindow::before,.credits-window::before,.creditswindow::before,
.fun-content::before,.credits-content::before{
  content:"";
  pointer-events:none;
  position:absolute;
  inset:0;
  z-index:20;
  background:
    repeating-linear-gradient(to bottom,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,rgba(0,0,0,.11) 2px,rgba(0,0,0,.11) 4px),
    radial-gradient(ellipse at center,transparent 48%,rgba(0,0,0,.28) 78%,rgba(0,0,0,.72) 100%);
  mix-blend-mode:screen;
}
.fun-window::after,.funwindow::after,.credits-window::after,.creditswindow::after,
.fun-content::after,.credits-content::after{
  content:"";
  pointer-events:none;
  position:absolute;
  inset:0;
  z-index:21;
  border-radius:2% / 4%;
  box-shadow:inset 0 0 45px #000,inset 0 0 8px rgba(72,81,255,.45);
}
#funOverlay img[src*="fun-train"],.fun-overlay img[src*="fun-train"],.funoverlay img[src*="fun-train"],
.fun-window img[src*="fun-train"],.funwindow img[src*="fun-train"],
.credits-window img[src*="fun-train"],.creditswindow img[src*="fun-train"]{
  background:#000 !important;
  filter:contrast(1.08) saturate(1.08) drop-shadow(0 0 5px rgba(70,78,255,.38));
}

/* v1.23.3 exact FUN1337 CRT override */
.funegg{background:#000!important;color:#aeb5ff!important}
.funbox{
 background:#000!important;border:2px solid #292f86!important;border-radius:14px/22px!important;
 box-shadow:0 0 0 5px #090b18,0 0 28px #000,inset 0 0 55px rgba(43,50,160,.28)!important;
 position:relative!important;
}
.funtitle{background:#000!important;color:#aeb5ff!important;border-bottom:1px solid #282e83!important;text-shadow:0 0 7px #3840d4!important}
.funtitle span{color:#858eea!important}
.funbounce{background:#000!important;border-color:#292f86!important;position:relative!important}
.funbounce::before{
 content:"";position:absolute;inset:0;z-index:10;pointer-events:none;
 background:repeating-linear-gradient(to bottom,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,rgba(0,0,0,.16) 2px,rgba(0,0,0,.16) 4px),
 radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.22) 73%,rgba(0,0,0,.72) 100%);
 animation:crtFlicker .13s steps(2,end) infinite;
}
.funbounce::after{
 content:"";position:absolute;inset:0;z-index:11;pointer-events:none;border-radius:2%/4%;
 box-shadow:inset 0 0 50px #000,inset 0 0 10px rgba(62,70,210,.42);
}
.funbounceimg{
 width:min(300px,36vw)!important;max-height:260px!important;background:#000!important;
 filter:contrast(1.12) saturate(1.12) drop-shadow(2px 0 rgba(255,0,0,.18)) drop-shadow(-2px 0 rgba(0,90,255,.2)) drop-shadow(0 0 6px rgba(75,82,255,.34))!important;
 z-index:2!important;
}
.funbar{background:#03040b!important;color:#b6bcff!important;border-color:#292f86!important;text-shadow:0 0 4px #3840d4!important}
.funhint{background:#000!important;color:#666da8!important}
@keyframes crtFlicker{0%{opacity:.88}50%{opacity:.98}100%{opacity:.91}}

/* v1.23.4 — CRT is intentionally limited to the moving-logo viewport */
.funegg{background:rgba(0,0,0,.68)!important}
.funbox{
 background:#d4d0c8!important;border:2px outset #fff!important;border-radius:0!important;
 box-shadow:5px 5px 20px #000a!important;
}
.funtitle{background:#000080!important;color:#fff!important;border-bottom:0!important;text-shadow:none!important}
.funtitle span{color:#fff!important}
.funbar{background:#808080!important;color:#fff!important;border-color:#555!important;text-shadow:none!important}
.funhint{background:#d4d0c8!important;color:#444!important}
.funbox::before,.funbox::after{display:none!important}
.funbounce{background:#000!important;border-color:#292f86!important;box-shadow:inset 0 0 38px #000!important}
.funbounce::before{
 display:block!important;content:"";position:absolute;inset:0;z-index:10;pointer-events:none;
 background:repeating-linear-gradient(to bottom,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,rgba(0,0,0,.16) 2px,rgba(0,0,0,.16) 4px),
 radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.20) 73%,rgba(0,0,0,.70) 100%);
 animation:crtFlicker .13s steps(2,end) infinite;
}
.funbounce::after{
 display:block!important;content:"";position:absolute;inset:0;z-index:11;pointer-events:none;
 box-shadow:inset 0 0 50px #000,inset 0 0 9px rgba(62,70,210,.40);
}
.funbounceimg{background:#000!important;z-index:2!important}

/* v1.23.5 industry completion */
.industrystatus.ready{background:#cfe8cf!important;border-color:#6f9f6f!important;color:#153d15!important}
body.dark .industrystatus.ready{background:#214b2a!important;border-color:#4f9a60!important;color:#e5ffe8!important}

/* v1.23.8 live refresh indicator */
header{position:relative}
.live-spinner{margin-left:auto;min-width:62px;padding:2px 7px;border:1px solid rgba(255,255,255,.28);background:rgba(0,0,0,.16);font:700 11px Consolas,"Courier New",monospace;color:#dfe5ff;white-space:nowrap;text-align:center}
.live-spinner #live-spinner-glyph{display:inline-block;width:11px;text-align:center;font-size:13px}

/* v1.24.2 login artwork */
.login{
  background:#008b8b url('/login-background.jpg?v=1242') center center / cover no-repeat !important;
}
.login .dialog{
  position:relative;
  z-index:1;
  box-shadow:3px 3px 12px rgba(0,0,0,.55);
}

/* v1.24.3 read-only track occupancy */
.trackgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:8px;padding:8px}.trackcard{background:#eee;border:1px solid #999}.trackcard>summary{cursor:pointer;padding:8px;background:#ddd}.trackcard>summary span{float:right}.trackmeta{padding:6px 8px;background:#f7f7f7;font-size:12px}.trackgroup{margin-bottom:10px}body.dark .trackcard{background:#20252a;border-color:#555}body.dark .trackcard>summary{background:#343a40;color:#eee}body.dark .trackmeta{background:#252a2f;color:#ddd}

/* v1.24.13 shared track display controls */
.trackflip{margin-left:10px;padding:3px 7px;font-size:11px}.displayoverride{margin-left:6px}.trackmeta .trackflip{vertical-align:middle}
/* v1.24.14 TEST Barstow schematic */
.schematicShell{display:grid;grid-template-columns:minmax(0,1fr) 390px;height:calc(100vh - 145px);min-height:560px;gap:8px;padding:8px}.yardviewport{position:relative;overflow:hidden;background:#081018;border:1px solid #365a78;cursor:grab}.yardviewport:active{cursor:grabbing}.yardcanvas{width:100%;height:100%;transform-origin:0 0;will-change:transform}.yardsvg{width:100%;height:100%;min-width:1050px;min-height:570px}.yardsvg .yardtitle{fill:#58a6ff;font-size:25px;font-weight:700}.yardsvg .zone{fill:#8ba4b8;font-size:14px;font-weight:700}.yardtrack{cursor:pointer}.yardtrack line{stroke:#647b8c;stroke-width:5;vector-effect:non-scaling-stroke}.yardtrack text{fill:#b9c7d2;font-size:13px;font-weight:700;pointer-events:none}.yardtrack:hover line{stroke:#55b8ff;stroke-width:8}.yardtrack.occupied line{stroke:#15c7d8}.yardtrack.occupied text{fill:#62efff}.yardtrack.selected line{stroke:#ffd34e;stroke-width:10}.yardtrack.selected text{fill:#ffe98e}.trackside{overflow:auto;background:#101820;border:1px solid #365a78;color:#d9e6ef}.tracksidehead{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;gap:8px;align-items:center;padding:12px;background:#172532;border-bottom:1px solid #365a78}.tracksidehead small{display:block;color:#8ba4b8;margin-top:3px}.tracksideempty{padding:24px;color:#8ba4b8}.sidecars{padding:6px}.sidecar{display:grid;grid-template-columns:34px 1fr;gap:8px;align-items:center;padding:8px 6px;border-bottom:1px solid #263746}.sidecar .seq{display:grid;place-items:center;width:28px;height:28px;border-radius:4px;background:#173d54;color:#6fe8ff;font-weight:700}.sidecar small{display:block;color:#9bb0bf;margin-top:2px}.filterbar button{padding:4px 9px}@media(max-width:1000px){.schematicShell{grid-template-columns:1fr}.trackside{position:absolute;right:10px;top:150px;width:360px;height:60vh;box-shadow:0 4px 20px #000}}

/* v1.24.15 TEST view switch + occupancy map */
.trackviews{display:inline-flex;gap:3px;margin-right:10px}.trackviews button.active{background:#245f87;border-color:#58a6ff;color:#fff}.yardtrack.occupied line{stroke:#e05252!important;stroke-width:7}.yardtrack.occupied .tracklabel{fill:#ff9a9a}.yardtrack .occupancylabel{fill:#ffb0b0;font-size:11px;font-weight:700;pointer-events:none}.yardtrack.selected line{stroke:#ffd34e!important}.yardtrack.selected .occupancylabel{fill:#ffe98e}

/* v1.24.16 TEST PDF-oriented Barstow schematic */
.yardviewport{background:#f2f3f5;border-color:#a9b0b7}
body.dark .yardviewport{background:#20252a;border-color:#555}
.yardsvg .yardtitle{fill:#222;font-size:21px}.yardsvg .zone{fill:#59636d;font-size:12px;letter-spacing:.04em}.yardsvg .flowlabel{fill:#59636d;font-size:13px;font-weight:700}
body.dark .yardsvg .yardtitle{fill:#eee}body.dark .yardsvg .zone,body.dark .yardsvg .flowlabel{fill:#aeb8c2}
.yardtrack path{fill:none;stroke:#666;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.yardtrack:hover path{stroke:#2b6f9d;stroke-width:7}.yardtrack.occupied path{stroke:#c93434!important;stroke-width:7}.yardtrack.selected path{stroke:#d39b16!important;stroke-width:9}.yardtrack text{fill:#333;font-size:12px}.yardtrack.occupied .tracklabel{fill:#a51f1f}.yardtrack .occupancylabel{fill:#a51f1f;font-size:10px}.yardtrack.selected .tracklabel,.yardtrack.selected .occupancylabel{fill:#8c6200}
body.dark .yardtrack path{stroke:#8c969f}body.dark .yardtrack text{fill:#ddd}body.dark .yardtrack.occupied .tracklabel,body.dark .yardtrack .occupancylabel{fill:#ff9696}body.dark .yardtrack.selected .tracklabel,body.dark .yardtrack.selected .occupancylabel{fill:#ffe18a}
.trackside{background:#fff;border-color:#aaa;color:#222}.tracksidehead{background:#ddd;border-color:#aaa}.tracksidehead small{color:#555}.tracksideempty{color:#666}.sidecartable{padding:8px}.sidecartable table{width:100%}
body.dark .trackside{background:#20252a;border-color:#555;color:#eee}body.dark .tracksidehead{background:#343a40;border-color:#555}body.dark .tracksidehead small,body.dark .tracksideempty{color:#bbb}


/* v1.24.17 TEST - echte Barstow-PDF + interaktiver Overlay-Layer */
.pdfmapstage{position:relative;width:100%;aspect-ratio:2048/622;background:#fff;overflow:hidden;box-shadow:0 0 0 1px #aaa}
.barstowpdf{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none;background:#fff}
.pdftrackoverlay{position:absolute;inset:0;width:100%;height:100%;z-index:4;overflow:visible}
.pdftrack{cursor:pointer}.pdftrack .hit{stroke:transparent;stroke-width:15;pointer-events:stroke}.pdftrack .state{stroke:transparent;stroke-width:7;stroke-linecap:round;pointer-events:none;vector-effect:non-scaling-stroke}
.pdftrack:hover .state{stroke:rgba(35,111,157,.82)}.pdftrack.occupied .state{stroke:rgba(210,40,40,.82)}.pdftrack.selected .state{stroke:#e1a51c;stroke-width:9}
.pdfocc{pointer-events:none}.pdfocc rect{fill:rgba(255,255,255,.94);stroke:#b52626;stroke-width:1}.pdfocc text{font:700 10px Arial,sans-serif;fill:#9d1717}
.pdftrack.selected .pdfocc rect{stroke:#a67500}.pdftrack.selected .pdfocc text{fill:#7b5700}
.pdfmapcredit{position:absolute;right:8px;bottom:6px;z-index:5;padding:3px 6px;background:rgba(255,255,255,.86);border:1px solid #bbb;font-size:10px;color:#555;pointer-events:none}
.pdfmapfallback{display:grid;place-items:center;height:100%;padding:20px;color:#444}.pdfmapfallback a{color:#17689b}
.yardviewport{background:#c9c9c9}.yardcanvas{min-width:1100px;min-height:334px;height:auto}.schematicShell{grid-template-columns:minmax(0,1fr) 430px}.trackside{font-size:12px}.trackside .cars th,.trackside .cars td{padding:6px 7px}
body.dark .pdfmapstage{box-shadow:0 0 0 1px #555}body.dark .pdfmapcredit{background:rgba(32,37,42,.9);color:#ddd;border-color:#555}
/* v1.24.18 TEST - local Inkscape SVG base */
.svgmapstage{position:relative;width:2048px;height:622px;overflow:hidden;background:#fff}
.barstowsvg{position:absolute;inset:0;width:2048px;height:622px;display:block;object-fit:fill;pointer-events:none;user-select:none}
.svgmapstage .pdftrackoverlay{position:absolute;inset:0;width:2048px;height:622px;z-index:3}

/* v1.24.19: Original-SVG selbst, ohne Track-Overlay */
.barstowsvgobj{position:absolute;inset:0;width:2016px;height:612px;display:block;border:0;background:transparent}
.svgmapstage{width:2016px!important;height:612px!important;background:transparent!important}

/* v1.24.21: stable SVG viewport / pan */
.yardcanvas{will-change:auto!important;backface-visibility:hidden;transform-style:flat}.barstowsvgobj{image-rendering:auto;touch-action:none}.yardviewport{touch-action:none;contain:paint}

/* v1.24.22 smooth SVG navigation */
.yardviewport{touch-action:none;overscroll-behavior:contain}.yardcanvas{backface-visibility:hidden;transform-style:preserve-3d}.barstowsvgobj{display:block;user-select:none;-webkit-user-drag:none}

/* v1.24.23: transparent schematic map surface */
.pdfmapstage,.svgmapstage{background:transparent!important;box-shadow:none!important}
.yardviewport{background:transparent!important;border-color:#aeb4ba}
.barstowsvgobj{background:transparent!important}
.pdfmapcredit{display:none!important}

/* v1.24.25: Barstow SVG navigation + native Dispo styling */
.schematicShell{gap:8px!important;padding:8px!important;background:#c9c9c9!important}
.yardviewport,.trackside{box-sizing:border-box;border:1px solid #888!important;background:#fff!important;color:#222!important}
.yardviewport{cursor:grab;contain:layout paint;overflow:hidden!important}
.yardviewport:active{cursor:grabbing}
.yardcanvas{width:2688px!important;height:816px!important;min-width:2688px!important;min-height:816px!important;transform-origin:0 0!important;will-change:transform!important}
.svgmapstage,.pdfmapstage{width:2688px!important;height:816px!important;background:#fff!important;box-shadow:none!important;overflow:hidden!important}
.barstowsvgobj{width:2688px!important;height:816px!important;background:#fff!important}
.trackside{overflow:auto!important;font-size:12px!important}
.tracksidehead{position:sticky;top:0;z-index:3;background:#ddd!important;color:#222!important;border-bottom:1px solid #888!important;padding:7px 8px!important}
.tracksidehead small{color:#444!important}
.trackside .tablewrap{padding:0!important;margin:0!important}
.trackside .cars{width:100%!important;border-collapse:collapse!important;background:#fff!important}
.trackside .cars th{background:#d7d3cd!important;color:#222!important;border:1px solid #999!important;text-align:left!important;padding:4px 5px!important}
.trackside .cars td{border:1px solid #999!important;padding:4px 5px!important;color:#222!important}
.tracksideempty{background:#fff!important;color:#555!important}
body.dark .yardviewport,body.dark .trackside,body.dark .svgmapstage,body.dark .barstowsvgobj{background:#fff!important;color:#222!important}
/* v1.24.26 TEST: native SVG viewBox pan/zoom; no CSS transformed map canvas */
.yardcanvas{width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;transform:none!important;will-change:auto!important}
.svgmapstage{width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;background:#fff!important}
.barstowsvgobj{display:block!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;background:#fff!important}
.yardviewport{background:#fff!important;overflow:hidden!important}

/* v1.24.28 - assignment/order current location */
.assignmentlocation,.orderlocation,.compactlocation{margin:4px 0}.compactlocation{font-size:11px}.locationtext{display:inline-block;padding:2px 6px;border:1px solid #888;background:#e6e6e6}.locationlink{padding:2px 6px;border:1px solid #666;background:#e6e6e6;text-decoration:underline;font-weight:normal;cursor:pointer}.locationlink:hover{background:#fff}.locationlink b{font-weight:bold}
