/* ============================================================
   LMR OS — shared design system (LIVE, adapted from mockup crm.css)
   Mobile-first. Dark text on colored fills. Palette: brand 4 +
   accents (ink, violet) + semantic status tints (amber/red are
   STATUS colors, not brand — catalog for the palette sweep).
   Stripped vs mockup: demo ribbon/chip, preview toolbar, search,
   mailbox, email modal, connection web.
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=DM+Mono:wght@400;500&family=Montserrat:wght@800&display=swap');

:root{
  --blue:#38a6ce;        /* mirrored-from-Pinwheel provenance + coach */
  --blue-tint:#dceef6;
  --green:#a6ce38;       /* primary action + born-in-OS provenance */
  --green-tint:#eef5d8;
  --green-lt:#c9e08a;
  --gray:#636466;
  --gray-lt:#a7a8aa;
  --ink:#1a2a35;
  --ink-tint:#e2e7ea;
  --violet:#9b8cdd;      /* lottery / special */
  --violet-tint:#ece8f8;
  --amber-tint:#faedc8;  /* status: needs action */
  --amber-edge:#d9a514;
  --red-tint:#f6dcd8;    /* status: blocked/overdue */
  --red-edge:#c0503f;
  --bg:#f2f4f5;
  --card:#ffffff;
  --line:#e3e6e8;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font:16px/1.55 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
