/* ════════════════════════════════════════════════════════════════════════
   THEME V2 — "Press Box" · FantasyPros × Baseball Savant hybrid
   Loaded LAST (after polish.css): redefines the design tokens the whole
   site already consumes, then restyles the chrome that hardcodes the old
   editorial-paper look. Light = clean white data surfaces + navy chrome +
   FP-blue actions + Savant diverging heat. One file = the skin; deleting
   this <link> restores the previous theme.
   ════════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Surfaces: cool white (Savant page field) ── */
  --bg:              #eef2f7;
  --bg-soft:         #e4eaf2;
  --bg-tinted:       #dde6f0;
  --surface:         #ffffff;
  --surface-soft:    #f6f8fb;
  --surface-elev:    #ffffff;
  --paper:           #ffffff;
  --hairline:        rgba(13, 35, 64, .10);
  --hairline-strong: rgba(13, 35, 64, .22);
  --rule:            #16314f;
  --rule-soft:       rgba(13, 35, 64, .14);
  --rule-strong:     #16314f;

  /* ── Ink: navy ladder (AA-checked on #fff / #f6f8fb) ── */
  --ink:             #0c1f38;   /* 15.9:1 */
  --ink-2:           #14304f;   /* 12.1:1 */
  /* Darkened 2026-06-19: the prior navy-slate body inks passed AA but read
     "faded" — table numbers (--text) sat at #1f3a57 next to #0c1f38 names, so
     the data looked washed out. Crisped the whole ladder ~2-3 steps darker
     while keeping the cool navy hue. All still well clear of AA. */
  --text:            #122335;   /* ~13.7:1 — board/data cells */
  --text-2:          #20384f;   /* ~10.8:1 — age/rank */
  --text-3:          #2b3e52;   /*  ~8.6:1 — muted/subtext */
  --muted:           var(--text-3);
  --text-4:          #8195a8;   /* placeholder only */
  --text-1:          var(--ink);
  --text1:           var(--ink);
  --text2:           var(--text-2);

  /* ── Brand/actions: FantasyPros blue ── */
  --brand:           #1d5fa7;
  --brand-2:         #2d74c4;
  --brand-deep:      #16497f;
  --brand-soft:      rgba(29, 95, 167, .08);
  --brand-tint:      rgba(29, 95, 167, .18);
  --brand-grad:      linear-gradient(135deg, #1d5fa7 0%, #2d74c4 100%);
  --brand-grad-soft: linear-gradient(135deg, rgba(29,95,167,.08), rgba(45,116,196,.05));
  --accent:          #1d5fa7;
  --accent-2:        #2d74c4;
  --accent-deep:     #16497f;
  --accent-soft:     rgba(29, 95, 167, .08);
  --accent-tint:     rgba(29, 95, 167, .18);
  --accent-glow:     rgba(29, 95, 167, .22);

  /* ── Status: FP-style semantics ── */
  --green:           #117036;  /* darkened from #157a3c for WCAG AA (4.5:1): the green-soft
                                  pill tint composited over zebra/tier rows read ~4.3. */
  --green-soft:      rgba(21, 122, 60, .10);
  --green-bg:        rgba(21, 122, 60, .13);
  --red:             #bb1f1f;
  --red-soft:        rgba(187, 31, 31, .09);
  --red-bg:          rgba(187, 31, 31, .13);
  --gold:            #7e560a;  /* darkened from #8a6207 for WCAG AA (4.5:1): the gold-soft /
                                  color-mix mispricing-badge tint over rows read ~4.3. */
  --gold-soft:       rgba(138, 98, 7, .10);
  --gold-bg:         rgba(138, 98, 7, .14);
  --blue:            #1d5fa7;
  --blue-soft:       rgba(29, 95, 167, .08);

  /* ── Savant diverging heat (percentiles / deltas) ── */
  --heat-hot:        #d22d49;
  --heat-hot-soft:   rgba(210, 45, 73, .12);
  --heat-cold:       #3661ad;
  --heat-cold-soft:  rgba(54, 97, 173, .12);
  --heat-mid:        #aab6c4;

  /* ── Age tiers re-tuned to cool palette ── */
  --age-peak:        #0c7a4d;
  --age-young:       #1d7a52;
  --age-prime:       #4a6584;
  --age-mild:        #7e560a;  /* tracks --gold (AA) */
  --age-veteran:     #99551d;
  --age-decline:     #b13a33;

  /* ── Position chips: harmonized saturated set (white ink stays) ── */
  --pos-c:           #5f45a8;
  --pos-1b:          #97581f;
  --pos-2b:          #756414;
  --pos-3b:          #0f6f7d;
  --pos-ss:          #2f5fb0;
  --pos-of:          #1e7340;
  --pos-dh:          #9c4377;
  --pos-sp:          #ad392d;
  --pos-rp:          #87561d;
  --pos-util:        #506579;
  --pos-p:           #506579;

  /* ── Geometry: FP soft (kills the brutalist 0px ladder) ── */
  --r-xs:            4px;
  --r-sm:            6px;
  --r-md:            8px;
  --r-lg:            12px;
  --r-3:             3px;  --r-4: 4px;  --r-6: 6px;  --r-8: 8px;
  --r-10:            10px; --r-12: 12px; --r-14: 14px; --r-16: 16px;

  /* ── Elevation: soft (kills the 4px-4px-0 ink pop) ── */
  --shadow-1:        0 1px 2px rgba(13, 35, 64, .06);
  --shadow-2:        0 1px 2px rgba(13, 35, 64, .05), 0 8px 24px -14px rgba(13, 35, 64, .14);
  --shadow-3:        0 2px 4px rgba(13, 35, 64, .06), 0 20px 44px -24px rgba(13, 35, 64, .20);
  --shadow-4:        0 32px 72px -36px rgba(13, 35, 64, .30);
  --shadow-brand:    0 2px 6px -2px rgba(22, 73, 127, .45);
  --shadow-focus:    0 0 0 3px rgba(29, 95, 167, .30);
  --elev-pop:        0 6px 16px -6px rgba(13, 35, 64, .18);
  --elev-pop-lg:     0 14px 36px -12px rgba(13, 35, 64, .24);
  --elev-focus:      0 0 0 3px rgba(29, 95, 167, .30);

  /* Savant-tinted soft vars used by the rankings toolbar family */
  --sv-bg-soft:      #f1f5fa;
  --sv-hairline:     rgba(13, 35, 64, .12);
  --sv-ink-3:        #546a80;
}

