:root{
  --bg:#0e1116; --panel:#171c24; --edge:#232a35; --ink:#e7edf5; --muted:#93a1b5;
  --accent:#e0803a; --ok:#3fae6a; --warn:#d9a441; --off:#c0463b;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--accent)}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 16px;border-bottom:1px solid var(--edge);position:sticky;top:0;background:var(--bg);z-index:10}
header h1{font-size:18px;margin:0}
.status{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--muted)}
.dot.live{background:var(--ok);box-shadow:0 0 0 3px rgba(63,174,106,.2)}
.dot.stale{background:var(--warn)}
.dot.down{background:var(--off)}
main{display:grid;gap:14px;padding:14px;max-width:1200px;margin:0 auto;
  grid-template-columns:1fr 1fr;grid-template-areas:"video map" "plan plan"}
#videoPane{grid-area:video}#mapPane{grid-area:map}#planPane{grid-area:plan}
@media (max-width:820px){main{grid-template-columns:1fr;grid-template-areas:"video" "map" "plan"}}
.pane{background:var(--panel);border:1px solid var(--edge);border-radius:12px;overflow:hidden}
.pane h2{margin:0;padding:12px 14px;font-size:15px;border-bottom:1px solid var(--edge)}
.tabs{display:flex;gap:6px;padding:8px;border-bottom:1px solid var(--edge);flex-wrap:wrap}
.tab{padding:6px 12px;border:1px solid var(--edge);border-radius:999px;background:transparent;
  color:var(--muted);cursor:pointer;font-size:13px}
.tab.active{color:var(--ink);border-color:var(--accent);background:rgba(224,128,58,.12)}
.tab .cdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:var(--off);vertical-align:middle}
.tab.online .cdot{background:var(--ok)}
.player-wrap{position:relative;aspect-ratio:16/9;background:#000}
.player-mount,.player-mount iframe,.player-mount video{position:absolute;inset:0;width:100%;height:100%;border:0}
.offline{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;text-align:center;color:var(--muted);padding:20px}
.offline small{max-width:280px}
.hidden{display:none}
#map{height:420px;width:100%}
@media (max-width:820px){#map{height:320px}}
.plan-meta{padding:10px 14px;color:var(--muted);font-size:13px}
.plan-summary{padding:0 14px 10px}
.stops{list-style:none;margin:0;padding:0 14px 14px}
.stops li{border-left:2px solid var(--edge);padding:8px 0 8px 14px;margin-left:6px;position:relative}
.stops li::before{content:"";position:absolute;left:-6px;top:12px;width:9px;height:9px;border-radius:50%;background:var(--edge)}
.stops li.visited::before{background:var(--muted)}
.stops li.current::before{background:var(--accent);box-shadow:0 0 0 3px rgba(224,128,58,.25)}
.stops li.planned::before{background:transparent;border:2px solid var(--edge);left:-7px}
.stops .nm{font-weight:600}
.stops .meta{color:var(--muted);font-size:13px}
.stops .note{font-size:14px;margin-top:3px}
footer{padding:12px 16px;border-top:1px solid var(--edge);color:var(--muted);font-size:13px;text-align:center}
