:root{--bg: #0b0d10;--panel: #12161c;--panel-2: #181e27;--border: #273041;--text: #e8eef7;--muted: #8b97a8;--accent: #6ec3ff;--ok: #5ddea8;--late: #ff7b7b;--early: #7bc4ff;--shadow: 0 12px 40px rgba(0, 0, 0, .45);--sidebar-width: 380px}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#map{position:absolute;inset:0;left:var(--sidebar-width);background:#0b0d10}body.sidebar-collapsed #map{left:0}body.sidebar-expanded #map{left:0;opacity:0;pointer-events:none}#sidebar{position:absolute;top:0;left:0;bottom:0;width:var(--sidebar-width);background:linear-gradient(180deg,#10151c,#0d1117);border-right:1px solid var(--border);box-shadow:var(--shadow);z-index:500;display:flex;flex-direction:column;overflow:hidden}body.sidebar-collapsed #sidebar{transform:translate(calc(-1 * var(--sidebar-width)))}body.sidebar-expanded #sidebar{width:100%;border-right:none;transform:none;z-index:700}#sidebar,#map{transition:left .2s ease,transform .2s ease,width .2s ease,opacity .2s ease}#sidebar-toggle{position:absolute;top:12px;left:calc(var(--sidebar-width) + 12px);z-index:600;width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:#12161ceb;color:var(--text);cursor:pointer;box-shadow:var(--shadow)}body.sidebar-collapsed #sidebar-toggle{left:12px}body.sidebar-expanded #sidebar-toggle{display:none}.panel-header{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:14px 14px 10px;border-bottom:1px solid var(--border);background:#ffffff03}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn.active{background:#6ec3ff26;border-color:#6ec3ff59;color:#d7efff}body.sidebar-expanded .panel-body{max-width:1400px;width:100%;margin:0 auto;display:grid;grid-template-columns:1fr;align-content:start;gap:12px}body.sidebar-expanded .panel-body>.search,body.sidebar-expanded .panel-body>.stats-panel,body.sidebar-expanded .panel-body>.chip-row,body.sidebar-expanded .panel-body>.empty{grid-column:1 / -1}body.sidebar-expanded .stats-agency-list{grid-template-columns:repeat(4,minmax(0,1fr))}body.sidebar-expanded #tracker-hud{display:none}@media (min-width: 900px){body.sidebar-expanded .panel-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}}@media (min-width: 1200px){body.sidebar-expanded .panel-body{grid-template-columns:repeat(3,minmax(0,1fr))}body.sidebar-expanded .stats-agency-list{grid-template-columns:repeat(6,minmax(0,1fr))}}.brand{font-weight:700;letter-spacing:.02em}.brand span{color:var(--accent)}.panel-title{font-size:14px;font-weight:600;text-transform:lowercase;color:var(--muted)}.status-pill{font-size:11px;color:var(--ok);background:#5ddea81a;border:1px solid rgba(93,222,168,.25);border-radius:999px;padding:4px 8px}.panel-body{overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.search{width:100%;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:10px 12px;outline:none}.search:focus{border-color:#3d516c}.prefs-row{display:flex;flex-wrap:wrap;gap:8px}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:999px;padding:4px 8px;cursor:pointer}.agency-head{display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--muted);font-size:12px;margin:4px 2px 8px}.agency-head{cursor:pointer;user-select:none;border-radius:10px;padding:6px 4px}.agency-head:hover{background:#ffffff08}.agency-title-row{display:flex;align-items:center;gap:6px}.collapse-chevron{display:inline-flex;width:12px;color:var(--muted);transition:transform .15s ease;font-size:11px}.collapse-chevron.open{transform:rotate(90deg)}.agency-head-main{display:flex;flex-direction:column;gap:2px;min-width:0}.agency-head-main strong{text-transform:uppercase;letter-spacing:.04em}.agency.collapsed .agency-head{margin-bottom:0}.agency-stat{text-transform:none;letter-spacing:0;font-size:11px}.agency-head-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.btn.tiny{padding:4px 8px;font-size:11px;border-radius:8px}.stats-panel{display:flex;flex-direction:column;gap:8px}.stats-agency-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stats-card{border:1px solid var(--border);background:var(--panel);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px}.stats-card.compact{gap:6px;padding:8px}.stats-card-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stats-row .label{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.stats-row .value{font-size:16px;font-weight:700}.stats-card.compact .stats-row .value{font-size:14px}.stats-breakdown{font-size:11px}.stats-meter{display:flex;height:6px;border-radius:999px;overflow:hidden;background:#243041}.stats-meter .seg.ok{background:var(--ok)}.stats-meter .seg.late{background:var(--late)}.stats-meter .seg.early{background:var(--early)}.value.ok{color:var(--ok)}.route-list{display:flex;flex-direction:column;gap:6px}.route-row,.vehicle-card,.btn,.icon-btn{font:inherit}.route-row,.vehicle-card{width:100%;text-align:left;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:12px;padding:10px;cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center}.route-row.on,.vehicle-card.selected{border-color:#3d5a80;background:#152033}.route-row:hover,.vehicle-card:hover,.btn:hover,.chip:hover,.icon-btn:hover{border-color:#3d516c}.route-badge{min-width:42px;height:28px;padding:0 8px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}.route-name{font-size:13px;line-height:1.3}.muted{color:var(--muted);font-size:12px}.toggle{width:34px;height:20px;border-radius:999px;background:#2a3342;position:relative;flex-shrink:0}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#9aa7b8;transition:left .15s ease,background .15s ease}.toggle.on{background:#6ec3ff40}.toggle.some{background:#6ec3ff1f}.toggle.on:after{left:16px;background:var(--accent)}.toggle.some:after{left:9px;background:var(--accent)}.toggle{cursor:pointer}.hero{display:flex;gap:12px;align-items:center}.hero-title{font-size:16px;font-weight:650}.action-row{display:flex;gap:8px}.btn,.icon-btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:10px;padding:8px 12px;cursor:pointer}.icon-btn{width:34px;height:34px;padding:0}.btn.primary{background:#6ec3ff26;border-color:#6ec3ff59;color:#d7efff}.section-title{margin:4px 0 0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.vehicle-list{display:flex;flex-direction:column;gap:8px}.vehicle-card{display:flex;flex-direction:column;align-items:stretch;gap:6px}.vehicle-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.delay.ok{color:var(--ok)}.delay.late,.value.late{color:var(--late)}.delay.early,.value.early{color:var(--early)}.progress{width:100%;height:6px;border-radius:999px;background:#243041;overflow:hidden}.progress.big{height:10px}.progress-fill{height:100%;border-radius:inherit}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{border:1px solid var(--border);background:var(--panel);border-radius:12px;padding:10px}.stat .label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.stat .value{font-size:13px;font-weight:600;line-height:1.3}.schedule-block{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:10px;display:flex;flex-direction:column;gap:8px}.schedule-head{font-weight:600;font-size:13px}.schedule-table{display:flex;flex-direction:column;gap:4px}.schedule-row{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:4px 0;border-bottom:1px solid rgba(39,48,65,.5)}.stop-details summary{cursor:pointer;color:var(--muted);font-size:12px}.stop-list,.trip-stops{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:13px}.trip-stops li{display:flex;justify-content:space-between;gap:10px}.trip-stops li.passed{opacity:.45}.trip-stops li.next .stop-name{color:var(--accent);font-weight:650}.clickable-stop{cursor:pointer}.clickable-stop:hover{color:var(--accent)}#tracker-hud{position:absolute;right:16px;top:16px;z-index:550;width:min(320px,calc(100vw - 32px));background:#12161cf0;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:12px;display:flex;flex-direction:column;gap:10px}.tracker-top{display:flex;gap:10px;align-items:center}.tracker-badge{min-width:42px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#111;padding:0 8px}.tracker-title{font-weight:650;font-size:14px}.tracker-sub{color:var(--muted);font-size:12px}.tracker-next .label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.tracker-next .value{font-size:14px;font-weight:600;margin-top:2px}.tracker-bar{height:8px;border-radius:999px;background:#243041;overflow:hidden}.tracker-fill{height:100%;border-radius:inherit}.next-stop-wrap{background:transparent!important;border:none!important}.next-stop-label{background:#12161cf0;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 8px;font-size:12px;line-height:1.25;box-shadow:var(--shadow);text-align:center;max-width:180px}.next-stop-label span{display:block;color:var(--accent);font-size:10px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}@media (max-width: 820px){#tracker-hud{inset:auto 12px 16px;width:auto}}.empty{color:var(--muted);font-size:13px;padding:8px 2px}.leaflet-container{background:#0b0d10;font:inherit}.leaflet-control-attribution{background:#0a0c10b3!important;color:#8b97a8!important}.leaflet-control-zoom a{background:#12161ceb!important;color:var(--text)!important;border-color:var(--border)!important}.leaflet-tooltip{background:#12161c;border:1px solid var(--border);color:var(--text);border-radius:8px;box-shadow:var(--shadow)}@media (max-width: 820px){:root{--sidebar-width: min(100vw, 360px)}#map{left:0}#sidebar{width:min(100vw,360px)}}
