/* Next Down IQ — site v2 (owner feedback 2026-10-05: dark "Command Center" look, fantasy-first).
   Layout: full-width dark chrome, 1240px container, panels on a 12-column-ish grid that stacks on phones.
   Colour carries meaning only (up / down / caution) and always comes with an arrow or words. Orange is the brand
   accent (logo, active nav underline), never body text. */
:root {
  --bg: #07121F; --bg-2: #0A1626; --panel: #0E1D33; --panel-2: #0B1B33; --line: #1E3150; --line-2: #2D4466;
  --text: #E8EDF4; --text-2: #B6C3D6; --text-3: #8E9DB3;
  --accent: #8FB0FF; --brand: #2350D8; --bar: #3A5BB8; --bar-hi: #4C7DFF; --marker: #F26A1B;
  --up: #4CC79A; --up-bg: #10291F; --down: #FF8A7A; --down-bg: #331512; --warn: #F2C14E; --warn-bg: #2F240C;
  --font: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --display: "Archivo", "Arial Narrow", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
  --radius: 14px; --radius-sm: 10px;
  color-scheme: dark;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--text); font: 16px/1.55 var(--font); }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3 { font-family: var(--display); font-stretch: 85%; letter-spacing: -0.01em; line-height: 1.1; margin: 0; text-wrap: balance; }
