:root{--ink:#10242d;--mute:#5d7079;--line:#d9e1e4;--bg:#eef2f3;--panel:#fff;--ok:#1f8a4c;--warn:#b86e00;--bad:#c0392b}
*{box-sizing:border-box}html,body{height:100%;margin:0}
body{font:14px/1.4 system-ui,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);display:grid;grid-template-columns:380px 1fr}
aside{background:var(--panel);display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}
header{padding:14px 16px 10px}h1{font-size:18px;margin:0 0 2px}
#st{font-size:12px;color:var(--mute)}#st.err{color:var(--bad)}
#q{margin:0 16px 8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}
#chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px;max-height:116px;overflow:auto}
.chip{border:2px solid var(--c);color:var(--c);background:#fff;border-radius:999px;padding:2px 10px;font-weight:700;cursor:pointer}
.chip.on{background:var(--c);color:#fff}
.chip:focus-visible,.card:focus-visible{outline:3px solid #1a73e8;outline-offset:2px}
#list{overflow:auto;flex:1;border-top:1px solid var(--line)}
.card{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;padding:10px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.card:hover{background:#f6f9fa}
.badge{grid-row:span 2;align-self:center;background:var(--c);color:#fff;font-weight:800;border-radius:8px;padding:6px 9px;min-width:44px;text-align:center}
.card b{font-weight:650}.sub{color:var(--mute);font-size:12px}.num{font-variant-numeric:tabular-nums}
.big{font-size:17px;font-weight:700;text-align:right}
.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}
#map{height:100%}
.bus{position:absolute;transform:translate(-50%,-50%);background:var(--c);color:#fff;font:800 12px/1 system-ui;padding:5px 8px;border-radius:10px 10px 10px 2px;box-shadow:0 0 0 2px #fff,0 2px 6px #0006;white-space:nowrap}
.bus small{font-weight:500;opacity:.85}
.bus-m{transition:transform 9.5s linear}.leaflet-zoom-anim .bus-m{transition:none!important}

.stl{font:600 11px system-ui;padding:2px 6px}
.pop{min-width:230px}.pop h3{margin:0 0 6px;font-size:15px}
.pop table{border-collapse:collapse;width:100%}.pop td{padding:2px 0;vertical-align:top}.pop td:first-child{color:var(--mute);padding-right:10px;white-space:nowrap}
.bar{height:5px;background:#e3e9eb;border-radius:3px;margin:8px 0 2px}.bar i{display:block;height:100%;background:var(--c);border-radius:3px}
.arr{display:grid;grid-template-columns:auto 1fr auto;gap:2px 8px;align-items:center;margin:4px 0}
.arr .badge{grid-row:auto;padding:2px 7px;min-width:36px;font-size:12px}
.empty{padding:22px 16px;color:var(--mute)}
@supports(height:100dvh){html,body{height:100dvh}}
body{-webkit-tap-highlight-color:transparent}
.toast{position:fixed;left:50%;top:12px;transform:translateX(-50%);background:#10242d;color:#fff;padding:9px 14px;border-radius:10px;z-index:3000;max-width:90vw;font-size:13px;box-shadow:0 2px 10px #0005}
@media(max-width:800px){
body{grid-template-columns:1fr;grid-template-rows:50% 1fr;font-size:15px}
aside{order:2;border:0}#map{order:1}
header{padding:10px 14px 6px}h1{font-size:16px}
#q{margin:0 12px 6px;font-size:16px;padding:10px}
#chips{flex-wrap:nowrap;overflow-x:auto;max-height:none;padding:0 12px 8px}
.chip{flex:none;padding:6px 12px;font-size:14px}
.card{padding:12px 14px}
#list{padding-bottom:env(safe-area-inset-bottom)}
.leaflet-control-zoom{display:none}
.loc{width:44px!important;height:44px!important}
.pop{min-width:0}
}
.sc{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--mute);margin-top:6px}.sc input{margin:0}
.bus.all{font-size:11px;padding:4px 6px;opacity:.85}
