:root{
  --ground:#F5F7FA; --surface:#FFFFFF; --sunk:#EDF0F5;
  --ink:#141D2B; --text:#334054; --muted:#66738A;
  --rule:#DCE2EB; --rule-strong:#C3CCDA;
  --artefex:#0E6A5F; --manpower:#9C5C18; --mckinsey:#4B4D8A;
  --gate:#A26A12; --gate-soft:#a26a1216;
  --crit:#A93129; --crit-soft:#a9312914;
  --ok:#1B6140; --ok-soft:#1b614014;
  --accent:var(--artefex); --accent-soft:#0e6a5f14;
  --shadow:0 1px 2px #141d2b0d,0 4px 16px #141d2b0a;
}
body[data-party="manpower"]{--accent:var(--manpower);--accent-soft:#9c5c1814}
body[data-party="mckinsey"]{--accent:var(--mckinsey);--accent-soft:#4b4d8a14}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#0E131C; --surface:#151D29; --sunk:#111825;
    --ink:#E7ECF4; --text:#BDC7D6; --muted:#8B99AF;
    --rule:#26303F; --rule-strong:#354153;
    --artefex:#41A599; --manpower:#D08D4D; --mckinsey:#9194D6;
    --gate:#D9A046; --gate-soft:#d9a04620;
    --crit:#E0776D; --crit-soft:#e0776d1f;
    --ok:#5FBE8E; --ok-soft:#5fbe8e1f;
    --accent:#41A599; --accent-soft:#41a5991f;
    --shadow:0 1px 2px #0006,0 6px 20px #0004;
  }
  body[data-party="manpower"]{--accent:#D08D4D;--accent-soft:#d08d4d1f}
  body[data-party="mckinsey"]{--accent:#9194D6;--accent-soft:#9194d61f}
}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--text);font-size:15.5px;line-height:1.6;
  font-family:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
h1,h2,h3{font-family:Newsreader,Georgia,serif;color:var(--ink);margin:0;font-weight:500;text-wrap:balance}
h1{font-size:31px;line-height:1.15;letter-spacing:-.01em}
h2{font-size:22px} h3{font-size:17px;font-weight:600}
p{margin:0} a{color:var(--accent)}
.mono,code{font-family:"IBM Plex Mono",ui-monospace,monospace}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);font-weight:500}

.bar{background:var(--surface);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:9}
.bar-in{max-width:1120px;margin:0 auto;padding:13px 24px;display:flex;justify-content:space-between;
  align-items:center;gap:20px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font-weight:600}
/* 1791x406 artwork; height drives the width.
   These four rules stay together: the dark override must follow the base or
   source order cancels it -- a media query carries no extra specificity. */
.logo{height:19px;width:auto;display:block;flex:none}
.logo-light{display:block}
.logo-dark{display:none}
@media (prefers-color-scheme:dark){
  .logo-light{display:none}
  .logo-dark{display:block}
}
.brand-sep{width:1px;height:18px;background:var(--rule-strong);flex:none}
.brand-name{font-family:Newsreader,Georgia,serif;font-size:18px;font-weight:500;color:var(--ink)}
.signin-brand{display:flex}
.signin-brand .logo{height:30px}
.scope{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--accent);background:var(--accent-soft);padding:3px 8px;border-radius:4px;font-weight:600}
nav{display:flex;align-items:center;gap:18px;font-size:14px}
nav a{color:var(--muted);text-decoration:none} nav a:hover{color:var(--accent)}
.who{color:var(--muted);font-size:13px}

.page{max-width:1120px;margin:0 auto;padding:36px 24px 80px;display:flex;flex-direction:column;gap:26px}
.page-narrow{max-width:460px;padding-top:80px}
.stack{display:flex;flex-direction:column;gap:14px}
.head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}

.card{background:var(--surface);border:1px solid var(--rule);border-radius:10px;
  padding:22px 24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px}
.grid{display:grid;gap:14px}
@media(min-width:820px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}}

.scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:10px;background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:560px;font-size:14.5px}
th,td{text-align:left;padding:11px 15px;border-bottom:1px solid var(--rule);vertical-align:top}
thead th{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);font-weight:600;background:var(--sunk);border-bottom:1px solid var(--rule-strong);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;font-family:"IBM Plex Mono",monospace}
.rowlabel{color:var(--ink);font-weight:500}

.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;
  font-family:"IBM Plex Mono",monospace;white-space:nowrap;background:var(--sunk);color:var(--muted)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.warn{background:var(--gate-soft);color:var(--gate)}