img,svg,video{max-width:100%}
a{color:#20759a}
a:hover{color:var(--ink)}

/* Placeholder / not-yet-active elements (same pattern as Coach Hub/Dashboard). */
.lmr-inactive{opacity:.45;filter:grayscale(100%);cursor:not-allowed;pointer-events:none}

/* ---------- CANONICAL Early Bird pill (Jul 13 2026, JB) ----------
   ONE Early Bird look for the whole OS — F26 Teams, participant profiles, Coach
   Hub, and every future page (incl. financial reporting). Amber/gold star pill =
   "focus-region boy registered before Aug 15 · carabiner & charm." Always use
   .lmr-eb (add a count inline: "3 Early Bird"); never re-style Early Bird ad hoc.
   .lmr-eb-lg = a slightly larger header/badge size; .lmr-eb-sub = the descriptor. */
.lmr-eb{display:inline-flex;align-items:center;gap:5px;background:var(--amber-tint,#faedc8);color:#a8631f;border:1px solid #e0883a;font-weight:800;font-size:12px;line-height:1.3;padding:3px 10px;border-radius:10px;white-space:nowrap}
.lmr-eb .lmr-eb-star{font-size:11px;line-height:1}
.lmr-eb.lmr-eb-lg{font-size:13px;padding:5px 12px}
.lmr-eb-sub{font-size:12px;color:var(--gray);font-weight:600;margin-left:2px}

/* ---------- injected topbar ---------- */
.topbar{
  background:var(--ink);color:#fff;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:10px 18px;min-height:56px;
}
.topbar .brand{display:flex;gap:10px;text-decoration:none;min-height:48px;align-items:center}
.topbar .brand b{color:#fff;font-size:19px;letter-spacing:.4px}
/* Wordmark: "Let Me Run" white (Inter) + "Dashboard" green ALL-CAPS Montserrat
   ExtraBold (JB pick — Option 2, Jul 6 2026). */
.topbar .brand .run{color:#fff;font-family:Inter,sans-serif;font-weight:700;font-size:19px;letter-spacing:.3px}
.topbar .brand .dash{color:var(--green);font-family:'Montserrat',sans-serif;font-weight:800;text-transform:uppercase;font-size:19px;letter-spacing:.8px}
.topbar .brand span{color:var(--green);font-size:13px;font-weight:600}
.topbar .top-actions{margin-left:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.topbar .wn-link{display:inline-flex;align-items:center;gap:7px;padding:5px 13px;color:#fff;border:1.5px solid rgba(255,255,255,.35);border-radius:7px;font-size:12px;font-weight:600;font-family:Inter,sans-serif;text-decoration:none;white-space:nowrap;min-height:38px}
.topbar .wn-link .wn-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(166,206,56,.28);flex-shrink:0}
/* Log out is a <button> wearing the .wn-link look (shared shell, every page) */
.topbar button.wn-link{background:transparent;cursor:pointer}
.topbar button.wn-link:hover{border-color:rgba(255,255,255,.7)}

/* ---------- View As (admin-only "see what a coworker sees", Jul 6 2026) ----------
   Lives in .top-actions next to Log out, every page. Reads/renders from data
   the admin already legitimately has (get-onboarding-admin) — no impersonation,
   no new writes. See os.js for the picker logic + nav hide/show. */
.viewas-wrap{position:relative}
.viewas-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:90;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.18);padding:14px;width:270px;max-width:82vw}
.viewas-panel label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gray);margin-bottom:6px}
.viewas-panel select{width:100%;min-height:44px;padding:9px 11px;border:1.5px solid var(--line);border-radius:8px;font-family:Inter,sans-serif;font-size:14px;color:var(--ink);background:#fff}
.viewas-panel .viewas-exit{width:100%;min-height:40px;margin-top:10px;border:0;border-radius:8px;background:var(--red-tint);color:var(--red-edge);font-weight:700;font-size:13px;font-family:Inter,sans-serif;cursor:pointer}
.viewas-panel .viewas-hint{font-size:12px;color:var(--gray);margin-top:8px;line-height:1.5}
.viewas-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--amber-tint);border-bottom:2px solid #e0883a;color:#8a5410;font:600 13.5px/1.5 Inter,sans-serif;padding:10px 18px}
.viewas-bar b{color:#5c3a0f}
.viewas-bar .viewas-exit2{margin-left:auto;min-height:32px;padding:0 14px;border:0;border-radius:7px;background:#e0883a;color:#3a2409;font-weight:800;font-size:12.5px;font-family:Inter,sans-serif;cursor:pointer}

/* ---------- breadcrumb ---------- */
.crumbbar{background:#fff;border-bottom:1px solid var(--line);padding:8px 18px;font-size:14.5px}
.crumbbar a{text-decoration:none;padding:8px 2px;display:inline-block}
.crumbbar .sep{color:var(--gray-lt);margin:0 6px}
.crumbbar .here{color:var(--gray);font-weight:600}

/* ---------- page shell ---------- */
/* Jul 8 2026 (JB): every page FILLS the middle panel by default — matches the
   Coach Recruitment board. Only long-form reading + public form pages keep the
   centred 1120px cap (body.narrow, set from NARROW_PAGES in os.js). */
.page{max-width:none;margin:0 auto;padding:20px 18px 60px}
body.narrow main.page{max-width:1120px}
h1{font-size:26px;margin:0}
h2{font-size:17px;margin:0 0 12px;color:var(--ink)}
h2 .sub{font-weight:400;color:var(--gray);font-size:14px}
.muted{color:var(--gray)}
.small{font-size:13.5px}
.nof{color:var(--gray-lt);font-style:italic}   /* "Not on file" */

/* ---------- identity header ---------- */
.id-head{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:20px;display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;
  border-top:6px solid var(--blue);
}
.id-head.org{border-top-color:var(--green)}
.id-head .avatar{
  width:64px;height:64px;border-radius:50%;flex:0 0 64px;
  background:var(--blue-tint);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  font-size:22px;font-weight:800;letter-spacing:1px;
}
.id-head.org .avatar{border-radius:14px;background:var(--green-tint)}
.id-head .who{flex:1 1 260px;min-width:0}
.id-head .type{font-size:12.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--gray)}
.id-head .facts{margin-top:8px;display:flex;gap:16px;flex-wrap:wrap;font-size:14.5px;color:var(--gray)}
.id-head .facts b{color:var(--ink)}

/* ---------- role chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.chip{
  display:inline-flex;align-items:center;min-height:32px;padding:2px 12px;
  border-radius:999px;font-size:13.5px;font-weight:700;color:var(--ink);
  background:var(--ink-tint);border-left:5px solid var(--gray);
}
.chip.boy,.chip.runner{background:var(--blue-tint);border-left-color:var(--blue)}
.chip.coach{background:var(--blue-tint);border-left-color:var(--ink)}
.chip.parent{background:var(--green-tint);border-left-color:var(--green)}
.chip.donor{background:var(--violet-tint);border-left-color:var(--violet)}
.chip.alumni{background:var(--green-tint);border-left-color:var(--green-lt)}
.chip.staff{background:var(--ink-tint);border-left-color:var(--ink)}
.chip.board{background:var(--ink-tint);border-left-color:var(--violet)}
.chip.siteadmin{background:var(--ink-tint);border-left-color:var(--blue)}
.chip.past{opacity:.62}
.chip .yr{font-weight:400;color:var(--gray);margin-left:6px;font-size:12.5px}

/* ---------- provenance ---------- */
.pw,.rd-val{position:relative;padding-left:15px;border-radius:4px}
.pw::before,.rd-val::before{
  content:"";position:absolute;left:2px;top:.52em;width:8px;height:8px;border-radius:50%;
}
.pw::before{background:var(--blue)}
.rd-val::before{background:var(--green)}
.prov-legend{
  display:flex;gap:18px;flex-wrap:wrap;align-items:center;
  font-size:13px;color:var(--gray);margin-top:14px;
}
.prov-legend .pw,.prov-legend .rd-val{font-weight:600;color:var(--ink)}

/* ---------- cards & grids ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:16px;margin-top:16px}
.grid .wide{grid-column:1/-1}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}
.card.flag{border-left:6px solid var(--amber-edge);background:#fffdf5}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.stat .n{font-size:24px;font-weight:800}
.stat .l{font-size:13px;color:var(--gray)}
.stat.hi{border-top:4px solid var(--green)}
.stat.mid{border-top:4px solid var(--blue)}
.stat.warn{border-top:4px solid var(--amber-edge)}

/* key/value rows */
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:15px}
.kv dt{color:var(--gray);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding-top:2px}
.kv dd{margin:0;min-height:28px}

/* linked rows */
.rowlist{list-style:none;margin:0;padding:0}
.rowlist li{border-top:1px solid var(--line)}
.rowlist li:first-child{border-top:0}
.rowlist a,.rowlist .row{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;row-gap:2px;min-height:52px;padding:7px 4px;
  text-decoration:none;color:var(--ink);
}
.rowlist a:hover{background:var(--bg)}
.rowlist .av{
  width:38px;height:38px;border-radius:50%;flex:0 0 38px;background:var(--blue-tint);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;
}
.rowlist .av.org{border-radius:9px;background:var(--green-tint)}
.rowlist .main{flex:1;min-width:0}
.rowlist .main b{display:block}
.rowlist .main .sub{font-size:13px;color:var(--gray)}
.rowlist .tag{font-size:12.5px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.tag.ok{background:var(--green-tint);color:#5b7414}
.tag.act{background:var(--amber-tint);color:#8a6a0c}
.tag.stop{background:var(--red-tint);color:#93321f}
.tag.info{background:var(--blue-tint);color:#1e6d8f}
.tag.viol{background:var(--violet-tint);color:#5c4bb0}

/* ---------- timeline ---------- */
.timeline{list-style:none;margin:6px 0 0;padding:0 0 0 22px;border-left:3px solid var(--line)}
.timeline li{position:relative;padding:0 0 16px 6px}
.timeline li::before{
  content:"";position:absolute;left:-31.5px;top:5px;width:12px;height:12px;border-radius:50%;
  background:var(--gray-lt);border:2.5px solid #fff;box-shadow:0 0 0 2px var(--gray-lt);
}
.timeline li.t-run::before{background:var(--blue);box-shadow:0 0 0 2px var(--blue)}
.timeline li.t-coach::before{background:var(--ink);box-shadow:0 0 0 2px var(--ink)}
.timeline li.t-give::before{background:var(--violet);box-shadow:0 0 0 2px var(--violet)}
.timeline li.t-act::before{background:var(--green);box-shadow:0 0 0 2px var(--green)}
.timeline .when{font-size:12.5px;font-weight:700;color:var(--gray);text-transform:uppercase;letter-spacing:.6px}
.timeline p{margin:2px 0 0;font-size:15px}

/* ---------- readiness gates (used by later chunks) ---------- */
.gates{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;margin-top:8px}
.gate{border-radius:10px;padding:10px 12px;min-height:76px;border:1px solid var(--line);background:var(--bg)}
.gate .g-name{font-size:12.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.gate .g-val{font-size:14px;margin-top:5px}
.gate.done{background:var(--green-tint);border-color:var(--green)}
.gate.action{background:var(--amber-tint);border-color:var(--amber-edge)}
.gate.blocked{background:var(--red-tint);border-color:var(--red-edge)}
.gate.na{opacity:.6}
.gstrip{display:inline-flex;gap:4px;vertical-align:middle}
.gstrip i{width:14px;height:14px;border-radius:4px;display:inline-block;background:var(--gray-lt)}
.gstrip i.d{background:var(--green)}
.gstrip i.a{background:var(--amber-edge)}
.gstrip i.b{background:var(--red-edge)}

/* ---------- tables ---------- */
.tablewrap{overflow-x:auto}
table.data{border-collapse:collapse;width:100%;font-size:14.5px;min-width:520px}
table.data th{
  text-align:left;font-size:12.5px;text-transform:uppercase;letter-spacing:.6px;
  color:var(--gray);border-bottom:2px solid var(--line);padding:8px 10px;
}
table.data td{border-bottom:1px solid var(--line);padding:10px;vertical-align:top}

/* ---------- details / notes ---------- */
details{border:1px solid var(--line);border-radius:10px;padding:0 14px;margin-top:10px;background:var(--bg)}
details summary{cursor:pointer;font-weight:700;min-height:48px;display:flex;align-items:center;font-size:15px}
details[open]{padding-bottom:12px}
.note{background:var(--green-tint);border-left:5px solid var(--green);border-radius:8px;padding:10px 12px;margin-top:10px;font-size:14.5px}
.note .meta{font-size:12.5px;color:var(--gray);margin-top:4px}

/* buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 18px;
  border-radius:10px;font-weight:800;font-size:15px;text-decoration:none;border:0;cursor:pointer;
  background:var(--green);color:var(--ink);
}
.btn.sec{background:var(--blue-tint);color:var(--ink)}
.btn.ghost{background:none;border:2px solid var(--gray-lt);color:var(--gray)}

/* footer */
.osfoot{max-width:1120px;margin:0 auto;padding:0 18px 40px;font-size:12.5px;color:var(--gray-lt);text-align:center}

/* ---------- season kanban (used by later chunks) ---------- */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px}
.kcol{background:#e9edef;border-radius:14px;padding:10px;border-top:6px solid var(--gray-lt)}
.kcol.need{border-top-color:var(--red-edge)}
.kcol.pipe{border-top-color:var(--amber-edge)}
.kcol.ready{border-top-color:var(--green)}
.kcol.launch{border-top-color:var(--blue)}
.kcol h3{
  margin:2px 4px 4px;font-size:13.5px;text-transform:uppercase;letter-spacing:.7px;
  display:flex;align-items:center;justify-content:space-between;
}
.kcol h3 .cnt{
  background:#fff;border-radius:999px;min-width:26px;height:26px;padding:0 8px;
  display:inline-flex;align-items:center;justify-content:center;font-size:13px;
}
.kcol .khint{font-size:12px;color:var(--gray);margin:0 4px 6px}
.kcard{
  background:#fff;border-radius:11px;padding:11px 12px;margin-top:8px;
  border-left:5px solid var(--gray-lt);box-shadow:0 1px 3px rgba(26,42,53,.08);
}
.kcol.need .kcard{border-left-color:var(--red-edge)}
.kcol.pipe .kcard{border-left-color:var(--amber-edge)}
.kcol.ready .kcard{border-left-color:var(--green)}
.kcol.launch .kcard{border-left-color:var(--blue)}
.kcard b.tname{font-size:15px}
.kcard .ksub{font-size:12.5px;color:var(--gray);margin-top:1px}
.kcard .kpeople{margin-top:8px;font-size:13px;display:flex;flex-direction:column;gap:4px}
.kcard .kpeople a{text-decoration:none;font-weight:700}
.kcard .kboys{font-size:12.5px;color:var(--gray)}
.kcard details{border:0;background:none;padding:0;margin-top:6px}
.kcard details summary{min-height:36px;font-size:13px;color:#20759a;font-weight:700}
.kempty{
  border:2px dashed var(--gray-lt);border-radius:11px;margin-top:8px;padding:16px 12px;
  font-size:13px;color:var(--gray);text-align:center;background:none;
}
@media(max-width:980px){
  .kanban{
    display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
    padding-bottom:10px;-webkit-overflow-scrolling:touch;
  }
  .kcol{flex:0 0 min(84vw,320px);scroll-snap-align:start}
}

/* ---------- shell: sidebar + content ---------- */
.shell{display:flex;align-items:flex-start}
.sidenav{
  flex:0 0 218px;position:sticky;top:0;max-height:100vh;overflow-y:auto;
  background:#fff;border-right:1px solid var(--line);padding:10px 10px 30px;
}
/* Nav scrollbar (Jul 4 2026, JB): hidden until hover — then a thin grey
   thumb fades in. Replaces the chunky Windows default. Phones use the
   drawer's native touch scrolling, unaffected. */
.sidenav{scrollbar-width:thin;scrollbar-color:transparent transparent}
.sidenav:hover{scrollbar-color:#c9cdd1 transparent}
.sidenav::-webkit-scrollbar{width:7px}
.sidenav::-webkit-scrollbar-track{background:transparent}
.sidenav::-webkit-scrollbar-thumb{background:transparent;border-radius:99px}
.sidenav:hover::-webkit-scrollbar-thumb{background:#c9cdd1}
.sidenav::-webkit-scrollbar-thumb:hover{background:#a7a8aa}
.sidenav .nsec{
  font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:1px;
  color:var(--gray-lt);padding:14px 10px 4px;
}
.sidenav .ni{
  display:flex;justify-content:flex-start;gap:10px;
  min-height:44px;align-items:center;padding:4px 10px;border-radius:9px;
  text-decoration:none;color:var(--ink);font-size:14.5px;font-weight:600;
}
/* Per-item icon (Jul 8 2026, JB) — gives the collapsed rail a distinct glyph
   per button instead of a column of identical dots. */
.sidenav .nico{flex:0 0 22px;text-align:center;font-size:15px;line-height:1;color:var(--gray)}
.sidenav .ni.on .nico{color:#3d6b12}
.sidenav .nlabel{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidenav .ni small{font-size:11.5px;color:var(--gray-lt);font-weight:400;white-space:nowrap}
.sidenav .ni:hover{background:var(--bg)}
.sidenav .ni.on{background:var(--green-tint);border-left:5px solid var(--green);padding-left:5px}
.sidenav .ni.off{opacity:.45;filter:grayscale(1);pointer-events:none;cursor:default}
.sidenav .ni.off:hover{background:none}
.shell main.page{flex:1;min-width:0}
.navscrim{position:fixed;inset:0;background:rgba(26,42,53,.5);z-index:70;display:none}
.navscrim.show{display:block}

/* ---------- left nav: desktop collapse (JB, Jul 6 2026; restyled same day) ----------
   Handle = a small translucent circular tab, right-aligned in its own row
   at the top of the sidenav — arrow only, no label, no icon font. In-flow
   (not absolutely positioned) so it can never overlap the nav rows below it. */
.sidenav{transition:flex-basis .2s ease,width .2s ease}
/* Jul 8 2026 (JB): the handle STICKS to the top of the nav's own scroll, so with
   a long menu you never have to scroll back up to collapse/expand. */
.nav-top{display:flex;justify-content:flex-end;margin-bottom:8px;
  position:sticky;top:0;z-index:2;background:#fff;padding:4px 0 6px}
.shell.nav-collapsed .nav-top{justify-content:center}
.navtoggle{
  width:28px;height:28px;border-radius:50%;flex:0 0 auto;
  background:rgba(26,42,53,.55);color:#fff;border:1px solid rgba(255,255,255,.35);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;
  backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
  box-shadow:0 2px 6px rgba(26,42,53,.25);
  transition:background .15s ease;
}
.navtoggle:hover{background:rgba(26,42,53,.85)}
.shell.nav-collapsed .sidenav{flex-basis:56px;width:56px;overflow-x:hidden;overflow-y:auto}
/* Jul 8 2026 (JB): collapsed = an ICON RAIL, not an empty strip. The nav items
   stay visible and CLICKABLE (icon only, centred, native tooltip = the label),
   so you can jump straight to a page without expanding first. Section headings
   and the Recent list still hide — they have no icon to stand in for them. */
.shell.nav-collapsed .sidenav .nsec,
.shell.nav-collapsed .sidenav .recwrap{display:none}
.shell.nav-collapsed .sidenav .ni{justify-content:center;padding:4px 0;gap:0}
.shell.nav-collapsed .sidenav .nlabel{display:none}
.shell.nav-collapsed .sidenav .ni.on{border-left:0;padding-left:0}

/* ---------- Workflow Instructions (right panel, global, every page) ----------
   Same rail/panel component approved in LMR_Workflow_Instructions_Mockup.html.
   Third flex sibling of .sidenav / main.page inside .shell — a real layout
   column, never an overlay on desktop, so it structurally cannot cover
   either of the other two. Loads collapsed; opens to a workflow picker
   menu; only the rail or the ✕ closes it — nothing else on the page
   touches its open/closed state. */
/* Jul 12 2026 (JB): the column is STICKY and viewport-height (same pattern as
   .sidenav) — on long pages the collapsed rail used to stretch to full document
   height with its label centered way off-screen, so users just saw an unlabeled
   ink bar. Sticky + 100vh keeps the book icon + "Workflow Instructions" label
   (and, when open, the panel header) in view at every scroll position. */
.instr-col{
  flex:0 0 48px;width:48px;border-left:1px solid var(--line);
  background:var(--ink);overflow:hidden;
  position:sticky;top:0;align-self:flex-start;height:100vh;max-height:100vh;
  transition:flex-basis .25s ease,width .25s ease;
}
/* Jul 8 2026 (JB): once open, the panel must read as an ACTIVE column — a light
   outline plus a soft shadow lift it off the page instead of blending into it. */
.instr-col.open{
  flex-basis:380px;width:380px;background:#fff;
  border-left:1px solid var(--ink-tint);
  box-shadow:-10px 0 24px rgba(26,42,53,.09);
}
/* Jul 12 2026 (JB): rail content pinned to the TOP of the column (was centered)
   so the 📖 + label sit in the same spot at every scroll position instead of
   drifting with the viewport middle. */
.instr-rail{
  position:absolute;inset:0;width:100%;height:100%;background:transparent;color:#fff;
  border:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  gap:10px;cursor:pointer;padding:14px 0;font-family:inherit;
}
.instr-col.open .instr-rail{display:none}
.instr-rail:hover{background:#243b47}
.instr-rail .rail-ico{font-size:18px}
.instr-rail .rail-txt{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11.5px;font-weight:800;letter-spacing:.5px}
.instr-panel{position:absolute;inset:0;display:none;flex-direction:column;background:#fff}
.instr-col.open .instr-panel{display:flex}
.ip-head{padding:16px 16px 12px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:10px;background:#fafcfc;flex:0 0 auto}
.ip-eyebrow{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#1f6f8f}
.ip-head h3{margin:2px 0 0;font-size:16px;color:var(--ink);line-height:1.3}
.ip-close{background:var(--bg);border:none;width:32px;height:32px;border-radius:8px;font-size:14px;cursor:pointer;color:var(--gray);flex:0 0 auto}
.ip-close:hover{background:var(--line)}
.ip-menu{flex:1 1 auto;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.ip-menu-hint{font-size:12.5px;color:var(--gray);line-height:1.5;margin:0 0 4px}
.wf-list,.instr-col .wf-list{display:flex;flex-direction:column;gap:10px}
.wf-card{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 14px;cursor:pointer}
.wf-card:not(.lmr-inactive):hover{border-color:var(--blue)}
.wf-main{flex:1;min-width:0}
.wf-title{font-weight:800;font-size:14px;color:var(--ink);display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.wf-desc{font-size:12.5px;color:var(--gray);margin-top:3px;line-height:1.4}
.wf-chev{color:var(--gray-lt);font-size:17px;flex:0 0 auto}
.wf-soon{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;background:var(--bg);color:var(--gray);padding:2px 7px;border-radius:999px}
.ip-progress{padding:9px 16px;font-size:12px;font-weight:700;color:var(--gray);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;flex:0 0 auto}
.ip-progress .bar{flex:1;height:5px;background:var(--bg);border-radius:99px;margin:0 10px;overflow:hidden}
.ip-progress .bar i{display:block;height:100%;background:var(--green);border-radius:99px;transition:width .25s}
.ip-steps{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.ip-steps .backlink{flex:0 0 auto;margin:8px 16px 0;display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:#1f6f8f;font-weight:700;font-size:13.5px;cursor:pointer;padding:6px 0;text-align:left}
.ip-body{flex:1 1 auto;overflow-y:auto;padding:14px 16px}
.stepcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 13px;margin-bottom:10px;cursor:pointer}
.stepcard.current{border-color:var(--blue);box-shadow:0 0 0 3px rgba(56,166,206,.15)}
.stepcard .sh{display:flex;gap:10px;align-items:center}
.stepnum{flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}
.stepcard.current .stepnum{background:var(--blue)}
.steptitle{font-weight:800;font-size:14px;color:var(--ink)}
.stepdesc{font-size:13px;color:var(--gray);line-height:1.5;margin:6px 0 0 34px}
.instr-panel .tip{border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5;margin:8px 0 0 34px}
.instr-panel .tip.warn{background:var(--amber-tint);color:#7a5a12}
.instr-panel .tip.info{background:var(--blue-tint);color:#1e6d8f}
.instr-panel .tip.danger{background:var(--red-tint);color:#93321f}
.ip-foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:10px;background:#fff;flex:0 0 auto}
.ip-foot .btn{flex:1;min-height:44px}
.ip-foot .btn.ghost{background:none;border:1.5px solid var(--gray-lt);color:var(--gray)}

/* Mobile-only trigger button that lives in the topbar (hidden on desktop —
   the rail itself is the desktop trigger). Mirrors .wn-link's look. */
.instr-trigger{display:none}

/* hamburger — mobile only */
.hamb{
  display:none;flex-direction:column;justify-content:center;gap:4.5px;
  width:48px;height:48px;border:0;border-radius:9px;background:#2b3d4a;cursor:pointer;flex-shrink:0;
}
.hamb span{display:block;height:2.5px;margin:0 11px;background:#fff;border-radius:2px}

@media(max-width:980px){
  .hamb{display:flex}
  .sidenav{
    position:fixed;left:0;top:0;bottom:0;z-index:75;width:min(280px,84vw);
    max-height:none;transform:translateX(-105%);transition:transform .2s ease;
    box-shadow:4px 0 18px rgba(26,42,53,.25);
  }
  .sidenav.open{transform:none}
  .nav-top{display:none}           /* mobile already has the hamburger drawer */

  /* Workflow Instructions becomes a right-side overlay drawer on mobile —
     same contract as the left drawer above. Closed = zero footprint (no
     persistent floating tab); the topbar button is the only trigger. */
  .instr-trigger{display:inline-flex}
  /* Jul 12 2026 (JB): position must stay RELATIVE here, not static — the rail is
     an absolute inset:0 button anchored to this column. static (added with the
     sticky fix) un-anchored it, so its 📖 + label painted over the topbar and the
     invisible full-page button swallowed clicks at mobile widths. relative kills
     the sticky behavior just the same, and the rail is display:none'd below
     anyway — the topbar trigger is the only mobile entry point. */
  .instr-col{flex:0 0 0;width:0;border-left:0;position:relative;height:auto}
  .instr-col .instr-rail{display:none}
  .instr-col.open{
    position:fixed;top:0;right:0;bottom:0;left:auto;z-index:76;
    width:min(360px,88vw);flex-basis:auto;
    box-shadow:-10px 0 26px rgba(26,42,53,.25);
  }
}

/* ---------- sidebar Recent ---------- */
.recwrap{margin-top:14px;border-top:1px solid var(--line);padding-top:2px}
.sidenav .ni.rec{font-weight:600;color:#20759a}
.recempty{font-size:12px;color:var(--gray-lt);padding:6px 10px;line-height:1.5}

/* ---------- What's New feed (Home) ---------- */
.wnitem{display:flex;gap:13px;padding:15px 0;border-bottom:1px solid var(--line)}
.wnitem:last-child{border-bottom:0}
.wnitem .wnicon{font-size:19px;line-height:1.2;flex-shrink:0}
.wnitem .wnbody{flex:1;min-width:0}
.wnitem .wnrow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.wnitem .wnarea{font-size:9px;font-weight:700;letter-spacing:.04em;background:#eef1f3;border:1px solid #dfe4e8;padding:1px 7px;border-radius:5px;text-transform:uppercase}
.wnitem .wntitle{font-size:14px;font-weight:700;color:var(--ink)}
.wnitem .wnpill{font-size:9px;font-weight:700;padding:1px 7px;border-radius:9px}
.wnitem .wndate{font-size:11px;font-weight:600;color:#8a9197;white-space:nowrap;margin-left:auto}
.wnitem .wndesc{font-size:13px;color:#46555f;line-height:1.5}

/* ---------- responsive ---------- */
@media(max-width:820px){
  .kv{grid-template-columns:1fr}
  .kv dt{padding-top:8px}
  .id-head{padding:16px}
  h1{font-size:22px}
}
@media(max-width:680px){
  .grid{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:400px){
  .stats{grid-template-columns:1fr 1fr}
}

/* ── Tag a teammate (Jul 13 2026, JB) ─────────────────────────────────────────
   Topbar button + the modal it opens (built in os.js, appended to <body>). Kept
   self-contained so it never leaks into other components; palette matches the OS
   (green = a friendly personal to-do, not a data alarm). */
.topbar .wn-link.lmr-tag-btn{background:rgba(166,206,56,.16);border:1px solid rgba(166,206,56,.5)}
.topbar .wn-link.lmr-tag-btn:hover{background:rgba(166,206,56,.28)}

.lmr-tagmodal{position:fixed;inset:0;z-index:100000;font-family:Inter,system-ui,sans-serif}
.lmr-tm-scrim{position:absolute;inset:0;background:rgba(20,33,10,.42)}
.lmr-tm-card{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(520px,calc(100vw - 28px));max-height:calc(100vh - 40px);overflow:auto;
  background:#fff;border-radius:16px;box-shadow:0 18px 60px rgba(0,0,0,.28);
  display:flex;flex-direction:column}
.lmr-tm-head{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 6px}
.lmr-tm-head>div{flex:1;min-width:0}
.lmr-tm-eyebrow{font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#8a6a0c;color:var(--green,#6b8f1e)}
.lmr-tm-title{margin:3px 0 0;font-size:19px;font-weight:800;color:var(--ink,#1a2a35)}
.lmr-tm-x{flex:0 0 auto;background:none;border:none;font-size:18px;line-height:1;color:var(--gray,#6b7684);cursor:pointer;padding:4px 6px;border-radius:8px}
.lmr-tm-x:hover{background:var(--bg,#f2f4f6)}
.lmr-tm-form{padding:8px 22px 18px;display:flex;flex-direction:column}
.lmr-tm-lbl{font-size:12px;font-weight:700;color:var(--gray,#6b7684);margin:14px 0 6px;display:block}
.lmr-tm-lbl .lmr-tm-opt{font-weight:600;color:#9aa3ad;text-transform:none;letter-spacing:0}
.lmr-tm-input{width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--line,#e4e9ec);
  border-radius:9px;font-family:inherit;font-size:14.5px;color:var(--ink,#1a2028);background:#fff;outline:none}
.lmr-tm-input:focus{border-color:var(--green,#a6ce38)}
textarea.lmr-tm-input{resize:vertical;min-height:74px;line-height:1.5}
.lmr-tm-due{max-width:220px}
.lmr-tm-attach{align-items:center;justify-content:space-between;gap:10px;margin-top:12px;
  padding:9px 12px;background:#f4f8ea;border:1px solid #d8e6b4;border-radius:9px;font-size:13px;color:#3f5a10}
.lmr-tm-attach b{font-weight:800}
.lmr-tm-attach-x{background:none;border:none;color:#6b7684;font-size:12px;font-weight:700;cursor:pointer;text-decoration:underline;flex:0 0 auto}
.lmr-tm-actions{display:flex;align-items:center;gap:12px;margin-top:20px}
.lmr-tm-state{flex:1;min-width:0;font-size:13px;font-weight:700}
.lmr-tm-send{flex:0 0 auto;padding:12px 24px;border:none;border-radius:10px;background:#1a2a35;color:#fff;
  font-family:inherit;font-size:14.5px;font-weight:800;cursor:pointer}
.lmr-tm-send:hover{background:#24384a}
.lmr-tm-send:disabled{opacity:.6;cursor:default}
.lmr-tm-sent{border-top:1px solid var(--line,#e4e9ec);padding:16px 22px 20px;background:#fbfcfa;border-radius:0 0 16px 16px}
.lmr-tm-sent-head{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--gray,#6b7684);margin-bottom:10px}
.lmr-tm-sent-empty{margin:0;font-size:13px;color:var(--gray,#8a929b)}
.lmr-tm-sent-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line,#eef1f3)}
.lmr-tm-sent-item:first-child{border-top:0}
.lmr-tm-sent-main{flex:1;min-width:0}
.lmr-tm-sent-main b{display:block;font-size:14px;color:var(--ink,#1a2a35);font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lmr-tm-sent-sub{font-size:12px;color:var(--gray,#6b7684)}
.lmr-tm-sent-right{flex:0 0 auto;display:flex;align-items:center;gap:8px}
.lmr-tm-badge{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;white-space:nowrap}
.lmr-tm-badge.open{background:#e9f2d2;color:#3f5a10}
.lmr-tm-badge.over{background:#f6d7cf;color:#8a2b12}
.lmr-tm-badge.done{background:#e1f2f8;color:#1e6d8f}
.lmr-tm-badge.cx{background:#f1f3f5;color:#8a929b}
.lmr-tm-cancel{background:none;border:none;color:#c0503f;font-size:12px;font-weight:700;cursor:pointer;text-decoration:underline;flex:0 0 auto}
/* on-page contextual "Tag" button (person / participant pages) */
.lmr-tag-context{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:9px;
  border:1.5px solid #a6ce38;background:#eef5d8;color:#3f5a10;font-family:inherit;font-size:13px;
  font-weight:800;cursor:pointer;white-space:nowrap}
.lmr-tag-context:hover{background:#e4efc6}
@media(max-width:560px){
  .lmr-tm-card{width:calc(100vw - 16px);max-height:calc(100vh - 20px)}
}

/* ============================================================================
   LMR OS — DARK MODE (JB, Jul 19 2026). Opt-in, per-device (localStorage
   "lmr_theme"); toggled from the topbar; a <head> guard on each page adds
   html.dark before first paint. Everything here is scoped under html.dark, so
   the default LIGHT experience is untouched. Sits at the END of os.css so it
   wins the cascade. Design notes:
     • --ink is overloaded in the light OS as BOTH primary text AND the dark
       topbar/instr-rail/stepnum background. In dark, --ink becomes light TEXT
       and those chrome surfaces get an explicit dark background below.
     • Tint vars (blue/green/violet/amber/red) become dark, muted fills; pills
       whose TEXT color was baked dark get their text re-lightened per class.
     • Brand green/blue fills stay bright, so their text stays DARK.
   ============================================================================ */
html.dark{color-scheme:dark}
html.dark{
  /* == CARBON palette (2026-07-20) — neutral graphite from the brand's
     carbon/graphite shirt colors. All dark surfaces now flow from the tokens
     below (rules reference var(--chrome|--panel|--panel2|--well|--hover|
     --hover2|--scroll|--link) instead of hard-coded hexes), so a future
     retint is a one-block edit. ================================================ */
  --bg:#131416; --card:#1c1e22; --line:#33373d;
  --ink:#ebeced;            /* now = primary TEXT (light) */
  --ink-tint:#24262a;
  --gray:#a9afb6; --gray-lt:#767b82;
  --green:#a6ce38; --green-tint:#263213; --green-lt:#46601e;
  --blue:#38a6ce;  --blue-tint:#16333e;
  --violet:#9b8cdd; --violet-tint:#27233c;
  --amber-tint:#342b12; --amber-edge:#d9a514;
  --red-tint:#341a15;   --red-edge:#c0503f;
  --chrome:#0b0c0e;         /* topbar / instr rail */
  --panel:#18191c;          /* sidenav, crumb-adjacent panels, details, gates */
  --panel2:#141518;         /* panel header wells */
  --well:#151619;           /* kanban columns, sunken tracks */
  --hover:#232529;          /* row/nav hover, kanban cards */
  --hover2:#282b30;         /* stepnum, deeper hover */
  --scroll:#45494f;         /* scrollbar thumbs */
  --link:#62c4e8;           /* anchor + info-link color on dark */
}
html.dark body{background:var(--bg);color:var(--ink)}
html.dark a{color:var(--link)}
html.dark a:hover{color:var(--ink)}

/* ---- chrome that used --ink as a DARK background stays dark ---- */
html.dark .topbar{background:var(--chrome)}
html.dark .instr-col{background:var(--chrome)}
html.dark .stepnum{background:var(--hover2);color:#fff}

/* ---- breadcrumb ---- */
html.dark .crumbbar{background:var(--panel);border-bottom-color:var(--line)}
html.dark .crumbbar .here{color:var(--gray)}

/* ---- Early Bird pill ---- */
html.dark .lmr-eb{color:#e8bf5a;border-color:#7a5a1e}

/* ---- View As panel + bar ---- */
html.dark .viewas-panel{background:var(--card);border-color:var(--line)}
html.dark .viewas-panel select{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark .viewas-bar{color:#e2c07a}
html.dark .viewas-bar b{color:#f0d597}

/* ---- identity header ---- */
html.dark .id-head{background:var(--card);border-color:var(--line)}

/* ---- cards / grids / stats ---- */
html.dark .card{background:var(--card);border-color:var(--line)}
html.dark .card.flag{background:#241f12;border-left-color:var(--amber-edge)}
html.dark .stat{background:var(--card);border-color:var(--line)}

/* ---- rowlists ---- */
html.dark .rowlist a{color:var(--ink)}
html.dark .rowlist a:hover{background:var(--hover)}

/* ---- tags / status pills (dark tint bg now; re-lighten baked-dark text) ---- */
html.dark .tag.ok{color:#bfe56a}
html.dark .tag.act{color:#e8bf5a}
html.dark .tag.stop{color:#f0a090}
html.dark .tag.info{color:#79cfef}
html.dark .tag.viol{color:#c3b6f0}
html.dark .note{color:var(--ink)}
html.dark .note .meta{color:var(--gray)}

/* ---- tables ---- */
html.dark table.data th{color:var(--gray);border-bottom-color:var(--line)}
html.dark table.data td{border-bottom-color:var(--line)}

/* ---- details / gates ---- */
html.dark details{background:var(--panel);border-color:var(--line)}
html.dark .gate{background:var(--panel);border-color:var(--line)}

/* ---- timeline dot ring ---- */
html.dark .timeline{border-left-color:var(--line)}
html.dark .timeline li::before{border-color:var(--bg)}

/* ---- buttons: keep DARK text on bright brand fills ---- */
html.dark .btn{color:#14210a}
html.dark .btn.sec{background:var(--blue-tint);color:var(--ink)}
html.dark .btn.ghost{color:var(--gray);border-color:var(--gray-lt)}

/* ---- kanban ---- */
html.dark .kcol{background:var(--well)}
html.dark .kcard{background:var(--hover);box-shadow:0 1px 3px rgba(0,0,0,.45)}
html.dark .kcol h3 .cnt{background:var(--bg);color:var(--ink)}
html.dark .kempty{color:var(--gray);border-color:var(--gray-lt)}

/* ---- left nav (sidebar) ---- */
html.dark .sidenav{background:var(--panel);border-right-color:var(--line)}
html.dark .sidenav:hover{scrollbar-color:var(--scroll) transparent}
html.dark .sidenav:hover::-webkit-scrollbar-thumb{background:var(--scroll)}
html.dark .nav-top{background:var(--panel)}
html.dark .sidenav .ni{color:var(--ink)}
html.dark .sidenav .ni:hover{background:var(--hover)}
html.dark .sidenav .nico{color:var(--gray)}
html.dark .sidenav .ni.on .nico{color:#a6ce38}
html.dark .recwrap{border-top-color:var(--line)}
html.dark .sidenav .ni.rec{color:var(--link)}

/* ---- Workflow-Instructions rail ---- */
html.dark .instr-col.open{background:var(--panel);border-left-color:var(--line)}
html.dark .instr-panel{background:var(--panel)}
html.dark .instr-rail:hover{background:var(--hover)}
html.dark .ip-head{background:var(--panel2);border-bottom-color:var(--line)}
html.dark .ip-head h3{color:var(--ink)}
html.dark .ip-eyebrow,html.dark .ev-eyebrow{color:var(--link)}
html.dark .ip-close{background:var(--bg);color:var(--gray)}
html.dark .ip-close:hover{background:var(--hover2)}
html.dark .wf-card,html.dark .stepcard{background:var(--card);border-color:var(--line)}
html.dark .wf-title,html.dark .steptitle{color:var(--ink)}
html.dark .wf-desc,html.dark .stepdesc{color:var(--gray)}
html.dark .wf-soon{background:var(--bg);color:var(--gray)}
html.dark .ip-progress{border-bottom-color:var(--line)}
html.dark .ip-progress .bar{background:var(--bg)}
html.dark .ip-foot{background:var(--panel);border-top-color:var(--line)}
html.dark .instr-panel .tip.warn{color:#e8bf5a}
html.dark .instr-panel .tip.info{color:#79cfef}
html.dark .instr-panel .tip.danger{color:#f0a090}

/* ---- What's New feed ---- */
html.dark .wnitem{border-bottom-color:var(--line)}
html.dark .wnitem .wnarea{background:var(--hover2);border-color:var(--hover2);color:var(--gray)}
html.dark .wnitem .wntitle{color:var(--ink)}
html.dark .wnitem .wndate{color:#8a9aa6}
html.dark .wnitem .wndesc{color:#c3ccd3}

/* ---- Tag-a-teammate modal ---- */
html.dark .lmr-tm-card{background:var(--card)}
html.dark .lmr-tm-title{color:var(--ink)}
html.dark .lmr-tm-x:hover{background:var(--hover2)}
html.dark .lmr-tm-input{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark .lmr-tm-attach{background:#1c2b16;border-color:var(--green-lt);color:#bfe56a}
html.dark .lmr-tm-sent{background:var(--panel);border-top-color:var(--line)}
html.dark .lmr-tm-sent-main b{color:var(--ink)}
html.dark .lmr-tag-context{background:#1c2b16;border-color:var(--green-lt);color:#bfe56a}
html.dark .lmr-tag-context:hover{background:#24391d}

/* ---- generic form controls (non-inline-styled) ---- */
html.dark input,html.dark select,html.dark textarea{background:var(--bg);color:var(--ink);border-color:var(--line)}

/* ---- login gate (inline-styled → needs !important) ---- */
html.dark #lmr-gate{background:var(--bg) !important}
html.dark #lmr-gate-card{background:var(--card) !important;box-shadow:0 4px 32px rgba(0,0,0,.5) !important}
html.dark #lmr-gate input{background:var(--bg) !important;color:var(--ink) !important;border-color:var(--line) !important}

/* ---- floating theme toggle is the topbar button (styled by .wn-link) ---- */

/* ============================================================================
   PER-PAGE TAILS — each page namespaces its CSS under a unique scope, so these
   coexist in this one shared file. `html.dark <scope> <sel>` (spec ≥ the
   page's own rule) reliably wins. Pages that define their OWN var set get those
   vars remapped (relights most text + var-based borders in one shot).
   ============================================================================ */

/* ---- season-teams.html + resources.html (#lgc) ---- */
html.dark #lgc{--dark:var(--ink);--gray-900:var(--ink);--gray-600:#a2b3c1;--gray-400:var(--gray-lt);--gray-300:#42525f;--gray-100:var(--well);--gray-200:var(--hover2);--light-blue:var(--blue-tint);--light-green:#1c2b12;color:var(--gray-900)}
html.dark #lgc .table-card{background:var(--card);box-shadow:0 1px 4px rgba(0,0,0,.4)}
html.dark #lgc .filter-btn{background:var(--card);border-color:var(--line)}
html.dark #lgc .team-header{background:var(--card)}
html.dark #lgc .team-header:hover{background:var(--hover2)}
html.dark #lgc .team-panel{background:var(--card)}
html.dark #lgc a.boy-name{color:var(--link)}
html.dark #lgc .liv{color:#bfe56a}
html.dark #lgc .eb{color:#e8bf5a;border-color:#7a5a1e}
html.dark #lgc .expl-eb{border-color:#5a4a1e}
html.dark #lgc .expl-eb>summary,html.dark #lgc .expl-eb>div{color:#e2c07a}
html.dark #lgc .expl-if{background:#221d33;border-color:#3a3060}
html.dark #lgc .expl-if>summary{color:#c3b6f0}
html.dark #lgc .click-copy:hover{color:#79cfef}

/* ---- person.html + participant.html (#ppage) ---- */
html.dark #ppage .pstick{background:rgba(15,23,30,.96);border-bottom-color:var(--line)}
html.dark #ppage .pn{color:var(--ink)}
html.dark #ppage .backlink,html.dark #ppage .teamlink,html.dark #ppage a.gmail{color:var(--link)}
html.dark #ppage .relchip{background:var(--hover);border-color:var(--line);color:#d4dde4}
html.dark #ppage .relchip small{color:var(--gray)}
html.dark #ppage .vh td{border-bottom-color:var(--hover2)}
html.dark #ppage .vh .ssn,html.dark #ppage .gradv{color:var(--ink)}
html.dark #ppage .vh tr.coachrow td{background:var(--green-tint)}
html.dark #ppage .vh .rolenote,html.dark #ppage .rd-val,html.dark #ppage .namesrc{color:#9fd84e}
html.dark #ppage .editbtn{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .modal{background:var(--card)}
html.dark #ppage .modal h3{color:var(--ink)}
html.dark #ppage .modal select,html.dark #ppage .modal input[type=text],html.dark #ppage .modal textarea{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark #ppage .modal .mcancel,html.dark #ppage .nrow .nbtn,html.dark #ppage .editrow .cancel{background:var(--card);color:#c3ccd3;border-color:var(--line)}
html.dark #ppage .notebox input,html.dark #ppage .noteform textarea,html.dark #ppage .noteform input[type=date],html.dark #ppage .editrow input{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark #ppage .notebox button,html.dark #ppage .noteform button,html.dark #ppage .editrow .save{color:#14210a}
html.dark #ppage .emailbtn,html.dark #ppage .modal .msend{background:var(--hover2);color:#fff}
html.dark #ppage .irow .isub,html.dark #ppage .nrow .ntext,html.dark #ppage .hrow .hv,html.dark #ppage .ev-body{color:var(--ink)}
html.dark #ppage .irow.irow-click:hover{background:var(--hover)}
html.dark #ppage .irow,html.dark #ppage .nrow,html.dark #ppage .hrow,html.dark #ppage .lgrow,html.dark #ppage .ndiv{border-bottom-color:var(--hover2)}
html.dark #ppage .lgrow .lw{color:var(--ink)}
html.dark #ppage .lgrow .lx{color:#c3ccd3}
html.dark #ppage .ndiv{border-top-color:var(--hover2)}
html.dark #ppage .ev-meta{background:var(--bg);border-color:var(--line);color:#c3ccd3}
html.dark #ppage .milest{background:var(--amber-tint);border-color:#5a4a1e;color:#e8c877}
html.dark #ppage .milest.b1{color:#f0a090}
html.dark #ppage .milest.b2{color:#c3b6f0}
html.dark #ppage .duechip,html.dark #ppage .nrow .nbtn.done{color:#bfe56a}
html.dark #ppage .piibar,html.dark #ppage .modal .mpii{color:#f0a090;border-color:#5a2a20}
html.dark #ppage .demobar,html.dark #ppage .ef-demo{background:#2a2410;border-color:#5a4a1e;color:#e2c884}

/* ---- index.html (Home) ---- */
html.dark .bar{background:var(--ink-tint)}
html.dark .enroll-top .oa,html.dark .enroll-top .goal b,html.dark .enroll .pct{color:var(--ink)}
html.dark .tl-name,html.dark .tl .mk .lab{color:var(--ink)}
html.dark .tl .mk .dot{border-color:var(--bg)}
html.dark .tl-today b{color:#14210a}

/* ---- inventory.html + orders.html (#sup) + shared confirm dialog ---- */
html.dark #sup{--dark:var(--ink);--gray-100:var(--well);--gray-200:var(--line);--gray-300:var(--scroll);--gray-400:var(--gray-lt);--gray-600:var(--gray);--gray-900:var(--ink);color:var(--gray-900)}
html.dark #sup .card,html.dark #sup .mcard,html.dark #sup #inv-tbl tr,html.dark #sup .btn.sec,html.dark #sup .fb,html.dark #sup .pager button{background:var(--card);border-color:var(--line);color:var(--gray-900)}
html.dark #sup .btn{background:var(--hover2);color:#fff}
html.dark #sup .varwrap{background:var(--panel)}
html.dark #sup .banner{background:var(--blue-tint);border-color:#1e5566;color:#79cfef}
html.dark #sup .banner.partner{background:var(--amber-tint);border-color:#5a4a1e;color:#e2c07a}
html.dark .lmrc-card{background:var(--card)}
html.dark .lmrc-cancel{background:var(--card);color:var(--ink);border-color:var(--scroll)}

/* ---- financials.html (.f26) ---- */
html.dark .f26{--ink:inherit;color:var(--ink)}
html.dark .f26 .kpi,html.dark .f26 .panel,html.dark .f26 .reg-box,html.dark .f26 .filterbar button,html.dark .f26 .pager button{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .f26 .lane,html.dark .f26 .tbox{background:var(--panel);border-color:var(--line)}
html.dark .f26 .meter{background:var(--ink-tint)}
html.dark .f26 .clock,html.dark .f26 .tx-lead{background:var(--panel);border-color:var(--line);color:#c3ccd3}
html.dark .f26 .note{background:var(--hover2);color:#c3ccd3}
html.dark .f26 thead th{color:var(--gray);border-bottom-color:var(--line)}
html.dark .f26 tbody tr{border-bottom-color:var(--hover2)}
html.dark .f26 tbody tr:hover,html.dark .f26 .tx-pending{background:var(--panel)}
html.dark .f26 .totrow{background:#1c2b16}
html.dark .f26 footer{border-top-color:var(--line);color:var(--gray)}
html.dark .f26 footer b{color:var(--ink)}
html.dark .f26 .awaiting-banner{background:#2a2410;border-color:#5a4a1e;color:#e2c07a}
html.dark .f26 .callout{background:#2a1518;border-color:#5a2a2e}
html.dark .f26 .gitem{border-top-color:var(--hover2)}
/* f26 region-breakdown cards (added 2026-07-21 after Carbon) + chip/text sweep — dark tail 2026-07-23 */
html.dark .f26 .regcard{background:var(--card);border-color:var(--line)}
html.dark .f26 .regsub,html.dark .f26 .regfoot,html.dark .f26 .hint,html.dark .f26 .rnote,html.dark .f26 .recon-meta,html.dark .f26 .empty,html.dark .f26 .pager .pinfo,html.dark .f26 .tdate,html.dark .f26 .lane-h span,html.dark .f26 .lane-sub,html.dark .f26 .box-note,html.dark .f26 .fund-budget,html.dark .f26 .fund-foot,html.dark .f26 .kpi .l{color:var(--gray)}
html.dark .f26 .straightrow td{background:var(--panel);color:var(--gray)}
html.dark .f26 .sibtag,html.dark .f26 .simtag.plan,html.dark .f26 .m-card,html.dark .f26 .stst.st-bundle,html.dark .f26 .stlink{background:#221d33;color:#c3b6f0}
html.dark .f26 .stlink{border-color:#3a3060}
html.dark .f26 .stlink:hover{background:#2c2748;border-color:#5b45a0}
html.dark .f26 .section h2,html.dark .f26 .nat,html.dark .f26 .okc,html.dark .f26 .kpi .s,html.dark .f26 .fund-foot .rem{color:#9fd84e}
html.dark .f26 .neg,html.dark .f26 .fund-foot .rem.low{color:#e8bf5a}
html.dark .f26 .reg,html.dark .f26 .txnote,html.dark .f26 .fund-scope{color:#e2c07a}
html.dark .f26 .c-eb,html.dark .f26 .b-nat,html.dark .f26 .tag2{color:#bfe56a}
html.dark .f26 .c-rc{background:rgba(169,175,182,.15);color:#c3ccd3}
html.dark .f26 .b-reg,html.dark .f26 .stst.st-pend,html.dark .f26 .gap-chip,html.dark .f26 .fund-restrict,html.dark .f26 .rf-part{background:var(--amber-tint);border-color:#5a4a1e;color:#e2c07a}
html.dark .f26 .rf-full{background:var(--red-tint);color:#f0a090}
html.dark .f26 .callout b{color:#f0a090}
html.dark .f26 .stst.st-ok,html.dark .f26 .simtag.live,html.dark .f26 .m-ach{background:var(--green-tint);color:#bfe56a}
html.dark .f26 .willconnect,html.dark .f26 .simtag{background:var(--hover2);color:var(--gray)}
html.dark .f26 .tbox .tl{color:#c3ccd3}
html.dark .f26 .tbox .ts{color:var(--gray)}
html.dark .f26 .tbox.warn{background:#241f12}
html.dark .f26 .prov{color:var(--gray-lt)}

/* ---- Boys & Teams vs Goal + First Noticed (Aug 20 2026) ----
   The two Financials sections added below Registrations by Region. Their
   light-mode rules live in financials.html's own .f26-scoped <style>; these are
   the dark counterparts. Without them the hand-entered Goal cells render as
   near-white blocks on the dark page with pale-grey numbers on top — unreadable,
   not merely ugly. Keep the two in step when either changes. */
html.dark .f26 .grpband th{background:var(--panel);color:#9fd84e;border-bottom-color:var(--line)}
html.dark .f26 .gsplit{border-left-color:var(--line)}
html.dark .f26 td.hand{background:var(--panel);box-shadow:inset 0 0 0 1px var(--hover2)}
html.dark .f26 .totrow td.hand{background:#16240f;box-shadow:inset 0 0 0 1px #24391a}
html.dark .f26 .meter.gmeter i{background:linear-gradient(90deg,#7fb52e,#9fd84e)}
html.dark .f26 .fn-cap,html.dark .f26 .fn-key,html.dark .f26 .fn-recon{color:var(--gray)}
html.dark .f26 .fn-recon{border-left-color:var(--line)}
html.dark .f26 .fn-recon b,html.dark .f26 .fn-h2{color:var(--ink)}
html.dark .f26 .fn-toggle{border-color:var(--line)}
html.dark .f26 .fn-tbtn{background:var(--card);color:var(--gray)}
html.dark .f26 .fn-tbtn.on{background:#7fb52e;color:#10210a}
html.dark .f26 .fn-tip{background:#0f1013;box-shadow:0 6px 20px rgba(0,0,0,.6)}
html.dark .f26 .fn-caveats{color:#c3ccd3}
html.dark .f26 .fn-caveathead{color:var(--ink)}
html.dark .f26 .fn-mono{background:var(--hover2);color:#c3ccd3}
html.dark .f26 .fn-summary{color:#9fd84e}
html.dark .f26 .fn-sw-line{background:#9fd84e}
html.dark .f26 .fn-sw-gap{background:var(--amber-tint);border-color:#5a4a1e}
html.dark .f26 #fn-table td.z{color:var(--gray-lt)}
html.dark .f26 #fn-table tr.gap td{background:#2a2410;color:#e2c07a}

/* ---- onboarding.html (#onbx) ---- */
html.dark #onbx{--ink:inherit}
html.dark #onbx .det-head,html.dark #onbx .flowcard,html.dark #onbx .empty{background:var(--card);border-color:var(--line)}
html.dark #onbx .sec{border-color:var(--line)}
html.dark #onbx .sec-h{background:var(--panel)}
html.dark #onbx .task{border-top-color:var(--hover2)}
html.dark #onbx .task .box{background:var(--bg);border-color:var(--scroll)}
html.dark #onbx .lockn{background:var(--panel);color:var(--gray)}
html.dark #onbx .av{background:var(--ink-tint);color:#c3ccd3}
html.dark #onbx .banner{background:#1c2b16}

/* ---- onboarding-admin.html (#onbadm) ---- */
html.dark #onbadm{--ink:inherit;--line:inherit}
html.dark #onbadm .panel,html.dark #onbadm .panelblank,html.dark #onbadm .tile,html.dark #onbadm .tpl,html.dark #onbadm .strow,html.dark #onbadm .btn,html.dark #onbadm .mv,html.dark #onbadm .staffsel,html.dark #onbadm .reqtog,html.dark #onbadm .newtpl{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #onbadm .btn.p{background:var(--hover2);color:#fff}
html.dark #onbadm .tabs{background:var(--panel);border-color:var(--line)}
html.dark #onbadm .mini{background:var(--ink-tint)}
html.dark #onbadm .stepline,html.dark #onbadm .tkrow,html.dark #onbadm .st-b{border-color:var(--hover2)}
html.dark #onbadm .note{background:var(--blue-tint);border-color:#1e5566;color:#9fd0e6}
html.dark #onbadm .sentbox{background:#1c2b16}

/* ---- recruitment.html (#rec) — cards keep their colored left border ---- */
html.dark #rec .card,html.dark #rec .col,html.dark #rec .lane,html.dark #rec .mcard,html.dark #rec .qbtn.note,html.dark #rec .sp,html.dark #rec .sn,html.dark #rec .btn.sugg,html.dark #rec .chip,html.dark #rec .x,html.dark #rec .form input,html.dark #rec .form select,html.dark #rec .form textarea,html.dark #rec .controls input[type=search],html.dark #rec .controls select,html.dark #rec .noteadd textarea,html.dark #rec .seasontog button.on{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #rec .card{border-left-color:currentColor;border-top-color:var(--line);border-right-color:var(--line);border-bottom-color:var(--line)}
html.dark #rec .panel{background:var(--card)}
html.dark #rec .panel.big .p-body{background:var(--panel)}
html.dark #rec .col-head,html.dark #rec .hrow,html.dark #rec .srow,html.dark #rec .p-head{border-color:var(--line);border-bottom-color:var(--line)}
html.dark #rec .ckrow,html.dark #rec .srow2{border-top-color:var(--hover2)}
html.dark #rec .co,html.dark #rec .count,html.dark #rec .stat,html.dark #rec .seasontog,html.dark #rec .safebox,html.dark #rec .noprof{background:var(--panel);border-color:var(--line);color:var(--ink)}
html.dark #rec .relchip{background:var(--hover);border-color:var(--line);color:#d4dde4}
html.dark #rec .log{border-left-color:var(--line)}
html.dark #rec .toast{background:var(--chrome)}

/* ---- team-setup.html (#ts) — tcard keeps its blue left border ---- */
html.dark #ts .card,html.dark #ts .btn-ghost,html.dark #ts .copybtn,html.dark #ts .fbtn,html.dark #ts .gate,html.dark #ts .livechip,html.dark #ts .refresh,html.dark #ts .pickrow,html.dark #ts .picker,html.dark #ts a.testbtn,html.dark #ts select.evpick{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #ts .tcard{background:var(--card);border-top-color:var(--line);border-right-color:var(--line);border-bottom-color:var(--line)}
html.dark #ts .modal,html.dark #ts .search{background:var(--panel);border-color:var(--line);color:var(--ink)}
html.dark #ts .mfoot,html.dark #ts .adminrow{background:var(--panel);border-color:var(--line)}
html.dark #ts .frow,html.dark #ts .logrow{border-bottom-color:var(--hover2)}
html.dark #ts .prog .seg{background:var(--ink-tint);border-color:var(--line)}
html.dark #ts .expnote,html.dark #ts .pwnote,html.dark #ts .note.advisory,html.dark #ts .pill.pw,html.dark #ts .chip-c.pwc,html.dark #ts .prov.pw{background:var(--blue-tint);border-color:#1e5566;color:#79cfef}
html.dark #ts input.osdate,html.dark #ts textarea{background:var(--panel);border-color:var(--green-lt);color:var(--ink)}

/* ---- merge.html (#mpage) — pair keeps its colored left border ---- */
html.dark #mpage .card,html.dark #mpage .pair,html.dark #mpage .steps .s,html.dark #mpage label.pick,html.dark #mpage .btn.ghost{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #mpage .pair.med{border-left-color:#e0883a}
html.dark #mpage .confbar{background:var(--ink-tint)}
html.dark #mpage .rr{border-bottom-color:var(--hover2)}
html.dark #mpage .rr:hover{background:var(--hover)}
html.dark #mpage .note-item{background:var(--panel)}
html.dark #mpage .modetoggle,html.dark #mpage .modetoggle .mbtn.on{background:var(--panel)}
html.dark #mpage .adminlock,html.dark #mpage .minorsafe{background:#221d33;border-color:#3a3060;color:#c3b6f0}
html.dark #mpage .okbox,html.dark #mpage .qempty{background:#12261a;border-color:#2f6d43;color:#8fe3a8}
html.dark #mpage .mq-alert,html.dark #mpage .warnbox{background:#2a2410;border-color:#5a4a1e;color:#e2c07a}

/* ---- households.html (#hpage) + alumni.html (#apage) + shared compare (.cmp) ---- */
html.dark #hpage .tblwrap,html.dark #apage .tblwrap,html.dark #hpage .actbtn.dismiss,html.dark #apage .actbtn.dismiss{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #hpage td,html.dark #apage td{border-bottom-color:var(--hover2)}
html.dark #hpage .toolrow input,html.dark #hpage .toolrow select,html.dark #apage .toolrow input,html.dark #apage .toolrow select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark .cmp{background:var(--bg)}
html.dark .cmp-col{background:var(--card);border-color:var(--line)}
html.dark .cmp-col td{border-bottom-color:var(--hover2)}
html.dark .cmp-sub{background:var(--panel);border-bottom-color:var(--line);color:#c3ccd3}
html.dark .pchip{background:var(--hover);border-color:var(--line);color:#d4dde4}

/* ---- people.html (#ppl) ---- */
html.dark #ppl .filterbar,html.dark #ppl .pcard,html.dark #ppl .sumcard,html.dark #ppl .morebtn,html.dark #ppl .rolepill{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #ppl .rolepill.on,html.dark #ppl .peoplelead{background:var(--hover2);color:#fff;border-color:var(--hover2)}
html.dark #ppl .rolepill .cnt{background:var(--ink-tint);color:#c3ccd3}
html.dark #ppl .filterrow+.filterrow{border-top-color:var(--hover2)}
html.dark #ppl .toolrow input,html.dark #ppl .toolrow select,html.dark #ppl .daterow select{background:var(--bg);border-color:var(--line);color:var(--ink)}

/* ---- donations.html (.don) ---- */
html.dark .don .tblwrap,html.dark .don .toolbar2,html.dark .don .toolbar2 input,html.dark .don select,html.dark .don .search input,html.dark .don .pager button,html.dark .don .pill{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .don .pill.on{background:var(--hover2);color:#fff;border-color:var(--hover2)}

/* ---- early-bird.html (.eb-*) ---- */
html.dark .eb-chip,html.dark .eb-x{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .eb-chip.on{background:var(--hover2);color:#fff;border-color:var(--hover2)}
html.dark .ebmail{background:var(--card)}
html.dark .ebmail .ebm-cancel{background:var(--card);border-color:var(--line);color:#c3ccd3}
html.dark .ebm-checks .em-chk{background:var(--panel);border-color:var(--line)}
html.dark .sgrp-h{background:var(--card);border-color:var(--line)}

/* ============================================================================
   POST-DEPLOY FIXES — Jul 19 2026 (JB reviewed live dark pages)
   ============================================================================ */

/* ---- resources.html (#lgc .res-*) — cards used background:white (literal) ---- */
html.dark #lgc{--gray-500:var(--gray)}
html.dark #lgc .res-card{background:var(--card);border-color:var(--line)}
html.dark #lgc .res-card.res-uc-card{background:var(--panel)}
html.dark #lgc .res-card.res-uc-card .res-ic,html.dark #lgc .res-card.res-uc-card .res-t,html.dark #lgc .res-card.res-uc-card .res-s{opacity:.5}
html.dark #lgc .res-search input{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark #lgc .res-gh{border-bottom-color:var(--line)}

html.dark #ts{color:var(--ink)}
/* ---- team-setup.html (#ts) — dim titles + low-contrast muted text + ghost btn ---- */
html.dark #ts .tcard h2,html.dark #ts .card h3{color:var(--ink)}
html.dark #ts .tcard .region,html.dark #ts .prog .n,html.dark #ts .quick,html.dark #ts .frow .k,html.dark #ts .hint,html.dark #ts .state,html.dark #ts .count,html.dark #ts .gsec,html.dark #ts .livechip,html.dark #ts .byline b{color:var(--gray)}
html.dark #ts .prog .n b{color:#bfe56a}
html.dark #ts .btn-ghost{color:#cfe0ec}
html.dark #ts .refresh,html.dark #ts .copybtn,html.dark #ts a.testbtn{color:#79cfef}
html.dark #ts .pwnote{background:var(--blue-tint);border-color:#1e5566;color:#9fd0e6}
html.dark #ts .pwnote b,html.dark #ts .card.pwside h3{color:#79cfef}
html.dark #ts .datepair label,html.dark #ts .card.osside h3{color:#9fd84e}

/* ---- recruitment.html (#rec) — relight base text (scope set color:#1a2a35) ---- */
html.dark #rec{color:var(--ink)}
html.dark #rec .co,html.dark #rec .count,html.dark #rec .chip.role,html.dark #rec .tagN,html.dark #rec .hrow,html.dark #rec .srow2,html.dark #rec .team-boy-grade{color:var(--gray)}
html.dark #rec .seasontog button.on,html.dark #rec .qbtn.note,html.dark #rec .sp{color:var(--ink)}

/* ============================================================================
   team-creation (#tc) · team-requests (#tr) · website-info (#wi) — Jul 19 2026
   Each sets `#scope{color:#1a2a35}` (relight root) + white cards + #636466 muted.
   ============================================================================ */

/* ---- team-creation.html (#tc) ---- */
html.dark #tc{color:var(--ink)}
html.dark #tc .arc .lab b,html.dark #tc .explain b,html.dark #tc .closing p{color:var(--ink)}
html.dark #tc .arc .lab span,html.dark #tc .stage-head .where,html.dark #tc .embed-note{color:var(--gray)}
html.dark #tc .stage-head .where a,html.dark #tc .embed-note a{color:#79cfef}
html.dark #tc .explain{background:var(--card);border-color:var(--line)}
html.dark #tc .explain h3,html.dark #tc .whathappens .lb{color:#9fd84e}
html.dark #tc .whathappens{background:#1c2b16}
html.dark #tc .embed-wrap{background:var(--panel);border-color:var(--line)}
html.dark #tc .embed-note{background:var(--panel)}
html.dark #tc .rule{background:var(--line)}
html.dark #tc .closing{background:var(--blue-tint);border-color:#1e5566}
html.dark #tc .closing h3{color:#9fd0e6}

/* ---- team-requests.html (#tr) — .req keeps its colored left border ---- */
html.dark #tr{color:var(--ink)}
html.dark #tr .controls input[type=search],html.dark #tr .controls select,html.dark #tr .form input,html.dark #tr .form textarea,html.dark #tr .noteadd textarea,html.dark #tr .regrow select,html.dark #tr .fchip,html.dark #tr .x,html.dark #tr .sp,html.dark #tr .match button,html.dark #tr .actbtn.ghost{background:var(--bg);color:var(--ink);border-color:var(--line)}
html.dark #tr .req{background:var(--card);border-top-color:var(--line);border-right-color:var(--line);border-bottom-color:var(--line)}
html.dark #tr .panel{background:var(--card)}
html.dark #tr .p-head,html.dark #tr .match{border-bottom-color:var(--line)}
html.dark #tr .req .loc,html.dark #tr .req .meta,html.dark #tr .p-head .st,html.dark #tr .sec h3,html.dark #tr .match .ms,html.dark #tr .hint,html.dark #tr .stateline,html.dark #tr .x{color:var(--gray)}
html.dark #tr .kv a,html.dark #tr .match .mn a,html.dark #tr .linked a,html.dark #tr .match button,html.dark #tr .actbtn.ghost{color:#79cfef}
html.dark #tr .linked{background:#1c2b16;border-color:var(--green-lt);color:#bfe56a}
html.dark #tr .log{border-left-color:var(--line)}
html.dark #tr .form input[readonly]{background:var(--panel);color:var(--gray)}

/* ---- website-info.html (#wi) — .pcard keeps its colored left border ---- */
html.dark #wi{color:var(--ink)}
html.dark #wi .state,html.dark #wi .livechip,html.dark #wi .counts,html.dark #wi .count,html.dark #wi .alert .ometa,html.dark #wi .tkey b,html.dark #wi .flabel,html.dark #wi .byline b,html.dark #wi .v .k{color:var(--gray)}
html.dark #wi .livechip,html.dark #wi .refresh,html.dark #wi .fbtn,html.dark #wi .search,html.dark #wi select.evpick,html.dark #wi textarea,html.dark #wi .btn-ghost,html.dark #wi .btn-danger{background:var(--bg);border-color:var(--line)}
html.dark #wi .refresh,html.dark #wi .alert.info .oh{color:#79cfef}
html.dark #wi .card,html.dark #wi .trow,html.dark #wi .alert{background:var(--card);border-color:var(--line)}
html.dark #wi .cardtitle,html.dark #wi .evname,html.dark #wi .pcname,html.dark #wi .padd,html.dark #wi .v{color:var(--ink)}
html.dark #wi .alert .ob{background:#2a1518;border-color:#5a2a2e;color:var(--ink)}
html.dark #wi .pubwarn{background:var(--amber-tint);border-color:#5a4a1e;color:#e2c07a}
html.dark #wi .pubwarn b{color:#f0d597}
html.dark #wi .expnote{background:var(--blue-tint);border-color:#1e5566;color:#79cfef}
html.dark #wi .evcode{background:var(--hover2);color:var(--gray)}
html.dark #wi .evrule{background:var(--line)}
html.dark #wi .colhdr{background:var(--panel);border-bottom-color:var(--line);color:var(--gray)}
html.dark #wi .left{border-right-color:var(--line);border-bottom-color:var(--line)}
html.dark #wi .right{background:var(--card)}
html.dark #wi .pcwrap{background:var(--panel)}
html.dark #wi .pcard{background:var(--card);border-top-color:var(--line);border-right-color:var(--line);border-bottom-color:var(--line)}
html.dark #wi .pcbody,html.dark #wi .v{border-top-color:var(--line);border-bottom-color:var(--hover2)}
html.dark #wi .paddwrap{background:#1c2b16;border-color:var(--green-lt)}
html.dark #wi .paddlbl,html.dark #wi .pmore{color:#9fd84e}


/* ============================================================================
   DARK — Start a Team ACTIONABLE queue additions (#tr piles/modals/buttons) +
   the person-profile "Start a Team" card (#ppage .sat*). Jul 20 2026. Additive
   only; values reuse the established dark palette above (card var(--card), line
   var(--line), blue-tint var(--blue-tint), green-tint var(--green-tint)).
   ============================================================================ */
html.dark #tr .mk-actions{border-top-color:var(--line)}
html.dark #tr .mka.blue,html.dark #tr .mka.mute,html.dark #tr .mka.reopen{background:var(--bg);color:#79cfef;border-color:var(--line)}
html.dark #tr .mka.mute{color:var(--gray)}
html.dark #tr .mka.blue.did{background:var(--blue-tint);border-color:#2b5566;color:#bfe6f2}
html.dark #tr .liaison{background:var(--blue-tint);border-color:#2b5566;color:#bfe6f2}
html.dark #tr .liaison .rl{color:#79cfef}
html.dark #tr .out.team,html.dark #tr .out.linked,html.dark #tr .out.legacy{background:var(--green-tint);border-color:var(--green-lt);color:#bfe56a}
html.dark #tr .out.coach{background:var(--blue-tint);border-color:#2b5566;color:#9fdcf3}
html.dark #tr .out.nn{background:var(--card);border-color:var(--line);color:var(--gray)}
html.dark #tr details.pile{background:var(--card);border-color:var(--line)}
html.dark #tr details.pile summary{color:var(--ink)}
html.dark #tr details.pile summary .ct{background:var(--ink-tint);color:var(--gray)}
html.dark #tr .pile .req{background:var(--panel)}
html.dark #tr .nsbtn.blue,html.dark #tr .nsbtn.mute{background:var(--bg);border-color:var(--line)}
html.dark #tr .nsbtn.blue{color:#79cfef}
html.dark #tr .nsbtn.mute{color:var(--gray)}
html.dark #tr .nsbtn.blue.did{background:var(--blue-tint);border-color:#2b5566;color:#bfe6f2}
html.dark #tr .mkm{background:var(--panel)}
html.dark #tr .mkm .fld label{color:var(--gray)}
html.dark #tr .mkm input,html.dark #tr .mkm select,html.dark #tr .mkm textarea{background:var(--bg);color:var(--ink);border-color:var(--green-lt)}
html.dark #tr .mkm input[readonly]{background:var(--panel);color:var(--gray);border-color:var(--line)}
html.dark #tr .mkm select.missing{background:var(--red-tint);border-color:#c0503f}
html.dark #tr .mkm .inf{background:var(--blue-tint);border-color:#2b5566;color:#cfe8f3}
html.dark #tr .mkm .mf{background:var(--card);border-top-color:var(--line)}
html.dark #tr .mkm .nope{background:var(--bg);color:var(--gray);border-color:var(--line)}
html.dark #tr .mkm .who2 .av{background:var(--blue-tint);border-color:#2b5566;color:#9fdcf3}
html.dark #tr .mkm ul{color:var(--ink)}
html.dark #tr .mkm .quote{color:var(--gray);border-left-color:var(--line)}
html.dark #ppage .roleicon.liaison{background:var(--blue-tint)}
html.dark #ppage .satrow{border-bottom-color:var(--hover2)}
html.dark #ppage .satstate.team,html.dark #ppage .satstate.linked{background:var(--green-tint);border-color:var(--green-lt);color:#bfe56a}
html.dark #ppage .satstate.coach{background:var(--blue-tint);border-color:#2b5566;color:#9fdcf3}
html.dark #ppage .satstate.nn,html.dark #ppage .satstate.done{background:var(--card);border-color:var(--line);color:var(--gray)}

/* ---- Calendar (.lmrcal) dark tail — page previously had NO dark coverage
   (white cells, invisible month title). Added 2026-07-20 w/ Carbon. ---- */
html.dark .lmrcal{color:var(--ink)}
html.dark .lmrcal .lc-navbtn{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .lmrcal .lc-today{background:var(--card)}
html.dark .lmrcal .lc-seg{border-color:var(--line)}
html.dark .lmrcal .lc-seg button{background:var(--card);color:var(--gray)}
html.dark .lmrcal .lc-seg button.on{background:var(--ink-tint);color:var(--ink)}
html.dark .lmrcal .lc-dow div{color:var(--gray)}
html.dark .lmrcal .lc-cell{background:var(--card);border-color:var(--line)}
html.dark .lmrcal .lc-cell:hover{border-color:var(--scroll);box-shadow:0 2px 8px rgba(0,0,0,.4)}
html.dark .lmrcal .lc-cell.out{background:var(--well);opacity:.55}
html.dark .lmrcal .lc-ev{background:var(--ink-tint);color:var(--ink)}
@supports(background:color-mix(in srgb,red 10%,blue)){
  html.dark .lmrcal .lc-ev{background:color-mix(in srgb, var(--eb) 14%, var(--card))}
}
html.dark .lmrcal .lc-more{color:var(--link)}
html.dark .lmrcal .lc-legend{color:var(--gray)}
html.dark .lmrcal .lc-dayhd{border-bottom-color:var(--line)}
html.dark .lmrcal .lc-dayhd .dw{color:var(--gray)}
/* full-page calendar modals (appended to body, scope .lmrcal-modals) */
html.dark .lmrcal-modals .lc-panel{background:var(--card);color:var(--ink)}
html.dark .lmrcal-modals .lc-form input,html.dark .lmrcal-modals .lc-form select,html.dark .lmrcal-modals .lc-form textarea{background:var(--panel);color:var(--ink);border-color:var(--line)}
html.dark .lmrcal-modals .lc-dayadd{background:var(--green-tint);color:#bfe56a}

/* ---- team-setup dark polish (2026-07-20): 1) html.dark #ts .prog .seg
   out-specifies #ts .prog .seg.lit so lit segments lost their green;
   2) .tag/.tag.miss/.pill.st-closed had no dark treatment. ---- */
html.dark #ts .prog .seg.lit{background:var(--green);border-color:var(--green)}
html.dark #ts .tag{background:var(--ink-tint);border-color:var(--line);color:var(--gray)}
html.dark #ts .tag.ok{background:var(--green-tint);border-color:var(--green-lt);color:#bfe56a}
html.dark #ts .tag.miss{background:var(--amber-tint);border-color:#7a5a1e;color:#e8bf5a}
html.dark #ts .pill.st-closed{background:var(--hover2);color:var(--gray)}

/* ==== Resource/doc pages dark tails (2026-07-23) — these six pages had NO
   dark coverage: white cards + hard-coded #1a2a35 ink went invisible on the
   Carbon background. Scoped per page id; light mode untouched. ==== */

/* ---- glossary.html (#gloss) ---- */
html.dark #gloss .g-search{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #gloss .g-search:focus{border-color:var(--blue)}
html.dark #gloss .g-jump a{background:var(--blue-tint);color:#79cfef}
html.dark #gloss .g-jump a:hover{background:#2b8fb4;color:#fff}
html.dark #gloss .g-group > h2{color:#9fd84e}
html.dark #gloss .g-group > .g-glede,html.dark #gloss .g-none,html.dark #gloss .g-foot{color:var(--gray)}
html.dark #gloss .term{background:var(--card);border-color:var(--line)}
html.dark #gloss .term h3,html.dark #gloss .term .def{color:var(--ink)}
html.dark #gloss .term h3 .alt{color:var(--gray)}
html.dark #gloss .term .eg{background:var(--blue-tint);color:#c9e3ef;border-left-color:#2b8fb4}
html.dark #gloss .term .eg b{color:#79cfef}
html.dark #gloss .term .care{background:var(--amber-tint);color:#e2c07a;border-left-color:#a86a2a}
html.dark #gloss .term code{background:var(--hover2);color:var(--ink)}

/* ---- continuity-plan.html (#cont) — pre.map is already dark, left as-is ---- */
html.dark #cont .c-lead,html.dark #cont h2,html.dark #cont h3,html.dark #cont p{color:var(--ink)}
html.dark #cont h2{border-bottom-color:var(--line)}
html.dark #cont code{background:var(--hover2);color:var(--ink)}
html.dark #cont table{background:var(--card);border-color:var(--line)}
html.dark #cont th{background:var(--panel2);color:var(--gray)}
html.dark #cont th,html.dark #cont td{border-bottom-color:var(--line)}
html.dark #cont .c-callout{background:var(--amber-tint);border-color:#5a4a1e;border-left-color:#a86a2a;color:#e2c07a}
html.dark #cont .c-fill{background:#2a1518;border-color:#7a4a52;color:#e8a7b0}
html.dark #cont .c-fill b{color:#f0bfc7}
html.dark #cont .c-crit,html.dark #cont .c-box{background:var(--card);border-color:var(--line)}
html.dark #cont .c-crit{border-left-color:var(--red-edge)}
html.dark #cont .c-crit li,html.dark #cont .c-box li{color:var(--ink)}
html.dark #cont .c-crit li b{color:#f0a090}
html.dark #cont .pill.ok{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #cont .pill.risk{background:var(--red-tint);color:#f0a090;border-color:#5a2a20}
html.dark #cont .c-foot{color:var(--gray)}
html.dark #cont .c-start{background:var(--card);border-color:var(--red-edge);box-shadow:0 2px 12px rgba(0,0,0,.4)}
html.dark #cont .c-start .c-start-h{color:#f0a090}
html.dark #cont .c-start .c-start-h .tag{background:var(--red-tint);color:#f0a090;border-color:#5a2a20}
html.dark #cont .c-start .lede,html.dark #cont .c-start li{color:var(--ink)}
html.dark #cont .c-start .mini{background:var(--amber-tint);color:#e2c07a;border-left-color:#a86a2a}

/* ---- teams-data-flow.html (#tdf) — the SVG diagram stays a light "figure"
   panel on purpose (pastel fills + colored strokes are baked into the SVG) ---- */
html.dark #tdf .tdf-lead,html.dark #tdf h2,html.dark #tdf h3,html.dark #tdf p{color:var(--ink)}
html.dark #tdf h2{border-bottom-color:var(--line)}
html.dark #tdf .tdf-tldr{background:var(--card);border-color:var(--line);border-left-color:#2b8fb4;color:var(--ink)}
html.dark #tdf .tdf-tldr b{color:var(--ink)}
html.dark #tdf code{background:var(--hover2);color:var(--ink)}
html.dark #tdf table{background:var(--card);border-color:var(--line)}
html.dark #tdf th{background:var(--panel2);color:var(--gray)}
html.dark #tdf th,html.dark #tdf td{border-bottom-color:var(--line)}
html.dark #tdf .pill.pw{background:var(--amber-tint);color:#e8bf5a;border-color:#5a4a1e}
html.dark #tdf .pill.wp{background:var(--blue-tint);color:#79cfef;border-color:#1e5566}
html.dark #tdf .pill.os{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #tdf .pill.sb{background:#221d33;color:#c3b6f0;border-color:#3a3060}
html.dark #tdf .tdf-gotcha{background:var(--card);border-color:var(--line)}
html.dark #tdf .tdf-gotcha li{color:var(--ink)}
html.dark #tdf .tdf-foot{color:var(--gray)}

/* ---- region-map.html (#rmap) — colored state cells keep their inline brand
   colors; "white states = national coverage" stays literally white ---- */
html.dark #rmap .season select,html.dark #rmap .editpanel select,html.dark #rmap .orow select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #rmap .editbtn{background:var(--card);color:#79cfef}
html.dark #rmap .lg{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #rmap .lg .who{color:var(--gray)}
html.dark #rmap .lg.on{border-color:var(--ink)}
html.dark #rmap .mapcard,html.dark #rmap .detail,html.dark #rmap .ownercard{background:var(--card);border-color:var(--line)}
html.dark #rmap .stcell{background:var(--panel);border-color:var(--line);color:var(--ink)}
html.dark #rmap .stcell:hover{box-shadow:0 3px 12px rgba(0,0,0,.55)}
html.dark #rmap .stcell.sel{outline-color:var(--ink)}
html.dark #rmap .detail h2,html.dark #rmap .kv,html.dark #rmap .ownercard h2,html.dark #rmap .orow .tn{color:var(--ink)}
html.dark #rmap .detail .sub,html.dark #rmap .kv b,html.dark #rmap .hint,html.dark #rmap .editpanel label,html.dark #rmap .ownercard p{color:var(--gray)}
html.dark #rmap .stchip{background:var(--panel);border-color:var(--line);color:var(--ink)}
html.dark #rmap .editpanel{border-top-color:var(--line)}
html.dark #rmap .orow{border-bottom-color:var(--line)}
html.dark #rmap .editnote{color:#e8bf5a}
html.dark #rmap .savemsg.ok{color:#9fd84e}

/* ---- org-chart.html (#orgc) — tier top-bars keep their inline region colors ---- */
html.dark #orgc .spine,html.dark #orgc .tick{background:var(--line)}
html.dark #orgc .tlabel{color:var(--gray)}
html.dark #orgc .pc{background:var(--card);border-right-color:var(--line);border-bottom-color:var(--line);border-left-color:var(--line)}
html.dark #orgc .pc:hover{box-shadow:0 5px 16px rgba(0,0,0,.5)}
html.dark #orgc .pc.sel{outline-color:var(--ink)}
html.dark #orgc .pc .nm{color:var(--ink)}
html.dark #orgc .pc .ttl{color:var(--gray)}
html.dark #orgc .pc.co{background:var(--panel)}
html.dark #orgc .legend{color:var(--gray)}
html.dark #orgc .ofoot,html.dark #orgc .foot{color:var(--gray-lt)}
html.dark #orgc .dcard{background:var(--card);border-color:var(--line)}
html.dark #orgc .dcard h2,html.dark #orgc .kv{color:var(--ink)}
html.dark #orgc .dcard .sub,html.dark #orgc .kv b,html.dark #orgc .hint{color:var(--gray)}
html.dark #orgc .kv a{color:var(--link)}
html.dark #orgc .peoplelink{background:var(--card);color:#79cfef}
html.dark #orgc .racc{border-top-color:var(--line)}
html.dark #orgc .racc h3{color:var(--ink)}
html.dark #orgc .racc .rhint,html.dark #orgc .racc .rstatus{color:var(--gray)}
html.dark #orgc .racc label{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #orgc .racc label.on{background:var(--blue-tint);border-color:#2b5566;color:#79cfef}

/* ---- background-check-links.html (#bgc) ---- */
html.dark #bgc .bgc-note{background:var(--blue-tint);color:#c9e3ef;border-left-color:#2b8fb4}
html.dark #bgc .bgc-note b{color:#79cfef}
html.dark #bgc .bgc-sec{color:#9fd84e}
html.dark #bgc .bgc-sub,html.dark #bgc .bgc-foot{color:var(--gray)}
html.dark #bgc .lk{background:var(--card);border-color:var(--line)}
html.dark #bgc .lk-region{color:var(--ink)}
html.dark #bgc .lk-url{background:var(--panel);border-color:var(--line);color:#79cfef}
html.dark #bgc .lk-copy{background:var(--hover2);color:#fff}
html.dark #bgc .lk-copy:hover{background:#2b8fb4}
html.dark #bgc .lk-copy.ok{background:#4a7a10}
html.dark #bgc .bgc-care{background:var(--amber-tint);color:#e2c07a;border-left-color:#a86a2a}
html.dark #bgc .bgc-care b{color:#f0d597}
html.dark #cont .c-prog{background:var(--green-tint);border-color:var(--green-lt);border-left-color:#7aa32e;color:#cfe0b8}
html.dark #cont .c-prog b{color:#bfe56a}

/* ==== FULL-AUDIT dark tails (2026-07-23, pass 2) — every remaining page
   swept: directory pages (#cpage/#tpage/#tprofile), checklists suite
   (#asn/#mgr/#onbtpl), users/usage/templates (#musers/#usage/#etpage),
   assigned-coaches (#ac), recruitment guide (#rguide), plus gap fills for
   #lgc(historical) .don .cmp #sup .eb #onbx #ppl #mpage #ppage(site) s26,
   calendar modals, and the var(--ink)-as-background button trap. ==== */

/* ---- shared: ink-background buttons/bars that flip light in dark ---- */
html.dark .cmp-head{background:var(--panel2);color:var(--ink)}
html.dark .don .toast,html.dark .eb-toast{background:var(--chrome);color:#fff}

/* ---- assigned-coaches.html (#ac) ---- */
html.dark #ac{--dark:var(--ink);--gray-900:var(--ink);--gray-600:var(--gray);--gray-200:var(--line);--gray-100:var(--hover2)}
html.dark #ac .team{background:var(--card);box-shadow:0 1px 4px rgba(0,0,0,.4)}
html.dark #ac select.txt,html.dark #ac input.txt{background:var(--bg)}
html.dark #ac .rg,html.dark #ac .sub.pw{background:var(--blue-tint);color:#79cfef}
html.dark #ac .sub.os{color:#9fd84e}
html.dark #ac .av.pw{background:var(--blue-tint);color:#9fdcf3}
html.dark #ac .av.os{background:var(--green-tint);color:#bfe56a}
html.dark #ac .who .meta a{color:var(--link)}
html.dark #ac .osbadge{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #ac .btn{background:var(--card);color:#79cfef}
html.dark #ac .nowv{color:#e2c07a}

/* ---- onboarding-assign.html (#asn) ---- */
html.dark #asn .asn-card,html.dark #asn .asn-row,html.dark #asn .asn-blocked{background:var(--card);border-color:var(--line)}
html.dark #asn .asn-card h2,html.dark #asn .asn-listwrap h2,html.dark #asn .asn-name{color:var(--ink)}
html.dark #asn .asn-card .hint,html.dark #asn label,html.dark #asn .asn-count,html.dark #asn .asn-meta,html.dark #asn .asn-blocked,html.dark #asn .asn-loadmsg{color:var(--gray)}
html.dark #asn input,html.dark #asn select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #asn .p-invited{background:var(--amber-tint);color:#e2c07a}
html.dark #asn .p-prog{background:var(--blue-tint);color:#79cfef}
html.dark #asn .p-done{background:var(--green-tint);color:#bfe56a}
html.dark #asn .asn-loadmsg.err{background:var(--red-tint);border-color:#5a2a20;color:#f0a090}

/* ---- onboarding-manager.html (#mgr) ---- */
html.dark #mgr .mgr-item,html.dark #mgr .mgr-empty,html.dark #mgr .mgr-blocked{background:var(--card);border-color:var(--line)}
html.dark #mgr .mgr-name,html.dark #mgr .mgr-step{color:var(--ink)}
html.dark #mgr .mgr-note,html.dark #mgr .mgr-sub,html.dark #mgr .mgr-bartext,html.dark #mgr .mgr-empty,html.dark #mgr .mgr-blocked{color:var(--gray)}
html.dark #mgr .mgr-caret{color:var(--gray-lt)}
html.dark #mgr .mgr-track{background:var(--ink-tint)}
html.dark #mgr .st-done{background:var(--green-tint);color:#bfe56a}
html.dark #mgr .st-prog{background:var(--amber-tint);color:#e2c07a}
html.dark #mgr .st-none{background:var(--hover2);color:var(--gray)}
html.dark #mgr .mgr-detail{border-top-color:var(--hover2)}
html.dark #mgr .mgr-tick.off{background:var(--hover2);color:var(--gray-lt)}
html.dark #mgr .mgr-step.off .mgr-sname{color:var(--gray-lt)}

/* ---- onboarding-templates.html (#onbtpl) ---- */
html.dark #onbtpl .tedit,html.dark #onbtpl .tpl,html.dark #onbtpl .gate,html.dark #onbtpl .catblk,html.dark #onbtpl .sec{background:var(--card);border-color:var(--line)}
html.dark #onbtpl .tpl.sel{border-color:var(--green);box-shadow:0 0 0 2px var(--green-lt)}
html.dark #onbtpl .tpl .tmeta,html.dark #onbtpl .sec-h .grip,html.dark #onbtpl .fld label,html.dark #onbtpl .tk .req,html.dark #onbtpl .pbi .req,html.dark #onbtpl .gt small,html.dark #onbtpl .loading,html.dark #onbtpl .mergebar .ml{color:var(--gray)}
html.dark #onbtpl .tpl .def{background:var(--amber-tint);color:#e2c07a}
html.dark #onbtpl .knd.flow,html.dark #onbtpl .gatetag.after,html.dark #onbtpl .gchip.after{background:var(--blue-tint);color:#79cfef}
html.dark #onbtpl .knd.pre,html.dark #onbtpl .gatetag.any,html.dark #onbtpl .gchip.any{background:var(--green-tint);color:#bfe56a}
html.dark #onbtpl .gatetag.final,html.dark #onbtpl .gchip.final,html.dark #onbtpl .gchip.lk{background:#221d33;color:#c3b6f0}
html.dark #onbtpl .newtpl{background:var(--card);border-color:#2b5566;color:#79cfef}
html.dark #onbtpl .btn{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #onbtpl .btn.dgr{color:#f0a090;border-color:#5a2a20}
html.dark #onbtpl .mergebar{background:var(--panel);border-color:var(--line)}
html.dark #onbtpl .chip{background:var(--card);border-color:var(--line);color:#79cfef}
html.dark #onbtpl .chip:hover{background:var(--hover)}
html.dark #onbtpl .sec-h{background:var(--panel2)}
html.dark #onbtpl .sec-h .mv{background:var(--card);border-color:var(--line);color:var(--gray)}
html.dark #onbtpl .sec-b,html.dark #onbtpl .gb{border-top-color:var(--hover2)}
html.dark #onbtpl .fld input,html.dark #onbtpl .fld select,html.dark #onbtpl .fld textarea,html.dark #onbtpl .tk input[type=text],html.dark #onbtpl .pbi input,html.dark #onbtpl .pbi select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #onbtpl .roview{background:var(--amber-tint);border-left-color:var(--amber-edge);color:#e2c07a}
html.dark #onbtpl .ovc{background:var(--panel)}
html.dark #onbtpl .gate.locked{background:var(--panel)}
html.dark #onbtpl .gn{background:var(--hover2)}
html.dark #onbtpl .lockn{background:var(--amber-tint);border-color:#5a4a1e;color:#e2c07a}

/* ---- recruitment-guide.html (#rguide) ---- */
html.dark #rguide .step{background:var(--card);border-color:var(--line)}
html.dark #rguide .st-title,html.dark #rguide .st-desc{color:var(--ink)}
html.dark #rguide .tip.info{background:var(--blue-tint);color:#79cfef}
html.dark #rguide .tip.warn{background:var(--amber-tint);color:#e2c07a}
html.dark #rguide .tip.danger{background:var(--red-tint);color:#f0a090}
html.dark #rguide .foot{color:var(--gray)}

/* ---- manage-users.html (#musers + #mu-modal) ---- */
html.dark #musers .mu-seg,html.dark #musers .mu-seg button,html.dark #musers .mu-edit,html.dark #musers .mu-blocked,html.dark #musers .flagp.rec{background:var(--card);border-color:var(--line)}
html.dark #musers .mu-seg button.on{background:var(--hover2);color:#fff}
html.dark #musers table.mu td{border-bottom-color:var(--hover2)}
html.dark #musers .k.live{background:var(--green-tint);color:#bfe56a}
html.dark #musers .k.reg{background:var(--hover2);color:var(--gray)}
html.dark #musers .pill.admin{background:#221d33;color:#c3b6f0}
html.dark #musers .pill.staff{background:var(--green-tint);color:#bfe56a}
html.dark #musers .pill.board{background:var(--blue-tint);color:#79cfef}
html.dark #musers .pill.vendor{background:var(--amber-tint);color:#e2c07a}
html.dark #musers .pill.on{background:var(--green-tint);color:#bfe56a}
html.dark #musers .pill.off{background:var(--red-tint);color:#f0a090}
html.dark #musers .flagp{background:var(--hover2);color:var(--gray)}
html.dark #musers .acc b{color:#9fd84e}
html.dark #musers .mu-edit:hover{background:var(--hover)}
html.dark #mu-modal .card{background:var(--card)}
html.dark #mu-modal input,html.dark #mu-modal select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #mu-modal input:disabled{background:var(--panel);color:var(--gray)}
html.dark #mu-modal button.primary{background:var(--hover2);color:#fff}
html.dark #mu-modal button.ghost{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #mu-modal button.danger{background:var(--card);color:#f0a090;border-color:#5a2a20}
html.dark #mu-modal .danger-zone{border-top-color:var(--hover2)}
html.dark #mu-modal .confirm{background:var(--red-tint);border-color:#5a2a20;color:#f0a090}

/* ---- usage.html (#usage + #api-usage) ---- */
html.dark #usage .u-seg,html.dark #usage .u-seg button,html.dark #usage .u-blocked,html.dark #api-usage .au-box{background:var(--card);border-color:var(--line)}
html.dark #usage .u-seg button.on{background:var(--hover2);color:#fff}
html.dark #usage .u-people td,html.dark #usage .u-rankrow{border-color:var(--hover2)}
html.dark #usage .u-ptable .pg{background:var(--card)}
html.dark #usage .u-ptable tbody td{border-bottom-color:var(--hover2)}
html.dark #usage .u-tt-bar,html.dark #usage .u-rtrack,html.dark #api-usage .au-track{background:var(--ink-tint)}
html.dark #usage .u-hc.zero i{color:var(--gray-lt)}
html.dark #usage .u-tag.core{background:var(--green-tint);color:#bfe56a}
html.dark #usage .u-tag.low{background:var(--amber-tint);color:#e2c07a}
html.dark #usage .u-area{color:#9fd84e}

/* ---- emailtemplates.html (#etpage) ---- */
html.dark #etpage .et-new{background:var(--hover2);color:#fff}
html.dark #etpage .et-search input{background:var(--bg);color:var(--ink)}
html.dark #etpage .et-card .et-subj .et-k,html.dark #etpage .et-cc,html.dark #etpage .et-meta,html.dark #etpage .tk .tk-l,html.dark #etpage .modal .msub,html.dark #etpage .modal label,html.dark #etpage .modal .mhint{color:var(--gray)}
html.dark #etpage .et-body{color:#c3ccd3}
html.dark #etpage .et-card .et-body.faded::after{background:linear-gradient(rgba(28,30,34,0),var(--card))}
html.dark #etpage .et-btn,html.dark #etpage .modal .mcancel{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #etpage .et-btn.del:hover{color:#f0a090}
html.dark #etpage .tk{background:var(--panel);border-color:var(--line);color:var(--ink)}
html.dark #etpage .tk code{color:#79cfef}
html.dark #etpage .tk .tk-soon{background:var(--amber-tint);border-color:#5a4a1e;color:#e2c07a}
html.dark #etpage .modal{background:var(--card)}
html.dark #etpage .modal input[type=text],html.dark #etpage .modal textarea{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #etpage .modal .msave{color:#14210a}
html.dark #etpage .modal .merr{color:#f0a090}

/* ---- participants.html + sites.html (#cpage, #asModal) ---- */
html.dark #cpage .toolrow input,html.dark #cpage .toolrow select,html.dark #asModal input,html.dark #asModal select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #cpage .tblwrap,html.dark #cpage .morebtn{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #cpage th{color:var(--gray);border-bottom-color:var(--line)}
html.dark #cpage th .prov.p-pw{color:#79cfef}
html.dark #cpage th .prov.p-rd{color:#9fd84e}
html.dark #cpage td{border-bottom-color:var(--hover2)}
html.dark #cpage td .csub,html.dark #cpage .hint{color:var(--gray)}
html.dark #cpage tr.crow:hover td{background:var(--hover)}
html.dark #cpage .bchip{background:var(--amber-tint);color:#e2c07a}
html.dark #cpage .bchip.b1{color:#f0a090}
html.dark #cpage .bchip.b2{color:#c3b6f0}
html.dark #cpage .pvbad{color:#f0a090}
html.dark #cpage .piibar{background:var(--red-tint);border-color:#5a2a20;color:#f0a090}
html.dark #cpage .pill.on{color:#bfe56a}
html.dark #cpage .pill.off{background:var(--hover2);color:var(--gray)}
html.dark #cpage .bchip.b1.site-on{color:#bfe56a}
html.dark #asModal .aslab{color:var(--gray)}

/* ---- teams.html (#tpage) ---- */
html.dark #tpage .toolrow input,html.dark #tpage .toolrow select{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #tpage .tblwrap,html.dark #tpage .morebtn{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #tpage th{color:var(--gray)}
html.dark #tpage th .prov.p-pw{color:#79cfef}
html.dark #tpage td{border-bottom-color:var(--hover2)}
html.dark #tpage td .tsub{color:var(--gray)}
html.dark #tpage tr.trow:hover td{background:var(--hover)}
html.dark #tpage .cwarn{color:#f0a090}
html.dark #tpage .cwarn .hint{color:var(--gray)}
html.dark #tpage .bchip{background:var(--green-tint);color:#bfe56a}

/* ---- team.html (#tprofile) ---- */
html.dark #tprofile .pstick{background:rgba(15,23,30,.96);border-bottom-color:var(--line)}
html.dark #tprofile .gradechip{background:var(--green-tint);border-color:var(--green-lt);color:#bfe56a}
html.dark #tprofile .hint,html.dark #tprofile .main .sub,html.dark #tprofile .note .meta{color:var(--gray)}
html.dark #tprofile .schip{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark #tprofile ul.rowlist li,html.dark #tprofile .seasons-tbl td{border-bottom-color:var(--hover2)}
html.dark #tprofile .cwarn{color:#f0a090}
html.dark #tprofile .notebox input{background:var(--bg);border-color:var(--line);color:var(--ink)}
html.dark #tprofile .note{background:var(--card);border-color:var(--line)}
html.dark #tprofile .seasons-tbl th{color:var(--gray);border-bottom-color:var(--line)}
html.dark #tprofile .seasons-tbl tr.srow:hover td{background:var(--hover)}
html.dark #tprofile .seasons-tbl .bchip{background:var(--green-tint);color:#bfe56a}

/* ---- historical-stats.html (#lgc additions) ---- */
html.dark #lgc .filterbar{background:var(--card);border-color:var(--line)}
html.dark #lgc .card,html.dark #lgc .chart-card,html.dark #lgc .h-stat,html.dark #lgc .hcc{background:var(--card);border-color:var(--line)}
html.dark #lgc table.ht tr.rp td{background:var(--amber-tint)}
html.dark #lgc table.ht tr.rc td{background:var(--red-tint)}
html.dark #lgc table.ht tr.rn td{background:var(--green-tint)}
html.dark #lgc .goal-met{background:var(--green-tint);color:#bfe56a}
html.dark #lgc .goal-close{background:var(--amber-tint);color:#e2c07a}
html.dark #lgc .goal-miss{background:var(--red-tint);color:#f0a090}
html.dark #lgc .bk{background:var(--amber-tint);color:#e2c07a}
html.dark #lgc .bc{background:var(--red-tint);color:#f0a090}
html.dark #lgc .bn{background:var(--green-tint);color:#bfe56a}
html.dark #lgc .frz{color:#79cfef}

/* ---- donations.html (.don additions) ---- */
html.dark .don .permbar{background:#221d33;border-color:#3a3060;color:#c3b6f0}
html.dark .don .permbar b{color:#d9d0f5}
html.dark .don .src.hist{background:var(--hover2);color:var(--gray)}
html.dark .don .src.reg{color:#bfe56a}
html.dark .don .src.give{color:#79cfef}
html.dark .don .bmbtn{background:var(--blue-tint);border-color:#1e5566;color:#79cfef}
html.dark .don .bmbtn:hover{background:#1e4552}
html.dark .don .stamp b{color:#9fd84e}
html.dark .don .warn-strip{background:var(--amber-tint);color:#e2c07a}

/* ---- households/alumni (.cmp + actbtn additions) ---- */
html.dark #hpage .actbtn.undo,html.dark #apage .actbtn.undo,html.dark .cmp-actions .actbtn.dismiss,html.dark .cmp-actions .actbtn.undo{background:var(--card);border-color:var(--line)}
html.dark .cmp-actions .actbtn.undo,html.dark #hpage .actbtn.undo,html.dark #apage .actbtn.undo{color:#79cfef}
html.dark .cmp-actions .actbtn.dismiss{color:var(--gray)}
html.dark #hpage .effects{border-color:var(--green-lt)}
html.dark #hpage .effects h3{color:#9fd84e}
html.dark .cmp-col .emlmatch{color:#bfe56a}

/* ---- supplies suite (#sup additions: orders/inventory/kit-templates) ---- */
html.dark .lmrc-msg{color:var(--ink)}
html.dark #sup .st.coach_review{background:#221d33;color:#c3b6f0}
html.dark #sup .st.rd_approval{background:var(--amber-tint);color:#e2c07a}
html.dark #sup .st.submitted{background:var(--blue-tint);color:#79cfef}
html.dark #sup .st.printed{background:var(--blue-tint);color:#9fdcf3}
html.dark #sup .st.fulfilled,html.dark #sup .st.shipped,html.dark #sup .st.delivered{background:var(--green-tint);color:#bfe56a}
html.dark #sup .st.issue,html.dark #sup .ochip.issue{background:var(--red-tint);color:#f0a090}
html.dark #sup .cat.shirt{background:var(--blue-tint);color:#79cfef}
html.dark #sup .cat.kit{background:var(--green-tint);color:#bfe56a}
html.dark #sup .cat.earlybird{background:var(--amber-tint);color:#e2c07a}
html.dark #sup .cat.merch{background:#221d33;color:#c3b6f0}
html.dark #sup .cat.coach{background:var(--amber-tint);color:#e8bf5a}
html.dark #sup .pill.ok{background:var(--green-tint);color:#bfe56a}
html.dark #sup .pill.low{background:var(--amber-tint);color:#e2c07a}
html.dark #sup .pill.out{background:var(--red-tint);color:#f0a090}
html.dark #sup .cutchip{background:var(--blue-tint);color:#9fdcf3}
html.dark #sup .roleswitch button{background:var(--card);color:var(--ink)}
html.dark #sup .b-team{background:var(--hover2);color:var(--gray)}
html.dark #sup .b-coach{background:var(--amber-tint);color:#e8bf5a}
html.dark #sup .b-boy{background:var(--green-tint);color:#bfe56a}
html.dark #sup .b-eb{background:var(--amber-tint);color:#e2c07a}
html.dark #sup .b-reg{background:var(--blue-tint);color:#79cfef}

/* ---- early-bird (.eb additions) ---- */
html.dark .ebmail .ebm-send{background:var(--hover2);color:#fff}
html.dark .ebmail select,html.dark .ebmail input,html.dark .ebmail textarea{border-color:var(--line)}
html.dark .eb-flex,html.dark .eb-pw,html.dark .eb-pw .l,html.dark .eb-fl-sub{color:#79cfef}
html.dark .eb-warn{color:#f0a090}
html.dark .eb-fl-pc{color:#bfe56a}
html.dark .eb-fl-5k{color:#c3b6f0}
html.dark .spellchip{color:#e2c07a}

/* ---- onboarding.html (#onbx additions) ---- */
html.dark #onbx .meter{background:var(--ink-tint)}
html.dark #onbx .flowcard.done .av{background:var(--green-tint);color:#bfe56a}
html.dark #onbx .pill.prog{background:var(--blue-tint);color:#79cfef}
html.dark #onbx .pill.done{background:var(--green-tint);color:#bfe56a}
html.dark #onbx .pill.mine{background:var(--amber-tint);color:#e2c07a}
html.dark #onbx .gchip.any{background:var(--green-tint);color:#bfe56a}
html.dark #onbx .gchip.after{background:var(--blue-tint);color:#79cfef}
html.dark #onbx .gchip.locked{background:var(--hover2);color:var(--gray)}
html.dark #onbx .tag-mine{background:var(--green-tint);color:#bfe56a}
html.dark #onbx .legend b{color:var(--ink)}

/* ---- people.html (#ppl role badges) ---- */
html.dark #ppl .b.coach{background:var(--blue-tint);color:#9fdcf3}
html.dark #ppl .b.donor{background:var(--green-tint);color:#bfe56a}
html.dark #ppl .b.guardian{background:var(--hover2);color:var(--gray)}
html.dark #ppl .b.volunteer{background:var(--blue-tint);color:#79cfef}
html.dark #ppl .b.staff,html.dark #ppl .b.founder{background:#221d33;color:#c3b6f0;border-color:#3a3060}
html.dark #ppl .b.board{background:var(--amber-tint);color:#e2c07a}
html.dark #ppl .b.liaison{background:var(--green-tint);color:#9fd84e}

/* ---- merge.html (#mpage additions) ---- */
html.dark #mpage .chosen,html.dark #mpage label.pick.on{background:#1c2b16;border-color:var(--green)}
html.dark #mpage .chosen small{color:var(--gray)}
html.dark #mpage .chip{background:var(--blue-tint);color:#9fdcf3}
html.dark #mpage .tc-high{background:var(--red-tint);color:#f0a090}
html.dark #mpage .tc-med{background:var(--amber-tint);color:#e2c07a}
html.dark #mpage .tc-low{background:var(--hover2);color:var(--gray)}
html.dark #mpage .kt-person{background:var(--blue-tint);color:#9fdcf3}
html.dark #mpage .kt-participant{background:#221d33;color:#c3b6f0}
html.dark #mpage .steps .s.active{color:#9fd84e}
html.dark #mpage .picker input{background:var(--bg);border-color:var(--line);color:var(--ink)}

/* ---- s26.html (#lgc season pills) ---- */
html.dark #lgc .tp-red{background:var(--red-tint);color:#f0a090}
html.dark #lgc .tp-yellow{background:var(--amber-tint);color:#e2c07a}
html.dark #lgc .tp-green{background:var(--green-tint);color:#bfe56a}
html.dark #lgc .role-SL{background:var(--blue-tint);color:#79cfef}
html.dark #lgc .role-H{background:var(--amber-tint);color:#e8bf5a}
html.dark #lgc .role-A{background:var(--green-tint);color:#bfe56a}
html.dark #lgc .role-J{background:#221d33;color:#c3b6f0}
html.dark #lgc .role-S{background:var(--hover2);color:var(--gray)}

/* ---- site.html (#ppage additions) ---- */
html.dark #ppage .pill.on{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .pill.off{background:var(--hover2);color:var(--gray)}
html.dark #ppage .hrow .hbarwrap{background:var(--ink-tint)}
html.dark #ppage .hrow .hn{color:#c3ccd3}

/* ---- calendar modals (.lmrcal-modals additions — injected CSS from
   calendar-core.js; html.dark prefix out-specifies it regardless of order) ---- */
html.dark .lmrcal-modals .lc-x,html.dark .lmrcal-modals .lc-catopt,html.dark .lmrcal-modals .lc-acts .del,html.dark .lmrcal-modals .lc-scope button{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .lmrcal-modals .lc-catopt.on{background:var(--hover2)}
html.dark .lmrcal-modals .lc-scope{background:var(--amber-tint);border-color:#5a4a1e}
html.dark .lmrcal-modals .lc-scope p{color:#e2c07a}
html.dark .lmrcal-modals .lc-rbadge{background:var(--blue-tint);color:#79cfef}
html.dark .lmrcal-modals .lc-ph{border-color:var(--line)}
html.dark .lmrcal-modals .lc-meta{border-top-color:var(--line)}
html.dark .lmrcal-modals .lc-drl:hover,html.dark .lmrcal-modals .lc-lrow:hover{background:var(--hover)}

/* ---- retention-study.html (#oar-report) — var-driven doc: one remap ---- */
html.dark #oar-report{--white:var(--card);--gray-100:var(--bg);--gray-200:var(--line);--gray-400:var(--gray-lt);--gray-600:var(--gray);--gray-900:var(--ink);--dark:var(--ink);--light-blue:var(--blue-tint);--light-green:var(--green-tint)}
/* fee-data-summary.html (#fee-report): the white 8-inch "sheet" stays light on
   purpose — it's a print document (same call as order-print). */

/* ---- scan follow-ups (2026-07-23, pass 2b) ---- */
html.dark #onbadm .tabs button.on{background:var(--hover2);color:#fff}
/* season-teams/s26 redefine --amber-tint:#faedc8 on #lgc (page-level), which
   out-resolves the global dark token for #lgc descendants (.expl-eb bg) */
html.dark #lgc{--amber-tint:#342b12}
html.dark #tc .arc a{background:var(--card);border-color:var(--line)}
html.dark #tc .arc .lab b{color:var(--ink)}
html.dark #tc .arc .lab span{color:var(--gray)}
html.dark #tc .stage-head .num{background:var(--hover2);color:#fff}
html.dark #tc .badge.pub{background:var(--blue-tint);border-color:#1e5566;color:#79cfef}
html.dark #tc .badge.staff{background:var(--hover2);color:var(--gray)}
html.dark #tc .badge.prev{background:var(--amber-tint);color:#e2c07a}
html.dark #tc .embed-wrap{background:var(--panel)}
/* retention-study inline callout converted to .oar-note (page edit, same day) */
html.dark #oar-report .oar-note{background:var(--amber-tint);border-color:#5a4a1e;border-left-color:var(--amber-edge)}

/* ---- The Future sandbox (future.css, .fut-*) — the fake-browser viewport
   (.fut-browser/.fut-viewport, public-site sim) and the Stripe sim
   (.fut-stripe) stay LIGHT on purpose: they depict external surfaces,
   same call as the tdf diagram. Only OS-side controls go dark. ---- */
html.dark .fut-gerow,html.dark .fut-gerow .mv,html.dark .fut-osbtn.ghost{background:var(--card);border-color:var(--line);color:var(--ink)}
html.dark .fut-pop .box{background:var(--card)}
html.dark .fut-gchip{background:var(--card);border-color:var(--line)}
html.dark table.fut-table tr.fresh td{background:var(--green-tint)}
html.dark table.fut-table tr.grp td{background:var(--panel)}
html.dark .fut-stagecard .live,html.dark .fut-stagecard .aud.staff{color:#79cfef}
html.dark .fut-tag.ext,html.dark .fut-badge.new,html.dark .fut-avatar{color:#79cfef}
html.dark #onbtpl .gate.locked .gn{background:var(--hover2);color:var(--gray-lt)}

/* ==== PASS 3 dark tails (2026-08-30) ==========================================
   os.css was last edited 2026-08-20. Every page section built since then shipped
   its palette in the page's own <style> with no html.dark counterpart, so those
   sections render with their LIGHT backgrounds on a dark page. This block closes
   that gap. Every value below resolves to an existing CARBON token — no new
   colors were invented. Retint stays a one-block edit in the html.dark token block.
   Generated + hand-checked from a contrast audit of all page <style> blocks;
   the audit script is darkmode-lint.py, run it before a deploy. ============== */

/* ---- Person profile (#ppage) ---- */
html.dark #ppage .acc{background:var(--blue-tint);color:#79cfef}
html.dark #ppage .copybtn{background:var(--card);border-color:var(--line)}
html.dark #ppage .rolesbtn{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .roleed{background:var(--card);border-color:var(--line)}
html.dark #ppage .roleed .done button{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .roleicon.coach{background:var(--blue-tint)}
html.dark #ppage .roleicon.donor{background:var(--green-tint)}
html.dark #ppage .roleicon.guardian{background:var(--blue-tint)}
html.dark #ppage .roleicon.notes{background:var(--violet-tint)}
html.dark #ppage .stat{background:var(--card);border-color:var(--line)}
html.dark #ppage .stat.blue{background:var(--blue-tint);border-color:#1e5566}
html.dark #ppage .note{background:var(--card)}
html.dark #ppage .roleicon.ix{background:var(--blue-tint)}
html.dark #ppage .irow:hover{background:var(--blue-tint)}
html.dark #ppage .note.ro{background:var(--card)}
html.dark #ppage .mg-tier.elig{background:var(--green-tint);border-color:var(--green-lt)}
html.dark #ppage .cmp-row.bad{background:var(--red-tint);border-color:#5a2a20}
html.dark #ppage .cmp-row.soon{background:var(--amber-tint);border-color:#5a4a1e}
html.dark #ppage .cmp-pill.ok{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .cmp-pill.soon{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}
html.dark #ppage .cmp-pill.bad{background:var(--red-tint);color:#f0a090;border-color:#5a2a20}
html.dark #ppage .cmp-pill.none{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .cmp-btn.save:disabled{background:var(--blue-tint);color:#79cfef}
html.dark #ppage .mg-btn.edit{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .mg-btn.ghost{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .mg-btn.clear{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ppage .mg-ed{background:var(--green-tint);border-color:var(--green-lt)}
html.dark #ppage .mg-ed input[type=date]{background:var(--card);border-color:var(--line)}
html.dark #ppage .roleicon.docs{background:var(--amber-tint)}
html.dark #ppage .doc-row.superseded{background:var(--card);border-color:var(--line)}
html.dark #ppage .doc-row.expired{background:var(--red-tint);border-color:#5a2a20}
html.dark #ppage .doc-row.soon{background:var(--amber-tint);border-color:#5a4a1e}
html.dark #ppage .doc-pill.active{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .doc-pill.superseded{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .doc-pill.expired{background:var(--red-tint);color:#f0a090;border-color:#5a2a20}
html.dark #ppage .doc-pill.soon{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}
html.dark #ppage .doc-pill.paper{background:var(--blue-tint);color:#79cfef;border-color:#1e5566}
html.dark #ppage .doc-btn{background:var(--card)}
html.dark #ppage .doc-btn.open{background:var(--green-tint);color:#bfe56a}
html.dark #ppage .doc-aud .consent{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #ppage .doc-empty{background:var(--card);color:var(--ink);border-color:var(--line)}

/* ---- Team Setup (#ts) ---- */
html.dark #ts .tspage{background:var(--card);border-color:var(--line)}
html.dark #ts .sortsel{background:var(--card);border-color:var(--line)}
html.dark #ts .url{background:var(--blue-tint)}
html.dark #ts .note.pwlock{background:var(--blue-tint);color:#79cfef}
html.dark #ts .note.confirm{background:var(--amber-tint);color:#e2c07a}
html.dark #ts .note.public{background:var(--amber-tint);color:#e2c07a}
html.dark #ts .note.suggest{background:var(--green-tint);color:#bfe56a}
html.dark #ts .note.soon{background:var(--blue-tint);color:#79cfef}
html.dark #ts .rollup{background:var(--amber-tint)}
html.dark #ts .rollup.allok{background:var(--green-tint)}
html.dark #ts .cdet{background:var(--card);border-color:var(--line)}
html.dark #ts .cmpd{background:var(--ink-tint);color:#c3ccd3}
html.dark #ts textarea.over{background:var(--card)}
html.dark #ts select.osdate{background:var(--green-tint);color:#bfe56a}
html.dark #ts .btn-save:disabled{background:var(--ink-tint);color:#c3ccd3}
html.dark #ts .pres{background:var(--card);border-color:var(--line)}
html.dark #ts .pr:hover{background:var(--green-tint)}
html.dark #ts .rdcard{background:var(--green-tint)}
html.dark #ts .k5new{background:var(--green-tint)}
html.dark #ts .tp{background:var(--card);border-color:var(--line)}
html.dark #ts .tp .tpst{background:var(--ink-tint);color:#c3ccd3}
html.dark #ts .tp.sent{background:var(--green-tint);border-color:var(--green-lt)}
html.dark #ts .rn button{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #ts .rn button.on{background:var(--green-tint);color:#bfe56a}
html.dark #ts .rn button.on.no{background:var(--amber-tint);color:#e2c07a}
html.dark #ts .embox{background:var(--card)}
html.dark #ts .gate.auto.lit{background:var(--green-tint);border-color:var(--green-lt)}
html.dark #ts .gate.manual .mark{background:var(--card)}
html.dark #ts .gate.manual.done{background:var(--blue-tint);border-color:#1e5566}

/* ---- Coach Recruitment (#rec) ---- */
html.dark #rec .roleicon.ix{background:var(--blue-tint)}
html.dark #rec .roleicon.notes{background:var(--violet-tint)}
html.dark #rec .roleicon.coach{background:var(--blue-tint)}
html.dark #rec .roleicon.guardian{background:var(--blue-tint)}
html.dark #rec .roleicon.donor{background:var(--green-tint)}
html.dark #rec .stat.gr{background:var(--card);border-color:var(--line)}
html.dark #rec .flownote{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #rec .srow.added button{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #rec .unpl-row .clue{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}
html.dark #rec .unpl-set select{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #rec .unpl-set .open{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #rec .rgset select{background:var(--card);color:var(--ink);border-color:var(--line)}

/* ---- Waivers (#wv) ---- */
html.dark #wv .wvic{background:var(--amber-tint)}
html.dark #wv .wmcard input[type=text], html.dark #wv .wmcard input[type=date], html.dark #wv .wmcard input[type=number]{background:var(--card)}
html.dark #wv .warnbox{background:var(--red-tint);color:#f0a090;border-color:#5a2a20}
html.dark #wv .okbox{background:var(--green-tint);color:#bfe56a;border-color:var(--green-lt)}
html.dark #wv .infobox{background:var(--blue-tint);color:#79cfef;border-color:#1e5566}
html.dark #wv .rad.on{background:var(--green-tint)}
html.dark #wv .prog{background:var(--blue-tint)}
html.dark #wv .fchip{background:var(--card)}

/* ---- F26 Financials (.f26) — sections added after the Aug-20 os.css edit ---- */
html.dark .f26 tr.teamrow td{background:var(--hover);border-top-color:var(--line)}
html.dark .f26 tr.teamrow:hover td{background:var(--hover2)}
html.dark .f26 tr.boyrow td{background:var(--card)}
html.dark .f26 tr.codesrow td{background:var(--panel2)}
html.dark .f26 .teamtools button{background:var(--card);color:var(--ink);border-color:var(--line)}

/* ---- Default Orders (#sup kit templates) ---- */
html.dark #sup .btn.danger{background:var(--card);color:var(--ink)}
html.dark #sup .b-prog-es{background:var(--green-tint);color:#bfe56a}
html.dark #sup .b-prog-ms{background:var(--blue-tint);color:#79cfef}
html.dark #sup .b-prog-any{background:var(--blue-tint);color:#79cfef}
html.dark .kb-modal{background:var(--card)}

/* ---- Onboarding admin (#onbadm) ---- */
html.dark #onbadm .roview{background:var(--amber-tint);color:#e2c07a}
html.dark #onbadm .reqtog.on{background:var(--amber-tint);border-color:#5a4a1e}
html.dark #onbadm .btn.dgr{background:var(--card);color:var(--ink);border-color:var(--line)}
html.dark #onbadm .note.warn{background:var(--amber-tint);color:#e2c07a}
html.dark #onbadm .chip.none{background:var(--blue-tint)}

/* ---- Retention study (#oar-report) ---- */
html.dark #oar-report .card{background:var(--card)}
html.dark #oar-report .chart-card{background:var(--card)}
html.dark #oar-report .pill-bad{background:var(--red-tint)}
html.dark #oar-report .pill-mid{background:var(--amber-tint)}
html.dark #oar-report .method{background:var(--card)}

/* ---- Merge People (#mpage) ---- */
html.dark #mpage .steps .s .n{background:var(--blue-tint)}
html.dark #mpage table.cmp tr.diff td{background:var(--amber-tint)}
html.dark #mpage table.cmp tr.diff th.f{background:var(--amber-tint);color:#e2c07a}
html.dark #mpage .stopbox{background:var(--red-tint)}

/* ---- Org chart (#orgc) ---- */
html.dark #orgc .octools button{background:var(--card);color:var(--ink)}
html.dark #orgc .octools button:hover{background:var(--blue-tint)}
html.dark #orgc .pc.bd{background:var(--card)}
html.dark #orgc .ocbd-off{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}

/* ---- Website info ---- */
html.dark #wi textarea.over{background:var(--card)}
html.dark #wi .btn-save:disabled{background:var(--ink-tint);color:#c3ccd3}

/* ---- Coach Hub sign-ins ---- */
html.dark #chs .sw-white{background:var(--card)}

/* ---- Email templates (#etpage) ---- */
html.dark #etpage .et-card .et-btn{background:var(--card);color:var(--ink)}

/* ---- Users & access (#musers) ---- */
html.dark #mu-modal input[type=text], html.dark #mu-modal input[type=email], html.dark #mu-modal input[type=tel], html.dark #mu-modal input[type=date]{background:var(--card)}

/* ---- Onboarding (#onbx) ---- */
html.dark #onbx .task.mine.can:hover .box{background:var(--green-tint)}

/* ---- Resources (#lgc) — roadmap rows ---- */
html.dark #lgc .res-row{background:var(--card);border-color:var(--line)}

/* ---- Retention study callout: the gradient's second stop is a hard #fff,
   so the panel faded to white on dark. Flatten it to the blue tint. ---- */
html.dark #oar-report .callout{background:var(--blue-tint);border-color:#1e5566}


/* ===== DARK PASS 4 — Sep 1 2026 ==============================================
   Found by auditing EVERY OS page live in dark mode and measuring contrast, not
   by reading CSS. 92 failures across 12 pages; these rules clear 87 of them.

   Why darkmode-lint.py missed all of it: the linter only inspects rules that set
   a light BACKGROUND. Most of what follows sets only a dark TEXT colour, which
   stays dark when the surface flips — so a page can lint CLEAN and still show
   black-on-black. Worst measured contrast was 1.13 (Coach Recruitment's expanded
   coach card: heading, date of birth, mailing address, every field value).

   Every rule below was proven by injecting it into the LIVE page and re-running
   the audit against real data. Every colour is an existing CARBON token or a
   value already used in this dark layer — no new hex.                          */

/* --- #rec : Coach Recruitment + Incoming (shared vocabulary) ---------------- */
html.dark #rec .mcard h3{color:var(--ink)}
html.dark #rec dl.mkv dt{color:var(--gray-lt)}
html.dark #rec dl.mkv dd{color:var(--ink)}
html.dark #rec dl.mkv dd a{color:var(--link)}
html.dark #rec .rolehdr .ttl{color:var(--ink)}
html.dark #rec .okv{color:#bfe56a}
html.dark #rec .badv{color:#f0a090}
html.dark #rec .ckrow .tick{background:var(--green-tint);color:#bfe56a}
html.dark #rec .safebox summary{color:var(--link)}
html.dark #rec .safebox .qtxt,html.dark #rec .safebox .qtxt b{color:var(--gray)}
html.dark #rec .tagN{background:var(--ink-tint)}
html.dark #rec .tagN.due{background:var(--amber-tint);color:#e2c07a}
html.dark #rec .warnchip{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}
html.dark #rec .stat .n{color:var(--ink)}
html.dark #rec .stat .l{color:var(--gray)}
html.dark #rec .noprof p{color:var(--gray)}
html.dark #rec .hint{color:var(--gray)}
html.dark #rec .card .st,html.dark #rec .card .note,
html.dark #rec .p-head .st,html.dark #rec .p-head .st b{color:var(--gray)}
html.dark #rec .card .chip.season{background:var(--ink-tint);border-color:var(--line);color:#c3ccd3}
html.dark #rec .lane summary{color:var(--gray)}
html.dark #rec .seasontog button{color:var(--gray)}
html.dark #rec .badge.new{background:var(--ink-tint);color:var(--gray)}
html.dark #rec .badge.safe{background:var(--green-tint);color:#bfe56a}
html.dark #rec .badge.warn{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}

/* --- #tr : Start a Team ----------------------------------------------------- */
html.dark #tr .b.reg{background:var(--blue-tint);color:#79cfef;border-color:#1e5566}
html.dark #tr .b.help{background:var(--amber-tint);color:#e2c07a}

/* --- #ts : Team Setup (the date chips on every team card) ------------------- */
html.dark #ts .dtag{background:var(--blue-tint);color:#79cfef}
html.dark #ts .dtag.k5{background:var(--green-tint);color:#bfe56a}
html.dark #ts .dtag.unset{background:var(--ink-tint);color:var(--gray)}
html.dark #ts .cmpd.none{background:var(--ink-tint);color:var(--gray)}

/* --- #sup : Inventory / Orders / Default Orders ----------------------------- */
html.dark #sup .b-team,html.dark #sup .b-prog-any{background:var(--ink-tint);color:#c3ccd3}
html.dark #sup .b-coach,html.dark #sup .b-cust,html.dark #sup .b-eb{background:var(--amber-tint);color:#e2c07a}
html.dark #sup .b-boy,html.dark #sup .b-prog-es{background:var(--green-tint);color:#bfe56a}
html.dark #sup .b-reg,html.dark #sup .b-prog-ms{background:var(--blue-tint);color:#79cfef}
html.dark #sup .b-sys{background:var(--violet-tint);color:#b7abec}

/* --- #lgc : F26 Teams AND Resources (they share the scope) ------------------ */
html.dark #lgc .expl-eb>summary,html.dark #lgc .expl-eb>div{color:#e2c07a}
html.dark #lgc .team-pill.tp-rd{color:#bfe56a}
html.dark #lgc .tp-red{background:var(--red-tint);color:#f0a090}
html.dark #lgc .tp-yellow{background:var(--amber-tint);color:#e2c07a}
html.dark #lgc .res-row .badge.uc{background:var(--amber-tint);color:#e2c07a;border-color:#5a4a1e}
html.dark #lgc .res-row .badge.soon{background:var(--ink-tint);color:var(--gray);border-color:var(--line)}

/* --- .f26 : F26 Financials -------------------------------------------------- */
html.dark .f26 .penpill{color:#bfe56a}
html.dark .f26 tr.teamrow.pen td:first-child{color:var(--gray)}

/* --- table provenance eyebrows (Sites, Alumni) ------------------------------ */
html.dark #cpage th .prov.p-pw,html.dark #apage th .prov.p-pw{color:var(--link)}
html.dark #cpage th .prov.p-rd,html.dark #apage th .prov.p-rd{color:#bfe56a}
html.dark #cpage th .prov.p-dv,html.dark #apage th .prov.p-dv{color:#e2c07a}

/* --- .addbtn is background:var(--green) with color:var(--ink). In dark BOTH
       tokens go light, so the label disappears into the button. A green button
       always wants dark text. (Participants "+ Person", Teams "+ Add Team".) -- */
html.dark #cpage .addbtn,html.dark #tpage .addbtn{color:#14210a}

/* Sep 1 2026, dark pass 4 addendum — found on the post-deploy sweep. The
   calendar chip flips (html.dark .lmrcal .lc-ev above) but the event TIME and
   the repeat glyph inside it keep their own light-mode grey. calendar-core.js
   injects those rules at runtime, after os.css, so this needs the html.dark
   prefix to outrank them — verified live. */
html.dark .lmrcal .lc-ev .t,html.dark .lmrcal .lc-ev .rep{color:var(--gray)}
