:root{color-scheme:dark;--bg:#101820;--panel:#151f29;--panel2:#192631;--line:#293844;--muted:#8293a1;--text:#e7edf2;--green:#48c78e;--amber:#e5b65c;--red:#ee6b68}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font:13px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.shell{height:100vh;min-height:620px;display:grid;grid-template-columns:minmax(0,1fr) 398px;gap:0;background:var(--bg)}.main{min-width:0;display:grid;grid-template-rows:minmax(0,1fr) 122px}.map-wrap{position:relative;min-height:0;overflow:hidden;background:#111c25}.top{position:absolute;z-index:700;left:18px;right:18px;top:14px;pointer-events:none}.brandline,.types{pointer-events:auto}.brandline{display:flex;align-items:center;gap:11px}.logo{width:36px;height:36px;border-radius:10px;background:#233b49;color:#70d9ae;display:grid;place-items:center;font-size:24px;font-weight:800}.brandline h1{font-size:18px;letter-spacing:-.4px;margin:0;font-weight:750}.brandline p{margin:0;color:#91a1ad;font-size:11px}.live{margin-left:10px;display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid #2c5547;background:#142b27;color:#8eddb9;border-radius:20px;font-size:11px}.live i{width:7px;height:7px;background:var(--green);border-radius:50%;box-shadow:0 0 9px #48c78e}.live.offline{border-color:#67423f;color:#f1a29b;background:#2c201f}.live.offline i{background:var(--red)}.types{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px;max-width:1000px}.types button,.regions button{border:1px solid #354653;background:#17232d;color:#aebbc5;border-radius:6px;padding:6px 10px;font:600 11px inherit;cursor:pointer;white-space:nowrap}.types button.on{background:#243a47;color:#eef5f8;border-color:#587080}.types button.empty{opacity:.45;cursor:default}#map{position:absolute;inset:0;background:#15222c}.leaflet-container{background:#15222c;font:inherit}.leaflet-control-zoom{border:1px solid #354653!important;box-shadow:0 5px 20px #0005!important}.leaflet-control-zoom a{background:#192630!important;color:#dce5eb!important;border-color:#354653!important}.leaflet-control-attribution{background:#111b24cc!important;color:#81919e!important}.leaflet-control-attribution a{color:#9bb9c8!important}.stats{position:absolute;z-index:600;left:18px;bottom:17px;display:flex;gap:0;border:1px solid #34434e;background:#131e28ed;border-radius:8px;overflow:hidden;box-shadow:0 5px 22px #0004}.stats div{padding:9px 14px;display:flex;flex-direction:column;min-width:92px;border-right:1px solid #34434e}.stats div:last-child{border:0}.stats b{font-size:17px;line-height:1.2}.stats span{font-size:10px;color:#91a0ac;margin-top:2px}.legend{position:absolute;right:18px;bottom:17px;z-index:600;display:flex;flex-direction:column;gap:5px;padding:9px 11px;background:#131e28ed;border:1px solid #34434e;border-radius:7px;color:#b8c3cb;font-size:10px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.green{background:var(--green)}.amber{background:var(--amber)}.red{background:var(--red)}.map-note{position:absolute;right:10px;bottom:2px;z-index:500;color:#7c8b97;font-size:9px}.selected{position:absolute;z-index:650;left:18px;bottom:104px;width:min(330px,calc(100% - 36px));padding:13px 15px;background:#131e28f5;border:1px solid #435562;border-radius:9px;box-shadow:0 8px 30px #0007}.selected h3{margin:0 0 5px;font-size:14px}.selected p{margin:3px 0;color:#aebbc5;font-size:11px}.selected .close{float:right;border:0;background:none;color:#aebbc5;font-size:20px;cursor:pointer}.incidents{background:#141f28;border-top:1px solid #2d3b46;padding:13px 18px;overflow:auto}.inc-head{display:flex;align-items:center;justify-content:space-between}.inc-head h2{margin:0;font-size:13px}.inc-head span{font-size:10px;color:#83939f}.incident-list{margin-top:8px;color:#a8b5bf;font-size:11px}.sidebar{min-width:0;background:#151f29;border-left:1px solid #2b3944;display:flex;flex-direction:column;max-height:100vh}.side-head{padding:19px 17px 13px;border-bottom:1px solid #2b3944}.side-title{display:flex;align-items:center;justify-content:space-between}.side-title h2{font-size:17px;letter-spacing:-.3px;margin:0}.side-title p{margin:3px 0 0;color:#8b9ba7;font-size:10px}.counter{font-size:12px;font-weight:700;color:#f0bd6b;background:#392d1e;border:1px solid #5c482b;padding:4px 8px;border-radius:6px}.regions{display:flex;flex-wrap:wrap;gap:5px;margin-top:13px}.regions button{font-size:10px;padding:5px 8px}.regions button.active{background:#2c4350;color:#eef4f7;border-color:#607887}.arrivals{overflow:auto;flex:1;padding:9px 10px}.arrival{display:grid;grid-template-columns:55px minmax(0,1fr);gap:11px;padding:12px 10px;border-bottom:1px solid #293742;cursor:pointer;transition:background .15s}.arrival:hover{background:#1c2a35}.delay{font-size:20px;font-weight:750;color:#e8b45b;line-height:1.2;white-space:nowrap}.delay.red{color:#f07870}.delay.green{color:#52c995}.route{font-size:12px;font-weight:650;color:#e3eaf0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.train-meta{margin-top:4px;font-size:10px;color:#8f9eaa;display:flex;gap:7px;flex-wrap:wrap}.train-id{color:#b9c7d0}.empty-state{padding:25px 14px;color:#8999a5;text-align:center;font-size:11px} .sidebar footer{padding:12px 15px;border-top:1px solid #2b3944;color:#778894;font-size:9px;line-height:1.5}.train-marker{background:transparent;border:0}.train-pin{display:flex;align-items:center;gap:4px;white-space:nowrap;filter:drop-shadow(0 2px 3px #000b)}.train-pin .bubble{width:10px;height:10px;border-radius:50%;border:2px solid #15212b;box-shadow:0 0 0 1px currentColor}.train-pin .tag{padding:2px 5px;border-radius:3px;background:#121d26ed;border:1px solid currentColor;color:#e9eef2;font-size:9px;font-weight:700}.train-pin.ok{color:var(--green)}.train-pin.warn{color:var(--amber)}.train-pin.bad{color:var(--red)}@media(max-width:900px){.shell{grid-template-columns:minmax(0,1fr) 340px}}@media(max-width:700px){.shell{height:auto;min-height:100vh;display:flex;flex-direction:column}.main{display:contents}.map-wrap{height:70vh;min-height:560px;order:0}.sidebar{order:1;max-height:65vh;border-left:0;border-top:1px solid #2b3944}.incidents{order:2;min-height:110px}.top{left:10px;right:10px;top:10px}.types{gap:4px;margin-top:10px;max-width:calc(100% - 45px)}.types button{font-size:10px;padding:5px 7px}.stats{left:10px;bottom:12px}.stats div{min-width:74px;padding:7px 9px}.stats b{font-size:15px}.legend{right:9px;bottom:80px}.map-note{display:none}.side-head{padding:14px}.incidents{padding:12px}.selected{bottom:102px;left:10px}}
