/* ============================================================
   DSP HIVE — Inkside design system (U1: tokens + shell)
   Loaded AFTER the inline styles; overrides tokens + chrome.
   Authoritative spec: docs/design-system/design_handoff_inkside_system/
   One ink, one gold, four semantic hues. Gold = brand/award ONLY.
   ============================================================ */

/* ---------- tokens (Inkside) ---------- */
:root, :root[data-theme="light"]{
  --bg:#f5f7fa;            /* bg-50 canvas */
  --panel:#ffffff;         /* panel-0 */
  --panel2:#eef2f8;        /* line-100 / inner wells */
  --line:#e2e8f1;          /* line-200 hairline */
  --line-strong:#c9d4e8;
  --text:#111a2c;          /* text-900 */
  --muted:#67788f;         /* text-500 */
  --dim:#93a3bd;           /* text-300 */
  --body2:#33445f;         /* text-700 secondary body */
  --blue:#2b62d9;
  --blue-deep:#2452c4;     /* chip text blue */
  --blue-soft:#e8effc;
  --green:#177550; --teal:#0e7490;
  --amber:#b0620d;
  --red:#cf3b28;
  --gold:#f2b418; --gold-ink:#8a6a10;
  --ink9:#0f1c33; --ink8:#1a2c4d;
  --side-mut:#93a3bd; --side-dim:#5f7191; --side-ok:#4ec98b; --side-badge:#e5533f;
  --fantastic:#2452c4; --great:#177550; --fair:#b0620d; --poor:#cf3b28;
  --radius:12px; --radius-lg:12px; --radius-sm:8px;
  --shadow:0 1px 3px rgba(15,28,51,.06);                 /* raise-1 */
  --shadow-2:0 2px 8px rgba(15,28,51,.07);               /* raise-2 */
  --shadow-float:0 8px 28px rgba(15,28,51,.16);          /* raise-3 */
  --side-w:208px;
  --zebra:#fbfcfe;
  --m-fast:120ms; --m-base:200ms; --m-slow:280ms;
  --ease:cubic-bezier(.2,.7,.3,1);
}
:root[data-theme="dark"]{
  /* dark = the same tokens re-valued on the ink family (never inverted
     per-component — Inkside law) */
  --bg:#0b1322;
  --panel:#111c31;
  --panel2:#182640;
  --line:#233350;
  --line-strong:#33456a;
  --text:#edf1f8;
  --muted:#9faec6;
  --dim:#6c7e9c;
  --body2:#c3cede;
  --blue:#5c8df0;
  --blue-deep:#7fa5f2;
  --blue-soft:#1a2c4d;
  --green:#34b27f; --teal:#38a8c4;
  --amber:#dfa43c;
  --red:#e2604f;
  --gold:#f2b418; --gold-ink:#f2b418;
  --ink9:#0f1c33; --ink8:#1a2c4d;
  --side-mut:#93a3bd; --side-dim:#5f7191; --side-ok:#4ec98b; --side-badge:#e5533f;
  --fantastic:#7fa5f2; --great:#34b27f; --fair:#dfa43c; --poor:#e2604f;
  --shadow:0 1px 3px rgba(0,0,0,.35);
  --shadow-2:0 2px 8px rgba(0,0,0,.38);
  --shadow-float:0 8px 28px rgba(0,0,0,.5);
  --zebra:#141f36;
}

/* ---------- base ---------- */
body{
  background:var(--bg); color:var(--text);
  font-variant-numeric: tabular-nums;
  padding-bottom:0;
}
/* min-width:0 — as a grid item, .wrap must SHRINK below content
   min-width; without it one nowrap rail inflates the whole column to
   its max-width and the page scrolls sideways (Trends, 2026-07-21) */
.wrap{max-width:1320px; padding:20px 28px 60px; min-width:0;}
.fbar>*{min-width:0;}
.chart{min-width:0;}
b, strong, .num, .val{font-variant-numeric: tabular-nums;}

/* ---------- desktop shell: sidebar + main ---------- */
@media (min-width: 900px){
  body{display:grid; grid-template-columns:var(--side-w) 1fr; padding-bottom:0;}
  header.top{grid-column:2;}
  .wrap{grid-column:2; width:100%; margin:0 auto;}
  .nav{display:none;}                    /* phone tabs off on desktop */
  #side{display:flex;}
  body{padding-bottom:0 !important;}
}
/* Inkside: the ink sidebar is the brand anchor on every screen (both
   themes — this panel is already ink, so dark re-values nothing here).
   Gold appears ONLY on the mark + the active-nav marker. */
#side{
  display:flex;
  position:sticky; top:0; height:100vh; grid-column:1; grid-row:1 / span 99;
  flex-direction:column;
  background:var(--ink9);
  border-right:none;
  padding:18px 12px 14px;
  z-index:30;
}
#side .brandrow{display:flex; align-items:center; gap:10px; padding:0 8px 18px;}
#side .brandrow .logo{width:30px; height:30px; flex:0 0 auto;}
#side .brandrow .t{font-weight:700; font-size:15px; color:#fff; letter-spacing:-.01em; line-height:1.15;}
#side .brandrow .s{font-size:10px; color:var(--side-dim); letter-spacing:.1em; font-weight:600;}
/* 4.0: SEVEN flat sections — no groups, no chevrons, no scrolling.
   The whole collapse/expand/ghost-scrollbar apparatus is gone because
   the list can no longer outgrow the sidebar. */
#side .navlist{display:flex; flex-direction:column; gap:2px; margin-top:0;
  flex:1 1 auto;}
#side .navitem{
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; border-radius:8px;
  font-size:13px; font-weight:400; color:var(--side-mut);
  text-decoration:none; cursor:pointer;
  transition:background var(--m-fast) var(--ease), color var(--m-fast) var(--ease);
}
.nav-badge{margin-left:auto;min-width:17px;height:17px;border-radius:99px;
  background:var(--side-badge);color:#fff;font-size:10px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  padding:0 6px;line-height:1;}
#side .navitem.on .nav-badge{background:var(--side-badge);}
#side .navitem svg{width:15px; height:15px; stroke-width:2; flex:0 0 auto;}
#side .navitem:hover{background:rgba(255,255,255,.06); color:#fff;}
#side .navitem.on{background:rgba(255,255,255,.12); color:#fff; font-weight:600;
  box-shadow:inset 3px 0 0 var(--gold);}
#side .sidefoot{margin-top:auto; padding:14px 10px 0; border-top:1px solid rgba(255,255,255,.08);
  font-size:10.5px; color:var(--side-dim); display:flex; flex-direction:column; gap:5px;}
#side .sidefoot .hrow{display:flex; align-items:center; gap:7px;}
#side .sidefoot .dot{width:8px;height:8px;border-radius:50%;background:var(--side-ok);}
#side .sidefoot .dot.bad{background:var(--side-badge);}
#side .sidefoot .dim{color:var(--side-dim);}

/* ---------- top bar — Inkside: white strip, hairline, r8 controls ---------- */
header.top{
  background:var(--panel);
  border-bottom:1px solid var(--line);
  padding:8px 26px;
  gap:8px;
}
header.top .brand{font-size:14px; font-weight:700;}
@media (min-width:900px){ header.top .brand{display:none;} }
header.top button, header.top .wkbtn{
  background:var(--panel); border:1px solid var(--line); border-radius:8px;
  box-shadow:none;
  transition:border-color var(--m-fast) var(--ease), background var(--m-fast) var(--ease);
}
header.top button:hover{border-color:var(--line-strong);}
header.top .icon-btn svg{width:15px;height:15px;stroke-width:1.75;}

/* custom week picker */
.wkwrap{position:relative;display:flex;align-items:center;gap:2px;}
.wkbtn{display:flex;align-items:center;gap:9px;font:inherit;font-size:13px;
  font-weight:550;color:var(--text);padding:8px 13px;cursor:pointer;}
.wkbtn svg{width:15px;height:15px;stroke-width:1.75;color:var(--dim);}
.wkbtn .st{font-size:11px;color:var(--dim);font-weight:450;}
/* ◀ ▶ week steppers — quiet ghosts beside the dropdown (4.5.1) */
.wkstep{width:24px;height:30px;border:none;background:transparent;
  color:var(--dim);font-size:17px;cursor:pointer;padding:0;
  border-radius:8px;transition:color 120ms var(--ease),background 120ms var(--ease);
  box-shadow:none;}
.wkstep:hover{color:var(--blue);background:var(--panel2);border:none;}
.wkpanel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow-float);min-width:250px;max-height:330px;overflow-y:auto;
  padding:6px;display:none;}
.wkpanel.open{display:block;}
.wkrow{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:9px;
  font-size:13px;cursor:pointer;color:var(--text);}
.wkrow:hover{background:var(--panel2);}
.wkrow.on{background:var(--blue-soft);color:var(--blue);font-weight:600;}
.wkrow .wdot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;}
.wkrow .ws{margin-left:auto;font-size:11px;color:var(--dim);}

/* ---------- phone tabs ---------- */
.nav{border-top:1px solid var(--line);}
.nav a{color:var(--dim); position:relative; padding:5px 14px 3px; gap:3px;}
.nav a .i{font-size:0;}                 /* kill emoji/unicode glyphs */
.nav a .i svg{width:20px;height:20px;stroke-width:1.75;}
.nav a.on{color:var(--blue);}
.nav a.on::before{content:'';position:absolute;top:-1px;left:50%;transform:translateX(-50%);
  width:28px;height:2.5px;border-radius:2px;background:var(--blue);}
