/* NFL team reports extend the shared editorial data-page shell. */
.nfl-rankings { color: var(--ffn-ed-text); }
.nfl-rankings * { box-sizing: border-box; }
.nfl-rankings .ffn-pilot-shell > * { min-width: 0; }
.nfl-rankings .ffn-page-headline { align-items: center; margin: 0; }
.nfl-rankings .ffn-page-headline-title { line-height: .98; max-width: 1050px; }
.nfl-rankings .ffn-page-headline-sub { margin-top: .7rem; max-width: 48rem; }
.nfl-rankings .ffn-title-nerd { flex: 0 0 116px; width: 116px; height: 128px; object-fit: contain; }
.nfl-rankings .ffn-pilot-section { margin: 0; }
.nfl-rankings .eyebrow, .nfl-rankings .preview { font: 700 .7rem/1.5 var(--ffn-ed-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ffn-ed-text-muted); margin: 0 0 .7rem; }
.nfl-rankings .leaders { display: grid; gap: 1rem; }
.nfl-rankings .leaders-three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.nfl-rankings .leaders-two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.nfl-rankings .leader { padding: 1.5rem; min-width: 0; }
.nfl-rankings .leader h2 { font-size: clamp(1.25rem,2vw,1.8rem); line-height: 1.15; font-weight: 850; letter-spacing: -.035em; margin: 0 0 1rem; }
.nfl-rankings .leader p:last-child { margin: 0; font-size: .85rem; color: var(--ffn-ed-text-muted); line-height: 1.6; }
.nfl-rankings .leader p strong { display: inline; }
.nfl-rankings .leader-rank { font: 800 2.6rem/1 var(--ffn-ed-font-sans); letter-spacing: -.06em; color: var(--ffn-ed-accent); }
.nfl-rankings .leader-name { display: flex; align-items: baseline; gap: 1rem; }
.nfl-rankings .unit-note { border-left: 3px solid var(--ffn-ed-accent); padding: .6rem 1rem; margin: 0; color: var(--ffn-ed-text-muted); font-size: .86rem; line-height: 1.65; }
.nfl-rankings .toolbar { padding: 1.1rem 1.4rem; display: flex; gap: 1rem 2rem; align-items: end; flex-wrap: wrap; }
.nfl-rankings .toolbar > div { flex: 1 1 16rem; min-width: 0; }
.nfl-rankings label { display: block; font: 700 .68rem/1.5 var(--ffn-ed-font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ffn-ed-text-muted); margin-bottom: .45rem; }
.nfl-rankings input, .nfl-rankings select { width: 100%; max-width: 100%; min-height: 46px; padding: .65rem .85rem; border: 1px solid var(--ffn-ed-border-strong); border-radius: .75rem; font: inherit; font-size: .9rem; color: var(--ffn-ed-text); background: var(--ffn-ed-surface-strong); }
.nfl-rankings input::placeholder { color: var(--ffn-ed-text-muted); }
.nfl-rankings .view-controls { display: flex; flex-wrap: wrap; gap: .5rem; }
.nfl-rankings .view-controls button { cursor: pointer; font: 700 .78rem/1.3 var(--ffn-ed-font-sans); min-height: 44px; padding: .65rem 1rem; border: 1px solid var(--ffn-ed-border-strong); border-radius: var(--ffn-ed-radius-pill); background: var(--ffn-ed-surface-strong); color: var(--ffn-ed-text-muted); }
.nfl-rankings .view-controls button[aria-pressed=true] { color: var(--ffn-ed-bg); background: var(--ffn-ed-text); border-color: var(--ffn-ed-text); }
.nfl-rankings .rank-section { overflow: hidden; }
.nfl-rankings .section-heading { padding: 1.4rem 1.4rem .8rem; display: flex; justify-content: space-between; gap: .5rem 1rem; align-items: baseline; flex-wrap: wrap; }
.nfl-rankings .section-heading h2 { font-size: 1.35rem; font-weight: 850; letter-spacing: -.03em; margin: 0; }
.nfl-rankings .section-heading span { font-size: .78rem; }
.nfl-rankings .section-note { padding: 0 1.4rem .8rem; font-size: .8rem; line-height: 1.6; color: var(--ffn-ed-text-muted); margin: 0; }
.nfl-rankings .table-scroll { width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
.nfl-rankings .ranking-table { border-collapse: collapse; width: 100%; text-align: left; font-size: .85rem; }
.nfl-rankings .ranking-table thead { background: #f4f7fc; color: var(--ffn-ed-text-soft); font: 700 .66rem/1.4 var(--ffn-ed-font-mono); text-transform: uppercase; letter-spacing: .1em; }
/* Same header as the shared data tables (editorial-data-pages.css --ffn-table-head). */
html[data-theme="dark"] .nfl-rankings .ranking-table thead { background: #132238; }
.nfl-rankings th, .nfl-rankings td { padding: .8rem .85rem; white-space: nowrap; border-bottom: 1px solid var(--ffn-ed-border); font-variant-numeric: tabular-nums; }
.nfl-rankings tr:last-child > * { border-bottom: 0; }
.nfl-rankings tbody tr:hover { background: var(--ffn-ed-accent-soft); }
.nfl-rankings .rank-cell { font-size: 1.15rem; font-weight: 850; width: 70px; }
.nfl-rankings .team-wrap { display: flex; align-items: center; gap: .7rem; }
.nfl-rankings .team-chip { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 32px; border: 1px solid var(--ffn-ed-border); border-left: 5px solid var(--team-primary); border-radius: .35rem; background: var(--ffn-ed-surface-muted); color: var(--ffn-ed-text); font: 800 .68rem/1 var(--ffn-ed-font-sans); }
.nfl-rankings .team-name { font-weight: 700; }
/* Team names in the team color (shared --ffn-team-ink, lifted in dark mode). */
.nfl-rankings .team-wrap[data-team-id] .team-name { color: var(--ffn-team-ink, var(--ffn-ed-text)); }
.nfl-rankings .muted { color: var(--ffn-ed-text-muted); }
.nfl-rankings .up { color: var(--brand-status-success-text); font-weight: 750; }
.nfl-rankings .down { color: var(--brand-status-danger-text); font-weight: 750; }
.nfl-rankings [hidden] { display: none !important; }
.nfl-rankings .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.nfl-rankings details { padding: 1.2rem 1.4rem; }
.nfl-rankings summary { font-weight: 750; cursor: pointer; padding: .25rem 0; }
.nfl-rankings details p { max-width: 70rem; color: var(--ffn-ed-text-muted); font-size: .88rem; line-height: 1.75; }
.nfl-rankings .source-note { color: var(--ffn-ed-text-muted); font-size: .78rem; line-height: 1.75; margin: 0; }
.nfl-rankings .no-results { padding: 1rem 1.4rem; }
.nfl-rankings a { color: var(--ffn-ed-accent); }
.nfl-rankings .ffn-hero-nav-btn { color: var(--ffn-ed-text-muted); }
.nfl-rankings .ffn-hero-nav-btn--primary { color: #fff; }
.nfl-rankings :focus-visible { outline: 3px solid var(--ffn-ed-accent); outline-offset: 3px; }
html[data-theme=dark] .nfl-rankings .ffn-hero-nav-btn--primary { color: #07101f; }
html[data-theme=dark] .nfl-rankings .leader,
html[data-theme=dark] .nfl-rankings .ffn-data-table-card,
html[data-theme=dark] .nfl-rankings .ffn-data-control-card { background: var(--ffn-ed-surface); border-color: var(--ffn-ed-border); }
@media(max-width:768px) {
  .nfl-rankings .leaders { grid-template-columns: 1fr; }
  .nfl-rankings .ffn-title-nerd { display: none; }
  .nfl-rankings .ffn-page-headline-title { font-size: clamp(2rem,8vw,3rem); }
  .nfl-rankings .ffn-hero-nav { gap: .5rem; }
  .nfl-rankings .ffn-hero-nav-btn { font-size: .67rem; letter-spacing: .03em; padding: .6rem .8rem; white-space: normal; }
  .nfl-rankings .leader { padding: 1.2rem; }
  .nfl-rankings .leader h2 { margin-bottom: .6rem; }
  .nfl-rankings th, .nfl-rankings td { padding: .8rem; }
  /* Scroll cue: the table is wider than the phone. */
  .nfl-rankings .table-scroll { -webkit-mask-image: linear-gradient(to right, #000 88%, transparent); mask-image: linear-gradient(to right, #000 88%, transparent); }
}

/* Dark mode: lifted movement colors (the light-mode status inks fall under 3:1 on navy). */
html[data-theme="dark"] .nfl-rankings .up { color: #4ade80; }
html[data-theme="dark"] .nfl-rankings .down { color: #f87171; }

/* Phones: tighter cells and a right-edge fade so the partly visible next column reads as "scroll for more". */
@media (max-width: 640px) {
  .nfl-rankings th, .nfl-rankings td { padding: .7rem .6rem; }
  .nfl-rankings .rank-cell { width: 44px; }
  .nfl-rankings .table-scroll {
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 2.5rem), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 2.5rem), transparent);
  }
}

/* Leader label rows sit on the card, not on their own darker strip in dark mode. */
html[data-theme="dark"] .nfl-rankings .leader > .eyebrow { background: transparent; box-shadow: none; }
