:root{
  --bg:#0e151d;--surface:#141d27;--sub:#18222e;--line:#243243;--line2:#1d2936;--line3:#34465b;--chip:#1e2a37;
  --ink:#e8eef4;--ink2:#c8d3de;--mute:#93a2b1;--faint:#8394a5;
  --acc:#f2b33d;--acc-bg:#2d2615;--acc-t:#f2b33d;--cy:#5cc8e8;
  --pos:#3ccf91;--pos-bg:#14302a;--neg:#ff7a6b;--neg-bg:#3a1f1e;--warn:#f2b33d;--warn-bg:#2d2615;
  --top:#0b1118;--mark:#f2b33d;--mark-ink:#0b1118;--pri:#f2b33d;--pri-ink:#0b1118;--r:8px;
  --sh:0 1px 2px rgba(0,0,0,.25);--sh2:0 4px 16px rgba(0,0,0,.45);--tip:#e8eef4;
}
body{color-scheme:dark}
.tip{color:#0e151d}
.top .tabs button[aria-selected="true"]{border-bottom-color:var(--acc)}
.clock{font:600 14px "Inter",system-ui;color:var(--ink2);border:1px solid var(--line);border-radius:6px;padding:3px 9px}
.btn{background:var(--chip);border-color:var(--line3);color:var(--ink)}
.btn.pri{color:#0b1118}
th{background:#17212c}
.strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:8px;margin-bottom:12px}
.strip>div{padding:11px 16px;display:grid;gap:2px;align-content:start}
.strip>div+div{border-left:1px solid var(--line)}
.strip b{font:700 24px/1.25 "Inter",system-ui}
.strip small{font-size:13px;font-weight:500;color:var(--mute);margin-left:3px}
.strip .mbar{max-width:160px;margin-top:3px}
.strip .mbar b{background:var(--pos)}
.w60{width:60%!important}
.al b{color:var(--neg)}
.al-t{font-size:12px;color:var(--ink2)}
.g-lv{grid-template-columns:minmax(0,1fr) 340px;align-items:start}
.mapc{overflow:hidden}
.map-w{margin-top:12px;border-top:1px solid var(--line);aspect-ratio:1000/620;position:relative;background:#101922}
.map{width:100%;height:100%;display:block}
.map text{font:600 13px "Noto Sans CJK JP",system-ui;fill:#7d8fa1;letter-spacing:.1em}
.map .vl-t{font:700 12px "Inter",system-ui;fill:#0b1118;letter-spacing:0}
.map .rt{fill:none;stroke-linecap:round;stroke-linejoin:round}
.map .veh{transition:transform .9s linear}
.lg-ok{--k:var(--pos)}.lg-lt{--k:var(--neg)}.lg-dp{--k:var(--acc)}.lg-dn{--k:#3a4b5e}.lg-bf{--k:#8394a5}.lg-af{--k:var(--cy)}
.vlist{margin-top:12px;border-top:1px solid var(--line)}
.vi{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line2);cursor:pointer}
.vi:hover{background:var(--sub)}
.vi[aria-selected="true"]{background:#1b2633;box-shadow:inset 3px 0 0 var(--acc)}
.vi .no{width:34px;height:26px;border-radius:5px;display:grid;place-items:center;font:700 12.5px "Inter",system-ui;color:#0b1118;background:var(--pos)}
.vi.late .no{background:var(--neg)}
.vi .nm{font-size:13px;font-weight:600;display:flex;gap:8px;align-items:center}
.vi .nm span{font-weight:400;color:var(--mute);font-size:12px}
.vi .pr{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:11.5px;color:var(--mute)}
.vi .pr .mbar{flex:1;max-width:120px;min-width:50px;height:4px}
.vi .pr .mbar b{background:var(--ink2)}
.vi .eta{text-align:right;display:grid;line-height:1.3}
.vi .eta b{font:700 15px "Inter",system-ui}
.vi .eta span{font-size:11px;color:var(--mute)}
.vi.late .eta span{color:var(--neg);font-weight:600}
/* opt */
.g-op{grid-template-columns:minmax(0,1fr) 360px;align-items:start}

.ocol{display:grid;gap:12px}
.cmp{padding:10px 16px 14px;display:grid;gap:0}
.cr{display:grid;grid-template-columns:22px 1fr auto auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line2);font-size:13px}
.cr:last-child{border-bottom:0}
.cr svg{color:var(--faint)}
.cr .b4{color:var(--mute);text-decoration:line-through;text-decoration-color:#56687b;font-family:"Inter",system-ui}
.cr .af{font:700 16px "Inter",system-ui;text-align:right;min-width:88px}
.cr .df{grid-column:2/-1;font-size:11.5px;color:var(--pos);font-weight:600;margin-top:-6px}
.stops{list-style:none;margin:10px 0 0;padding:0 16px 12px;max-height:338px;overflow:auto;counter-reset:s}
.stops li{display:grid;grid-template-columns:26px 1fr auto;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line2);font-size:12.5px;counter-increment:s}
.stops li::before{content:counter(s);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:700 11px "Inter",system-ui;background:#173540;color:var(--cy);border:1px solid #2b5664}
.stops li div{display:grid;line-height:1.35}
.stops li span.sub{font-size:11px}
.stops li .w{font:12px "Inter",system-ui;color:var(--ink2);text-align:right}
.map .draw{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw 1.6s ease-out forwards}
@keyframes draw{to{stroke-dashoffset:0}}
/* eta */
.gantt-w{overflow-x:auto;margin-top:12px;border-top:1px solid var(--line)}
.gantt{min-width:880px;position:relative;padding:0 16px 26px}
.gh{display:grid;grid-template-columns:88px 1fr;font:11px "Inter",system-ui;color:var(--faint);height:28px;align-items:end}
.gh .ticks{position:relative;height:100%}
.gh .ticks span{position:absolute;bottom:6px;transform:translateX(-50%)}
.gr{display:grid;grid-template-columns:88px 1fr;align-items:center;height:34px;border-top:1px solid var(--line2)}
.gr .lb{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.gr .lb i{width:8px;height:8px;border-radius:2px;background:var(--pos)}
.gr.late .lb i{background:var(--neg)}
.gr .tr{position:relative;height:100%;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),var(--line2) calc(10% - 1px) 10%)}
.gr .st{position:absolute;top:10px;height:14px;border-radius:3px;background:var(--pos);opacity:.9}
.gr .st.dn{background:#3a4b5e}
.gr .st.lt{background:var(--neg)}
.gr .st.br{background:repeating-linear-gradient(45deg,#2a3746 0 3px,#202c39 3px 6px);opacity:1}
.now{position:absolute;top:0;bottom:0;width:0;border-left:2px solid var(--acc);z-index:2}
.now{top:28px!important;bottom:22px!important}.now span{position:absolute;bottom:-20px;left:0;transform:translateX(-50%);font:700 11px "Inter",system-ui;color:#0b1118;background:var(--acc);border-radius:3px;padding:0 4px}
.g-et{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);margin-top:12px}
.h190{height:190px}
.hint{font-size:12px;color:var(--mute);padding:0 16px 14px}
.slack{font-weight:700}
.slack.lo{color:var(--neg)}.slack.md{color:var(--acc)}.slack.ok{color:var(--pos)}
.tag.line{border-color:var(--line3)}
@media (max-width:1180px){.g-lv,.g-op{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.g-et{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .strip{grid-template-columns:1fr 1fr}
  .strip>div:nth-child(3){border-left:0}
  .strip>div:nth-child(n+3){border-top:1px solid var(--line)}
  .strip>div{padding:9px 12px}
  .strip b{font-size:19px}
  .map-w{aspect-ratio:auto;height:340px}
  .head .btn{width:100%;justify-content:center}
}