@media (max-width:899px){
  body{padding-bottom:76px;}
  #side{display:none !important;}
}
/* Narrow phones: the topbar must FIT — brand collapses to "SOGO", tighter
   gaps. (Its natural width was 490px on a 390px screen, so every page
   scrolled sideways — caught by ui_smoke check 5.) */
@media (max-width:560px){
  header.top{padding:10px 8px;gap:4px;}
  header.top .brand{flex:0 1 auto;min-width:0;}
  /* "DSP Hive" is short — the full wordmark fits even at 390px */
  /* 4.0: the Amazon Inbox button joined the topbar — buttons slim down
     so prediction (the only tab that also shows the week picker) still
     fits 390px. NOTE .icon-btn has a FIXED width; shrink that, never
     add padding (padding widened it — caught by ui_smoke). */
  header.top .icon-btn{width:30px;height:30px;}
  .secbar{padding:0 12px;}
  .wkstep{display:none;}  /* steppers are a desktop convenience — the
                             dropdown stays; 390px must keep fitting */
  .wkbtn{padding:8px 10px;gap:6px;}
  .wkbtn .st{display:none;}  /* score lives in the dial right below */
  body.tabpred #ribbon{display:none;}  /* redundant next to the dial */
  .att-t td{padding:6px 6px;}
  .att-pill{font-size:10px;padding:2px 7px;margin-right:3px;}
  .attn{overflow-x:auto;}  /* long license pills scroll inside the panel,
                              never widen the page */
}

/* ---------- controls: segmented filters vs chips ---------- */
.fbar .chips2{gap:0; background:var(--panel); border:1px solid var(--line);
  border-radius:10px; padding:2.5px; box-shadow:0 1px 2px rgba(18,22,29,.03);}
.fbar .fchip{border:0; border-radius:8px; background:transparent; color:var(--muted);
  font-weight:500; padding:5.5px 12px; transition:background 120ms var(--ease),color 120ms var(--ease);}
.fbar .fchip:hover{color:var(--text);}
.fbar .fchip.on{background:var(--blue); color:#fff; font-weight:600;
  box-shadow:0 1px 3px rgba(42,120,214,.35);}
.fbar .fsep{background:transparent; width:4px;}
.fbar input[type=date], .fbar input[type=search]{border-radius:10px;}

/* status chips stay tinted-pill (read-only) — sharpen edges */
.st-chip{font-weight:600; letter-spacing:.01em;}
.tag-chip{border-radius:7px;}

/* ---------- cards & panels ---------- */
.panel, .card, .dcard, .qcard, .chart, details.x{
  border:1px solid var(--line); box-shadow:var(--shadow); border-radius:var(--radius);
}
.hero{border:1px solid var(--line); box-shadow:var(--shadow-float);
  border-radius:var(--radius-lg);
  background:linear-gradient(170deg, var(--panel), color-mix(in srgb, var(--panel) 92%, var(--blue-soft)));}
.card{transition:transform 120ms var(--ease), box-shadow 120ms var(--ease), border-color 120ms var(--ease);}
.card:hover{border-color:var(--line-strong);}
.dcard[onclick], .card[onclick], tr[onclick]{cursor:pointer;}
.dcard[onclick]:hover{transform:translateY(-1px); box-shadow:var(--shadow-float);}
.catlabel{color:var(--dim); font-size:11.5px; letter-spacing:.07em; margin:22px 2px 10px;
  display:flex; align-items:center; gap:10px;}
.catlabel::after{content:''; flex:1; height:1px; background:var(--line);}

/* tables */
table.t th{font-size:10.5px; letter-spacing:.06em; color:var(--dim); padding:7px 10px;}
table.t td{padding:8.5px 10px;}
/* hover highlight ONLY on clickable rows — on static tables (e.g. the
   permission matrix) rows scrolling under the cursor strobe with
   highlights ("flashes", Jose 2026-07-21) */
table.t tr[onclick]:hover td{background:color-mix(in srgb, var(--panel2) 55%, transparent);}

/* dialogs */
dialog{border:1px solid var(--line); border-radius:18px; box-shadow:var(--shadow-float);}
dialog::backdrop{background:rgba(10,12,16,.5); backdrop-filter:blur(3px);}

/* ---------- skeleton loading ---------- */
.skel-wrap{display:flex;flex-direction:column;gap:14px;padding-top:8px;}
.skel{border-radius:var(--radius); background:var(--panel2); position:relative; overflow:hidden;}
.skel::after{content:'';position:absolute;inset:0;
  background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--panel) 65%, transparent), transparent);
  animation:shimmer 1.3s infinite;}
@keyframes shimmer{from{transform:translateX(-100%);}to{transform:translateX(100%);}}
.skel.h-hero{height:230px;border-radius:var(--radius-lg);}
.skel.h-row{height:86px;}
.skel.h-cards{height:150px;}
@media (prefers-reduced-motion: reduce){ .skel::after{animation:none;} }

/* empty states */
.empty{display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:52px 20px;color:var(--dim);text-align:center;}
.empty svg{width:30px;height:30px;stroke-width:1.5;opacity:.6;}
.empty .et{font-size:14px;font-weight:600;color:var(--muted);}
.empty .eh{font-size:12.5px;max-width:340px;}

/* buttons */
button{transition:background 120ms var(--ease), border-color 120ms var(--ease), transform 120ms var(--ease);}
button:active{transform:scale(.98);}
.linkbtn{box-shadow:0 1px 2px rgba(18,22,29,.04);}
.linkbtn svg{width:14px;height:14px;stroke-width:1.75;vertical-align:-2px;margin-right:5px;}

.wkbtn span{white-space:nowrap;}
@media (max-width:899px){
  .wkbtn .st{display:none;}
  .wkbtn{padding:7px 10px; font-size:12.5px;}
}

/* score ribbon (header, all tabs) */
#ribbon{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:6px 12px;box-shadow:0 1px 2px rgba(18,22,29,.04);white-space:nowrap;}
#ribbon .rb-score{font-size:15px;letter-spacing:-.01em;}
#ribbon .rb-tier{font-size:10.5px;font-weight:650;padding:2px 8px;border-radius:8px;}
@media (max-width:520px){ #ribbon .rb-wk{display:none;} }

/* chart tooltip + draw-in */
#chart-tip{position:fixed;z-index:80;display:none;pointer-events:none;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  box-shadow:var(--shadow-float);padding:8px 11px;font-size:12px;min-width:110px;}
#chart-tip b{display:block;margin-bottom:4px;font-size:11.5px;color:var(--muted);}
#chart-tip div{display:flex;justify-content:space-between;gap:14px;}
#chart-tip .tt-k{color:var(--dim);}
#chart-tip .tt-v{font-weight:650;font-variant-numeric:tabular-nums;}
.chart polyline[pathLength]{stroke-dasharray:1;stroke-dashoffset:1;
  animation:fddraw 600ms var(--ease) forwards;}
@keyframes fddraw{to{stroke-dashoffset:0;}}
.chart svg rect[rx]{transform-box:fill-box;transform-origin:bottom;
  animation:fdbar 280ms var(--ease) backwards;}
@keyframes fdbar{from{transform:scaleY(0);}to{transform:scaleY(1);}}
@media (prefers-reduced-motion: reduce){
  .chart polyline[pathLength]{animation:none;stroke-dasharray:none;}
  .chart svg rect[rx]{animation:none;}
}

/* tab crossfade */
#app{animation:fdfade 200ms var(--ease);}
@keyframes fdfade{from{opacity:.55;transform:translateY(3px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){ #app{animation:none;} }

/* refresh spinner */
.spin svg{animation:fdspin 1s linear infinite;}
@keyframes fdspin{to{transform:rotate(360deg);}}

/* Roster link chip shown on phone only (Roster tab folds into Team there) */
.roster-link{display:none; text-decoration:none;}
@media (max-width:899px){
  .roster-link{display:inline-flex; align-items:center; gap:6px;
    font-size:12px; padding:6px 12px; border-radius:10px;
    background:var(--panel); border:1px solid var(--line); color:var(--muted);}
}

/* ---------- harmony: retint legacy hardcoded components with tokens ---------- */
.cdot{display:inline-block;width:8px;height:8px;border-radius:50%;
  vertical-align:1px;margin-right:6px;}
.chip.good{background:color-mix(in srgb,var(--blue) 12%,transparent);
  color:var(--blue);border-color:transparent;}
.chip.warn{background:color-mix(in srgb,var(--amber) 14%,transparent);
  color:var(--amber);border-color:transparent;}
.fc .fp{background:color-mix(in srgb,var(--fantastic) 13%,transparent);color:var(--fantastic);}
.fc .f{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green);}
.fc .b{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red);}
/* named zones turned short coordinate labels into real street names
   that overflowed fixed rows at phone width (2026-07-20) — let badges,
   coach rows and event chips wrap instead of pushing the layout wide */
.badge{overflow-wrap:anywhere;white-space:normal;}
.focus-row{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;
  min-width:0;}
.focus-row>span{min-width:0;overflow-wrap:anywhere;}
.cr-ev{overflow-wrap:anywhere;}
.badge.clean{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green);}
.badge.mid{background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--blue);}
.badge.hot{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red);}
.st-not_disputed{background:color-mix(in srgb,var(--dim) 14%,transparent);color:var(--muted);}
.st-filed_pending{background:color-mix(in srgb,var(--blue) 13%,transparent);color:var(--blue);}
.st-approved{background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green);}
.st-denied{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red);}
.st-expired{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber);}
.pbook{background:var(--blue-soft);color:var(--blue-deep);}
.catlabel svg{width:14px;height:14px;stroke-width:1.75;flex:0 0 auto;}
button svg, a.linkbtn svg{width:13px;height:13px;stroke-width:1.75;
  vertical-align:-2px;margin-right:5px;flex:0 0 auto;}
