:root {
  --bg:#f7f6f2; --panel:#ffffff; --ink:#082440; --muted:#65717d; --line:#e2e3df;
  --teal:#c6933d; --teal-dark:#a9772b; --warning:#b76d00; --critical:#b83030; --ok:#2b7257;
  --shadow:0 12px 30px rgba(12,41,64,.08);
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
button,input,select{font:inherit}.hidden{display:none!important}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--critical);min-height:1.2rem;margin-top:.6rem}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top left,#f6ecd9,transparent 38%),radial-gradient(circle at bottom right,#e8eef4,transparent 35%),var(--bg)}
.login-card{width:min(440px,100%);background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:32px;box-shadow:var(--shadow)}.login-logo{width:220px;max-width:100%;display:block;margin-bottom:22px}.login-card h1{margin:.2rem 0}.login-card p{color:var(--muted);line-height:1.55}.login-card label,.form-panel label{display:grid;gap:7px;margin:14px 0;color:#344d60;font-weight:600;font-size:.9rem}.login-card input,.form-panel input,.form-panel select{width:100%;padding:11px 12px;border:1px solid #cad5dc;border-radius:10px;background:#fff;color:var(--ink)}
button,.button-link{border:0;border-radius:10px;padding:10px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.primary{background:var(--teal);color:#fff;font-weight:700}.primary:hover{background:var(--teal-dark)}.ghost{background:#edf2f5;color:var(--ink)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#071f36;color:#fff;padding:22px 16px;display:flex;flex-direction:column}.brand-logo{width:190px;background:#fff;border-radius:12px;padding:6px;margin:0 auto 22px}.sidebar nav{display:grid;gap:7px}.nav-btn{background:transparent;color:#c8d7e3;text-align:left;justify-content:flex-start}.nav-btn.active,.nav-btn:hover{background:#163b58;color:#fff;box-shadow:inset 3px 0 0 var(--teal)}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:16px;display:grid;gap:8px}.sidebar-footer .muted{color:#9eb2c2}.sidebar-footer .ghost{background:#16364d;color:#fff}
.content{padding:28px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.topbar h1{margin:0 0 3px;font-size:1.75rem}.top-actions{display:flex;gap:8px;flex-wrap:wrap}.cards{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:14px;margin-bottom:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 5px 16px rgba(12,41,64,.04)}.card .value{font-size:2rem;font-weight:800;margin-top:5px}.card.warning .value{color:var(--warning)}.card.critical .value{color:var(--critical)}.card.ok .value{color:var(--ok)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 5px 16px rgba(12,41,64,.04);margin-bottom:16px}.panel h2{margin:0 0 14px;font-size:1.05rem}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.panel-head h2{margin:0}.grid-2{display:grid;grid-template-columns:1.25fr .75fr;gap:16px}.stack{display:grid;gap:9px}.priority-item,.alert-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px}.priority-item strong,.alert-item strong{display:block}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.78rem;font-weight:800}.badge.ok{background:#e7f4ee;color:var(--ok)}.badge.warning{background:#fff1db;color:var(--warning)}.badge.critical{background:#fbe7e7;color:var(--critical)}.badge.offline{background:#eceff2;color:#56636d}
.map{height:330px;border-radius:12px;background:linear-gradient(145deg,#eef4f5,#e4ecef);overflow:hidden;position:relative}.map svg{width:100%;height:100%}.map-dot{cursor:pointer}.map-label{font-size:10px;fill:#284459}.map-bg-line{stroke:#c8d5db;stroke-width:1}.map-water{fill:#dceff4}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:11px 10px;border-bottom:1px solid #e8edf0;vertical-align:middle}th{color:#60717f;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.row-click{cursor:pointer}.row-click:hover{background:#f7fafb}.fillbar{height:8px;border-radius:999px;background:#e7edf0;overflow:hidden;min-width:90px}.fillbar>span{height:100%;display:block;background:var(--teal)}.fillbar.warning>span{background:#df8f18}.fillbar.critical>span{background:#c43e3e}
.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.metric{padding:12px;background:#f7fafb;border-radius:12px}.metric strong{display:block;font-size:1.25rem;margin-top:4px}.chart{width:100%;height:260px;border:1px solid var(--line);border-radius:12px;background:#fff}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-panel h2{margin-bottom:6px}code{background:#eef2f4;border-radius:6px;padding:2px 6px}
@media(max-width:1050px){.cards{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:1fr}.detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.sidebar nav{grid-template-columns:repeat(4,1fr)}.brand-logo{width:160px}.sidebar-footer{display:none}.content{padding:16px}.cards{grid-template-columns:repeat(2,1fr)}.topbar{align-items:flex-start}.form-row{grid-template-columns:1fr}.panel{overflow-x:auto}}

/* Route planning */
.route-layout{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.6fr);gap:16px;align-items:start}
.route-controls label{display:grid;gap:8px;margin:14px 0;color:#344d60;font-weight:650;font-size:.9rem}
.route-controls select,.route-controls input[type="number"]{width:100%;padding:11px 12px;border:1px solid #cad5dc;border-radius:10px;background:#fff;color:var(--ink)}
.threshold-row{display:grid;grid-template-columns:1fr 64px;gap:12px;align-items:center}.threshold-row input{width:100%;accent-color:var(--teal)}.threshold-row strong{text-align:right;color:var(--teal-dark)}
.check-row{display:flex!important;grid-template-columns:none!important;align-items:center;gap:9px!important;font-weight:600!important}.check-row input{width:auto!important;margin:0;accent-color:var(--teal)}
.route-candidate-info{padding:12px;border-radius:12px;background:#f1f7f7;border:1px solid #d8e9e9;margin:12px 0;font-size:.9rem;line-height:1.45}.route-candidate-info strong{font-size:1.1rem}
.route-note{line-height:1.55;margin-bottom:0}.route-map-panel{min-width:0}.route-map{height:500px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(145deg,#eef4f5,#e4ecef);overflow:hidden;position:relative}.route-map .leaflet-container{font:inherit}
.route-warning{margin-top:12px;border:1px solid #f0c27a;background:#fff6e8;color:#8a5200;padding:11px 12px;border-radius:10px;line-height:1.45}
.route-stats{grid-template-columns:repeat(4,minmax(130px,1fr));margin-top:0}.route-detail-grid{grid-template-columns:1.15fr .85fr}.route-stops{display:grid;gap:9px}.route-stop{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px}.route-stop-number{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;font-weight:800}.route-stop .stop-metrics{text-align:right}.route-stop .stop-metrics strong{display:block}.route-depot{background:#eef5f8;border-color:#cedde5}.route-depot .route-stop-number{background:#0c2940}
.route-excluded-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.route-excluded-item{padding:11px;border-radius:10px;background:#f7fafb;border:1px solid var(--line)}.route-excluded-item strong{display:block;font-size:1.2rem;margin-bottom:3px}
.route-history-table .route-history-row{cursor:pointer}.route-history-table .route-history-row:hover{background:#f7fafb}.provider-chip{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.78rem;font-weight:800;background:#e7f4ee;color:var(--ok)}.provider-chip.fallback{background:#fff1db;color:var(--warning)}
.route-number-icon{background:transparent!important;border:0!important}.route-number-icon span{width:30px;height:30px;border-radius:50%;background:var(--teal);color:#fff;border:3px solid #fff;box-shadow:0 2px 8px rgba(12,41,64,.25);display:grid;place-items:center;font-size:12px;font-weight:800}.route-depot-icon span{background:#0c2940}.leaflet-popup-content{font-family:inherit}.leaflet-control-attribution{font-size:10px}

@media(max-width:1050px){.route-layout{grid-template-columns:1fr}.route-map{height:440px}.route-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.route-map{height:380px}.route-detail-grid{grid-template-columns:1fr}.route-stop{grid-template-columns:38px 1fr}.route-stop .stop-metrics{grid-column:2;text-align:left}.route-excluded-grid{grid-template-columns:1fr}.sidebar nav{grid-template-columns:repeat(5,1fr)}.nav-btn{font-size:.76rem;padding:9px 7px}}

/* v0.2.1 usability */
.form-help,.alert-help{line-height:1.5;margin:0 0 10px}.route-external-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-2px 0 16px}.google-maps-segments{width:100%;display:flex;flex-wrap:wrap;gap:8px}.google-segment-link{font-size:.88rem}.route-external-actions .primary:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:760px){.route-external-actions{align-items:stretch}.route-external-actions>button{width:100%}.google-maps-segments{display:grid}.google-segment-link{width:100%}}

/* v0.3.0 automatic emptying detection + location ranking */
.cards{grid-template-columns:repeat(6,minmax(120px,1fr))}
.emptying-detail{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.emptying-detail h3{margin:0;font-size:1rem}.emptying-list{display:grid;gap:8px}.emptying-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:#f7fafb;border:1px solid var(--line);border-radius:10px}.emptying-item strong,.emptying-item span{display:block}
.ranking-head{align-items:flex-end}.ranking-period{display:grid;gap:5px;color:#344d60;font-weight:650;font-size:.86rem}.ranking-period select{padding:8px 10px;border:1px solid #cad5dc;border-radius:9px;background:#fff;color:var(--ink)}.ranking-help{line-height:1.55;max-width:1000px}.ranking-cards{grid-template-columns:repeat(4,minmax(140px,1fr));margin-top:16px}.ranking-card-value{font-size:1.45rem!important;overflow-wrap:anywhere}.ranking-row{cursor:pointer}.rank-number{width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;background:#edf2f5;font-weight:800;color:#526574}.rank-number.top-rank{background:#f6ecd9;color:#8b6325}.ranking-table td:nth-child(3) strong{font-size:1.05rem}
@media(max-width:1050px){.cards{grid-template-columns:repeat(3,1fr)}.ranking-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.sidebar nav{grid-template-columns:repeat(3,1fr)}.ranking-head{align-items:flex-start;flex-direction:column}.ranking-period{width:100%}.ranking-period select{width:100%}.ranking-cards{grid-template-columns:repeat(2,1fr)}.emptying-item{align-items:flex-start;flex-direction:column}.ranking-table{min-width:980px}}

textarea{width:100%;box-sizing:border-box;border:1px solid var(--border,#d9e1e7);border-radius:10px;padding:10px;font:inherit;background:var(--surface,#fff);color:inherit} code{overflow-wrap:anywhere}


/* v0.7.0 A + S Technologies operations/admin */
.login-logo{margin-left:auto;margin-right:auto}.brand-logo{padding:8px 10px}.form-result{margin-top:10px;overflow-wrap:anywhere}.section-gap{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.admin-table select,.admin-table input[type="number"],.compact-input{max-width:180px;padding:8px 9px;border:1px solid #cbd3d9;border-radius:8px;background:#fff;color:var(--ink)}
.admin-table input[type="checkbox"]{accent-color:var(--teal)}.switch-label{display:flex;align-items:center;gap:7px;white-space:nowrap}.subpanel{border:1px solid var(--line);background:#fbfbf9;border-radius:14px;padding:16px}.subpanel h3,.panel h3{margin:0 0 12px}.subpanel label{display:grid;gap:7px;margin:12px 0;color:#344d60;font-weight:600;font-size:.9rem}.subpanel input,.subpanel select,.subpanel textarea{width:100%;padding:10px 11px;border:1px solid #cad5dc;border-radius:9px;background:#fff;color:var(--ink);font:inherit}
.platform-detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.mini-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.mini-stats span{background:#f4ead8;color:#70511f;padding:6px 9px;border-radius:999px;font-size:.82rem;font-weight:700}.system-status-grid{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:10px}.system-status-grid>div{padding:12px;border:1px solid var(--line);border-radius:11px;background:#fbfbf9}.system-status-grid span,.system-status-grid strong{display:block}.system-status-grid strong{margin-top:4px}.platform-org-row:hover{background:#faf6ed}.primary:disabled,.ghost:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:1050px){.platform-detail-grid{grid-template-columns:1fr}.system-status-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.admin-table{min-width:760px}.system-status-grid{grid-template-columns:1fr}.platform-detail-grid{grid-template-columns:1fr}}

/* v1.2 platform context and savings */
.tenant-context{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:-6px 0 20px;padding:12px 14px;border:1px solid #dfc58f;border-radius:12px;background:#fff8e9}.tenant-context span,.tenant-context strong{display:block}.tenant-context span{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:#80612d}.tenant-context strong{margin-top:3px}.savings-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.savings-intro h2{margin-bottom:5px}.savings-intro p{margin:0;max-width:780px;line-height:1.5}.savings-period{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.savings-period label{display:grid;gap:5px;font-size:.82rem;font-weight:700;color:#526574}.savings-period input{padding:9px;border:1px solid #cad5dc;border-radius:9px}.savings-card-value{font-size:1.45rem!important;overflow-wrap:anywhere}.negative-value{color:var(--critical)}
@media(max-width:760px){.tenant-context,.savings-intro{align-items:stretch;flex-direction:column}.savings-period{display:grid;grid-template-columns:1fr 1fr}.savings-period button{grid-column:1/-1}.savings-period input{width:100%}}

/* v0.8 dispatch + fleet routing */
.field-title{font-size:.86rem;font-weight:700;margin-bottom:7px}.vehicle-picker{display:grid;gap:8px;margin-bottom:6px}.vehicle-option{display:flex!important;align-items:center;gap:10px;padding:10px 11px;border:1px solid #d9e0e5;border-radius:10px;background:#f8fafb;cursor:pointer}.vehicle-option input{width:auto!important;margin:0}.vehicle-option span{display:flex;flex-direction:column}.vehicle-option small{color:#748391;margin-top:2px}.fleet-route-cards{display:grid;gap:10px}.fleet-route-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid #dbe2e7;border-radius:12px;background:#fff;transition:.15s}.fleet-route-card.selected{border-color:#b58c3e;box-shadow:0 0 0 2px rgba(181,140,62,.12)}.fleet-route-card h3{margin:6px 0 2px;font-size:1.05rem}.fleet-route-actions{display:flex;gap:8px;flex-wrap:wrap}.compact-input{max-width:170px}.route-history-table .history-driver-btn{white-space:nowrap}@media(max-width:720px){.fleet-route-card{align-items:flex-start;flex-direction:column}.fleet-route-actions{width:100%}.fleet-route-actions button{flex:1}}
