:root{
  --bg:#F7F8FA; --surface:#FFFFFF; --surface-2:#FBFBFC; --surface-3:#FCFCFD; --surface-4:#FAFAFF;
  --ink:#111827; --ink-2:#6B7280; --ink-3:#9CA3AF; --on-ink:#FFFFFF;
  --line:#E5E7EB; --line-2:#EEF0F3; --accent:#1c377a; --accent-soft:#E9EEF8; --on-accent:#FFFFFF; --brand-red:#e82c2b;
  --green:#059669; --green-soft:#ECFDF3; --amber:#B45309; --amber-soft:#FFF7ED;
  --red:#DC2626; --red-soft:#FEF2F2; --slate:#475569; --slate-soft:#F1F5F9;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 1px 3px rgba(16,24,40,.06);
  --shadow-lg:0 8px 24px rgba(16,24,40,.10);
  --r:10px;
  color-scheme:light;
}
/* Dark themes. Every color in the app comes from these variables, so a theme is just a palette. */
[data-theme="dark"]{
  --bg:#0f1115; --surface:#171a21; --surface-2:#1b1f27; --surface-3:#1d222b; --surface-4:#1a1f2b;
  --ink:#e6e8ee; --ink-2:#a3a9b7; --ink-3:#6c7386; --on-ink:#0f1115;
  --line:#262b36; --line-2:#20252e; --accent:#7c9cf5; --accent-soft:#1c2540; --on-accent:#0b1020;
  --green:#34d399; --green-soft:#0f2a20; --amber:#f5b453; --amber-soft:#2e2210;
  --red:#f87171; --red-soft:#2e1416; --slate:#b6bfd1; --slate-soft:#1d2230;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 1px 3px rgba(0,0,0,.5); --shadow-lg:0 8px 24px rgba(0,0,0,.6);
  color-scheme:dark;
}
[data-theme="midnight"]{
  --bg:#0a1122; --surface:#101a30; --surface-2:#13203a; --surface-3:#15223d; --surface-4:#13203a;
  --ink:#e7ecf7; --ink-2:#a9b4cc; --ink-3:#6f7c9c; --on-ink:#0a1122;
  --line:#1e2c4c; --line-2:#182541; --accent:#8fb0ff; --accent-soft:#1a2a52; --on-accent:#0a1122;
  --green:#3ddc97; --green-soft:#0e2f26; --amber:#f7bd5e; --amber-soft:#2f2412;
  --red:#ff7b7b; --red-soft:#331a1f; --slate:#b9c4de; --slate-soft:#1a2541;
  --shadow:0 1px 2px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.5); --shadow-lg:0 8px 24px rgba(0,0,0,.6);
  color-scheme:dark;
}
[data-theme="graphite"]{
  --bg:#151515; --surface:#1e1e1e; --surface-2:#232323; --surface-3:#262626; --surface-4:#232323;
  --ink:#ececec; --ink-2:#adadad; --ink-3:#777777; --on-ink:#151515;
  --line:#2f2f2f; --line-2:#282828; --accent:#e8a24a; --accent-soft:#33261a; --on-accent:#151515;
  --green:#5dd39e; --green-soft:#16302a; --amber:#f0b45a; --amber-soft:#332714;
  --red:#f27d7d; --red-soft:#331b1b; --slate:#c2c2c2; --slate-soft:#262a2f;
  --shadow:0 1px 2px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.5); --shadow-lg:0 8px 24px rgba(0,0,0,.6);
  color-scheme:dark;
}
[data-theme="ocean"]{
  --bg:#0b1618; --surface:#102022; --surface-2:#13262a; --surface-3:#15292d; --surface-4:#13262a;
  --ink:#e3f1f2; --ink-2:#a5c0c3; --ink-3:#6c8b8f; --on-ink:#0b1618;
  --line:#1d3236; --line-2:#182b2f; --accent:#4fd1c5; --accent-soft:#12302f; --on-accent:#0b1618;
  --green:#4ade80; --green-soft:#10301f; --amber:#fbbf24; --amber-soft:#2f2611;
  --red:#fb7185; --red-soft:#331a22; --slate:#b3c6c9; --slate-soft:#172a2e;
  --shadow:0 1px 2px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.5); --shadow-lg:0 8px 24px rgba(0,0,0,.6);
  color-scheme:dark;
}
.brand-logo.logo-dark,.logo-dark{display:none}
[data-theme]:not([data-theme="light"]) .logo-light{display:none}
[data-theme]:not([data-theme="light"]) .logo-dark{display:block}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
.mono{font-family:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;letter-spacing:-.2px}
a{color:var(--accent)}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* layout */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
aside{background:var(--surface);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow:hidden}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:6px 8px 16px}
.brand-logo{width:150px;height:auto;display:block}
.logo{width:30px;height:30px;border-radius:8px;background:var(--accent);display:grid;place-items:center;color:var(--on-accent);font-weight:700;font-size:14px;flex:none}
.brand b{font-size:14.5px;font-weight:600}
.brand span{display:block;font-size:11.5px;color:var(--ink-3);font-weight:500}
/* The hidden attribute must win over any display rule below (nav links are display:flex,
   so without this a hidden sidebar entry stays on screen). */