table.t a svg{width:15px;height:15px;stroke-width:1.75;vertical-align:-3px;
  color:var(--muted);margin:0;}
table.t a:hover svg{color:var(--blue);}
.chip svg,.coach-log svg,.st-chip svg,.wkrow svg{width:12px;height:12px;
  stroke-width:1.75;vertical-align:-2px;margin-right:3px;}
svg:not([width]):not([class]){max-width:16px;max-height:16px;}
.linkbtn svg, .actions svg, .cbtn svg{width:14px;height:14px;stroke-width:1.75;
  vertical-align:-2.5px;margin-right:5px;}
.ai-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:650;
  padding:3px 10px;border-radius:10px;}
.ai-chip svg{width:12px;height:12px;stroke-width:2;}
.ai-chip.go{background:color-mix(in srgb,var(--blue) 13%,transparent);color:var(--blue);}
.ai-chip.no{background:color-mix(in srgb,var(--dim) 14%,transparent);color:var(--muted);}

/* legacy chrome cleanup */
.dialwrap .num{font-variant-numeric:tabular-nums; letter-spacing:-.025em;}
h2.page{font-size:21px; margin:6px 2px 4px;}
.sub2{margin-bottom:14px;}

/* ---------- What-if ---------- */
.wi-grid{display:grid;grid-template-columns:1fr 250px;gap:14px;align-items:start;}
@media (max-width:760px){.wi-grid{grid-template-columns:1fr;}}
.wi-side{position:sticky;top:72px;text-align:center;}
.wi-big{font-size:44px;font-weight:800;font-variant-numeric:tabular-nums;
  letter-spacing:-.03em;line-height:1.1;margin:2px 0;}
.wi-row{display:grid;grid-template-columns:150px 1fr 84px 34px;gap:10px;
  align-items:center;padding:7px 0;border-bottom:1px solid var(--line);}
.wi-row:last-of-type{border-bottom:none;}
.wi-row .wi-l{display:flex;flex-direction:column;font-size:12.5px;line-height:1.35;}
.wi-row .wi-l .dim{font-size:10.5px;}
.wi-row input[type=range]{accent-color:var(--blue);width:100%;min-width:60px;}
.wi-row input[type=number]{width:100%;font-size:12px;padding:5px 7px;
  border:0.5px solid var(--line);border-radius:8px;background:var(--panel);
  color:var(--ink);font-variant-numeric:tabular-nums;}
.wi-ms{font-size:12px;font-weight:750;text-align:right;font-variant-numeric:tabular-nums;}
@media (max-width:560px){.wi-row{grid-template-columns:1fr 74px 30px;}
  .wi-row .wi-l{grid-column:1 / -1;}}

/* ---------- Briefing ---------- */
.brief{max-width:760px;line-height:1.7;font-size:13.5px;}
.brief h3{font-size:17px;margin:4px 0 8px;}
.brief h4{font-size:13px;margin:16px 0 4px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);}
.brief ul{margin:4px 0 8px;padding-left:20px;}
.brief li{margin:3px 0;}
.brief p{margin:6px 0;}

/* ---------- Command palette (⌘K) ---------- */
dialog.pal{width:min(560px,92vw);padding:0;border:0.5px solid var(--line);
  border-radius:16px;background:var(--panel);color:var(--ink);
  box-shadow:var(--shadow);margin-top:12vh;}
dialog.pal::backdrop{background:rgba(10,14,20,.35);backdrop-filter:blur(2px);}
.pal-in{display:flex;align-items:center;gap:10px;padding:13px 16px;
  border-bottom:1px solid var(--line);}
.pal-in svg{width:16px;height:16px;stroke-width:2;color:var(--muted);flex:0 0 auto;}
.pal-in input{flex:1;border:none;outline:none;background:transparent;
  font-size:14.5px;color:var(--ink);}
.pal-list{max-height:320px;overflow-y:auto;padding:6px;}
.pal-row{padding:9px 12px;border-radius:10px;font-size:13px;cursor:pointer;}
.pal-row:hover{background:color-mix(in srgb,var(--blue) 7%,transparent);}
.pal-row.sel{background:color-mix(in srgb,var(--blue) 12%,transparent);
  color:var(--blue);font-weight:650;}

/* ---------- goal bar ---------- */
.goalbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:10px 2px 0;padding:9px 14px;font-size:12.5px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow);}
.goalbar svg{width:15px;height:15px;stroke-width:1.75;color:var(--blue);flex:0 0 auto;}
.goalbar .goal-edit{margin-left:auto;padding:4px 8px;background:transparent;
  border:none;box-shadow:none;cursor:pointer;color:var(--dim);}
.goalbar .goal-edit:hover{color:var(--blue);}
.goalbar .goal-edit svg{color:inherit;margin:0;}

/* ---------- TV mode ---------- */
body.tvmode #side,body.tvmode header.top,body.tvmode .nav{display:none !important;}
body.tvmode{display:block;padding:0;}
body.tvmode .wrap{grid-column:1;max-width:none;padding:0;}
.tv{min-height:100vh;display:flex;flex-direction:column;padding:34px 48px;gap:10px;}
.tv-head{display:flex;justify-content:space-between;align-items:center;}
.tv-brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:750;}
.tv-brand img{width:34px;height:34px;}
.tv-clock{font-size:26px;font-weight:650;color:var(--muted);font-variant-numeric:tabular-nums;}
.tv-main{flex:1;display:grid;grid-template-columns:1.4fr 1fr;gap:28px;align-items:center;}
.tv-score{text-align:center;}
.tv-score .n{font-size:min(22vw,190px);font-weight:800;line-height:1;
  letter-spacing:-.04em;font-variant-numeric:tabular-nums;}
.tv-score .t{font-size:34px;font-weight:750;margin-top:4px;}
.tv-score .r{font-size:16px;margin-top:8px;}
.tv-side{display:flex;flex-direction:column;gap:16px;}
.tv-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;
  padding:18px 22px;box-shadow:var(--shadow);}
.tv-card .h{font-size:13px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);margin-bottom:8px;}
.tv-card .row{display:flex;justify-content:space-between;font-size:17px;padding:5px 0;}
.tv-card .big{font-size:52px;font-weight:800;line-height:1;}
.tv-season{display:flex;gap:8px;align-items:flex-end;padding:0 8px;}
.tv-season .cell{flex:1;display:flex;flex-direction:column;gap:5px;text-align:center;}
.tv-season .cell span{font-size:12px;color:var(--dim);}
.tv-foot{text-align:center;font-size:12px;padding:6px 0 2px;}

/* ---------- 1-on-1 printable sheet ---------- */
#onesheet{display:none;}
@media print{
  body{display:block !important;padding:0 !important;background:#fff !important;}
  body>*{display:none !important;}
  body #onesheet{display:block !important;color:#000;background:#fff;
    font-size:12px;line-height:1.55;padding:10px 6px;}
  #onesheet h1{font-size:20px;margin:0 0 2px;}
  #onesheet .os-meta{font-size:11px;color:#555;margin-bottom:14px;}
  #onesheet h2{font-size:13px;text-transform:uppercase;letter-spacing:.05em;
    margin:16px 0 6px;border-bottom:1px solid #ccc;padding-bottom:3px;}
  #onesheet table{width:100%;border-collapse:collapse;font-size:11px;}
  #onesheet th,#onesheet td{text-align:left;padding:4px 6px;border-bottom:1px solid #ddd;}
  #onesheet ul{margin:4px 0;padding-left:18px;}
  #onesheet .os-lines div{border-bottom:1px solid #999;height:26px;margin-top:14px;}
  #onesheet .os-sign{display:flex;gap:40px;margin-top:44px;}
  #onesheet .os-sign div{flex:1;border-top:1px solid #000;padding-top:5px;
    font-size:11px;color:#333;}
  body #certsheet{display:flex !important;color:#000;background:#fff;
    min-height:96vh;align-items:center;justify-content:center;}
  #certsheet .cert-frame{border:3px double #0f1c33;border-radius:6px;
    padding:56px 48px;text-align:center;width:100%;max-width:640px;}
  #certsheet .cert-co{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:#555;}
  #certsheet .cert-title{font-size:34px;font-weight:800;color:#0f1c33;margin:14px 0 2px;}
  #certsheet .cert-week{font-size:13px;color:#555;}
  #certsheet .cert-star{font-size:40px;color:var(--gold);margin:14px 0 6px;}
  #certsheet .cert-name{font-size:27px;font-weight:700;margin-bottom:14px;}
  #certsheet .cert-body{font-size:13.5px;line-height:1.6;color:#222;max-width:460px;margin:0 auto;}
  #certsheet .cert-sign{display:flex;gap:60px;margin-top:52px;}
  #certsheet .cert-sign div{flex:1;border-top:1px solid #000;padding-top:6px;
    font-size:11px;color:#333;}
}
#certsheet{display:none;}