h1 { font-size: clamp(2rem, 1.4rem + 2.6vw, 3.4rem); font-weight: 800; }
h2 { font-size: 1.5rem; font-weight: 700; }
h3 { font-size: 1.05rem; font-weight: 700; margin: 6px 0 8px; }
p { margin: 0 0 10px; }
.num, td.num, time { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.muted { color: var(--text-3); }
.fine { font-size: 13px; color: var(--text-3); margin-top: 10px; }
.lede, .lead { color: var(--text-2); font-size: 1.08rem; max-width: 70ch; }
.label { font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); margin: 0; }
.kicker { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); margin: 0 0 6px; }   /* UX-035 (Roman, Oct 30): labels light blue, gold only for warnings */
.up { color: var(--up); } .down { color: var(--down); } .warn { color: var(--warn); }
.strong { font-weight: 700; }
.container { max-width: 1240px; margin: 0 auto; padding-inline: 20px; }
main.container { padding-block: 22px 40px; }
.skip { position: absolute; left: -9999px; } .skip:focus { left: 12px; top: 12px; background: var(--panel); padding: 8px; z-index: 10; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* top bar */
.topbar { background: var(--bg-2); border-bottom: 1px solid var(--line); position: sticky; top: env(safe-area-inset-top, 0px); z-index: 5; }
.topbar-inner { max-width: 1240px; margin: 0 auto; padding: 10px 20px; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--text); }
.brand:hover { text-decoration: none; }
.wordmark { font-family: var(--display); font-stretch: 85%; font-weight: 800; font-size: 21px; }
.wordmark-iq { color: var(--accent); }
.main-nav { display: flex; gap: 18px; flex-wrap: wrap; }
.nav-item { color: var(--text); font-weight: 500; padding-bottom: 3px; border-bottom: 2px solid transparent; }
.nav-item[aria-current="page"] { border-bottom-color: var(--marker); color: #fff; }
.top-tools { margin-left: auto; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.top-search input, .hero-search input, .search-input { min-height: 40px; border-radius: var(--radius-sm); border: 1px solid var(--line-2);
  background: var(--panel); color: var(--text); padding: 0 12px; font: inherit; font-size: 14px; width: 200px; }
.fmt-switch { display: inline-flex; border: 1px solid var(--line-2); border-radius: 999px; overflow: hidden; }
.fmt-switch button { background: transparent; color: var(--text-2); border: 0; font: inherit; font-size: 13px; font-weight: 600; padding: 8px 12px; min-height: 36px; cursor: pointer; }
.fmt-switch button[aria-pressed="true"] { background: var(--text); color: var(--bg); }
.btn { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 16px; border-radius: var(--radius-sm);
  border: 1px solid var(--line-2); background: #13264A; color: var(--text); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.btn:hover { text-decoration: none; border-color: var(--accent); }
.btn-sm { min-height: 36px; padding: 0 12px; font-size: 13px; }
.btn-primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-light { background: #fff; border-color: #fff; color: var(--bg); }
.btn[disabled], input[disabled] { opacity: .6; cursor: not-allowed; }
.cta-row { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }

.banner { max-width: 1240px; margin: 12px auto 0; padding: 10px 14px; border-radius: var(--radius-sm); font-size: 14px; border: 1px solid var(--line-2); background: var(--panel-2); color: var(--text-2); }
.banner.mock { border-color: var(--warn); color: var(--warn); background: var(--warn-bg); }
/* week-status line under the header (LB-1) */
/* owner Oct 19 (UX): the update line is one small muted line, no box */
.week-line { font-size: 12.5px; line-height: 16px; color: var(--text-3); }
.week-line-inner { max-width: 1240px; margin: 0 auto; padding: 4px 16px; display: flex; gap: 0 6px; flex-wrap: wrap; }
.week-line strong { font-weight: 500; color: var(--text-2); }
.week-line span::before { content: "· "; }
.badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #13264A; color: #C9D8FF; border: 1px solid var(--line-2); }
details.bt { margin-top: 10px; } details.bt > summary { cursor: pointer; list-style: none; display: inline-block; }
details.bt > summary::-webkit-details-marker { display: none; }
details.bt > summary::after { content: " What does this mean?"; font-size: 13px; color: var(--accent); }
.tbl caption.label { text-align: left; padding: 4px 0 6px; }
.notice { padding: 12px 16px; border-radius: var(--radius-sm); background: var(--warn-bg); color: var(--warn); border: 1px solid #5C4A1A; margin: 0 0 18px; }

/* generic blocks */
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; min-width: 0; }
.section { margin: 26px 0; }
.section > h2, .sec-head h2 { margin-bottom: 4px; }
.sec-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #13264A; color: #C9D8FF; }
.chip a { color: inherit; }
.chip-ok { background: var(--up-bg); color: var(--up); } .chip-warn { background: var(--warn-bg); color: var(--warn); }
.pos { color: #07121F; } .pos-qb { background: #8FB0FF; } .pos-rb { background: #4CC79A; } .pos-wr { background: #F26A1B; } .pos-te { background: #C9BEFF; }
.card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; }
.breadcrumbs ol { list-style: none; padding: 0; margin: 0 0 10px; display: flex; flex-wrap: wrap; gap: 6px; font-size: 13px; color: var(--text-3); }
.breadcrumbs li + li::before { content: "›"; margin-right: 6px; }
.page-head, .page-header { margin: 8px 0 20px; }
.page-head h1, .page-header h1 { margin: 4px 0 8px; }
/* ADV-037 H: the home H1 is the search phrase (kicker style); the tagline keeps the big heading look */
.home-hero h1.home-h1 { font-family: inherit; font-stretch: normal; font-size: 12px; line-height: 1.4; letter-spacing: .08em; }
.home-tagline { font-family: var(--display); font-stretch: 85%; letter-spacing: -0.01em; line-height: 1.1; text-wrap: balance;
  font-size: clamp(2rem, 1.4rem + 2.6vw, 3.4rem); font-weight: 800; margin: 0; }
.pos-jump { display: flex; gap: 14px; margin-top: 10px; font-weight: 600; }
.table-wrap { overflow-x: auto; }
.tbl, .data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.tbl th, .tbl td, .data-table th, .data-table td { padding: 9px 10px; border-bottom: 1px solid #16263F; text-align: left; white-space: nowrap; }
.tbl thead th, .data-table thead th { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); border-bottom-color: var(--line-2); }
.tbl td.num { text-align: right; } .tbl thead th:nth-child(n+3) { text-align: right; }
.tbl tbody th { font-weight: 600; }
.tbl tr.dim { opacity: .6; }
.tbl-wrap th, .tbl-wrap td { white-space: normal; }
.data-table caption { text-align: left; color: var(--text-3); font-size: 13px; padding-bottom: 6px; }
.facts { display: grid; gap: 8px; margin: 0; }
.fact { display: grid; grid-template-columns: minmax(140px, 220px) 1fr; gap: 12px; }
.fact dt { color: var(--text-3); } .fact dd { margin: 0; word-break: break-word; }
.details > summary { cursor: pointer; font-weight: 600; }
.details-body { margin-top: 12px; }
.index-list, .player-lines, .inline-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 6px 18px; }
.index-tools { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; margin-bottom: 10px; }
.error-state { padding: 60px 0; }

/* scoring-format values: PPR shows without JavaScript */
.f { display: none; }
html:not([data-format]) .f-ppr, html[data-format="ppr"] .f-ppr, html[data-format="half_ppr"] .f-half_ppr,
html[data-format="standard"] .f-standard { display: inline; }
.f-block { display: none; }
html:not([data-format]) .f-block.f-ppr, html[data-format="ppr"] .f-block.f-ppr, html[data-format="half_ppr"] .f-block.f-half_ppr,
html[data-format="standard"] .f-block.f-standard { display: block; }

/* CSS-only tabs: radio inputs precede .tabs and the panels */
.tab-radio { position: absolute; opacity: 0; pointer-events: none; }
.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 14px; }
.tabs label { min-height: 36px; display: inline-flex; align-items: center; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line-2);
  font-size: 13px; font-weight: 600; cursor: pointer; background: var(--panel-2); color: var(--text); }
.tab-radio:focus-visible ~ .tabs { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 999px; }   /* I-018: a visible ring on the tab row (site.js rings the focused tab itself) */
.tabs label.tab-focus { outline: 2px solid var(--accent); outline-offset: 2px; }

/* home */
.home-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 26px; align-items: end; margin: 26px 0 8px; }
.hero-search { display: flex; gap: 8px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px; }
.hero-search input { flex: 1; width: auto; }
#mv-opp:checked ~ .tabs label[for="mv-opp"], #mv-fp:checked ~ .tabs label[for="mv-fp"] { background: var(--text); color: var(--bg); border-color: var(--text); }
.mv-p { display: none; }
#mv-opp:checked ~ .mv-grid .mv-opp, #mv-fp:checked ~ .mv-grid .mv-fp { display: block; }
.mv-list { list-style: none; margin: 0; padding: 0; }
.mv-row { display: grid; grid-template-columns: minmax(0, 1fr) 72px 48px 56px; gap: 10px; align-items: center; padding: 9px 0; border-bottom: 1px solid #16263F; font-size: 14px; }
.mv-row:last-child { border-bottom: 0; }
.mv-row .num { text-align: right; }
.spark { display: flex; align-items: flex-end; gap: 3px; height: 26px; }
.spark i { display: block; width: 10px; background: var(--line-2); border-radius: 2px 2px 0 0; }
.spark i.last { background: var(--accent); }
.home-trio .panel h2 { margin-bottom: 10px; font-size: 1.3rem; }
.watch-list, .av-list, .game-list, .rel-list { list-style: none; padding: 0; margin: 0; }
.watch-list li { margin-bottom: 14px; } .watch-list p { margin: 3px 0 0; color: var(--text-2); font-size: 14px; }
.av-row { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid #16263F; font-size: 14px; }
.game-list li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 10px; margin-bottom: 6px; border-radius: 10px; background: var(--panel-2); border: 1px solid var(--line); font-size: 14px; }
.newsletter { margin: 34px auto; max-width: 1240px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 24px; align-items: center;
  border-radius: 16px; padding: 28px; background: linear-gradient(110deg, #13264A, #1B3A73); border: 1px solid var(--line-2); }
.newsletter h2 { font-size: 2rem; margin-bottom: 6px; }
.newsletter p { color: #C9D8FF; }
.nl-form p a { color: #fff; text-decoration: underline; }

/* player */
.p-head { margin: 6px 0 16px; }
.p-head-grid { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 16px 22px; align-items: end; }
.p-head-grid .p-stats { grid-column: 1 / -1; }
.p-grid > .p-glance { grid-column: 1 / -1; }
.p-title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 8px 0 6px; }
.news-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.news-card h2 { font-size: 1.5rem; margin: 2px 0 6px; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.p-next, .p-last { color: var(--text-2); margin: 0 0 4px; }
.p-next .label, .p-last .label { display: inline; margin-right: 6px; }
.p-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.hs { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 12px; min-width: 0; }
.hs-v { font-family: var(--display); font-stretch: 85%; font-size: 26px; font-weight: 700; margin: 2px 0; }
.hs-r { font-size: 12px; margin: 0; }
.hs-fp { border-color: var(--brand); } .hs-fp .hs-v { color: var(--accent); }
.star { background: transparent; border: 1px solid var(--line-2); color: var(--warn); border-radius: 999px; min-width: 40px; min-height: 40px; font-size: 18px; cursor: pointer; }
.star[aria-pressed="true"] { background: var(--warn-bg); }
.summary-card { background: var(--panel-2); border: 1px solid var(--line); border-left: 3px solid var(--marker); border-radius: var(--radius); padding: 18px 20px; margin-bottom: 20px; }
.summary-text { font-size: 1.08rem; line-height: 1.6; margin: 6px 0 0; max-width: 90ch; }
.p-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.p-grid > .outlook, .p-grid > .chart-sec, .p-grid > #log, .p-grid > #provenance { grid-column: 1 / -1; }
.big3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.b3 { background: var(--panel-2); border-radius: 12px; padding: 14px; }
.b3-v { font-family: var(--display); font-stretch: 85%; font-size: 34px; font-weight: 700; margin: 2px 0; }
.b3:first-child .b3-v { color: var(--accent); }
.b3-r { font-weight: 600; margin: 0; }
.b3-wide { grid-column: span 2; display: flex; flex-direction: column; justify-content: center; }
.kv-list { display: grid; gap: 0; }
.kv { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid #16263F; }
.out-panel { padding: 14px; border-radius: 12px; background: var(--warn-bg); }
.out-status { color: var(--warn); font-weight: 700; margin: 0; }
.out-title { font-family: var(--display); font-size: 1.5rem; font-weight: 700; margin: 4px 0; }
.chart { width: 100%; height: auto; display: block; max-height: 320px; }
.chart .axis { stroke: var(--line-2); } .chart .grid { stroke: #16263F; }
.chart .bar { fill: var(--bar); } .chart .bar-next { fill: rgba(76,125,255,.22); stroke: var(--bar-hi); stroke-width: 2; stroke-dasharray: 5 4; }
.chart .bar-gap { fill: none; stroke: var(--line-2); stroke-dasharray: 4 4; }
.chart .p90 { stroke: var(--warn); stroke-width: 3; } .chart .avg { stroke: var(--accent); stroke-width: 2; stroke-dasharray: 6 5; }
.chart text { font-family: var(--mono); font-size: 13px; }
.chart .lbl { fill: var(--text); font-weight: 600; } .chart .lbl-muted { fill: var(--text-3); font-size: 12px; } .chart .lbl-next { fill: var(--accent); font-weight: 600; }
.chart .line { fill: none; stroke-width: 3; } .chart .line.s-snap, .chart .dot.s-snap { stroke: var(--text-3); fill: var(--text-3); }
.chart polyline.s-snap { fill: none; } .chart .line.s-tgt { stroke: var(--bar-hi); } .chart .dot.s-tgt { fill: var(--bar-hi); }
.chart .lbl.s-snap { fill: var(--text-2); } .chart .lbl.s-tgt { fill: var(--text); }
.chart-panel { display: none; }
/* every metric button of player_ux.CHART_SET (Nov 6: Touchdowns, Total yards, Carries (official), Completions, Pass TD and Interceptions had no rule) */
#m-fp:checked ~ .chart-panels .p-fp,
#m-targets:checked ~ .chart-panels .p-targets,
#m-target_share:checked ~ .chart-panels .p-target_share,
#m-receptions:checked ~ .chart-panels .p-receptions,
#m-receiving_yards:checked ~ .chart-panels .p-receiving_yards,
#m-tds:checked ~ .chart-panels .p-tds,
#m-total_yards:checked ~ .chart-panels .p-total_yards,
#m-snap_share:checked ~ .chart-panels .p-snap_share,
#m-carries_official:checked ~ .chart-panels .p-carries_official,
#m-designed_carries:checked ~ .chart-panels .p-designed_carries,
#m-rushing_yards:checked ~ .chart-panels .p-rushing_yards,
#m-passing_yards:checked ~ .chart-panels .p-passing_yards,
#m-completions:checked ~ .chart-panels .p-completions,
#m-passing_tds:checked ~ .chart-panels .p-passing_tds,
#m-passing_interceptions:checked ~ .chart-panels .p-passing_interceptions,
#m-dropbacks:checked ~ .chart-panels .p-dropbacks { display: block; }
#m-fp:checked ~ .tabs label[for="m-fp"],
#m-targets:checked ~ .tabs label[for="m-targets"],
#m-target_share:checked ~ .tabs label[for="m-target_share"],
#m-receptions:checked ~ .tabs label[for="m-receptions"],
#m-receiving_yards:checked ~ .tabs label[for="m-receiving_yards"],
#m-tds:checked ~ .tabs label[for="m-tds"],
#m-total_yards:checked ~ .tabs label[for="m-total_yards"],
#m-snap_share:checked ~ .tabs label[for="m-snap_share"],
#m-carries_official:checked ~ .tabs label[for="m-carries_official"],
#m-designed_carries:checked ~ .tabs label[for="m-designed_carries"],
#m-rushing_yards:checked ~ .tabs label[for="m-rushing_yards"],
#m-passing_yards:checked ~ .tabs label[for="m-passing_yards"],
#m-completions:checked ~ .tabs label[for="m-completions"],
#m-passing_tds:checked ~ .tabs label[for="m-passing_tds"],
#m-passing_interceptions:checked ~ .tabs label[for="m-passing_interceptions"],
#m-dropbacks:checked ~ .tabs label[for="m-dropbacks"] {
  background: var(--text); color: var(--bg); border-color: var(--text); }
.legend { display: flex; gap: 6px 16px; flex-wrap: wrap; align-items: center; font-size: 13px; color: var(--text-2); margin: 10px 0 0; }
.legend span { display: inline-block; vertical-align: middle; }
.lg-bar { width: 14px; height: 10px; background: var(--bar); border-radius: 2px; }
.lg-p90 { width: 16px; border-top: 3px solid var(--warn); } .lg-avg { width: 16px; border-top: 2px dashed var(--accent); }
.lg-next { width: 14px; height: 10px; border: 2px dashed var(--bar-hi); } .lg-snap { width: 16px; border-top: 3px solid var(--text-3); }
.lg-tgt { width: 16px; border-top: 3px solid var(--bar-hi); }
.rel-list li { padding: 8px 0; border-bottom: 1px solid #16263F; display: flex; gap: 6px; align-items: baseline; flex-wrap: wrap; }
.rel-v { margin-left: auto; }
.watch-items .star { min-width: 32px; min-height: 32px; font-size: 14px; }

/* footer */
.site-footer { border-top: 1px solid var(--line); background: var(--bg-2); margin-top: 30px; }
.footer-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 24px; padding-block: 28px; font-size: 13px; color: var(--text-3); }
.footer-brand { display: flex; gap: 8px; align-items: center; color: var(--text); }
.footer-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 16px; align-content: start; }
.footer-links .linklike { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: var(--accent); text-align: left; cursor: pointer; justify-self: start; }
.footer-links .linklike:hover { text-decoration: underline; }

/* cookie bar (owner Oct 25, GA4 option B): slim, fixed at the bottom, two equal buttons, no close button */
.consent { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; background: var(--bg); border-top: 2px solid var(--marker); padding: 10px 16px; }
.consent[hidden] { display: none; }
.consent-in { max-width: 1240px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.consent p { margin: 0; font-size: 14px; line-height: 1.4; color: var(--text); }
.consent p a { color: var(--accent); text-decoration: underline; }
.consent-btns { display: flex; gap: 10px; flex: none; }
.consent button { background: transparent; border: 1px solid var(--accent); color: var(--text); border-radius: 8px; min-height: 38px; padding: 0 16px;
  font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.consent button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 599px) {   /* UX-031: about 110 px on a phone (was 258 px): one short line, the two buttons on one row */
  .consent { padding: 8px 12px; }
  .consent-in { display: block; }
  .consent p { font-size: 13px; }
  .consent-btns { margin-top: 8px; }
  .consent button { flex: 1 1 50%; min-height: 40px; }
}

@media (max-width: 960px) {
  .p-head-grid, .home-hero, .newsletter, .footer-grid { grid-template-columns: 1fr; }
  .p-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p-grid, .grid-2, .grid-3 { grid-template-columns: 1fr; }
  .top-search input { width: 150px; }
}
@media (max-width: 560px) {
  .topbar { position: static; }
  .topbar-inner { gap: 8px 12px; padding: 10px 16px; } .main-nav { gap: 14px; font-size: 15px; }
  .top-tools { margin-left: 0; width: 100%; justify-content: space-between; } .top-search { display: none; }
  .container { padding-inline: 16px; }
  .big3 { grid-template-columns: 1fr; } .b3-wide { grid-column: auto; }
  .mv-row { grid-template-columns: minmax(0, 1fr) 48px 48px; } .mv-row .spark { display: none; }
  .newsletter { margin-inline: 16px; padding: 20px; }
  .fact { grid-template-columns: 1fr; gap: 2px; }
}

/* articles: light reading surface inside the dark site (owner choice: reading view + box-score rail) */
.reading .score-bug { display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: center; padding: 12px 16px; margin: 6px 0 18px;
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
.score-bug .sb-team { margin: 0; font-family: var(--display); font-stretch: 85%; font-size: 1.25rem; font-weight: 700; }
.score-bug .sb-team b { font-size: 1.5rem; margin-left: 4px; }
.score-bug .sb-q { width: auto; margin-left: auto; } .score-bug .sb-q th, .score-bug .sb-q td { padding: 2px 8px; border: 0; text-align: right; }
.art-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 26px; align-items: start; }
.art-main { background: #F7F8FA; color: #0B1B33; border-radius: var(--radius); padding: 30px 34px 34px; min-width: 0; }
.art-main a { color: #2350D8; } .art-main .kicker { color: #B4570B; } .art-main .fine, .art-main .muted { color: #5F6B7A; }
.art-main h1 { font-size: clamp(1.9rem, 1.4rem + 2vw, 2.9rem); margin: 6px 0 10px; }
.art-main .dek { font-family: Georgia, "Source Serif 4", serif; font-size: 1.25rem; line-height: 1.5; color: #3D4B5F; }
.art-main .label { color: #3D4B5F; }
.tiles-sec { margin: 22px 0 6px; }
.tiles { list-style: none; padding: 0; margin: 8px 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.tile { background: #FFFFFF; border: 1px solid #DDE3EA; border-radius: 12px; padding: 14px; }
.tile-v { font-family: var(--display); font-stretch: 85%; font-size: 2.2rem; font-weight: 800; margin: 0; color: #2350D8; }
.tile-l { font-weight: 600; margin: 0 0 4px; font-size: 14px; } .tile-t { margin: 0; font-size: 14px; color: #3D4B5F; }
.art-sec h2 { font-size: 1.6rem; margin: 30px 0 10px; }
.art-main .ga-p { font-family: Georgia, "Source Serif 4", serif; font-size: 1.15rem; line-height: 1.7; color: #1B2A40; max-width: 70ch; }
.art-main .ga-kind { font-family: var(--font); font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: #8A5100; }
.art-chart { background: #FFFFFF; border-color: #DDE3EA; color: #0B1B33; margin: 22px 0; }
.art-chart .art-chart-h { font-family: var(--display); font-weight: 700; font-size: 1.2rem; margin: 2px 0 8px; }
.art-chart .chart .lbl { fill: #0B1B33; } .art-chart .chart .lbl-muted { fill: #5F6B7A; } .art-chart .chart .bar { fill: #2350D8; }
.art-chart .legend { color: #3D4B5F; }
.ndiq-box { background: var(--panel-2); color: var(--text); border-radius: 12px; padding: 18px 20px; margin-top: 26px; }
.ndiq-box .label { color: var(--text-3); } .ndiq-box .ga-p { color: var(--text-2); font-family: var(--font); font-size: 1rem; }
.ndiq-box a { color: var(--accent); }
.art-rail { display: grid; gap: 14px; }
.art-rail .panel { padding: 16px; }
.bs { list-style: none; padding: 0; margin: 6px 0 0; }
.bs li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; padding: 7px 0; border-bottom: 1px solid #16263F; font-size: 14px; }
.bs li .muted { grid-column: 1; font-size: 12px; } .bs li .num { grid-row: 1 / span 2; grid-column: 2; align-self: center; }
.home-news { margin: 18px 0 0; }
@media (max-width: 960px) { .art-grid { grid-template-columns: 1fr; } .art-main { padding: 22px 18px; } .score-bug .sb-q { margin-left: 0; } }


/* ---- site v3 (owner feedback 2026-10-05 evening) ---------------------------------------------------------------- */
/* photos: free Wikimedia Commons images or an initials card, always the same square */
.av { display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 50%; object-fit: cover;
  object-position: 50% 20%; background: var(--panel-2); border: 1px solid var(--line-2); color: #07121F; font-weight: 700; }
.av-xs { width: 28px; height: 28px; font-size: 12px; } .av-sm { width: 40px; height: 40px; font-size: 14px; }
.av-md { width: 64px; height: 64px; font-size: 20px; } .av-lg { width: 132px; height: 132px; font-size: 40px; border-radius: 18px; }
.av-init { font-family: var(--display); font-stretch: 85%; }
.photo-credit { font-size: 12px; color: var(--text-3); margin: 6px 0 0; max-width: 32ch; }
.photo-credit a { color: var(--text-3); text-decoration: underline; }
.p-photo { align-self: start; }

/* rankings / stats tables: one position at a time, filters, sorting */
.rk-panel, .rk-view { display: none; }
.rk-wk #wk-qb:checked ~ .rk-panels .rk-qb,
.rk-wk #wk-rb:checked ~ .rk-panels .rk-rb,
.rk-wk #wk-wr:checked ~ .rk-panels .rk-wr,
.rk-wk #wk-te:checked ~ .rk-panels .rk-te,
.rk-wk #wk-flex:checked ~ .rk-panels .rk-flex,
.rk-wk #wk-k:checked ~ .rk-panels .rk-k,
.rk-wk #wk-def:checked ~ .rk-panels .rk-def,
.rk-ss #ss-qb:checked ~ .rk-panels .rk-qb,
.rk-ss #ss-rb:checked ~ .rk-panels .rk-rb,
.rk-ss #ss-wr:checked ~ .rk-panels .rk-wr,
.rk-ss #ss-te:checked ~ .rk-panels .rk-te,
.rk-ss #ss-flex:checked ~ .rk-panels .rk-flex,
.rk-pl #pl-qb:checked ~ .rk-panels .rk-qb,
.rk-pl #pl-rb:checked ~ .rk-panels .rk-rb,
.rk-pl #pl-wr:checked ~ .rk-panels .rk-wr,
.rk-pl #pl-te:checked ~ .rk-panels .rk-te,
.rk-pl #pl-flex:checked ~ .rk-panels .rk-flex,
#rkv-week:checked ~ .rk-view-week, #rkv-season:checked ~ .rk-view-season { display: block; }
#wk-qb:checked ~ .rk-bar label[for="wk-qb"],
#wk-rb:checked ~ .rk-bar label[for="wk-rb"],
#wk-wr:checked ~ .rk-bar label[for="wk-wr"],
#wk-te:checked ~ .rk-bar label[for="wk-te"],
#wk-flex:checked ~ .rk-bar label[for="wk-flex"],
#wk-k:checked ~ .rk-bar label[for="wk-k"],
#wk-def:checked ~ .rk-bar label[for="wk-def"],
#ss-qb:checked ~ .rk-bar label[for="ss-qb"],
#ss-rb:checked ~ .rk-bar label[for="ss-rb"],
#ss-wr:checked ~ .rk-bar label[for="ss-wr"],
#ss-te:checked ~ .rk-bar label[for="ss-te"],
#ss-flex:checked ~ .rk-bar label[for="ss-flex"],
#pl-qb:checked ~ .rk-bar label[for="pl-qb"],
#pl-rb:checked ~ .rk-bar label[for="pl-rb"],
#pl-wr:checked ~ .rk-bar label[for="pl-wr"],
#pl-te:checked ~ .rk-bar label[for="pl-te"],
#pl-flex:checked ~ .rk-bar label[for="pl-flex"],
#rkv-week:checked ~ .view-tabs label[for="rkv-week"], #rkv-season:checked ~ .view-tabs label[for="rkv-season"] {
  background: var(--text); color: var(--bg); border-color: var(--text); }
.rk-bar { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.rk-bar .tabs { margin: 0; }
@media (max-width: 560px) {                                  /* I-004 (owner Oct 19): the seven position buttons fit on one row */
  .rk-bar .tabs { flex-wrap: nowrap; gap: 4px; width: 100%; justify-content: space-between; }
  .rk-bar .tabs label { min-height: 34px; padding: 0 8px; font-size: 12px; flex: 1 1 auto; justify-content: center; }
}
.rk-controls { display: flex; gap: 8px; flex-wrap: wrap; }
.rk-controls select, .rk-controls input { min-height: 38px; border-radius: var(--radius-sm); border: 1px solid var(--line-2);
  background: var(--panel-2); color: var(--text); padding: 0 10px; font: inherit; font-size: 14px; }
.rk-panels { margin-top: 12px; }
.rk-tbl th[data-sort] { cursor: pointer; white-space: nowrap; }
.rk-tbl th[aria-sort="descending"]::after { content: " ▼"; font-size: 12px; }
.rk-tbl th[aria-sort="ascending"]::after { content: " ▲"; font-size: 12px; }
.rk-tbl td.rk { color: var(--text-3); width: 2.5em; }
th.pl { display: flex; align-items: center; gap: 10px; font-weight: 400; min-width: 210px; }
th.pl a { font-weight: 600; } .sub { font-size: 12px; display: block; }
.rk-more { margin-top: 10px; }
.view-tabs { margin-top: 6px; }

/* cards and lists */
.news-grid { list-style: none; padding: 0; margin: 0 0 22px; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.news-card.sm h3 { font-size: 1.15rem; margin: 2px 0 6px; }
.pcards { list-style: none; padding: 0; margin: 0 0 18px; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.pcard { display: flex; gap: 12px; align-items: center; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; }
.pcard p { margin: 0; font-size: 13px; } .pcard a { font-weight: 600; }
.ins-row { display: flex; gap: 12px; align-items: flex-start; } .ins-row .av { margin-top: 4px; }
.leaders { align-self: stretch; }
.ld-list { list-style: none; padding: 0; margin: 8px 0 0; display: grid; gap: 8px; }
.ld-list li { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; font-size: 14px; }
.big4 { display: grid; grid-template-columns: 1.3fr repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; }
.b3-main .b3-v { color: var(--accent); }
details.rng { margin: 10px 0; } details.rng > summary { cursor: pointer; color: var(--accent); font-weight: 600; font-size: 14px; }
details.rng[open] > summary { margin-bottom: 10px; }
.share-grid td { background: rgba(76, 125, 255, calc(var(--s, 0) * 0.85)); }
.az { columns: 3 220px; } .az > div { break-inside: avoid; margin-bottom: 12px; }
.hub-mods { margin-bottom: 22px; }

/* header search suggestions */
.top-search { position: relative; }
.suggest { position: absolute; top: 100%; left: 0; right: 0; min-width: 260px; z-index: 20; list-style: none; margin: 4px 0 0; padding: 6px;
  background: var(--panel); border: 1px solid var(--line-2); border-radius: var(--radius-sm); box-shadow: 0 10px 30px rgba(0,0,0,.4); }
.suggest a { display: block; padding: 7px 10px; border-radius: 8px; color: var(--text); font-size: 14px; }
.suggest a:hover, .suggest a:focus { background: var(--panel-2); text-decoration: none; }

@media (max-width: 960px) {
  .big4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p-photo { display: flex; gap: 12px; align-items: end; }
}
@media (max-width: 560px) {
  .av-lg { width: 96px; height: 96px; }
  .top-search input { width: 100%; }
  .top-search { flex: 1 1 100%; display: block; }
  .rk-controls { width: 100%; } .rk-controls label { flex: 1; } .rk-controls select, .rk-controls input { width: 100%; }
}

/* ---- competitor-review features (2026-10-06) ---------------------------------------------------------------------- */
.rk-us #us-wr:checked ~ .rk-panels .rk-wr,
.rk-us #us-te:checked ~ .rk-panels .rk-te,
.rk-us #us-rb:checked ~ .rk-panels .rk-rb { display: block; }
#us-wr:checked ~ .rk-bar label[for="us-wr"],
#us-te:checked ~ .rk-bar label[for="us-te"],
#us-rb:checked ~ .rk-bar label[for="us-rb"] { background: var(--text); color: var(--bg); border-color: var(--text); }
.badges { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.rb { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: #13264A; color: #C9D8FF; white-space: nowrap; }
.rb-lead_back, .rb-alpha, .rb-every_down { background: #10291F; color: var(--up); }
.rb-share_up { background: #10291F; color: var(--up); } .rb-share_down { background: var(--down-bg); color: var(--down); }
.p-title .btn { margin-left: 4px; }
.pct-list { display: grid; gap: 10px; }
.pct-row { display: grid; grid-template-columns: minmax(130px, 200px) minmax(0, 1fr) minmax(110px, auto); gap: 12px; align-items: center; font-size: 14px; }
.pct-bar { height: 10px; border-radius: 5px; background: #13264A; overflow: hidden; }
.pct-bar span { display: block; height: 100%; border-radius: 5px; background: linear-gradient(90deg, var(--bar), var(--bar-hi)); }
.tools-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; margin-bottom: 24px; }
.tool { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; border-radius: 12px; background: var(--panel); border: 1px solid var(--line); color: var(--text); }
.tool:hover { border-color: var(--accent); text-decoration: none; } .tool span { font-size: 13px; color: var(--text-3); }
.cs-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.cs-col { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.cs-list { margin: 8px 0 0; padding-left: 1.4em; font-size: 14px; }
.cs-list li { margin: 3px 0; } .cs-list b { float: right; }
.gc h3 { font-size: 1.15rem; margin: 2px 0 6px; } .gc-line { font-size: 13px; margin: 3px 0; color: var(--text-2); }
.alerts { margin-bottom: 18px; } .sec-title { margin: 22px 0 12px; }
.cmp-form { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.cmp-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--text-2); flex: 1 1 220px; }
.cmp-form input { min-height: 42px; border-radius: var(--radius-sm); border: 1px solid var(--line-2); background: var(--panel-2); color: var(--text); padding: 0 12px; font: inherit; }
.cmp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 16px 0; }
.cmp-card h2 { margin: 8px 0 2px; } .cmp-big { font-family: var(--display); font-stretch: 85%; font-size: 44px; font-weight: 700; margin: 0; }
.cmp-big.up { color: var(--up); }
@media (max-width: 960px) { .cs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .cs-grid, .cmp-grid { grid-template-columns: 1fr; } .pct-row { grid-template-columns: 1fr; gap: 4px; } }
@media print { .topbar, .week-line, .site-footer, .banner, .newsletter, .breadcrumbs, [data-print] { display: none !important; }
  body { background: #fff; color: #000; } .cs-col, .panel { background: #fff; border-color: #999; } a { color: #000; } }

/* ---- round 3 (owner feedback 2026-10-06) ------------------------------------------------------------------------- */
/* team-colour player icon (replaces Wikimedia photos) */
.av-ic { position: relative; background: var(--c1, #13264A); border: 2px solid var(--c2, #8FB0FF); }
.av-ic::after { content: ""; position: absolute; inset: 16%; background: #fff;
  -webkit-mask: url("brand/player-icon.svg") center / contain no-repeat; mask: url("brand/player-icon.svg") center / contain no-repeat; }
.av-lg.av-ic { border-width: 4px; }
.who { display: inline-flex; align-items: center; gap: 10px; min-width: 0; }
.who a { font-weight: 600; }

/* generic CSS-only tabs (up to 6): radios, then .tabs labels, then .ptab-panels in the same order */
.ptab-panel { display: none; }
.ptabs > input:nth-of-type(1):checked ~ .ptab-panels > .ptab-panel:nth-child(1),
.ptabs > input:nth-of-type(2):checked ~ .ptab-panels > .ptab-panel:nth-child(2),
.ptabs > input:nth-of-type(3):checked ~ .ptab-panels > .ptab-panel:nth-child(3),
.ptabs > input:nth-of-type(4):checked ~ .ptab-panels > .ptab-panel:nth-child(4),
.ptabs > input:nth-of-type(5):checked ~ .ptab-panels > .ptab-panel:nth-child(5),
.ptabs > input:nth-of-type(6):checked ~ .ptab-panels > .ptab-panel:nth-child(6) { display: block; }
.ptabs > input:nth-of-type(1):checked ~ .tabs label:nth-child(1),
.ptabs > input:nth-of-type(2):checked ~ .tabs label:nth-child(2),
.ptabs > input:nth-of-type(3):checked ~ .tabs label:nth-child(3),
.ptabs > input:nth-of-type(4):checked ~ .tabs label:nth-child(4),
.ptabs > input:nth-of-type(5):checked ~ .tabs label:nth-child(5),
.ptabs > input:nth-of-type(6):checked ~ .tabs label:nth-child(6) { background: var(--text); color: var(--bg); border-color: var(--text); }

/* home v4 */
.cta-card { align-self: stretch; display: flex; flex-direction: column; justify-content: center; gap: 4px;
  background: linear-gradient(135deg, #13264A, #0E1D33 70%); border-color: var(--line-2); }
.cta-card h2 { font-size: 1.9rem; } .cta-card .btn { align-self: flex-start; margin-top: 8px; }
.leaders2 .tbl td.rk { color: var(--text-3); width: 2em; }
.mv-head { display: grid; grid-template-columns: minmax(0, 1fr) 72px 48px 56px; gap: 10px; font-size: 12px; text-transform: uppercase;
  letter-spacing: .06em; margin: 0 0 2px; } .mv-head span:nth-child(n+3) { text-align: right; }
.games-strip { margin: 26px 0 8px; padding: 18px 20px; border-radius: var(--radius); background: var(--panel-2); border: 1px solid var(--line); }
.gs-list { list-style: none; margin: 0; padding: 0 0 4px; display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x proximity; }
.gs-list li { flex: none; scroll-snap-align: start; }
.gs-list a { display: flex; flex-direction: column; gap: 2px; padding: 10px 14px; border-radius: 10px; background: var(--panel);
  border: 1px solid var(--line); color: var(--text); font-size: 14px; min-width: 128px; }
.gs-list a:hover { border-color: var(--accent); text-decoration: none; }
.gs-list .muted { font-size: 12px; }

/* start / sit pills */
.vd { display: inline-block; font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.vd-must { background: #0F3B2A; color: #6FE3B5; } .vd-start { background: var(--up-bg); color: var(--up); }
.vd-lean { font-size: 12px; margin-left: 2px; opacity: .85; }
.vd-flex { background: #13264A; color: #C9D8FF; } .vd-desperate { background: var(--warn-bg); color: var(--warn); }
.vd-sit { background: var(--down-bg); color: var(--down); }
.mu-badge { display: inline-block; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 999px; vertical-align: 1px; }
.mu-start { background: var(--up-bg); color: var(--up); } .mu-flex { background: var(--warn-bg); color: var(--warn); } .mu-sit { background: var(--down-bg); color: var(--down); }
.vd-group { margin-bottom: 22px; } .vd-group h3 { display: flex; align-items: center; gap: 8px; }
.vd-tbl td.why { white-space: normal; min-width: 280px; font-size: 13px; color: var(--text-2); }

/* insights section */
.key-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.key-card { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; gap: 2px 12px; padding: 16px; height: 100%;
  border-radius: 12px; background: var(--panel); border: 1px solid var(--line); color: var(--text); }
.key-card:hover { border-color: var(--accent); text-decoration: none; }
.key-n { grid-row: 1 / span 2; font-family: var(--display); font-stretch: 85%; font-size: 28px; font-weight: 800; color: var(--marker); line-height: 1; }
.key-card span:last-child { font-size: 13px; color: var(--text-3); }
.rule-box { margin-top: 18px; background: var(--panel-2); } .rule-box p { margin: 6px 0 0; color: var(--text-2); font-size: 14px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.inj-grid { list-style: none; padding: 0; margin: 0 0 14px; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.inj-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.tv { min-width: 130px; } .tv b { display: inline-block; min-width: 2.2em; }
.tv-bar { display: inline-block; vertical-align: middle; width: 80px; height: 8px; margin-right: 8px; border-radius: 4px;
  background: linear-gradient(90deg, var(--bar-hi) calc(var(--v) * 1%), #13264A 0); }

/* player page v4 */
.rank-pills { display: flex; gap: 8px; flex-wrap: wrap; margin: 2px 0 8px; }
.rank-pill { display: inline-flex; align-items: baseline; gap: 6px; padding: 6px 12px; border-radius: 10px; background: #13264A; border: 1px solid var(--line-2); }
.rank-pill b { font-family: var(--display); font-stretch: 85%; font-size: 26px; line-height: 1; color: #fff; }
.rank-pill span { font-size: 12px; color: var(--text-3); }
.rank-pill.main { background: var(--brand); border-color: var(--brand); } .rank-pill.main span { color: #DCE6FF; }
.reco { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: 12px; background: var(--panel-2); border: 1px solid var(--line-2); margin: 0 0 14px; }
.reco p { margin: 0; color: var(--text); }
.matchup { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 12px; }
.matchup .b3-v { font-size: 26px; }
.callouts { list-style: none; padding: 0; margin: 6px 0 0; display: grid; gap: 6px; }
.callouts li { padding-left: 18px; position: relative; color: var(--text-2); font-size: 14px; }
.callouts li::before { content: "\203A"; position: absolute; left: 4px; color: var(--marker); font-weight: 700; }
.sum-tbl td.num { text-align: right; }
/* charts: a narrow version for phones (bigger labels), the wide one on desktop */
.chart-narrow { display: none; }
@media (max-width: 640px) { .chart-wide { display: none; } .chart-narrow { display: block; max-height: none; } }

/* articles: same dark surface as the rest of the site (owner 2026-10-06) */
.art-main { background: var(--panel); color: var(--text); border: 1px solid var(--line); }
.art-main a { color: var(--accent); } .art-main .kicker { color: var(--accent); } .art-main .fine, .art-main .muted { color: var(--text-3); }
.art-main .dek { color: var(--text-2); } .art-main .label { color: var(--text-3); }
.art-main .ga-p { color: var(--text); } .art-main .ga-kind { color: var(--warn); }
.tile { background: var(--panel-2); border-color: var(--line); } .tile-v { color: var(--accent); } .tile-t { color: var(--text-2); }
.art-chart { background: var(--panel-2); border-color: var(--line); color: var(--text); }
.art-chart .chart .lbl { fill: var(--text); } .art-chart .chart .lbl-muted { fill: var(--text-3); } .art-chart .chart .bar { fill: var(--bar); }
.art-chart .legend { color: var(--text-2); }

/* games page v4 */
.tag-proj, .tag-final { font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; vertical-align: middle; }
.tag-proj { background: #13264A; color: #C9D8FF; } .tag-final { background: var(--up-bg); color: var(--up); }
.vs-tbl { width: 100%; border-collapse: collapse; font-size: 14px; }
.vs-tbl th, .vs-tbl td { padding: 8px 10px; border-bottom: 1px solid #16263F; }
.vs-tbl td { font-family: var(--mono); width: 30%; } .vs-tbl td:first-child { text-align: right; }
.vs-tbl th { text-align: center; color: var(--text-3); font-weight: 600; font-size: 13px; }
.vs-tbl td.better { color: #fff; font-weight: 700; }
.vs-head { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; margin-bottom: 10px; }
.vs-head > :last-child { text-align: right; }
.cmp-verdict .vd { font-size: 14px; } .cmp-verdict h2 { margin-bottom: 10px; }

@media (max-width: 960px) { .grid-4, .matchup { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .grid-4 { grid-template-columns: 1fr; } .mv-head { grid-template-columns: minmax(0, 1fr) 48px 48px; }
  .mv-head span:nth-child(2) { display: none; } .vd-tbl td.why { min-width: 220px; } .cta-card h2 { font-size: 1.5rem; } }
.chart-narrow text { font-size: 16px; } .chart-narrow .lbl-muted { font-size: 15px; }

/* round 4: insights pages = article (top 3 per position) + full table (owner 2026-10-07) */
.story { margin-bottom: 22px; } .story h2 { font-size: 1.9rem; margin: 2px 0 8px; }
.story-sec { margin-top: 18px; } .story-sec h3 { font-size: 1.25rem; margin: 0 0 8px; color: var(--accent); }
.story .ins-row { margin-bottom: 8px; } .story .ga-p { margin: 0; line-height: 1.55; max-width: 90ch; }
.notable { color: var(--text-2); font-size: 15px; margin: 6px 0 0; }
.os-note { color: var(--text-2); font-style: italic; }
.ga-tx .os-note { color: inherit; font-style: normal; }   /* owner Oct 24: the cross-page note is part of the sentence */
.full { margin-bottom: 18px; } .full > h2 { font-size: 1.3rem; margin-bottom: 8px; }

/* FB5-15 Games & news: weeks as rows, games in columns */
.wk-rows { display: grid; gap: 10px; }
.wk-row > summary { cursor: pointer; list-style: none; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.wk-row > summary::-webkit-details-marker { display: none; }
.wk-row > summary::before { content: "▸"; color: var(--text-3); margin-right: 4px; }
.wk-row[open] > summary::before { content: "▾"; }
.wk-title { font-weight: 700; font-size: 1.05rem; }
.wk-games { list-style: none; padding: 0; margin: 12px 0 0; display: grid; gap: 8px 14px; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }
.wk-game { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }
.wk-story { font-size: 13px; }

/* FB5-21 phone navigation: one compact row that scrolls sideways instead of wrapping */
@media (max-width: 560px) {
  .main-nav { flex-wrap: nowrap; overflow-x: auto; gap: 12px; font-size: 14px; width: 100%; order: 3; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .main-nav::-webkit-scrollbar { display: none; }
  .nav-item { white-space: nowrap; }
  .topbar-inner { padding: 8px 16px; }
}
@media (max-width: 560px) {
  .top-tools { flex-wrap: nowrap; gap: 8px; }
  .top-search { flex: 1 1 auto; min-width: 0; }
  .top-search input { min-height: 36px; font-size: 14px; }
  .fmt-switch button { padding: 6px 8px; font-size: 12px; }
  .watch-link { font-size: 0; padding: 6px 10px; } .watch-link::first-letter { font-size: 16px; }
  .brand-mark { width: 24px; height: 24px; } .wordmark { font-size: 1.05rem; }
}

/* ---- player page, round 5 (FB5-06..11) ---------------------------------------------------------------------- */
.p-title h1 { margin: 0; }
.p-title .rank-pills { margin: 0; }
.p-title .rank-pill b { font-size: 30px; }
.p-sticky { position: fixed; top: 0; left: 0; right: 0; z-index: 6; background: var(--bg-2); border-bottom: 1px solid var(--line);
  transform: translateY(-110%); transition: transform .18s ease; }
.p-sticky.show { transform: none; }
.p-sticky-in { display: flex; align-items: center; gap: 8px; padding-block: 8px; min-width: 0; }
.p-sticky-in b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-sticky-r { margin-left: auto; display: flex; gap: 6px; }
.rank-pill.sm { padding: 3px 8px; } .rank-pill.sm b { font-size: 18px; } .rank-pill.sm span { font-size: 12px; }
.p-quick { display: none; }
.qb-box { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 8px 10px; min-width: 0; }
.qb-box.qb-main { border-color: var(--brand); }
.qb-v { font-family: var(--display); font-stretch: 85%; font-size: 24px; font-weight: 700; margin: 0; color: #fff; }
.qb-main .qb-v { color: var(--accent); } .qb-r { font-size: 12px; margin: 0; font-weight: 600; }
.p-col { display: grid; gap: 20px; align-content: start; min-width: 0; }
.p-grid > * { min-width: 0; }
.b3 { min-width: 0; } .reco p { min-width: 0; overflow-wrap: anywhere; }
.b3-rng { font-size: 12px; color: var(--text-3); margin: 4px 0 0; }
.out-status-line { margin: 0 0 10px; font-weight: 600; font-size: 14px; }
.out-status-line.ok { color: var(--up); } .out-status-line.warn { color: var(--warn, #F2B33D); }
.lg-car { display: inline-block; width: 14px; height: 3px; background: #F2B33D; vertical-align: middle; margin-left: 8px; }
.chart .line.s-car { stroke: #F2B33D; } .chart .dot.s-car { fill: #F2B33D; } .chart .lbl.s-car { fill: #F2B33D; }
@media (max-width: 560px) {
  .p-head-grid { gap: 10px; }
  .p-photo { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 10px; align-items: stretch; }
  .p-photo .avatar, .p-photo img { width: 76px; height: 76px; }
  .p-quick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .p-title .rank-pills { display: none; }
  .p-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p-stats .hs-fp { grid-column: auto; }   /* FB9-07: total and per game side by side, like the other boxes */
  .hs-v { font-size: 22px; }
}

/* FB5-12 / 13 charts: prior-season bars and tier lines */
.chart .bar-prior { fill: var(--text-3); opacity: .45; }
.chart .sep { stroke: var(--line-2); stroke-dasharray: 2 4; }
.chart .tier { stroke: #F2B33D; stroke-width: 1.5; stroke-dasharray: 6 4; opacity: .8; }
.chart .lbl-tier { fill: #F2B33D; font-size: 12px; font-weight: 700; }
.lg-prior { display: inline-block; width: 12px; height: 10px; background: var(--text-3); opacity: .45; border-radius: 2px; vertical-align: middle; }
.lg-tier { display: inline-block; width: 16px; border-top: 2px dashed #F2B33D; vertical-align: middle; margin-left: 8px; }

/* FB5-17 / 18 players hub + stat leaders */
.lb-grid { list-style: none; padding: 0; margin: 0 0 22px; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.lb h3 { margin: 0 0 6px; font-size: 1.05rem; }
.lb-list { margin: 0 0 6px; padding-left: 20px; display: grid; gap: 4px; font-size: 14px; }
.lb-list li { display: flex; gap: 6px; align-items: baseline; } .lb-list li b { margin-left: auto; }
.finder-form { position: relative; max-width: 520px; } .finder-form input { width: 100%; }

/* FB5-19 home: top 5 + show more, equal boxes, lighter game card titles */
.js .collapsible:not(.expanded) .more { display: none; }
.expand-btn { margin-top: 8px; }
.home-trio { align-items: stretch; }
.home-trio > .panel { display: flex; flex-direction: column; }
.home-trio > .panel > a:last-child { margin-top: auto; padding-top: 8px; }
.home-news .news-card h3 { font-size: 1rem; font-weight: 600; line-height: 1.35; margin: 4px 0 6px; letter-spacing: 0; }
.home-news .news-card .kicker { margin-bottom: 2px; }
.home-news .news-card { padding: 14px 16px; }

/* round 6 player page (FB6-01, 03, 08, 12) */
.chart .line.s-snap, .chart .line.s-tgt, .chart .line.s-car, .chart polyline.line { fill: none; }
.dv-chip { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.dv-good { background: var(--up-bg); color: var(--up); } .dv-mid { background: #2a2f37; color: #B9C0CA; }
.dv-bad { background: #3a1a1d; color: #FF8A8A; }
@media (max-width: 560px) {
  .p-photo .av-lg, .p-photo > .av { width: 76px; height: 76px; font-size: 24px; border-radius: 14px; }
  .p-sticky-r { display: none; }
}

.tt-cols .panel h2 { margin-bottom: 4px; } .tv-about h2 { font-size: 1.1rem; margin: 6px 0 4px; } .tv-about p { margin: 0 0 8px; }

/* FB6-30 start / sit columns */
.ss-pos { margin-top: 14px; } .ss-pos h3 { margin: 0 0 6px; }
.ss-cols > div { min-width: 0; } .ss-start { border-left: 3px solid var(--up); padding-left: 10px; }
.ss-sit { border-left: 3px solid #FF8A8A; padding-left: 10px; }

/* FB6-45 tables: centred numbers, even columns, range bars */
.tbl th, .tbl td.num { text-align: center; }
.tbl th[scope="row"], .tbl th.pl, .tbl td.why { text-align: left; }
.rk-tbl { table-layout: fixed; width: 100%; min-width: 640px; }
.rk-tbl th:first-child, .rk-tbl td:first-child { width: 44px; }
.rk-tbl th:nth-child(2), .rk-tbl td:nth-child(2), .rk-tbl th.pl { width: 26%; }
.rk-tbl td.why { width: 30%; }
.rng-mini { display: block; margin-top: 4px; font-size: 12px; color: var(--text-3); font-weight: 400; }
.rng-track { position: relative; display: block; height: 6px; border-radius: 3px; background: var(--line); margin: 0 auto 2px; max-width: 120px; }
.rng-fill { position: absolute; top: 0; bottom: 0; border-radius: 3px; background: var(--brand); opacity: .55; }
.rng-dot { position: absolute; top: -2px; width: 4px; height: 10px; margin-left: -2px; border-radius: 2px; background: var(--accent); }
.cmp-ks { margin-top: 8px; font-size: 13px; }

/* FB6-13 red-zone bars */
.rz-row { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 4px 10px; align-items: center; margin: 8px 0; }
.rz-l { font-size: 13px; color: var(--text-2); } .rz-v { grid-column: 2; font-size: 12px; color: var(--text-3); }
.rz-bar { display: block; height: 10px; border-radius: 5px; background: var(--line); overflow: hidden; }
.rz-bar > span { display: block; height: 100%; background: #F2B33D; }

/* LAUNCH-3 / FB8-03 / FB8-04: 3x2 insights block; text uses the full width inside boxes; sections side by side */
.key-3x2 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 760px) { .key-3x2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { .key-3x2 { grid-template-columns: 1fr; } }
.panel .lede, .story .lede, .story .ga-p, .panel .ga-p, .summary-text { max-width: none; }
/* B3 (owner Oct 23): insight pages are one full-width column; the two-column story grid is gone */
.ins-row { display: flex; gap: 10px; align-items: flex-start; } .ins-row .ga-p { flex: 1; min-width: 0; }
.mu-players { margin: 6px 0 0; padding: 0; list-style: none; font-size: 13px; }
.mu-players li { display: flex; justify-content: space-between; gap: 8px; padding: 3px 0; border-bottom: 1px solid var(--line); }
details.mu-exp > summary { cursor: pointer; color: var(--accent); }

/* round 8 (FB9-08/09/10, Oct 10) */
.tbl thead th, .tbl thead th:nth-child(n+3), .data-table thead th { text-align: center; }
.tbl thead th[data-sort] { cursor: pointer; }
.rk-tbl th.pl > span { min-width: 0; white-space: normal; }
.des-tag { display: inline-block; margin-top: 3px; padding: 1px 7px; border-radius: 999px; font-size: 12px; font-weight: 600;
  background: #3a3215; color: #F2B33D; white-space: nowrap; }
.tbl td.rk .dv-chip { margin-left: 0; }
/* FB9-14 role trend: did-not-play marker; larger numbers on phones */
.chart .dnp { stroke: var(--text-3); stroke-width: 1.5; stroke-dasharray: 4 5; }
.chart .lbl-dnp { fill: var(--text-2, #B9C0CA); font-size: 13px; font-weight: 600; }
@media (max-width: 560px) {
  .chart-role text, .chart-role .lbl-muted { font-size: 19px; }
  .chart-role .lbl { font-size: 20px; }
  .chart-role .lbl-dnp { font-size: 18px; }
  .chart-role .dot { r: 6; }
}
/* FB9-06 player page: sticky section menu with the player's name */
.p-secnav { position: sticky; top: var(--topbar-h, 0px); z-index: 9; background: var(--bg-2); border-bottom: 1px solid var(--line); margin: 0 0 14px; }
.p-secnav-in { display: flex; align-items: center; gap: 14px; padding-block: 8px; min-width: 0; }
.p-secnav-name { display: flex; align-items: center; gap: 8px; white-space: nowrap; flex: 0 0 auto; }
.p-secnav-links { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.p-secnav-links::-webkit-scrollbar { display: none; }
.p-secnav-links a { padding: 5px 10px; border-radius: 999px; border: 1px solid var(--line); font-size: 13px; white-space: nowrap;
  color: var(--text-2, #B9C0CA); text-decoration: none; }
.p-secnav-links a:hover, .p-secnav-links a:focus-visible { border-color: var(--brand); color: var(--text); }
.player2 h2[id] { scroll-margin-top: calc(var(--topbar-h, 0px) + 72px); }
@media (max-width: 560px) {
  .p-secnav { top: 0; }
  .p-secnav-in { flex-direction: column; align-items: stretch; gap: 6px; }
  .p-secnav-name .muted { display: none; }
  .player2 h2[id] { scroll-margin-top: 96px; }
}
.ss-boxes { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: 12px; }
.ss-boxes .hs-v .dv-chip { font-size: 18px; margin-left: 0; padding: 3px 12px; }
@media (max-width: 560px) { .ss-boxes { grid-template-columns: 1fr; } }
/* owner Oct 10: related players full width; name, team and projection on one line */
.p-grid > .related { grid-column: 1 / -1; }
.related .rel-list li { flex-wrap: nowrap; }
.related .rel-list li .rel-v { margin-left: auto; white-space: nowrap; }
.related .rel-list li a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.p-grid > .seasons { grid-column: 1 / -1; }
/* owner Oct 11: week outlook = call + summary on the left (~1/3), six boxes on the right (2/3) */
.out-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 16px; align-items: stretch; margin-bottom: 12px; }
.out-grid-1 { grid-template-columns: 1fr; }
.out-grid .reco { flex-direction: column; gap: 10px; margin: 0; }
.out-grid .reco-call { display: block; }
.out-grid .reco p { line-height: 1.55; }
.out-grid .out-boxes { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; align-content: start; }
@media (max-width: 900px) {
  .out-grid { grid-template-columns: 1fr; }
  .out-grid .out-boxes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* owner Oct 12: the 8 season boxes in one row on desktop (phones keep 2 per row); role profile as tall as role trend */
@media (min-width: 1100px) {
  .p-glance .p-stats { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 8px; }
  .p-glance .p-stats .hs { padding: 9px 10px; }
  .p-glance .p-stats .hs .label { font-size: 12px; letter-spacing: .04em; }
  .p-glance .p-stats .hs-v { font-size: 20px; }
  .p-glance .p-stats .hs-r { font-size: 12px; }
}
@media (min-width: 561px) and (max-width: 1099px) { .p-glance .p-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.p-grid > .p-col { align-content: stretch; }
.p-grid > .p-col > .panel { height: 100%; box-sizing: border-box; }
.rk-tbl .sub .dv-chip { margin-left: 6px; padding: 0 7px; font-size: 12px; vertical-align: 1px; }
.game-overview p { font-size: 16px; line-height: 1.6; margin: 0; }
/* owner Oct 12: game tables keep the player name in view while scrolling sideways */
.game-tbl thead th:first-child, .game-tbl tbody th[scope="row"] { position: sticky; left: 0; z-index: 1; background: var(--panel); }
.game-tbl tbody th[scope="row"] { box-shadow: 1px 0 0 var(--line); }

/* ADV-015 (owner Oct 14): usage report on phones: two-line share cells, short headers, sticky player column */
.us-cell .us-now { display: block; white-space: nowrap; font-weight: 600; }
.us-cell .us-was { display: block; white-space: nowrap; font-size: 12px; color: var(--text-3); }
.us-tbl th .sm { display: none; }
@media (max-width: 640px) {
  .us-tbl { min-width: 520px; }
  .us-tbl th .lg { display: none; }
  .us-tbl th .sm { display: inline; }
  .us-tbl th.pl, .us-tbl thead th:first-child { position: sticky; left: 0; z-index: 2; background: var(--panel); }
  .us-tbl th.pl .rb ~ .rb { display: none; }      /* at most one role badge in the table on phones (UX-029) */
  .us-tbl th:first-child, .us-tbl td:first-child, .us-tbl th.pl { width: 150px; }
  .us-tbl tbody th.pl { display: table-cell; max-width: 150px; overflow: hidden; white-space: normal; vertical-align: middle; }
  .us-tbl tbody th.pl .avatar, .us-tbl tbody th.pl img { display: none; }   /* room for the name on phones */
  .us-tbl th:nth-child(n+2), .us-tbl td:nth-child(n+2) { width: auto; }
}

/* ADV-012 (owner Oct 14): phone header: bigger logo, labelled Watchlist, and on the home page the search bar takes the
   place of the week-status block (the update time stays as one small line on the rankings pages) */
@media (max-width: 560px) {
  .brand-mark { width: 32px; height: 32px; } .wordmark { font-size: 1.25rem; }
  .watch-link { font-size: 13px; min-height: 44px; min-width: 44px; display: inline-flex; align-items: center;
    justify-content: center; padding: 6px 12px; white-space: nowrap; }
  .watch-link::first-letter { font-size: inherit; }
  .pg-home .week-line { display: none; }
  .top-tools { flex-wrap: wrap; }
  .top-search { display: block; flex: 1 1 100%; order: 4; }          /* own row on every page, never squeezed */
  .top-search input { width: 100%; }
  .topbar.is-home .top-search input { min-height: 46px; font-size: 16px; }
}

/* Owner Oct 17-18: Week rankings on phones: the stat columns scroll sideways; the PLAYER NAME stays in view (tables.js
   marks it .stk). */
.ph-only { display: none; }
@media (max-width: 560px) {
  .rk-week { width: max-content; min-width: 100%; }
  .rk-week th, .rk-week td { padding: 8px 8px; }
  .rk-week td.rk, .rk-week thead th:first-child { width: 26px; padding-left: 2px; padding-right: 2px; text-align: center; }
  .rk-week th.pl { width: 150px; min-width: 150px; max-width: 150px; }
  .rk-week tbody th.pl { white-space: normal; }
  .rk-week tbody th.pl .av, .rk-week tbody th.pl img { display: none; }
  .rk-week th.pl a { font-weight: 600; font-size: 15px; overflow-wrap: anywhere; }
  .rk-week td.strong { font-size: 17px; }
  .rk-week .scored-td .ph-only { display: none; }
}

/* Owner Oct 18: every table on phones keeps the player name (or, without one, the first column) in view */
@media (max-width: 640px) {
  .table-wrap > table.has-stk .stk { position: sticky; left: 0; z-index: 6; background: var(--panel);
    box-shadow: 1px 0 0 var(--line); }
  .table-wrap > table.has-stk tbody th.stk { white-space: normal; min-width: 110px; max-width: 150px; }
}

/* PICK-017 option 2 (owner Oct 16): position rank pill under the season numbers */
.rk-pill { display: block; width: max-content; margin: 3px 0 0 auto; font-size: 12px; font-weight: 700; padding: 0 7px;
  border-radius: 999px; font-family: inherit; }
.rk-pill.t1 { background: #10291F; color: #4CC79A; } .rk-pill.t2 { background: #13264A; color: #C9D8FF; }
.rk-pill.t3 { background: #1A2A44; color: #8E9DB3; }
.seasons th[scope="row"] { position: sticky; left: 0; background: var(--panel); }

/* MODEL-017 / 020 (owner Oct 13-17): boom / bust labels. I-064 (Roman, Oct 28): pills built like the start / sit pills (.vd):
   same size, shape and spacing, 12 px bold text, the word always in the pill; colours from the site tokens */
.bb-tag { display: inline-block; font-size: 12px; font-weight: 700; line-height: 1.4; padding: 3px 10px; border-radius: 999px;
  margin: 2px 4px 0 0; white-space: nowrap; vertical-align: 1px; background: #13264A; color: #C9D8FF; }
.bb-tag.bb-high-ceiling, .bb-tag.bb-boom { background: var(--up-bg); color: var(--up); }
.bb-tag.bb-boom-or-bust { background: var(--warn-bg); color: var(--warn); }
.bb-tag.bb-risky-floor, .bb-tag.bb-bust { background: var(--down-bg); color: var(--down); }
.bb-tag.bb-steady { background: #13264A; color: #C9D8FF; }
.bb-tag.bb-volatile { background: var(--warn-bg); color: var(--warn); }
.ga-id .bb-tag { margin: 0 0 0 4px; }
.rk-tbl th.pl .bb-tag { display: block; width: max-content; }
.bb-line { font-size: 14px; margin: 8px 0 0; color: var(--text-2); }

/* ADV-018 (owner Oct 17): trade value chart slides (staging review page) */
.tv-slides { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 420px), 1fr)); gap: 18px; }
.tv-slide { margin: 0; } .tv-slide svg { display: block; width: 100%; height: auto; border-radius: 12px; border: 1px solid var(--line); }

/* ADV-023 (owner Oct 18): Questionable tag next to the name everywhere */
.q-tag { display: inline-block; margin-left: 5px; padding: 0 5px; border-radius: 4px; font-size: 12px; font-weight: 800;
  line-height: 16px; background: #3A2A08; color: #F2C14E; vertical-align: 1px; }

/* Player page v2 mock-up (owner Oct 18, staging only) */
.mk-two { display: grid; grid-template-columns: 2fr 1fr; gap: 16px; }
.mk-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.mk-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.mk-box { background: var(--panel-2); border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.mk-box .mk-v { font-size: 20px; font-weight: 700; margin: 2px 0; }
.mk-role { display: inline-block; padding: 4px 12px; border-radius: 999px; background: #13264A; color: #C9D8FF; font-weight: 700; }
@media (max-width: 760px) { .mk-two, .mk-grid2 { grid-template-columns: 1fr; } .mk-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Owner launch feedback (Oct 19, guide v1.7): on phones, every player table keeps the name on one line with the
   position / team / matchup line below it; the player column stays put when the table scrolls sideways (tables.js
   .stk, above) */
@media (max-width: 640px) {
  .table-wrap > table.rk-tbl tbody th.pl { display: table-cell; vertical-align: middle; width: 150px; min-width: 150px;
    max-width: 150px; white-space: nowrap; }
  .rk-tbl th.pl .av, .rk-tbl th.pl img { display: none; }
  .rk-tbl th.pl > .who { display: block; min-width: 0; }
  .rk-tbl th.pl > .who > span:not(.av) { display: block; min-width: 0; }
  .rk-tbl th.pl a { display: inline-block; max-width: 100%; vertical-align: bottom; white-space: nowrap; overflow: hidden;
    text-overflow: ellipsis; overflow-wrap: normal; }
  .rk-tbl th.pl .sub { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .rk-tbl th.pl .des-tag { display: none; }
  /* replaces the Oct 18 shrink-on-scroll mock-up: the name and matchup line stay whole after a side scroll */
  .table-wrap.scrolled .rk-week th.pl { width: 150px; min-width: 150px; max-width: 150px; }
  .table-wrap.scrolled .rk-week th.pl a { font-size: 15px; }
  .table-wrap.scrolled .rk-week th.pl .sub { display: block; }
}

/* Content guide v1.8 (owner Oct 19): "About this page" summary under each launch page's H1 */
.about-page { margin: 10px 0 12px; padding: 10px 14px; border-left: 3px solid var(--line); background: var(--panel-2);
  border-radius: 6px; max-width: none; }
.about-page h2.label { margin: 0 0 4px; }
.about-page p { margin: 0; color: var(--text-2); font-size: 15px; }

/* Advisor Oct 19: team names in the defence table use the nickname on phones */
.tn-short { display: none; }
@media (max-width: 640px) { .tn-full { display: none; } .tn-short { display: inline; } }

/* UX-6 (Oct 19): this week's call in the player header, desktop and phone */
.p-call { flex-basis: 100%; margin: 2px 0 4px; font-size: 14px; color: var(--text); }
.p-call b { display: inline-block; padding: 2px 8px; border-radius: 6px; background: var(--panel-2);
  border: 1px solid var(--line-2); letter-spacing: .04em; font-size: 12px; }
.p-call.pc-must b, .p-call.pc-start b { background: var(--up); color: #06210F; border-color: var(--up); }
.p-call.pc-flex b { background: #2A4A8A; color: #fff; }
.p-call.pc-sit b, .p-call.pc-desperate b, .p-call-out { color: var(--warn, #F2B33D); }

/* UX-2 / 3 / 4 / 5 / 7 (UX review, Oct 19): phone tables and the rankings first screen */
.fx-toggle { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }
/* I-065 (Roman, Oct 28): one Filter button at every width opens one panel: team, name and past weeks */
.fx-btn { display: inline-flex; }
.fx-toggle:not(:checked) ~ .rk-controls { display: none !important; }
.fx-toggle:checked + .fx-btn { background: var(--panel-2); }
.fx-toggle:checked ~ .rk-controls { width: 100%; margin-top: 6px; }
.rk-pw { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; font-size: 14px; }
.rk-pw select { min-height: 38px; border-radius: var(--radius-sm); border: 1px solid var(--line-2); background: var(--bg-2);
  color: var(--text); font: inherit; font-size: 14px; padding: 0 10px; }
.rk-key { margin: 6px 0 4px; }
@media (max-width: 560px) {
  .ph-hide { display: none; }
  .sum-tbl .ph-only { display: inline; }
  .fx-btn { margin: 6px 0 0; }
  .rk-pw, .rk-pw select { width: 100%; }
  /* every cell in a row draws the same bottom line, so the locked name column and the numbers line up */
  .table-wrap > table.rk-tbl > tbody > tr > * { border-bottom: 1px solid var(--line); box-sizing: border-box; }
  .table-wrap > table.rk-tbl > tbody > tr > .stk { background: var(--panel); }
  table.sum-tbl { width: 100%; table-layout: fixed; font-size: 13px; }
  table.sum-tbl th, table.sum-tbl td { padding: 6px 4px; white-space: normal; overflow-wrap: anywhere; }
  table.sum-tbl thead th:first-child, table.sum-tbl tbody th { width: 40%; }
  table.sum-tbl thead th { overflow-wrap: normal; word-break: normal; letter-spacing: 0; font-size: 12px; }
  table.sum-tbl .stk { position: static; box-shadow: none; }
}

/* UX phone tables (advisor Oct 19, T1-T9; owner: homepage leaders column lock). Phones only: desktop is unchanged.
   Cause A: .rk-tbl's fixed layout squeezed every column, so text ran into the next one; columns now size to their
   content, long headers use their short label (.th-sm) and "was → now" cells stack (.sh-sm).
   Cause B: the # column and the name lock together (tables.js .stk-rk / .stk); both are real table cells, which
   Safari needs before it keeps a cell in place (the global th.pl flex box broke the lock on iPhones). */
.th-sm, .sh-sm { display: none; }
.sh-sm .us-now { display: block; white-space: nowrap; font-weight: 600; }
.sh-sm .us-was { display: block; white-space: nowrap; font-size: 12px; color: var(--text-3); }
@media (max-width: 640px) {
  .rk-tbl { table-layout: auto; width: max-content; min-width: 100%; }
  .rk-tbl th:nth-child(n+2), .rk-tbl td:nth-child(n+2), .rk-tbl td.why { width: auto; }
  .rk-tbl thead th { white-space: normal; line-height: 1.2; min-width: 48px; max-width: 96px; vertical-align: bottom; }
  .rk-tbl thead th[data-sort] { white-space: normal; }   /* the sortable-header nowrap made short labels overflow */
  .rk-tbl td.num { white-space: nowrap; padding-inline: 8px; }
  .th-lg, .sh-lg { display: none; }
  .th-sm { display: inline; } .sh-sm { display: block; }
  .rk-tbl .sh-cell { text-align: center; }
  /* UX advisor Oct 22: the matchups opponent cell wraps instead of running into the next column */
  .rk-tbl td:has(> details.mu-exp) { white-space: normal; min-width: 150px; max-width: 180px; }
  .rk-tbl details.mu-exp > summary { white-space: normal; }
  .rk-tbl .mu-players li { flex-wrap: wrap; gap: 0 8px; }
  .rk-tbl td.tv { min-width: 0; }
  .tv-in { display: inline-flex; flex-direction: row-reverse; align-items: center; gap: 6px; }
  .tv-in .tv-bar { width: 48px; margin-right: 0; }
  .tv-in b { min-width: 0; }

  .table-wrap > table.has-stk { --rkw: 32px; border-collapse: separate; border-spacing: 0; }
  .table-wrap > table.has-stk:has(td.rk .dv-chip) { --rkw: 52px; }
  .table-wrap > table.has-stk > * > tr > * { border-bottom: 1px solid var(--line); }
  .table-wrap > table.has-stk .stk, .table-wrap > table.has-stk .stk-rk { display: table-cell; }
  .table-wrap > table.has-stk .stk-rk { position: sticky; left: 0; z-index: 7; background: var(--panel);
    width: var(--rkw); min-width: var(--rkw); max-width: var(--rkw); padding-left: 2px; padding-right: 2px;
    text-align: center; box-sizing: border-box; }
  .table-wrap > table.has-stk .stk-rk ~ .stk { left: var(--rkw); }
  .table-wrap > table.has-stk thead .stk-rk, .table-wrap > table.has-stk thead .stk { z-index: 8; }
  .table-wrap > table.has-stk td.rk .dv-chip { padding: 0 5px; }

  /* T1 homepage weekly leaders: one-line name, matchup line below, no avatar */
  .table-wrap > table.ld-tbl tbody th.pl { width: 150px; min-width: 150px; max-width: 150px; white-space: nowrap;
    vertical-align: middle; }
  .ld-tbl th.pl .av, .ld-tbl th.pl img { display: none; }
  .ld-tbl th.pl > .who, .ld-tbl th.pl > .who > span:not(.av) { display: block; min-width: 0; }
  .ld-tbl th.pl a { display: inline-block; max-width: 100%; vertical-align: bottom; white-space: nowrap; overflow: hidden;
    text-overflow: ellipsis; }
  .ld-tbl th.pl .sub { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  /* T9 data sources: long unbroken strings wrap */
  .ds-tbl td, .ds-tbl th { white-space: normal; overflow-wrap: anywhere; }
}

/* ADV-034 / ADV-035 / ADV-036 E (owner Oct 22): position links, past weeks, and the sibling block on weekly pages */
.pos-links, .past-weeks { margin: 6px 0 10px; font-size: 14px; display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.pos-links a[aria-current="page"] { font-weight: 700; color: var(--text); text-decoration: none; }
@media (max-width: 600px) { .pos-links { display: none; } }   /* I-051: the round buttons do the same job; the links stay in the HTML for crawlers */
.past-weeks select { font: inherit; padding: 4px 8px; border-radius: 8px; }
.other-calls { margin-top: 18px; }
.other-calls p { margin: 4px 0 0; line-height: 1.8; }

/* Insight-page layout (owner Oct 24, layout A): full width, one column; each card is name, then position / team / tags,
   then the text, then our projection. The waiver wire's long lists are compact full-width rows. */
.page-head .lede, .page-head .fine { max-width: none; }
.story .ga-card .ga-id { display: block; }
.story .ga-card .ga-id b { font-size: 1.05rem; }
.story .ga-card .ga-id .muted { display: block; font-size: 13px; margin-top: 1px; }
.story .ga-card .ga-dash { display: none; }
.story .ga-card .ga-tx { display: block; margin-top: 6px; }
/* owner Oct 24, option B (stat strip): the projection sits apart from the summary, in a tinted strip */
.ga-card .ga-proj { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; margin-top: 8px; padding: 8px 12px;
  background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 13.5px; font-variant-numeric: tabular-nums; }
.ga-proj .pj-l { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); }
.ga-proj .pj-v { flex: 1 1 220px; font-family: var(--mono); color: var(--accent); }
.ga-proj .pj-p { margin-left: auto; font-family: var(--mono); color: var(--up); white-space: nowrap; }
.story .ins-row { padding: 12px 0; border-bottom: 1px solid var(--line); margin-bottom: 0; }
.story .also-line { margin: 10px 0 0; line-height: 1.55; color: var(--text-2); max-width: none; }
.story .also-line b { color: var(--text); }
.kd-list { list-style: none; padding: 0; margin: 0; } .kd-pick { padding: 10px 0; border-bottom: 1px solid var(--line); line-height: 1.55; }
.last-week { margin: 0 0 12px; color: var(--text-2); }
.ga-card .ga-last { display: block; margin-top: 6px; color: var(--text-3); font-size: 13px; }

/* I-061 (Roman, Oct 28): position buttons on the insight pages, the rankings buttons' look (one row at 375 px) */
.pos-btns { display: flex; gap: 8px; flex-wrap: nowrap; margin: 4px 0 14px; }
.pos-btns a { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; padding: 0 14px;
  border-radius: 999px; border: 1px solid var(--line-2); font-size: 13px; font-weight: 600; background: var(--panel-2);
  color: var(--text); text-decoration: none; }
.pos-btns a:hover { text-decoration: none; border-color: var(--text-3); }
.pos-btns a[aria-current="page"] { background: var(--text); color: var(--bg); border-color: var(--text); }
.pos-sib { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 16px; margin: 14px 0; font-size: 14px; }
@media (max-width: 560px) {
  .pos-btns { gap: 4px; width: 100%; }
  .pos-btns a { min-height: 34px; padding: 0 8px; font-size: 12px; flex: 1 1 auto; }
}

/* MOCKUP-1 (Roman, Oct 28): rankings tables on phones = layout A, compact table. Smaller type, tighter columns, rank and
   name locked, projected points plus 3 stat columns; "All stats" opens the rest inside the table (the page never scrolls
   sideways). Desktop is unchanged. Replaces PICK-016 A's two-line rows on phones. */
.rk-allx { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }
.rk-allb { display: none; }
.sc-sm { display: none; text-decoration: none; }
@media (max-width: 560px) {
  .rk-allb { display: inline-flex; margin: 0 0 6px; }
  .rk-allx:checked + .rk-allb { background: var(--text); color: var(--bg); border-color: var(--text); }
  .rk-allx:not(:checked) ~ .table-wrap .rk-a .rk-x { display: none; }
  .table-wrap > table.rk-a { font-size: 13px; line-height: 1.3; width: 100%; min-width: 0; }
  .table-wrap > table.rk-a th, .table-wrap > table.rk-a td { padding: 5px 4px; }
  .table-wrap > table.rk-a thead th { font-size: 12px; min-width: 0; letter-spacing: 0; }
  .table-wrap > table.rk-a.has-stk, .table-wrap > table.rk-a.has-stk:has(td.rk .dv-chip) { --rkw: 26px; }
  .table-wrap > table.rk-a tbody th.pl, .table-wrap > table.rk-a th.pl, .table-wrap > table.rk-a.has-stk tbody th.stk {
    width: 112px; min-width: 112px; max-width: 112px; }
  .table-wrap > table.rk-a th.pl a, .table-wrap > table.rk-a th.pl .sub { white-space: normal; overflow: visible; text-overflow: clip; }
  .table-wrap > table.rk-a th.pl a { font-size: 13px; }
  .table-wrap > table.rk-a th.pl .sub, .table-wrap > table.rk-a .sub .dv-chip { font-size: 12px; }
  .table-wrap > table.rk-a td.strong { font-size: 14px; }
  .table-wrap > table.rk-a td.num { padding-inline: 4px; }
  .table-wrap > table.rk-a .rng-mini { display: none; }
  .table-wrap > table.rk-a td.scored-td { font-size: 12px; }
  .table-wrap > table.rk-a .sc-lg { display: none; }
  .table-wrap > table.rk-a .sc-sm { display: inline; }
  .rk-allx:checked ~ .table-wrap > table.rk-a { width: max-content; min-width: 100%; }
}

/* I-018 (Roman, Oct 30): focus rings, 44 px tap targets, 12 px minimum text. The slim phone header, the bottom bar and the
   switch inside the page were reverted on Nov 3 (Roman): the top menu is back as it was. */
.fmt-switch button:focus-visible { outline-offset: -3px; }
@media (max-width: 600px) { .fmt-switch button { min-height: 44px; } }

/* I-018: 44 px minimum tap rows on phones (buttons, tabs, footer links, list rows, table rows) */
@media (max-width: 600px) {
  .btn, .btn-sm, .tabs label, .rk-bar .tabs label, .pos-btns a, .fmt-switch button, summary { min-height: 44px; }
  .sec-head > a, main p + a:last-child, main li > a:first-child, .who > span > a:first-child, .footer-links a, .site-footer a, .breadcrumbs a, .pos-sib a, .other-calls a {
    display: inline-flex; align-items: center; min-height: 44px; }
  .rk-tbl tbody th, .rk-tbl tbody td, .tbl tbody th, .tbl tbody td, .data-table tbody th, .data-table tbody td { height: 44px; }
  .who { display: block; }
  .who > span > a:first-child { padding-block: 2px; }
}

/* I-017: watchlist rows and the "Your players" strip on the home page */
.wl-row { list-style: none; padding: 12px 0; border-bottom: 1px solid var(--line); }
.wl-row[hidden] { display: none; }
.wl-top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-weight: 600; }
.wl-dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px 14px; margin: 8px 0 0; }
.wl-dl > div { min-width: 0; }
.wl-dl dt { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); }
.wl-dl dd { margin: 2px 0 0; font-size: 14px; color: var(--text); }
.wl-suggest { margin-top: 12px; }
.wl-sug { padding: 8px 0; }
.your-players { margin-top: 18px; }
@media (max-width: 600px) { .wl-dl { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- UX redesign (UX reco Nov 2, Roman approved the layouts; built Nov 4) --------------------------------------- */
/* UX-033: "How to use this page" collapsed below the list */
details.how-to { margin: 18px 0; } details.how-to > summary { cursor: pointer; color: var(--accent); font-weight: 700; min-height: 32px; }
details.how-to p { margin: 8px 0 0; color: var(--text-2); }
/* UX-049 / UX-042 / UX-058: start / sit, one panel per position, 3 + 3 cards, call pill and big points on one row */
.ss-article { margin: 6px 0 18px; }
.ss-panel { background: var(--panel); border: 1px solid var(--line); border-radius: 18px; padding: 22px 24px; margin: 0 0 22px; scroll-margin-top: 12px; }
.ss-phead { display: flex; align-items: center; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--line); margin-bottom: 14px; }
.ss-badge { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 12px;
  background: var(--brand); color: #fff; font: 800 20px/1 var(--display); }
.ss-panel .ss-phead h3 { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.2rem); margin: 0; }
.ss-count { margin-left: auto; font-size: 14px; }
.ss-panel .ss-cols { display: block; }
.ss-panel .ss-start, .ss-panel .ss-sit { border-left: 0; padding-left: 0; }
.ss-lab { display: flex; align-items: center; gap: 12px; font-size: 14px; letter-spacing: .1em; margin: 14px 0 8px; }
.ss-lab::after { content: ""; flex: 1; border-top: 1px solid var(--line); }
.ss-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: stretch; }
.ss-card { display: block; background: var(--panel-2); border: 1px solid var(--line); border-top: 4px solid var(--up); border-radius: 12px; padding: 14px; }
.ss-sit .ss-card { border-top-color: var(--down); }
.ss-card .ga-card { margin: 0; }
.ss-card .ga-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.call-pill { display: inline-block; border-radius: 999px; padding: 5px 12px; font-weight: 700; font-size: 13px; line-height: 1.2; }
.cp-start { background: var(--up-bg); color: var(--up); } .cp-sit { background: #3C1E26; color: var(--down); } .cp-flex { background: #2C3446; color: #C9D8FF; }
.ga-pts { text-align: right; line-height: 1; } .ga-pts b { display: block; font-size: 30px; font-weight: 700; color: var(--text); }
.ga-pts span { display: block; font-size: 12px; color: var(--text-3); margin-top: 4px; }
.ss-card .ga-id { display: block; } .ss-card .ga-id b { font-family: var(--display); font-size: 1.3rem; }
.ss-card .ga-dash { display: none; } .ss-card .ga-tx { display: block; margin-top: 8px; }
.ss-card .ga-proj .pj-p { display: none; }      /* the points already sit big on the call row */
@media (min-width: 900px) {   /* UX-058: bigger position buttons on start / sit (desktop) */
  .pos-btns[aria-label^="Start / sit"] a { min-height: 58px; min-width: 100px; font-size: 18px; font-weight: 800; padding: 0 26px; } }
@media (max-width: 899px) { .ss-grid { grid-template-columns: 1fr; } .ss-panel { padding: 16px 14px; } .ss-badge { width: 44px; height: 44px; font-size: 17px; } }
/* Player page (UX-050 to UX-055): call card beside key numbers and range; even boxes; anchors wrap */
.p-top { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 20px; align-items: stretch; margin: 0 0 18px; }
.p-top > .outlook { margin: 0; height: 100%; box-sizing: border-box; }
.p-right { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.p-right .p-glance { margin: 0; }
.p-right .p-glance .p-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.p-right .p-glance .hs { border: 1px solid var(--brand); background: linear-gradient(180deg, #10264A, var(--panel)); border-radius: 14px; padding: 12px 14px; }
.p-right .p-glance .hs-v { font-family: var(--display); font-weight: 800; font-size: 46px; font-stretch: 100%; line-height: 1.05; color: var(--text); }
.p-right .p-glance .hs-fp .hs-v { color: var(--text); }
.hs-pill { display: inline-block; border-radius: 999px; padding: 1px 9px; background: #13264A; color: var(--accent); border: 1px solid var(--brand); font-size: 12px; }
.p-right .rg-panel { flex: 1; margin: 0; }
.rg-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.rg-title { color: var(--accent); }
.rg-chip { border-radius: 999px; padding: 3px 12px; font-size: 13px; font-weight: 700; background: #2C3446; color: var(--text); }
.rg-boom-or-bust { background: var(--warn-bg); color: var(--warn); } .rg-safe-floor { background: var(--up-bg); color: var(--up); }
.rg-wrap { margin: 26px 0 6px; }
.rg-bar { position: relative; height: 16px; border-radius: 999px; background: #2F4C9C; }
.rg-bust { position: absolute; left: 0; top: 0; bottom: 0; background: #7A4250; border-radius: 999px 0 0 999px; }
.rg-boom { position: absolute; right: 0; top: 0; bottom: 0; background: #6F8FE8; border-radius: 0 999px 999px 0; }
.rg-mark { position: absolute; top: -4px; bottom: -4px; width: 3px; margin-left: -1px; background: var(--text); border-radius: 2px; }
.rg-mark.rg-proj { width: 9px; margin-left: -4px; background: var(--brand); border: 2px solid var(--text); }
.rg-mark b { position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); margin-bottom: 4px; font: 600 13px var(--mono); color: var(--text); white-space: nowrap; }
.rg-axis { position: relative; height: 18px; margin-top: 4px; font: 12px var(--mono); color: var(--text-3); }
.rg-axis span { position: absolute; transform: translateX(-50%); } .rg-axis span:first-child { transform: none; } .rg-axis span:last-child { transform: translateX(-100%); }
.rg-row { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 9px 0; border-top: 1px solid var(--line); }
.rg-p { text-align: right; font-size: 13px; color: var(--text-3); } .rg-p b { font-size: 16px; color: var(--text); }
.rg-say { margin: 8px 0 0; }
.p-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: stretch; grid-column: 1 / -1; }
.p-pair > .panel { margin: 0; height: 100%; box-sizing: border-box; min-width: 0; }
.p-secnav-links { flex-wrap: wrap; overflow: visible; }
.tbl th.tot, .tbl td.tot { color: var(--accent); font-weight: 700; }
.swipe-hint { display: none; margin: 0 0 6px; }
.table-wrap { scrollbar-width: none; -ms-overflow-style: none; } .table-wrap::-webkit-scrollbar { display: none; }   /* Roman, Nov 2: no visible scroll bar */
@media (max-width: 960px) { .p-top, .p-pair { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .swipe-hint { display: block; }
  .p-right .p-glance .p-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p-right .p-glance .hs-v { font-size: 40px; }
}
/* Home (UX-034 order, UX-056 feature hero with the top players built in; open lists, not boxes) */
.home-hero.fh { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: center; gap: 48px; margin: 22px 0 0; padding: 56px 64px;
  border: 1px solid var(--line-2); border-radius: 26px; background: radial-gradient(120% 140% at 0% 0%, #13306A 0%, #0C1E3D 45%, #0B1830 100%); }
.fh .fh-title { font-size: clamp(2.4rem, 1.4rem + 3.2vw, 3.6rem); font-weight: 800; color: var(--text); margin: 8px 0 14px; }
.fh .lede { font-size: 1.15rem; }
.fh-big { display: flex; justify-content: center; align-items: center; min-height: 60px; font-size: 1.2rem; font-weight: 800; margin-top: 22px; }
.fh-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.fh-btns .btn { min-height: 46px; font-weight: 700; }
.tp .tabs { margin: 6px 0 4px; }
.tp-list { list-style: none; margin: 0; padding: 0; }
.tp-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.tp-who b { display: block; font-family: var(--display); font-size: 1.25rem; } .tp-who .muted { font-size: 13px; }
.tp-pts { font-family: var(--display); font-weight: 800; font-size: 2rem; color: var(--accent); }
.tp-all { display: inline-block; margin-top: 12px; font-weight: 700; text-decoration: underline; }
.home-cols3, .home-cols2 { display: grid; gap: 40px; margin-top: 88px; }
.home-cols3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .home-cols2 { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
.hc-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding-bottom: 12px; border-bottom: 2px solid var(--line-2); margin-bottom: 4px; }
.hc-head h2 { font-size: 1.5rem; } .hc-head a { text-decoration: underline; white-space: nowrap; }
.hc-sub { margin: 8px 0 4px; }
.hl { list-style: none; margin: 0; padding: 0; }
.hl-row, .home-cols3 .watch-list li, .home-cols2 .watch-list li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.home-cols3 .watch-list, .home-cols2 .watch-list { list-style: none; margin: 0; padding: 0; }
.home-cols3 .watch-list li p, .home-cols2 .watch-list li p { margin: 0; font-size: 13px; color: var(--text-3); }
.hl-pts { font-size: 1.4rem; }
.home-cols2 .leaders2 { margin-top: 0; }
.more-from { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 30px; margin-top: 88px; }
.mf { border-top: 2px solid var(--line-2); padding-top: 16px; } .mf h2 { font-size: 1.4rem; margin-bottom: 6px; }
.gp { margin-top: 70px; } .gp-list { list-style: none; padding: 0; margin: 12px 0 0; display: flex; flex-wrap: wrap; gap: 10px; }
.gp-list a { display: inline-flex; flex-direction: column; align-items: center; padding: 10px 20px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--text); }
.gp-list a .muted { font-size: 12px; } .gp-list a:hover { border-color: var(--accent); text-decoration: none; }
@media (max-width: 960px) {
  .home-hero.fh { grid-template-columns: 1fr; padding: 26px 20px; gap: 26px; border-radius: 18px; }
  .home-cols3, .home-cols2, .more-from { grid-template-columns: 1fr; gap: 28px; margin-top: 36px; }
  .gp { margin-top: 36px; }
}
@media (max-width: 560px) {
  .fh-btns { display: grid; grid-template-columns: 1fr 1fr; } .fh-btns .btn { justify-content: center; }
  .tp-pts { font-size: 1.6rem; }
}
/* Rankings: UX-037 last week's results under the H1; UX-038 one position selector */
.rk-results { margin: 6px 0 0; font-size: 14px; } .rk-results a { text-decoration: underline; }
.home-cols3 > *, .home-cols2 > *, .more-from > * { min-width: 0; }
.home-cols3 .watch-list li, .home-cols2 .watch-list li { display: block; }
.home-cols3 .watch-list li p, .home-cols2 .watch-list li p { margin-top: 4px; }
.p-top .out-grid { grid-template-columns: 1fr; }   /* the call card is half the width now: text first, then the boxes */
.p-top .out-grid .out-boxes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 560px) { .p-top .out-grid .out-boxes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Roman, Nov 4: player page, the call and summary on top in one full-width column, the numbers and range balanced below */
.outlook-story { margin: 0 0 18px; }
.outlook-story .reco { margin: 12px 0 0; }
.outlook-story .reco p { line-height: 1.65; max-width: none; }
.outlook-story .reco { display: block; }
.outlook-story .reco-call { display: block; margin-bottom: 8px; }
.p-top > .outlook .sec-head { margin-bottom: 10px; }
/* Home: three even blocks (Start / sit, Waiver wire, What changed): the same row height and heading space */
@media (min-width: 961px) { .home-cols3 .hl-row { min-height: 58px; } .home-cols3 .hc-sub { min-height: 2.9em; } }
.hl-right { display: inline-flex; align-items: baseline; gap: 12px; white-space: nowrap; } .hl-ros { font-size: 13px; }
@media (max-width: 560px) { .hl-ros { display: none; } }
/* Roman, Nov 5: phone section bar is one slim row (avatar + buttons that scroll sideways), still frozen */
@media (max-width: 560px) {
  .p-secnav-in { flex-direction: row; align-items: center; gap: 8px; padding-block: 6px; }
  .p-secnav-name b { max-width: 110px; overflow: hidden; text-overflow: ellipsis; font-size: 14px; }
  .p-secnav-links { flex-wrap: nowrap; overflow-x: auto; -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 5%, #000 88%, transparent); }
  .p-secnav-links a { padding: 4px 10px; }
}
/* Track record trend (Roman, Nov 5, design A) */
.trend-panel { --bar-late: #3A5BB8; --bar-early: #6B7FB0; --marker: #F26A1B; }
.tt-hl { font-size: 38px; font-weight: 700; line-height: 1; margin: 8px 0 4px; }
.tt-hl.up { color: var(--up); } .tt-hl.down { color: var(--down); }
.tt-met, .tt-pos, .tt-bpw { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.tt-btn { font: 600 14px var(--body, inherit); color: var(--text-2); background: transparent; border: 1px solid var(--line-2); border-radius: 999px; padding: 8px 14px; min-height: 40px; cursor: pointer; }
.tt-btn[aria-pressed="true"] { background: #3A5BB8; color: #fff; border-color: #4C7DFF; }
.tt-chart, .tt-bypos { width: 100%; height: auto; display: block; }
.tt-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; color: var(--text-2); margin-top: 8px; }
.tt-legend .sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.trend-table td.num, .trend-table th { text-align: right; } .trend-table td:first-child, .trend-table th:first-child { text-align: left; }
/* Player menu (Roman, Nov 5, design A): name only once the header has scrolled off; current chip lit; about 48px on a phone */
.p-secnav-name { display: none; }
.p-secnav.is-stuck .p-secnav-name { display: flex; }
.p-secnav-links a.is-current { background: #3A5BB8; border-color: #4C7DFF; color: #fff; }
@media (min-width: 561px) { .p-secnav-links { flex-wrap: nowrap; overflow-x: auto; } }
@media (max-width: 560px) { .p-secnav-in { min-height: 48px; } .p-secnav.is-stuck .p-secnav-name { display: flex; } }
.p-secnav-links { min-width: 0; flex: 1 1 auto; }
.outlook-story .reco-long { display: block; } .outlook-story .reco-long p + p { margin-top: 12px; }
.trend-panel > h2 { margin-bottom: 10px; }
/* Player page (Roman, Nov 4-5): the call and summary on their own full-width panel on top, the numbers and range balanced below */
.outlook-story { margin: 0 0 18px; }
.outlook-story .reco { margin: 12px 0 0; display: block; }
.outlook-story .reco-call { display: block; margin-bottom: 8px; }
.outlook-story .reco p { line-height: 1.65; max-width: none; }
.outlook-story .reco-long p + p { margin-top: 12px; }
.p-top > .outlook .sec-head { margin-bottom: 10px; }
.tw-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 30px; }
.tw-list li { padding: 8px 0; border-bottom: 1px solid var(--line); }
@media (max-width: 700px) { .tw-list { grid-template-columns: 1fr; } }

/* Player top card (Roman, Nov 6; approved mock-ups 14 mobile / 15 desktop) */
.p-back { display: inline-block; margin: 6px 0 10px; color: var(--accent); font-size: 14px; text-decoration: none; }
.p-card { background: var(--panel, #0F1B3A); border: 1px solid var(--line-2, #24335f); border-radius: 14px; padding: 16px; display: grid; gap: 14px; margin-bottom: 14px; }
.pc-id { display: flex; gap: 12px; align-items: center; }
.jersey { flex: none; width: 64px; height: 64px; border: 2px solid; border-radius: 14px; padding: 6px; display: block; }
.pc-h1 { font-weight: 700; font-size: 26px; line-height: 1.1; font-family: var(--display, inherit); margin: 0; }
.pc-sub { margin: 2px 0 6px; font-size: 13px; color: var(--text-2); }
.pc-name .chips { margin: 0; } .pc-status { margin: 6px 0 0; font-size: 13px; } .pc-status.ok { color: var(--up, #43c07a); } .pc-status.warn { color: #F2B64A; }
.pc-label { margin: 0 0 4px; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3, #8a97bd); }
.pc-game { margin: 0 0 6px; font-size: 15px; font-weight: 600; }
.pc-proj { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.pc-big { font-weight: 700; font-size: 48px; line-height: 1; font-family: var(--display, inherit); color: #8FB0FF; display: block; }
.pc-rng { display: block; font-size: 13px; color: var(--text-2); }
.pc-call { text-align: right; }
.pc-pill { display: inline-block; padding: 4px 10px; border-radius: 6px; font-weight: 700; font-size: 12px; line-height: 1.2; letter-spacing: .05em; background: #1f6f4a; color: #fff; }
.pc-pill.pc-flex, .pc-pill.pc-desperate { background: #8a6a1f; } .pc-pill.pc-sit, .pc-pill.pc-out { background: #8a2f2f; }
.pc-ranks { margin: 6px 0 0; font-size: 13px; color: var(--text-2); } .pc-ranks > span { display: block; }
.pc-perf { margin: 0; font-size: 13px; color: var(--text-2); }
.pc-btns { display: flex; gap: 8px; flex-wrap: wrap; } .pc-btns .btn, .pc-btns .star { min-height: 40px; flex: 1 1 0; }
.pc-btns .star:not([hidden]) { display: inline-flex; align-items: center; justify-content: center; }
@media (min-width: 961px) {
  .p-card { grid-template-columns: 1.1fr 1.5fr 1.1fr; gap: 28px; padding: 22px 26px; align-items: center; }
  .pc-big { font-size: 68px; } .pc-h1 { font-size: 30px; } .jersey { width: 76px; height: 76px; }
  .pc-btns { grid-column: 1; grid-row: 2; justify-self: start; } .pc-btns .btn, .pc-btns .star { flex: none; padding-inline: 18px; }
}
.pc-updated { margin: -6px 0 12px; font-size: 12px; color: var(--text-3, #8a97bd); }
/* Site header (Roman, Nov 6): logo mark, search, scoring switch and a star on one row; the menu links below on a phone */
.watch-link { font-size: 16px; padding: 6px 12px; min-width: 44px; min-height: 40px; display: inline-flex; align-items: center; justify-content: center; }
@media (max-width: 960px) {
  .topbar-inner { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; grid-template-areas: "brand search fmt watch" "nav nav nav nav"; gap: 8px 10px; align-items: center; }
  .brand { grid-area: brand; } .main-nav { grid-area: nav; overflow-x: auto; flex-wrap: nowrap; white-space: nowrap; }
  .top-tools { display: contents; }
  .top-search, .topbar.is-home .top-search { grid-area: search; display: block; flex: none; order: 0; width: auto; min-width: 0; }
  .top-search input, .topbar.is-home .top-search input { width: 100%; min-height: 40px; font-size: 14px; }
  .fmt-switch { grid-area: fmt; } .watch-link { grid-area: watch; }
}
.pc-big .fpv, .pc-big .f { font: inherit; color: inherit; }

/* Week N in numbers (Roman, Nov 6): fantasy points group, projected stats, matchup tile */
.nm { display: grid; gap: 10px; }
.nm-label { margin: 8px 0 0; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3, #8a97bd); }
.nm-pts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nm-main, .nm-avg, .nm-stat, .nm-def { border: 1px solid var(--line-2, #24335f); border-radius: 10px; padding: 12px; }
.nm-main { border-color: #4C7DFF; }
.nm-big { font-weight: 700; font-size: 36px; line-height: 1; font-family: var(--display, inherit); margin: 4px 0; } .nm-main .nm-big { color: #8FB0FF; }
.nm-big .fpv, .nm-big .f { font: inherit; color: inherit; }
.nm-sub { margin: 2px 0 0; font-size: 13px; color: var(--text-2); }
.nm-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.nm-v { font-weight: 700; font-size: 24px; line-height: 1.1; font-family: var(--display, inherit); margin: 4px 0 0; }
.nm-def { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; } .nm-defv { font-weight: 700; font-size: 26px; line-height: 1; font-family: var(--display, inherit); } .nm-defl { color: var(--text-2); font-size: 14px; }
@media (max-width: 560px) { .nm-big { font-size: 32px; } .nm-v { font-size: 20px; } }

/* Player page section separation on a phone (Roman, Nov 6); desktop stays as it was */
.p-divider { display: none; }
@media (max-width: 960px) {
  .p-divider { display: block; grid-column: 1 / -1; margin: 22px -16px 0; padding: 14px 16px; background: #0B1A3D; border-block: 1px solid var(--line-2, #24335f); }
  .p-divider h2 { margin: 0; font-weight: 700; font-size: 22px; line-height: 1.1; font-family: var(--display, inherit); } .p-divider p { margin: 4px 0 0; font-size: 13px; color: var(--text-2); }
}
/* Season by season: the Pts and Pts / g columns and their rank tags centred */
.seasons td:nth-child(4), .seasons td:nth-child(5), .seasons th:nth-child(4), .seasons th:nth-child(5) { text-align: center; }