[hidden]{display:none !important}
nav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:4px;padding-right:2px}
nav::-webkit-scrollbar{width:8px}
nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
nav::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}
nav{scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.brand{flex:0 0 auto}
.side-foot{flex:0 0 auto}
nav a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:8px;color:var(--ink-2);text-decoration:none;font-weight:500;font-size:13.5px;cursor:pointer;transition:background .15s,color .15s}
nav a svg{width:17px;height:17px;flex:none;stroke:currentColor}
nav a:hover{background:var(--line-2);color:var(--ink)}
nav a.on{background:var(--accent-soft);color:var(--accent)}
nav a .count{margin-left:auto;font-size:11.5px;background:var(--line);color:var(--ink-2);padding:1px 7px;border-radius:20px;font-weight:600}
nav a.on .count{background:var(--surface);color:var(--accent)}
nav a .count.warn{background:var(--amber-soft);color:var(--amber)}
nav a .count.accent{background:var(--accent-soft);color:var(--accent)}
.side-foot{margin-top:auto;padding:10px 8px;border-top:1px solid var(--line-2)}
.side-foot p{font-size:11.5px;color:var(--ink-3)}
.side-foot .num{font-family:'JetBrains Mono',monospace;color:var(--ink-2)}
.side-foot .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;background:var(--ink-3)}
.side-foot .dot.ok{background:var(--green)} .side-foot .dot.warn{background:var(--amber)}
/* Wave colours: 0 grey, 1 green, 2 orange, 3 purple, 4 red, 5 blue, 6 pink. A tinted left edge so
   the rows stay readable in every theme rather than being flooded with colour. Widened from 3px to
   6px on request: at 3px the band was hard to pick out down a long list.
   Wave 3 was red until bug report 24: against Wave 2's orange it was too close to read at a glance.
   It takes the purple Wave 4 was holding, and Wave 4 takes the red, since no station runs a Wave 4.
   Waves 0 and 5 are real at Shirley and had no colour at all before this. */
tr.wv-0 td:first-child{box-shadow:inset 6px 0 0 var(--slate)}
tr.wv-1 td:first-child{box-shadow:inset 6px 0 0 var(--green)}
tr.wv-2 td:first-child{box-shadow:inset 6px 0 0 var(--amber)}
tr.wv-3 td:first-child{box-shadow:inset 6px 0 0 #8b5cf6}
tr.wv-4 td:first-child{box-shadow:inset 6px 0 0 var(--red)}
tr.wv-5 td:first-child{box-shadow:inset 6px 0 0 #0ea5e9}
tr.wv-6 td:first-child{box-shadow:inset 6px 0 0 #ec4899}
.wv-chip{display:inline-block;min-width:20px;text-align:center;padding:1px 6px;border-radius:20px;font-weight:700;font-size:11px}
.wv-chip.w0{background:var(--slate-soft);color:var(--slate)}
.wv-chip.w1{background:var(--green-soft);color:var(--green)}
.wv-chip.w2{background:var(--amber-soft);color:var(--amber)}
.wv-chip.w3{background:#efe7ff;color:#6d28d9}
.wv-chip.w4{background:var(--red-soft);color:var(--red)}
.wv-chip.w5{background:#e0f2fe;color:#0369a1}
.wv-chip.w6{background:#fce7f3;color:#be185d}
[data-theme]:not([data-theme="light"]) .wv-chip.w3{background:#2a1f45;color:#c4b5fd}
[data-theme]:not([data-theme="light"]) .wv-chip.w5{background:#0c2c3f;color:#7dd3fc}
[data-theme]:not([data-theme="light"]) .wv-chip.w6{background:#3d132b;color:#f9a8d4}
/* The van and vehicle pickers were too narrow to read the value without opening them. */
.dl-t select, .dp-t select{min-width:104px;max-width:100%}
/* Van is column 9 since the DVIC seconds column was added; vehicle type is still 5. */
.dl-t td:nth-child(9) select, .dl-t td:nth-child(5) select{min-width:120px}
/* Shown when the server has been redeployed while this tab was open. */
#update-banner{position:fixed;right:18px;bottom:18px;z-index:9999;display:flex;align-items:center;gap:10px;
  background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:10px 14px;
  box-shadow:var(--shadow-lg);font-size:13px;font-weight:500;color:var(--ink)}
th.dp-sort{cursor:pointer;user-select:none;white-space:nowrap}
th.dp-sort:hover{color:var(--accent);text-decoration:underline}
.side-acct{display:flex;align-items:center;gap:8px;margin:6px 0 8px}
.side-acct .btn.sm{flex:0 0 auto}
.side-acct a{font-size:11.5px;color:var(--ink-3);text-decoration:none}
.side-acct a:hover{color:var(--ink-2);text-decoration:underline}

main{padding:26px 34px 60px;max-width:1160px}
.top{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;gap:20px}
.top h1{font-size:21px;font-weight:600;letter-spacing:-.3px}
.top p{color:var(--ink-2);font-size:13px;margin-top:3px;max-width:720px}
.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;justify-content:flex-end}

.btn{font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:8px 14px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background .15s,border-color .15s,box-shadow .15s;white-space:nowrap}
.btn:hover{background:var(--line-2)}
.btn svg{width:15px;height:15px;stroke:currentColor}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.pri:hover{filter:brightness(1.12)}
.btn:disabled,.btn.pri:disabled{background:var(--line-2);border-color:var(--line);color:var(--ink-3);cursor:not-allowed}
.btn.sm{padding:5px 10px;font-size:12px}
.btn.danger{color:var(--red)}
.btn.link{border:none;background:none;color:var(--accent);padding:2px 4px}

/* inputs */
select,input[type=text],input[type=password],input[type=email],input[type=number],input[type=date],input[type=search],input[type=tel],textarea{font-family:inherit;font-size:12.5px;font-weight:500;color:var(--ink);border:1px solid var(--line);border-radius:7px;padding:6px 9px;background:var(--surface);transition:border-color .15s,box-shadow .15s}
select:hover,input:hover{border-color:var(--ink-3)}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.langpick{min-width:150px;cursor:pointer}
label.fl{display:block;font-size:11px;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}

/* stat cards */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.stats.five{grid-template-columns:repeat(5,1fr)}
.stats.flex{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:15px 16px;box-shadow:var(--shadow)}
.stat .k{font-size:12px;color:var(--ink-2);font-weight:500;display:flex;align-items:center;gap:7px}
.stat .k i{width:8px;height:8px;border-radius:50%;display:inline-block}
.stat .v{font-size:26px;font-weight:700;margin-top:8px;letter-spacing:-.5px}
.stat .sub{font-size:11.5px;color:var(--ink-3);margin-top:2px}

/* panels */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.panel + .panel{margin-top:20px}
.panel-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line-2);gap:14px;flex-wrap:wrap}
.panel-h h2{font-size:14.5px;font-weight:600}
.panel-h .desc{font-size:12px;color:var(--ink-3);font-weight:400;margin-top:1px}
.panel-body{padding:16px 18px}
.filters{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-size:12px;font-weight:500;color:var(--ink-2);border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:4px 11px;cursor:pointer;transition:.15s}
.chip:hover{background:var(--line-2)}
.chip.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}

/* tables */
table{width:100%;border-collapse:collapse}
thead th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.4px;padding:10px 18px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}
thead th.r,td.r{text-align:right}
tbody td{padding:13px 18px;border-bottom:1px solid var(--line-2);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--surface-3)}
.who b{font-weight:600;font-size:13.5px}
.who .id{display:block;color:var(--ink-3);margin-top:2px}
.lang{display:inline-block;font-size:10.5px;font-weight:600;color:var(--slate);background:var(--slate-soft);border-radius:5px;padding:1px 6px;margin-left:6px;vertical-align:middle;text-transform:uppercase}
.dscore{display:inline-flex;align-items:center;gap:7px}
.dscore .g{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:15px}
.dscore small{font-size:11px;font-weight:600;display:flex;align-items:center;gap:2px}
.dscore small.up{color:var(--green)} .dscore small.down{color:var(--red)} .dscore small.flat{color:var(--ink-3)}
.muted{color:var(--ink-3)} .sub2{color:var(--ink-2);font-size:12px}
.c-green{color:var(--green)} .c-amber{color:var(--amber)} .c-red{color:var(--red)} .c-slate{color:var(--slate)} .c-accent{color:var(--accent)} .c-ink-3{color:var(--ink-3)}

.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap}
.badge i{width:6px;height:6px;border-radius:50%}
.b-green{background:var(--green-soft);color:var(--green)} .b-green i{background:var(--green)}
.b-amber{background:var(--amber-soft);color:var(--amber)} .b-amber i{background:var(--amber)}
.b-red{background:var(--red-soft);color:var(--red)} .b-red i{background:var(--red)}
.b-slate{background:var(--slate-soft);color:var(--slate)} .b-slate i{background:var(--slate)}
.b-accent{background:var(--accent-soft);color:var(--accent)} .b-accent i{background:var(--accent)}

/* messages */
.bimsg{max-width:520px;display:flex;flex-direction:column;gap:8px}
.msg{color:var(--ink);font-size:13px;line-height:1.5;border:1px solid transparent;border-radius:7px;padding:6px 8px;margin:-6px -8px;cursor:text;transition:border-color .15s,background .15s;white-space:pre-wrap}
.msg:hover{border-color:var(--line);background:var(--surface)}
.msg:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--accent-soft)}
.bimsg .msg{margin:0}
.bimsg .msg.alt{color:var(--ink-2);cursor:default}
.tag{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:600;color:var(--ink-3);background:var(--line-2);border-radius:4px;padding:1px 6px;margin-right:7px;vertical-align:1px;letter-spacing:.2px;text-transform:uppercase}
.tag.accent{color:var(--accent);background:var(--accent-soft)}
.tag.warn{color:var(--amber);background:var(--amber-soft)}
.msg-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--ink-3)}
.blocker{font-size:11px;color:var(--amber);font-weight:600}
.detail-toggle{font-size:11px;color:var(--accent);cursor:pointer;font-weight:600;background:none;border:none;padding:0}
.detail{font-size:11.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line-2);border-radius:7px;padding:8px 10px;margin-top:4px}
.detail .mono{font-size:11px}

