/* ADP2 — the one stylesheet. Tokens first, then the component set (one of each), then the pages that have moved in.
   Brand = the logo's maroon, read from public/images/logo.png (#8c0c04). Warm neutrals. One success, one warning (a pink derived from
   the brand), one danger. White paper, dark text; brand for actions and the current thing only. Five type sizes; numbers tabular. */
:root {
  --brand:#8c0c04; --brand-dark:#6b0903; --brand-tint:#f7e9e7; --brand-ring:rgba(140,12,4,.25);
  --paper:#fff; --ink:#5e5873; --ink-2:#6e6b7b; --muted:#6e6b7b; --line:#ebe9f1; --line-2:#f1f0f5; --soft:#f8f8f8; --soft-2:#f3f2f7;   /* prod's Vuexy palette */
  --ok:#1f7a3f; --ok-bg:#e7f3ea; --warn:#b3395a; --warn-bg:#f9e5eb; --bad:#c2281b; --bad-bg:#fdecea; --night:#4b4a8a; --night-bg:#ebeaf7;
  --fs-1:13px; --fs-2:14px; --fs-3:16px; --fs-4:19px; --fs-5:26px;                      /* a phone; a desk steps up below */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px;
  --row:48px; --radius:6px; --shadow:0 8px 24px rgba(31,26,25,.10);
  /* the older names the pages still use */
  --bad-light:var(--bad-bg);
}
@media (min-width: 768px) { :root { --fs-1:14px; --fs-2:15px; --fs-3:17px; --fs-4:20px; --fs-5:28px; } }   /* reads at arm's length */
html { -webkit-text-size-adjust:100%; }
[hidden] { display:none !important; }   /* the hidden attribute beats every component's display rule — a .tag or .btns with hidden stays hidden */
h1, h2, h3, h4 { margin:0 0 var(--s-2); line-height:1.25; font-weight:650; }
h2 { font-size:var(--fs-4); } h1 { font-size:var(--fs-5); }
.muted { color:var(--muted); }
.num, .money, [data-num] { font-variant-numeric:tabular-nums; } .money { text-align:right; white-space:nowrap; }
.kbd { font:var(--fs-1)/1 ui-monospace, SFMono-Regular, Menlo, monospace; border:1px solid var(--line); border-bottom-width:2px; border-radius:3px; padding:1px 5px; background:var(--paper); color:var(--ink-2); }

/* ---- one of each */
.btns { display:flex; gap:var(--s-2); flex-wrap:wrap; align-items:center; margin:var(--s-3) 0; }
label.toggle { display:inline-flex; align-items:center; gap:10px; cursor:pointer; font-size:var(--fs-2); user-select:none; }
label.toggle input[role=switch] { position:absolute; opacity:0; width:0; height:0; }
label.toggle .track { position:relative; width:44px; height:26px; border-radius:13px; background:#b9aea9; transition:background .15s; flex:0 0 40px; }
label.toggle .track:after { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.25); transition:left .15s; }
label.toggle input[role=switch]:checked + .track { background:var(--brand); }
label.toggle input[role=switch]:checked + .track:after { left:21px; }
label.toggle input[role=switch]:focus-visible + .track { outline:2px solid var(--brand); outline-offset:2px; }
.tag { display:inline-block; font-size:var(--fs-1); line-height:1.5; padding:2px 8px; border-radius:.25rem; font-weight:500; background:var(--soft-2); color:var(--ink-2); margin-left:6px; vertical-align:middle; white-space:nowrap; font-weight:500; }
.tag.warn, .tag.reh, .tag.adv-warn { background:var(--warn-bg); color:var(--warn); }
.tag.bad { background:var(--bad-bg); color:var(--bad); }
.tag.ok, .tag.crew, .tag.adv, .tag.src { background:var(--ok-bg); color:var(--ok); }
.tag.night, .tag.peer, .tag.rule, .tag.cat, .tag.ns { background:var(--night-bg); color:var(--night); }
.tag.fam { background:var(--brand-tint); color:var(--brand); }
a.tag { text-decoration:none; border:1px solid transparent; } a.tag:hover { border-color:currentColor; }
tr.loud td { background:var(--bad-bg); } tr.loud td.hrs { color:var(--bad); font-weight:700; }
.err, .refusal { color:var(--bad); font-size:var(--fs-2); margin-top:var(--s-1); }
.err.gate { background:var(--bad-bg); padding:10px 12px; border-radius:var(--radius); font-size:var(--fs-2); }
.empty { padding:var(--s-6) var(--s-2); color:var(--muted); text-align:center; }
.derived, .hint { font-size:var(--fs-2); color:var(--muted); } .derived b { color:var(--ink); } .derived .ov { color:var(--warn); }
.status { font-size:var(--fs-2); color:var(--muted); margin-top:var(--s-3); line-height:1.6; } .status b { color:var(--ink); }
table.lines th { text-align:left; font-size:var(--fs-1); color:var(--muted); font-weight:700; padding:8px 12px; border-bottom:1px solid var(--line); letter-spacing:.02em; text-transform:uppercase; }
table.list td, table.lines td { vertical-align:middle; height:var(--row); }   /* the taller rows (operator); padding and rules are the theme's */
.card { padding:var(--s-4); }   /* the theme's card, with room inside */
table.list tr.rec { cursor:pointer; } table.list tr.rec:hover td { background:var(--soft); } table.list tr.rec.sel td { background:var(--brand-tint); }
table.list tr.off td { color:var(--muted); } table.list td.name { font-weight:600; } table.list td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
table.hist { font-size:var(--fs-2); margin-top:var(--s-2); } table.hist th { text-align:left; color:var(--muted); font-weight:600; padding:4px 6px; border-bottom:1px solid var(--line); font-size:var(--fs-1); text-transform:uppercase; letter-spacing:.02em; }
table.hist td { padding:6px; border-bottom:1px solid var(--line-2); } table.hist tr.now td { font-weight:600; } table.hist input { width:100%; padding:4px 6px; border:1px solid transparent; border-radius:3px; min-height:0; } table.hist input:focus { border-color:var(--brand); } table.hist tr.blank td { background:var(--soft); }
.f { display:flex; flex-direction:column; gap:4px; margin-bottom:var(--s-3); font-size:var(--fs-2); color:var(--muted); }
.f input, .f select, .f textarea { font-size:var(--fs-3); color:var(--ink); width:100%; min-width:0; } .f textarea { min-height:72px; }
.row2 { display:flex; gap:var(--s-3); align-items:flex-end; } .row2 .f { flex:1; }
.head { font-size:var(--fs-2); color:var(--muted); margin-bottom:var(--s-3); } .head b { color:var(--ink); } .head .bad { color:var(--bad); font-weight:600; } .head .warn { color:var(--warn); font-weight:600; }
.bar { display:flex; gap:var(--s-4); align-items:center; flex-wrap:wrap; margin-bottom:var(--s-3); font-size:var(--fs-2); } .bar .primary { margin-left:auto; }
.keys { margin-top:var(--s-5); font-size:var(--fs-1); color:var(--muted); display:flex; flex-wrap:wrap; gap:6px 18px; }

