:root{--bg:#eef2f7;--panel:#ffffff;--ink:#142033;--muted:#5d6b82;--brand:#11264f;--brand2:#1f4ea3;--line:#d8dfeb;--chip:#eef4ff;--chip-border:#c9d6f3}
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--ink)}
.topbar{background:var(--brand);color:#fff;padding:18px 22px;position:sticky;top:0;z-index:40}.topbar h1{margin:0;font-size:2rem}.topbar-meta{margin-top:4px;font-size:.98rem;opacity:.92}
.layout{display:grid;grid-template-columns:340px 1fr;gap:16px;padding:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 1px 0 rgba(0,0,0,.02)}
.controls{display:flex;flex-direction:column;gap:14px;position:sticky;top:96px;align-self:start;max-height:calc(100vh - 112px);overflow:auto}.panel-inner{padding:14px}.section-title{margin:0 0 12px;font-size:1.15rem}
label{font-weight:700;font-size:1rem;display:block;margin-bottom:6px}input,button{font:inherit}input{width:100%;padding:12px 14px;border-radius:14px;border:1px solid #c7d1e3;background:#fff}
button{border:none;border-radius:14px;padding:12px 16px;font-weight:700;cursor:pointer}.btn-primary{background:#2f6fed;color:#fff}.btn-secondary{background:#30415d;color:#fff}.btn-light{background:#edf2fb;color:#17325f;border:1px solid #d6e0f3}
.field-group{display:grid;gap:10px}.line-picker{display:grid;grid-template-columns:1fr auto;gap:10px}.line-picker-secondary{grid-template-columns:1fr 1fr;margin-top:10px}
.line-chips{display:flex;flex-wrap:wrap;gap:8px;min-height:38px}.line-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:var(--chip);border:1px solid var(--chip-border);font-size:.94rem}.line-dot{width:12px;height:12px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.1)}.line-chip button{background:transparent;color:#17325f;padding:0;border:none;font-size:1rem;font-weight:700}
.mapwrap{height:54vh;min-height:420px;overflow:hidden;padding:0}#map{height:100%;width:100%;border-radius:18px}.leaflet-tile-pane{filter:grayscale(.95) brightness(1.08) contrast(.88);opacity:.32}.leaflet-overlay-pane path{filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}
.content-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin-top:16px}.cards{display:grid;gap:12px}.vehicle-card{padding:16px;border:1px solid var(--line);border-left-width:8px;border-radius:16px;background:#fff}.vehicle-card h3{margin:0 0 10px;font-size:1.05rem}.meta{color:var(--muted);font-size:.95rem;line-height:1.5}.kpi{font-weight:700;color:var(--ink)}
.stop-list{max-height:360px;overflow:auto}.stop-item{padding:12px 10px;border-bottom:1px solid var(--line);cursor:pointer}.stop-item:hover,.stop-item.active{background:#eef5ff}.small{font-size:.92rem;color:var(--muted)}
.route-pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#e9eef9;border:1px solid #cbd7f2;font-size:.9rem;margin-left:6px}.bus-label{color:#fff;border-radius:999px;padding:2px 7px;font-size:12px;border:2px solid #fff;white-space:nowrap}.bus-arrow{width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;transform-origin:center center;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.bus-icon{display:flex;align-items:center;gap:6px}
@media (max-width: 1024px){.layout{grid-template-columns:1fr}.controls{position:relative;top:0;max-height:none}.content-grid{grid-template-columns:1fr}.mapwrap{height:46vh}}
.line-color-input{width:28px;height:28px;padding:0;border:none;background:transparent;cursor:pointer}.line-color-input::-webkit-color-swatch-wrapper{padding:0}.line-color-input::-webkit-color-swatch{border:1px solid rgba(0,0,0,.12);border-radius:999px}.line-color-input::-moz-color-swatch{border:1px solid rgba(0,0,0,.12);border-radius:999px}
.stale-badge{display:inline-block;padding:3px 8px;border-radius:999px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:.78rem;vertical-align:middle}

.simple-page{padding:16px;display:grid;gap:16px}.simple-controls-bar{padding:16px 18px}.simple-controls-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:20px;align-items:start}.simple-mapwrap{height:58vh;min-height:460px}.simple-vehicles-panel{margin-bottom:18px}@media (max-width: 1024px){.simple-controls-grid{grid-template-columns:1fr}.simple-mapwrap{height:48vh;min-height:360px}}

.simple-summary-card .route-pill{margin-left:6px}
.simple-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:8px 18px}
@media (max-width: 768px){.simple-summary-grid{grid-template-columns:1fr}}

.dashboard-page{background:var(--bg)}
.dashboard-layout{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);grid-template-areas:'controls summary' 'table table';gap:16px;padding:16px;align-items:start}
.dashboard-controls{grid-area:controls;align-self:start;position:sticky;top:96px}
.dashboard-summary{grid-area:summary;overflow:hidden}
.dashboard-table-panel{grid-area:table;overflow:hidden;min-width:0;width:100%}
.dashboard-kpis{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px}
.dashboard-kpi-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}
.dashboard-kpi-value{font-size:1.35rem;font-weight:700;margin-top:4px}
.dashboard-mode-toggle{display:flex;gap:8px;flex-wrap:wrap}
.dashboard-mode-toggle button{min-width:96px}
.dashboard-line-picker{grid-template-columns:minmax(0,1fr) auto}
.dashboard-line-picker-secondary{grid-template-columns:1fr 1fr}
.dashboard-table-wrap{overflow:auto;max-width:100%;max-height:none;border:1px solid var(--line);border-radius:14px;background:#fff}
.dashboard-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;background:#fff;table-layout:auto}
.dashboard-table th,.dashboard-table td{padding:10px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;font-size:.95rem}
.dashboard-table thead th{background:#eef4ff;font-weight:700;position:sticky;top:0;z-index:3}
.dashboard-table tbody th{background:#fafcff;text-align:left;font-weight:700;min-width:230px;max-width:320px}
.dashboard-table tfoot th{background:#f5f8ff;font-weight:700}
.dashboard-table .sticky-col{position:sticky;left:0;z-index:2}
.dashboard-table thead .sticky-col{z-index:4}
.dashboard-table tfoot .sticky-col{z-index:2}
.dashboard-total-cell{font-weight:700;background:#f8fbff}
.dashboard-subhead{font-weight:400;color:var(--muted);font-size:.82rem}
.dashboard-table-explainer{margin-bottom:12px}

@media (max-width: 1200px){
  .dashboard-layout{grid-template-columns:1fr;grid-template-areas:'controls' 'summary' 'table'}
  .dashboard-controls{position:relative;top:0}
  .dashboard-kpis{grid-template-columns:repeat(2,minmax(140px,1fr))}
}
@media (max-width: 768px){
  .topbar{padding:14px 16px}
  .topbar h1{font-size:1.6rem;line-height:1.15}
  .dashboard-layout{padding:12px;gap:12px}
  .panel{padding:14px}
  .dashboard-kpis{grid-template-columns:1fr 1fr;gap:10px}
  .dashboard-table th,.dashboard-table td{padding:8px 10px;font-size:.9rem}
  .dashboard-table tbody th{min-width:180px;max-width:240px}
}
@media (max-width: 560px){
  .dashboard-kpis{grid-template-columns:1fr}
  .dashboard-line-picker,.dashboard-line-picker-secondary{grid-template-columns:1fr}
  .dashboard-table-wrap{border-radius:12px}
  .dashboard-table th,.dashboard-table td{padding:8px 9px;font-size:.88rem}
  .dashboard-table tbody th{min-width:155px;max-width:190px}
  .line-chip{width:100%;justify-content:flex-start}
}
@media (orientation: landscape) and (max-width: 900px){
  .dashboard-layout{grid-template-columns:280px 1fr;grid-template-areas:'controls summary' 'table table'}
  .dashboard-controls{position:sticky;top:84px}
  .dashboard-kpis{grid-template-columns:repeat(2,minmax(140px,1fr))}
}