/* ---------- Team v3.13: summary strip, dim zeros, DotW ---------- */
.tsum{display:flex;gap:6px;flex-wrap:wrap;padding:14px 10px;margin-bottom:14px;}
.ts-item{flex:1;min-width:118px;text-align:center;padding:2px 8px;
  display:flex;flex-direction:column;gap:3px;align-items:center;}
.ts-item b{font-size:22px;font-weight:800;line-height:1.1;
  font-variant-numeric:tabular-nums;}
.ts-item span{font-size:11px;color:var(--dim);line-height:1.35;}
.ts-delta{display:inline-block;font-size:10.5px;padding:1px 8px;border-radius:99px;
  background:color-mix(in srgb,var(--dim) 10%,transparent);color:var(--dim);}
.ts-delta.good{background:color-mix(in srgb,var(--green) 12%,transparent);color:var(--green);}
.ts-delta.bad{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red);}
.dimzero{color:var(--dim);opacity:.45;}
.dotw{display:flex;align-items:center;gap:16px;margin-bottom:12px;
  border-left:3px solid var(--gold);}
.dotw-star{width:30px;height:30px;color:var(--gold);flex:none;}
.dotw-star svg{width:100%;height:100%;fill:currentColor;stroke:none;}
.dotw-main{flex:1;min-width:0;}
.dotw-label{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.dotw-name{font-size:18px;}
.dotw-print svg{width:14px;height:14px;vertical-align:-2px;margin-right:4px;}

/* ---------- Team v3.13.1: coach priority rows ---------- */
.crows{padding:4px 0;margin-bottom:4px;}
.crow{display:grid;grid-template-columns:26px 38px minmax(0,1fr) 150px 130px auto;
  gap:12px;align-items:center;padding:11px 16px;cursor:pointer;
  border-bottom:1px solid var(--line);}
.crow:last-child{border-bottom:0;}
.crow:hover{background:color-mix(in srgb,var(--blue) 4%,transparent);}
.crow-done{opacity:.55;}
.cr-rank{font-size:13px;font-weight:800;color:var(--dim);text-align:center;
  font-variant-numeric:tabular-nums;}
.cr-av{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:12.5px;font-weight:800;flex:none;
  background:color-mix(in srgb,var(--dim) 12%,transparent);color:var(--text);}
.cr-av.hot{box-shadow:0 0 0 2px var(--red);color:var(--red);
  background:color-mix(in srgb,var(--red) 10%,transparent);}
.cr-av.warn{box-shadow:0 0 0 2px var(--amber);color:var(--amber);
  background:color-mix(in srgb,var(--amber) 12%,transparent);}
.cr-av.mild{box-shadow:0 0 0 2px color-mix(in srgb,var(--amber) 55%,transparent);}
.cr-main{min-width:0;}
.cr-name{display:flex;align-items:center;gap:7px;min-width:0;}
.cr-name b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cr-events{display:flex;gap:6px;flex-wrap:nowrap;overflow:hidden;margin-top:3px;}
.cr-ev{font-size:11.5px;color:var(--muted);background:var(--panel2);
  border:1px solid var(--line);border-radius:7px;padding:1.5px 8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;flex:none;}
.cr-rep{font-size:11px;color:var(--red);white-space:nowrap;flex:none;
  display:inline-flex;align-items:center;gap:3px;}
.cr-rep svg{width:11px;height:11px;}
.cr-share{display:flex;align-items:center;gap:8px;}
.cr-bar{flex:1;height:5px;border-radius:99px;overflow:hidden;
  background:color-mix(in srgb,var(--dim) 12%,transparent);}
.cr-bar i{display:block;height:100%;border-radius:99px;background:var(--amber);}
.cr-share span{font-size:11px;color:var(--dim);width:32px;text-align:right;
  font-variant-numeric:tabular-nums;}
.cr-meta{display:flex;flex-direction:column;gap:1px;line-height:1.3;}
.cr-meta b{font-size:13px;font-variant-numeric:tabular-nums;}
.cr-meta b.cr-hot{color:var(--red);}
.cr-meta span{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;}
.cr-meta em{font-style:normal;font-size:11px;color:var(--muted);margin-top:2px;}
.cr-act{display:flex;flex-direction:column;align-items:flex-end;gap:5px;}
.cr-coach{font-size:11px;color:var(--muted);white-space:nowrap;}
@media(max-width:800px){
  .crow{grid-template-columns:24px 36px minmax(0,1fr) auto;row-gap:9px;}
  .cr-meta{display:none;}
  .cr-act{grid-column:4;grid-row:1;}
  .cr-share{grid-column:3/-1;grid-row:2;}
  .cr-rank{grid-row:1;}
  .cr-av{grid-row:1;}
}

/* ---------- Team v3.13.1: board — numbers, heat, impact bars ---------- */
.tnum td.num,.tnum th.num{text-align:right;font-variant-numeric:tabular-nums;}
.tablewrap{max-height:none;}
.tablewrap table.t th{position:sticky;top:0;background:var(--panel);z-index:2;}
td.ht-warn{background:color-mix(in srgb,var(--amber) 11%,transparent);}
td.ht-bad{background:color-mix(in srgb,var(--red) 12%,transparent);
  color:var(--red);font-weight:600;}
.impcell{white-space:nowrap;}
.impbar{display:inline-block;width:56px;height:5px;border-radius:99px;
  vertical-align:2px;margin-right:8px;overflow:hidden;
  background:color-mix(in srgb,var(--dim) 10%,transparent);}
.impbar i{display:block;height:100%;border-radius:99px;background:var(--red);
  opacity:.75;}
.impbar.wbar{width:48px;}
.impbar.wbar i{background:var(--amber);}

/* ---------- Roster v3.13.1: labeled filters, attention queue, tag cell ---- */
.fgroup{display:flex;align-items:center;gap:7px;}
.flab{font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);}
.att-tiles{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.att-tile{flex:1;min-width:110px;text-align:center;padding:10px 8px;
  border:1px solid var(--line);border-radius:12px;cursor:pointer;
  display:flex;flex-direction:column;gap:2px;transition:border-color 120ms var(--ease);}
.att-tile:hover{border-color:var(--blue);}
.att-tile.on{border-color:var(--blue);
  background:color-mix(in srgb,var(--blue) 6%,transparent);}
.att-tile b{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;}
.att-tile span{font-size:10.5px;color:var(--dim);letter-spacing:.04em;
  text-transform:uppercase;}
.att-t tr{cursor:pointer;}
.att-t td{padding:7px 10px;}
.att-lic{text-align:right;white-space:nowrap;}
.att-pill{display:inline-block;font-size:10.5px;font-weight:600;
  padding:2px 9px;border-radius:99px;margin-right:5px;white-space:nowrap;
  background:color-mix(in srgb,var(--dim) 10%,transparent);color:var(--muted);}
.att-pill.warn{background:color-mix(in srgb,var(--amber) 14%,transparent);
  color:var(--amber);}
.att-pill.bad{background:color-mix(in srgb,var(--red) 13%,transparent);
  color:var(--red);}
.att-pill.mid{background:color-mix(in srgb,var(--blue) 11%,transparent);
  color:var(--blue);}
.att-pill.stale{background:transparent;border:1px dashed var(--line);
  color:var(--dim);font-weight:500;}
.att-more{font:inherit;font-size:11.5px;color:var(--blue);background:none;
  border:0;padding:8px 2px 0;cursor:pointer;}
.att-stalebar{font-size:11px;margin-top:8px;}
.att-stalebar a{color:var(--dim);cursor:pointer;text-decoration:underline;
  text-underline-offset:2px;}
.tagcell{white-space:nowrap;}
.hub-tog{display:inline-block;font-size:10.5px;font-weight:700;
  padding:2.5px 10px;border-radius:99px;cursor:pointer;margin-right:6px;
  border:1px dashed var(--line);color:var(--dim);transition:all 120ms var(--ease);
  opacity:0;}
tr:hover .hub-tog{opacity:1;}
.hub-tog:hover{border-color:var(--blue);color:var(--blue);}
.hub-tog.on{background:var(--blue);border-color:var(--blue);color:#fff;
  border-style:solid;opacity:1;}
@media(hover:none){.hub-tog{opacity:.6;}}
.tag-add{display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:20px;border-radius:50%;border:1px dashed var(--line);
  color:var(--dim);font-size:13px;cursor:pointer;vertical-align:middle;
  opacity:0;transition:opacity 120ms var(--ease);}
tr:hover .tag-add{opacity:1;}
@media(hover:none){.tag-add{opacity:.6;}}

/* ---------- Disputes v3.13.2: tabs, grouped queue, compact filed rows ---- */
.dtabs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:2px 0 16px;}
.dtabs .fchip{font-size:12.5px;padding:7px 15px;border-radius:10px;cursor:pointer;
  color:var(--muted);background:var(--panel);border:1px solid var(--line);
  font-weight:600;transition:all 120ms var(--ease);}