/* ---- the slide-in panel (the one panel style): a sheet from the right on a desk, the whole screen on a phone */
#panel, .panel { position:fixed; top:0; right:0; height:100%; width:500px; max-width:100%; background:var(--paper); border-left:1px solid var(--line); box-shadow:var(--shadow); transform:translateX(100%); transition:transform .18s; z-index:50; overflow:auto; padding:var(--s-4); }
#panel.open, .panel.open { transform:none; }
#panel h3 { margin:0 0 var(--s-3); font-size:var(--fs-4); display:flex; align-items:center; } #panel h3 button { margin-left:auto; background:none; border:0; font-size:22px; cursor:pointer; color:var(--muted); min-height:0; padding:4px 8px; }
#panel h4 { margin:var(--s-4) 0 var(--s-1); font-size:var(--fs-2); border-top:1px solid var(--line); padding-top:var(--s-3); }
.types { display:flex; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom:var(--s-3); }
.types label { flex:1; text-align:center; padding:9px 4px; font-size:var(--fs-2); cursor:pointer; border-right:1px solid var(--line); } .types label:last-child { border-right:0; }
.types input { display:none; } .types input:checked + span { display:block; margin:-9px -4px; padding:9px 4px; background:var(--brand); color:#fff; font-weight:600; }
.confirm { border:1px solid var(--warn); background:var(--warn-bg); border-radius:var(--radius); padding:10px 12px; font-size:var(--fs-2); margin-top:var(--s-3); } .confirm button { margin:6px 6px 0 0; }

/* ---- page: entry (the keyer's grid — every key and focus unchanged) */
form.hdr { display:flex; flex-wrap:wrap; gap:14px 24px; align-items:end; padding:var(--s-3) var(--s-4); border:1px solid var(--line); border-radius:var(--radius); background:var(--soft); margin-bottom:var(--s-4); }
form.hdr label { display:grid; gap:4px; font-size:var(--fs-2); color:var(--muted); } form.hdr select, form.hdr input { font-size:var(--fs-3); color:var(--ink); }
form.hdr .hint { font-size:var(--fs-2); color:var(--muted); padding-bottom:9px; } form.hdr .rehearsal { font-size:var(--fs-1); color:var(--warn); font-weight:600; margin-left:auto; }
.datebox { position:relative; display:flex; gap:6px; align-items:center; } .datebox .field { position:relative; display:inline-block; }
.datebox input { width:10.5em; padding-right:2.2em; font-variant-numeric:tabular-nums; } .datebox .wd { font-size:var(--fs-2); color:var(--ink); min-width:2.2em; }
.datebox button.cal { position:absolute; right:6px; top:50%; transform:translateY(-50%); border:0; background:none; padding:2px; cursor:pointer; color:var(--muted); line-height:0; min-height:0; } .datebox button.cal:hover { color:var(--brand); }
.calpop { position:absolute; top:100%; left:0; z-index:6; background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:var(--s-2); width:19em; }
.calpop .dnav { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; font-weight:600; } .calpop .dnav button { border:0; background:none; cursor:pointer; font-size:16px; padding:2px 8px; min-height:0; }
.calpop table { width:100%; border-collapse:collapse; } .calpop th { font-size:var(--fs-1); color:var(--muted); font-weight:600; padding:2px; } .calpop td { text-align:center; padding:0; }
.calpop td button { width:100%; border:0; background:none; padding:6px 0; cursor:pointer; border-radius:4px; font-variant-numeric:tabular-nums; min-height:0; } .calpop td button:hover { background:var(--brand-tint); }
.calpop td button.sel { background:var(--brand); color:#fff; } .calpop td button.today { outline:1px solid var(--brand); } .calpop td button.other { color:#b8aeaa; }
.page-entry .search { position:relative; margin-bottom:var(--s-3); } .page-entry .search input { width:100%; padding:12px 14px; font-size:var(--fs-4); }
.page-entry .search ul { position:absolute; z-index:5; left:0; right:0; margin:0; padding:4px 0; list-style:none; background:var(--paper); border:1px solid var(--line); border-radius:0 0 var(--radius) var(--radius); box-shadow:var(--shadow); max-height:22em; overflow:auto; }
.page-entry .search li { padding:10px 14px; cursor:pointer; display:flex; gap:10px; align-items:center; min-height:48px; font-size:var(--fs-3); } .page-entry .search li.hi { background:var(--brand-tint); } .page-entry .search li .k { margin-left:auto; }
.page-entry table.lines td.n { width:2.2em; color:var(--muted); font-size:var(--fs-2); } .page-entry table.lines td.name { min-width:220px; }
.page-entry table.lines td.hrs { width:auto; white-space:nowrap; font-variant-numeric:tabular-nums; }
.page-entry table.lines input.t { width:6.2em; padding:8px; text-align:center; font-variant-numeric:tabular-nums; min-height:42px; }
.page-entry tr.line td.name { cursor:grab; } .page-entry tr.line.dragging { opacity:.4; } .page-entry tr.line.over td { border-top:2px solid var(--brand); }
.page-entry tr.line.cursor td.n { color:var(--brand); font-weight:700; } .page-entry tr.existing td { color:var(--muted); background:var(--soft); }
.page-entry tr.bad td.name .nm { color:var(--bad); } .page-entry tr.loud td.hrs .tag { font-weight:400; } .page-entry input.t.bad { border-color:var(--bad); }
.page-entry button.fix { border:1px solid var(--warn); background:var(--warn-bg); color:var(--warn); border-radius:10px; font-size:var(--fs-1); padding:1px 8px; margin-left:6px; cursor:pointer; min-height:0; }
.page-entry .foot { display:flex; align-items:center; gap:var(--s-4); margin-top:var(--s-4); flex-wrap:wrap; } .page-entry .foot .total { font-variant-numeric:tabular-nums; font-weight:600; }

/* ---- page: calendar (mobile-first: the list on a phone, the month on a desk; the modal is the whole screen on a phone) */
.page-calendar .wrap { display:flex; gap:var(--s-4); align-items:flex-start; }
.page-calendar aside.side { width:220px; flex:0 0 220px; font-size:var(--fs-2); }
.page-calendar aside.side h4 { margin:0 0 6px; font-size:var(--fs-1); color:var(--muted); text-transform:uppercase; letter-spacing:.04em; }
.page-calendar aside.side label { display:flex; gap:8px; align-items:center; margin:6px 0; cursor:pointer; min-height:28px; } .page-calendar aside.side .sw { width:10px; height:10px; border-radius:2px; display:inline-block; }
.page-calendar aside.side button { margin-top:var(--s-3); width:100%; }
.page-calendar #calendar { flex:1; min-width:0; }
.fc { font-size:var(--fs-2); --fc-border-color:var(--line-2); --fc-page-bg-color:var(--paper); --fc-neutral-bg-color:var(--soft); --fc-today-bg-color:var(--brand-tint); --fc-event-border-color:transparent; }
.fc .fc-toolbar-title { font-size:var(--fs-4); font-weight:650; } .fc .fc-toolbar.fc-header-toolbar { margin-bottom:var(--s-3); gap:var(--s-2); }
.fc .fc-button { font-size:var(--fs-2); padding:6px 10px; border-radius:var(--radius); text-transform:none; }
.fc .fc-button-primary { background:var(--paper); border-color:var(--line); color:var(--ink-2); } .fc .fc-button-primary:hover { background:var(--soft); color:var(--ink); }
.fc .fc-button-primary:not(:disabled).fc-button-active, .fc .fc-button-primary:not(:disabled):active { background:var(--brand); border-color:var(--brand); color:#fff; }
.fc .fc-button-primary:focus, .fc .fc-button-primary:not(:disabled).fc-button-active:focus { box-shadow:0 0 0 2px var(--brand-ring); }
.fc .fc-col-header-cell-cushion, .fc .fc-daygrid-day-number { color:var(--ink-2); text-decoration:none; padding:6px; }
.fc .fc-daygrid-day-frame { min-height:6em; } .fc .fc-daygrid-event { border-radius:4px; padding:2px 4px; font-weight:500; } .fc .fc-list-event td { padding:10px 12px; }
/* the three event kinds from the token set: VIP rides = brand, recurring majors = brand tint, standard = neutral; the wire colour is ignored */
.fc .fc-event.vip { background:linear-gradient(135deg, #f6c90e, #e0a800) !important; border-color:#c49000 !important; color:#1a1a1a !important; font-weight:700; box-shadow:0 2px 8px rgba(198,155,0,.35); }   /* prod's VIP Airport gold */
.fc .fc-event.vip .fc-event-title, .fc .fc-event.vip .fc-event-time { color:#1a1a1a; font-weight:700; }
.fc .fc-event.recurring, .fc .fc-event.standard { background:#fff !important; border:1px solid #3788d8 !important; color:#5e5873 !important; font-weight:600; }   /* prod: every other location is white */
.fc .fc-event.recurring .fc-event-title, .fc .fc-event.standard .fc-event-title, .fc .fc-event.recurring .fc-event-time, .fc .fc-event.standard .fc-event-time { color:#5e5873; }
.page-calendar .fc-daygrid-block-event .fc-event-time { flex:none; overflow:visible; }   /* a timed ride shows its WHOLE pickup time in a month cell; the title takes the cut */
.page-calendar .fc-daygrid-block-event .fc-event-title { overflow:hidden; text-overflow:ellipsis; }
.fc .fc-list-event-dot { display:none; }
.page-calendar aside.side .sw { background:var(--soft-2); } .page-calendar aside.side .sw.vip { background:linear-gradient(135deg, #f6c90e, #e0a800); border:1px solid #c49000; } .page-calendar aside.side .sw.rec, .page-calendar aside.side .sw.std { background:#fff; border:1px solid #3788d8; }
.fc-event.hi { border:2px solid #ea5455 !important; box-shadow:0 2px 8px rgba(234,84,85,.45) !important; font-weight:700; }   /* prod's high importance: the red edge and the flag */ .fc-event.hi .fc-event-title:before { content:"⚠ "; }
.fc-event.acked .fc-event-title:after { content:" ✓"; } .fc-event.escalated .fc-event-title:after { content:" ‼"; color:var(--bad); }
.fc .fc-list-day-cushion { background:var(--soft); }

/* ---- per-line actions (review: change employee, delete; entry: remove): icons only, at the far RIGHT, quiet until the row is
   hovered or focused — the eye stays on name · in · out · hours · advance (UI pass item 5) */
table.lines td.acts { width:1%; white-space:nowrap; text-align:right; padding-right:4px; }
table.lines td.acts button { border:0; background:none; color:var(--muted); cursor:pointer; padding:4px; min-height:0; opacity:.22; display:inline-flex; align-items:center; vertical-align:middle; border-radius:4px; transition:opacity .12s; }
table.lines td.acts button svg { width:18px; height:18px; }
table.lines tr:hover td.acts button, table.lines tr:focus-within td.acts button, table.lines tr.gone td.acts button { opacity:1; }
table.lines td.acts button.x:hover { color:var(--bad); background:var(--soft); }
table.lines td.acts button.chg:hover { color:var(--brand); background:var(--brand-tint); }
table.lines tr.gone td.acts { width:auto; } table.lines td.acts input.reason { width:14em; margin-right:6px; }
.page-locations .bar .filters { margin-right:12px; } .page-locations .bar .filters label { margin-right:10px; cursor:pointer; }
.page-month-end section#step6 .body { padding:12px; }

/* ---- phone: calendar and the reports list are designed for it; everything else must not break */
@media (max-width: 767px) {
  #panel, .panel { width:100%; border-left:0; padding:var(--s-4) var(--s-4) 96px; }
  .page-calendar .wrap { flex-direction:column; } .page-calendar aside.side { width:100%; flex:none; order:2; margin-top:var(--s-4); }
  .page-calendar aside.side button#add { position:fixed; right:var(--s-4); bottom:72px; z-index:41; width:auto; margin:0; box-shadow:var(--shadow); border-radius:22px; padding:10px 18px; }
  .page-calendar aside.side .filters { display:flex; flex-wrap:wrap; gap:4px 14px; } .page-calendar aside.side button { width:auto; }
  .page-calendar .fc .fc-toolbar.fc-header-toolbar { flex-wrap:wrap; } .page-calendar .fc .fc-toolbar-title { font-size:var(--fs-3); }
  .row2 { flex-direction:column; align-items:stretch; }
  .page-entry table.lines td.name { min-width:0; } .page-entry .keys { display:none; }
  table.list td, table.lines td { padding:8px 6px; }
}

/* ---- print: one family for the sheet, the payroll card and the month-end cards */
@page { margin:14mm 12mm 16mm; @bottom-right { content:"Page " counter(page); font:10px -apple-system, "Segoe UI", Roboto, sans-serif; color:#666; } }
@media print {
  .layout-menu, .layout-navbar, .menu, .print-hide, nav, .tag, .badge, .btns, .btn, button, .keys, .banner, .flash, #panel, .panel, aside.side, .search, .no-print { display:none !important; }
  body { display:block; font-size:11px; color:#000; background:#fff; }
  .layout-wrapper, .layout-container, .layout-page, .content-wrapper, .container-xxl { display:block !important; padding:0 !important; margin:0 !important; max-width:none !important; }
  .print-head { display:flex; justify-content:space-between; align-items:baseline; border-bottom:1px solid #000; padding-bottom:4px; margin-bottom:10px; font-size:12px; }
  .print-head b { font-size:14px; } .print-foot { position:fixed; bottom:0; left:0; right:0; font-size:9px; color:#666; text-align:right; }
  table { page-break-inside:auto; } tr { page-break-inside:avoid; } .card { border:0; padding:0; page-break-inside:auto; }
  .num, .money, td { font-variant-numeric:tabular-nums; }
  /* the Vuexy rebase broke print on every page (found 2026-09-24): the theme sizes .layout-page by flex (inline-size:0 + flex-basis:100%),
     so once the wrappers are display:block it collapses to ZERO width; the navbar also carries .container-xxl, whose display:block above
     overrode its display:none; the theme's padding-top:56px !important on .layout-page outranks the padding:0 above */
  body .layout-content-navbar .layout-page { inline-size:auto !important; width:auto !important; min-inline-size:0 !important; padding-top:0 !important; }
  body nav.layout-navbar, body .layout-navbar.container-xxl { display:none !important; }
  body .layout-page::before, body .content-backdrop { display:none !important; }   /* the sticky navbar's fixed backdrop would wash out the top of every printed page */
  .page-analytics details.an-sec > summary b, .page-analytics details.an-sec > summary span { color:#000 !important; }
}
@media screen { .print-head, .print-foot { display:none; } }

/* ---- shared by the list pages: the scope form (location · month), the tabs, the keys line, the new-report link */
form.scope { display:flex; gap:var(--s-3) var(--s-4); align-items:end; flex-wrap:wrap; margin-bottom:var(--s-3); }
form.scope label { display:flex; flex-direction:column; gap:4px; font-size:var(--fs-2); color:var(--muted); } form.scope select { min-width:12em; }

.tabs { display:flex; gap:var(--s-4); font-size:var(--fs-2); margin-bottom:var(--s-3); border-bottom:1px solid var(--line); }
.tabs a { padding:8px 2px; color:var(--muted); text-decoration:none; border-bottom:2px solid transparent; } .tabs a.on { color:var(--brand); border-bottom-color:var(--brand); font-weight:650; }
details.keys summary { cursor:pointer; list-style:none; display:inline-flex; gap:8px; align-items:center; color:var(--muted); } details.keys summary::-webkit-details-marker { display:none; }
details.keys[open] summary { margin-bottom:8px; } details.keys > span { display:block; margin:2px 0; }

/* ---- page: reports (moved in from the blade) */
.page-reports table.list tr.day th { background:var(--soft); color:var(--ink); font-size:var(--fs-2); padding:6px 8px; border-bottom:1px solid var(--line); }
.page-reports table.list td.loc a { color:var(--brand); text-decoration:none; font-weight:600; }


/* ---- page: report (moved in from the blade) */
.page-report h2 { margin:0 0 4px; font-size:var(--fs-4); }
.page-report .meta { font-size:var(--fs-2); color:var(--muted); margin-bottom:10px; display:flex; gap:18px; flex-wrap:wrap; }
.page-report .actions { display:flex; gap:14px; align-items:center; flex-wrap:wrap; font-size:var(--fs-2); margin:0 0 12px; }
.page-report .actions a { color:var(--brand); text-decoration:none; }
.page-report .actions span.off { color:var(--muted); }
.page-report .actions a.btn, .page-report .actions button { border:1px solid var(--line); border-radius:4px; padding:5px 12px; cursor:pointer; color:var(--ink); background:#fff; font-size:var(--fs-2); }
.page-report .actions a.btn.primary, .page-report .actions button.primary { background:var(--brand); color:#fff; border-color:var(--brand); font-weight:600; }
.page-report table.lines { width:100%; border-collapse:collapse; }
.page-report table.lines th { text-align:left; font-size:var(--fs-1); color:var(--muted); font-weight:600; padding:4px 8px; border-bottom:1px solid var(--line); }
.page-report table.lines td { padding:5px 8px; border-bottom:1px solid var(--line-2); vertical-align:middle; }
.page-report table.lines td.n { width:2.2em; color:var(--muted); font-size:var(--fs-2); }
.page-report table.lines td.t, .page-report table.lines td.num { font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-report table.lines td.num { text-align:right; }
.page-report table.lines tr.loud td { background:var(--bad-bg); }
.page-report table.lines tr.loud td.hrs { color:var(--bad); font-weight:700; }
.page-report table.lines tr.total td { font-weight:700; border-top:2px solid var(--line); }
.page-report details.del { font-size:var(--fs-2); }
.page-report details.del summary { cursor:pointer; color:var(--bad); }
.page-report details.del form { display:flex; gap:8px; align-items:center; margin-top:6px; }
.page-report details.del input { padding:4px 8px; border:1px solid var(--line); border-radius:4px; width:22em; }
.page-report details.del button { background:var(--bad); color:#fff; border:0; border-radius:4px; padding:5px 10px; cursor:pointer; }
@media print {
.page-report header.top, .page-report .actions, .page-report .keys, .page-report .flash, .page-report .banner, .page-report details.del { display:none !important; }
.page-report main { padding:0; max-width:none; }
.page-report body { font-size:var(--fs-1); }
.page-report table.lines { page-break-inside:avoid; }
.page-report table.lines td, .page-report table.lines th { padding:3px 6px; }
.page-report tr.loud td { background:none !important; }
}

/* ---- page: review (moved in from the blade) */
.page-review table.lines { width:100%; border-collapse:collapse; }
.page-review table.lines th { text-align:left; font-size:var(--fs-1); color:var(--muted); font-weight:600; padding:4px 8px; border-bottom:1px solid var(--line); }
.page-review table.lines td { padding:4px 8px; border-bottom:1px solid var(--line-2); vertical-align:middle; }
.page-review table.lines td.n { width:2.2em; color:var(--muted); font-size:var(--fs-2); }
.page-review table.lines td.name { min-width:220px; }
.page-review table.lines td.hrs { white-space:nowrap; font-variant-numeric:tabular-nums; }
.page-review table.lines input.t { width:6.2em; padding:6px 8px; text-align:center; font-variant-numeric:tabular-nums; }
.page-review table.lines input.adv { width:6.5em; padding:6px 8px; text-align:right; font-variant-numeric:tabular-nums; }
.page-review table.lines td .cur { color:var(--muted); font-size:var(--fs-1); margin-right:2px; }
.page-review table.lines input.reason { width:18em; padding:6px 8px; }
.page-review tr.line:not(.edited) input.t, .page-review tr.line:not(.edited) input.adv { border-color:transparent; background:transparent; }
.page-review tr.line:not(.edited) input.t:focus, .page-review tr.line:not(.edited) input.adv:focus { border-color:var(--brand); background:#fff; }
.page-review tr.line.edited td { background:var(--warn-bg); }
.page-review tr.line.gone td { background:var(--bad-bg); color:var(--muted); }
.page-review tr.line.gone input.t, .page-review tr.line.gone input.adv { text-decoration:line-through; }
.page-review tr.loud td { background:var(--bad-bg); }
.page-review tr.loud td.hrs { color:var(--bad); font-weight:700; }
.page-review tr.loud td.hrs .tag { font-weight:400; }
.page-review tr.bad td.name .nm { color:var(--bad); }
.page-review input.t.bad, .page-review input.adv.bad, .page-review input.reason.bad { border-color:var(--bad); }
.page-review button.fix { border:1px solid var(--warn); background:var(--warn-bg); color:var(--warn); border-radius:10px; font-size:var(--fs-1); padding:1px 8px; margin-left:6px; cursor:pointer; }
.page-review .pick { position:relative; display:inline-block; }
.page-review .pick input { width:16em; padding:5px 8px; }
.page-review .pick ul { position:absolute; z-index:5; left:0; margin:0; padding:4px 0; list-style:none; background:#fff; border:1px solid var(--line); border-radius:0 0 6px 6px; box-shadow:0 6px 16px rgba(0,0,0,.08); min-width:16em; }
.page-review .pick li { padding:5px 10px; cursor:pointer; }
.page-review .pick li.hi { background:var(--brand-tint); }
.page-review .foot { display:flex; align-items:center; gap:16px; margin-top:12px; flex-wrap:wrap; }
.page-review .foot .total { font-variant-numeric:tabular-nums; }
.page-review .dnav { display:flex; gap:10px; font-size:var(--fs-2); align-items:center; padding-bottom:7px; }
.page-review .dnav a { color:var(--brand); text-decoration:none; }
.page-review .dnav span.off { color:var(--muted); }
.page-review .dnav .kbd { margin-left:2px; }

/* ---- page: payroll (moved in from the blade) */
.page-payroll .before { border:1px solid var(--line); border-left:4px solid var(--warn); background:var(--soft); padding:8px 12px; margin-bottom:14px; }
.page-payroll .before h3 { margin:0 0 4px; font-size:var(--fs-2); }
.page-payroll .before ul { margin:0; padding-left:18px; font-size:var(--fs-2); }
.page-payroll .before a { color:var(--brand); }
.page-payroll .periods { display:inline-flex; border:1px solid var(--line); border-radius:4px; overflow:hidden; }
.page-payroll .periods a { padding:6px 10px; font-size:var(--fs-2); color:var(--ink); text-decoration:none; border-right:1px solid var(--line); }
.page-payroll .periods a:last-child { border-right:0; }
.page-payroll .periods a.on { background:var(--brand); color:#fff; }
.page-payroll .hint a { color:var(--brand); }
.page-payroll table.pay { width:100%; border-collapse:collapse; }
.page-payroll table.pay th { text-align:left; font-size:var(--fs-1); color:var(--muted); font-weight:600; padding:4px 8px; border-bottom:1px solid var(--line); }
.page-payroll table.pay td { padding:6px 8px; border-bottom:1px solid var(--line-2); vertical-align:top; }
.page-payroll table.pay td.n { width:2.2em; color:var(--muted); font-size:var(--fs-2); }
.page-payroll table.pay td.tick { width:2em; }
.page-payroll table.pay td.tick input { width:16px; height:16px; cursor:pointer; }
.page-payroll table.pay td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-payroll table.pay td.hours { font-weight:700; font-size:var(--fs-3); }
.page-payroll table.pay td.gross { color:var(--muted); }
.page-payroll table.pay button.nm { background:none; border:0; padding:0; font:inherit; font-weight:600; color:var(--brand); cursor:pointer; text-align:left; }
.page-payroll table.pay tr.rec.done td { color:var(--muted); }
.page-payroll table.pay tr.rec.done td.hours { font-weight:400; }
.page-payroll table.pay tr.rec.done button.nm { color:var(--muted); }
.page-payroll .hint a.sel { margin-left:4px; }
.page-payroll tr.card { display:none; }
.page-payroll .cardhead { font-size:var(--fs-3); font-weight:700; margin-bottom:2px; }
.page-payroll .cardhead small { font-weight:400; color:#444; margin-left:8px; }
.page-payroll .cardnums { margin:2px 0 8px; }
.page-payroll .cardnums b { font-size:var(--fs-3); }
.page-payroll .cardweeks { margin-top:8px; }
.page-payroll .cardweeks .wk { white-space:normal; }
.page-payroll .wk { display:block; font-size:var(--fs-1); color:var(--ink); white-space:nowrap; }
.page-payroll .wk b { font-variant-numeric:tabular-nums; }
.page-payroll .wk .ext { color:var(--muted); }
.page-payroll tr.detail td { background:var(--soft); padding:6px 12px 10px; }
.page-payroll table.det { border-collapse:collapse; font-size:var(--fs-1); }
.page-payroll table.det td, .page-payroll table.det th { padding:2px 8px; text-align:left; }
.page-payroll table.det td.num { text-align:right; font-variant-numeric:tabular-nums; }
.page-payroll table.det tr.nightrow td.hrs:after { content:" · overnight"; color:var(--muted); }
.page-payroll table.pay tr.total td { font-weight:700; border-top:2px solid var(--line); }
.page-payroll .actions { display:flex; gap:14px; align-items:center; font-size:var(--fs-2); margin:12px 0; }
.page-payroll .actions button { border:1px solid var(--line); border-radius:4px; padding:5px 12px; cursor:pointer; background:#fff; font-size:var(--fs-2); }
.page-payroll .actions button.primary { background:var(--brand); color:#fff; border-color:var(--brand); font-weight:600; }
@media print {
.page-payroll header.top, .page-payroll .before, .page-payroll form.scope, .page-payroll .actions, .page-payroll .banner, .page-payroll .flash, .page-payroll td.tick, .page-payroll th.tick, .page-payroll .hint a, .page-payroll td.rvlinks, .page-payroll th.rvlinks { display:none !important; }
.page-payroll main { padding:0; max-width:none; }
.page-payroll body { font-size:var(--fs-1); }
.page-payroll tr.detail { display:none; }
.page-payroll table.pay tr.rec.done td { color:inherit; }
.page-payroll table.pay tr.rec.done td.hours { font-weight:700; }
.page-payroll table.pay { page-break-inside:auto; }
.page-payroll table.pay tr { page-break-inside:avoid; }
.page-payroll table.pay.sel thead, .page-payroll table.pay.sel tr.rec, .page-payroll table.pay.sel tr.detail, .page-payroll table.pay.sel tr.total, .page-payroll #progress { display:none !important; }
.page-payroll table.pay.sel tr.card.done { display:table-row; page-break-inside:auto; }
.page-payroll table.pay.sel tr.card.done ~ tr.card.done { page-break-before:always; }
.page-payroll table.det tr { page-break-inside:avoid; }
.page-payroll tr.card td { padding:0 0 12px; }
.page-payroll tr.detail.open { display:table-row; }
.page-payroll tr.detail td { background:none; }
}

/* ---- page: month-end (moved in from the blade) */
.page-month-end section.step { border:1px solid var(--line); border-radius:6px; margin:0 0 14px; }
.page-month-end section.step > h2 { margin:0; font-size:var(--fs-3); padding:8px 12px; background:var(--soft); border-bottom:1px solid var(--line); display:flex; gap:10px; align-items:baseline; }
.page-month-end section.step > h2 .n { font-size:var(--fs-1); color:var(--muted); font-weight:400; }
.page-month-end section.step > h2 .cnt { margin-left:auto; font-size:var(--fs-2); font-weight:400; color:var(--muted); }
.page-month-end section.step > h2 .cnt.zero { color:var(--ok); }
.page-month-end section.step > h2 .cnt.some { color:var(--bad); }
.page-month-end section.step .body { padding:8px 12px; font-size:var(--fs-2); }
.page-month-end section.step .rule { color:var(--muted); font-size:var(--fs-1); margin-bottom:6px; }
.page-month-end table.t { border-collapse:collapse; width:100%; font-size:var(--fs-2); }
.page-month-end table.t th { text-align:left; font-size:var(--fs-1); color:var(--muted); font-weight:600; padding:3px 8px; border-bottom:1px solid var(--line); }
.page-month-end table.t td { padding:3px 8px; border-bottom:1px solid var(--line-2); vertical-align:top; }
.page-month-end table.t td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-month-end table.t a { color:var(--brand); text-decoration:none; }
.page-month-end .fixlink { display:inline-block; margin:1px 6px 1px 0; padding:1px 7px; border:1px solid var(--line); border-radius:10px; font-size:var(--fs-1); color:var(--brand); text-decoration:none; }
.page-month-end .fixlink:hover { border-color:var(--brand); }
.page-month-end .ok { color:var(--ok); }
.page-month-end tr.hi td { background:var(--bad-bg); }
.page-month-end .himark { color:var(--bad); }
.page-month-end .client { border:1px solid var(--line); border-radius:6px; margin:0 0 14px; }
.page-month-end .client > h3 { margin:0; font-size:var(--fs-3); padding:8px 12px; background:var(--soft); border-bottom:1px solid var(--line); display:flex; gap:12px; align-items:baseline; }
.page-month-end .client > h3 small { font-weight:400; color:var(--muted); }
.page-month-end .client > h3 .tot { margin-left:auto; font-weight:700; }
.page-month-end .client .body { padding:8px 12px; font-size:var(--fs-2); }
.page-month-end .inv { margin:6px 0 10px; }
.page-month-end .inv h4 { margin:0 0 4px; font-size:var(--fs-2); }
.page-month-end .inv table.t td.raw { color:var(--muted); font-size:var(--fs-1); }
.page-month-end .needs { border-left:4px solid var(--warn); background:var(--warn-bg); padding:6px 10px; margin:8px 0; }
.page-month-end .needs b { color:var(--warn); }
.page-month-end .keyed { border-left:4px solid var(--ok); background:var(--ok-bg); padding:6px 10px; margin:8px 0; }
.page-month-end details.inp { margin:6px 0; border:1px solid var(--line); border-radius:4px; padding:4px 10px; }
.page-month-end details.inp summary { cursor:pointer; font-weight:600; font-size:var(--fs-2); }
.page-month-end details.inp form { display:flex; gap:8px; flex-wrap:wrap; align-items:end; margin:6px 0; }
.page-month-end details.inp label { display:flex; flex-direction:column; gap:2px; font-size:var(--fs-1); color:var(--muted); }
.page-month-end details.inp input, .page-month-end details.inp select { padding:4px 6px; border:1px solid var(--line); border-radius:4px; font-size:var(--fs-2); }
.page-month-end details.inp input.short { width:7em; }
.page-month-end details.inp input.mid { width:12em; }
.page-month-end details.inp input.wide { width:20em; }
.page-month-end details.inp button { background:var(--brand); color:#fff; border:0; border-radius:4px; padding:5px 10px; cursor:pointer; font-size:var(--fs-2); }
.page-month-end details.inp button.quiet { background:none; color:var(--bad); border:1px solid var(--line); }
.page-month-end .margin { font-size:var(--fs-2); color:var(--muted); margin-top:6px; }
.page-month-end .actions { display:flex; gap:14px; align-items:center; font-size:var(--fs-2); margin:10px 0; }
.page-month-end .actions button { border:1px solid var(--line); border-radius:4px; padding:5px 12px; cursor:pointer; background:#fff; font-size:var(--fs-2); }
.page-month-end .actions button.primary { background:var(--brand); color:#fff; border-color:var(--brand); font-weight:600; }
.page-month-end .msg { font-size:var(--fs-1); color:var(--ok); margin-left:8px; }
.page-month-end .msg.bad { color:var(--bad); }
@media print {
.page-month-end header.top, .page-month-end form.scope, .page-month-end .actions, .page-month-end .banner, .page-month-end .flash, .page-month-end section.step, .page-month-end details.inp, .page-month-end .needs, .page-month-end .keyed, .page-month-end .fixlink { display:none !important; }
.page-month-end main { padding:0; max-width:none; }
.page-month-end body { font-size:var(--fs-1); }
.page-month-end .client { border:0; page-break-inside:auto; }
.page-month-end .client ~ .client { page-break-before:always; }
.page-month-end .inv { page-break-inside:avoid; }
}

/* ---- page: employees (moved in from the blade) */
.page-employees .bar .filters label { margin-right:10px; cursor:pointer; }
.page-employees .bar input[type=search] { padding:6px 8px; border:1px solid var(--line); border-radius:4px; min-width:16em; }
.page-employees .bar a { color:var(--brand); text-decoration:none; }
.page-employees table.list td:nth-child(3), .page-employees table.list td:nth-child(6), .page-employees table.list td:nth-child(7) { white-space:nowrap; }
@media (max-width: 767px) {
.page-employees table.list th:nth-child(2), .page-employees table.list td:nth-child(2), .page-employees table.list th:nth-child(4), .page-employees table.list td:nth-child(4), .page-employees table.list th:nth-child(6), .page-employees table.list td:nth-child(6), .page-employees table.list th:nth-child(7), .page-employees table.list td:nth-child(7) { display:none; }
}

/* ---- page: locations (moved in from the blade) */
.page-locations .feed { font-size:var(--fs-1); color:var(--muted); }
.page-locations .feed b { color:var(--ink); }
.page-locations .note { font-size:var(--fs-1); color:var(--muted); background:var(--soft); border-radius:4px; padding:6px 8px; margin-top:6px; }
.page-locations .note a { color:var(--brand); }

/* ---- page: billing (moved in from the blade) */
.page-billing .wrap { display:flex; gap:16px; align-items:flex-start; }
.page-billing aside.rail { width:230px; flex:0 0 230px; font-size:var(--fs-2); }
.page-billing aside.rail a.client { display:block; padding:8px 10px; border:1px solid var(--line); border-radius:6px; margin-bottom:6px; color:var(--ink); text-decoration:none; }
.page-billing aside.rail a.client.sel { border-color:var(--brand); background:var(--soft); }
.page-billing aside.rail a.client b { display:block; }
.page-billing aside.rail a.client span { color:var(--muted); font-size:var(--fs-1); }
.page-billing aside.rail button { width:100%; margin-top:6px; }
.page-billing .chead { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.page-billing .chead h2 { margin:0; font-size:var(--fs-4); }
.page-billing .chead .facts { color:var(--muted); font-size:var(--fs-2); }
.page-billing .chead a { color:var(--brand); font-size:var(--fs-2); }
.page-billing .btns button, .page-billing button.b { padding:7px 12px; border-radius:4px; border:1px solid var(--line); background:#fff; cursor:pointer; font-size:var(--fs-2); }
.page-billing button.primary, .page-billing .btns button.primary { background:var(--brand); color:#fff; border-color:var(--brand); font-weight:600; }
.page-billing .preview { border:1px solid var(--line); border-radius:6px; padding:8px 12px; font-size:var(--fs-2); margin-top:12px; }
.page-billing .preview h4 { margin:0 0 6px; font-size:var(--fs-2); }
.page-billing .preview table { border-collapse:collapse; width:100%; font-size:var(--fs-1); }
.page-billing .preview td { padding:2px 4px; border-bottom:1px solid var(--line-2); }
.page-billing .preview td.num { text-align:right; white-space:nowrap; }
.page-billing .row3 .f { flex:1; }
@media (max-width: 767px) {
.page-billing .wrap { flex-direction:column; }
.page-billing aside.rail { width:100%; flex:none; }
}

/* ---- page: audit (moved in from the blade) */
.page-audit table.list td.when { white-space:nowrap; color:var(--muted); }
.page-audit table.list td.who { white-space:nowrap; font-weight:600; }
.page-audit table.list td.what a { color:var(--brand); text-decoration:none; }
.page-audit .diff { font-size:var(--fs-1); color:var(--muted); margin-top:3px; }
.page-audit .diff div { white-space:pre-wrap; }
.page-audit .diff b { color:var(--ink); font-weight:600; }
.page-audit .diff .arrow { color:var(--muted); }
.page-audit .pager { display:flex; gap:12px; margin-top:12px; font-size:var(--fs-2); }
.page-audit .pager a { color:var(--brand); }

/* ---- page: settings (moved in from the blade) */
.page-settings table.list td a { color:var(--brand); text-decoration:none; }
.page-settings .f input, .page-settings .f select { padding:6px 8px; border:1px solid var(--line); border-radius:4px; font: inherit; font-size:var(--fs-2); color:var(--ink); }
.page-settings .temp { border:1px solid var(--warn); background:var(--warn-bg); border-radius:4px; padding:10px 12px; margin-top:8px; font-size:var(--fs-2); }
.page-settings .temp code { font: 16px ui-monospace, monospace; background:#fff; padding:2px 6px; border:1px solid var(--line); border-radius:3px; }

/* ---- analytics (the old app's first tab, restored): cards for the month, the year by client and by location with the prior year beside */
.page-analytics form.scope { display:flex; gap:var(--s-4); align-items:flex-end; flex-wrap:wrap; margin-bottom:var(--s-3); }
.page-analytics form.scope .muted { font-size:var(--fs-1); flex-basis:100%; }
.page-analytics table.grid td.neg b { color:var(--bad); }
.page-analytics .py { display:block; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; white-space:nowrap; font-weight:400; }
.page-analytics h2 { font-size:var(--fs-3); margin:var(--s-5) 0 var(--s-2); }
.page-analytics .scroll { overflow-x:auto; }
.page-analytics table.grid { border-collapse:collapse; width:100%; font-size:12px; }
.page-analytics table.grid th { text-align:right; font-weight:600; color:var(--muted); padding:6px 5px; border-bottom:1px solid var(--line); white-space:nowrap; text-transform:uppercase; letter-spacing:.03em; font-size:12px; }
.page-analytics table.grid th:first-child, .page-analytics table.grid td:first-child { text-align:left; white-space:normal; max-width:170px; }
.page-analytics table.grid td { text-align:right; padding:5px 4px; border-bottom:1px solid var(--line-2); font-variant-numeric:tabular-nums; vertical-align:top; white-space:nowrap; }
.page-analytics table.grid td.nr b { color:var(--muted); font-weight:500; font-style:italic; }
.page-analytics table.grid td.prior { color:var(--muted); }
.page-analytics table.grid td.empty { color:var(--line); }
.page-analytics table.grid tr.total td { font-weight:700; border-top:2px solid var(--line); }
.page-analytics table.grid tr.unattr td { color:var(--muted); font-style:italic; }
.page-analytics table.grid td .held { display:block; color:var(--warn); font-size:11px; }
.page-analytics table.grid.emp th, .page-analytics table.grid.emp td { font-size:var(--fs-2); }
.page-analytics table.grid td.py { vertical-align:top; }
.page-analytics .note { color:var(--muted); font-size:var(--fs-1); margin:6px 0 0; }
@media print {
  .page-analytics form.scope, .page-analytics .banner { display:none !important; }
  .page-analytics .kpi-card .kpi-held { display:block; }
  .page-analytics table.grid { font-size:9px; } .page-analytics table.grid th, .page-analytics table.grid td { padding:3px 2px; }
  .page-analytics section { page-break-inside:avoid; }
}

/* ---- on the theme: a few widths the theme's full-width controls would otherwise take */
.bar .form-control, .bar .form-select, form.scope .form-control, form.scope .form-select, form.hdr .form-select, form.hdr .form-control { width:auto; display:inline-block; }
.page-review input.adv, .page-entry input.t, .page-review input.t, .page-review input.reason { display:inline-block; }
.page-review input.adv { width:7em; } .page-review input.reason { width:14em; }
.page-reports form.scope { margin-bottom:var(--s-3); }
.btn .icon-base { vertical-align:-3px; }
/* ---- the page card (prod: one card per page, a titled header) */
.card.sv-page { padding:0; } .card.sv-page > .card-header.sv-head { border-bottom:1px solid var(--line); padding:14px 24px; } .card.sv-page > .card-header .icon-base { font-size:1.25rem; }
.card.sv-page > .card-body { padding:20px 24px 24px; }
.card.sv-page .alert:first-child { margin-top:0; }
@media print { .card.sv-page { box-shadow:none !important; border:0 !important; } .card.sv-page > .card-header.sv-head { display:none !important; } .card.sv-page > .card-body { padding:0 !important; } }
/* ---- prod's holidays (display only): the orange federal tint, the red cultural tint, readable labels */
.page-calendar .fc .fc-bg-event { opacity:1 !important; }
.page-calendar .fc .fc-bg-event .fc-event-title { padding-left:24px !important; font-size:.92rem !important; font-weight:600 !important; opacity:.85 !important; font-style:italic; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; max-width:100% !important; }
.page-calendar .fc .fc-bg-event.us-holiday .fc-event-title { color:rgb(140, 60, 15) !important; }
.page-calendar .fc .fc-bg-event.business-holiday .fc-event-title { color:rgb(140, 20, 20) !important; }

/* ---- shadow (Phase E): the morning report + the banner on every page ---- */
.shadow-banner { margin-bottom:var(--s-3); }
.page-shadow h5 { margin:var(--s-5) 0 var(--s-2); }
.page-shadow table.kv th { width:9rem; white-space:nowrap; color:var(--muted); font-weight:600; }
.page-shadow table.list th.num, .page-shadow table.list td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-shadow details summary { cursor:pointer; color:var(--brand); margin:var(--s-2) 0; }

/* ---- analytics DASHBOARD (numbers only, operator 2026-09-24): prod's statistics cards — the grey uppercase label, the heavy number,
   the tinted icon tile per figure (billed cyan, labor red, margin green, margin % orange, hours purple, workforce the brand) ---- */
.page-analytics .an-sub { color:var(--muted); font-size:var(--fs-1); margin:0 0 var(--s-3); }
.page-analytics .kpi-card, .page-analytics .client-card, .page-analytics #ranking, .page-analytics #ytd, .page-analytics #monthly-summary { padding:0; }   /* the site's .card padding would double the kit's card-body gutter */
.page-analytics .kpi-card .card-body { padding:14px 16px; }
.page-analytics .client-card .card-body, .page-analytics #ranking > .card-body, .page-analytics #ytd > .card-body { padding:16px 20px; }
.page-analytics .kpi-top { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; margin-bottom:8px; }
.page-analytics .kpi-label { font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; font-weight:700; color:var(--muted); margin:0 0 4px; }
.page-analytics .kpi-val { font-weight:800; font-size:1.35rem; color:#5e5873; margin:0; white-space:nowrap; font-variant-numeric:tabular-nums; }
.page-analytics .kpi-val.neg, .page-analytics .ytd-val.neg, .page-analytics td.v.neg, .page-analytics .rank .v.neg { color:var(--bad); }
.page-analytics .kpi-val .nr, .page-analytics .ytd-val .nr, .page-analytics td.v .nr { font-size:.95rem; font-weight:600; font-style:italic; color:var(--muted); }
.page-analytics .kpi-of { font-size:.75rem; color:var(--muted); margin:2px 0 0; }
.page-analytics .kpi-tile { width:42px; height:42px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.page-analytics .kpi-tile .ti { font-size:20px; width:20px; height:20px; }
.page-analytics .t-billed { background:rgba(0,207,232,.12); color:#00a5ba; }
.page-analytics .t-labor { background:rgba(234,84,85,.10); color:#ea5455; }
.page-analytics .t-margin { background:rgba(40,199,111,.12); color:#1f9d57; }
.page-analytics .t-margin_pct { background:rgba(255,159,67,.14); color:#e0801f; }
.page-analytics .t-hours { background:rgba(115,103,240,.12); color:#7367f0; }
.page-analytics .t-workforce { background:rgba(140,12,4,.08); color:var(--brand); }
.page-analytics .kpi-cmp { font-size:.78rem; color:var(--muted); margin:2px 0 0; white-space:nowrap; }
.page-analytics .chg { font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-analytics .chg.up { color:var(--ok); } .page-analytics .chg.down { color:var(--bad); } .page-analytics .chg.flat, .page-analytics .chg.none { color:var(--muted); font-weight:600; }
.page-analytics .kpi-held { font-size:.72rem; color:var(--warn); margin:6px 0 0; font-weight:600; }
.page-analytics .an-note { margin:-6px 0 var(--s-4); }
.page-analytics h5.an-h { font-size:1rem; font-weight:700; margin:0 0 10px; } .page-analytics h5.an-h span { font-weight:500; color:var(--muted); font-size:.85rem; }
.page-analytics .client-name { font-weight:700; color:#5e5873; margin:0 0 8px; }
.page-analytics table.client-figs { width:100%; border-collapse:collapse; }
.page-analytics table.client-figs th { font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:700; padding:5px 0; width:34%; }
.page-analytics table.client-figs td { padding:5px 0; border-top:1px solid var(--line-2); font-variant-numeric:tabular-nums; }
.page-analytics table.client-figs th { border-top:1px solid var(--line-2); } .page-analytics table.client-figs tr:first-child > * { border-top:0; }
.page-analytics table.client-figs td.v { font-weight:700; color:#5e5873; text-align:right; padding-right:12px; white-space:nowrap; }
.page-analytics table.client-figs td.c { text-align:right; font-size:.8rem; width:24%; }
.page-analytics ol.rank { list-style:none; padding:0; margin:0; }
.page-analytics ol.rank li { display:grid; grid-template-columns:28px 1fr auto auto 76px; gap:12px; align-items:center; padding:7px 0; border-top:1px solid var(--line-2); }
.page-analytics ol.rank li:first-child { border-top:0; }
.page-analytics ol.rank .n { width:24px; height:24px; border-radius:6px; background:var(--soft); color:var(--muted); font-size:.75rem; font-weight:700; display:flex; align-items:center; justify-content:center; }
.page-analytics ol.rank .name { font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.page-analytics ol.rank li.unattr .name { font-style:italic; color:var(--muted); font-weight:500; }
.page-analytics ol.rank .v { font-weight:700; color:#5e5873; text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.page-analytics ol.rank .share { color:var(--muted); font-size:.78rem; text-align:right; white-space:nowrap; }
.page-analytics ol.rank .c { text-align:right; font-size:.8rem; }
.page-analytics .show-all { margin-top:8px; }
.page-analytics .ytd-strip { display:grid; grid-template-columns:repeat(3, 1fr); border:1px solid var(--line-2); border-radius:8px; overflow:hidden; }
.page-analytics .ytd-cell { padding:12px 14px; border-right:1px solid var(--line-2); border-bottom:1px solid var(--line-2); }
.page-analytics .ytd-cell:nth-child(3n) { border-right:0; } .page-analytics .ytd-cell:nth-last-child(-n+3) { border-bottom:0; }
.page-analytics .ytd-val { font-weight:800; font-size:1.15rem; color:#5e5873; margin:0; white-space:nowrap; font-variant-numeric:tabular-nums; }
@media (max-width: 767.98px) {
  .page-analytics .kpi-val { font-size:1.2rem; }
  .page-analytics .kpi-tile { width:34px; height:34px; } .page-analytics .kpi-tile .ti { font-size:17px; }
  .page-analytics ol.rank li { grid-template-columns:24px 1fr auto 64px; } .page-analytics ol.rank .share { display:none; }
  .page-analytics ol.rank .name { white-space:normal; overflow:visible; line-height:1.25; }
  .page-analytics .ytd-strip { grid-template-columns:repeat(2, 1fr); }
  .page-analytics .ytd-cell:nth-child(3n) { border-right:1px solid var(--line-2); } .page-analytics .ytd-cell:nth-child(2n) { border-right:0; }
  .page-analytics .ytd-cell:nth-last-child(-n+3) { border-bottom:1px solid var(--line-2); } .page-analytics .ytd-cell:nth-last-child(-n+2) { border-bottom:0; }
}

/* ---- analytics, round 2 (operator 2026-09-24): prod's five cards + the monthly summary first; everything else collapsed; print = the screen ---- */
.page-analytics .an-print { margin-left:auto; align-self:flex-end; }
.page-analytics .an-head { display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; margin:0 0 var(--s-3); }
.page-analytics .an-period { margin:0; font-size:.95rem; color:#5e5873; } .page-analytics .an-period span { color:var(--muted); font-size:.85rem; }
.page-analytics .an-wf { margin:0; font-size:.9rem; color:#6e6b7b; white-space:nowrap; }
.page-analytics .an-wf .ti { color:#ea5455; vertical-align:-2px; } .page-analytics .an-wf b { color:#5e5873; } .page-analytics .an-wf b.a { color:#ea5455; } .page-analytics .an-wf .sep { color:#b0b8c1; margin:0 2px; }
.page-analytics #monthly-summary > .card-body { padding:16px 20px; }
.page-analytics table.summary { margin:0; font-variant-numeric:tabular-nums; }
.page-analytics table.summary th.num, .page-analytics table.summary td.num { text-align:right; white-space:nowrap; }
.page-analytics table.summary td.neg { color:var(--bad); } .page-analytics table.summary td.nr { color:var(--muted); font-style:italic; }
.page-analytics table.summary tr.unattr td { color:var(--muted); font-style:italic; }
.page-analytics table.summary tfoot th { font-weight:700; }
.page-analytics details.an-sec { background:var(--bs-paper-bg, #fff); border-radius:8px; box-shadow:0 2px 6px rgba(47,43,61,.08); margin-bottom:10px; }
.page-analytics details.an-sec > summary { list-style:none; cursor:pointer; padding:12px 18px; display:flex; gap:10px; align-items:baseline; }
.page-analytics details.an-sec > summary::-webkit-details-marker { display:none; }
.page-analytics details.an-sec > summary::before { content:'▸'; color:var(--brand); font-size:.95rem; transition:transform .15s; display:inline-block; }
.page-analytics details.an-sec[open] > summary::before { transform:rotate(90deg); }
.page-analytics details.an-sec > summary b { color:#5e5873; } .page-analytics details.an-sec > summary span { color:var(--muted); font-size:.85rem; }
.page-analytics details.an-sec > :not(summary) { padding:0 12px 12px; }
.page-analytics details.an-sec #ranking, .page-analytics details.an-sec #ytd { box-shadow:none; border:1px solid var(--line-2); }
@media print {
  .page-analytics .an-print, .page-analytics .btn-group, .page-analytics .show-all, .page-analytics #details form.scope { display:none !important; }
  .page-analytics details.an-sec:not([open]) { display:none !important; }                     /* print = what is on screen: closed sections stay out */
  .page-analytics details.an-sec { box-shadow:none; page-break-inside:avoid; }
  .page-analytics details.an-sec > summary::before { content:none; }
  .page-analytics details.an-sec > summary { padding:8px 0; } .page-analytics details.an-sec > :not(summary) { padding:0; }
  .page-analytics .kpi-card, .page-analytics #monthly-summary { box-shadow:none !important; border:1px solid #ddd !important; }
  .page-analytics #kpis { display:flex !important; flex-wrap:nowrap !important; } .page-analytics #kpis > div { flex:1 1 0 !important; width:auto !important; max-width:none !important; }
  .page-analytics .kpi-val { font-size:1.05rem; } .page-analytics .kpi-tile { display:none; } .page-analytics .kpi-card .card-body { padding:8px 10px; }
  .page-analytics table.summary thead th, .page-analytics table.summary tfoot th { background:#343a40 !important; color:#fff !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .page-analytics .kpi-tile { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