/* ── Dark mode: navy night (overrides the warm dark palette) ── */
html[data-theme="dark"] {
  --bg:              #0b1521;
  --bg-soft:         #0f1c2b;
  --bg-tinted:       #122236;
  --surface:         #101e2f;
  --surface-soft:    #15273c;
  --surface-elev:    #1a2e45;
  --paper:           #101e2f;
  --hairline:        rgba(168, 196, 226, .12);
  --hairline-strong: rgba(168, 196, 226, .24);
  --rule:            #c7d8ea;
  --rule-soft:       rgba(168, 196, 226, .16);
  --rule-strong:     #c7d8ea;
  --ink:             #f2f7fc;
  --ink-2:           #dde9f4;
  --text:            #c9d9e8;
  --text-2:          #9db4c9;
  --text-3:          #849cb3;
  --text-4:          #5f7a92;
  --accent:          #4f93d6;
  --accent-2:        #6aa7e2;
  --accent-deep:     #3a7cba;
  --accent-soft:     rgba(79, 147, 214, .12);
  --accent-tint:     rgba(79, 147, 214, .22);
  --brand:           #4f93d6;
  --brand-2:         #6aa7e2;
  --brand-deep:      #3a7cba;
  --green:           #4cc38a;
  --red:             #e5736b;
  --gold:            #d9a514;
  --sv-bg-soft:      #15273c;
  --sv-hairline:     rgba(168, 196, 226, .14);
  --sv-ink-3:        #849cb3;
}

/* ════════ CHROME ════════ */