.dtabs .fchip:hover{color:var(--text);border-color:var(--blue);}
.dtabs .fchip.on{background:var(--blue);color:#fff;border-color:var(--blue);}
.aq-row{border-top:1px solid var(--line);margin-top:10px;padding-top:10px;}
.aq-main{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0;}
.aq-what{font-size:13px;font-weight:600;}
.aq-acts{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:7px;}
.aq-acts button,.aq-acts a{font-size:11.5px;padding:5px 12px;display:inline-flex;
  align-items:center;gap:5px;}
.aq-file{background:var(--blue);color:#fff;border-color:transparent;}
.aq-already{font-size:11px;color:var(--dim);margin-left:auto;}
.aq-ai{margin-top:6px;font-size:11.5px;}
.aq-draft{margin-top:6px;}
.fw-rows{padding:4px 0;}
.fw-row{display:flex;gap:10px;align-items:center;padding:8px 16px;cursor:pointer;
  border-bottom:1px solid var(--line);min-width:0;}
.fw-row:last-child{border-bottom:0;}
.fw-row:hover{background:color-mix(in srgb,var(--blue) 4%,transparent);}
.fw-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:190px;flex:none;}
.fw-what{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;flex:1;}
.fw-meta{font-size:11px;white-space:nowrap;flex:none;}
.fw-pts{font-size:11.5px;color:var(--amber);font-weight:600;width:44px;
  text-align:right;flex:none;font-variant-numeric:tabular-nums;}
/* ---------- v3.14.1: driver profile drawer — real scrolling ---------- */
dialog.drv[open]{display:flex;flex-direction:column;max-height:86vh;
  padding:0;overflow:hidden;}
.drv-head{display:flex;justify-content:space-between;align-items:center;
  gap:10px;padding:16px 20px 10px;border-bottom:1px solid var(--line);
  flex:none;}
.drv-body{overflow-y:auto;padding:4px 20px 18px;min-height:0;
  overscroll-behavior:contain;}
.drv-ev{display:flex;gap:9px;align-items:center;padding:8px 2px;
  border-bottom:1px solid var(--line);font-size:12.5px;flex-wrap:wrap;
  cursor:pointer;}
.drv-ev:hover{background:color-mix(in srgb,var(--blue) 4%,transparent);}
dialog.evd[open]{display:flex;flex-direction:column;max-height:80vh;
  width:min(480px,94vw);padding:0;overflow:hidden;}
.evd-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;
  font-size:12.5px;margin-top:4px;}
.evd-grid>div{display:flex;flex-direction:column;gap:1px;}
.evd-grid span{font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--dim);}
.evd-tl{font-size:12px;color:var(--muted);}
.evd-tl div{padding:4px 0 4px 14px;border-left:2px solid var(--line);
  position:relative;}
.evd-tl div::before{content:'';position:absolute;left:-4.5px;top:9px;
  width:7px;height:7px;border-radius:50%;background:var(--blue);}

/* ---------- v3.18: command dashboard ---------- */
.db-hero{display:flex;gap:22px;align-items:center;padding:18px 22px;
  margin-bottom:14px;}
.db-score{display:flex;flex-direction:column;align-items:center;
  text-decoration:none;color:inherit;flex:none;}
.db-score b{font-size:44px;font-weight:850;line-height:1;
  font-variant-numeric:tabular-nums;}
.db-score span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);margin-top:4px;}
.db-verdict{font-size:14.5px;line-height:1.5;}
.db-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:12px;margin-bottom:14px;}
.db-tile{display:flex;flex-direction:column;gap:4px;padding:14px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;
  text-decoration:none;color:inherit;transition:border-color 120ms var(--ease),transform 120ms var(--ease);}
.db-tile:hover{border-color:var(--blue);transform:translateY(-1px);}
.db-tile.warn{border-left:3px solid var(--amber);}
.db-tile.bad{border-left:3px solid var(--red);}
.db-tile.ok .db-big{color:var(--green);}
.db-t{font-size:10.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--dim);}
.db-big{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;
  line-height:1.15;}
.db-sub{font-size:11px;}
.db-ai{display:flex;gap:12px;justify-content:space-between;
  align-items:baseline;padding:8px 2px;border-bottom:1px solid var(--line);
  font-size:12.5px;line-height:1.5;}
.db-ai:last-child{border-bottom:0;}
.db-zone{display:flex;flex-direction:column;gap:4px;text-decoration:none;
  color:inherit;font-size:13px;}

/* ---------- v3.17: action center bell ---------- */
.bell-wrap{position:relative;display:inline-flex;}
.bell-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;
  border-radius:99px;background:var(--red);color:#fff;font-size:9.5px;
  font-weight:800;display:flex;align-items:center;justify-content:center;
  padding:0 4px;pointer-events:none;}
.bell-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:70;
  width:min(420px,92vw);max-height:70vh;overflow-y:auto;display:none;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow-float);}
.bell-panel.open{display:block;}
.bp-head{padding:12px 16px 8px;font-size:13px;font-weight:800;
  border-bottom:1px solid var(--line);position:sticky;top:0;
  background:var(--panel);}
.bp-tabs{display:flex;gap:4px;padding:0 12px 8px;border-bottom:1px solid var(--line);}
.bp-tabs button{font:inherit;font-size:11.5px;font-weight:650;padding:5px 11px;
  border:none;border-radius:8px;background:transparent;color:var(--muted);
  cursor:pointer;transition:background 120ms var(--ease),color 120ms var(--ease);}
.bp-tabs button.on{background:color-mix(in srgb,var(--blue) 12%,transparent);
  color:var(--blue);}
.bp-tabs button b{font-size:10.5px;background:var(--red);color:#fff;
  border-radius:8px;padding:1px 6px;margin-left:3px;}
.bp-tabs button.on b{background:var(--blue);}
.bp-item{padding:10px 16px;border-bottom:1px solid var(--line);font-size:12.5px;}
.bp-item:last-child{border-bottom:0;}
.bp-item.unread{box-shadow:inset 3px 0 0 var(--blue);}
.bp-top{display:flex;gap:8px;align-items:baseline;}
.bp-msg{color:var(--muted);margin-top:3px;line-height:1.45;font-size:12px;}
.bp-acts{display:flex;gap:6px;margin-top:8px;}
.bp-acts button{font-size:11px;padding:4px 11px;}
.bp-state{font-size:11px;margin-top:6px;}

/* ---------- 4.0: section bar (tabs + pills under the topbar) ----------
   Level 2 = tabs, level 3 = quiet pills. THREE LEVELS IS THE CEILING. */
.secbar{padding:0 22px;border-bottom:1px solid var(--line);
  background:var(--panel);position:sticky;top:0;z-index:40;}
.sec-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;}
.sec-tabs::-webkit-scrollbar{display:none;}
.sec-tab{display:flex;align-items:center;gap:6px;padding:10px 13px 9px;
  font-size:13px;font-weight:550;color:var(--muted);text-decoration:none;
  border-bottom:2px solid transparent;white-space:nowrap;
  transition:color 120ms var(--ease),border-color 120ms var(--ease);}
.sec-tab:hover{color:var(--text);}
.sec-tab.on{color:var(--blue);font-weight:650;border-bottom-color:var(--blue);}
.sec-pills{display:flex;gap:5px;padding:8px 0;overflow-x:auto;
  scrollbar-width:none;}
.sec-pills::-webkit-scrollbar{display:none;}
.sec-pill{font-size:12px;font-weight:550;padding:4px 12px;border-radius:99px;
  color:var(--muted);text-decoration:none;white-space:nowrap;
  transition:background 120ms var(--ease),color 120ms var(--ease);}
.sec-pill:hover{color:var(--text);background:var(--panel2);}
.sec-pill.on{background:var(--blue-soft);color:var(--blue);font-weight:650;}
/* ---------- 4.1: Scorecard History ---------- */
.ht-table td{vertical-align:middle;}
.ht-table .ht-week{white-space:nowrap;}
.ht-gain{font-size:11px;font-weight:700;margin-left:7px;}
.ht-mark{position:relative;display:inline-flex;margin-left:7px;
  color:var(--dim);cursor:default;vertical-align:middle;}
.ht-mark svg{width:12px;height:12px;}
.ht-mark:hover{color:var(--blue);}
.ht-pop{display:none;position:absolute;left:50%;bottom:calc(100% + 8px);
  transform:translateX(-50%);z-index:60;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:10px 14px;
  box-shadow:var(--shadow-float);white-space:nowrap;font-size:12px;}
.ht-mark:hover .ht-pop{display:block;}
.ht-pop b{display:block;font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--dim);margin-bottom:5px;}
.ht-pop .ht-step{display:block;padding:2px 0;font-weight:600;}

/* Amazon Inbox badge is BLUE — new mail is information; red badges are
   reserved for actionable counts (the bell + sidebar). */
#mail-badge{background:var(--blue);}
/* ---------- 4.14: clickable notifications ---------- */
.bp-go{cursor:pointer;transition:color 120ms var(--ease);}
.bp-go:hover{color:var(--blue);}

/* ---------- 4.13.4: visible group toggle ---------- */
.sb-toggle{margin-left:auto;font-size:11.5px;font-weight:650;
  color:var(--blue);border:1px solid color-mix(in srgb,var(--blue) 35%,transparent);
  border-radius:99px;padding:3px 12px;white-space:nowrap;
  transition:background 120ms var(--ease);}
details.sb-group summary:hover .sb-toggle{background:color-mix(in srgb,var(--blue) 10%,transparent);}
details.sb-group .tg-open{display:none;}
details.sb-group[open] .tg-open{display:inline;}
details.sb-group[open] .tg-closed{display:none;}
details.sb-group summary{padding:10px 12px;}

