*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:#f4f7fb;color:#101828}.loading{padding:40px}.login{max-width:650px;margin:7vh auto;background:white;padding:30px;border-radius:18px;box-shadow:0 15px 45px #0001;border:1px solid #d7deea}.login h1{font-size:34px;margin:0 0 8px}.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}label{font-weight:700;font-size:13px;display:block;margin:10px 0 5px}input,select,textarea{width:100%;padding:12px;border:1px solid #cbd5e1;border-radius:10px;background:white;font:inherit}textarea{min-height:70px}.btn,button{border:0;border-radius:10px;background:#2563eb;color:white;font-weight:800;padding:11px 16px;cursor:pointer;margin:4px}.btn.secondary,button.secondary{background:#e5e7eb;color:#112827}.btn.warn{background:#dc2626}.msg{padding:12px;border:1px solid #f3d199;background:#fff7ed;border-radius:10px;color:#7c2d12;margin:12px 0}.ok{border-color:#bbf7d0;background:#f0fdf4;color:#166534}.app{display:flex;min-height:100vh}.side{width:260px;background:#0f172a;color:white;padding:20px;position:sticky;top:0;height:100vh;overflow:auto}.brand{font-size:24px;font-weight:900;margin:0 0 5px}.who{color:#a7b4cc;font-size:13px;margin-bottom:20px}.nav button{display:block;width:100%;text-align:left;background:transparent;color:#e5e7eb;padding:13px 14px;border-radius:10px;margin:5px 0}.nav button.active{background:#2563eb;color:white}.main{flex:1;padding:28px;overflow:auto}.card{background:white;border:1px solid #dbe3ef;border-radius:18px;padding:20px;margin:14px 0;box-shadow:0 12px 30px #0000000a}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;background:white}th,td{padding:10px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top}th{font-size:12px;text-transform:uppercase;color:#475569}.pill{display:inline-block;padding:5px 9px;border-radius:999px;background:#e0ecff;color:#1d4ed8;font-weight:700;font-size:12px}.actions{display:flex;gap:5px;flex-wrap:wrap}.small{font-size:12px;color:#64748b}.stop{border:1px solid #dbe3ef;border-radius:12px;padding:12px;margin:8px 0}.suggestions{background:white;border:1px solid #cbd5e1;border-radius:12px;margin-top:4px;max-height:180px;overflow:auto}.suggestions div{padding:8px;cursor:pointer}.suggestions div:hover{background:#eff6ff}.driver-shell{max-width:720px;margin:0 auto;padding:15px}.driver-card{background:white;border-radius:20px;padding:18px;margin:12px 0;box-shadow:0 8px 24px #0001}.driver-actions button{width:100%;font-size:18px;margin:6px 0;padding:16px}.topline{display:flex;justify-content:space-between;gap:10px;align-items:center}.errorbox{white-space:pre-wrap;background:#fff7ed;border:1px solid #fdba74;color:#7c2d12;padding:12px;border-radius:10px}@media(max-width:800px){.app{display:block}.side{width:100%;height:auto;position:relative}.row,.row3{grid-template-columns:1fr}.main{padding:14px}}

.daygrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dayrow{display:grid;grid-template-columns:auto 55px 1fr;gap:8px;align-items:center;border:1px solid #dbe3ef;border-radius:10px;padding:8px;background:#f8fafc}.dayrow input[type=time]{padding:7px}.btn{display:inline-block;text-decoration:none}.mapbox{border:1px solid #dbe3ef;border-radius:14px;padding:10px;background:#f8fafc;overflow:auto}
@media(max-width:800px){.daygrid{grid-template-columns:1fr}}
.driver-stop{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #dbe4ef;border-radius:14px;padding:12px;margin:10px 0;background:#f8fafc}.driver-stop span{font-size:16px}.navbtn,.big-nav{background:#15803d;color:white;border:0;border-radius:12px;padding:12px 14px;font-weight:800}.big-nav{width:100%;font-size:18px;margin:6px 0 10px}.warn{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:12px;color:#9a3412}.driver-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:12px}.driver-actions button{padding:14px}.driver-card h3{margin-top:18px}

.inline{display:flex;gap:6px;align-items:center}.inline input{flex:1}.smallbtn{padding:9px 12px;margin:0}.checkline{display:flex;gap:8px;align-items:center;font-weight:700}.checkline input{width:auto}.ref-preview{font-size:12px;color:#475569;margin-top:4px}

.recurring-box{border:1px solid #dbeafe;background:#f8fbff;border-radius:14px;padding:14px;margin:14px 0}.daygrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.dayrow{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:8px}.dayrow input[type=time]{margin-left:auto;max-width:100px}
.filterbox{border:1px solid #dbeafe;background:#f8fbff;border-radius:14px;padding:14px;margin:12px 0}.filterbox h3{margin:0 0 8px}.filterbox .row3{margin-top:8px}

.pill.online{background:#dcfce7;color:#166534}.pill.offline{background:#fee2e2;color:#991b1b}.warning-row{background:#fff7ed}
.ok{color:#065f46;background:#d1fae5;border-radius:8px;padding:2px 6px;display:inline-block}.warn{color:#92400e;background:#fef3c7;border-radius:8px;padding:2px 6px;display:inline-block}.bad{color:#991b1b;background:#fee2e2;border-radius:8px;padding:2px 6px;display:inline-block}.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:12px 0}.kpi>div{background:#f8fafc;border:1px solid #dbe4ef;border-radius:12px;padding:14px}ol{line-height:1.7}.pill.online{background:#d1fae5;color:#065f46}.pill.offline{background:#e5e7eb;color:#374151}

.pricing-box{border:1px solid #dbeafe;background:#f8fbff;border-radius:12px;padding:14px;margin:14px 0;}

.navgroup{font-size:11px;letter-spacing:.08em;color:#93a4bd;margin:18px 0 6px;font-weight:900}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.quickgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.quickgrid button{text-align:left;padding:18px}.timeline-job{border:1px solid #dbe4ef;border-radius:14px;padding:12px;margin:12px 0;background:#f8fafc}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:12px;margin:14px 0}.kpis>div{background:#f8fafc;border:1px solid #dbe4ef;border-radius:12px;padding:14px}.kpis b{display:block;font-size:24px;color:#0f172a}.kpis span{font-size:12px;color:#64748b;font-weight:700}

/* v114 Job Logs usability and GPS track map */
.timeline-job{border:1px solid #d7deea;border-radius:14px;padding:14px;margin:14px 0;background:#fff}
.timeline-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.gps-map-card{border:1px solid #d7deea;border-radius:14px;padding:14px;margin:12px 0;background:#f8fafc}
.gps-track{width:100%;max-width:760px;height:auto;background:#eef4ff;border-radius:14px;margin:8px 0;display:block}
.gps-track rect{fill:#eef4ff;stroke:#c9d7ee;stroke-width:2}
.gps-track polyline{fill:none;stroke:#2563eb;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.gps-track circle{fill:#1d4ed8;stroke:white;stroke-width:2}
.gps-track text{font-size:13px;fill:#0f172a;font-weight:700}

/* v114 polish: job-specific logs, driver plot, route tab */
.polished-screen{box-shadow:0 18px 50px rgba(15,23,42,.08);border:1px solid rgba(148,163,184,.22)}
.visual-tabs,.editor-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0;padding:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px}
.visual-tabs button,.editor-tabs button{border-radius:999px}
.compact-kpis{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.compact-kpis div{border:1px solid #e2e8f0;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc)}
.gps-map-card,.route-card{border:1px solid #dbeafe;background:linear-gradient(180deg,#ffffff,#f8fbff);border-radius:18px;padding:16px;margin:14px 0;box-shadow:0 10px 30px rgba(37,99,235,.08)}
.gps-track{width:100%;max-width:100%;height:auto;background:#f8fafc;border-radius:14px;border:1px solid #e2e8f0}
.gps-track rect{fill:#f8fafc;stroke:#cbd5e1;stroke-width:1.5}
.gps-track polyline{fill:none;stroke:#2563eb;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.gps-track circle{fill:#ef4444;stroke:white;stroke-width:2}
.driver-plot circle{fill:#16a34a}
.gps-track text{font-size:13px;fill:#0f172a;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.route-panel{margin:14px 0}
.route-map-wrap svg{width:100%;height:auto;border-radius:14px;border:1px solid #e2e8f0}
.filterbox h3{margin-top:0}
.btn{display:inline-block;text-decoration:none}

/* v114 button feedback: office + driver apps */
button,.btn{position:relative;transition:transform .08s ease,box-shadow .12s ease,filter .12s ease,opacity .12s ease;box-shadow:0 2px 0 rgba(15,23,42,.08)}
button:active,.btn:active,button.is-pressed,.btn.is-pressed{transform:translateY(1px) scale(.985);filter:brightness(.92);box-shadow:inset 0 2px 7px rgba(15,23,42,.18)}
button.is-pressed::after,.btn.is-pressed::after{content:'✓';display:inline-flex;align-items:center;justify-content:center;margin-left:8px;width:18px;height:18px;border-radius:999px;background:rgba(255,255,255,.24);font-size:12px;line-height:18px}
button[disabled],.btn[aria-disabled="true"]{opacity:.65;cursor:not-allowed}
.driver-actions button.is-pressed,.big-nav.is-pressed,.navbtn.is-pressed{outline:3px solid rgba(37,99,235,.28);outline-offset:2px}

/* v117 Cab9-style polish and reporting */
:root{--bg:#07111f;--panel:#101827;--panel2:#152238;--ink:#e8eef7;--muted:#9cafc7;--line:#253753;--accent:#3dd2ff;--accent2:#67e8a5;--warn:#facc15;--danger:#fb7185;--soft:#0b1628;--shadow:0 18px 50px rgba(0,0,0,.32)}
body{background:linear-gradient(135deg,#06101f 0%,#0a1528 45%,#101827 100%);color:var(--ink);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}
.app{background:transparent}.side{background:rgba(6,16,31,.96);border-right:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow)}.brand{font-size:22px;font-weight:850;letter-spacing:.2px;color:#fff}.who{background:rgba(61,210,255,.08);border:1px solid rgba(61,210,255,.18);border-radius:14px;padding:10px;margin:10px 0;color:var(--muted)}
.navgroup{color:#73d7ff;font-weight:800;font-size:11px;letter-spacing:.12em;margin:18px 0 7px;text-transform:uppercase}.nav button{border:0;border-radius:13px;color:#c9d7ea;background:transparent;text-align:left;padding:11px 12px;margin:3px 0;transition:.15s ease}.nav button:hover{background:rgba(255,255,255,.07);transform:translateX(2px)}.nav button.active{background:linear-gradient(90deg,rgba(61,210,255,.24),rgba(103,232,165,.12));color:#fff;border:1px solid rgba(61,210,255,.28);box-shadow:0 8px 22px rgba(61,210,255,.08)}
.main{padding:24px 28px}.topline{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:22px;padding:16px 20px;margin-bottom:18px;box-shadow:var(--shadow)}.topline h1{margin:0;font-size:28px}.card{background:rgba(16,24,39,.92)!important;border:1px solid rgba(255,255,255,.08)!important;border-radius:24px!important;box-shadow:var(--shadow);padding:22px!important}.card h2,.card h3{color:#fff}.small{color:var(--muted)!important}.hero{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,rgba(61,210,255,.16),rgba(103,232,165,.10));border:1px solid rgba(61,210,255,.22);border-radius:22px;padding:18px 20px;margin-bottom:16px}.hero h2{margin:0 0 6px}.hero p{margin:0;color:var(--muted)}.hero-pill{border-radius:999px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.12);padding:9px 13px;color:#dff7ff;font-weight:700;white-space:nowrap}
button,.btn{border:0;border-radius:13px;padding:10px 14px;background:linear-gradient(135deg,#15a6e8,#2dd4bf);color:#042033;font-weight:800;cursor:pointer;box-shadow:0 8px 22px rgba(21,166,232,.18);transition:transform .12s ease, box-shadow .12s ease, filter .12s ease;text-decoration:none;display:inline-block;margin:2px}button:hover,.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}button.secondary,.btn.secondary{background:rgba(255,255,255,.08);color:#dce9f9;border:1px solid rgba(255,255,255,.13);box-shadow:none}button.ok,.ok{background:linear-gradient(135deg,#34d399,#6ee7b7)!important;color:#042014!important}.warn{background:rgba(250,204,21,.14)!important;color:#fde68a!important;border-color:rgba(250,204,21,.32)!important}.danger,.danger-tile{background:rgba(251,113,133,.13)!important;color:#fecdd3!important;border-color:rgba(251,113,133,.34)!important}.is-pressed{transform:scale(.97)!important;filter:brightness(1.15)!important;outline:2px solid rgba(61,210,255,.55)!important}
input,select,textarea{background:#0b1424!important;color:var(--ink)!important;border:1px solid var(--line)!important;border-radius:12px!important;padding:10px!important;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(61,210,255,.15)}label{color:#cbd8eb;font-weight:650}.row3,.row4{gap:14px}.filterbar{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr)) auto;gap:12px;align-items:end;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.075);border-radius:20px;padding:14px;margin:14px 0}.filter-actions{display:flex;gap:6px;flex-wrap:wrap}.visual-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.visual-tabs a{color:#cdeaff;text-decoration:none;border:1px solid rgba(61,210,255,.2);background:rgba(61,210,255,.08);border-radius:999px;padding:9px 13px;font-weight:750}.visual-tabs a:hover{background:rgba(61,210,255,.18)}
.kpis,.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.kpis>div,.kpi>div{background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:15px;min-height:72px}.kpis b,.kpi b{display:block;font-size:25px;color:#fff}.kpis span,.kpi span{color:var(--muted);font-size:12px;font-weight:650}.executive>div{position:relative;overflow:hidden}.executive>div:after{content:"";position:absolute;right:-22px;top:-28px;width:70px;height:70px;border-radius:50%;background:rgba(61,210,255,.10)}.ok-tile{background:rgba(52,211,153,.12)!important;border-color:rgba(52,211,153,.28)!important}
.report-panel{background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.075);border-radius:22px;padding:16px;margin:16px 0}table{width:100%;border-collapse:separate!important;border-spacing:0 7px!important}th{color:#8bdcff;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding:7px 10px!important}td{background:rgba(255,255,255,.045);border-top:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.06);padding:10px!important;color:#dce8f7}td:first-child{border-left:1px solid rgba(255,255,255,.06);border-radius:12px 0 0 12px}td:last-child{border-right:1px solid rgba(255,255,255,.06);border-radius:0 12px 12px 0}.msg{border-radius:16px;padding:12px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06)}.msg.ok{border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.12)}.gps-map-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:16px;margin-top:12px}.gps-track{background:#07111f;border-radius:18px;width:100%;max-height:460px}.gps-track rect{fill:#081426;stroke:#29405f}.gps-track polyline{fill:none;stroke:#3dd2ff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.gps-track circle{fill:#67e8a5;stroke:#042033;stroke-width:2}.gps-track text{fill:#e8eef7;font-size:13px;font-weight:700}.driver-plot circle{fill:#3dd2ff}
@media(max-width:1100px){.filterbar{grid-template-columns:repeat(2,minmax(140px,1fr))}.hero{display:block}.hero-pill{display:inline-block;margin-top:12px}.main{padding:16px}.side{width:245px}}

/* v117 readable professional UI correction
   Keeps the v115 report features, but removes the harsh dark/neon palette.
   Goal: control-room clarity: readable text, calm colour, obvious actions. */
:root{
  --bg:#eef3f8;
  --panel:#ffffff;
  --panel2:#f8fafc;
  --ink:#0f172a;
  --muted:#475569;
  --line:#d8e1ec;
  --accent:#2563eb;
  --accent2:#0f766e;
  --warn:#b45309;
  --danger:#b91c1c;
  --ok:#047857;
  --soft:#f1f5f9;
  --shadow:0 10px 30px rgba(15,23,42,.08);
}
html,body{background:var(--bg)!important;color:var(--ink)!important;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif!important;font-size:14px;line-height:1.45}
.loading{color:var(--ink)!important;background:var(--bg)!important}.app{background:var(--bg)!important;min-height:100vh}.main{padding:22px 26px!important;background:var(--bg)!important}
.side{background:#ffffff!important;color:var(--ink)!important;border-right:1px solid var(--line)!important;box-shadow:3px 0 24px rgba(15,23,42,.05)!important}.brand{color:#0f172a!important;font-size:22px!important;letter-spacing:-.01em}.who{background:#f1f5f9!important;border:1px solid #dbe4ef!important;color:#475569!important;border-radius:12px!important;padding:10px!important}.side .small{color:#64748b!important}.navgroup{color:#64748b!important;font-size:11px!important;letter-spacing:.12em!important;font-weight:800!important;text-transform:uppercase!important;margin:18px 0 7px!important}.nav button{background:transparent!important;color:#334155!important;border:1px solid transparent!important;border-radius:12px!important;font-weight:700!important;box-shadow:none!important}.nav button:hover{background:#f1f5f9!important;color:#0f172a!important;transform:none!important}.nav button.active{background:#e8f0ff!important;color:#1d4ed8!important;border:1px solid #bfd2ff!important;box-shadow:none!important}
.topline{background:#ffffff!important;border:1px solid var(--line)!important;border-radius:18px!important;box-shadow:var(--shadow)!important;color:var(--ink)!important}.topline h1{color:#0f172a!important;font-size:26px!important;letter-spacing:-.02em}.card,.polished-screen,.report-screen{background:#ffffff!important;color:var(--ink)!important;border:1px solid var(--line)!important;border-radius:18px!important;box-shadow:var(--shadow)!important;padding:20px!important}.card h1,.card h2,.card h3,.report-panel h3{color:#0f172a!important}.small,.hero p{color:#64748b!important}.hero{background:linear-gradient(135deg,#f8fbff,#eef6ff)!important;border:1px solid #d8e8ff!important;border-radius:18px!important;color:var(--ink)!important;box-shadow:none!important}.hero h2{color:#0f172a!important}.hero-pill{background:#ffffff!important;border:1px solid #bfd2ff!important;color:#1d4ed8!important;box-shadow:0 4px 14px rgba(37,99,235,.08)!important}
button,.btn{background:#2563eb!important;color:#ffffff!important;border:1px solid #1d4ed8!important;border-radius:10px!important;box-shadow:0 4px 12px rgba(37,99,235,.16)!important;font-weight:800!important;padding:10px 14px!important}.btn:hover,button:hover{filter:none!important;transform:translateY(-1px)!important;background:#1d4ed8!important}button.secondary,.btn.secondary{background:#ffffff!important;color:#334155!important;border:1px solid #cbd5e1!important;box-shadow:none!important}button.secondary:hover,.btn.secondary:hover{background:#f8fafc!important}.btn.warn,button.warn{background:#d97706!important;color:#fff!important;border-color:#b45309!important}.danger,.danger-tile,button.danger,.btn.danger{background:#b91c1c!important;color:#fff!important;border-color:#991b1b!important}.ok,button.ok,.btn.ok{background:#047857!important;color:#fff!important;border-color:#065f46!important}.is-pressed,button.is-pressed,.btn.is-pressed{outline:3px solid rgba(37,99,235,.22)!important;transform:scale(.985)!important;filter:none!important}
input,select,textarea{background:#ffffff!important;color:#0f172a!important;border:1px solid #cbd5e1!important;border-radius:10px!important;padding:10px!important}input::placeholder,textarea::placeholder{color:#94a3b8!important}input:focus,select:focus,textarea:focus{border-color:#2563eb!important;box-shadow:0 0 0 3px rgba(37,99,235,.12)!important}label{color:#334155!important;font-weight:700!important}
.filterbar,.filterbox{background:#f8fafc!important;border:1px solid var(--line)!important;border-radius:16px!important;color:var(--ink)!important}.visual-tabs,.editor-tabs{background:#f8fafc!important;border:1px solid var(--line)!important;border-radius:14px!important}.visual-tabs a,.visual-tabs button,.editor-tabs button{background:#ffffff!important;color:#334155!important;border:1px solid #d8e1ec!important;border-radius:999px!important;box-shadow:none!important}.visual-tabs a:hover,.visual-tabs button:hover,.editor-tabs button:hover{background:#e8f0ff!important;color:#1d4ed8!important;border-color:#bfd2ff!important}.visual-tabs a.active,.visual-tabs button.active,.editor-tabs button.active{background:#2563eb!important;color:#fff!important;border-color:#1d4ed8!important}
.kpis>div,.kpi>div,.executive>div{background:#ffffff!important;border:1px solid var(--line)!important;border-radius:16px!important;color:var(--ink)!important;box-shadow:0 5px 16px rgba(15,23,42,.04)!important}.kpis b,.kpi b{color:#0f172a!important;font-size:24px!important}.kpis span,.kpi span{color:#64748b!important}.ok-tile{background:#ecfdf5!important;border-color:#a7f3d0!important}.danger-tile{background:#fff1f2!important;border-color:#fecdd3!important;color:#991b1b!important}.executive>div:after{display:none!important}
.report-panel,.timeline-job,.gps-map-card,.route-card,.mapbox,.stop,.driver-card,.driver-stop,.recurring-box,.pricing-box{background:#ffffff!important;color:var(--ink)!important;border:1px solid var(--line)!important;border-radius:16px!important;box-shadow:none!important}.gps-track{background:#f8fafc!important;border:1px solid #dbe4ef!important}.gps-track rect{fill:#f8fafc!important;stroke:#dbe4ef!important}.gps-track polyline{stroke:#2563eb!important}.gps-track circle{fill:#0f766e!important;stroke:#fff!important}.gps-track text{fill:#0f172a!important;stroke:#fff!important}
table{background:transparent!important;border-collapse:separate!important;border-spacing:0!important}th{background:#f8fafc!important;color:#475569!important;border-bottom:1px solid #dbe4ef!important;font-size:12px!important;text-transform:uppercase!important;letter-spacing:.04em!important;padding:10px!important}td{background:#ffffff!important;color:#1e293b!important;border-bottom:1px solid #e5eaf1!important;padding:11px 10px!important}td:first-child,td:last-child{border-radius:0!important;border-left:0!important;border-right:0!important}tr:hover td{background:#f8fbff!important}.tablewrap{border:1px solid var(--line)!important;border-radius:14px!important;background:#fff!important;box-shadow:none!important;overflow:auto!important}
.pill{background:#e8f0ff!important;color:#1d4ed8!important;border:1px solid #bfd2ff!important;border-radius:999px!important;font-weight:800!important}.pill.online{background:#dcfce7!important;color:#166534!important;border-color:#bbf7d0!important}.pill.offline{background:#f1f5f9!important;color:#475569!important;border-color:#e2e8f0!important}.warning-row td,.warning-row{background:#fff7ed!important}.msg{background:#f8fafc!important;border:1px solid var(--line)!important;color:#334155!important;border-radius:14px!important}.msg.ok{background:#ecfdf5!important;border-color:#a7f3d0!important;color:#065f46!important}.errorbox,.bad{background:#fff1f2!important;border:1px solid #fecdd3!important;color:#991b1b!important;border-radius:12px!important}.warn{background:#fff7ed!important;border:1px solid #fed7aa!important;color:#9a3412!important;border-radius:12px!important}.login{background:#ffffff!important;color:#0f172a!important;border:1px solid var(--line)!important;box-shadow:var(--shadow)!important}
.driver-shell{background:var(--bg)!important;color:var(--ink)!important}.driver-card{box-shadow:var(--shadow)!important}.driver-actions button,.big-nav,.navbtn{background:#2563eb!important;color:#fff!important;border-color:#1d4ed8!important}.driver-actions button.secondary{background:#ffffff!important;color:#334155!important;border-color:#cbd5e1!important}
@media(max-width:1100px){.filterbar{grid-template-columns:repeat(2,minmax(140px,1fr))!important}.main{padding:16px!important}.side{width:245px!important}}@media(max-width:800px){.app{display:block!important}.side{width:100%!important;height:auto!important;position:relative!important}.main{padding:12px!important}.row,.row3,.row4,.filterbar{grid-template-columns:1fr!important}.topline{display:block!important}}

/* v117 intuitive dispatch polish */
:root{--bg:#f5f7fb;--panel:#ffffff;--text:#172033;--muted:#667085;--line:#d9e0ea;--brand:#2457c5;--brand-soft:#e9f0ff;--good:#157347;--warn:#b7791f;--danger:#b42318;--danger-soft:#fff1f0;--shadow:0 10px 30px rgba(16,24,40,.08)}
body{background:var(--bg);color:var(--text);font-size:15px}.main{max-width:1600px}.card,.filterbox{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px}.side{background:#fff;border-right:1px solid var(--line)}.brand{color:#15213b}.nav button{border-radius:10px;margin:2px 8px;color:#263044}.nav button.active{background:var(--brand-soft);color:var(--brand);font-weight:700;border-left:4px solid var(--brand)}button,.btn,a.btn{border-radius:10px;font-weight:650;transition:transform .08s ease,box-shadow .12s ease,background .12s ease}button:active,.is-pressed{transform:translateY(1px) scale(.99);box-shadow:inset 0 0 0 999px rgba(0,0,0,.06)}button.secondary,.btn.secondary,a.secondary{background:#f3f5f9;color:#1f2937;border:1px solid #cfd7e4}button.ok,.pill.ok{background:#e9f8f0;color:#157347}.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#eef2f7;color:#344054;font-weight:700;font-size:12px}.pill.warn{background:#fff7e6;color:#9a6700}.pill.danger{background:var(--danger-soft);color:var(--danger)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.page-head h2{margin:0}.head-actions{display:flex;gap:8px;flex-wrap:wrap}.dispatch-summary{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px;margin-bottom:14px}.dispatch-summary>div{padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff}.dispatch-summary b{display:block;font-size:28px}.dispatch-summary span{color:var(--muted);font-size:13px}.warning-panel{border:1px solid #fecaca;background:#fff7ed;color:#9a3412;border-radius:12px;padding:12px;margin:10px 0}.state-tabs{display:flex;gap:8px;overflow:auto;padding:8px 0 14px;margin-bottom:6px;border-bottom:1px solid var(--line)}.state-tab{display:flex;align-items:center;gap:10px;white-space:nowrap;background:#fff;border:1px solid var(--line);color:#263044}.state-tab b{background:#eef2f7;border-radius:999px;min-width:24px;padding:2px 7px}.state-tab.active{background:var(--brand);border-color:var(--brand);color:white}.state-tab.active b{background:rgba(255,255,255,.22);color:white}.state-tab.danger:not(.active){border-color:#fca5a5;color:var(--danger);background:#fff7f7}.queue-title{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.queue-title h3{margin:6px 0}.tablewrap{border:1px solid var(--line);border-radius:14px;overflow:auto;background:#fff}table{border-collapse:separate;border-spacing:0;width:100%}th{position:sticky;top:0;background:#f8fafc;color:#344054;font-size:12px;text-transform:uppercase;letter-spacing:.03em}td,th{border-bottom:1px solid #edf1f6;padding:10px 12px;vertical-align:top}tbody tr:hover{background:#fbfdff}.actions{min-width:260px}.filterbox h3{margin-top:0}.row4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}@media(max-width:1000px){.dispatch-summary,.row4,.row3{grid-template-columns:1fr}.page-head{display:block}.state-tabs{padding-bottom:10px}}