/* Top nav: Savant navy band, light links, blue active */
.site-nav, .site-nav__inner {
  background: #0e2a47 !important;
  border-bottom: 1px solid #0a2138 !important;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .06), 0 6px 18px -10px rgba(4, 16, 31, .6) !important;
}
.site-nav .layer1-rail__item, .site-nav a, .site-nav .layer1-rail__label {
  color: #d7e4f2 !important;
}
.site-nav .layer1-rail__item:hover .layer1-rail__label { color: #ffffff !important; }
.site-nav .layer1-rail__item.active .layer1-rail__label,
.site-nav .layer1-rail__item[aria-current] .layer1-rail__label { color: #ffffff !important; }
.site-nav .layer1-rail__item.active { box-shadow: inset 0 -3px 0 #5ea3e6 !important; background: rgba(255, 255, 255, .06) !important; }
.site-nav__logo-name, .site-nav .site-nav__logo-name { color: #ffffff !important; }
.site-nav .player-search__input {
  background: rgba(255, 255, 255, .10) !important;
  border: 1px solid rgba(255, 255, 255, .18) !important;
  color: #f2f7fc !important;
}
.site-nav .player-search__input::placeholder { color: #9db4c9 !important; }
.site-nav .player-search__icon { color: #9db4c9 !important; stroke: #9db4c9; }
/* On focus the pill expands to a white background — switch the typed text,
   placeholder, and icon to dark ink so it isn't near-white on white. */
.site-nav .player-search:focus-within .player-search__input {
  color: #0c1f38 !important;
  background: transparent !important;
}
.site-nav .player-search:focus-within .player-search__input::placeholder { color: #6b7c91 !important; }
.site-nav .player-search:focus-within .player-search__icon { color: #6b7c91 !important; stroke: #6b7c91 !important; }

/* Body field: cool app background */
body { background: var(--bg) !important; }

/* Left workspace rail: white card on cool field, blue active spine */
.shell-b__rail, .layer1-rail--side, .workspace-rail {
  background: var(--surface) !important;
  border-right: 1px solid var(--hairline) !important;
}
.shell-b__rail-eyebrow { color: var(--text-3) !important; }

/* ════════ DATA SURFACES ════════ */

/* Table header bands: navy instead of near-black */
thead tr, .table-wrap thead th, table thead th {
  background: #14304f !important;
  color: #e9f1f9 !important;
  border-color: #0e2a47 !important;
}
thead th .th-has-tip, thead th[title] { color: #e9f1f9 !important; }

/* Row chrome: thin cool rules, savant hover */
tbody td { border-bottom: 1px solid rgba(13, 35, 64, .07) !important; }
tbody tr:hover td { background: #eef4fb !important; }
.tier-row { background: #e8eef6 !important; color: #14304f !important; }

/* Cards/panels: white + soft elevation */
.panel, .u-panel, .sub-section, .dhub-card, .mm-card {
  background: var(--surface);
  border-color: var(--hairline);
}

/* Primary buttons already consume var(--accent); sharpen focus ring */
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible {
  outline: 2px solid var(--accent) !important;
  outline-offset: 2px;
}

/* Checkbox/radio accent follows blue */
input[type="checkbox"], input[type="radio"] { accent-color: var(--accent) !important; }

/* Mini delta pills → Savant heat semantics */
.row-mini-pill--green { background: var(--green-soft) !important; color: var(--green) !important; }
.row-mini-pill--gold  { background: var(--heat-cold-soft) !important; color: var(--heat-cold) !important; }

/* Rank pips: keep medal trio, cool the default */
.rk-pip { color: var(--text-2); }

/* Sub-status chips on cool tints */
.sub-status--ok   { background: rgba(21, 122, 60, .10); color: #115f30; }
.sub-status--warn { background: rgba(138, 98, 7, .10);  color: #6e4e06; }
.sub-status--err  { background: rgba(187, 31, 31, .09); color: #99201c; }

/* ── Chrome fixes round 2: out-specify legacy per-workspace label inks ── */
.site-nav .layer1-rail__items--horizontal .layer1-rail__item .layer1-rail__label,
.site-nav .layer1-rail__items--horizontal .layer1-rail__item:visited .layer1-rail__label {
  color: #d7e4f2 !important;
}
.site-nav .layer1-rail__items--horizontal .layer1-rail__item:hover .layer1-rail__label,
.site-nav .layer1-rail__items--horizontal .layer1-rail__item.active .layer1-rail__label {
  color: #ffffff !important;
}
/* Workspace "hot" dots → recolor to the sky accent (was rust/amber) */
.site-nav .layer1-rail__item::before,
.site-nav .layer1-rail__item::after,
.site-nav .layer1-rail__label::before,
.site-nav .layer1-rail__label::after {
  background-color: #5ea3e6 !important;
  color: #5ea3e6 !important;
}
/* Sign-in pill + burger: glass on navy */
.site-nav .site-nav__burger,
.site-nav [class*="signin"], .site-nav [class*="sign-in"],
.site-nav .managr-account-chip, .site-nav .account-chip {
  background: rgba(255, 255, 255, .12) !important;
  color: #f2f7fc !important;
  border: 1px solid rgba(255, 255, 255, .20) !important;
}
.site-nav .site-nav__burger:hover { background: rgba(255, 255, 255, .2) !important; }

/* Nav accent bar pseudos → sky, not rust */
.site-nav::before, .site-nav::after,
.site-nav__inner::before, .site-nav__inner::after {
  background: #5ea3e6 !important;
  background-image: none !important;
}

/* Ambient body washes: cool, not warm */
body::before { background: radial-gradient(900px 700px at 50% -100px, rgba(54, 97, 173, .05), transparent 65%) !important; }
body::after  { background: none !important; }

/* Left rail active: blue spine + tint (was rust literal) */
.shell-b__rail-link.is-active {
  background: rgba(29, 95, 167, .08) !important;
  color: var(--ink) !important;
  box-shadow: inset 3px 0 0 var(--accent) !important;
}
.shell-b__rail-link:hover { background: rgba(29, 95, 167, .05) !important; }

/* ── Dark-mode patches: light leftovers ── */
html[data-theme="dark"] .card-header,
html[data-theme="dark"] .panel .card-header {
  background: var(--surface) !important;
  border-color: var(--hairline) !important;
}
html[data-theme="dark"] .tier-row {
  background: #1c3354 !important;
  color: #c9d9e8 !important;
}
html[data-theme="dark"] .shell-b__rail-head,
html[data-theme="dark"] .shell-b__rail > header,
html[data-theme="dark"] .shell-b__rail .ws-head {
  background: var(--surface) !important;
  color: var(--ink) !important;
}
/* Card headers in light keep white; ensure border follows hairline */
.card-header { border-color: var(--hairline); }

/* Logo wordmark: force light on navy in BOTH themes */
.site-nav .site-nav__logo-name,
.site-nav .site-nav__logo-name * ,
.site-nav a[href="#/"] span {
  color: #ffffff !important;
}

/* Wordmark accent "r": sky on navy (was #d62828 literal) */
.site-nav__logo-name span { color: #5ea3e6 !important; }

/* Subnav scroll-edge indicators: hairline, not rust */
.workspace-subnav::before, .workspace-subnav::after,
.workspace-subnav--top::before, .workspace-subnav--top::after {
  background: linear-gradient(90deg, rgba(13,35,64,.10), transparent) !important;
}
.workspace-subnav__link.active {
  color: var(--accent) !important;
  background: var(--accent-soft) !important;
}


/* sub-table numeric cells: the old savant-dark band carried white ink; the
   v2 light remap of --sv-* left white-on-light. Body cells take navy ink;
   thead keeps its light ink on the navy band. */
tbody .sub-table__cell--num, tbody td.sub-table__cell--num { color: var(--text) !important; }
.sub-table thead th { color: #e9f1f9 !important; }

/* Dark: headings inside dark cards/rail must use the light ink */
html[data-theme="dark"] .card-header h1, html[data-theme="dark"] .card-header h2,
html[data-theme="dark"] .card-header h3, html[data-theme="dark"] .card-header .panel__title,
html[data-theme="dark"] .shell-b__rail h1, html[data-theme="dark"] .shell-b__rail h2,
html[data-theme="dark"] .shell-b__rail .ws-title {
  color: var(--ink) !important;
}

/* ── A− round: density pass (FP/Savant-grade row compaction) ── */
/* Tighter still (owner: "condense even more vertically"). 7px → 2px row padding;
   with the cleaned 1-data-line name cell (name + minimal ADP, no rostered / edge /
   vs-ADP pills) board rows land well under FantasyPros' ~40px. Pairs with the
   #tableBody line-height + .row-adp trim in polish.css. */
#tableBody td { padding-top: 2px !important; padding-bottom: 2px !important; }
.sub-table tbody td { padding-top: 6px !important; padding-bottom: 6px !important; }

/* hero-stat cards: cool gradient (was faintly warm) */
.hero-stat { background: linear-gradient(180deg, #ffffff 0%, #f8fafd 100%); border-color: rgba(13, 35, 64, .07); }

/* ── Savant heat, wired into pixels ──
   Convention (Savant): red = hot/above-average, blue = cold/below. */
.expl-mix-seg--bust { background: var(--heat-cold) !important; }
.expl-mix-seg--elite, .expl-mix-seg--boom { background: var(--heat-hot) !important; }
.expl-lever-bar-fill--neg { background: var(--heat-cold) !important; }
/* Risers keeps FP green/red (heat overmatch reverted — see §15) */

/* Two-start: week tags sit on light bands (dark ink); verdict/score chips
   carry saturated fills (white ink); stream tier is a light tint (green ink) */
.ts-week__tag { color: var(--text) !important; }
/* Variant posChips are white-ink everywhere, including sub-table contexts
   (diary had a local rule re-inking them navy-on-saturated) */
.posChip[class*="posChip--"][data-pos-colored="1"] { color: #fff !important; }
/* …and they must carry their saturated position FILL too. In sub-table Player
   cells the base .posChip bg (--bg-soft) was winning, rendering white ink on
   #e4eaf2 = 1.2:1 (54 nodes flagged on the Buy-Low board). Pin the fill so no
   cell zebra/first-col background bleeds through.
   Fallback first: the dynamic posChip--${pos} class can carry tokens beyond the
   fixed palette (INF, MI, CI, position-rank suffixes); give them a readable
   slate fill so white ink never lands on --bg-soft. Specific positions below
   override it (equal specificity, later source order wins). */
.posChip[data-pos-colored="1"] { background: var(--pos-util) !important; }
.posChip--c[data-pos-colored="1"]  { background: var(--pos-c)    !important; }
.posChip--1b[data-pos-colored="1"] { background: var(--pos-1b)   !important; }
.posChip--2b[data-pos-colored="1"] { background: var(--pos-2b)   !important; }
.posChip--3b[data-pos-colored="1"] { background: var(--pos-3b)   !important; }
.posChip--ss[data-pos-colored="1"] { background: var(--pos-ss)   !important; }
.posChip--of[data-pos-colored="1"] { background: var(--pos-of)   !important; }
.posChip--dh[data-pos-colored="1"] { background: var(--pos-dh)   !important; }
.posChip--sp[data-pos-colored="1"] { background: var(--pos-sp)   !important; }
.posChip--rp[data-pos-colored="1"] { background: var(--pos-rp)   !important; }
.posChip--p[data-pos-colored="1"]  { background: var(--pos-util) !important; }

/* ── Anti-slop round (taste/redesign skills) ── */
/* Signal dots replace emoji in EDGE/TRAP/FADE + warn bangs */
.sig-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 5px; vertical-align: 1px; }
.sig-dot--g { background: var(--green); }
.sig-dot--a { background: var(--gold); }
.sig-dot--r { background: var(--red); }
.warn-bang { display: inline-flex; align-items: center; justify-content: center; width: 13px; height: 13px; border-radius: 50%; background: var(--gold-bg); color: var(--gold); font-size: 10px; font-weight: 700; }
/* Skeletal loaders (board first compute) */
.skel-row td { padding: 9px 12px !important; border-bottom: 1px solid rgba(13, 35, 64, .05) !important; }
.skel-bar { height: 14px; border-radius: 6px; background: linear-gradient(90deg, #eef2f7 25%, #f7fafd 45%, #eef2f7 65%); background-size: 240% 100%; animation: skel-shimmer 1.2s ease-in-out infinite; }
@keyframes skel-shimmer { from { background-position: 120% 0; } to { background-position: -120% 0; } }
html[data-theme="dark"] .skel-bar { background: linear-gradient(90deg, #15273c 25%, #1b3050 45%, #15273c 65%); background-size: 240% 100%; }
/* Tactile feedback on actionable controls (taste rule 5) */
button:active, .ops-btn:active, [role="button"]:active { transform: translateY(1px) scale(.99); }
/* Headline balance + readable lede width (redesign typography rules) */
h1, h2, .panel__title, .sub-hero__title { text-wrap: balance; }
.sub-article__lede, .sub-note, .panel__sub { max-width: 68ch; text-wrap: pretty; }

/* ── Prospect Intelligence block (player page) ── */
.pintel { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: start; }
.pintel-grad__head { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.pintel-grad__tier { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); background: var(--surface-soft); padding: 2px 7px; border-radius: 999px; }
.pintel-odo { margin-bottom: 9px; }
.pintel-odo__top { display: flex; justify-content: space-between; font-size: 12.5px; margin-bottom: 3px; }
.pintel-odo__lbl { color: var(--text-2); }
.pintel-odo__val { font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.pintel-odo__track { height: 7px; border-radius: 999px; background: var(--surface-soft); overflow: hidden; }
.pintel-odo__fill { height: 100%; border-radius: 999px; }
.pintel-odo__fill--g { background: var(--green); }
.pintel-odo__fill--b { background: var(--accent); }
.pintel-odo__fill--h { background: var(--heat-hot); }
.pintel-note { font-size: 11.5px; color: var(--text-3); margin: 8px 0 0; max-width: 60ch; text-wrap: pretty; }
.pintel-fv { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 14px 20px; background: var(--surface-soft); border: 1px solid var(--hairline); border-radius: var(--r-12); min-width: 132px; }
.pintel-fv__grade { font-size: 38px; font-weight: 800; line-height: 1; color: var(--ink); letter-spacing: -.02em; }
.pintel-fv__scale { font-size: 14px; font-weight: 600; color: var(--text-3); margin-left: 4px; }
.pintel-fv__meta { text-align: center; margin-top: 8px; }
.pintel-fv__lbl { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-2); }
.pintel-fv__src { font-size: 10.5px; color: var(--text-3); margin-top: 2px; max-width: 18ch; }
@media (max-width: 640px) { .pintel { grid-template-columns: 1fr; } }

/* Player-alert chip SVG icons (replaced emoji) */
.pa-chip__svg { vertical-align: -1px; }
.pa-chip__ic:empty { display: none; }

/* ── Dynasty Draft Lottery ── */
.lot-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.lot-controls__lbl { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-right: 2px; }
.lot-seg { font: inherit; font-size: 12.5px; padding: 6px 12px; border: 1px solid var(--hairline); background: var(--surface); color: var(--text-2); border-radius: var(--r-8); cursor: pointer; }
.lot-seg:hover { background: var(--surface-soft); }
.lot-seg.is-on { background: var(--accent); color: #fff; border-color: var(--accent); }
.lot-bar { height: 8px; border-radius: 999px; background: var(--surface-soft); overflow: hidden; min-width: 80px; }
.lot-bar__fill { height: 100%; border-radius: 999px; background: var(--accent); }

/* ── Share card ── */
.sharecard-launch { max-width: var(--max-w, 1320px); margin: 10px auto 0; padding: 0 var(--gutter, 32px); }
.sharecard-btn { font: inherit; font-size: 13px; font-weight: 600; padding: 7px 16px; border: 1px solid var(--accent); background: var(--accent); color: #fff; border-radius: var(--r-8); cursor: pointer; box-shadow: var(--shadow-brand); }
.sharecard-btn:hover { background: var(--accent-deep); }
.sharecard-ov { position: fixed; inset: 0; z-index: 30000; background: rgba(8, 18, 33, .55); backdrop-filter: blur(3px); display: flex; align-items: center; justify-content: center; padding: 24px; }
.sharecard-modal { position: relative; background: var(--surface); border-radius: var(--r-16); box-shadow: var(--shadow-4); padding: 18px; max-width: 860px; width: 100%; }
.sharecard-x { position: absolute; top: 10px; right: 14px; border: none; background: transparent; font-size: 26px; line-height: 1; color: var(--text-3); cursor: pointer; }
.sharecard-x:hover { color: var(--ink); }
.sharecard-preview { border: 1px solid var(--hairline); border-radius: var(--r-12); overflow: hidden; }
.sharecard-preview svg { display: block; width: 100%; height: auto; }
.sharecard-actions { display: flex; align-items: center; gap: 14px; margin-top: 14px; }
.sharecard-dl { font: inherit; font-size: 14px; font-weight: 600; padding: 9px 20px; border: none; background: var(--accent); color: #fff; border-radius: var(--r-8); cursor: pointer; }
.sharecard-dl:hover { background: var(--accent-deep); }
.sharecard-dl:active { transform: translateY(1px) scale(.99); }
.sharecard-hint { font-size: 12.5px; color: var(--text-3); }

/* ── Prospect-intel FV card: multi-signal layout (overrides the narrow card) ── */
.pintel { grid-template-columns: 1fr minmax(300px, 360px); }
.pintel-fv { align-items: stretch !important; min-width: 0 !important; padding: 14px 16px !important; text-align: left; }
.pintel-fv__top { display: flex; align-items: center; gap: 14px; }
.pintel-fv__grade { font-size: 40px; line-height: 1; }
.pintel-fv__meta { text-align: left !important; margin-top: 0 !important; }
.pintel-fv__src { max-width: none !important; }
.pintel-fv__rates { margin-top: 10px; font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; padding-top: 9px; border-top: 1px solid var(--hairline); }
.pintel-fv__comps { list-style: none; margin: 9px 0 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.pintel-fv__comp { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; }
.pintel-fv__comp span { color: var(--text-2); }
.pintel-fv__comp b { font-variant-numeric: tabular-nums; }
.pintel-fv__comp--pos b { color: var(--green); }
.pintel-fv__comp--neg b { color: var(--heat-hot); }
.pintel-fv__note { font-size: 11.5px; color: var(--text-3); margin: 9px 0 0; }
@media (max-width: 760px) { .pintel { grid-template-columns: 1fr; } }

/* ── Arsenal Trajectory (Nestico-style per-start pitch view) ── */
.arstraj { display: flex; flex-direction: column; gap: 16px; }
.arstraj-callout { border-radius: var(--r-12); padding: 12px 16px; border: 1px solid var(--hairline); background: var(--surface-soft); }
.arstraj-callout--good { border-left: 3px solid var(--green); background: var(--green-soft); }
.arstraj-callout--warn { border-left: 3px solid var(--heat-hot); background: var(--heat-hot-soft); }
.arstraj-callout--info { border-left: 3px solid var(--accent); }
.arstraj-callout__lead { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-bottom: 4px; }
.arstraj-callout p { margin: 0; font-size: 13.5px; color: var(--text); line-height: 1.5; text-wrap: pretty; }
.arstraj-block__h { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 10px; }
.arstraj-block__sub { font-weight: 400; color: var(--text-3); font-size: 11px; }
.arstraj-bars { display: flex; align-items: flex-end; gap: 6px; height: 70px; }
.arstraj-bar { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; flex: 1; min-width: 0; height: 100%; }
.arstraj-bar__fill { width: 100%; max-width: 30px; border-radius: 3px 3px 0 0; }
.arstraj-bar__lbl { font-size: 9px; color: var(--text-3); margin-top: 4px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.arstraj-pitches { display: flex; flex-direction: column; gap: 8px; }
.arstraj-prow { display: grid; grid-template-columns: 150px 1fr 42px 38px; align-items: center; gap: 10px; }
.arstraj-prow__name { font-size: 12.5px; color: var(--text); display: flex; align-items: baseline; gap: 6px; }
.arstraj-prow__velo { font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.arstraj-spark { display: block; width: 100%; height: 22px; }
.arstraj-prow__now { font-size: 13px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; color: var(--ink); }
.arstraj-prow__delta { font-size: 12px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.arstraj-prow__delta--pos { color: var(--green); }
.arstraj-prow__delta--neg { color: var(--heat-hot); }
.arstraj-prow__delta--flat { color: var(--text-3); }
.arstraj-foot { font-size: 11.5px; color: var(--text-3); margin: 2px 0 0; }
@media (max-width: 640px) { .arstraj-prow { grid-template-columns: 110px 1fr 38px 34px; } }

/* Arsenal projection-signal badge */
.arstraj-sig { display: inline-flex; align-items: center; gap: 10px; padding: 6px 12px; border-radius: 999px; font-size: 12.5px; font-weight: 600; align-self: flex-start; }
.arstraj-sig--good { background: var(--green-soft); color: var(--green); }
.arstraj-sig--warn { background: var(--heat-hot-soft); color: var(--heat-hot); }
.arstraj-sig__nudge { font-weight: 700; font-variant-numeric: tabular-nums; }

/* ── Mix Shifts feed ── */
.mxs-sub { color: var(--text-3); font-size: 11.5px; margin-left: 4px; }
.mxs-dir { display: inline-block; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: 2px 7px; border-radius: 999px; margin-right: 6px; vertical-align: 1px; }
.mxs-dir--up { background: rgba(21, 122, 60, .15); color: #0f5c2e; }
.mxs-dir--down { background: rgba(187, 31, 31, .14); color: #971919; }
.mxs-verdict { color: var(--text-2); font-size: 12.5px; }

/* Arsenal Trajectory: velo-trend + pitch-shape chips */
.arstraj-prow__trend { display: inline-block; font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 999px; margin-left: 6px; vertical-align: 1px; }
.arstraj-prow__trend--pos { background: var(--green-soft); color: var(--green); }
.arstraj-prow__trend--neg { background: var(--red-soft); color: var(--red); }
.arstraj-prow__trend--shape { background: var(--accent-soft); color: var(--accent); }

/* Contact Trajectory reuses .arstraj-* classes; foot note styling */
.arstraj-foot { font-size: 11.5px; color: var(--text-3); margin: 10px 0 0; max-width: 70ch; text-wrap: pretty; }

/* ── Alerts: floating badge ── */
.managr-alert-badge { position: fixed; right: 18px; bottom: calc(18px + env(safe-area-inset-bottom, 0px)); z-index: 9000; display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; background: var(--accent); color: #fff; border-radius: 999px; font-size: 13px; font-weight: 600; text-decoration: none; box-shadow: var(--elev-pop-lg); }
.managr-alert-badge:hover { background: var(--accent-deep); }
.managr-alert-badge__n { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; background: rgba(255,255,255,.25); border-radius: 999px; font-size: 11px; font-weight: 800; }
.managr-alert-badge.is-new { animation: alert-pulse 2s ease-in-out 3; }
@keyframes alert-pulse { 0%,100% { box-shadow: var(--elev-pop-lg); } 50% { box-shadow: var(--elev-pop-lg), 0 0 0 5px var(--accent-soft); } }
html[data-theme="dark"] .managr-alert-badge { color: #fff; }
/* Lift the floating alert pill above the fixed Today strip when it's visible, so
   it never overlaps the INJ/PROJ/EVENTS footer (audit P2: floating-pill overlap). */
body[data-today-strip="visible"] .managr-alert-badge { bottom: calc(var(--shell-today-strip-h, 28px) + 16px + env(safe-area-inset-bottom, 0px)); }

/* Trade-chip momentum signal dot */
.ta-chip__sig { font-size: 10px; margin-left: 4px; font-weight: 700; }
.ta-chip__sig--up { color: var(--green); }
.ta-chip__sig--down { color: var(--red); }

/* ── Mobile card mode for dense data tables (≤640px) ──
   Each sub-table row becomes a stacked card: header hidden, cells flex to
   label:value pairs (the label from data-label). Vertical scroll replaces the
   horizontal table scroll that made dense boards unusable on phones. */
@media (max-width: 640px) {
  .sub-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .sub-table, .sub-table tbody { display: block; width: 100%; }
  .sub-table tr { display: block; border: 1px solid var(--hairline); border-radius: var(--r-10); margin: 0 0 10px; padding: 4px 12px; background: var(--surface); box-shadow: var(--shadow-1); }
  .sub-table td { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 6px 0; border: none !important; text-align: right; min-height: 30px; }
  .sub-table td::before { content: attr(data-label); color: var(--text-3); font-weight: 600; font-size: 11.5px; text-transform: uppercase; letter-spacing: .03em; text-align: left; flex: 0 0 auto; }
  .sub-table td:not([data-label])::before { content: ''; }
  .sub-table td:first-child { display: flex; padding-top: 9px; font-weight: 700; }  /* override the legacy styles.css mobile rule that display:none'd every table's first column */
  .sub-table td:first-child::before { color: var(--text-2); }
  .sub-table td:last-child { padding-bottom: 9px; }
  /* tier-row separators inside card mode collapse to a slim band */
  .sub-table tr:has(.tier-row), .sub-table .tier-row { text-align: left; }
  /* the rankings board (#tableBody) keeps its sticky-first-column scroll mode */
}

@media (max-width: 640px) {
  /* Card mode supersedes the old horizontal-scroll sticky first column. */
  .sub-table td:first-child, .sub-table th:first-child { position: static; }
}