/* ---------- 4.13.3: safety drawer v3 sections ---------- */
.sb-sec{padding:6px 12px;}
.sb-sec.sb-muted{background:var(--panel2);}
.sb-row{display:grid;grid-template-columns:78px minmax(0,1fr) 44px auto;
  gap:10px;align-items:center;padding:9px 4px;font-size:12.5px;
  border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px;}
.sb-row:last-child{border-bottom:0;}
.sb-row:hover{background:color-mix(in srgb,var(--blue) 7%,transparent);}
.sb-w{font-weight:700;text-align:center;}
.sb-muted .sb-row{cursor:pointer;}

/* ---------- 4.13.2: safety cell + condensed event groups ---------- */
td.safecell{cursor:pointer;}
td.safecell:hover{background:color-mix(in srgb,var(--blue) 9%,transparent);}
details.sb-group summary{display:flex;align-items:center;gap:6px;
  padding:8px 10px;cursor:pointer;list-style:none;font-size:12.3px;
  border-radius:8px;transition:background 120ms var(--ease);}
details.sb-group summary::-webkit-details-marker{display:none;}
details.sb-group summary:hover{background:var(--panel2);}
details.sb-group[open] .dcr-caret{transform:rotate(90deg);}
details.sb-group>table{margin:0 0 6px 18px;width:calc(100% - 18px);}

/* ---------- 4.11: live to-date counts on the board ---------- */
.live-n{color:var(--amber);font-size:11px;font-weight:750;cursor:default;
  white-space:nowrap;}

/* ---------- 4.9.1: collapsed TBA groups in the CC drawer ---------- */
summary.dcr-ghead::-webkit-details-marker{display:none;}
.dcr-caret{display:inline-block;transition:transform 120ms var(--ease);flex:0 0 auto;}
details.dcr-grp[open] .dcr-caret{transform:rotate(90deg);}

/* ---------- 4.9: in-place help ---------- */
/* Quiet-until-hover (the design law): invisible-ish until the title row
   is hovered, then a soft dot; blue on its own hover. */
.help-dot{width:20px;height:20px;border-radius:50%;border:1px solid var(--line);
  background:transparent;color:var(--dim);font-size:11.5px;font-weight:700;
  margin-left:9px;padding:0;cursor:pointer;vertical-align:3px;
  opacity:.35;transition:opacity 120ms var(--ease),color 120ms var(--ease),border-color 120ms var(--ease);
  box-shadow:none;line-height:1;}
h2.page:hover .help-dot{opacity:.85;}
.help-dot:hover{color:var(--blue);border-color:var(--blue);opacity:1;}
.hc-steps{margin:6px 0 0;padding-left:22px;font-size:13px;line-height:1.75;
  color:var(--muted);}
.hc-steps li{margin-bottom:10px;}

/* ---------- 4.8: Recognition v2 ---------- */
.rg-podium{display:flex;gap:12px;justify-content:center;align-items:flex-end;
  margin:6px 0 16px;flex-wrap:wrap;}
.rg-pod{text-align:center;padding:14px 18px;border:1px solid var(--line);
  border-radius:14px;cursor:pointer;min-width:150px;background:var(--panel2);
  transition:border-color 120ms var(--ease);}
.rg-pod:hover{border-color:var(--blue);}
.rg-pod.first{padding:20px 22px;border-color:var(--amber);
  background:color-mix(in srgb,var(--amber) 7%,var(--panel2));}
.rg-medal{font-size:26px;margin-bottom:4px;}
.rg-pts{font-size:19px;font-weight:800;color:var(--blue);margin-top:2px;}
.rg-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:10px;}
.rg-week{padding:12px 14px;}
.rg-wk{font-size:11px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--dim);margin-bottom:6px;}
.rg-line{display:flex;justify-content:space-between;gap:8px;font-size:12.3px;
  padding:3px 0;min-width:0;}
.rg-line b{overflow-wrap:anywhere;text-align:right;}

/* ---------- 4.7: Coaching queue rows ---------- */
.cq-row{display:grid;grid-template-columns:200px minmax(0,1fr) auto;
  gap:6px 14px;padding:12px 18px;border-bottom:1px solid var(--line);
  align-items:start;}
.cq-row:last-child{border-bottom:0;}
.cq-row:hover{background:var(--panel2);}
.cq-name{min-width:0;overflow-wrap:anywhere;}
.cq-chips{display:flex;flex-wrap:wrap;gap:5px;min-width:0;}
.cq-log{white-space:nowrap;align-self:center;}
@media (max-width:700px){
  .cq-row{grid-template-columns:1fr;gap:8px;padding:12px 14px;}
  .cq-log{justify-self:start;}
}

/* ---------- 4.5: Guide help center ---------- */
.hc-wrap{display:grid;grid-template-columns:216px minmax(0,1fr);gap:14px;
  align-items:start;}
.hc-rail{position:sticky;top:64px;padding:12px;}
.hc-sec{font-size:10px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--dim);padding:10px 6px 4px;}
.hc-item{display:block;padding:6px 9px;border-radius:8px;font-size:12.8px;
  color:var(--muted);cursor:pointer;transition:background 120ms var(--ease),color 120ms var(--ease);}
.hc-item:hover{background:var(--panel2);color:var(--text);}
.hc-item.on{background:var(--blue-soft);color:var(--blue);font-weight:600;}
.hc-what{font-size:13px;color:var(--text);margin-top:2px;}
@media (max-width:700px){
  .hc-wrap{grid-template-columns:1fr;}
  .hc-rail{position:static;}
}
.bp-foot{padding:10px 16px;border-top:1px solid var(--line);font-size:12px;}
.bp-foot a{color:var(--blue);text-decoration:none;}
.bp-row{padding:10px 16px;border-bottom:1px solid var(--line);}
.bp-row:hover{background:var(--panel2);}
.bp-row .bp-t{font-size:12.5px;font-weight:600;line-height:1.35;}
.bp-row .bp-d{font-size:11px;margin-top:2px;}

/* ---------- v3.17: compliance board ---------- */
.cb-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.cb-table th{text-align:left;font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--dim);padding:8px 10px;
  border-bottom:1px solid var(--line);}
.cb-table td{padding:9px 10px;border-bottom:1px solid var(--line);}
.cb-week{font-weight:800;white-space:nowrap;}
.cb-week .dim{font-weight:400;font-size:10.5px;display:block;}
.cb-cell{display:inline-flex;align-items:center;gap:5px;font-size:11px;
  font-weight:600;padding:3px 10px;border-radius:99px;white-space:nowrap;}
.cb-filed{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green);}
.cb-awaiting{background:color-mix(in srgb,var(--blue) 11%,transparent);color:var(--blue);}
.cb-partial{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber);}
.cb-open{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber);
  border:1px solid var(--amber);}
.cb-missed{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red);}
.cb-none{color:var(--dim);background:color-mix(in srgb,var(--dim) 8%,transparent);}
.cb-pending{color:var(--dim);font-weight:400;}
.cb-current td{background:color-mix(in srgb,var(--blue) 4%,transparent);}
.cb-stale{border:1px solid var(--amber);border-radius:12px;padding:10px 14px;
  margin-bottom:12px;font-size:12.5px;background:color-mix(in srgb,var(--amber) 7%,transparent);}

/* ---------- v3.17: zones master-detail ---------- */
.zn-wrap{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:14px;
  align-items:start;}
.zn-list{padding:4px 0;max-height:72vh;overflow-y:auto;}
.zn-row{display:flex;gap:10px;align-items:center;padding:10px 14px;
  cursor:pointer;border-bottom:1px solid var(--line);}
.zn-row:last-child{border-bottom:0;}
.zn-row:hover{background:color-mix(in srgb,var(--blue) 4%,transparent);}
.zn-row.on{background:color-mix(in srgb,var(--blue) 8%,transparent);
  box-shadow:inset 3px 0 0 var(--blue);}
.zn-rowmain{min-width:0;flex:1;}
.zn-name{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;}
.zn-sub{font-size:11px;display:block;margin-top:2px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;}
.zn-rowright{flex:none;font-size:12px;text-align:right;white-space:nowrap;}
.zn-detailwrap{position:sticky;top:70px;}
.zn-panel{padding:16px 18px;}
.zn-head{display:flex;justify-content:space-between;gap:12px;
  align-items:flex-start;}
.zn-kind{font-size:10px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;padding:3px 10px;border-radius:99px;flex:none;}
.zk-loc{background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--blue);}
.zk-drv{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber);}
.zk-mix{background:color-mix(in srgb,var(--dim) 10%,transparent);color:var(--dim);}
.zn-odds{font-size:12.5px;margin-top:10px;padding:9px 13px;border-radius:10px;
  background:color-mix(in srgb,var(--dim) 7%,transparent);line-height:1.5;}
.zn-odds.good{background:color-mix(in srgb,var(--green) 9%,transparent);}
.zn-odds.bad{background:color-mix(in srgb,var(--red) 8%,transparent);}
.zn-wrap>*{min-width:0;}   /* let grid items shrink (no min-content blowout) */
@media(max-width:900px){
  .zn-wrap{grid-template-columns:1fr;}
  .zn-detailwrap{position:static;}
  .zn-list{max-height:40vh;}
}

/* ---------- v3.16: hotspots (location intelligence) ---------- */
.hs-spot{border:1px solid var(--line);border-radius:12px;padding:11px 15px;
  margin-bottom:9px;background:var(--panel);}