.pill.crit{background:var(--crit-soft);color:var(--crit)}

.note{border-left:3px solid var(--gate);background:var(--gate-soft);border-radius:0 8px 8px 0;
  padding:13px 17px;font-size:14.5px}
.note.crit{border-left-color:var(--crit);background:var(--crit-soft)}
.note.ok{border-left-color:var(--ok);background:var(--ok-soft)}
.note b{color:var(--ink)}

label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;color:var(--muted);font-weight:500}
input[type=text],input[type=email],input[type=file],select,textarea{
  font:inherit;font-size:15px;padding:9px 11px;border:1px solid var(--rule-strong);border-radius:7px;
  background:var(--surface);color:var(--ink);width:100%}
textarea{min-height:76px;resize:vertical}
.btn{font:inherit;font-size:14.5px;font-weight:600;padding:9px 18px;border-radius:7px;border:1px solid transparent;
  background:var(--accent);color:#fff;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent;color:var(--accent);border-color:var(--rule-strong)}
.btn.danger{background:var(--crit)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.row>*{flex:1 1 180px} .row>.narrow{flex:0 0 auto}

#pack{width:100%;min-height:520px;border:1px solid var(--rule);border-radius:10px;
  background:var(--surface);box-shadow:var(--shadow);display:block}
.muted{color:var(--muted)} .small{font-size:13px}
.empty{padding:34px 22px;text-align:center;color:var(--muted);font-size:14.5px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* --- document viewers --------------------------------------------------- */
.doc-frame{width:100%;min-height:78vh;border:1px solid var(--rule);border-radius:10px;
  background:var(--surface);box-shadow:var(--shadow);display:block}
.doc-image{align-items:center}
.doc-image img{max-width:100%;height:auto;border-radius:6px}

.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--rule);padding-bottom:0}
.tab{font:inherit;font-size:13.5px;font-weight:500;padding:8px 14px;border:1px solid transparent;
  border-bottom:none;border-radius:7px 7px 0 0;background:transparent;color:var(--muted);cursor:pointer}
.tab:hover{color:var(--ink)}
.tab.on{background:var(--surface);border-color:var(--rule);color:var(--ink);
  box-shadow:0 1px 0 var(--surface)}
.hidden{display:none}

.sheet-scroll{max-height:80vh;overflow:auto}
.sheet-table{min-width:0;width:auto;font-size:12.5px;font-family:"IBM Plex Mono",monospace}
.sheet-table td{border:1px solid var(--rule);padding:4px 9px;white-space:nowrap;
  max-width:340px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.sheet-table td.n{text-align:right;font-variant-numeric:tabular-nums}
.sheet-table td.f{color:var(--muted);font-style:italic}
.sheet-table td.spacer{height:9px;border:none;padding:0}
.sheet-table tr:hover td{background:var(--sunk)}

/* --- report tracker, modelled on the INV-nnn workbook ------------------- */
.tracker{font-size:13.5px;min-width:820px;border-collapse:collapse}
.tracker th,.tracker td{border:1px solid var(--rule);padding:7px 11px;white-space:nowrap}
.tracker thead th{background:var(--sunk);color:var(--muted);font-family:"IBM Plex Mono",monospace;
  font-size:10px;letter-spacing:.08em;text-transform:uppercase;text-align:center}
.tracker th.period{background:var(--accent-soft);color:var(--accent);font-size:11px}
.tracker td.svc{color:var(--ink);font-weight:600;white-space:normal;min-width:210px}
.tracker td.metric{color:var(--text);white-space:normal;min-width:290px;font-size:13px}
.tracker td.ref{text-align:right;font-family:"IBM Plex Mono",monospace;color:var(--muted)}
.tracker td.v{text-align:right;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.tracker tr.person td.svc{border-top:2px solid var(--rule-strong)}
.tracker td.usd{color:var(--ink);font-weight:600}
.tracker tr.band td{background:var(--sunk);color:var(--ink);font-weight:600}
.tracker tr.total td{background:var(--accent-soft)}
.tracker tr.grand td{background:var(--accent-soft);color:var(--ink);font-weight:700;font-size:14.5px;
  border-top:2px solid var(--accent)}
.tracker td.code{text-align:center;font-family:"IBM Plex Mono",monospace;font-weight:600;color:var(--accent)}
.tracker td.zero{color:var(--muted)}
.notes-list{display:flex;flex-direction:column;gap:9px;font-size:13.5px;color:var(--muted)}
.notes-list li{margin:0}