/* toggle */
.tog{position:relative;width:38px;height:22px;flex:none;cursor:pointer;display:inline-block}
.tog input{opacity:0;width:0;height:0;position:absolute}
.track{position:absolute;inset:0;background:var(--line);border-radius:20px;transition:.2s}
.thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--surface);border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:.2s}
.tog input:checked + .track{background:var(--green)}
.tog input:checked + .track + .thumb{transform:translateX(16px)}
.tog input:disabled + .track{opacity:.45;cursor:not-allowed}
.rowcell{display:flex;align-items:center;gap:10px}
/* Approve column on Driver's Dailys: the toggle sits at the top of the row and "Don't send" at the
   bottom, so it lines up with the details link on the last line of the message beside it.
   height:1px on the cell is what lets the inner div resolve height:100% against the row's real
   height; without it a percentage height in a table cell has nothing to measure against. */
td.apv{height:1px;vertical-align:top}
td.apv > .rowcell{height:100%;flex-direction:column;justify-content:space-between;align-items:center;gap:6px}

/* upload */
.drop{margin:18px;border:1.5px dashed var(--line);border-radius:var(--r);padding:30px;text-align:center;background:var(--surface-3);transition:.15s;cursor:pointer}
.drop:hover,.drop.over{border-color:var(--accent);background:var(--accent-soft)}
.drop .ic{width:42px;height:42px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin:0 auto 12px}
.drop .ic svg{width:22px;height:22px;stroke:currentColor}
.drop b{font-size:14px} .drop p{font-size:12.5px;color:var(--ink-3);margin-top:4px}
.files{padding:0 18px 6px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.file{display:flex;align-items:flex-start;gap:11px;border:1px solid var(--line);border-radius:9px;padding:11px 13px;background:var(--surface)}
.file .fic{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;flex:none;background:var(--green-soft);color:var(--green)}
.file .fic svg{width:16px;height:16px;stroke:currentColor}
.file .meta{min-width:0;flex:1}
.file .meta b{font-size:12.5px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file .meta span{font-size:11.5px;color:var(--ink-3);display:block}
.file.skip .fic{background:var(--amber-soft);color:var(--amber)}
.file.err .fic{background:var(--red-soft);color:var(--red)}
.file.busy .fic{background:var(--slate-soft);color:var(--slate)}
.file .skipped{margin-top:5px;font-size:11px;color:var(--amber)}

/* summary cards */
.review-card{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin:18px}
.review-card + .review-card{margin-top:0}
.rc-top{background:var(--surface-4);padding:16px 20px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.rc-top h3{font-size:15.5px;font-weight:600}
.rc-top .p{font-size:12.5px;color:var(--ink-2);margin-top:2px}
.rc-grade{text-align:center;flex:none}
.rc-grade .g{font-size:30px;font-weight:700;line-height:1}
.rc-grade small{font-size:10.5px;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.rc-body{padding:18px 20px}
.sumline{font-size:13.5px;line-height:1.6;color:var(--ink);white-space:pre-wrap}
.sumline.alt{color:var(--ink-2);margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.rc-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0 4px}
.rc-m{border:1px solid var(--line-2);border-radius:8px;padding:11px 13px;background:var(--surface-3)}
.rc-m .mv{font-size:19px;font-weight:700}
.rc-m .ml{font-size:11px;color:var(--ink-3);margin-top:1px}
.send-as{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--line-2);background:var(--surface-3);flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{font-family:inherit;font-size:12.5px;font-weight:600;border:none;background:var(--surface);color:var(--ink-2);padding:7px 13px;cursor:pointer;transition:.15s}
.seg button.on{background:var(--accent);color:var(--on-accent)}
.seg button + button{border-left:1px solid var(--line)}

.foot-bar{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;background:var(--surface);border-top:1px solid var(--line);padding:13px 18px;gap:12px;flex-wrap:wrap;z-index:2}
.foot-bar .info{font-size:12.5px;color:var(--ink-2)}
.foot-bar .info b{color:var(--ink)}

/* scorecard cockpit */
.sc-hero{display:grid;grid-template-columns:280px 1fr;gap:18px;margin-bottom:20px}
.tier-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:22px;display:flex;flex-direction:column;align-items:center;text-align:center}
.tier-badge{font-size:12px;font-weight:600;padding:3px 11px;border-radius:20px;margin-bottom:14px;background:var(--slate-soft);color:var(--slate)}
.tier-badge.down{color:var(--amber);background:var(--amber-soft)} .tier-badge.up{color:var(--green);background:var(--green-soft)}
.tier-name{font-size:34px;font-weight:700;letter-spacing:-.5px;line-height:1}
.tier-sub{font-size:12.5px;color:var(--ink-2);margin-top:6px}
.tier-est{font-size:11px;color:var(--ink-3);margin-top:12px;font-style:italic;max-width:220px;line-height:1.45}
.tier-scale{display:flex;gap:3px;margin-top:16px;width:100%}
.tier-scale span{flex:1;height:5px;border-radius:3px;background:var(--line)}
.tier-scale span.lo{background:var(--red)} .tier-scale span.mid{background:var(--amber)} .tier-scale span.hi{background:var(--green)}
.tier-labels{display:flex;justify-content:space-between;width:100%;margin-top:5px}
.tier-labels span{font-size:9px;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px 16px}
.metric.off{opacity:.55}
.metric-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.metric-name{font-size:13px;font-weight:600}
.metric-val{font-size:13px;font-weight:700;font-family:'JetBrains Mono',monospace}
.metric-bar{height:7px;background:var(--line-2);border-radius:4px;overflow:hidden;position:relative}
.metric-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:4px}
.metric-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.metric-trend{font-size:11.5px;font-weight:600;display:flex;align-items:center;gap:4px}
.metric-trend.up{color:var(--red)} .metric-trend.down{color:var(--green)} .metric-trend.flat{color:var(--ink-3)}
.metric-target{font-size:11px;color:var(--ink-3)}
.imp-name{font-weight:600;font-size:13.5px}
.imp-drivers{color:var(--ink-2);font-size:12.5px;margin-top:2px}
.imp-pts{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px}
.imp-fix{font-size:12px;font-weight:600;color:var(--accent);cursor:pointer;white-space:nowrap;background:none;border:none}

/* roster profile */
.rosterrow{cursor:pointer}
.caret{display:inline-block;width:0;height:0;border-left:5px solid var(--ink-3);border-top:4px solid transparent;border-bottom:4px solid transparent;margin-right:8px;transition:transform .15s;vertical-align:middle}
.rosterrow.open .caret{transform:rotate(90deg)}
.profile-row td{padding:0;border-bottom:1px solid var(--line-2);background:var(--surface-2)}
.profile{padding:18px 22px 20px;display:grid;grid-template-columns:1.3fr 1fr;gap:22px}
.profile h4{font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.4px;margin:0 0 11px}
.profile h4 + h4{margin-top:14px}
.trend-row{display:flex;gap:18px;margin-bottom:16px}
.trend-item{flex:1}
.trend-item .tl{font-size:11px;color:var(--ink-3);margin-bottom:5px}
.trend-item .tv{font-size:16px;font-weight:700;font-family:'JetBrains Mono',monospace}
.spark{display:flex;align-items:flex-end;gap:2px;height:22px;margin-top:5px}
.spark span{flex:1;background:var(--line);border-radius:1px;min-height:2px}
.spark span.hot{background:var(--red)} .spark span.warn{background:var(--amber)} .spark span.ok{background:var(--green)}
.coach-item{padding:9px 0;border-bottom:1px dashed var(--line);font-size:12.5px}
.coach-item:last-child{border-bottom:none}
.coach-item .cm{color:var(--ink)}
.coach-item .cr{color:var(--green);margin-top:3px;padding-left:12px;font-size:12px}
.coach-item .cd{color:var(--ink-3);font-size:11px;margin-bottom:2px}
.contact-grid{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;font-size:12.5px;margin-bottom:16px}
.contact-grid .cl{color:var(--ink-3)}
.contact-grid .cv{font-weight:500}
.note{margin-top:6px;padding:9px 11px;background:var(--accent-soft);border-radius:7px;font-size:11.5px;color:var(--slate)}
.note.red{background:var(--red-soft);color:var(--red)} .note.green{background:var(--green-soft);color:var(--green)} .note.amber{background:var(--amber-soft);color:var(--amber)}
.manual{border:1px dashed var(--line);border-radius:8px;padding:12px;margin-top:8px}
.manual .grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.manual input{width:100%}
.match-box{display:flex;flex-direction:column;gap:6px;min-width:200px}
.match-box .sug{font-size:12px}
.match-box .conf{font-size:11px;color:var(--ink-3)}
.dropdown{position:relative}
.dropdown ul{position:absolute;top:100%;left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-lg);list-style:none;z-index:5;max-height:220px;overflow:auto}
.dropdown li{padding:7px 10px;font-size:12.5px;cursor:pointer;display:flex;justify-content:space-between;gap:8px}
.dropdown li:hover{background:var(--line-2)}
.flags{display:flex;gap:10px;font-size:11.5px;color:var(--ink-2);align-items:center;flex-wrap:wrap}
.flags label{display:flex;align-items:center;gap:4px;cursor:pointer}

/* empty state */
.empty{padding:44px 20px;text-align:center;color:var(--ink-3)}
.empty .ic{width:42px;height:42px;border-radius:11px;background:var(--line-2);color:var(--ink-3);display:grid;place-items:center;margin:0 auto 12px}
.empty .ic svg{width:22px;height:22px;stroke:currentColor}
.empty b{display:block;color:var(--ink);font-size:14px;margin-bottom:3px}
.empty p{font-size:12.5px}

/* misc */
.view{display:block}
.toast-wrap{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:50}
.toast{background:var(--ink);color:var(--on-ink);font-size:12.5px;font-weight:500;padding:8px 16px;border-radius:20px;box-shadow:var(--shadow-lg);opacity:.95;animation:fade .2s}
.toast.err{background:var(--red);color:#fff} .toast.ok{background:var(--green);color:#fff}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:.95;transform:none}}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.banner{display:block;padding:10px 14px;border-radius:9px;font-size:12.5px;margin-bottom:16px;border:1px solid var(--line)}
.banner.warn{background:var(--amber-soft);border-color:var(--line);color:var(--amber)}
.banner.info{background:var(--accent-soft);border-color:var(--line);color:var(--ink-2)}
.banner.ok{background:var(--green-soft);border-color:var(--line);color:var(--green)}
.banner.err{background:var(--red-soft);border-color:var(--line);color:var(--red)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12.5px}
.kv .k{color:var(--ink-3)}
.status-pill{font-size:11px;font-weight:600}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;z-index:40}
.modal{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-lg);padding:22px;width:420px;max-width:92vw}
.modal h3{font-size:15px;margin-bottom:12px}
.modal .row{margin-bottom:10px}
.modal .row input,.modal .row select{width:100%}
.modal .foot{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.help{font-size:12px;color:var(--ink-3);line-height:1.5}
ul.plain{padding-left:18px;font-size:12.5px;color:var(--ink-2);line-height:1.7}

/* printable reports */
.report{padding:18px 22px}
.report h3{font-size:15px;font-weight:600}
.report .rh{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:10px;gap:12px}
.report .rh p{font-size:12px;color:var(--ink-2)}
.report table{font-size:12px}
.report thead th{position:static;padding:7px 10px}
.report tbody td{padding:7px 10px;font-size:12px}
.report h5{font-size:12px;font-weight:600;color:var(--ink-2);text-transform:uppercase;letter-spacing:.4px;margin:12px 0 6px}
@media print{
  .logo-dark{display:none !important} .logo-light{display:block !important}
  :root,[data-theme]{--bg:#fff;--surface:#fff;--surface-2:#fff;--surface-3:#fff;--surface-4:#fff;--ink:#111827;--ink-2:#6B7280;--ink-3:#9CA3AF;--line:#E5E7EB;--line-2:#EEF0F3;--accent-soft:#E9EEF8;--amber-soft:#FFF7ED;--green-soft:#ECFDF3;--slate-soft:#F1F5F9;--red-soft:#FEF2F2}
  aside,.top .actions,.foot-bar,.toast-wrap,.no-print,.filters{display:none !important}
  .app{display:block}
  main{padding:0;max-width:none}
  body{background:#fff}
  .panel{box-shadow:none;border:none}
  .report{page-break-after:always;padding:0}
  .report:last-child{page-break-after:auto}
  thead th{background:#fff}
}
@media (max-width:980px){
  .app{grid-template-columns:1fr} aside{position:static;height:auto;flex-direction:row;flex-wrap:wrap}
  .stats,.stats.five,.rc-metrics{grid-template-columns:repeat(2,1fr)} .sc-hero{grid-template-columns:1fr} .profile{grid-template-columns:1fr} .files{grid-template-columns:1fr}
}

a.chip{text-decoration:none;display:inline-block}

.app.login-mode{display:block}
.app.login-mode main{max-width:none;padding:0 20px}

tr.drv-more td{border-top:1px dashed var(--line-2)}
tr.drv-first td.who{vertical-align:top}

/* Hours & Breaks: flags sit under the driver's row, full width */
tr.flagrow td{padding-top:0;padding-bottom:12px;border-bottom:1px solid var(--line-2)}
tr.flagrow:hover{background:transparent}
tbody tr:has(+ tr.flagrow) td{border-bottom:none;padding-bottom:6px}

/* GM daily report */
.gm-head{display:flex;justify-content:space-between;align-items:flex-end;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);margin-bottom:14px}
.gm-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gm-sec{margin:0 !important}
.gm-sec .panel-h{padding:10px 14px}
.gm-sec .panel-h h2{font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-2)}
.gm-t td{padding:6px 12px;font-size:12.5px;vertical-align:middle}
.gm-t td.gm-l{width:44%;color:var(--ink-2)}
.gm-t td.gm-v{width:22%;white-space:nowrap}
.gm-t td.gm-n{color:var(--ink-3);font-size:11.5px}
.gm-t input,.gm-t select{width:100%;padding:4px 7px;font-size:12px}
.gm-t td.gm-v input{max-width:110px}
@media print{
  .gm-grid{grid-template-columns:1fr 1fr;gap:8px}
  .gm-t input,.gm-t select{border:none;background:transparent;padding:0;font-size:11px}
  .gm-t td{padding:3px 8px;font-size:11px}
  .gm-sec .panel-h{padding:6px 8px}
  .tag{display:none}
  main{padding:0}
}
@media (max-width:980px){.gm-grid{grid-template-columns:1fr}}

.gm-t thead th{position:static;padding:6px 12px;font-size:10.5px}


.cm-drv{width:100%;table-layout:fixed}
/* Bug Reports. The middle cell carries free text: what someone typed, the steps, and the reply.
   One long unbroken line in there used to stretch the column and shove Reporter and When off the
   right edge. Fixed layout keeps every declared width no matter what the text does, long tokens
   break rather than push, and a reply holding a table scrolls inside its own box. */
.bug-t{width:100%;table-layout:fixed}
.bug-t td{overflow-wrap:anywhere}
.bug-t td.who{white-space:normal}
.bug-t .banner{overflow-x:auto}
/* The status control is a .langpick, which carries min-width:150px. In a fixed-width cell that
   beats width:100% and the control hangs off the edge, so it is released here. */
.bug-t td select{min-width:0;max-width:100%;box-sizing:border-box}
.bug-t td .btn{max-width:100%}
.bug-t .sub2{white-space:nowrap}
.cm-drv td{vertical-align:top;overflow-wrap:anywhere}
.cm-drv th:nth-child(1){width:16%}.cm-drv th:nth-child(2){width:12%}.cm-drv th:nth-child(3){width:7%}.cm-drv th:nth-child(4){width:9%}
.cm-drv th:nth-child(5){width:17%}.cm-drv th:nth-child(6){width:7%}.cm-drv th:nth-child(7){width:9%}.cm-drv th:nth-child(8){width:7%}.cm-drv th:nth-child(9){width:8%}.cm-drv th:nth-child(10){width:10%}
.cm-drv thead th{white-space:normal;padding:6px 8px;line-height:1.25}
.cm-drv td{padding:6px 8px}
.cm-drv .badge{padding:2px 7px;font-size:10.5px;letter-spacing:0}
.cm-drv td:nth-child(3),.cm-drv td:nth-child(6),.cm-drv td:nth-child(8){white-space:nowrap}
.cm-drv select{width:auto;max-width:100%}
.cm-fields{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:6px 10px 2px;min-width:0;background:var(--bg-2, var(--bg));border-radius:6px}
.cm-f{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3);white-space:nowrap;min-width:0}
.cm-f input,.cm-f select{padding:3px 6px;font-size:11.5px;width:auto}
.cm-f:last-child{flex:1 1 100%}
.cm-f:last-child .cm-ev{flex:1;width:auto;min-width:0}
@media print{.cm-fields{background:none;padding:0}.cm-f input,.cm-f select{border:none;background:transparent}}

.rules-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 18px;align-items:end}
.rules-grid>div{display:flex;flex-direction:column;min-width:0}
.rules-grid label.fl{min-height:30px;display:flex;align-items:flex-end;white-space:normal;line-height:1.25}
.rules-grid input{width:100%;box-sizing:border-box;height:36px;font-family:inherit}
@media (max-width:900px){.rules-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.dp-t input[type=text],.dp-t input[type=number],.dp-t select{padding:4px 7px;font-size:12px}
.dp-t select.dp-bad{border-color:var(--red);color:var(--red)}
.dp-t td{vertical-align:top}
tr.dp-unconfirmed td:nth-child(3) input{border-style:dashed}
/* Route Schedule overtime watch: amber = this shift would cross the weekly overtime line, red = already past it. */
tr.dp-ot td{background:rgba(245,166,35,.12)} tr.dp-ot td:nth-child(3){box-shadow:inset 4px 0 0 #f5a623}
tr.dp-ot-over td{background:rgba(220,60,60,.10)} tr.dp-ot-over td:nth-child(3){box-shadow:inset 4px 0 0 var(--red)}
@media print{.dp-t input,.dp-t select{border:none;background:transparent;-webkit-appearance:none;appearance:none}.dp-t th:last-child,.dp-t td:last-child{display:none}textarea{border:none !important}}

.dp-t td.dp-actual{min-width:150px;font-size:11.5px}

@media print{
  .dp-t{width:100%;table-layout:fixed;font-size:10.5px}
  .dp-t th,.dp-t td{padding:4px 5px;overflow-wrap:anywhere;white-space:normal}
  .dp-t th:nth-child(1){width:4%}.dp-t th:nth-child(2){width:6%}.dp-t th:nth-child(3){width:20%}.dp-t th:nth-child(4){width:8%}.dp-t th:nth-child(5){width:7%}
  .dp-t th:nth-child(6){width:9%}.dp-t th:nth-child(7){width:14%}.dp-t th:nth-child(8){width:7%}.dp-t th:nth-child(9){width:25%}
  .dp-t input,.dp-t select{width:100% !important;min-width:0 !important;font-size:10.5px;padding:0}
  .dp-t input::placeholder{color:transparent}
  .dp-t input[type=checkbox]{width:12px !important;height:12px}
  .dp-t .badge{padding:1px 5px;font-size:9.5px}
  .dp-t td.dp-actual{min-width:0}
  .top p{display:none}
}

/* ---- floating Ask-the-data helper ---- */
.aw-launcher{position:fixed;right:22px;bottom:22px;z-index:1200;width:54px;height:54px;border-radius:50%;border:none;cursor:pointer;background:var(--accent);color:#fff;box-shadow:0 6px 18px rgba(15,23,42,.28);display:flex;align-items:center;justify-content:center;transition:transform .15s,box-shadow .15s}
.aw-launcher svg{width:26px;height:26px}
.aw-launcher:hover{transform:scale(1.06);box-shadow:0 8px 24px rgba(15,23,42,.32)}
.aw-launcher:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}
.aw-panel{position:fixed;right:22px;bottom:86px;z-index:1200;width:380px;max-width:calc(100vw - 32px);max-height:min(640px,calc(100vh - 110px));display:none;flex-direction:column;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);overflow:hidden}
.aw-panel.aw-open{display:flex;animation:aw-rise .18s ease}
@keyframes aw-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.aw-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--line-2);font-size:13px}
.aw-head .aw-scope{color:var(--ink-3);font-weight:500}
.aw-head button{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:12px;padding:4px 6px;font-family:inherit}
.aw-head button:hover{color:var(--ink)}
.aw-thread{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;min-height:120px}
.aw-msg{max-width:92%;padding:8px 11px;border-radius:12px;font-size:13px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.aw-you{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}
.aw-bot{align-self:flex-start;background:var(--surface-2);border-bottom-left-radius:4px}
.aw-bot.aw-err{background:var(--amber-soft);color:var(--amber)}
.aw-rows{display:block;margin-top:6px;background:none;border:1px solid var(--line);border-radius:6px;padding:2px 8px;font-size:11px;color:var(--ink-2);cursor:pointer;font-family:inherit}
.aw-table{margin-top:6px;max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:6px;background:var(--surface)}
.aw-table table{width:100%;border-collapse:collapse;font-size:11px}
.aw-table th,.aw-table td{padding:3px 6px;border-bottom:1px solid var(--line-2);text-align:left;white-space:nowrap}
.aw-table thead th{position:sticky;top:0;background:var(--surface-2);font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--ink-3)}
.aw-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px}
.aw-chip{background:var(--surface-2);border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:11.5px;color:var(--ink-2);cursor:pointer;font-family:inherit}
.aw-chip:hover{color:var(--ink);border-color:var(--ink-3)}
.aw-form{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--line-2);align-items:flex-end}
.aw-input{flex:1;resize:none;font-family:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);max-height:110px}
.aw-go{width:38px;height:36px;border-radius:10px;border:none;background:var(--accent);color:#fff;cursor:pointer;font-size:14px}
.aw-go:disabled{opacity:.5;cursor:default}
.aw-foot{padding:6px 12px 9px;font-size:10.5px;color:var(--ink-3)}
.aw-foot a{color:var(--accent)}
@media (max-width:520px){.aw-panel{right:10px;left:10px;width:auto;bottom:80px}.aw-launcher{right:14px;bottom:14px}}
@media print{.aw-launcher,.aw-panel{display:none !important}}
.app.login-mode ~ .aw-launcher,.app.login-mode ~ .aw-panel{display:none !important}

.has-tip{cursor:help;text-decoration:underline dotted var(--ink-3);text-underline-offset:3px}
.help-btn span{display:inline-flex;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;font-size:11px;font-weight:700;align-items:center;justify-content:center;margin-right:2px}
.help-sec ol li{color:var(--ink)}
@media print{.help-sec{break-inside:avoid}.filters{display:none}}

details.hreplies{margin-top:6px}
details.hreplies summary{cursor:pointer;font-size:11.5px;font-weight:600;color:var(--accent);list-style:none;display:inline-flex;align-items:center;gap:4px}
details.hreplies summary::before{content:'▸';font-size:10px}
details.hreplies[open] summary::before{content:'▾'}
.hreply{display:flex;gap:10px;align-items:flex-start;padding:5px 0 5px 10px;border-left:2px solid var(--green-soft);margin-top:4px;font-size:12.5px;white-space:pre-wrap}

.count.red{background:var(--brand-red);color:#fff}
.newdot{display:inline-block;background:var(--brand-red);color:#fff;border-radius:10px;padding:0 7px;font-size:10.5px;font-weight:700;margin-left:4px}
details.hreplies.unread summary{color:var(--brand-red)}
.hreply.is-new{border-left-color:var(--brand-red);background:var(--amber-soft)}

.demo-banner{position:fixed;top:0;left:236px;right:0;z-index:50;background:var(--brand-red);color:#fff;font-size:12.5px;font-weight:600;text-align:center;padding:5px 12px}
@media print{.demo-banner{display:none}}

/* ---- Revenue & Expenses */
.rv-stats{grid-template-columns:repeat(4,1fr)}
.rv-printhead{display:none}
.rv-week{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 18px;margin-top:14px}
.rv-week.rv-future{opacity:.55}
.rv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.rv-head h2{font-size:16px;font-weight:700;letter-spacing:-.2px}
.rv-chips{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.rv-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.rv-col{border:1px solid var(--line-2);border-radius:10px;padding:12px 14px;background:var(--surface-3)}
.rv-col .k{font-size:12px;color:var(--ink-2);font-weight:500}
.rv-col .v{font-size:28px;font-weight:700;letter-spacing:-.6px;margin-top:4px}
.rv-col .sub{font-size:12px;color:var(--ink-3);margin-top:4px;line-height:1.45}
.rv-break{margin-top:10px;font-size:12.5px;color:var(--ink-2);line-height:1.6}
.rv-notes{margin-top:10px;font-size:13px;white-space:pre-wrap;border-left:3px solid var(--amber);padding:4px 10px;color:var(--ink-2)}
.rv-form{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}
.rv-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 28px}
.rv-group h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-2);margin:0 0 8px}
.rv-f{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px dashed var(--line-2);font-size:13px}
.rv-f>span:first-child{color:var(--ink)}
.rv-in{display:flex;align-items:center;gap:6px}
.rv-in b{color:var(--ink-3);font-weight:500}
.rv-f input{width:160px;text-align:right;font-size:14px;padding:6px 9px;font-family:'JetBrains Mono',monospace}
.rv-f input::placeholder{font-size:11.5px;font-family:inherit;color:var(--ink-3)}
.rv-f-wide{flex-direction:column;align-items:stretch}
.rv-f-wide textarea{width:100%;font-family:inherit;font-size:13px;margin-top:4px}
.rv-note{font-size:12px;color:var(--ink-3);margin-top:8px;line-height:1.45}
.rv-formfoot{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:12px}
.rv-t{width:100%;border-collapse:collapse}
.rv-t th,.rv-t td{padding:9px 14px;border-bottom:1px solid var(--line-2);font-size:13px;text-align:left}
.rv-t th{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-3)}
.rv-t .r{text-align:right;font-variant-numeric:tabular-nums}
.rv-t .rv-total td{border-top:2px solid var(--ink);border-bottom:none;font-size:13.5px}
.rv-recent{padding:0 18px 14px;font-size:12px;color:var(--ink-3)} .rv-recent ul{margin:4px 0 0;padding-left:18px;columns:2}
@media (max-width:980px){.rv-stats{grid-template-columns:repeat(2,1fr)} .rv-cols{grid-template-columns:1fr} .rv-groups{grid-template-columns:1fr} .rv-recent ul{columns:1}}
@media print{
  .rv-printhead{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #111;padding-bottom:4px;margin-bottom:10px;font-size:13px}
  .rv-cov{border:none;padding:0 0 8px;background:none}
  .rv-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
  .rv-stats .stat{padding:8px 10px;box-shadow:none;border:1px solid #bbb} .rv-stats .stat .v{font-size:20px}
  .rv-trend{page-break-inside:avoid} .rv-t th,.rv-t td{padding:5px 8px;font-size:11px}
  .rv-week{box-shadow:none;border:1px solid #bbb;padding:10px 12px;margin-top:8px;page-break-inside:avoid}
  .rv-week.rv-future{display:none}
  .rv-col{background:none;border:1px solid #ddd} .rv-col .v{font-size:20px}
  .rv-break,.rv-notes{font-size:11px}
  body.rv-print-one .rv-stats,body.rv-print-one .rv-trend,body.rv-print-one .rv-cov,body.rv-print-one .rv-week:not(.rv-print-target){display:none !important}
  body.rv-print-one .rv-print-target .rv-form{display:block !important}
  .rv-form .rv-f input,.rv-form textarea{border:none;background:none;padding:0}
}
.rv-daynav{display:flex;align-items:center;gap:8px;padding:12px 18px 0;flex-wrap:wrap} .rv-daynav .btn{padding:6px 12px;font-size:16px;line-height:1} .rv-daynav .btn.disabled{pointer-events:none;opacity:.4}
.rv-dayhead{padding:12px 18px 0;font-size:15px}
.rv-daysites{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:10px 18px 18px}
.rv-daysite h3{font-size:14px;font-weight:700;margin:0 0 8px;display:flex;align-items:baseline;gap:8px} .rv-daysite h3 .muted{font-weight:500;font-size:12px} .rv-daytotal{margin-left:auto;font-size:15px}
.rv-paysec{margin-top:10px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rv-payhead{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;background:var(--surface-3);font-size:14px} .rv-payhead b{font-size:15px}
.rv-pay{width:100%;border-collapse:collapse} .rv-pay th,.rv-pay td{padding:6px 12px;font-size:12.5px;border-top:1px solid var(--line-2);text-align:left} .rv-pay th{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.3px;border-top:none} .rv-pay .r{text-align:right;font-variant-numeric:tabular-nums} .rv-pay td:nth-child(2){white-space:nowrap}
@media (max-width:980px){.rv-daysites{grid-template-columns:1fr}}
@media print{
  .rv-day{page-break-inside:avoid} .rv-daysites{gap:10px} .rv-pay th,.rv-pay td{padding:3px 8px;font-size:10.5px} .rv-payhead{padding:5px 8px;font-size:12px}
  body.rv-print-day .rv-stats,body.rv-print-day .rv-trend,body.rv-print-day .rv-cov,body.rv-print-day .rv-weeks,body.rv-print-day .top p{display:none !important}
  body.rv-print-one .rv-day{display:none !important}
}

/* Compliance Manager > Scorecard Coaching: the Date and Driver columns stay put while the rest scrolls sideways (Kevin, 2026-11-03). */
.cm-stick th:nth-child(-n+2),.cm-stick td:nth-child(-n+2){position:sticky;z-index:3;background:var(--surface)}
.cm-stick th:nth-child(1),.cm-stick td:nth-child(1){left:0;width:150px;min-width:150px}
.cm-stick th:nth-child(2),.cm-stick td:nth-child(2){left:150px;min-width:180px;box-shadow:4px 0 6px -4px rgba(0,0,0,.25)}
.cm-stick thead th:nth-child(-n+2){position:sticky;top:0;z-index:4;background:var(--surface-2)}