.hs-spot.hs-mixed{border-left:3px solid var(--amber);}
.hs-top{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;}
.hs-cell{font-weight:700;font-size:13px;color:var(--blue);cursor:pointer;
  display:inline-flex;align-items:center;gap:5px;text-decoration:none;}
.hs-cell svg{width:13px;height:13px;}
.hs-types{font-size:12px;color:var(--muted);}
.hs-years{font-size:11px;}
.hs-rec{margin-left:auto;font-size:12px;white-space:nowrap;}
.hs-meta{font-size:11.5px;margin-top:5px;}
.hs-arg{font-size:12px;margin-top:8px;padding:7px 10px;border-left:2px solid
  var(--green);background:color-mix(in srgb,var(--green) 5%,transparent);
  border-radius:0 8px 8px 0;display:flex;gap:8px;align-items:center;}
.hs-arg svg{width:12px;height:12px;color:var(--green);flex:none;}
.hs-arg .pb-copy{margin-left:auto;}
.hs-evs{margin-top:7px;}
.hs-evrow{display:flex;gap:12px;font-size:11.5px;padding:4px 2px;
  border-bottom:1px solid var(--line);cursor:pointer;}
.hs-evrow:hover{background:color-mix(in srgb,var(--blue) 4%,transparent);}

/* ---------- v3.15: playbook argument cards ---------- */
.pb-arg{border:1px solid var(--line);border-radius:12px;padding:10px 14px;
  margin-top:8px;}
.pb-argtext{font-size:12.5px;line-height:1.55;}
.pb-argmeta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;
  margin-top:7px;font-size:11.5px;}
.pb-rate{font-size:13px;font-weight:800;padding:1px 9px;border-radius:99px;}
.pb-rate.good{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green);}
.pb-rate.mid{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber);}
.pb-rate.bad{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red);}
.pb-building{font-size:10px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--dim);border:1px dashed var(--line);border-radius:99px;
  padding:1.5px 8px;}
.pb-copy{margin-left:auto;font-size:11px;padding:4px 11px;display:inline-flex;
  align-items:center;gap:4px;}

.mf-banner{display:flex;gap:12px;align-items:center;padding:11px 16px;
  margin-bottom:14px;border:1px solid color-mix(in srgb,var(--amber) 45%,transparent);
  border-left:3px solid var(--amber);border-radius:12px;
  background:color-mix(in srgb,var(--amber) 6%,transparent);font-size:12.5px;}
.mf-flag{color:var(--amber);flex:none;display:flex;}
.mf-flag svg{width:16px;height:16px;}
.mf-main{flex:1;min-width:0;line-height:1.5;}
.mf-banner .cbtn{flex:none;margin:0;}
@media(max-width:700px){
  .fw-what{display:none;}
  .fw-row{flex-wrap:wrap;row-gap:4px;}
  .fw-meta{margin-left:auto;}
  .aq-already{margin-left:0;width:100%;}
}

/* ---------- H1: coach cards v2 + training chips ---------- */
.dcard.cc{cursor:pointer;display:flex;flex-direction:column;gap:7px;}
.cc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.cc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.cc-top .badge{flex:0 0 auto;}
.cc-body{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--muted);line-height:1.5;}
.cc-what{white-space:nowrap;}
.cc-reps{display:flex;flex-wrap:wrap;gap:5px;}
.cc-rep{font-size:11px;}
.cc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:auto;padding-top:2px;}
.cc-foot .coach-log{font-size:11.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cc-foot .cbtn{margin:0;flex:0 0 auto;}
.tag-chip.qual{background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--blue);}
.tag-chip.lic-bad{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red);margin-left:4px;}
.cc-foot{flex-wrap:wrap;}
.cc-name{white-space:normal;line-height:1.3;}
.tag-chip.tag-x{cursor:pointer;}
.tag-chip.tag-x:hover{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red);}
.tag-chip.tag-add{cursor:pointer;background:transparent;border:1px dashed var(--line-strong);color:var(--muted);}
.tag-chip.tag-add:hover{color:var(--blue);border-color:var(--blue);}
.drv-link{cursor:pointer;}
.drv-link:hover{color:var(--blue);text-decoration:underline;text-underline-offset:3px;}

/* ---------- version log + what's-new toast ---------- */
#side-version{display:block;font-size:10.5px;color:var(--side-dim);text-decoration:none;
  padding-top:2px;cursor:pointer;}
#side-version:hover{color:#fff;}
.cl-wrap{display:flex;flex-direction:column;gap:12px;max-width:820px;}
.cl-entry.cl-latest{border-color:color-mix(in srgb,var(--blue) 40%,var(--line));}
.cl-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cl-ver{font-weight:800;font-size:15px;color:var(--blue);font-variant-numeric:tabular-nums;}
.cl-title{font-size:14px;}
.cl-date{font-size:11.5px;margin-left:auto;}
.cl-items{margin:8px 0 0;padding-left:20px;font-size:12.8px;line-height:1.65;}
.cl-items li{margin:3px 0;color:var(--muted);}
.vtoast{position:fixed;bottom:22px;right:22px;z-index:70;display:flex;align-items:center;
  gap:9px;background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:11px 16px;font-size:13px;box-shadow:var(--shadow-float);}
.vtoast svg{width:15px;height:15px;color:var(--blue);}
.vtoast a{color:var(--blue);font-weight:650;text-decoration:none;}
.vtoast button{background:transparent;border:none;box-shadow:none;color:var(--dim);
  cursor:pointer;padding:2px 4px;}
.rday{font-size:11px;padding:2px 7px;border-radius:7px;background:var(--panel2);
  color:var(--muted);font-variant-numeric:tabular-nums;}
.rday.today{background:color-mix(in srgb,var(--blue) 14%,transparent);color:var(--blue);font-weight:650;}
.rday.bad{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red);}
.ai-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;flex-wrap:wrap;}
.ai-row .ai-text{flex:1;min-width:180px;}
.ai-check{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line-strong);
  background:transparent;color:transparent;cursor:pointer;padding:0;flex:0 0 auto;}
.ai-check:hover{border-color:var(--green);color:var(--green);}

/* ---------- checklists ---------- */
.clitem{display:flex;gap:10px;align-items:flex-start;padding:7px 4px;border-bottom:1px solid var(--line);
  cursor:pointer;border-radius:8px;}
.clitem:hover{background:var(--panel2);}
.clbox{width:22px;height:22px;flex:0 0 auto;border:1.5px solid var(--line-strong);border-radius:7px;
  display:grid;place-items:center;font-size:13px;color:#fff;margin-top:1px;}
.clitem.on .clbox{background:var(--green);border-color:var(--green);}
.cllabel{font-size:12.8px;line-height:1.45;display:flex;flex-direction:column;gap:1px;}
.clitem.on .cllabel{color:var(--muted);}
.clval{color:var(--blue);font-variant-numeric:tabular-nums;}
.clwho{font-size:10.5px;}
.clcal{display:flex;gap:3px;align-items:center;margin-top:10px;flex-wrap:wrap;}
.clday{width:10px;height:10px;border-radius:3px;background:var(--panel2);}
.clday.full{background:var(--green);}
.clday.part{background:var(--amber);}
.clday.none{background:var(--panel2);}
/* login */
dialog.login{width:min(340px,92vw);border:1px solid var(--line);border-radius:18px;
  background:var(--panel);color:var(--text);box-shadow:var(--shadow-float);padding:24px;}
dialog.login input{width:100%;margin-bottom:10px;}
dialog.login::backdrop{background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(6px);}
@media (max-width:899px){
  .nav a[href="#wbr"]{display:none;}     /* WBR is a desktop ritual */
}
.cl-shots{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
.cl-shots img{width:180px;border-radius:10px;border:1px solid var(--line);
  transition:transform 120ms var(--ease);}
.cl-shots a:hover img{transform:scale(1.03);}
.tiersline{display:flex;gap:14px;flex-wrap:nowrap;justify-content:center;
  font-size:10px;color:var(--dim);margin:16px 0 0;white-space:nowrap;
  font-variant-numeric:tabular-nums;}

/* ---------- prediction Now / Finish-line basis ---------- */
.basis-tog{position:relative;z-index:4;display:inline-flex;gap:0;background:var(--panel2);
  border:1px solid var(--line);border-radius:9px;padding:2px;margin-bottom:6px;}
.basis-tog .bt{font-size:11.5px;font-weight:600;padding:4px 12px;border-radius:7px;
  color:var(--muted);cursor:pointer;transition:background 120ms var(--ease),color 120ms var(--ease);}
.basis-tog .bt.on{background:var(--blue);color:#fff;}
.finline{font-size:12.5px;color:var(--muted);margin:8px 0 2px;line-height:1.6;}
.finline b{color:var(--text);}
.finline .flink{color:var(--blue);cursor:pointer;text-decoration:underline;text-underline-offset:2px;}

/* ---------- refresh split button + menu + progress bar ---------- */
.refresh-split{position:relative;display:inline-flex;align-items:stretch;}
.refresh-split #refresh-btn{border-top-right-radius:0;border-bottom-right-radius:0;
  border-right:none;}
.refresh-caret{width:22px !important;padding:0 !important;border-top-left-radius:0;
  border-bottom-left-radius:0;display:grid;place-items:center;}
.refresh-caret svg{width:12px;height:12px;stroke-width:2;}
.refresh-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:250px;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow-float);padding:6px;display:none;}
.refresh-menu.open{display:block;}
.rm-item{padding:9px 12px;border-radius:9px;cursor:pointer;display:flex;
  flex-direction:column;gap:1px;}
