:root{--bg:#0a121e;--panel:#142235;--panel-2:#192b40;--line:#2b3d53;--muted:#a9bfd4;--text:#edf6ff;--blue:#68b9ff;--green:#48f1ba;--red:#ff8d8d;--gold:#f5cd7b;--radius:13px}*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,#0a121e,#101e30 60%,#0b1625);color:var(--text);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;font-size:14px;line-height:1.45;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#20354b;color:var(--text);padding:10px 14px;border-radius:9px}button:hover:not(:disabled){border-color:var(--blue);background:#284360}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:#1674ab;border:1px solid #36a3e3;color:white;font-weight:700}button.quiet{background:transparent;color:var(--blue)}button.small{padding:5px 9px;font-size:12px}input,select{background:#0c1a2b;border:1px solid #3a5068;color:var(--text);min-height:41px;padding:9px 11px;border-radius:9px;width:100%}input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:2px}label{color:#cbdded;font-size:13px;display:flex;flex-direction:column;gap:6px;font-weight:600}h1,h2,h3,p{margin:0}h1{font-size:25px}h2{font-size:19px}h3{font-size:16px}.subtle{color:var(--muted);font-size:13px}.topbar{height:75px;background:rgba(10,21,35,.94);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1280px)/2));gap:20px}.identity{display:flex;align-items:center;gap:12px}.identity strong{display:block;letter-spacing:.5px;font-size:16px}.identity small{display:block;color:#a0b7cb;font-size:12px}.logo{display:grid;place-items:center;background:#084f79;color:#a5e1ff;font-weight:800;border:1px solid #3999c3;width:40px;height:40px;border-radius:12px}.session{display:flex;align-items:center;gap:10px;font-size:12px}.role{background:#1e4257;color:#8de9f7;border:1px solid #38718b;padding:4px 8px;border-radius:12px}.layout{max-width:1280px;margin:0 auto;padding:24px 20px 40px;min-height:calc(100vh - 135px)}.auth-panel{max-width:460px;margin:8vh auto 0;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:0 24px 80px #0004;display:flex;flex-direction:column;gap:15px}.auth-panel[hidden],#appView[hidden],section[hidden],div[hidden],form[hidden],button[hidden]{display:none!important}.signin-mark{font-size:30px;background:#073d5c;border-radius:50%;height:64px;width:64px;display:grid;place-items:center}.form-group{display:grid;gap:11px;margin-top:5px}.notice{color:var(--gold);font-size:13px;margin-top:8px;white-space:pre-line}.notice:empty{display:none}.navline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.tabs{display:flex;gap:8px}.tab{background:#13263a;color:#b5ccde}.tab.active{border-color:#60b7ea;background:#14527e;color:white}.nav-actions{display:flex;align-items:center;gap:12px}.panel{padding:20px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px}.panel h3{margin-bottom:10px}.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.filters details{border-top:1px solid #2e4358;padding:12px 0}.filters details:last-of-type{padding-bottom:0}.filters summary,details summary{cursor:pointer;font-weight:600;color:#dcecfb;list-style-position:inside}.period-choices{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.period-choice{border:1px solid #36526b;border-radius:9px;padding:8px 10px;min-width:220px;background:#0e1d2d;display:flex;align-items:center;gap:8px;cursor:pointer}.period-choice input{width:16px;min-height:auto}.period-choice small{display:block;font-size:11px;color:#9eb6cd}.period-choice span{display:block}.flex-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.more-filter .filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:14px 0}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.kpi{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:17px 16px}.kpi .name{color:#b2cce0;font-size:11px;letter-spacing:.2px;min-height:21px}.kpi .value{font-size:23px;font-weight:780;margin-top:7px;white-space:nowrap;font-variant-numeric:tabular-nums}.kpi .unit{font-size:11px;color:var(--muted);margin-top:3px}.kpi.emphasis{border-color:#176994}.kpi.emphasis .value{color:#9ddcff}.key{display:flex;gap:9px;align-items:center;color:#b8cbdc;font-size:12px;margin-bottom:9px}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block;margin-left:12px}.swatch:first-child{margin-left:0}.swatch.plan,.fill.plan{background:var(--blue)}.swatch.actual,.fill.actual{background:var(--green)}.bar-chart{display:grid;gap:13px}.bar-row{display:grid;grid-template-columns:minmax(130px,240px) 1fr minmax(112px,178px);gap:14px;align-items:center}.bar-label{font-size:13px;line-height:1.3;overflow-wrap:anywhere}.bar-values{font-size:12px;text-align:right;color:#c7d8e7;white-space:nowrap;font-variant-numeric:tabular-nums}.bar-pair{display:grid;gap:4px}.bar-track{background:#2a3b50;height:10px;border-radius:4px;overflow:hidden}.fill{height:100%;border-radius:4px}.area-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.area-grid .panel{margin:0}.area-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.area-stat{color:var(--green);font-size:13px;font-weight:700}.area-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:15px 0}.area-kpis strong{display:block;font-size:18px;margin-top:5px}.area-kpis .subtle{font-size:11px}.area-more{border-top:1px solid var(--line);padding-top:12px}.area-more summary{padding:4px 0}.area-controls{display:flex;gap:10px;margin:12px 0}.area-controls label{min-width:130px;flex:1}.area-chart .bar-row{grid-template-columns:minmax(100px,170px) 1fr minmax(90px,120px);gap:9px}.area-chart .bar-values{font-size:11px}.area-chart .bar-track{height:8px}.report-note{margin:16px 2px}.upload-field{padding-top:8px}.summary-preview{background:#0e2032;border:1px dashed #496580;border-radius:10px;padding:14px;margin:12px 0;white-space:pre-line;line-height:1.7}.viewer-form{margin:15px 0}.viewer-form input{flex:1;min-width:240px}.scrollable{overflow:auto}.access-table{border-collapse:collapse;width:100%}.access-table th,.access-table td{padding:11px 8px;border-bottom:1px solid var(--line);text-align:left}.access-table th{color:#a9c2d7}.pill{padding:4px 7px;border-radius:7px;background:#1b3d55;color:#90d4ff}.footer{text-align:center;color:#788e9f;font-size:11px;margin:20px 0 25px;padding:0 12px}code{color:#8be9fd}#globalStatus{margin:15px 2px}@media(max-width:900px){.filter-grid,.more-filter .filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.area-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bar-row{grid-template-columns:minmax(90px,160px) 1fr minmax(100px,145px)}.navline{align-items:start;flex-direction:column}}@media(max-width:600px){.topbar{height:auto;min-height:68px;padding:12px;align-items:flex-start}.identity strong{font-size:13px}.identity small{font-size:10px}.logo{width:34px;height:34px}.session{flex-wrap:wrap;max-width:55%;justify-content:end}.layout{padding:14px 10px}.auth-panel{padding:20px;margin-top:7vh}.panel{padding:14px}.filter-grid,.more-filter .filter-grid{grid-template-columns:1fr}.kpi{padding:12px}.kpi .value{font-size:19px}.bar-row,.area-chart .bar-row{grid-template-columns:minmax(90px,115px) 1fr}.bar-values{grid-column:2;text-align:left}.bar-pair{grid-column:2;grid-row:1}.bar-label{grid-row:1}.bar-track{height:8px}.period-choice{width:100%}.nav-actions{flex-wrap:wrap}.tabs{flex-wrap:wrap}.area-kpis strong{font-size:15px}}

/* Online vehicle reporting; counts use ONLY current date/shift records. */
.fleet-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0}
.fleet-stat{position:relative;min-width:0;background:#172b40;border:1px solid #3c5269;border-radius:10px;padding:16px;outline-offset:2px}
.fleet-stat strong{display:block;margin:7px 0 3px;font-size:30px;color:#ebf9ff;font-variant-numeric:tabular-nums}
.fleet-stat .fleet-label{font-size:12px;text-transform:uppercase;color:#bdd3e8;font-weight:700}
.fleet-stat.ready{border-color:#238c87;background:#103b3d}.fleet-stat.heavy{border-color:#ac6856;background:#402d2b}.fleet-stat.minor{border-color:#8f854c;background:#393626}
.fleet-tooltip{display:none;position:absolute;left:0;top:calc(100% + 6px);min-width:260px;max-width:min(440px,90vw);width:100%;max-height:245px;overflow-y:auto;z-index:40;padding:11px;border:1px solid #4e7899;border-radius:9px;background:#13243a;box-shadow:0 12px 32px #000a;font-size:12px;text-transform:none;font-weight:400}
.fleet-stat:hover .fleet-tooltip,.fleet-stat:focus-within .fleet-tooltip,.fleet-stat:focus .fleet-tooltip{display:block}
.fleet-tooltip div{padding:4px 0;border-bottom:1px solid #354357}.fleet-tooltip div:last-child{border:0}
.fleet-list-scroll{max-height:420px;overflow:auto}
.fleet-list-scroll table,.fleet-report-table{width:100%;border-collapse:collapse;font-size:12px}
.fleet-list-scroll td,.fleet-list-scroll th,.fleet-report-table td,.fleet-report-table th{border-bottom:1px solid #35495e;padding:8px 10px;text-align:left}
.fleet-list-scroll th,.fleet-report-table th{background:#253e58;color:#e9f4ff}
.fleet-warning{color:#ffc36d;font-size:12px}
#fleetView details>summary{cursor:pointer;padding:12px 0;font-weight:700;color:#c4e7fc}
@media(max-width:740px){.fleet-summary{grid-template-columns:1fr}.fleet-tooltip{max-width:90vw}}
@media print{
 @page{size:A4 landscape;margin:12mm}
 body{background:white!important;color:#182a3b!important;max-width:none}
 .topbar,.navline,.footer,#loginView,#setupView,#adminView,#globalStatus,.filters button,#fleetView .filter-grid,.filters .notice{display:none!important}
 body[data-print-target="fleet"] #reportView{display:none!important}
 body[data-print-target="report"] #fleetView{display:none!important}
 .layout,.panel{max-width:none!important;padding:0!important;margin:0 0 13px!important;box-shadow:none!important;border:0!important;background:white!important;color:#182a3b!important}
 #appView{display:block!important}
 body[data-print-target="fleet"] #fleetView,body[data-print-target="report"] #reportView{display:block!important}
 .fleet-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
 .fleet-stat,.fleet-stat.ready,.fleet-stat.heavy,.fleet-stat.minor{background:white!important;border:1px solid #bdcedd!important}
 .fleet-stat strong,.fleet-stat .fleet-label{color:#182a3b!important}
 .fleet-tooltip{display:none!important}
 .fleet-list-scroll{max-height:none!important;overflow:visible!important}
 .fleet-list-scroll table,.fleet-report-table{color:#182a3b!important}
 .fleet-list-scroll th,.fleet-report-table th{background:#e8f0f8!important;color:#18394d!important}
 #fleetView details{display:none!important}
}

@media print{
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body[data-print-target="report"] .area-grid{grid-template-columns:1fr!important}
  body[data-print-target="report"] #reportView .filters{display:none!important}
  body[data-print-target="report"] #reportView .area-more{display:block!important}
  body[data-print-target="report"] #reportView .area-more .area-controls{display:none!important}
  body[data-print-target="report"] #reportView .panel{break-inside:auto!important}
  body[data-print-target="report"] #reportView .bar-chart{break-inside:avoid}
}

/* Email + password login, responsive and keyboard accessible */
#loginView .form-group,#resetView .form-group{gap:10px}
.password-field{position:relative;width:100%;display:flex;align-items:center}
.password-field input{padding-right:78px;width:100%}
.password-visibility{position:absolute;right:5px;top:5px;bottom:5px;min-height:auto;padding:0 13px;font-size:12px;border:1px solid #3c5c74;background:#182d42;color:#b9e3ff}
.forgot-button{width:100%;background:transparent;color:#8cd9ff;border:1px solid #38526d;min-height:40px}
.auth-help{font-size:12px;color:#b7c9d9;line-height:1.6}
.auth-help b{color:#dcf2ff}
#resetView .notice{overflow-wrap:anywhere}