.rm-item:hover{background:var(--panel2);}
.rm-item b{font-size:13px;}
.rm-item span{font-size:11px;color:var(--dim);}
.refresh-bar{position:sticky;top:0;z-index:25;height:0;overflow:hidden;
  background:var(--panel2);transition:height 200ms var(--ease);display:flex;align-items:center;}
.refresh-bar.on{height:26px;border-bottom:1px solid var(--line);}
.rb-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--blue);
  opacity:.16;transition:width 280ms var(--ease);}
.refresh-bar.ok .rb-fill{background:var(--green);opacity:.22;}
.refresh-bar.bad .rb-fill{background:var(--red);opacity:.20;}
.rb-label{position:relative;font-size:11.5px;color:var(--muted);padding:0 16px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media (min-width:900px){.refresh-bar{margin-left:0;}}
.cap-chip{cursor:pointer;font-size:12px;}
.cap-chip:hover b{text-decoration:underline;}
.ntog{display:flex;gap:9px;align-items:center;font-size:12.8px;padding:5px 0;
  border-bottom:1px solid var(--line);cursor:pointer;}
.ntog input{accent-color:var(--blue);width:15px;height:15px;}

/* DSP Hive wordmark — single line beside the gold hex mark */
header.top .brand{font-size:13px;white-space:nowrap;}
header.top .brand b{font-weight:800;letter-spacing:.01em;}

/* ============================================================
   U2 (4.21.0) — Inkside core components
   Chips · timeframe rail · tabs+pills · tables · stat strips ·
   tiles · buttons · drawers · empty/loading · help dot
   ============================================================ */

/* buttons + controls: r8, primary blue 12.5/700 */
button, select, .linkbtn, .cbtn{border-radius:8px;}
button{font-weight:600;}

/* chips: Title Case + icon, r99, line-height 1, optical padding */
.st-chip, .cb-cell, .att-pill, .ts-delta, .ai-chip{
  border-radius:99px; line-height:1; font-size:11px; font-weight:700;
  padding:5px 11px 3px;}
.ts-delta{padding:4px 9px 2px;}
.chip{border-radius:99px;}

/* timeframe bar — ONE pill rail, one line always (scrolls inside itself
   on narrow screens, never wraps and never widens the page) */
.fbar .chips2{border-radius:99px; padding:4px; flex-wrap:nowrap;
  white-space:nowrap; overflow-x:auto; scrollbar-width:none; max-width:100%;}
.fbar .chips2::-webkit-scrollbar{display:none;}
.fbar .fchip{border-radius:99px; font-size:11.5px; font-weight:600;
  padding:5px 11px; flex:0 0 auto;}
.fbar .fchip.on{background:var(--blue); color:#fff; box-shadow:none;}

/* tabs 13/600, active = blue + 2px underline; pills 11.5/600 */
.sec-tab{font-size:13px; font-weight:600; padding:11px 13px 9px;}
.sec-tab.on{font-weight:600;}
.sec-pill{font-size:11.5px; font-weight:600;}
.sec-pill.on{font-weight:600;}

/* data tables: 10px tracked uppercase headers, line-100 separators,
   zebra at 2% ink */
table.t th{font-size:10px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--dim);}
table.t td{font-size:12.5px; border-bottom-color:var(--panel2);}
table.t tbody tr:nth-child(even) td{background:var(--zebra);}
table.t tbody tr[onclick]:hover td{background:color-mix(in srgb, var(--blue) 5%, var(--panel));}
.cb-table th{font-size:10px; letter-spacing:.1em; color:var(--dim);}
.cb-table td{border-bottom:1px solid var(--panel2);}

/* heat cells become rounded cell pills (r6) — tint bg + figure color */
.cellpill{display:inline-block;border-radius:6px;padding:2px 8px;
  font-weight:700;font-variant-numeric:tabular-nums;}
.cellpill.ht-warn{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber);}
.cellpill.ht-bad{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red);}
/* legacy full-cell tints retired (kept quiet where still emitted) */
td.ht-warn{background:color-mix(in srgb,var(--amber) 11%,transparent);}
td.ht-bad{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red);font-weight:600;}

/* stat strip: hairline dividers between cells, 800 tabular figures */
.tsum{gap:0; padding:14px 0;}
.tsum .ts-item{padding:2px 12px;}
@media (min-width:700px){
  .tsum .ts-item{border-right:1px solid var(--line);}
  .tsum .ts-item:last-child{border-right:none;}
}
.ts-item b{font-size:23px;}
.ts-item span{color:var(--muted);}

/* metric tiles: micro-label 9.5-10/700 +8% uppercase */
.db-t{font-size:9.5px; letter-spacing:.08em;}
.db-big{font-size:22px;}
.db-sub{color:var(--dim);}
.att-tile b{font-size:22px;}
.att-tile span{font-size:10px; letter-spacing:.08em;}

/* section label: 10.5/700 +12% uppercase text-300, NO icon prefix,
   hairline extends full width (Inkside mapping #10) */
.catlabel{font-size:10.5px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--dim);}
.catlabel svg{display:none;}

/* drawers/dialogs: r12 + raise-3, header context sub-line stays */
dialog{border-radius:12px; box-shadow:var(--shadow-float);}
dialog.pal{border-radius:12px;}
dialog.login{border-radius:12px;}
.wkpanel, .bell-panel, .refresh-menu, .ht-pop{border-radius:12px;
  box-shadow:var(--shadow-float);}

/* empty state: dashed border + one-sentence guidance */
.empty{border:1px dashed var(--line-strong); border-radius:12px;
  padding:26px 20px; margin:6px 0;}
.empty .et{font-size:13px; font-weight:700; color:var(--body2);}
.empty .eh{font-size:11.5px; color:var(--dim);}

/* skeleton bars r5 */
.skel{border-radius:12px;}
.skel.h-hero{border-radius:12px;}

/* help dot: 16px blue-tint circle, always visible next to page titles */
.help-dot{width:16px; height:16px; border:none; background:var(--blue-soft);
  color:var(--blue-deep); font-size:10px; font-weight:700; opacity:1;
  vertical-align:2px;}
h2.page:hover .help-dot{opacity:1;}
.help-dot:hover{background:var(--blue); color:#fff; opacity:1;}

/* page title 21/700 -2%, one-sentence subtitle 12.5 muted */
h2.page{font-size:21px; font-weight:700; letter-spacing:-.02em;}
.sub2{font-size:12.5px; color:var(--muted);}

/* week chip pill in the top bar */
#ribbon{border-radius:99px;}

/* hero panels: flat white + hairline (gradients are reserved for
   gold/ink hero moments only) */
.hero{background:var(--panel); box-shadow:var(--shadow);}

/* ============================================================
   U3 (4.22.0) — Inkside screen passes
   ============================================================ */

/* Recognition: Driver of the Week = the ink hero panel; gold = award */
.dotw{background:linear-gradient(135deg,var(--ink9),var(--ink8));color:#fff;
  border:1px solid var(--ink9);border-left:1px solid var(--ink9);
  border-radius:12px;padding:18px 24px;}
.dotw-label{color:var(--gold);font-weight:700;}
.dotw-star{color:var(--gold);}
.dotw .dim,.dotw-main .dim,.dotw .sub,.dotw-main span.dim{color:#93a3bd;}
.dotw .dotw-name{color:#fff;}
.dotw-print{background:var(--gold);color:var(--ink9);border:none;
  font-weight:800;}
.dotw-print:hover{background:#ffc22e;border:none;}
.dotw-print svg{color:var(--ink9);}

/* Season podium: #1 is the gold card (award moment) */
.rg-pod.first{border-color:color-mix(in srgb,var(--gold) 45%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--gold) 7%,var(--panel)),var(--panel));}
.rg-pod.first .rg-medal{color:var(--gold);}

/* gold-accent cards (Zones coaching actions, streak watch) — the only
   places gold touches a content card */
.gold-card{border-left:3px solid var(--gold) !important;
  border-color:color-mix(in srgb,var(--gold) 35%,var(--line));}

/* ============================================================
   5.0.1 — the lock screen (SECURITY: signed-out = mark + sign-in
   form ONLY; the entire shell is hidden until authenticated)
   ============================================================ */
body.locked #side, body.locked header.top, body.locked .secbar,
body.locked #app, body.locked .nav, body.locked #refresh-bar{
  display:none !important;}
#lockscreen{position:fixed;inset:0;z-index:999;background:var(--ink9);
  display:grid;place-items:center;}
.lock-mark{width:64px;height:64px;}
.lock-card{display:flex;flex-direction:column;align-items:center;gap:10px;
  width:min(320px,88vw);color:#fff;}
.lock-card input{width:100%;padding:11px 14px;border-radius:8px;
  border:1px solid #33456a;background:#182640;color:#edf1f8;
  font:inherit;font-size:14px;}
.lock-card input::placeholder{color:#6c7e9c;}
.lock-card input:focus{outline:none;border-color:#5c8df0;}
.lock-card button{width:100%;padding:11px;border-radius:8px;border:none;
  background:#2b62d9;color:#fff;font:inherit;font-size:14px;font-weight:700;
  cursor:pointer;}
.lock-card button:hover{background:#2452c4;}
