:root {
      --bg-body: radial-gradient(circle at top, #14213d 0, #050816 45%, #020208 100%);
      --bg-main: #050816;
      --bg-panel: #0c1220;
      --accent: #1e90ff;
      --accent-soft: rgba(30,144,255,0.2);
      --accent-soft2: rgba(30,144,255,0.12);
      --text-main: #f5f7ff;
      --text-soft: #a8b3d1;
      --border-soft: #222a3c;
      --danger: #ff6b81;
      --warning: #ffb347;
    }

    * { box-sizing: border-box; }

    body {
      margin: 0;
      padding: 0;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
        sans-serif;
      background: var(--bg-body);
      color: var(--text-main);
      min-height: 100vh;
      display: flex;
      justify-content: center;
      align-items: stretch;
      max-width: 100%;
      overflow-x: hidden;
    }

    /* LIGHT THEME OVERRIDES */
    body.theme-light {
      --bg-body: radial-gradient(circle at top, #e5edff 0%, #dde8ff 50%, #d6e2ff 100%);
      --bg-panel: #dde5ff;
      --accent: #2563eb;
      --accent-soft: rgba(37,99,235,0.14);
      --accent-soft2: rgba(37,99,235,0.08);
      --text-main: #0f172a;
      --text-soft: #4b5563;
      --border-soft: #c7cfe5;
      --danger: #b91c1c;
      --warning: #b45309;
    }

    body.theme-light .app-shell {
      background: #ffffff;
      border-color: rgba(148,163,184,0.7);
      box-shadow:
        0 20px 40px rgba(15,23,42,0.18),
        0 0 0 1px rgba(15,23,42,0.08);
    }

    body.theme-light .player-filter-list,
    body.theme-light .section-card,
    body.theme-light .player-card {
      background: #ffffff;
      border-color: #000000;
    }

    body.theme-light .stats-table thead,
    body.theme-light .section-table thead {
      background: #f3f4f6;
      color: #111827;
    }

    body.theme-light .stats-table tbody tr:nth-child(odd),
    body.theme-light .section-table tbody tr:nth-child(odd) {
      background: #e5e7eb;
    }

    body.theme-light .stats-table tbody tr:nth-child(even),
    body.theme-light .section-table tbody tr:nth-child(even) {
      background: #f3f4f6;
    }

    body.theme-light .empty-state {
      color: #6b7280;
    }

    body.theme-light .team-panel {
      background: var(--bg-panel);
      border-color: #90a4ff;
    }

    body.theme-light .matchup-pill {
      background: #ffffff;
      color: #0f172a;
      border-color: #000000;
    }

    body.theme-light .matchup-pill:hover {
      background: #f3f4ff;
      border-color: #000000;
    }

    body.theme-light .matchup-pill.active {
      border-color: #000000;
      box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
      background: #eef2ff;
    }

    body.theme-light .player-filter-item {
      background: #e5e7f5;
      border-color: #cbd5f5;
      color: var(--text-soft);
    }

    body.theme-light .player-filter-item.injury-out {
      border-color: #fecaca;
      background: #fee2e2;
      color: #7f1d1d;
    }

    body.theme-light .player-filter-item.injury-questionable {
      border-color: #facc15;
      background: #fef9c3;
      color: #78350f;
    }

    body.theme-light .player-filter-item.injury-doubtful {
      border-color: #fed7aa;
      background: #ffedd5;
      color: #78350f;
    }

    .app-shell {
      width: 100%;
      max-width: 1400px;
      margin: 12px auto;
      padding: 14px 18px 16px;
      border-radius: 22px;
      background: radial-gradient(circle at top left, #1b2848 0, #050816 55%);
      border: 1px solid rgba(255, 255, 255, 0.06);
      box-shadow:
        0 26px 60px rgba(0, 0, 0, 0.7),
        0 0 0 1px rgba(0, 0, 0, 0.6);
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    .top-strip {
      display: flex;
      flex-direction: column;
      gap: 4px;
    }

    .week-nav {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
    }

    .week-label {
      font-size: 12px;
      color: var(--text-main);
      letter-spacing: 0.16em;
      text-transform: uppercase;
      text-align: center;
      font-weight: 700;
    }

    .week-arrow {
      border: none;
      background: transparent;
      color: var(--text-main);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 12px;
      cursor: pointer;
      padding: 0 2px;
      line-height: 1;
    }

    .week-arrow:disabled {
      opacity: 0.35;
      cursor: default;
    }

    .matchups-strip {
      display: flex;
      gap: 6px;
      padding: 4px 2px 2px;
      width: 100%;
      justify-content: center;
    }

    .matchup-pill {
      flex: 1 1 0;
      min-width: 0;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      border-radius: 10px;
      padding: 6px 8px;
      background: rgba(9, 15, 30, 0.96);
      border: 1px solid transparent;
      cursor: pointer;
      transition: background 0.15s, border-color 0.15s, transform 0.06s, box-shadow 0.15s;
      font-size: 10px;
      color: var(--text-main);
      min-height: 48px;
      text-align: center;
      font-family: inherit;
    }

    .matchup-pill:hover {
      background: rgba(18, 27, 52, 0.98);
      border-color: rgba(255, 255, 255, 0.12);
      transform: translateY(-1px);
    }

    .matchup-pill.active {
      border-color: var(--accent);
      box-shadow: 0 0 0 1px rgba(30,144,255,0.35);
      background: linear-gradient(135deg, rgba(30,144,255,0.18), rgba(4,8,20,1));
    }

    .pill-mainline {
      font-weight: 600;
      font-size: clamp(8px, 0.72vw, 11px);
      letter-spacing: -0.01em;
      width: 100%;
      text-align: center;
      display: block;
      white-space: nowrap;
      line-height: 1.35;
    }

    .pill-small,
    .pill-date {
      font-size: 9px;
      color: var(--text-main);
      letter-spacing: 0.12em;
      text-transform: uppercase;
      width: 100%;
      text-align: center;
    }

    .pill-date {
      text-transform: none;
      letter-spacing: 0.04em;
      opacity: 0.9;
    }

    .error-banner {
      padding: 6px 10px;
      border-radius: 10px;
      background: rgba(139, 44, 67, 0.9);
      color: #ffeef0;
      font-size: 11px;
      display: none;
      margin-top: 4px;
    }

    .error-banner.visible { display: block; }

    /* UPDATED: loading state overlay, no box, centered on screen */
    .loading-state {
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      display: none;
      align-items: center;
      justify-content: center;
      text-align: center;
      margin-top: 0;
      border-radius: 0;
      border: none;
      background: transparent;
      min-height: 0;
      padding: 0;
      z-index: 999;
    }

    .loading-text {
      position: relative;
      display: inline-block;
      text-transform: uppercase;
      letter-spacing: 0.18em;
    }

    .loading-label {
      font-size: 26px;
      font-weight: 700;
    }

    .loading-dots {
      position: absolute;
      top: 0;
      left: 100%;
      margin-left: 6px;
      font-size: 26px;
      min-width: 30px;
      text-align: left;
    }

    /* ===== TOP INFO ROW WITH 5 BOXES (DEF – BLANK – WEATHER – BLANK – DEF) ===== */
    .info-row {
      display: grid;
      /* center (weather) column made wider so buttons + padding fit comfortably */
      grid-template-columns: 1fr 1.1fr minmax(0, 1.35fr) 1.1fr 1fr;
      gap: 6px;
      margin-top: 4px;
      align-items: stretch;
    }

    .info-cell {
      background: var(--bg-panel);
      border-radius: 12px;
      border: 1px solid var(--border-soft);
      padding: 4px 8px 5px;
      display: flex;
      flex-direction: column;
      justify-content: flex-start;  /* Title stays top */
    }

    .info-cell-center {
      align-items: center;
      text-align: center;
      padding: 4px 8px 5px; /* match defense cell padding horizontally */
    }

    .info-label {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 0.16em;
      color: var(--text-soft);
      margin-bottom: 2px;
      white-space: nowrap;
      text-align: center;
      width: 100%;
    }



    /* Keep label at top, but center the content (def-grid) vertically */
    .info-body {
      font-size: 12px;
      color: var(--text-main);
      display: flex;
      flex: 1;
      align-items: center;      /* Centers defense stats and weather block vertically */
    }

    .info-body-left,
    .info-body-right,
    .info-body-center {
      justify-content: center;
    }


/* ODDS: single shared grid for titles + values (perfect column alignment) */
.odds-grid{
  width: 100%;
  display: grid;
  grid-template-columns: auto 1fr 1fr 1fr; /* TEAM + Spread + Total + ML */
  column-gap: 10px;
  row-gap: 6px;       /* match def-grid row-gap */
  font-size: 11px;    /* match def-grid */
  line-height: 1.4;   /* match def-grid */
  align-items: center;
}

/* Header cells that live INSIDE the same odds-grid columns as the values */
.odds-hspacer{
  grid-column: 1;           /* keeps col 1 empty on header row */
}

.odds-hcell{
  font-size: 10px;
  color: var(--text-soft);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  font-weight: 600;
  text-align: center;
  white-space: nowrap;
}



/* Slightly tighter for the team column inside the grid */
.odds-team{
  white-space: nowrap;
}



/* ODDS (left-of-weather) — compact + matches defense typography */
.odds-table {
  width: 100%;
  border-collapse: collapse;     /* no extra height */
  font-size: 11px;               /* match defense */
  line-height: 1.25;             /* match defense */
}

.odds-table thead th {
  font-size: 10px;
  color: var(--text-soft);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 0 6px 0px;     /* remove bottom padding so header sits higher */
  line-height: 1.1;       /* tighter header */
  text-align: center;
  white-space: nowrap;
  position: relative;
  top: -1px;              /* lifts the titles slightly */
}


.odds-table thead th:first-child {
  text-align: left;
  padding-left: 0;
}

.odds-table tbody td {
  padding: 1px 6px;       /* tighter rows */
  line-height: 1.2;       /* matches defense feel */
  vertical-align: top;
}


.odds-team {
  padding-left: 0 !important;
  text-align: left;
  font-weight: 600;              /* not bold-bold */
  color: var(--text-main);
  white-space: nowrap;
line-height: 1.2;
padding-top: 0px;
}

.odds-val {
  text-align: center;
  font-weight: 600;              /* match defense weight */
  color: var(--text-main);
  white-space: nowrap;
}

/* Ensure TEAM column width matches label grid */
.odds-table td:first-child {
  width: 1%;
  white-space: nowrap;
}


/* No boxes, no borders */
.odds-table,
.odds-table * {
  border: none !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
}


/* ODDS: vertically align like the DEF boxes */
.odds-body{
  align-items: center !important;
  padding-top: 0;
}


    /* WEATHER CONTENT */
    .weather-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      width: 100%;
      row-gap: 4px;
      min-height: 40px;
    }

    .weather-icon {
      width: 32px;
      height: 32px;
      object-fit: contain;
    }

    .weather-condition-symbol {
      width: 34px;
      height: 34px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 26px;
      line-height: 1;
      filter: drop-shadow(0 2px 5px rgba(0,0,0,0.35));
    }

    .weather-text {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      font-size: 11px;
      text-align: center;
      white-space: nowrap;
    }

    .weather-line-main {
      font-weight: 500;
    }

    .weather-line-secondary {
      font-size: 11px;
      opacity: 0.9;
    }

    .weather-wind {
      display: inline-flex;
      align-items: center;
      gap: 3px;
    }

    .weather-wind-icon {
      width: 14px;
      height: 14px;
    }

    .weather-precip {
      margin-left: 2px;
      display: inline-flex;
      align-items: center;
      gap: 3px;
    }

    .weather-precip-icon svg {
      width: 14px;
      height: 14px;
      display: block;
    }

    .snowflake-char {
      font-size: 14px;
      line-height: 1;
    }

    .weather-precip-alert {
      color: var(--danger);   /* red – used for RAIN precip % >= 30 */
    }

    /* NEW: snow alert uses the same blue as cold temps */
    .weather-precip-snowalert {
      color: #0DCAF0;
      font-weight: 700;
    }

    .weather-label-alert {
      color: var(--danger);
      font-weight: 700;
    }

    /* cold temp highlight */
    .weather-temp-cold {
      color: #0DCAF0;
      font-weight: 700;
    }

    .weather-wind-strong {
      color: var(--danger);
      font-weight: 700;
    }

    /* label color when temp is cold OR snow% alert */
    .weather-label-cold {
      color: #0DCAF0;
      font-weight: 700;
    }

    /* QUARTER SELECTORS – tighter buttons */
    .weather-quarter-row {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 10px;           /* closer to icon/text */
      width: 100%;
    }

    .weather-quarter-group {
      display: inline-flex;
      flex-direction: row;
      gap: 3px;            /* Q1/Q2 and Q3/Q4 closer together */
    }

    .weather-icon-wrap {
      flex: 0 0 auto;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 0;
    }

    .weather-quarter-btn {
      border-radius: 999px;
      border: 1px solid var(--border-soft);
      background: transparent;
      padding: 1px 6px;    /* snug pills; JS may slightly override */
      font-size: 9px;
      text-transform: uppercase;
      letter-spacing: 0.14em;
      color: var(--text-soft);
      cursor: pointer;
      min-width: auto;     /* no forced wide buttons */
      text-align: center;
    }

    .weather-quarter-btn.active {
      background: var(--accent-soft2);
      color: var(--accent);
      border-color: var(--accent);
      font-weight: 600;
    }

    .weather-quarter-btn:disabled {
      opacity: 0.35;
      cursor: default;
    }

    body.theme-light .weather-quarter-btn {
      background: #ffffff;
      color: #111827;
      border-color: #000000;
    }

    body.theme-light .weather-quarter-btn.active {
      background: #e5e7eb;
      color: #111827;
    }

    /* DEFENSE GRID – unified text size/formatting across all matchups */
    .def-grid {
      display: inline-grid;
      grid-template-columns: 1fr 1fr;
      column-gap: 12px;
      row-gap: 6px;
      font-size: 11px;
      line-height: 1.4;
      text-align: left;
      margin: 0 auto;
    }

    /* NEW: single-line defense lines so rank + yards never wrap */
    .def-line {
      white-space: nowrap;
    }

    .def-grid-col {
      display: flex;
      flex-direction: column;
      gap: 6px;
    }

    .teams-row {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 12px;
      margin-top: 6px;
      min-height: 520px;
    }

    .teams-row.expanded-home { grid-template-columns: 1fr; }
    .teams-row.expanded-away { grid-template-columns: 1fr; }

    .teams-row.expanded-home .team-panel[data-side="away"],
    .teams-row.expanded-away .team-panel[data-side="home"] {
      display: none;
    }

    .team-panel {
      background: var(--bg-panel);
      border-radius: 16px;
      border: 1px solid var(--border-soft);
      padding: 8px 10px 10px;
      display: flex;
      flex-direction: column;
      gap: 6px;
      min-height: 0;
    }

    /* UPDATED HEADER:
       - keep logo, team name, dropdown, pos filter & expand on SAME ROW (desktop)
       - allow name to wrap within its flex chunk instead of breaking row */
    .team-panel-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0 2px 4px;
      border-bottom: 1px solid rgba(255,255,255,0.06);
      gap: 8px;
      flex-wrap: nowrap;
      min-width: 0;
    }

    .team-header-left {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
      flex: 0 1 auto;
    }

    .team-header-center {
      display: flex;
      align-items: center;
      gap: 6px;
      flex-wrap: nowrap;
      min-width: 0;
      flex: 1 1 auto;
      justify-content: flex-end;
    }

    .team-logo {
      width: 32px;
      height: 32px;
      border-radius: 0;
      object-fit: contain;
      background: transparent;
      border: none;
      flex-shrink: 0;
    }

    .team-name {
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      margin-right: 4px;
      white-space: normal;
      overflow: visible;
      text-overflow: unset;
      max-width: none;
      line-height: 1.2;
    }

    /* Compact icon-based expand button to save horizontal space */
    .expand-btn {
      font-size: 12px;
      border-radius: 999px;
      border: 1px solid rgba(255,255,255,0.18);
      background: rgba(5,10,25,0.96);
      color: var(--text-main);
      padding: 0 8px;
      cursor: pointer;
      white-space: nowrap;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 22px;
      min-height: 22px;
      line-height: 1;
    }

    /* NEW: SVG styling for expand/collapse icon like the provided image */
    .expand-btn svg {
      width: 16px;
      height: 16px;
      stroke: currentColor;
      stroke-width: 2.4;
      fill: none;
      stroke-linecap: round;
      stroke-linejoin: round;
    }

    .player-select {
      font-size: 11px;
      border-radius: 999px;
      border: 1px solid var(--border-soft);
      background: rgba(4,8,22,0.96);
      padding: 4px 8px;
      color: var(--text-main);
      min-width: 120px;
      max-width: 170px;
      flex-shrink: 1;
    }

    .player-select option {
      background: #050816;
      color: var(--text-main);
    }

    .player-select option.injury-option-out,
    .player-select.injury-option-out {
      color: #ff6b81;
    }

    .player-select option.injury-option-questionable,
    .player-select.injury-option-questionable {
      color: #facc15;
    }

    .player-select option.injury-option-doubtful,
    .player-select.injury-option-doubtful {
      color: #fb923c;
    }

    .pos-toggle-group {
      display: inline-flex;
      border-radius: 999px;
      padding: 1px;
      background: rgba(5, 10, 25, 0.9);
      border: 1px solid var(--border-soft);
      flex-shrink: 0;
    }

    .pos-toggle {
      font-size: 10px;
      padding: 3px 6px;
      border-radius: 999px;
      border: none;
      background: transparent;
      color: var(--text-soft);
      cursor: pointer;
      font-weight: 600;
      white-space: nowrap;
    }

    .pos-toggle.active {
      background: var(--accent-soft2);
      color: var(--accent);
      font-weight: 600;
    }

    .player-filter-list {
      border-radius: 12px;
      background: radial-gradient(circle at top left, rgba(19,26,48,0.96), rgba(5,8,18,0.96));
      border: 1px solid rgba(255,255,255,0.04);
      padding: 6px 8px 6px 8px;
      display: flex;
      flex-direction: column;
      gap: 4px;
      width: 100%;
    }

    .archive-overview-grid {
      width: 100%;
    }

    .archive-summary-card {
      display: none;
    }

    .visibility-pos-row {
      display: flex;
      align-items: flex-start;
      gap: 3px;              /* tighter gap between label & chips */
      width: 100%;
      margin-bottom: 2px;
    }

    .visibility-pos-label {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 0.16em;
      color: #ffffff;        /* white labels */
      margin-top: 2px;
      white-space: nowrap;
      font-weight: 700;
      width: 24px;
      flex-shrink: 0;
    }

    .visibility-pos-chips {
      flex: 1;
      display: flex;
      flex-wrap: wrap;
      gap: 4px;
    }

    .player-filter-item {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 2px 8px;
      border-radius: 999px;
      background: rgba(16,23,44,0.98);
      border: 1px solid rgba(255,255,255,0.10);
      font-size: 11px;
      color: var(--text-soft);
      cursor: pointer;
      user-select: none;
      max-width: 220px;
      white-space: nowrap;
    }

    .player-filter-item.injury-out {
      border-color: rgba(255,107,129,0.9);
      background: rgba(76,17,32,0.96);
      color: #ffd6dd;
    }

    .player-filter-item.injury-questionable {
      border-color: rgba(250, 204, 21, 0.9);
      background: rgba(82, 66, 0, 0.96);
      color: #fef9c3;
    }

    body.theme-light .player-filter-item.injury-questionable {
      border-color: #facc15;
      background: #fef9c3;
      color: #78350f;
    }

    .player-filter-item.injury-doubtful {
      border-color: #fb923c;
      background: #7c2d12;
      color: #ffedd5;
    }

    .player-filter-item input {
      margin: 0;
    }

    .player-filter-item span {
      overflow: hidden;
      text-overflow: ellipsis;
    }

    .team-body-scroll {
      flex: 1;
      overflow-y: auto;
      margin-top: 4px;
      padding-right: 4px;
    }

    .position-section {
      margin-top: 6px;
    }

    .pos-header {
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.12em;
      color: var(--text-main);
      font-weight: 600;
      margin-bottom: 4px;
      padding: 2px 0 2px 10px;
      border-bottom: 1px solid rgba(255,255,255,0.05);
    }

    .player-card {
      margin-bottom: 8px;
      border-radius: 12px;
      background: linear-gradient(135deg, rgba(12,16,34,1), rgba(5,8,20,1));
      border: 1px solid rgba(255,255,255,0.06);
      padding: 6px 10px 6px 10px;
    }

    .player-card-header {
      display: flex;
      justify-content: space-between;
      align-items: center; /* center with red X */
      margin-bottom: 4px;
    }

    .player-name {
      font-size: 12px;
      font-weight: 600;
    }

    .player-meta-pos {
      font-size: 11px;
      color: var(--text-soft);
      font-weight: 400;
    }

.player-remove-btn {
  border-radius: 999px; 
  border: 1.5px solid rgba(255,107,129,0.9);
  background: rgba(76,17,32,0.96);
  color: #ffd6dd;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 24px;      /* narrower than before */
  height: 19px;
  padding: 0;

  font-size: 9px;
  line-height: 1;

  position: relative;
  top: -1px;

  cursor: pointer;
  flex-shrink: 0;
  margin-left: 6px;
}

.player-remove-btn:hover {
  box-shadow: 0 0 0 1px rgba(255,107,129,0.7);
}






    .stats-table-wrapper {
      width: 100%;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
    }

    .stats-table {
      border-collapse: collapse;
      font-size: 11px;
      min-width: 520px;
      width: 100%;
    }

    .stats-table thead {
      background: rgba(17,24,46,0.96);
      position: sticky;
      top: 0;
    }

    .stats-table th,
    .stats-table td {
      padding: 2px 4px;
      border-bottom: 1px solid rgba(255,255,255,0.04);
      text-align: right;
      white-space: nowrap;
    }

    .stats-table th:first-child,
    .stats-table td:first-child {
      text-align: left;
      padding-left: 0;
    }

    .stats-table th:nth-child(2),
    .stats-table td:nth-child(2) {
      text-align: left;
    }

    .stats-table tbody tr:last-child td {
      border-bottom: none;
    }

    .stats-table tbody tr:nth-child(odd) {
      background: rgba(8,12,26,0.95);
    }

    .stats-table tbody tr:nth-child(even) {
      background: rgba(4,7,20,0.9);
    }

    .section-card {
      margin-top: 10px;
      border-radius: 12px;
      background: linear-gradient(135deg, rgba(14,18,38,1), rgba(5,8,20,1));
      border: 1px solid rgba(255,255,255,0.08);
      padding: 6px 8px 8px 10px; /* left padding aligns title + table text */
    }

    .section-title {
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.14em;
      color: var(--text-soft);
      margin-bottom: 4px;
      font-weight: 700;
      text-align: left; /* align with table text */
    }

    .section-title-emphasis {
      color: #ffffff;
      font-weight: 700;
    }
    body.theme-light .section-title-emphasis {
      color: #111827;
    }

    .section-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 11px;
      min-width: 420px;
    }

    .section-table th,
    .section-table td {
      padding: 2px 4px;
      border-bottom: 1px solid rgba(255,255,255,0.04);
      text-align: right;
      white-space: nowrap;
    }

    .section-table th:first-child,
    .section-table td:first-child {
      text-align: left;
      padding-left: 0;
    }

    .section-table tbody tr:nth-child(odd) {
      background: rgba(7,10,22,0.95);
    }

    .section-table tbody tr:nth-child(even) {
      background: rgba(4,6,18,0.95);
    }

    .empty-state {
      font-size: 12px;
      color: var(--text-soft);
      margin-top: 16px;
      text-align: center;
    }

    .teams-row.expanded-home .stats-table,
    .teams-row.expanded-away .stats-table,
    .teams-row.expanded-home .section-table,
    .teams-row.expanded-away .section-table {
      font-size: 12px;
    }

    .teams-row.expanded-home .player-name,
    .teams-row.expanded-away .player-name {
      font-size: 13px;
    }

    .teams-row.expanded-home .pos-header,
    .teams-row.expanded-away .pos-header {
      font-size: 12px;
    }

    .theme-toggle {
      position: fixed;
      top: 8px;
      right: 12px;
      width: 32px;
      height: 32px;
      padding: 0;
      margin: 0;
      border: none;
      border-radius: 999px;
      background: rgba(15,23,42,0.9);
      cursor: pointer;
      z-index: 9999;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }

    .theme-toggle svg {
      width: 20px;
      height: 20px;
      color: #e5e7eb;
      fill: currentColor;
    }

    body.theme-light .theme-toggle {
      background: rgba(31,41,55,1);
    }

    body.theme-light .theme-toggle svg {
      color: #ffffff;
    }

/* CHANGE LOG TOGGLE */
.changelog-toggle {
  position: fixed;
  top: 8px;
  right: 52px; /* sits left of theme toggle */
  width: 32px;
  height: 32px;
  border-radius: 999px;
  border: none;
  background: rgba(15,23,42,0.9);
  cursor: pointer;
  z-index: 9999;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.changelog-toggle svg {
  width: 20px;   /* match theme toggle sun size */
  height: 20px;
  color: #e5e7eb; /* same as theme toggle default */
}

body.theme-light .changelog-toggle svg {
  color: #ffffff; /* match light-mode sun icon */
}

body.theme-light .changelog-toggle {
  background: rgba(31,41,55,1);
}

/* 2026-08-23 v20: per-team season rollover and player season accordions */
body.theme-single .team-history-player-card {
  overflow: hidden;
  padding-bottom: 0;
}

body.theme-single .team-history-player-header {
  margin-bottom: 0;
}

body.theme-single .player-season-section {
  border-top: 1px solid rgba(20, 33, 27, 0.13);
}

body.theme-single .player-season-header {
  display: flex;
  align-items: stretch;
  min-height: 38px;
  background: #f7f9f6;
}

body.theme-single .player-season-toggle {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 12px;
  border: 0;
  background: transparent;
  color: #1b2922;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
}

body.theme-single .player-season-section.open .player-season-header {
  background: #edf3e9;
}

body.theme-single .player-season-chevron {
  font-size: 17px;
  line-height: 1;
}

body.theme-single .team-season-fav-btn {
  flex: 0 0 34px;
  align-self: center;
  margin-right: 8px;
}

body.theme-single .team-season-fav-btn:disabled {
  cursor: default;
  opacity: 0.28;
}

body.theme-single .player-season-content {
  padding: 8px 10px 12px;
  background: #fff;
}

body.theme-single .player-season-content > .player-card {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

@media (max-width: 640px) {
  .app-shell.archive-mode .matchups-strip {
    overflow-x: auto;
    overflow-y: hidden;
  }

  .app-shell.archive-mode .matchup-pill {
    flex: 0 0 72px;
  }

  body.theme-single .player-season-content {
    padding: 6px 7px 10px;
  }
}

/* Mockup-aligned refinement (2026-08-22 v4) */
body.theme-single {
  background: #e9ece7;
}

body.theme-single .app-shell {
  width: min(100%, 1660px);
  max-width: 1660px;
  padding-inline: clamp(8px, 1.25vw, 20px);
  background: #f1f3ef;
}

body.theme-single .brand-header {
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  min-height: 86px;
  margin: 0 calc(clamp(8px, 1.25vw, 20px) * -1) 9px;
  padding: 8px clamp(14px, 2vw, 32px);
  background: #111412;
}

body.theme-single .brand-logo {
  grid-column: 1;
  justify-self: end;
  position: relative;
  overflow: hidden;
  width: clamp(72px, 6vw, 96px);
  height: clamp(46px, 4vw, 62px);
  margin-right: 8px;
}

body.theme-single .brand-logo-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

body.theme-single .brand-logo-base { filter: brightness(0) invert(1); }
body.theme-single .brand-logo-cape { clip-path: inset(0 64% 0 0); }
body.theme-single .brand-logo-r { clip-path: inset(0 0 0 65%); }

body.theme-single .brand-copy {
  grid-column: 2;
  min-width: min(42vw, 450px);
  text-align: center;
}

body.theme-single .brand-name {
  font-size: clamp(28px, 2.75vw, 44px);
  line-height: 0.96;
}

body.theme-single .brand-tagline {
  margin-top: 7px;
  color: #8acb2a;
  line-height: 1;
}

body.theme-single .brand-actions {
  gap: 8px;
}

body.theme-single .season-select,
body.theme-single .changelog-toggle {
  min-height: 36px;
  border-color: #555d57;
  background: #151917;
}

body.theme-single .season-select {
  min-width: 78px;
  padding-block: 5px;
}

body.theme-single .changelog-toggle {
  padding: 5px 12px;
}

body.theme-single .top-strip {
  gap: 2px;
  margin-bottom: 10px;
}

body.theme-single .week-label {
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.13em;
}

body.theme-single .matchups-strip {
  gap: 5px;
  padding-top: 3px;
}

body.theme-single .matchup-pill {
  min-height: 57px;
  padding: 5px 4px;
  border-radius: 8px;
  border-color: #cfd4ce;
  background: #ffffff;
}

body.theme-single .matchup-pill.active {
  border-color: #77b922;
  background: #fbfff4;
  box-shadow: inset 0 0 0 1px #77b922;
}

body.theme-single .pill-mainline {
  font-size: clamp(7px, 0.64vw, 10px);
  font-weight: 850;
}

body.theme-single .pill-small,
body.theme-single .pill-date {
  font-size: 8px;
  font-weight: 700;
}

body.theme-single .info-row {
  grid-template-columns: minmax(0, 1fr) minmax(315px, 0.84fr) minmax(0, 1fr);
  gap: 8px;
}

body.theme-single .info-center-stack {
  gap: 8px;
}

body.theme-single .info-cell {
  min-height: 0;
  padding: 11px 14px;
  border-radius: 8px;
}

body.theme-single .info-row > .info-cell {
  border-left-width: 5px;
}

body.theme-single .defense-card-header {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-height: 39px;
  margin-bottom: 7px;
  color: #202521;
  text-align: left;
}

body.theme-single .defense-team-logo {
  width: 34px;
  height: 34px;
  object-fit: contain;
}

body.theme-single .defense-card-title {
  min-width: 0;
  overflow: hidden;
  color: #202521;
  font-size: clamp(10px, 0.82vw, 13px);
  font-weight: 950;
  letter-spacing: 0.012em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.theme-single .defense-record-pill {
  min-width: 36px;
  padding: 4px 7px;
  border-radius: 5px;
  background: var(--team-accent, #414943);
  color: #ffffff;
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
  text-align: center;
}

body.theme-single #awayDefCell,
body.theme-single #homeDefCell {
  min-height: 126px;
  justify-content: flex-start;
}

body.theme-single .def-grid {
  width: 100%;
  gap: 0;
}

body.theme-single .def-grid-col {
  display: grid;
  align-content: start;
  gap: 0;
}

body.theme-single .def-grid-col-positions {
  padding-left: clamp(12px, 1.4vw, 20px);
}

body.theme-single .def-line {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 29px;
  border-bottom: 1px solid #e0e4df;
  color: #343a35;
  font-size: clamp(9px, 0.72vw, 11px);
  line-height: 1.15;
}

body.theme-single .def-line:last-child {
  border-bottom: 0;
}

body.theme-single .def-line-label {
  min-width: 0;
  font-weight: 700;
}

body.theme-single .def-line-value {
  color: #202521;
  font-weight: 900;
  white-space: nowrap;
}

body.theme-single .weather-cell {
  min-height: 102px;
  padding-block: 9px;
}

body.theme-single .odds-cell {
  min-height: 88px;
  padding-block: 8px;
}

body.theme-single .info-label {
  font-size: clamp(10px, 0.72vw, 12px);
}

body.theme-single .info-subtitle {
  margin-top: 0;
  font-size: 9px;
}

body.theme-single .weather-dome-label {
  margin-top: 9px;
}

body.theme-single .odds-grid {
  position: relative;
  row-gap: 3px;
  font-size: 10px;
}

body.theme-single .odds-status {
  grid-column: 1 / -1;
  margin-top: 3px;
  color: #7a827b;
  font-size: 9px;
  font-weight: 750;
  letter-spacing: 0.07em;
  text-align: center;
  text-transform: uppercase;
}

body.theme-single .odds-val {
  font-size: 10px;
}

body.theme-single .odds-val span:first-child {
  font-size: 9px;
}

body.theme-single .teams-row {
  gap: 10px;
  margin-top: 2px;
}

body.theme-single .team-panel-header {
  min-height: 48px;
  padding: 6px 8px 6px 10px;
  border-left-width: 5px;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(100deg, #252a27, #171a18);
}

body.theme-single .team-header-left {
  flex: 1 1 auto;
  gap: 6px;
  overflow: hidden;
}

body.theme-single .team-logo {
  width: 31px;
  height: 31px;
}

body.theme-single .team-name {
  flex: 1 1 auto;
  overflow: visible;
  font-size: clamp(10px, 0.88vw, 14px);
  letter-spacing: 0.01em;
  text-overflow: clip;
  white-space: nowrap;
}

body.theme-single .team-header-center {
  flex: 0 0 auto;
  gap: 5px;
}

body.theme-single .player-select {
  min-width: 100px;
  max-width: 116px;
  padding: 3px 7px;
  border-radius: 6px;
  font-size: 9px;
}

body.theme-single .pos-toggle-group {
  padding: 0;
  overflow: hidden;
  border-radius: 6px;
  background: #ffffff;
}

body.theme-single .pos-toggle {
  min-height: 26px;
  padding: 3px 7px;
  border-radius: 0;
  color: #252b26;
  font-size: 9px;
}

body.theme-single .pos-toggle.active {
  background: #84c52a;
  color: #18200f;
}

body.theme-single .expand-btn {
  min-width: 25px;
  min-height: 25px;
  padding: 0 5px;
}

body.theme-single .player-filter-list {
  padding: 7px 9px;
  border-left-width: 5px;
  border-radius: 0 0 8px 8px;
}

body.theme-single .visibility-pos-row {
  align-items: center;
  min-height: 23px;
  margin: 0;
  border-bottom: 1px solid #e2e5e1;
}

body.theme-single .visibility-pos-row:last-child {
  border-bottom: 0;
}

body.theme-single .visibility-pos-label {
  width: 26px;
  margin: 0;
  font-size: 9px;
  font-weight: 900;
}

body.theme-single .visibility-pos-chips {
  gap: 3px 8px;
}

body.theme-single .player-filter-item {
  max-width: none;
  padding: 1px 3px;
  border: 0;
  border-radius: 3px;
  background: transparent;
  font-size: 9px;
  font-weight: 650;
}

body.theme-single .player-filter-item input {
  width: 13px;
  height: 13px;
}

body.theme-single .team-summary-sections {
  gap: 8px;
  margin-top: 7px;
}

body.theme-single .section-card {
  margin-top: 0;
  padding: 5px 7px 7px;
  border-radius: 8px;
}

body.theme-single .section-header-row {
  min-height: 29px;
  margin-bottom: 3px;
  padding: 1px 2px;
  border-radius: 5px;
  background: #ffffff;
}

body.theme-single .section-header-left {
  gap: 6px;
}

body.theme-single .section-title {
  margin: 0;
  font-size: 10px;
  font-weight: 900;
}

body.theme-single .hit-toggle-group {
  padding: 0;
  border: 1px solid #d2d7d0;
  border-radius: 6px;
  background: #ffffff;
  overflow: hidden;
}

body.theme-single .hit-toggle {
  min-height: 24px;
  padding: 2px 7px;
  border-radius: 0;
  font-size: 8px;
}

body.theme-single .hit-toggle.active {
  border-color: #7abb22;
  background: #84c52a;
  color: #18200f;
}

body.theme-single .section-collapse-btn {
  min-width: 23px;
  min-height: 23px;
  padding: 0;
}

body.theme-single .section-table {
  min-width: 520px;
  font-size: 9px;
}

body.theme-single .section-table th,
body.theme-single .section-table td {
  padding-block: 3px;
}

body.theme-single .section-table thead,
body.theme-single .stats-table thead {
  background: #242925;
}

@media (max-width: 1180px) {
  body.theme-single .team-panel-header {
    flex-wrap: wrap;
  }

  body.theme-single .team-header-left {
    min-width: min(100%, 260px);
  }

  body.theme-single .team-header-center {
    margin-left: auto;
  }
}

@media (max-width: 800px) {
  body.theme-single .brand-header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    gap: 5px;
    padding: 8px 10px;
  }

  body.theme-single .brand-logo {
    grid-column: 1;
    grid-row: 1;
    justify-self: end;
    width: 60px;
    height: 40px;
    margin-right: 3px;
  }

  body.theme-single .brand-copy {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
  }

  body.theme-single .brand-name {
    font-size: clamp(20px, 5.5vw, 30px);
  }

  body.theme-single .brand-tagline {
    font-size: 9px;
  }

  body.theme-single .brand-actions {
    grid-column: 1 / -1;
    grid-row: 2;
    justify-self: center;
  }
}

@media (max-width: 640px) {
  body.theme-single .brand-header {
    min-height: 104px;
    margin-inline: -8px;
  }

  body.theme-single .brand-logo {
    width: 54px;
    height: 36px;
  }

  body.theme-single .brand-name {
    font-size: clamp(18px, 5.6vw, 25px);
  }

  body.theme-single .brand-tagline {
    margin-top: 5px;
    letter-spacing: 0.11em;
  }

  body.theme-single .matchup-pill {
    flex-basis: 88px;
  }

  body.theme-single .defense-card-header {
    grid-template-columns: 34px minmax(0, 1fr) auto;
  }

  body.theme-single .defense-team-logo {
    width: 30px;
    height: 30px;
  }

  body.theme-single .defense-card-title {
    white-space: normal;
  }

  body.theme-single .team-panel-header {
    align-items: center;
  }

  body.theme-single .team-header-left,
  body.theme-single .team-header-center {
    width: 100%;
  }

  body.theme-single .team-name {
    font-size: 12px;
  }

  body.theme-single .player-select {
    flex: 1 1 100px;
    max-width: none;
  }

  body.theme-single .pos-toggle-group {
    flex: 0 0 auto;
  }

  body.theme-single .pos-toggle {
    min-height: 30px;
    padding-inline: 8px;
  }

  body.theme-single .visibility-pos-row {
    flex-direction: row;
    align-items: flex-start;
  }

  body.theme-single .visibility-pos-label {
    width: 24px;
  }

  body.theme-single .player-filter-item {
    min-height: 28px;
  }
}

/* 2026-08-22 v9: supplied brand art, readable archive/injuries, and favorites rates */
body.theme-single .brand-logo {
  width: clamp(112px, 10vw, 160px);
  height: clamp(48px, 4.8vw, 70px);
  overflow: visible;
}

body.theme-single .brand-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
  transform: none;
}

body.theme-single .brand-logo::after { content: none; }

body.theme-single .brand-tagline {
  color: #fff;
  font-size: clamp(11px, .9vw, 14px);
  letter-spacing: .19em;
}

body.theme-single .brand-tagline .brand-hundred { color: #8bd020; }

body.theme-single .weather-icon-wrap,
body.theme-single .weather-icon-wrap *,
body.theme-single .weather-icon,
body.theme-single .weather-condition-symbol {
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  filter: none !important;
}

body.theme-single .player-select,
body.theme-single .player-select option {
  background: #fff !important;
  color: #111713 !important;
  opacity: 1;
}

body.theme-single .player-select option.injury-option-out,
body.theme-single .player-select.injury-option-out {
  background: #ffd7dd !important;
  color: #8f0019 !important;
  font-weight: 900;
}

body.theme-single .player-select option.injury-option-questionable,
body.theme-single .player-select option.injury-option-doubtful,
body.theme-single .player-select.injury-option-questionable,
body.theme-single .player-select.injury-option-doubtful {
  background: #ffe985 !important;
  color: #3b2c00 !important;
  font-weight: 900;
}

body.theme-single .player-filter-item.injury-out,
body.theme-single .player-filter-item.injury-questionable,
body.theme-single .player-filter-item.injury-doubtful {
  border-color: transparent;
  background: transparent;
  color: #111713;
}

body.theme-single .player-filter-name,
body.theme-single .player-name-core {
  display: inline-block;
  width: fit-content;
  border-radius: 4px;
  padding: 1px 3px;
  color: #111713;
  font-weight: 800;
}

body.theme-single .player-filter-name.injury-out,
body.theme-single .player-name-core.injury-out {
  background: #ffd7dd;
  color: #8f0019;
}

body.theme-single .player-filter-name.injury-questionable,
body.theme-single .player-filter-name.injury-doubtful,
body.theme-single .player-name-core.injury-questionable,
body.theme-single .player-name-core.injury-doubtful {
  background: #ffe985;
  color: #3b2c00;
}

.app-shell.archive-mode .archive-summary-card {
  border: 1px solid #cbd1ca;
  border-left: 4px solid var(--team-accent, #568e0f);
  background: #fff;
  color: #111713;
  box-shadow: 0 1px 2px rgba(17, 23, 19, .05);
}

.app-shell.archive-mode .archive-summary-title,
.app-shell.archive-mode .archive-ranking-group-title,
.app-shell.archive-mode .archive-leader-name,
.app-shell.archive-mode .archive-leader-stat,
.app-shell.archive-mode .archive-leader-stat strong,
.app-shell.archive-mode .archive-ranking-line,
.app-shell.archive-mode .archive-ranking-line strong,
.app-shell.archive-mode .archive-summary-empty {
  color: #111713;
}

.app-shell.archive-mode .archive-summary-title {
  color: var(--team-accent, #315d12);
  font-weight: 900;
}

.app-shell.archive-mode .archive-leader-pos,
.app-shell.archive-mode .archive-ranking-group-title {
  color: var(--team-accent, #315d12);
  font-weight: 900;
}

.app-shell.archive-mode .archive-leader-row,
.app-shell.archive-mode .archive-ranking-group-title {
  border-color: #dfe3de;
}

body.theme-single .stats-table th:first-child,
body.theme-single .stats-table td:first-child {
  padding-left: 10px;
  text-align: left;
}

body.theme-single .stats-table th:nth-child(2),
body.theme-single .stats-table td:nth-child(2) { text-align: center; }

body.theme-single .stats-table th:nth-child(n+3),
body.theme-single .stats-table td:nth-child(n+3) { text-align: right; }

body.theme-single .fav-row {
  grid-template-columns: minmax(135px, 1.45fr) minmax(92px, .9fr) 104px 52px 28px;
}

body.theme-single .fav-hit-rate {
  min-width: 46px;
  padding: 4px 5px;
  border-radius: 6px;
  text-align: center;
  font-size: 11px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}

body.theme-single .fav-hit-rate.rate-green { background: #68b81e; color: #0d1a08; }
body.theme-single .fav-hit-rate.rate-black { background: #161b17; color: #fff; }
body.theme-single .fav-hit-rate.rate-yellow { background: #ffe168; color: #2e2500; }
body.theme-single .fav-hit-rate.rate-red { background: #c51f2f; color: #fff; }
body.theme-single .fav-hit-rate.empty { background: #eef1ed; color: #777f78; }

@media (max-width: 800px) {
  body.theme-single .brand-logo { width: 94px; height: 48px; }
}

@media (max-width: 640px) {
  body.theme-single .brand-logo { width: 72px; height: 38px; }
  body.theme-single .fav-row {
    grid-template-columns: minmax(100px, 1.3fr) minmax(74px, .9fr) 76px 44px 26px;
    gap: 4px;
  }
}

/* Option E: single-theme production layout (2026-08-22) */
body.theme-single {
  --bg-body: #e8ebe6;
  --bg-main: #eef0ec;
  --bg-panel: #ffffff;
  --accent: #79bd19;
  --accent-strong: #568e0f;
  --accent-soft: rgba(121, 189, 25, 0.17);
  --accent-soft2: rgba(121, 189, 25, 0.10);
  --text-main: #1d211e;
  --text-soft: #5f675f;
  --border-soft: #d3d8d1;
  margin: 0;
  color: var(--text-main);
  background: #e8ebe6;
}

body.theme-single .app-shell {
  width: min(100%, 1640px);
  max-width: 1640px;
  margin: 0 auto;
  padding: 0 clamp(10px, 1.7vw, 26px) 28px;
  border: 0;
  border-radius: 0;
  background: #eef0ec;
  box-shadow: none;
}

body.theme-single .brand-header {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 16px;
  min-height: 104px;
  margin: 0 calc(clamp(10px, 1.7vw, 26px) * -1) 12px;
  padding: 12px clamp(14px, 2.3vw, 34px);
  border: 0;
  background: linear-gradient(115deg, #0d100e, #171b18 58%, #0d100e);
  color: #ffffff;
}

body.theme-single .brand-logo {
  grid-column: 1;
  justify-self: end;
  width: clamp(60px, 5.2vw, 82px);
  height: clamp(60px, 5.2vw, 82px);
  margin-right: 2px;
  object-fit: contain;
}

body.theme-single .brand-copy {
  grid-column: 2;
  min-width: min(45vw, 520px);
  text-align: center;
}

body.theme-single .brand-name {
  color: #ffffff;
  font-size: clamp(27px, 3vw, 48px);
  letter-spacing: -0.035em;
  white-space: nowrap;
}

body.theme-single .brand-tagline {
  margin-top: 7px;
  color: #8acb2a;
  font-size: clamp(11px, 1vw, 15px);
  letter-spacing: 0.2em;
  text-align: center;
}

body.theme-single .brand-tagline span {
  position: relative;
  display: inline-block;
  padding-bottom: 3px;
}

body.theme-single .brand-tagline span::before,
body.theme-single .brand-tagline span::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 7%;
  height: 2px;
  border-radius: 999px;
  background: currentColor;
}

body.theme-single .brand-tagline span::before { bottom: 1px; }
body.theme-single .brand-tagline span::after { bottom: -3px; left: 15%; right: 0; transform: rotate(-3deg); }

body.theme-single .brand-actions {
  grid-column: 3;
  justify-self: end;
  display: flex;
  flex-wrap: nowrap;
  gap: 10px;
}

.season-select-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

body.theme-single .season-select,
body.theme-single .changelog-toggle {
  position: relative;
  min-height: 40px;
  border: 1px solid #4d554f;
  border-radius: 8px;
  background: #171b18;
  color: #ffffff;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
}

body.theme-single .season-select { min-width: 88px; padding: 7px 30px 7px 12px; }

body.theme-single .changelog-toggle {
  width: auto;
  padding: 7px 13px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

body.theme-single .changelog-toggle svg { width: 18px; height: 18px; }
body.theme-single .theme-toggle,
body.theme-single .season-switch { display: none !important; }

body.theme-single .top-strip { margin-bottom: 12px; }
body.theme-single .week-label,
body.theme-single .week-arrow { color: #1f2521; }
body.theme-single .matchups-strip { gap: 6px; }

body.theme-single .matchup-pill {
  border: 1px solid #cbd1ca;
  background: #fbfcfa;
  color: #222823;
  box-shadow: 0 1px 2px rgba(19, 25, 20, 0.05);
}

body.theme-single .matchup-pill:hover { background: #f2f5f0; }
body.theme-single .matchup-pill.active {
  border-color: #72b51a;
  background: #f7fbed;
  box-shadow: inset 0 0 0 1px #72b51a;
}

body.theme-single .info-row {
  grid-template-columns: minmax(0, 1fr) minmax(320px, 0.82fr) minmax(0, 1fr);
  align-items: stretch;
  gap: 10px;
}

body.theme-single .info-center-stack {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: minmax(0, auto) minmax(0, auto);
  gap: 10px;
}

body.theme-single .info-cell {
  position: relative;
  padding: 13px 15px;
  border: 1px solid #d2d7d0;
  border-radius: 10px;
  background: #ffffff;
  color: #252b26;
  box-shadow: 0 1px 2px rgba(25, 33, 27, 0.045);
}

body.theme-single .info-row > .info-cell {
  border-left: 6px solid var(--team-accent, #4b554d);
}

body.theme-single .info-label {
  color: #242a25;
  font-size: clamp(11px, 0.82vw, 13px);
  font-weight: 900;
  letter-spacing: 0.1em;
  text-align: center;
}

body.theme-single .info-subtitle {
  min-height: 15px;
  margin-top: 2px;
  color: #687068;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: 0.1em;
  text-align: center;
}

body.theme-single .weather-label-alert { color: #c0262d; }
body.theme-single .weather-label-cold { color: #1d61a8; }

body.theme-single .weather-cell { min-height: 118px; }
body.theme-single .weather-content { gap: 7px; }
body.theme-single .weather-quarter-row { flex-wrap: nowrap; justify-content: center; gap: 8px; }
body.theme-single .weather-quarter-group { gap: 5px; }

body.theme-single .weather-quarter-btn {
  min-height: 25px;
  border: 1px solid #cbd1ca;
  border-radius: 999px;
  background: #f1f3ef;
  color: #3f4740;
  font-size: 9px;
  font-weight: 850;
}

body.theme-single .weather-quarter-btn.active {
  border-color: #69aa17;
  background: #78bb1d;
  color: #ffffff;
}

body.theme-single .weather-icon-wrap { min-width: 32px; }
body.theme-single .weather-condition-symbol { font-size: 27px; }
body.theme-single .weather-icon { width: 30px; height: 30px; }
body.theme-single .weather-text {
  justify-content: center;
  color: #252b26;
  font-size: 12px;
  font-weight: 750;
}

body.theme-single .weather-dome-label {
  margin-top: 14px;
  color: #525b53;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.18em;
  text-align: center;
}

body.theme-single .odds-cell { min-height: 100px; }
body.theme-single .odds-grid {
  grid-template-columns: minmax(40px, auto) repeat(3, minmax(52px, 1fr));
  color: #252b26;
}
body.theme-single .odds-hcell { color: #657066; }
body.theme-single .odds-implied { color: #568e0f; }

body.theme-single #awayDefCell,
body.theme-single #homeDefCell {
  min-height: 145px;
  justify-content: center;
}

body.theme-single .def-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(12px, 1.6vw, 24px);
}

body.theme-single .def-grid-col {
  display: grid;
  align-content: space-evenly;
  gap: 9px;
  min-width: 0;
}

body.theme-single .def-grid-col-positions {
  padding-left: clamp(12px, 1.4vw, 22px);
  border-left: 1px solid #d7dcd5;
}

body.theme-single .def-line {
  color: #343a35;
  font-size: clamp(11px, 0.78vw, 13px);
  font-weight: 650;
  line-height: 1.25;
  white-space: nowrap;
}

body.theme-single .teams-row { gap: 14px; }

body.theme-single .team-panel-header {
  position: relative;
  min-height: 58px;
  padding: 8px 10px 8px 13px;
  border: 1px solid #303631;
  border-left: 6px solid var(--team-accent, #445047);
  border-radius: 9px 9px 0 0;
  background: linear-gradient(100deg, #202522, #171a18);
  color: #ffffff;
  box-shadow: none;
}

body.theme-single .team-logo { width: 39px; height: 39px; }
body.theme-single .team-name {
  min-width: 0;
  overflow: hidden;
  color: #ffffff;
  font-size: clamp(12px, 1.05vw, 16px);
  font-weight: 900;
  letter-spacing: 0.025em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.theme-single .player-select,
body.theme-single .opponent-filter {
  border-color: #58605a;
  background: #ffffff;
  color: #252b26;
}

body.theme-single .pos-toggle-group { border-color: #4f5751; background: #111512; }
body.theme-single .pos-toggle { color: #d8ddd8; }
body.theme-single .pos-toggle.active { background: #79bd19; color: #111512; }
body.theme-single .expand-btn { border-color: #59615b; color: #ffffff; background: #111512; }

body.theme-single .player-filter-list {
  margin-top: 0;
  padding: 9px 11px;
  border: 1px solid #d2d7d0;
  border-top: 0;
  border-left: 6px solid var(--team-accent, #445047);
  border-radius: 0 0 9px 9px;
  background: #fbfcfa;
}

body.theme-single .visibility-pos-label { color: #353c36; }
body.theme-single .player-filter-item {
  border-color: #d3d8d2;
  background: #f1f3ef;
  color: #303631;
}
body.theme-single .player-filter-item input { accent-color: var(--team-accent, #568e0f); }

body.theme-single .team-summary-sections {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 9px;
  margin-top: 10px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

body.theme-single .team-summary-sections .section-card { width: 100%; }
body.theme-single .section-card,
body.theme-single .player-card,
body.theme-single .position-section {
  border-color: #d1d7d0;
  background: #ffffff;
  color: #252b26;
  box-shadow: 0 1px 2px rgba(25, 33, 27, 0.04);
}

body.theme-single .section-title,
body.theme-single .section-title-emphasis { color: #252b26; }
body.theme-single .section-header-row { background: #e9eee6; }
body.theme-single .section-collapse-btn {
  border-color: #bfc7bf;
  background: #ffffff;
  color: #303731;
}

body.theme-single .hit-toggle {
  border-color: #c9d0c8;
  background: #ffffff;
  color: #424a43;
}
body.theme-single .hit-toggle.active { border-color: #75b91c; background: #79bd19; color: #14200d; }

body.theme-single .section-table thead,
body.theme-single .stats-table thead { background: #202522; color: #ffffff; }
body.theme-single .section-table tbody tr:nth-child(odd),
body.theme-single .stats-table tbody tr:nth-child(odd) { background: #ffffff; }
body.theme-single .section-table tbody tr:nth-child(even),
body.theme-single .stats-table tbody tr:nth-child(even) { background: #f2f4f1; }

body.theme-single .position-section { margin-top: 11px; }
body.theme-single .pos-header {
  border-left: 5px solid var(--team-accent, #445047);
  background: #e7ece4;
  color: #252b26;
}

body.theme-single .player-split-controls { background: #edf1ea; }
body.theme-single .player-period-btn {
  border-color: #c7cec6;
  background: #ffffff;
  color: #374038;
}
body.theme-single .player-period-btn.active { border-color: #72b51a; background: #79bd19; color: #14200d; }

body.theme-single .player-fav-btn.active,
body.theme-single .fav-stat-btn.active { border-color: #75b91c; color: #568e0f; background: #eef7df; }

body.theme-single .fav-panel {
  border-color: #515a53;
  background: #171b18;
  color: #ffffff;
}
body.theme-single .fav-panel-header { background: #202522; }
body.theme-single .fav-row { border-color: #444c46; background: #111512; }

body.theme-single .changelog-modal { background: #f7f8f5; color: #252b26; }
body.theme-single .changelog-header { background: #171b18; color: #ffffff; }
body.theme-single .changelog-entry { border-color: #d2d7d0; background: #ffffff; }

@media (max-width: 1100px) {
  body.theme-single .info-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.theme-single .info-center-stack { grid-column: 1 / -1; grid-row: 1; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 800px) {
  body.theme-single .brand-header {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 8px 12px;
    min-height: 0;
    padding-block: 13px;
  }
  body.theme-single .brand-logo { grid-column: 1; grid-row: 1; width: 58px; height: 58px; margin: 0; }
  body.theme-single .brand-copy { display: block; grid-column: 2; grid-row: 1; min-width: 0; text-align: center; }
  body.theme-single .brand-name { font-size: clamp(22px, 6.6vw, 34px); }
  body.theme-single .brand-actions { grid-column: 1 / -1; grid-row: 2; justify-self: center; }
  body.theme-single .changelog-toggle span { display: inline; }
  body.theme-single .team-panel-header { align-items: center; }
}

@media (max-width: 640px) {
  body.theme-single .app-shell { padding-inline: 8px; }
  body.theme-single .brand-header { margin-inline: -8px; }
  body.theme-single .brand-tagline { letter-spacing: 0.12em; }
  body.theme-single .info-row,
  body.theme-single .info-center-stack { grid-template-columns: minmax(0, 1fr); }
  body.theme-single .info-center-stack { grid-column: auto; grid-row: auto; }
  body.theme-single .def-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  body.theme-single .def-grid-col-positions { padding-left: 8px; }
  body.theme-single .def-line { font-size: 10px; white-space: normal; }
  body.theme-single .weather-quarter-row { gap: 4px; }
  body.theme-single .weather-quarter-group { gap: 3px; }
  body.theme-single .weather-quarter-btn { min-height: 28px; padding-inline: 8px; }
  body.theme-single .team-panel-header { align-items: stretch; }
  body.theme-single .team-header-center { width: 100%; }
  body.theme-single .team-name { font-size: 13px; }
  body.theme-single .player-filter-list { padding-inline: 8px; }
  body.theme-single .team-summary-sections { gap: 8px; }
}

/* 2026 live season / 2025 frozen archive selector */
.season-switch {
  position: fixed;
  top: 8px;
  right: 92px;
  z-index: 9999;
  display: inline-flex;
  padding: 2px;
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 999px;
  background: rgba(15,23,42,0.94);
}

.season-option {
  border: 0;
  border-radius: 999px;
  padding: 6px 10px;
  background: transparent;
  color: #aeb8d0;
  cursor: pointer;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.season-option.active {
  background: var(--accent-soft2);
  color: var(--accent);
}

body.theme-light .season-switch {
  background: #ffffff;
  border-color: #000000;
}

body.theme-light .season-option { color: #374151; }
body.theme-light .season-option.active { background: #e5e7eb; color: #111827; }

.app-shell.archive-mode .info-row { display: none !important; }
.app-shell.archive-mode .week-nav { display: none; }
.app-shell.archive-mode .teams-row { grid-template-columns: 1fr; }
.app-shell.archive-mode .team-panel[data-side="away"] { display: none; }
.app-shell.archive-mode .team-panel[data-side="home"] { grid-column: 1 / -1; }
.app-shell.archive-mode #homeExpandBtn { display: none; }
.app-shell.archive-mode .matchups-strip {
  display: grid;
  grid-template-columns: repeat(16, minmax(0, 1fr));
  gap: 6px;
  max-height: none;
  overflow: visible;
}
.app-shell.archive-mode .matchup-pill {
  width: 100%;
  min-width: 0;
  min-height: 48px;
  padding: 5px 3px;
}
.app-shell.archive-mode .pill-mainline {
  display: flex;
  align-items: center;
  justify-content: center;
}
.archive-team-menu-logo {
  width: 34px;
  height: 34px;
  display: block;
  object-fit: contain;
}
.app-shell.archive-mode .archive-overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(330px, 1fr) minmax(340px, 1fr);
  gap: 8px;
  align-items: stretch;
}
.app-shell.archive-mode .archive-summary-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border-radius: 12px;
  background: radial-gradient(circle at top left, rgba(19,26,48,0.96), rgba(5,8,18,0.96));
  border: 1px solid rgba(255,255,255,0.06);
  padding: 7px 9px;
}
.archive-summary-title {
  color: #ffffff;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-bottom: 5px;
  text-align: center;
  width: 100%;
}
.archive-leader-row,
.archive-ranking-row {
  display: grid;
  align-items: center;
  gap: 6px;
  min-height: 24px;
  border-top: 1px solid rgba(255,255,255,0.05);
}
.archive-leader-row {
  grid-template-columns: 28px minmax(90px, 0.8fr) minmax(0, 1.45fr);
}
.archive-leader-pos,
.archive-ranking-label {
  color: var(--accent);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.08em;
}
.archive-leader-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  font-weight: 650;
}
.archive-ranking-value { white-space: nowrap; }
.archive-leader-stats {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
  gap: 3px 7px;
  min-width: 0;
  font-size: 9px;
  text-align: right;
}
.archive-leader-stat {
  white-space: nowrap;
}
.archive-leader-stat strong {
  color: #ffffff;
  font-size: 10px;
}
.archive-ranking-group-title {
  color: #ffffff;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-align: center;
  margin-top: 2px;
  padding: 4px 0 3px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.archive-ranking-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: 12px;
  row-gap: 4px;
  font-size: 9px;
  line-height: 1.4;
}
.archive-ranking-col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.archive-ranking-line {
  color: var(--text-main);
  white-space: nowrap;
}
.archive-ranking-line strong {
  color: #ffffff;
  font-size: inherit;
  font-weight: 700;
}
.archive-ranking-value strong {
  color: #ffffff;
  font-size: 13px;
  margin-right: 4px;
}
.archive-summary-empty {
  color: var(--text-soft);
  font-size: 10px;
  padding: 5px 0;
}
body.theme-light .archive-summary-card {
  background: #ffffff !important;
  border-color: #000000 !important;
}
body.theme-light .archive-summary-title,
body.theme-light .archive-ranking-value strong,
body.theme-light .archive-leader-stat strong,
body.theme-light .archive-ranking-group-title,
body.theme-light .archive-ranking-line strong {
  color: #111827;
}

@media (max-width: 980px) {
  .app-shell.archive-mode .archive-overview-grid {
    grid-template-columns: 1fr 1fr;
  }
  .app-shell.archive-mode .player-filter-list {
    grid-column: 1 / -1;
  }
}

@media (max-width: 720px) {
  .app-shell.archive-mode .archive-overview-grid {
    grid-template-columns: 1fr;
  }
  .app-shell.archive-mode .player-filter-list {
    grid-column: auto;
  }
}

@media (max-width: 640px) {
  .season-switch { right: 92px; }
  .season-option { padding: 6px 7px; }
}

/* OVERLAY */
.changelog-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.65);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}

/* MODAL */
.changelog-modal {
  width: 100%;
  max-width: 620px;
  max-height: 70vh;
  background: linear-gradient(135deg, rgba(14,18,38,1), rgba(5,8,20,1));
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 30px 80px rgba(0,0,0,0.8);
  display: flex;
  flex-direction: column;
}

/* HEADER */
.changelog-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.changelog-title {
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 700;
}

.changelog-close {
  border: none;
  background: transparent;
  color: var(--text-main);
  font-size: 14px;
  cursor: pointer;
}

/* BODY */
.changelog-body {
  padding: 10px 14px;
  overflow-y: auto;
  font-size: 12px;
}

/* ENTRY */
.changelog-entry {
  margin-bottom: 14px;
}

.changelog-date {
  font-weight: 700;
  margin-bottom: 4px;
}

.changelog-list {
  padding-left: 16px;
  margin: 0;
}

.changelog-list li {
  margin-bottom: 4px;
}


    body.theme-light .player-select {
      background: #ffffff;
      color: #111827;
      border-color: #000000;
    }

    body.theme-light .player-select option {
      background: #ffffff;
      color: #111827;
    }

    body.theme-light .player-select option.injury-option-out,
    body.theme-light .player-select.injury-option-out {
      color: #b91c1c;
    }

    body.theme-light .player-select option.injury-option-questionable,
    body.theme-light .player-select.injury-option-questionable {
      color: #a16207;
    }

    body.theme-light .player-select option.injury-option-doubtful,
    body.theme-light .player-select.injury-option-doubtful {
      color: #c2410c;
    }

    body.theme-light .pos-toggle-group {
      background: #ffffff;
      border-color: #000000;
    }

    body.theme-light .pos-toggle {
      color: #111827;
    }

    body.theme-light .pos-toggle.active {
      background: #e5e7eb;
      color: #111827;
    }

    body.theme-light .expand-btn {
      background: #ffffff;
      color: #111827;
      border-color: #000000;
    }

    .section-header-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      margin-bottom: 4px;
      flex-wrap: wrap;
    }

    .section-header-left {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }

    .hit-toggle-group {
      display: inline-flex;
      border-radius: 999px;
      padding: 1px;
      background: rgba(5, 10, 25, 0.9);
      border: 1px solid var(--border-soft);
    }

    .hit-toggle {
      font-size: 10px;
      padding: 3px 7px;
      border-radius: 999px;
      border: none;
      background: transparent;
      color: var(--text-soft);
      cursor: pointer;
      font-weight: 600;
      white-space: nowrap;
    }

    .hit-toggle.active {
      background: var(--accent-soft2);
      color: var(--accent);
      font-weight: 600;
    }

    body.theme-light .hit-toggle-group {
      background: #ffffff;
      border-color: #000000;
    }

    body.theme-light .hit-toggle {
      color: #111827;
    }

    body.theme-light .hit-toggle.active {
      background: #e5e7eb;
      color: #111827;
    }

    /* UPDATED: COLLAPSE BUTTON BACK TO PLUS/MINUS TEXT */
    .section-collapse-btn {
      font-size: 12px;
      border-radius: 999px;
      border: 1px solid var(--border-soft);
      background: rgba(5,10,25,0.96);
      color: var(--text-main);
      padding: 0 8px;
      cursor: pointer;
      white-space: nowrap;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 22px;
      min-height: 22px;
      line-height: 1;
    }

    .section-collapse-btn:hover {
      border-color: var(--accent);
      box-shadow: 0 0 0 1px rgba(30,144,255,0.3);
    }

    body.theme-light .section-collapse-btn {
      background: #ffffff;
      color: #111827;
      border-color: #000000;
    }

    @media (max-width: 1024px) {
      .teams-row {
        grid-template-columns: 1fr;
        min-height: 0;
      }
      .info-row {
        grid-template-columns: 1fr;
      }
      .info-body-left,
      .info-body-right,
      .info-body-center {
        justify-content: center;
      }
      .info-cell-center .weather-text {
        align-items: center;
        text-align: center;
      }
      .loading-state {
        position: fixed;
      }
      .team-header-center {
        flex-wrap: wrap;
        justify-content: flex-start;
      }
    }

    @media (max-width: 800px) {
      .app-shell {
        margin: 8px;
        padding: 10px;
      }
      .team-panel-header {
        flex-direction: column;
        align-items: flex-start;
        flex-wrap: wrap;
      }
      .expand-btn {
        align-self: flex-end;
      }
    }

    @media (max-width: 768px) {
      .matchups-strip {
        flex-wrap: wrap;
        justify-content: center;
      }
      .matchup-pill {
        flex: 0 0 auto;
        min-width: 64px;
        white-space: nowrap;
        padding: 4px 6px;
        font-size: 9px;
      }

      .stats-table,
      .section-table {
        min-width: 100%;
      }
    }

    @media (max-width: 640px) {
      .weather-quarter-row {
        gap: 10px;
        flex-wrap: wrap;
      }
    }

    /* Favorites / Props Builder */
    .fav-panel {
      position: fixed;
      left: 50%;
      bottom: 0;
      transform: translateX(-50%);
      width: min(560px, calc(100vw - 28px));
      max-height: 70vh;
      z-index: 12001;
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 16px 16px 0 0;
      background: linear-gradient(135deg, rgba(14,18,38,1), rgba(5,8,20,1));
      box-shadow: 0 30px 80px rgba(0,0,0,0.8);
      display: none;
      overflow: hidden;
    }

    .fav-panel.collapsed {
      max-height: 54px;
      box-shadow: 0 12px 40px rgba(0,0,0,0.55);
    }

    .fav-panel.collapsed .fav-panel-body,
    .fav-panel.collapsed .fav-panel-actions {
      display: none;
    }

    body.theme-light .fav-panel {
      background: #ffffff;
      border-color: #000000;
      box-shadow: 0 24px 60px rgba(15,23,42,0.22);
    }

    .fav-panel-header {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 52px;
      padding: 10px 12px;
      border-bottom: 1px solid rgba(255,255,255,0.08);
    }

    body.theme-light .fav-panel-header { border-bottom-color: #000000; }

    .fav-panel-title {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-size: 12px;
      font-weight: 800;
      letter-spacing: 0.16em;
      text-transform: uppercase;
    }

    .fav-panel-sub {
      font-size: 10px;
      opacity: 0.85;
      letter-spacing: 0.10em;
    }

    .fav-panel-actions { display: inline-flex; align-items: center; gap: 8px; }

    .fav-btn {
      border-radius: 999px;
      border: 1px solid rgba(255,255,255,0.16);
      background: rgba(5,10,25,0.96);
      color: var(--text-main);
      padding: 5px 10px;
      cursor: pointer;
      font-size: 10px;
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }

    .fav-btn:hover,
    .player-fav-btn:hover,
    .fav-stat-btn:hover {
      border-color: var(--accent);
      color: var(--accent);
      box-shadow: 0 0 0 1px rgba(30,144,255,0.25);
    }

    body.theme-light .fav-btn,
    body.theme-light .player-fav-btn,
    body.theme-light .fav-stat-btn {
      background: #ffffff;
      color: #111827;
      border-color: #000000;
    }

    .fav-panel-body {
      padding: 10px 12px 12px;
      max-height: calc(70vh - 52px);
      overflow: auto;
    }

    .fav-empty {
      padding: 18px 6px;
      color: var(--text-soft);
      font-size: 12px;
      text-align: center;
    }

    .fav-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 140px 150px 32px;
      gap: 6px;
      align-items: center;
      margin-bottom: 8px;
      padding: 7px 8px;
      border: 1px solid rgba(255,255,255,0.06);
      border-radius: 12px;
      background: rgba(8,12,26,0.55);
    }

    body.theme-light .fav-row { background: #f3f4f6; border-color: #000000; }
    .fav-label { display: flex; flex-direction: column; gap: 2px; min-width: 0; }

    .fav-main,
    .fav-sub,
    .fav-stat-type {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    .fav-main { font-size: 12px; font-weight: 700; }

    .fav-sub,
    .fav-stat-type {
      color: var(--text-soft);
      font-size: 10px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .fav-stat-type { font-size: 11px; font-weight: 700; }

    .fav-input {
      width: 100%;
      max-width: 150px;
      padding: 6px 4px;
      border: 1px solid rgba(255,255,255,0.14);
      border-radius: 999px;
      outline: none;
      background: rgba(5,10,25,0.96);
      color: var(--text-main);
      font-size: 12px;
      font-variant-numeric: tabular-nums;
      text-align: center;
    }

    .fav-input::placeholder { color: var(--text-soft); }
    body.theme-light .fav-input { background: #ffffff; color: #111827; border-color: #000000; }

    .fav-collapse {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      padding: 2px 10px;
      border: 0;
      background: transparent;
      color: var(--text-main);
      cursor: pointer;
      line-height: 1;
      opacity: 0.9;
    }

    .fav-collapse:hover { opacity: 1; }
    .fav-collapse svg { width: 22px; height: 22px; stroke: currentColor; stroke-width: 2.6; fill: none; stroke-linecap: round; stroke-linejoin: round; }

    .fav-remove {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 30px;
      height: 26px;
      border: 1.5px solid rgba(255,107,129,0.9);
      border-radius: 999px;
      background: rgba(76,17,32,0.96);
      color: #ffd6dd;
      cursor: pointer;
      font-size: 12px;
    }

    .player-fav-btn,
    .fav-stat-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: 1px solid rgba(255,255,255,0.16);
      border-radius: 999px;
      background: rgba(5,10,25,0.96);
      color: var(--text-main);
      cursor: pointer;
      line-height: 1;
    }

    .player-fav-btn { width: 24px; height: 19px; margin-right: 8px; flex-shrink: 0; font-size: 12px; }
    .player-fav-btn.active { border-color: var(--accent); background: var(--accent-soft2); color: var(--accent); box-shadow: 0 0 0 1px rgba(30,144,255,0.25); }
    .fav-stat-btn { width: 16px; height: 16px; margin-left: 6px; font-size: 11px; vertical-align: middle; }

    @media (max-width: 640px) {
      .fav-panel { width: calc(100vw - 12px); }
      .fav-row { grid-template-columns: minmax(0, 1fr) 90px 92px 30px; }
      .fav-panel-title { letter-spacing: 0.10em; }
    }

/* Hit Rate Hero rebrand and responsive layout */
:root {
  --bg-body: radial-gradient(circle at 20% 0%, #17210c 0, #080b08 32%, #020302 100%);
  --bg-main: #050705;
  --bg-panel: #0d120d;
  --accent: #91e900;
  --accent-strong: #b5ff31;
  --accent-soft: rgba(145, 233, 0, 0.20);
  --accent-soft2: rgba(145, 233, 0, 0.12);
  --text-main: #f7f9f4;
  --text-soft: #b6c0ad;
  --border-soft: #293127;
}

body {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.45;
}

body.theme-light {
  --bg-body: radial-gradient(circle at top, #f5ffe7 0%, #edf3e8 55%, #e4eadf 100%);
  --bg-panel: #f7faf4;
  --accent: #4d8f00;
  --accent-strong: #356600;
  --accent-soft: rgba(77, 143, 0, 0.18);
  --accent-soft2: rgba(77, 143, 0, 0.10);
  --text-main: #15200f;
  --text-soft: #53604c;
  --border-soft: #c8d2c1;
}

.app-shell {
  max-width: 1560px;
  padding: 18px clamp(12px, 2vw, 28px) 24px;
  background:
    linear-gradient(180deg, rgba(145,233,0,0.055), transparent 180px),
    #050705;
  border-color: rgba(145, 233, 0, 0.20);
}

.brand-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-width: 0;
  padding: 2px 0 12px;
  border-bottom: 1px solid rgba(145, 233, 0, 0.22);
}

.brand-lockup,
.brand-actions {
  display: flex;
  align-items: center;
}

.brand-lockup {
  gap: 14px;
  min-width: 0;
}

.brand-logo {
  display: block;
  width: clamp(72px, 8vw, 112px);
  height: clamp(72px, 8vw, 112px);
  object-fit: contain;
  flex: 0 0 auto;
}

.brand-copy { min-width: 0; }

.brand-name {
  color: var(--text-main);
  font-size: clamp(24px, 3.2vw, 46px);
  font-weight: 950;
  font-style: italic;
  letter-spacing: -0.045em;
  line-height: 0.98;
  text-transform: uppercase;
}

.brand-tagline {
  margin-top: 7px;
  color: var(--accent);
  font-size: clamp(10px, 1.1vw, 14px);
  font-weight: 850;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.brand-actions {
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.brand-actions .season-switch,
.brand-actions .changelog-toggle,
.brand-actions .theme-toggle {
  position: static;
  inset: auto;
  z-index: auto;
  margin: 0;
}

.brand-actions .changelog-toggle,
.brand-actions .theme-toggle {
  width: 38px;
  height: 38px;
  border: 1px solid var(--border-soft);
  background: #10150e;
}

.season-switch {
  border-color: var(--border-soft);
  background: #10150e;
}

.season-option.active,
.pos-toggle.active,
.hit-toggle.active,
.weather-quarter-btn.active {
  color: var(--accent-strong);
}

.matchup-pill.active {
  border-color: var(--accent);
  background: linear-gradient(135deg, rgba(145,233,0,0.16), rgba(4,8,5,1));
  box-shadow: 0 0 0 1px rgba(145,233,0,0.28);
}

.info-row {
  grid-template-columns: minmax(0, 1fr) minmax(340px, 1.35fr) minmax(0, 1fr);
  gap: 10px;
}

.info-center-stack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  min-width: 0;
}

.info-cell {
  min-width: 0;
  padding: 10px 12px;
  border-color: rgba(145, 233, 0, 0.14);
  overflow: hidden;
}

.info-label {
  color: var(--accent);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: 0.13em;
  white-space: normal;
}

.weather-content,
.weather-quarter-row,
.weather-text,
.weather-quarter-group {
  min-width: 0;
  max-width: 100%;
}

.weather-text {
  flex-wrap: wrap;
  white-space: normal;
}

.weather-quarter-row { flex-wrap: wrap; }

.odds-grid {
  grid-template-columns: minmax(42px, auto) repeat(3, minmax(58px, 1fr));
  column-gap: 8px;
}

.odds-val {
  display: flex;
  flex-direction: column;
  align-items: center;
  line-height: 1.2;
}

.odds-implied {
  color: var(--accent);
  font-size: 9px;
  font-weight: 800;
}

.def-grid {
  width: 100%;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
}

#awayDefCell,
#homeDefCell {
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
}

.def-line { white-space: normal; }

.defense-detail-toggle {
  width: 100%;
  margin-top: 8px;
  border: 0;
  border-top: 1px solid var(--border-soft);
  background: transparent;
  color: var(--accent);
  padding: 8px 6px 0;
  cursor: pointer;
  font: inherit;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.defense-detail-toggle span {
  display: inline-block;
  margin-left: 5px;
  transition: transform 0.16s ease;
}

.defense-detail-toggle[aria-expanded="true"] span { transform: rotate(180deg); }

.defense-position-detail {
  display: none;
  width: 100%;
  margin-top: 8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.defense-position-detail.expanded { display: grid; }

.defense-position-line {
  padding: 7px 8px;
  border-radius: 8px;
  background: rgba(145, 233, 0, 0.07);
  color: var(--text-main);
  font-size: 11px;
}

.defense-position-line strong { color: var(--accent); }

.teams-row { gap: clamp(14px, 2vw, 24px); }

.teams-row,
.team-panel,
.team-panel-header,
.player-filter-list,
.team-body-scroll,
.team-summary-sections,
.position-section,
.stats-table-wrapper {
  min-width: 0;
}

.team-panel,
body.theme-light .team-panel {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.team-panel-header {
  min-height: 62px;
  padding: 8px 10px;
  border: 1px solid rgba(145, 233, 0, 0.18);
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(145,233,0,0.09), rgba(10,14,9,0.96));
}

.team-logo {
  width: clamp(38px, 4vw, 50px);
  height: clamp(38px, 4vw, 50px);
}

.team-name {
  font-size: clamp(14px, 1.25vw, 18px);
  font-weight: 850;
  letter-spacing: 0.045em;
}

.team-summary-sections {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  padding: 10px;
  border: 1px solid rgba(145, 233, 0, 0.14);
  border-radius: 14px;
  background: rgba(9, 12, 8, 0.76);
}

.team-summary-sections .section-card { margin-top: 0; }

.position-section {
  margin-top: 12px;
  padding: 0 10px 10px;
  border: 1px solid rgba(145, 233, 0, 0.18);
  border-radius: 14px;
  background: rgba(8, 11, 7, 0.72);
  overflow: hidden;
}

.pos-header {
  margin: 0 -10px 10px;
  padding: 8px 12px;
  border: 0;
  background: linear-gradient(90deg, rgba(145,233,0,0.24), rgba(145,233,0,0.04));
  color: var(--accent-strong);
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.18em;
}

.section-card,
.player-card {
  border-color: rgba(145, 233, 0, 0.14);
  background: linear-gradient(135deg, rgba(17,22,15,1), rgba(7,9,6,1));
}

.section-title,
.section-title-emphasis { color: var(--accent-strong); }

.player-card { padding: 10px; }
.player-name { font-size: 14px; font-weight: 800; }

.player-split-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin: 2px 0 8px;
  padding: 7px;
  border-radius: 10px;
  background: rgba(145, 233, 0, 0.06);
}

.player-period-group {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 3px;
}

.player-period-btn,
.opponent-filter {
  min-height: 32px;
  border: 1px solid var(--border-soft);
  border-radius: 8px;
  background: #090d08;
  color: var(--text-main);
  font: inherit;
  font-size: 10px;
  font-weight: 750;
}

.player-period-btn { padding: 4px 8px; cursor: pointer; }
.player-period-btn.active { border-color: var(--accent); color: var(--accent-strong); background: var(--accent-soft2); }
.player-period-btn:disabled { opacity: 0.36; cursor: not-allowed; }
.opponent-filter { max-width: 150px; padding: 4px 8px; }

.stats-table,
.section-table {
  font-size: 12px;
}

@media (max-width: 1100px) {
  .info-row { grid-template-columns: 1fr 1fr; }
  .info-center-stack { grid-column: 1 / -1; grid-row: 1; grid-template-columns: 1fr 1fr; }
}

@media (max-width: 800px) {
  .app-shell { margin: 0; border-radius: 0; }
  .brand-header { align-items: flex-start; }
  .brand-copy { display: none; }
  .brand-actions { gap: 6px; }
  .brand-logo { width: 74px; height: 74px; }
  .team-panel-header { align-items: stretch; }
  .team-header-center { width: 100%; }
  .player-select { max-width: none; flex: 1 1 150px; min-height: 38px; }
  .pos-toggle-group { flex: 1 1 auto; justify-content: space-between; }
  .pos-toggle { min-height: 36px; padding-inline: 9px; }
  .expand-btn { position: absolute; right: 22px; margin-top: 8px; }
}

@media (max-width: 640px) {
  .brand-header { gap: 8px; }
  .brand-logo { width: 62px; height: 62px; }
  .brand-actions { max-width: 250px; }
  .brand-actions .changelog-toggle,
  .brand-actions .theme-toggle { width: 36px; height: 36px; }
  .season-option { min-height: 32px; padding-inline: 8px; }
  .matchups-strip {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    scroll-snap-type: x proximity;
  }
  .matchup-pill { flex: 0 0 92px; scroll-snap-align: start; }
  .info-row,
  .info-center-stack { grid-template-columns: minmax(0, 1fr); }
  .info-center-stack { grid-column: auto; grid-row: auto; }
  .odds-grid { column-gap: 4px; font-size: 10px; }
  .odds-hcell { font-size: 8px; letter-spacing: 0.05em; }
  .weather-quarter-row { gap: 6px; }
  .weather-quarter-btn { min-height: 30px; padding: 3px 8px; }
  .defense-position-detail { grid-template-columns: 1fr; }
  .team-summary-sections { padding: 8px; }
  .visibility-pos-row { flex-direction: column; gap: 5px; }
  .visibility-pos-label { width: auto; color: var(--accent); }
  .player-filter-item { min-height: 34px; max-width: 100%; }
  .position-section { padding-inline: 8px; }
  .pos-header { margin-inline: -8px; }
  .player-card { margin-bottom: 10px; }
  .player-split-controls { align-items: stretch; }
  .player-period-group { flex: 1 1 100%; }
  .player-period-btn { flex: 1 1 45px; }
  .opponent-filter { max-width: none; width: 100%; }
  .stats-table,
  .section-table { min-width: 520px; font-size: 11px; }
  .stats-table-wrapper {
    margin-inline: -2px;
    padding-bottom: 5px;
    scrollbar-color: var(--accent) transparent;
  }
}

/* Final cascade: mockup-aligned light dashboard */
body.theme-single .app-shell {
  width: min(100%, 1660px);
  max-width: 1660px;
  padding: 0 clamp(8px, 1.25vw, 20px) 28px;
  background: #f1f3ef;
}

body.theme-single .brand-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 86px;
  margin: 0 calc(clamp(8px, 1.25vw, 20px) * -1) 9px;
  padding: 8px clamp(14px, 2vw, 32px);
  border: 0;
  background: #111412;
}

body.theme-single .brand-logo {
  grid-column: 1;
  justify-self: end;
  width: clamp(72px, 6vw, 96px);
  height: clamp(46px, 4vw, 62px);
  margin-right: 8px;
  object-fit: cover;
  object-position: center;
}

body.theme-single .brand-copy {
  display: block;
  grid-column: 2;
  min-width: min(42vw, 450px);
  text-align: center;
}

body.theme-single .brand-name {
  color: #fff;
  font-size: clamp(28px, 2.75vw, 44px);
  line-height: .96;
  white-space: nowrap;
}

body.theme-single .brand-tagline {
  margin-top: 7px;
  color: #8acb2a;
  line-height: 1;
  text-align: center;
}

body.theme-single .brand-actions {
  grid-column: 3;
  justify-self: end;
  gap: 8px;
}

body.theme-single .season-select,
body.theme-single .changelog-toggle {
  min-height: 36px;
  border-color: #555d57;
  background: #151917;
}

body.theme-single .season-select { min-width: 78px; padding-block: 5px; }
body.theme-single .changelog-toggle { padding: 5px 12px; }

body.theme-single .top-strip { gap: 2px; margin-bottom: 10px; }
body.theme-single .week-label { font-size: 11px; font-weight: 900; letter-spacing: .13em; }
body.theme-single .matchups-strip { gap: 5px; padding-top: 3px; }
body.theme-single .matchup-pill {
  min-height: 57px;
  padding: 5px 4px;
  border: 1px solid #cfd4ce;
  border-radius: 8px;
  background: #fff;
  color: #222823;
}
body.theme-single .matchup-pill.active {
  border-color: #77b922;
  background: #fbfff4;
  box-shadow: inset 0 0 0 1px #77b922;
}
body.theme-single .pill-mainline { font-size: clamp(7px, .64vw, 10px); font-weight: 850; }
body.theme-single .pill-small,
body.theme-single .pill-date { font-size: 8px; font-weight: 700; }

body.theme-single .info-row {
  grid-template-columns: minmax(0, 1fr) minmax(315px, .84fr) minmax(0, 1fr);
  gap: 8px;
}
body.theme-single .info-center-stack { gap: 8px; }
body.theme-single .info-cell { min-height: 0; padding: 11px 14px; border-radius: 8px; }
body.theme-single .info-row > .info-cell { border-left-width: 5px; }

body.theme-single .defense-card-header {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-height: 39px;
  margin-bottom: 7px;
  text-align: left;
}
body.theme-single .defense-team-logo { width: 34px; height: 34px; object-fit: contain; }
body.theme-single .defense-card-title {
  min-width: 0;
  overflow: hidden;
  color: #202521;
  font-size: clamp(10px, .82vw, 13px);
  font-weight: 950;
  letter-spacing: .012em;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.theme-single .defense-record-pill {
  min-width: 36px;
  padding: 4px 7px;
  border-radius: 5px;
  background: var(--team-accent, #414943);
  color: #fff;
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
  text-align: center;
}
body.theme-single #awayDefCell,
body.theme-single #homeDefCell { min-height: 126px; justify-content: flex-start; }
body.theme-single .def-grid { width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; }
body.theme-single .def-grid-col { display: grid; align-content: start; gap: 0; }
body.theme-single .def-grid-col-positions { padding-left: clamp(12px, 1.4vw, 20px); }
body.theme-single .def-line {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 29px;
  border-bottom: 1px solid #e0e4df;
  color: #343a35;
  font-size: clamp(9px, .72vw, 11px);
  line-height: 1.15;
  white-space: normal;
}
body.theme-single .def-line:last-child { border-bottom: 0; }
body.theme-single .def-line-label { min-width: 0; font-weight: 700; }
body.theme-single .def-line-value { color: #202521; font-weight: 900; white-space: nowrap; }

body.theme-single .weather-cell { min-height: 102px; padding-block: 9px; }
body.theme-single .odds-cell { min-height: 88px; padding-block: 8px; }
body.theme-single .info-label { font-size: clamp(10px, .72vw, 12px); }
body.theme-single .info-subtitle { margin-top: 0; font-size: 9px; }
body.theme-single .weather-dome-label { margin-top: 9px; }
body.theme-single .odds-grid { row-gap: 3px; font-size: 10px; }
body.theme-single .odds-status {
  grid-column: 1 / -1;
  margin-top: 3px;
  color: #7a827b;
  font-size: 9px;
  font-weight: 750;
  letter-spacing: .07em;
  text-align: center;
  text-transform: uppercase;
}
body.theme-single .odds-val { font-size: 10px; }
body.theme-single .odds-val span:first-child { font-size: 9px; }

body.theme-single .teams-row { gap: 10px; margin-top: 2px; }
body.theme-single .team-panel-header {
  min-height: 48px;
  padding: 6px 8px 6px 10px;
  border-left-width: 5px;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(100deg, #252a27, #171a18);
}
body.theme-single .team-header-left { flex: 1 1 auto; gap: 6px; overflow: hidden; }
body.theme-single .team-logo { width: 31px; height: 31px; }
body.theme-single .team-name {
  flex: 1 1 auto;
  overflow: visible;
  font-size: clamp(10px, .88vw, 14px);
  letter-spacing: .01em;
  text-overflow: clip;
  white-space: nowrap;
}
body.theme-single .team-header-center { flex: 0 0 auto; gap: 5px; }
body.theme-single .player-select {
  min-width: 100px;
  max-width: 116px;
  padding: 3px 7px;
  border-radius: 6px;
  font-size: 9px;
}
body.theme-single .pos-toggle-group {
  padding: 0;
  overflow: hidden;
  border-radius: 6px;
  background: #fff;
}
body.theme-single .pos-toggle {
  min-height: 26px;
  padding: 3px 7px;
  border-radius: 0;
  color: #252b26;
  font-size: 9px;
}
body.theme-single .pos-toggle.active { background: #84c52a; color: #18200f; }
body.theme-single .expand-btn { min-width: 25px; min-height: 25px; padding: 0 5px; }
body.theme-single .player-filter-list {
  padding: 7px 9px;
  border-left-width: 5px;
  border-radius: 0 0 8px 8px;
}
body.theme-single .visibility-pos-row {
  align-items: center;
  min-height: 23px;
  margin: 0;
  border-bottom: 1px solid #e2e5e1;
}
body.theme-single .visibility-pos-row:last-child { border-bottom: 0; }
body.theme-single .visibility-pos-label { width: 26px; margin: 0; font-size: 9px; font-weight: 900; }
body.theme-single .visibility-pos-chips { gap: 3px 8px; }
body.theme-single .player-filter-item {
  min-height: 0;
  max-width: none;
  padding: 1px 3px;
  border: 0;
  border-radius: 3px;
  background: transparent;
  font-size: 9px;
  font-weight: 650;
}
body.theme-single .player-filter-item input { width: 13px; height: 13px; }

body.theme-single .team-summary-sections { grid-template-columns: minmax(0, 1fr); gap: 8px; margin-top: 7px; padding: 0; }
body.theme-single .section-card { margin-top: 0; padding: 5px 7px 7px; border-radius: 8px; }
body.theme-single .section-header-row { min-height: 29px; margin-bottom: 3px; padding: 1px 2px; background: #fff; }
body.theme-single .section-header-left { gap: 6px; }
body.theme-single .section-title { margin: 0; font-size: 10px; font-weight: 900; }
body.theme-single .hit-toggle-group {
  padding: 0;
  overflow: hidden;
  border: 1px solid #d2d7d0;
  border-radius: 6px;
  background: #fff;
}
body.theme-single .hit-toggle { min-height: 24px; padding: 2px 7px; border-radius: 0; font-size: 8px; }
body.theme-single .hit-toggle.active { background: #84c52a; color: #18200f; }
body.theme-single .section-collapse-btn { min-width: 23px; min-height: 23px; padding: 0; }
body.theme-single .section-table { min-width: 520px; font-size: 9px; }
body.theme-single .section-table th,
body.theme-single .section-table td { padding-block: 3px; }
body.theme-single .section-table thead,
body.theme-single .stats-table thead { background: #242925; }

@media (max-width: 1180px) {
  body.theme-single .team-panel-header { flex-wrap: wrap; }
  body.theme-single .team-header-left { min-width: min(100%, 260px); }
  body.theme-single .team-header-center { margin-left: auto; }
}

@media (max-width: 800px) {
  body.theme-single .brand-header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    gap: 5px;
    padding: 8px 10px;
  }
  body.theme-single .brand-logo {
    grid-column: 1;
    grid-row: 1;
    justify-self: end;
    width: 60px;
    height: 40px;
    margin-right: 3px;
  }
  body.theme-single .brand-copy { grid-column: 2; grid-row: 1; min-width: 0; }
  body.theme-single .brand-name { font-size: clamp(20px, 5.5vw, 30px); }
  body.theme-single .brand-tagline { font-size: 9px; }
  body.theme-single .brand-actions { grid-column: 1 / -1; grid-row: 2; justify-self: center; }
}

@media (max-width: 640px) {
  body.theme-single .brand-header { min-height: 104px; margin-inline: -8px; }
  body.theme-single .brand-logo { width: 54px; height: 36px; }
  body.theme-single .brand-name { font-size: clamp(18px, 5.6vw, 25px); }
  body.theme-single .brand-tagline { margin-top: 5px; letter-spacing: .11em; }
  body.theme-single .matchup-pill { flex-basis: 88px; }
  body.theme-single .info-row,
  body.theme-single .info-center-stack { grid-template-columns: minmax(0, 1fr); }
  body.theme-single .info-center-stack { grid-column: 1; grid-row: 1; }
  body.theme-single .info-row > .info-cell:first-child { grid-column: 1; grid-row: 2; }
  body.theme-single .info-row > .info-cell:last-child { grid-column: 1; grid-row: 3; }
  body.theme-single .defense-card-header { grid-template-columns: 34px minmax(0, 1fr) auto; }
  body.theme-single .defense-team-logo { width: 30px; height: 30px; }
  body.theme-single .defense-card-title { white-space: normal; }
  body.theme-single .team-panel-header { align-items: center; }
  body.theme-single .team-header-left,
  body.theme-single .team-header-center { width: 100%; }
  body.theme-single .team-name { font-size: 12px; }
  body.theme-single .player-select { flex: 1 1 100px; max-width: none; }
  body.theme-single .pos-toggle-group { flex: 0 0 auto; }
  body.theme-single .pos-toggle { min-height: 30px; padding-inline: 8px; }
  body.theme-single .visibility-pos-row { flex-direction: row; align-items: flex-start; }
  body.theme-single .visibility-pos-label { width: 24px; }
  body.theme-single .player-filter-item { min-height: 28px; }
}

/* Mockup fidelity pass: brand lockup, compact team controls, aligned player grid */
body.theme-single .brand-header {
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  min-height: 78px;
  padding-block: 7px;
  border-radius: 14px 14px 0 0;
}

body.theme-single .brand-lockup {
  display: flex;
  grid-column: 2;
  align-items: center;
  justify-self: center;
  gap: 9px;
  min-width: 0;
}

body.theme-single .brand-lockup .brand-logo {
  position: relative;
  display: block;
  grid-column: auto;
  justify-self: auto;
  width: clamp(64px, 5.3vw, 82px);
  height: clamp(42px, 3.55vw, 55px);
  margin: 0;
  flex: 0 0 auto;
}

body.theme-single .brand-lockup .brand-copy {
  display: block;
  grid-column: auto;
  min-width: 0;
  text-align: center;
}

body.theme-single .brand-name {
  font-size: clamp(27px, 2.45vw, 39px);
}

body.theme-single .brand-tagline {
  margin-top: 5px;
  font-size: clamp(9px, .76vw, 12px);
}

body.theme-single .team-panel { gap: 0; }

body.theme-single .team-panel-header {
  min-height: 40px;
  padding: 4px 7px 4px 8px;
}

body.theme-single .team-logo {
  width: 28px;
  height: 28px;
}

body.theme-single .team-header-center { gap: 4px; }

body.theme-single .player-select {
  flex: 0 0 84px;
  width: 84px;
  min-width: 84px;
  max-width: 84px;
  height: 24px;
  min-height: 24px;
  padding: 2px 19px 2px 7px;
  font-size: 8px;
  line-height: 1;
}

body.theme-single .pos-toggle-group { height: 24px; }

body.theme-single .pos-toggle {
  width: 28px;
  min-width: 28px;
  height: 24px;
  min-height: 24px;
  padding: 0 3px;
  font-size: 8px;
  line-height: 1;
}

body.theme-single .pos-toggle[data-pos="ALL"] {
  width: 30px;
  min-width: 30px;
}

body.theme-single .expand-btn {
  width: 24px;
  min-width: 24px;
  height: 24px;
  min-height: 24px;
  margin: 0;
}

body.theme-single .player-filter-list {
  margin: 0;
  padding: 4px 9px 5px;
}

body.theme-single .visibility-pos-row {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  align-items: center;
  gap: 0;
  min-height: 25px;
}

body.theme-single .visibility-pos-label {
  width: auto;
  align-self: center;
}

body.theme-single .visibility-pos-chips {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: center;
  gap: 1px 8px;
  width: 100%;
}

body.theme-single .player-filter-item {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  min-width: 0;
  padding: 2px 0;
  overflow: hidden;
  font-size: clamp(7px, .57vw, 9px);
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.theme-single .player-filter-item input {
  width: 12px;
  height: 12px;
  margin: 0;
  flex: 0 0 12px;
}

body.theme-single .def-grid-col:first-child {
  padding-right: clamp(14px, 1.35vw, 22px);
}

body.theme-single .def-grid-col-positions {
  padding-left: clamp(14px, 1.35vw, 22px);
  border-left: 1px solid #d7dcd5;
}

body.theme-single .def-line {
  grid-template-columns: minmax(0, 1fr) max-content;
  gap: 12px;
}

body.theme-single .weather-dome-content {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 5px;
}

body.theme-single .weather-dome-icon {
  display: block;
  width: 40px;
  height: 30px;
  object-fit: contain;
}

body.theme-single .weather-dome-label {
  margin-top: 0;
}

body.theme-single .player-fav-btn,
body.theme-single .player-fav-btn.active {
  width: 22px;
  height: 22px;
  margin-right: 7px;
  padding: 0;
  border: 2px solid #69aa17;
  border-radius: 999px;
  background: #fff;
  color: #5d9c11;
  box-shadow: none;
  font-size: 16px;
  font-weight: 900;
  line-height: 1;
}

body.theme-single .player-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  min-width: 22px;
  height: 22px;
  margin-left: 7px;
  padding: 0;
  border: 2px solid #b9192d;
  border-radius: 999px;
  background: #fff;
  color: #b9192d;
  box-shadow: none;
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
}

body.theme-single .player-remove-btn:hover {
  border-color: #941126;
  color: #941126;
  box-shadow: 0 0 0 2px rgba(185, 25, 45, .12);
}

body.theme-single .hit-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  min-width: 40px;
  height: 24px;
  min-height: 24px;
  padding: 0 3px;
  line-height: 1;
}

body.theme-single .section-table,
body.theme-single .stats-table {
  color: #111713;
}

body.theme-single .section-table th,
body.theme-single .section-table td,
body.theme-single .stats-table th,
body.theme-single .stats-table td {
  color: inherit;
  text-align: center;
}

body.theme-single .section-table tbody td,
body.theme-single .stats-table tbody td {
  color: #141915;
  font-weight: 600;
}

body.theme-single .section-table th:first-child,
body.theme-single .section-table td:first-child,
body.theme-single .stats-table th:first-child,
body.theme-single .stats-table td:first-child {
  padding-left: 10px;
  text-align: left;
}

body.theme-single .stats-table th:nth-child(2),
body.theme-single .stats-table td:nth-child(2) {
  text-align: center;
}

body.theme-single .opponent-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 112px;
  min-height: 32px;
  padding: 4px 12px;
  border: 1px solid #89928b;
  border-radius: 8px;
  background: #fff;
  color: #252b26;
  font: inherit;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
}

body.theme-single .opponent-toggle:hover {
  border-color: #6da91d;
}

body.theme-single .opponent-toggle.active {
  border-color: #68a719;
  background: #79bd19;
  color: #14200d;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .2);
}

body.theme-single .opponent-toggle:disabled {
  opacity: .45;
  cursor: not-allowed;
}

body.theme-single .section-table th:last-child,
body.theme-single .section-table td:last-child,
body.theme-single .stats-table th:last-child,
body.theme-single .stats-table td:last-child {
  padding-right: 8px;
}

@media (max-width: 1180px) {
  body.theme-single .visibility-pos-chips { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 800px) {
  body.theme-single .brand-header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    min-height: 0;
  }

  body.theme-single .brand-lockup {
    grid-column: 2;
    grid-row: 1;
    gap: 6px;
  }

  body.theme-single .brand-lockup .brand-logo {
    width: 54px;
    height: 36px;
  }

  body.theme-single .brand-lockup .brand-copy {
    grid-column: auto;
    grid-row: auto;
  }

  body.theme-single .brand-actions {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  body.theme-single .visibility-pos-chips { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  body.theme-single .brand-header { min-height: 96px; }
  body.theme-single .brand-lockup .brand-logo { width: 48px; height: 32px; }
  body.theme-single .team-header-left { width: 100%; padding-right: 28px; }
  body.theme-single .team-header-center { width: 100%; margin-left: 0; }
  body.theme-single .player-select { flex: 1 1 96px; width: auto; max-width: none; }
  body.theme-single .pos-toggle { min-height: 24px; padding-inline: 3px; }
  body.theme-single .visibility-pos-row { grid-template-columns: 24px minmax(0, 1fr); }
  body.theme-single .visibility-pos-chips { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.theme-single .player-filter-item { min-height: 24px; font-size: 9px; }
  body.theme-single .def-grid-col:first-child { padding-right: 8px; }
  body.theme-single .def-grid-col-positions { padding-left: 8px; }
  body.theme-single .opponent-toggle { width: 100%; }
}

/* 2026-08-22 refinement: one logo, centered wordmark, uniform controls, readable favorites */
body.theme-single .brand-header {
  display: grid;
  grid-template-columns: minmax(92px, 1fr) auto minmax(92px, 1fr);
  align-items: center;
  min-height: 82px;
  padding: 8px 18px;
}

body.theme-single .brand-logo {
  position: relative;
  display: block;
  grid-column: 1;
  justify-self: start;
  width: clamp(82px, 7vw, 108px);
  height: clamp(48px, 4vw, 62px);
  margin: 0;
}

body.theme-single .brand-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  transform: scale(1.45);
  transform-origin: center left;
}

/* The supplied transparent logo uses a navy H. Add a white mask only over
   the H so the original green cape and R remain untouched on the dark bar. */
body.theme-single .brand-logo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #fff;
  -webkit-mask: url("../images/brand/hr-favicon-transparent-v1.png") center / contain no-repeat;
  mask: url("../images/brand/hr-favicon-transparent-v1.png") center / contain no-repeat;
  clip-path: inset(0 38% 0 31%);
  transform: scale(1.45);
  transform-origin: center left;
  pointer-events: none;
}

body.theme-single .brand-copy {
  display: block;
  grid-column: 2;
  min-width: 0;
  text-align: center;
}

body.theme-single .brand-name {
  color: #fff;
  font-size: clamp(28px, 2.45vw, 40px);
  line-height: .96;
}

body.theme-single .brand-tagline {
  margin-top: 8px;
  color: #8bd020;
  font-size: clamp(10px, .8vw, 13px);
  font-weight: 900;
  letter-spacing: .16em;
  line-height: 1;
}

body.theme-single .brand-tagline .brand-hundred {
  position: relative;
  display: inline-block;
  color: inherit;
  padding-bottom: 5px;
  font: inherit;
  text-shadow: none;
}

body.theme-single .brand-tagline .brand-hundred::before,
body.theme-single .brand-tagline .brand-hundred::after {
  content: "";
  position: absolute;
  right: 0;
  height: 2px;
  border-radius: 999px;
  background: currentColor;
  transform-origin: center;
}

body.theme-single .brand-tagline .brand-hundred::before {
  left: 2%;
  bottom: 1px;
  transform: rotate(-2deg);
}

body.theme-single .brand-tagline .brand-hundred::after {
  left: 14%;
  bottom: -3px;
  transform: rotate(-5deg);
}

body.theme-single .brand-actions {
  grid-column: 3;
  justify-self: end;
}

body.theme-single .player-select,
body.theme-single .pos-toggle,
body.theme-single .hit-toggle,
body.theme-single .player-period-btn,
body.theme-single .opponent-toggle,
body.theme-single .weather-quarter-btn {
  height: 24px;
  min-height: 24px;
  border-radius: 6px;
  font-size: 9px;
  font-weight: 800;
  line-height: 1;
}

body.theme-single .hit-toggle,
body.theme-single .player-period-btn,
body.theme-single .weather-quarter-btn {
  min-width: 34px;
  width: auto;
  padding: 0 8px;
  color: #111713;
}

body.theme-single .hit-toggle.active,
body.theme-single .player-period-btn.active,
body.theme-single .weather-quarter-btn.active {
  color: #10150d;
  font-weight: 900;
}

body.theme-single .opponent-toggle {
  width: auto;
  min-width: 76px;
  min-height: 24px;
  padding: 0 9px;
  border-radius: 6px;
  font-size: 9px;
}

body.theme-single .player-split-controls {
  min-height: 32px;
  padding: 4px 7px;
}

body.theme-single .player-period-group { gap: 3px; }

body.theme-single .section-header-left,
body.theme-single .hit-toggle-group {
  align-items: center;
}

body.theme-single .section-title,
body.theme-single .hit-toggle {
  color: #111713;
  font-weight: 900;
}

body.theme-single .fav-stat-btn,
body.theme-single .fav-stat-btn:hover,
body.theme-single .fav-stat-btn.active {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  min-width: 16px;
  height: 16px;
  margin-left: 5px;
  padding: 0;
  border: 1.5px solid #fff;
  border-radius: 999px;
  background: transparent;
  color: #fff;
  box-shadow: none;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}

body.theme-single .weather-icon-wrap,
body.theme-single .weather-icon,
body.theme-single .weather-condition-symbol {
  border: 0;
  background: transparent;
  box-shadow: none;
}

body.theme-single .weather-quarter-btn.weather-quarter-alert,
body.theme-single .weather-quarter-btn.weather-quarter-alert.active {
  border-color: #c51f2f;
  background: #fff;
  color: #c51f2f;
  box-shadow: inset 0 0 0 1px rgba(197, 31, 47, .08);
}

body.theme-single .weather-dome-content {
  margin-top: 2px;
  gap: 0;
}

body.theme-single .weather-dome-icon {
  width: 48px;
  height: 36px;
  filter: none;
}

body.theme-single .player-filter-item.injury-out {
  border-color: #b9192d;
  background: #fff0f2;
  color: #9f1023;
  font-weight: 800;
}

body.theme-single .player-filter-item.injury-questionable,
body.theme-single .player-filter-item.injury-doubtful {
  border-color: #b88400;
  background: #fff8df;
  color: #6e4d00;
  font-weight: 800;
}

body.theme-single .fav-panel-body {
  display: block;
  padding: 8px;
}

body.theme-single .fav-team-heading {
  margin: 7px 0 0;
  padding: 6px 8px;
  border-radius: 7px 7px 0 0;
  background: #202522;
  color: #fff;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
}

body.theme-single .fav-team-heading:first-child { margin-top: 0; }

body.theme-single .fav-matchup-heading {
  padding: 5px 8px;
  border: 1px solid #d4d9d3;
  border-top: 0;
  background: #eef1ed;
  color: #343b35;
  font-size: 10px;
  font-weight: 800;
}

body.theme-single .fav-row {
  display: grid;
  grid-template-columns: minmax(135px, 1.5fr) minmax(92px, .9fr) 104px 28px;
  gap: 8px;
  align-items: center;
  margin-top: 4px;
  background: #fff;
  color: #161b17;
}

body.theme-single .fav-main,
body.theme-single .fav-sub,
body.theme-single .fav-stat-type {
  color: #161b17;
}

body.theme-single .fav-stat-type {
  font-size: 11px;
  font-weight: 800;
}

@media (max-width: 800px) {
  body.theme-single .brand-header {
    grid-template-columns: 74px minmax(0, 1fr) 74px;
    padding-inline: 10px;
  }
  body.theme-single .brand-logo { grid-column: 1; width: 76px; height: 48px; }
  body.theme-single .brand-copy { grid-column: 2; grid-row: 1; }
  body.theme-single .brand-actions { grid-column: 1 / -1; grid-row: 2; justify-self: center; }
}

@media (max-width: 640px) {
  body.theme-single .brand-header { grid-template-columns: 58px minmax(0, 1fr) 58px; }
  body.theme-single .brand-logo { width: 64px; height: 40px; }
  body.theme-single .brand-name { font-size: clamp(20px, 6vw, 28px); }
  body.theme-single .brand-tagline { margin-top: 6px; font-size: 9px; }
  body.theme-single .opponent-toggle { width: auto; min-width: 76px; }
  body.theme-single .player-period-btn { flex: 0 0 auto; }
  body.theme-single .fav-row {
    grid-template-columns: minmax(108px, 1.35fr) minmax(78px, 1fr) 88px 26px;
    gap: 5px;
  }
}

/* v9 final cascade guard */
body.theme-single .brand-logo { width: clamp(112px, 10vw, 160px); height: clamp(48px, 4.8vw, 70px); overflow: visible; }
body.theme-single .brand-logo img { width: 100%; height: 100%; object-fit: contain; object-position: left center; transform: none; }
body.theme-single .brand-logo::after { content: none; }
body.theme-single .brand-tagline { color: #fff; font-size: clamp(11px, .9vw, 14px); letter-spacing: .19em; }
body.theme-single .brand-tagline .brand-hundred { color: #8bd020; }
body.theme-single .weather-icon-wrap,
body.theme-single .weather-icon-wrap *,
body.theme-single .weather-icon,
body.theme-single .weather-condition-symbol { border: 0 !important; outline: 0 !important; background: transparent !important; box-shadow: none !important; filter: none !important; }
body.theme-single .player-select,
body.theme-single .player-select option { background: #fff !important; color: #111713 !important; opacity: 1; }
body.theme-single .player-select option.injury-option-out,
body.theme-single .player-select.injury-option-out { background: #ffd7dd !important; color: #8f0019 !important; font-weight: 900; }
body.theme-single .player-select option.injury-option-questionable,
body.theme-single .player-select option.injury-option-doubtful,
body.theme-single .player-select.injury-option-questionable,
body.theme-single .player-select.injury-option-doubtful { background: #ffe985 !important; color: #3b2c00 !important; font-weight: 900; }
body.theme-single .player-filter-item.injury-out,
body.theme-single .player-filter-item.injury-questionable,
body.theme-single .player-filter-item.injury-doubtful { border-color: transparent; background: transparent; color: #111713; }
body.theme-single .player-filter-name,
body.theme-single .player-name-core { display: inline-block; width: fit-content; border-radius: 4px; padding: 1px 3px; color: #111713; font-weight: 800; }
body.theme-single .player-filter-name.injury-out,
body.theme-single .player-name-core.injury-out { background: #ffd7dd; color: #8f0019; }
body.theme-single .player-filter-name.injury-questionable,
body.theme-single .player-filter-name.injury-doubtful,
body.theme-single .player-name-core.injury-questionable,
body.theme-single .player-name-core.injury-doubtful { background: #ffe985; color: #3b2c00; }
.app-shell.archive-mode .archive-summary-card { border: 1px solid #cbd1ca; border-left: 4px solid var(--team-accent, #568e0f); background: #fff; color: #111713; box-shadow: 0 1px 2px rgba(17,23,19,.05); }
.app-shell.archive-mode .archive-summary-title,
.app-shell.archive-mode .archive-ranking-group-title,
.app-shell.archive-mode .archive-leader-name,
.app-shell.archive-mode .archive-leader-stat,
.app-shell.archive-mode .archive-leader-stat strong,
.app-shell.archive-mode .archive-ranking-line,
.app-shell.archive-mode .archive-ranking-line strong,
.app-shell.archive-mode .archive-summary-empty { color: #111713; }
.app-shell.archive-mode .archive-summary-title,
.app-shell.archive-mode .archive-leader-pos,
.app-shell.archive-mode .archive-ranking-group-title { color: var(--team-accent, #315d12); font-weight: 900; }
.app-shell.archive-mode .archive-leader-row,
.app-shell.archive-mode .archive-ranking-group-title { border-color: #dfe3de; }
body.theme-single .stats-table th:first-child,
body.theme-single .stats-table td:first-child { padding-left: 10px; text-align: left; }
body.theme-single .stats-table th:nth-child(2),
body.theme-single .stats-table td:nth-child(2) { text-align: center; }
body.theme-single .stats-table th:nth-child(n+3),
body.theme-single .stats-table td:nth-child(n+3) { text-align: right; }
body.theme-single .fav-row { grid-template-columns: minmax(135px,1.45fr) minmax(92px,.9fr) 104px 52px 28px; }
body.theme-single .fav-hit-rate { min-width: 46px; padding: 4px 5px; border-radius: 6px; text-align: center; font-size: 11px; font-weight: 900; font-variant-numeric: tabular-nums; }
body.theme-single .fav-hit-rate.rate-green { background: #68b81e; color: #0d1a08; }
body.theme-single .fav-hit-rate.rate-black { background: #161b17; color: #fff; }
body.theme-single .fav-hit-rate.rate-yellow { background: #ffe168; color: #2e2500; }
body.theme-single .fav-hit-rate.rate-red { background: #c51f2f; color: #fff; }
body.theme-single .fav-hit-rate.empty { background: #eef1ed; color: #777f78; }
@media (max-width:800px) { body.theme-single .brand-logo { width:94px; height:48px; } }
@media (max-width:640px) {
  body.theme-single .brand-logo { width:72px; height:38px; }
  body.theme-single .fav-row { grid-template-columns:minmax(100px,1.3fr) minmax(74px,.9fr) 76px 44px 26px; gap:4px; }
}

/* v10: connected-data refinement and final readability pass */
body.theme-single .brand-logo {
  width: clamp(90px, 8vw, 128px);
  height: clamp(44px, 4.8vw, 62px);
  align-self: center;
}
body.theme-single .brand-tagline .brand-hundred { padding-bottom: 0; }
body.theme-single .brand-tagline .brand-hundred::before,
body.theme-single .brand-tagline .brand-hundred::after { content: none; display: none; }
body.theme-single .brand-hundred-image {
  display: block;
  width: auto;
  height: 1em;
}

body.theme-single .matchup-pill {
  flex-basis: 98px;
  min-height: 62px;
  padding: 7px 6px;
  justify-content: center;
  gap: 3px;
}
body.theme-single .pill-mainline { font-size: 10px; line-height: 1.15; }
body.theme-single .pill-subline,
body.theme-single .pill-status { font-size: 9px; line-height: 1.15; }

body.theme-single .team-name { font-size: 14px; line-height: 1.15; }
body.theme-single .player-filter-item {
  min-height: 28px;
  font-size: 10.5px;
  line-height: 1.15;
}
body.theme-single .section-title { font-size: 12px; }
body.theme-single .section-subtitle { font-size: 9px; }
body.theme-single .section-table { font-size: 10.5px; }
body.theme-single .section-table th,
body.theme-single .section-table td { padding-top: 4px; padding-bottom: 4px; }
body.theme-single .hit-toggle,
body.theme-single .player-period-btn,
body.theme-single .weather-quarter-btn,
body.theme-single .opponent-toggle { font-size: 10px; }

body.theme-single .def-line { font-size: 11px; padding-block: 8px; }
body.theme-single .defense-card-title { font-size: 13px; }
body.theme-single .info-cell { min-height: 196px; }
body.theme-single .info-center-stack .info-cell { min-height: 94px; }

body.theme-single .fav-panel {
  border: 1px solid #adb6ad;
  background: #f2f5f0;
  color: #111713;
  box-shadow: 0 14px 38px rgba(20, 30, 22, .25);
}
body.theme-single .fav-panel-header {
  border-bottom: 1px solid #424b44;
  background: #202522;
  color: #fff;
}
body.theme-single .fav-panel-title,
body.theme-single .fav-panel-sub { color: #fff; }
body.theme-single .fav-btn,
body.theme-single .fav-collapse {
  border-color: #dbe2da;
  background: transparent;
  color: #fff;
  opacity: 1;
}
body.theme-single .fav-collapse svg { stroke: #fff; }
body.theme-single .fav-panel-body { background: #f2f5f0; color: #111713; }
body.theme-single .fav-input {
  border: 1px solid #aab3aa;
  background: #fff;
  color: #111713;
  -webkit-text-fill-color: #111713;
  opacity: 1;
}
body.theme-single .fav-input::placeholder { color: #717970; opacity: 1; }
body.theme-single .fav-remove {
  border: 2px solid #b9162d;
  background: #fff;
  color: #b9162d;
}

@media (max-width: 800px) {
  body.theme-single .brand-logo { width: 75px; height: 42px; }
  body.theme-single .matchup-pill { flex-basis: 94px; }
  body.theme-single .team-name { font-size: 13px; }
}
@media (max-width: 640px) {
  body.theme-single .brand-logo { width: 58px; height: 34px; }
  body.theme-single .player-filter-item { font-size: 10px; }
  body.theme-single .section-table { font-size: 10px; }
}

/* v11: readability, persistent Favorites rates, and aligned data columns */
body.theme-single .top-strip { gap: 0; }
body.theme-single .week-nav {
  min-height: 38px;
  margin: 0;
  padding: 0;
  align-items: center;
}
body.theme-single .week-label {
  font-size: 12px;
  font-weight: 650;
  line-height: 1;
}
body.theme-single .matchups-strip { padding-top: 0; }
body.theme-single .matchup-pill {
  min-height: 70px;
  padding: 8px 5px;
  gap: 4px;
}
body.theme-single .pill-mainline {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.18;
}
body.theme-single .pill-small,
body.theme-single .pill-date,
body.theme-single .pill-status,
body.theme-single .pill-subline {
  font-size: 10.5px;
  font-weight: 500;
  line-height: 1.18;
}

body.theme-single .team-name {
  font-size: 15px;
  font-weight: 600;
}
body.theme-single .player-filter-item {
  min-height: 30px;
  font-size: 11.5px;
  font-weight: 400;
  line-height: 1.2;
}
body.theme-single .player-filter-name,
body.theme-single .player-name-core { font-weight: 500; }
body.theme-single .section-title,
body.theme-single .section-title-emphasis {
  font-size: 12.5px;
  font-weight: 650;
}
body.theme-single .section-subtitle { font-size: 10px; font-weight: 450; }
body.theme-single .section-table { font-size: 11.5px; }
body.theme-single .section-table th { font-weight: 600; }
body.theme-single .section-table tbody td { font-weight: 400; }
body.theme-single .hit-toggle,
body.theme-single .player-period-btn,
body.theme-single .weather-quarter-btn,
body.theme-single .opponent-toggle {
  font-size: 10.5px;
  font-weight: 600;
}

body.theme-single .def-line {
  grid-template-columns: minmax(78px, 1fr) 48px 58px;
  gap: 6px;
  padding-block: 8px;
  font-size: 11.5px;
  font-weight: 400;
}
body.theme-single .def-line-label,
body.theme-single .def-line-rank,
body.theme-single .def-line-average {
  min-width: 0;
  color: #202521;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}
body.theme-single .def-line-rank,
body.theme-single .def-line-average {
  text-align: right;
  white-space: nowrap;
}

body.theme-single .odds-grid {
  grid-template-columns: minmax(36px, auto) repeat(4, minmax(64px, 1fr));
  column-gap: 7px;
  row-gap: 7px;
  font-size: 12px;
  line-height: 1.2;
}
body.theme-single .info-row {
  grid-template-columns: minmax(0, 1fr) minmax(390px, .95fr) minmax(0, 1fr);
}
body.theme-single .odds-hcell {
  font-size: 10.5px;
  font-weight: 600;
}
body.theme-single .odds-team,
body.theme-single .odds-val,
body.theme-single .odds-val span:first-child {
  font-size: 12px;
  font-weight: 500;
}
body.theme-single .odds-implied {
  color: #568e0f;
  font-size: 12px;
  font-weight: 650;
}

body.theme-single .weather-sun-clean,
body.theme-single .weather-sun-clean svg {
  display: block;
  width: 34px;
  height: 34px;
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

body.theme-single .fav-team-heading {
  background: var(--favorite-team-color, #445047);
  color: #fff;
}
body.theme-single .fav-row {
  grid-template-columns: minmax(135px, 1.35fr) minmax(92px, .9fr) 104px 100px 28px;
}
body.theme-single .fav-hit-rate {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 5px;
  min-width: 96px;
  padding: 0;
  background: transparent;
  color: #111713;
  text-align: right;
  font-size: 11px;
  font-weight: 500;
}
body.theme-single .fav-hit-label { color: #111713; font-weight: 500; white-space: nowrap; }
body.theme-single .fav-hit-value { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.theme-single .fav-hit-value.rate-green { color: #318600; }
body.theme-single .fav-hit-value.rate-black { color: #111713; }
body.theme-single .fav-hit-value.rate-yellow { color: #a66e00; }
body.theme-single .fav-hit-value.rate-red { color: #c51f2f; }
body.theme-single .fav-hit-value.empty { color: #777f78; }

@media (max-width: 800px) {
  body.theme-single .matchup-pill { min-height: 66px; }
  body.theme-single .pill-mainline { font-size: 11px; }
  body.theme-single .player-filter-item,
  body.theme-single .section-table { font-size: 11px; }
  body.theme-single .fav-row {
    grid-template-columns: minmax(108px, 1.25fr) minmax(78px, .9fr) 88px 88px 26px;
    gap: 5px;
  }
  body.theme-single .fav-hit-rate { min-width: 84px; font-size: 10px; }
}

/* v12: control polish, team-color tables, responsive logos, and priced odds */
body.theme-single .player-select {
  flex: 0 0 116px;
  width: 116px;
  min-width: 116px;
  max-width: 116px;
  padding-inline: 8px 24px;
  font-size: 10px;
}

body.theme-single .pos-toggle.active,
body.theme-single .hit-toggle.active,
body.theme-single .player-period-btn.active,
body.theme-single .weather-quarter-btn.active,
body.theme-single .opponent-toggle.active {
  color: #111713;
  font-weight: 500;
}

body.theme-single .fav-main,
body.theme-single .fav-stat-type,
body.theme-single .fav-hit-label {
  color: #111713;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}

body.theme-single .fav-panel-header {
  width: 80%;
  margin-inline: auto;
  border-radius: 12px 12px 0 0;
}

body.theme-single .section-table thead,
body.theme-single .stats-table thead {
  background: var(--team-accent, #202522);
  color: #fff;
}

body.theme-single .team-logo {
  width: clamp(30px, 2.5vw, 40px);
  height: clamp(30px, 2.5vw, 40px);
  max-width: 100%;
  object-fit: contain;
}
body.theme-single .defense-team-logo {
  width: clamp(31px, 2.3vw, 38px);
  height: clamp(31px, 2.3vw, 38px);
  max-width: 100%;
  object-fit: contain;
}
body.theme-single .archive-team-menu-logo {
  width: clamp(28px, 2.2vw, 38px);
  height: clamp(28px, 2.2vw, 38px);
  max-width: 100%;
  object-fit: contain;
}

body.theme-single .odds-divider {
  grid-column: 1 / -1;
  width: 100%;
  height: 1px;
  background: #d7dcd5;
}
body.theme-single .odds-divider-header { background: #c8cec7; }
body.theme-single .odds-val {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 1100px) {
  body.theme-single .info-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.theme-single .info-center-stack { grid-column: 1 / -1; grid-row: 1; }
}

@media (max-width: 800px) {
  body.theme-single .info-row { grid-template-columns: minmax(0, 1fr); }
  body.theme-single .player-select {
    flex-basis: 112px;
    width: 112px;
    min-width: 112px;
    max-width: 112px;
  }
  body.theme-single .team-logo {
    width: clamp(26px, 7vw, 34px);
    height: clamp(26px, 7vw, 34px);
  }
  body.theme-single .defense-team-logo {
    width: clamp(27px, 7vw, 34px);
    height: clamp(27px, 7vw, 34px);
  }
  body.theme-single .fav-panel-header { width: 80%; }
}

/* v13: compact rhythm, cleaner weather art, and live-control polish */
body.theme-single .top-strip {
  gap: 4px;
  margin: 0;
}
body.theme-single .week-nav {
  min-height: 26px;
  height: 26px;
  margin: 0;
  padding: 0;
}
body.theme-single .matchups-strip {
  padding: 0 2px;
}

body.theme-single .weather-dome-content {
  min-height: 66px;
  margin: 0;
  align-items: center;
  justify-content: center;
}
body.theme-single .weather-dome-icon {
  width: 78px;
  height: 66px;
  object-fit: contain;
}
body.theme-single .weather-sun-cloud-clean,
body.theme-single .weather-sun-cloud-clean svg {
  display: block;
  width: 38px;
  height: 34px;
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
}

body.theme-single .fav-panel-header {
  width: 100%;
  min-height: 40px;
  margin: 0;
  padding: 6px 10px;
  border-radius: 0;
}
body.theme-single .fav-panel.collapsed { max-height: 42px; }

body.theme-single .player-select,
body.theme-single .pos-toggle,
body.theme-single .hit-toggle,
body.theme-single .player-period-btn,
body.theme-single .weather-quarter-btn,
body.theme-single .opponent-toggle {
  font-weight: 400;
}
body.theme-single .pos-toggle.active,
body.theme-single .hit-toggle.active,
body.theme-single .player-period-btn.active,
body.theme-single .weather-quarter-btn.active,
body.theme-single .opponent-toggle.active {
  font-weight: 650;
}

body.theme-single .defense-card-header {
  grid-template-columns: 44px minmax(0, 1fr) auto;
}
body.theme-single .defense-team-logo {
  width: clamp(38px, 2.8vw, 44px);
  height: clamp(38px, 2.8vw, 44px);
}

@media (max-width: 800px) {
  body.theme-single .top-strip { margin-bottom: 0; }
  body.theme-single .week-nav { min-height: 24px; height: 24px; }
  body.theme-single .weather-dome-icon { width: 72px; height: 60px; }
  body.theme-single .defense-card-header { grid-template-columns: 38px minmax(0, 1fr) auto; }
  body.theme-single .defense-team-logo {
    width: clamp(34px, 8vw, 40px);
    height: clamp(34px, 8vw, 40px);
  }
  body.theme-single .fav-panel-header { width: 100%; }
}

/* v14: tighter header rhythm, accurate team accents, and single-player controls */
body.theme-single .brand-header {
  margin-bottom: 0;
}
body.theme-single .week-nav {
  min-height: 18px;
  height: 18px;
}

body.theme-single .odds-cell {
  justify-content: center;
}
body.theme-single .odds-body {
  width: 100%;
  justify-content: center;
}

body.theme-single .player-period-btn {
  min-width: 36px;
  padding-inline: 8px;
  letter-spacing: .055em;
  font-variant-numeric: tabular-nums;
}

body.theme-single .fav-panel-header {
  border-bottom-color: #619a16;
  background: #84c52a;
  color: #111713;
}
body.theme-single .fav-panel-title,
body.theme-single .fav-panel-sub,
body.theme-single .fav-btn,
body.theme-single .fav-collapse {
  color: #111713;
}
body.theme-single .fav-btn,
body.theme-single .fav-collapse {
  border-color: rgba(17, 23, 19, .42);
}
body.theme-single .fav-collapse svg { stroke: #111713; }
body.theme-single .fav-panel.collapsed {
  max-height: 32px;
}
body.theme-single .fav-panel.collapsed .fav-panel-header {
  min-height: 30px;
  height: 30px;
  padding-block: 3px;
}

@media (max-width: 800px) {
  body.theme-single .week-nav { min-height: 18px; height: 18px; }
}

/* v15: complete historical views and consistent archive typography */
body.theme-single .player-period-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .18em;
  letter-spacing: 0;
}
body.theme-single .player-period-prefix,
body.theme-single .player-period-number {
  display: inline-block;
  line-height: 1;
}

.app-shell.archive-mode .archive-overview-grid {
  grid-template-columns: minmax(0, 1.3fr) repeat(2, minmax(320px, 1fr));
  gap: 10px;
  align-items: start;
}
.app-shell.archive-mode .archive-summary-card {
  align-self: start;
  gap: 2px;
  padding: 11px 12px;
}
.app-shell.archive-mode .archive-summary-title {
  margin-bottom: 7px;
  font-size: 13px;
  line-height: 1.2;
  letter-spacing: .12em;
}
.app-shell.archive-mode .archive-leader-row {
  grid-template-columns: 34px minmax(110px, .9fr) minmax(0, 1.35fr);
  gap: 8px;
  min-height: 34px;
}
.app-shell.archive-mode .archive-leader-pos,
.app-shell.archive-mode .archive-ranking-group-title {
  font-size: 11px;
  line-height: 1.25;
}
.app-shell.archive-mode .archive-leader-name {
  font-size: 12.5px;
  line-height: 1.25;
}
.app-shell.archive-mode .archive-leader-stats,
.app-shell.archive-mode .archive-leader-stat strong {
  font-size: 11.5px;
  line-height: 1.3;
}
.app-shell.archive-mode .archive-ranking-group-title {
  margin-top: 3px;
  padding: 7px 0 5px;
}
.app-shell.archive-mode .archive-ranking-grid {
  column-gap: 14px;
  row-gap: 6px;
  font-size: 11.5px;
  line-height: 1.45;
}
.app-shell.archive-mode .archive-ranking-col { gap: 6px; }
.app-shell.archive-mode .archive-ranking-line { white-space: normal; }

body.theme-single .def-grid { gap: 14px; }
body.theme-single .def-line {
  grid-template-columns: minmax(126px, 1fr) 48px 58px;
  gap: 7px;
}
body.theme-single .def-line-label { line-height: 1.18; }

@media (max-width: 980px) {
  .app-shell.archive-mode .archive-overview-grid { grid-template-columns: 1fr 1fr; }
  .app-shell.archive-mode .player-filter-list { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .app-shell.archive-mode .archive-overview-grid { grid-template-columns: 1fr; }
  .app-shell.archive-mode .player-filter-list { grid-column: auto; }
  body.theme-single .def-line { grid-template-columns: minmax(112px, 1fr) 42px 54px; }
}

/* v18: unclipped defense metrics and one persistent player-selection model */
body.theme-single .team-header-center {
  flex: 0 0 auto;
}

body.theme-single .player-filter-help {
  margin: 1px 0 3px 26px;
  color: #687168;
  font-size: 8.5px;
  font-weight: 500;
  line-height: 1.25;
}

body.theme-single .def-grid,
body.theme-single .def-grid-col {
  min-width: 0;
}

body.theme-single .def-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

body.theme-single .def-grid-col:first-child {
  padding-right: 12px;
}

body.theme-single .def-grid-col-positions {
  padding-left: 12px;
}

body.theme-single .def-column-header,
body.theme-single .def-line {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 34px 44px;
  align-items: center;
  gap: 6px;
}

body.theme-single .def-column-header {
  min-height: 22px;
  border-bottom: 1px solid #cbd1ca;
  color: #697169;
  font-size: 8.5px;
  font-weight: 750;
  letter-spacing: .055em;
  line-height: 1.1;
  text-transform: uppercase;
}

body.theme-single .def-column-header span:nth-child(2),
body.theme-single .def-column-header span:nth-child(3) {
  text-align: right;
  white-space: nowrap;
}

body.theme-single .def-line {
  min-height: 29px;
  padding-block: 6px;
}

body.theme-single .def-line-label {
  overflow: hidden;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 640px) {
  body.theme-single .player-filter-help {
    margin-left: 24px;
    font-size: 8px;
  }

  body.theme-single .def-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }

  body.theme-single .def-grid-col:first-child,
  body.theme-single .def-grid-col-positions {
    padding-inline: 0;
    border-left: 0;
  }

  body.theme-single .def-grid-col-positions {
    padding-top: 5px;
    border-top: 1px solid #d7dcd5;
  }

  body.theme-single .def-column-header,
  body.theme-single .def-line {
    grid-template-columns: minmax(0, 1fr) 44px 54px;
  }
}

/* v19: persistent team navigation and multi-season team pages */
body.theme-single .team-logo-rail {
  display: grid;
  grid-template-columns: repeat(33, minmax(34px, 1fr));
  gap: 2px;
  width: 100%;
  margin: 2px 0 4px;
  padding: 3px 2px 5px;
  overflow-x: auto;
  scrollbar-width: thin;
}

body.theme-single .team-logo-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: 38px;
  padding: 3px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  cursor: pointer;
}

body.theme-single .team-logo-btn:hover {
  border-color: #b9c1b9;
  background: #f1f4ef;
}

body.theme-single .team-logo-btn.active {
  border-color: #72b51d;
  background: #eff9e2;
  box-shadow: inset 0 0 0 1px #72b51d;
}

body.theme-single .team-rail-logo {
  display: block;
  width: 29px;
  height: 29px;
  object-fit: contain;
}

body.theme-single .team-rail-error {
  grid-column: 1 / -1;
  color: #7a827b;
  font-size: 10px;
  text-align: center;
}

body.theme-single .team-year-group {
  display: none;
  align-items: center;
  gap: 2px;
  padding: 1px;
  border: 1px solid #4f5751;
  border-radius: 999px;
  background: #111512;
}

body.theme-single .team-year-btn {
  min-width: 43px;
  height: 24px;
  padding: 0 5px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: #fff;
  cursor: pointer;
  font-size: 8.5px;
  font-weight: 600;
}

body.theme-single .team-year-btn.active {
  background: #84c52a;
  color: #111713;
}

.app-shell.archive-mode .week-nav {
  display: flex;
}

.app-shell.archive-mode .matchups-strip {
  display: flex;
  grid-template-columns: none;
  gap: 5px;
  max-height: none;
  overflow: visible;
}

.app-shell.archive-mode .matchup-pill {
  flex: 1 1 0;
  width: auto;
  min-width: 0;
  min-height: 57px;
  padding: 5px 4px;
}

.app-shell.archive-mode .team-year-group {
  display: inline-flex;
}

.app-shell.archive-mode .team-panel-header {
  flex-wrap: wrap;
}

.app-shell.archive-mode .team-header-center {
  flex: 1 1 auto;
  flex-wrap: wrap;
}

.app-shell.archive-mode .archive-overview-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 8px;
}

.app-shell.archive-mode #homeFilterList {
  margin-top: 5px;
}

body.theme-single .team-defense-grid {
  display: grid;
  width: 100%;
}

body.theme-single .team-defense-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 45px 58px;
  align-items: center;
  gap: 8px;
  min-height: 31px;
  border-bottom: 1px solid #e0e4df;
  color: #202521;
  font-size: 11.5px;
}

body.theme-single .team-defense-row:last-child {
  border-bottom: 0;
}

body.theme-single .team-defense-row span:nth-child(2),
body.theme-single .team-defense-row span:nth-child(3) {
  text-align: right;
  white-space: nowrap;
}

body.theme-single .team-defense-header {
  min-height: 24px;
  color: #6d756e;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

body.theme-single .team-schedule-panel {
  display: none;
  min-width: 0;
  margin-top: 8px;
  border: 1px solid #cbd1ca;
  border-left: 4px solid var(--team-accent, #568e0f);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.app-shell.archive-mode .team-schedule-panel {
  display: block;
}

body.theme-single .team-schedule-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 32px;
  padding: 6px 10px;
  border: 0;
  border-bottom: 1px solid #d7dcd5;
  background: #f1f4ef;
  color: #202521;
  cursor: pointer;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

body.theme-single .team-schedule-strip {
  display: flex;
  gap: 6px;
  width: 100%;
  padding: 8px;
  overflow-x: auto;
  scrollbar-width: thin;
}

body.theme-single .team-schedule-game {
  flex: 0 0 96px;
  min-width: 96px;
  padding: 6px 7px;
  border: 1px solid #d7dcd5;
  border-radius: 7px;
  background: #fbfcfa;
  color: #202521;
  text-align: center;
}

body.theme-single .team-schedule-game.result-w { border-top: 3px solid #5c9b16; }
body.theme-single .team-schedule-game.result-l { border-top: 3px solid #b31d32; }
body.theme-single .team-schedule-game.result-t { border-top: 3px solid #a66e00; }
body.theme-single .team-schedule-week { color: #707871; font-size: 8.5px; font-weight: 700; text-transform: uppercase; }
body.theme-single .team-schedule-opponent { margin-top: 2px; font-size: 11px; font-weight: 800; }
body.theme-single .team-schedule-result { margin-top: 2px; font-size: 9.5px; font-weight: 650; }

body.theme-single .opponent-select {
  min-width: 142px;
  height: 28px;
  padding: 3px 25px 3px 8px;
  border: 1px solid #8f988f;
  border-radius: 7px;
  background: #fff;
  color: #111713;
  font-size: 10px;
  font-weight: 600;
}

@media (max-width: 980px) {
  .app-shell.archive-mode .archive-overview-grid {
    grid-template-columns: 1fr 1fr;
  }
  .app-shell.archive-mode #archiveDefensePanel {
    grid-column: 1 / -1;
  }
}

@media (max-width: 720px) {
  body.theme-single .team-logo-rail {
    grid-template-columns: repeat(33, 38px);
    justify-content: start;
  }
  .app-shell.archive-mode .archive-overview-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .app-shell.archive-mode #archiveDefensePanel {
    grid-column: auto;
  }
  .app-shell.archive-mode .team-header-center {
    width: 100%;
    justify-content: space-between;
  }
  body.theme-single .team-year-group {
    max-width: 100%;
    overflow-x: auto;
  }
  body.theme-single .team-year-btn {
    min-width: 41px;
  }
  body.theme-single .opponent-select {
    flex: 1 1 150px;
    min-width: 128px;
  }
}

/* 2026-08-23 v21: compact team overview and shared player-season controls */
.app-shell.archive-mode .week-nav {
  justify-content: center;
}

.app-shell.archive-mode .team-overview-shell {
  display: grid;
  grid-template-columns: minmax(390px, 1.35fr) minmax(0, 2fr);
  align-items: stretch;
  gap: 10px;
  margin-top: 6px;
}

.app-shell.archive-mode .team-overview-shell > #homeFilterList {
  height: 100%;
  margin-top: 0;
}

.app-shell.archive-mode .team-overview-shell .archive-overview-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 10px;
  margin-top: 0;
}

.app-shell.archive-mode .team-overview-shell .archive-summary-card {
  height: 100%;
}

.app-shell.archive-mode .team-summary-sections {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: 10px;
}

.app-shell.archive-mode .team-player-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: 10px;
  min-width: 0;
  margin-top: 10px;
}

.app-shell.archive-mode .team-player-grid > .team-history-player-card:only-child,
.app-shell.archive-mode .team-player-grid > .empty-state {
  grid-column: 1 / -1;
}

body.theme-single .team-history-player-header {
  display: grid;
  grid-template-columns: auto minmax(96px, auto) minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
  min-height: 39px;
  padding: 5px 7px;
}

body.theme-single .team-history-player-header .player-name {
  min-width: 0;
  white-space: nowrap;
}

body.theme-single .team-history-master-controls {
  justify-content: flex-end;
  flex-wrap: nowrap;
  min-width: 0;
  margin: 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
}

body.theme-single .team-history-master-controls .player-period-group {
  flex-wrap: nowrap;
}

body.theme-single .team-history-master-controls .player-period-btn {
  min-width: 32px;
  min-height: 26px;
  padding: 3px 6px;
}

body.theme-single .team-history-master-controls .opponent-select {
  flex: 0 1 142px;
  min-width: 112px;
  max-width: 142px;
  height: 26px;
}

body.theme-single .player-season-header {
  min-height: 26px;
}

body.theme-single .player-season-toggle {
  gap: 8px;
  padding: 4px 9px;
  font-size: 10.5px;
}

body.theme-single .player-season-section.open .player-season-header {
  min-height: 31px;
}

body.theme-single .player-season-section.open .player-season-toggle {
  padding-block: 6px;
}

body.theme-single .player-season-chevron {
  font-size: 14px;
}

body.theme-single .player-season-content {
  padding: 6px 7px 8px;
}

body.theme-single .team-schedule-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(54px, 1fr));
  gap: 4px;
  padding: 6px;
  overflow: visible;
}

body.theme-single .team-schedule-game {
  min-width: 0;
  padding: 4px 2px;
  border-radius: 5px;
}

body.theme-single .team-schedule-week {
  font-size: 7.5px;
}

body.theme-single .team-schedule-opponent {
  margin-top: 1px;
  font-size: 9.5px;
}

body.theme-single .team-schedule-result {
  margin-top: 1px;
  font-size: 8.5px;
}

@media (max-width: 1080px) {
  .app-shell.archive-mode .team-overview-shell {
    grid-template-columns: minmax(320px, 1fr) minmax(0, 1.6fr);
  }

  body.theme-single .team-history-player-header {
    grid-template-columns: auto minmax(0, 1fr) auto;
  }

  body.theme-single .team-history-player-header > .player-fav-btn {
    grid-column: 1;
    grid-row: 1;
  }

  body.theme-single .team-history-player-header > .player-name {
    grid-column: 2;
    grid-row: 1;
  }

  body.theme-single .team-history-player-header > .player-remove-btn {
    grid-column: 3;
    grid-row: 1;
  }

  body.theme-single .team-history-master-controls {
    grid-column: 1 / -1;
    grid-row: 2;
    justify-content: flex-start;
  }
}

@media (max-width: 820px) {
  .app-shell.archive-mode .team-overview-shell {
    grid-template-columns: minmax(0, 1fr);
  }

  .app-shell.archive-mode .team-overview-shell .archive-overview-grid,
  .app-shell.archive-mode .team-summary-sections,
  .app-shell.archive-mode .team-player-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .app-shell.archive-mode .team-player-grid > .team-history-player-card {
    grid-column: 1;
  }
}

/* 2026-08-23 v24: unified summary bars and gap-free player columns */
.team-header-player-zone {
  display: contents;
}

.app-shell.archive-mode .team-header-player-zone {
  display: flex;
  grid-column: 1;
  grid-row: 1;
  align-items: center;
  width: 100%;
  min-width: 0;
}

.app-shell.archive-mode .team-header-player-zone .team-header-left {
  width: auto;
  min-width: 0;
  padding-right: 0;
  flex: 0 1 auto;
}

.app-shell.archive-mode .team-header-player-zone .team-name {
  flex: 0 1 auto;
}

.app-shell.archive-mode .team-header-player-zone .team-header-center {
  display: flex;
  justify-content: center;
  width: auto;
  min-width: 152px;
  margin: 0;
  flex: 1 1 auto;
}

body.theme-single .team-schedule-panel,
.app-shell.archive-mode .team-summary-sections > .summary-section-card {
  border-left-width: 5px;
  border-left-color: var(--team-accent, #568e0f);
  background: #fff;
}

.app-shell.archive-mode .team-summary-sections > .summary-section-card {
  padding: 0 7px 7px;
  overflow: hidden;
}

body.theme-single .team-schedule-header,
.app-shell.archive-mode .summary-section-card .section-header-row {
  min-height: 32px;
  margin: 0;
  padding: 4px 2px;
  border-bottom-color: #d7dcd5;
  background: #fff;
  color: #202521;
}

body.theme-single .team-schedule-header,
.app-shell.archive-mode .summary-section-card .section-title {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.app-shell.archive-mode .summary-section-card.collapsed {
  padding-bottom: 0;
}

.app-shell.archive-mode .summary-section-card.collapsed .section-header-row {
  border-bottom: 0;
}

.app-shell.archive-mode .summary-section-card.collapsed .section-header-controls,
.app-shell.archive-mode .summary-section-card.collapsed .hit-toggle-group {
  display: none !important;
}

body.theme-single .team-schedule-header > span:last-child,
body.theme-single .summary-section-card .section-collapse-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  min-width: 18px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: #111713;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
}

body.theme-single .summary-section-card .section-collapse-btn:hover {
  border: 0;
  box-shadow: none;
  color: var(--team-accent, #568e0f);
}

.app-shell.archive-mode .archive-summary-card .def-line {
  min-height: 23px;
  padding-block: 3px;
}

.app-shell.archive-mode .archive-team-leaders-title {
  margin-top: 3px;
  padding: 4px 0 3px;
  border-top: 1px solid #dfe3de;
  font-size: 10.5px;
  font-weight: 650;
  letter-spacing: .1em;
}

.app-shell.archive-mode .archive-leader-row {
  min-height: 22px;
}

.app-shell.archive-mode .team-player-grid > .team-player-column {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}

.app-shell.archive-mode .team-player-grid > .team-player-column > .team-history-player-card {
  width: 100%;
  margin: 0;
}

@media (max-width: 820px) {
  .app-shell.archive-mode .team-header-player-zone {
    grid-column: 1;
    grid-row: 1 / span 2;
    flex-wrap: wrap;
  }

  .app-shell.archive-mode .team-header-player-zone .team-header-left,
  .app-shell.archive-mode .team-header-player-zone .team-header-center {
    width: 100%;
  }

  .app-shell.archive-mode .team-header-player-zone .team-header-center {
    justify-content: center;
  }

  .app-shell.archive-mode .team-player-grid > .team-player-column {
    display: contents;
  }
}

@media (max-width: 520px) {
  .app-shell.archive-mode .team-overview-shell .archive-overview-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  body.theme-single .team-history-master-controls {
    align-items: stretch;
    flex-wrap: wrap;
  }

  body.theme-single .team-history-master-controls .player-period-group {
    flex: 1 1 100%;
  }

  body.theme-single .team-history-master-controls .player-period-btn {
    flex: 1 1 0;
  }

  body.theme-single .team-history-master-controls .opponent-select {
    flex: 1 1 100%;
    width: 100%;
    max-width: none;
  }
}

/* 2026-08-23 v22: consolidated team summaries and cross-team history */
.app-shell.archive-mode .team-panel-header {
  margin-bottom: 0;
}

.app-shell.archive-mode .team-panel-header .team-header-center:empty {
  display: none;
}

.app-shell.archive-mode .team-overview-shell {
  margin-top: 0;
}

.app-shell.archive-mode #homeFilterList {
  position: relative;
  padding-top: 3px;
}

.app-shell.archive-mode .team-player-filter-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: 25px;
  margin: -1px 0 1px;
  padding-bottom: 3px;
  border-bottom: 1px solid #dfe3de;
}

.app-shell.archive-mode .team-player-filter-toolbar .pos-toggle-group {
  flex: 0 0 auto;
}

.app-shell.archive-mode .archive-summary-card {
  align-self: stretch;
}

.app-shell.archive-mode .archive-offense-title {
  margin-top: 5px;
  padding-top: 7px;
  border-top: 1px solid #dfe3de;
  text-align: center;
}

.app-shell.archive-mode .archive-offense-grid,
.app-shell.archive-mode .archive-defense-grid {
  margin-top: 1px;
}

.app-shell.archive-mode .archive-summary-card .def-grid {
  gap: 0;
}

.app-shell.archive-mode .archive-summary-card .def-grid-col:first-child {
  padding-right: 10px;
}

.app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
  padding-left: 10px;
}

.app-shell.archive-mode .archive-summary-card .def-column-header,
.app-shell.archive-mode .archive-summary-card .def-line {
  grid-template-columns: minmax(0, 1fr) 35px 43px;
  gap: 5px;
}

.app-shell.archive-mode .archive-summary-card .def-line {
  min-height: 26px;
  padding-block: 5px;
  font-size: 10.5px;
}

.app-shell.archive-mode .team-summary-sections > .section-card {
  min-width: 0;
}

body.theme-single .player-season-section:not(.open) .player-season-header {
  min-height: 22px;
}

body.theme-single .player-season-section:not(.open) .player-season-toggle {
  min-height: 22px;
  padding-block: 2px;
}

body.theme-single .cross-season-player-card .stats-table th:first-child,
body.theme-single .cross-season-player-card .stats-table td:first-child {
  min-width: 116px;
  white-space: normal;
}

@media (max-width: 1080px) {
  .app-shell.archive-mode .archive-summary-card .def-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col:first-child,
  .app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
    padding-inline: 0;
    border-left: 0;
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
    padding-top: 4px;
    border-top: 1px solid #d7dcd5;
  }
}

@media (max-width: 820px) {
  .app-shell.archive-mode .matchups-strip {
    justify-content: flex-start;
    gap: 4px;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
  }

  .app-shell.archive-mode .matchup-pill {
    flex: 0 0 84px;
    min-width: 84px;
  }

  .app-shell.archive-mode .team-player-filter-toolbar {
    justify-content: flex-end;
  }

  .app-shell.archive-mode .archive-summary-card .def-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col:first-child {
    padding-right: 8px;
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
    padding-top: 0;
    padding-left: 8px;
    border-top: 0;
    border-left: 1px solid #d7dcd5;
  }
}

@media (max-width: 560px) {
  .app-shell.archive-mode .archive-summary-card .def-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col:first-child,
  .app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
    padding-inline: 0;
    border-left: 0;
  }

  .app-shell.archive-mode .archive-summary-card .def-grid-col-positions {
    padding-top: 4px;
    border-top: 1px solid #d7dcd5;
  }
}

/* 2026-08-23 v23: flush team overview, aligned header filters, and compact rankings */
.app-shell.archive-mode .team-panel-header {
  display: grid;
  grid-template-columns: minmax(390px, 1.35fr) minmax(0, 2fr);
  align-items: center;
  min-height: 40px;
  margin: 0;
  padding: 4px 7px 4px 8px;
}

.app-shell.archive-mode .team-panel-header .team-header-left {
  grid-column: 1;
  grid-row: 1;
  width: 100%;
  min-width: 0;
  padding-right: 156px;
}

.app-shell.archive-mode .team-panel-header .team-header-center {
  display: flex;
  grid-column: 1;
  grid-row: 1;
  justify-self: end;
  width: auto;
  margin: 0 10px 0 0;
}

.app-shell.archive-mode .team-overview-shell,
.app-shell.archive-mode .team-overview-shell .archive-overview-grid {
  row-gap: 0;
}

.app-shell.archive-mode .team-overview-shell > #homeFilterList,
.app-shell.archive-mode .team-overview-shell .archive-summary-card {
  margin-top: 0;
  border-top: 0;
  border-left-width: 5px;
  border-radius: 0 0 8px 8px;
}

.app-shell.archive-mode #homeFilterList {
  padding: 3px 9px 4px;
}

.app-shell.archive-mode #homeFilterList .visibility-pos-row {
  min-height: 0;
}

.app-shell.archive-mode #homeFilterList .player-filter-item {
  min-height: 23px;
  padding-block: 1px;
  font-size: 10.5px;
  font-weight: 400;
  line-height: 1.12;
}

.app-shell.archive-mode #homeFilterList .player-filter-name {
  font-weight: 400;
}

.app-shell.archive-mode .archive-summary-card {
  gap: 0;
  padding: 6px 10px 7px;
}

.app-shell.archive-mode .archive-summary-title,
.app-shell.archive-mode .archive-ranking-group-title {
  font-size: 13px;
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.app-shell.archive-mode .archive-summary-title {
  margin-bottom: 4px;
}

.app-shell.archive-mode .archive-leader-row {
  grid-template-columns: 32px minmax(104px, .9fr) minmax(0, 1.45fr);
  gap: 6px;
  min-height: 26px;
}

.app-shell.archive-mode .archive-leader-pos,
.app-shell.archive-mode .archive-leader-name,
.app-shell.archive-mode .archive-leader-stats,
.app-shell.archive-mode .archive-leader-stat,
.app-shell.archive-mode .archive-leader-stat strong {
  font-size: 10.5px;
  font-weight: 400;
  line-height: 1.18;
}

.app-shell.archive-mode .archive-offense-title {
  margin-top: 3px;
  padding: 5px 0 4px;
}

body.theme-single .team-history-master-controls .opponent-select.active,
body.theme-single .opponent-select.active {
  border-color: #67a91b;
  background: #84c52a;
  color: #111713;
  font-weight: 600;
}

body.theme-single .opponent-select.active option {
  background: #fff;
  color: #111713;
}

@media (max-width: 1080px) {
  .app-shell.archive-mode .team-panel-header {
    grid-template-columns: minmax(320px, 1fr) minmax(0, 1.6fr);
  }
}

@media (max-width: 820px) {
  .app-shell.archive-mode .team-panel-header {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto;
    row-gap: 3px;
  }

  .app-shell.archive-mode .team-panel-header .team-header-left {
    grid-column: 1;
    grid-row: 1;
    padding-right: 0;
  }

  .app-shell.archive-mode .team-panel-header .team-header-center {
    grid-column: 1;
    grid-row: 2;
    justify-self: end;
    margin-right: 0;
  }
}

/* v24 final cascade: keep nested header centering and compact overview rows */
.app-shell.archive-mode .team-header-player-zone .team-header-left {
  width: auto;
  min-width: 0;
  padding-right: 0;
  flex: 0 1 auto;
}

.app-shell.archive-mode .team-header-player-zone .team-header-center {
  display: flex;
  justify-content: center;
  justify-self: stretch;
  width: auto;
  min-width: 152px;
  margin: 0;
  flex: 1 1 auto;
}

.app-shell.archive-mode .archive-summary-card .def-line {
  min-height: 23px;
  padding-block: 3px;
}

.app-shell.archive-mode .archive-team-leaders-title {
  margin-top: 3px;
  padding: 4px 0 3px;
  border-top: 1px solid #dfe3de;
  font-size: 10.5px;
  font-weight: 650;
  letter-spacing: .1em;
}

.app-shell.archive-mode .archive-leader-row {
  min-height: 22px;
}

/* 2026-08-23 v25: equal team overview columns and tighter navigation rhythm */
body.theme-single .team-logo-rail {
  margin: -2.5px 0;
  padding: 3px 2px 0;
}

body.theme-single .team-logo-btn {
  height: 37px;
}

.app-shell.archive-mode .team-header-player-zone {
  grid-column: 1 / -1;
  justify-content: flex-start;
  width: max-content;
  max-width: 100%;
}

.app-shell.archive-mode .team-header-player-zone .team-header-center {
  justify-content: flex-start;
  width: auto;
  min-width: 0;
  margin: 0 0 0 12px;
  flex: 0 0 auto;
}

.app-shell.archive-mode .archive-team-leaders-title {
  margin-top: 8px;
  padding: 4px 0 3px;
  border-top: 0;
}

.app-shell.archive-mode .archive-team-leaders-title + .archive-leader-row {
  border-top: 0;
}

.app-shell.archive-mode .pos-toggle,
.app-shell.archive-mode .hit-toggle,
.app-shell.archive-mode .player-period-btn,
.app-shell.archive-mode .opponent-toggle,
.app-shell.archive-mode .opponent-select,
.app-shell.archive-mode .team-year-btn {
  height: 24px;
  min-height: 24px;
  padding-top: 0;
  padding-bottom: 0;
}

.app-shell.archive-mode .team-history-master-controls .player-period-btn {
  min-height: 24px;
}

.app-shell.archive-mode .team-history-master-controls .opponent-select {
  height: 24px;
  min-height: 24px;
}

.app-shell.archive-mode .opponent-select {
  padding-left: 8px;
  padding-right: 25px;
}

body.theme-single .team-schedule-header {
  padding-left: 9px;
  padding-right: 2px;
}

@media (min-width: 821px) {
  .app-shell.archive-mode .team-panel-header {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }

  .app-shell.archive-mode .team-overview-shell {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 10px;
  }

  .app-shell.archive-mode .team-overview-shell .archive-overview-grid {
    display: contents;
  }

  .app-shell.archive-mode .team-overview-shell > #homeFilterList {
    grid-column: auto;
  }

  .app-shell.archive-mode #homeFilterList .visibility-pos-chips {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    column-gap: 3px;
  }

  .app-shell.archive-mode #homeFilterList .player-filter-item {
    gap: 3px;
  }
}

/* 2026-08-23 v26: mobile-only layout and no-scroll data tables */
@media (max-width: 767px) {
  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  body.theme-single {
    display: block;
    min-width: 0;
    overflow-x: hidden;
    background: #f1f3ef;
  }

  body.theme-single .app-shell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0 10px calc(76px + env(safe-area-inset-bottom));
    border: 0;
    border-radius: 0;
    box-shadow: none;
    gap: 8px;
    overflow: hidden;
  }

  /* Keep the brand visible without spending a second row on Site History. */
  body.theme-single .brand-header {
    grid-template-columns: 52px minmax(0, 1fr) 52px;
    grid-template-rows: 1fr;
    min-height: 76px;
    margin: 0 -10px;
    padding: max(8px, env(safe-area-inset-top)) 10px 8px;
    gap: 6px;
    border-radius: 0;
  }

  body.theme-single .brand-logo {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
    width: 50px;
    height: 34px;
    margin: 0;
  }

  body.theme-single .brand-copy {
    display: block;
    grid-column: 2;
    grid-row: 1;
    justify-self: center;
    width: 100%;
  }

  body.theme-single .brand-name {
    font-size: clamp(19px, 6vw, 25px);
    white-space: nowrap;
  }

  body.theme-single .brand-tagline {
    margin-top: 5px;
    font-size: 8.5px;
    letter-spacing: .12em;
    white-space: nowrap;
  }

  body.theme-single .brand-actions {
    display: flex;
    grid-column: 3;
    grid-row: 1;
    justify-self: end;
    align-items: center;
    width: auto;
    margin: 0;
  }

  body.theme-single .changelog-toggle {
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    justify-content: center;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }

  body.theme-single .changelog-toggle:hover,
  body.theme-single .changelog-toggle:active {
    border: 0;
    background: transparent;
    box-shadow: none;
  }

  body.theme-single .changelog-toggle:focus-visible {
    outline: 2px solid #8bd020;
    outline-offset: 3px;
    border-radius: 999px;
  }

  body.theme-single .changelog-toggle span {
    display: none;
  }

  body.theme-single .changelog-toggle svg {
    width: 20px;
    height: 20px;
  }

  /* Horizontal rails remain swipeable, while the main page never overflows. */
  body.theme-single .team-logo-rail {
    grid-template-columns: repeat(33, 44px);
    width: calc(100% + 20px);
    margin: -2px -10px 2px;
    padding: 4px 10px 7px;
    gap: 2px;
    justify-content: start;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline proximity;
    scrollbar-width: none;
  }

  body.theme-single .team-logo-rail::-webkit-scrollbar,
  body.theme-single .matchups-strip::-webkit-scrollbar {
    display: none;
  }

  body.theme-single .team-logo-btn {
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    scroll-snap-align: start;
  }

  body.theme-single .team-rail-logo {
    width: 31px;
    height: 31px;
  }

  body.theme-single .week-nav {
    min-height: 24px;
    height: 24px;
  }

  body.theme-single .matchups-strip,
  .app-shell.archive-mode .matchups-strip {
    width: calc(100% + 20px);
    margin-inline: -10px;
    padding: 2px 10px 6px;
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline mandatory;
    scrollbar-width: none;
  }

  body.theme-single .matchup-pill,
  .app-shell.archive-mode .matchup-pill {
    flex: 0 0 104px;
    width: 104px;
    min-width: 104px;
    min-height: 60px;
    scroll-snap-align: start;
  }

  body.theme-single .info-row,
  body.theme-single .info-center-stack {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }

  body.theme-single .info-center-stack {
    grid-column: 1;
    grid-row: 1;
  }

  body.theme-single .info-row > .info-cell:first-child {
    grid-column: 1;
    grid-row: 2;
  }

  body.theme-single .info-row > .info-cell:last-child {
    grid-column: 1;
    grid-row: 3;
  }

  body.theme-single .info-cell,
  body.theme-single .info-center-stack .info-cell {
    min-height: 0;
    padding: 10px;
    border-left-width: 4px;
  }

  body.theme-single .odds-grid {
    grid-template-columns: minmax(34px, .65fr) repeat(4, minmax(0, 1fr));
    column-gap: 3px;
    row-gap: 7px;
    font-size: 10px;
  }

  body.theme-single .odds-hcell {
    font-size: 8px;
    letter-spacing: 0;
  }

  body.theme-single .odds-team,
  body.theme-single .odds-val,
  body.theme-single .odds-val span:first-child,
  body.theme-single .odds-implied {
    min-width: 0;
    font-size: 9.5px;
  }

  /* Use the full weather row so the quarter controls are roomy and square. */
  body.theme-single .weather-quarter-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 38px minmax(0, 1fr);
    align-items: center;
    width: 100%;
    gap: 8px !important;
  }

  body.theme-single .weather-quarter-group {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 48px));
    justify-content: space-between;
    width: 100%;
    gap: 8px;
  }

  body.theme-single .weather-icon-wrap {
    width: 38px;
    min-width: 38px;
  }

  body.theme-single .weather-quarter-btn {
    width: 100%;
    min-width: 0;
    height: 40px;
    min-height: 40px;
    padding: 0 !important;
    border-radius: 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  body.theme-single .teams-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
  }

  body.theme-single .team-panel-header {
    position: relative;
    min-height: 0;
    padding: 9px 8px;
    align-items: stretch;
    gap: 8px;
  }

  body.theme-single .team-header-left,
  body.theme-single .team-header-center {
    width: 100%;
    min-width: 0;
    margin: 0;
  }

  body.theme-single .team-header-left {
    min-height: 40px;
    padding-right: 0;
  }

  body.theme-single .team-name {
    min-width: 0;
    font-size: 13px;
    white-space: normal;
  }

  body.theme-single .expand-btn {
    display: none !important;
  }

  body.theme-single .pos-toggle-group {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    width: 100%;
    height: auto;
    min-height: 38px;
    gap: 4px;
    overflow: visible;
  }

  body.theme-single .pos-toggle,
  body.theme-single .hit-toggle,
  body.theme-single .player-period-btn,
  body.theme-single .opponent-toggle,
  body.theme-single .team-year-btn {
    min-height: 36px;
    height: 36px;
    padding-inline: 5px;
    font-size: 9px;
  }

  body.theme-single .pos-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    height: 38px;
    min-height: 38px;
    padding: 0 4px;
    line-height: 1;
    overflow: visible;
  }

  body.theme-single .player-select,
  body.theme-single .opponent-select {
    min-height: 40px;
    height: 40px;
    font-size: 11px;
  }

  body.theme-single .player-filter-list {
    padding: 3px 8px 4px;
  }

  body.theme-single .visibility-pos-row {
    min-height: 20px;
    padding: 1px 0;
  }

  body.theme-single .visibility-pos-chips {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px 4px;
  }

  body.theme-single .player-filter-item {
    min-height: 22px;
    padding-block: 0;
    font-size: 10px;
    line-height: 1;
  }

  /* Keep every summary title and its collapse control on one top row. */
  body.theme-single .summary-section-card .section-header-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 4px;
    flex-wrap: nowrap;
  }

  body.theme-single .summary-section-card .section-header-left {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    min-width: 0;
    gap: 4px;
  }

  body.theme-single .summary-section-card .section-title {
    grid-row: 1;
    min-width: 0;
  }

  body.theme-single .summary-section-card .section-collapse-btn {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
    justify-self: end;
    margin: 0;
  }

  body.theme-single .team-body-scroll {
    overflow: visible;
    padding-right: 0;
  }

  body.theme-single .position-section {
    margin-top: 10px;
    padding: 0 7px 8px;
  }

  body.theme-single .pos-header {
    margin-inline: -7px;
    padding: 9px 10px;
  }

  body.theme-single .player-card {
    padding: 8px;
    margin-bottom: 8px;
  }

  body.theme-single .player-card-header {
    min-height: 40px;
  }

  body.theme-single .player-split-controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 88px;
    align-items: stretch;
    gap: 5px;
    padding: 6px;
  }

  body.theme-single .player-period-group {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    width: 100%;
    min-width: 0;
  }

  body.theme-single .player-period-btn {
    min-width: 0;
    width: 100%;
  }

  body.theme-single .opponent-filter,
  body.theme-single .opponent-select {
    width: 88px;
    min-width: 0;
    max-width: 88px;
  }

  body.theme-single .opponent-toggle {
    width: 88px;
    min-width: 0;
    max-width: 88px;
    padding-inline: 4px;
    white-space: nowrap;
  }

  /* Mobile tables always fit their card: no sideways scrolling is required. */
  body.theme-single .stats-table-wrapper {
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
    padding: 0;
    overflow: visible;
  }

  body.theme-single .stats-table,
  body.theme-single .section-table {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    table-layout: fixed;
    font-size: clamp(7.5px, 2.35vw, 9.5px);
    line-height: 1.12;
  }

  body.theme-single .stats-table th,
  body.theme-single .stats-table td,
  body.theme-single .section-table th,
  body.theme-single .section-table td {
    min-width: 0;
    padding: 5px 2px;
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
  }

  body.theme-single .stats-table th,
  body.theme-single .section-table th {
    height: 31px;
    padding: 4px 2px;
    white-space: normal;
    overflow-wrap: anywhere;
    hyphens: auto;
    line-height: 1.05;
    vertical-align: middle;
  }

  body.theme-single .stats-table th:first-child,
  body.theme-single .stats-table td:first-child,
  body.theme-single .section-table th:first-child,
  body.theme-single .section-table td:first-child {
    width: 23%;
    padding-left: 4px;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  body.theme-single .stats-table th:nth-child(2),
  body.theme-single .stats-table td:nth-child(2),
  body.theme-single .section-table th:nth-child(2),
  body.theme-single .section-table td:nth-child(2) {
    width: 12%;
  }

  body.theme-single .stats-table th:last-child,
  body.theme-single .stats-table td:last-child,
  body.theme-single .section-table th:last-child,
  body.theme-single .section-table td:last-child {
    padding-right: 4px;
  }

  body.theme-single .fav-panel {
    width: 100%;
    max-width: 100%;
    border-inline: 0;
    border-radius: 12px 12px 0 0;
  }

  body.theme-single .fav-panel-body {
    padding: 8px 6px max(10px, env(safe-area-inset-bottom));
  }

  body.theme-single .fav-row {
    grid-template-columns: minmax(0, 1fr) minmax(64px, .8fr) 72px 72px 28px;
    gap: 3px;
    padding-inline: 4px;
    font-size: 9px;
  }

  body.theme-single .fav-main,
  body.theme-single .fav-stat-type,
  body.theme-single .fav-hit-label,
  body.theme-single .fav-hit-rate {
    min-width: 0;
    font-size: 9px;
  }

  body.theme-single .changelog-modal {
    width: calc(100vw - 20px);
    max-height: calc(100dvh - 20px);
    margin: 10px;
  }
}

@media (max-width: 380px) {
  body.theme-single .app-shell {
    padding-inline: 7px;
  }

  body.theme-single .brand-header {
    grid-template-columns: 46px minmax(0, 1fr) 46px;
    margin-inline: -7px;
    padding-inline: 7px;
  }

  body.theme-single .brand-logo {
    width: 44px;
  }

  body.theme-single .brand-name {
    font-size: 18px;
  }

  body.theme-single .brand-tagline {
    font-size: 7.5px;
  }

  body.theme-single .changelog-toggle {
    width: 42px;
    min-width: 42px;
    height: 42px;
    min-height: 42px;
  }

  body.theme-single .player-split-controls {
    grid-template-columns: minmax(0, 1fr) 80px;
    gap: 4px;
    padding-inline: 4px;
  }

  body.theme-single .opponent-filter,
  body.theme-single .opponent-select,
  body.theme-single .opponent-toggle {
    width: 80px;
    max-width: 80px;
    font-size: 8px;
  }

  body.theme-single .player-period-btn {
    padding-inline: 2px;
    font-size: 8px;
  }

  body.theme-single .team-logo-rail,
  body.theme-single .matchups-strip,
  .app-shell.archive-mode .matchups-strip {
    width: calc(100% + 14px);
    margin-inline: -7px;
    padding-inline: 7px;
  }

  body.theme-single .stats-table,
  body.theme-single .section-table {
    font-size: 7.5px;
  }

  body.theme-single .stats-table th,
  body.theme-single .stats-table td,
  body.theme-single .section-table th,
  body.theme-single .section-table td {
    padding-inline: 1px;
  }
}

/* 2026-08-24 v29: mobile team position groups and collapsible summaries */
.archive-summary-header,
.archive-summary-content {
  display: contents;
}

.archive-summary-collapse,
.archive-team-leaders-panel,
.defense-collapse-btn {
  display: none;
}

@media (max-width: 767px) {
  .app-shell.archive-mode .team-overview-shell {
    display: block;
  }

  /* The checkbox rows remain, but the redundant position toggle strip is gone. */
  body.theme-single .team-header-center,
  body.theme-single .pos-toggle-group {
    display: none !important;
  }

  .app-shell.archive-mode .team-overview-shell .archive-overview-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 9px;
    margin-top: 9px;
  }

  .app-shell.archive-mode .team-overview-shell .archive-summary-card,
  .app-shell.archive-mode .archive-team-leaders-panel {
    display: block;
    margin: 0;
    padding: 0 8px 8px;
    overflow: hidden;
    border: 1px solid #cbd1ca;
    border-left: 5px solid var(--team-accent, #568e0f);
    border-radius: 11px;
    background: #ffffff;
  }

  .app-shell.archive-mode .archive-summary-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 38px;
    margin: 0 -8px 6px;
    padding: 6px 7px 6px 10px;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 10px 10px 0 0;
    background: #f1f4ef;
  }

  .app-shell.archive-mode .archive-summary-header .archive-summary-title {
    min-width: 0;
    margin: 0;
    font-size: 11px;
    line-height: 1.15;
  }

  .app-shell.archive-mode .archive-summary-collapse,
  body.theme-single .defense-collapse-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    min-width: 28px;
    height: 28px;
    min-height: 28px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: #111713;
    box-shadow: none;
    font-size: 16px;
    font-weight: 900;
    line-height: 1;
  }

  .app-shell.archive-mode .archive-summary-content {
    display: block;
  }

  .app-shell.archive-mode .archive-summary-card.mobile-collapsed {
    padding-bottom: 0;
  }

  .app-shell.archive-mode .archive-summary-card.mobile-collapsed .archive-summary-header {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 10px;
  }

  .app-shell.archive-mode .archive-summary-card.mobile-collapsed .archive-summary-content {
    display: none;
  }

  .app-shell.archive-mode .archive-team-leaders-inline {
    display: none;
  }

  .app-shell.archive-mode #archiveTeamLeadersPanel {
    order: 1;
  }

  .app-shell.archive-mode #archiveLeadersPanel {
    order: 2;
  }

  .app-shell.archive-mode #archiveRankingsPanel {
    order: 3;
  }

  .app-shell.archive-mode .archive-team-leaders-panel .archive-leader-row:first-child {
    border-top: 0;
  }

  .app-shell.archive-mode .team-mobile-position-groups {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
    width: 100%;
    min-width: 0;
    margin-top: 10px;
  }

  .app-shell.archive-mode .team-mobile-position-section {
    margin: 0;
    padding: 0 7px 8px;
    overflow: hidden;
    border-radius: 10px;
  }

  .app-shell.archive-mode .team-mobile-position-section > .pos-header {
    margin: 0 -7px;
    border-radius: 9px 9px 0 0;
  }

  .app-shell.archive-mode .team-mobile-position-player-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    min-width: 0;
  }

  .app-shell.archive-mode .team-mobile-position-player-list > .player-card {
    width: 100%;
    min-width: 0;
    margin: 0;
  }

  /* Matchup defensive ranking cards collapse from their title row. */
  body.theme-single .app-shell:not(.archive-mode) .defense-card-header {
    grid-template-columns: 34px minmax(0, 1fr) auto auto;
    gap: 6px;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-card-title {
    grid-column: 2;
    min-width: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-record-pill {
    grid-column: 3;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-collapse-btn {
    grid-column: 4;
    justify-self: end;
  }

  body.theme-single .app-shell:not(.archive-mode) .info-cell.mobile-collapsed {
    min-height: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .info-cell.mobile-collapsed .info-body {
    display: none !important;
  }

  /* Prevent the TD Leaders range outline from stretching across its header. */
  body.theme-single .summary-section-card .section-header-left > .hit-toggle-group {
    width: max-content;
    max-width: 100%;
    justify-self: start;
  }
}

/* 2026-08-24 v30: mobile filter height and matchup Hit Rates sizing */
@media (max-width: 767px) {
  /* Do not let the desktop equal-height overview rule stretch this card. */
  .app-shell.archive-mode .team-overview-shell > #homeFilterList {
    height: auto;
    min-height: 0;
    align-self: start;
  }

  /* Give names the room reclaimed from compact data columns. */
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table th:nth-child(1),
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table td:nth-child(1) {
    width: 9%;
    padding-inline: 1px;
    white-space: nowrap;
  }

  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table th:nth-child(2),
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table td:nth-child(2) {
    width: 42%;
    padding-inline: 3px;
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
  }

  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table th:nth-child(3),
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table td:nth-child(3) {
    width: 23%;
    padding-inline: 2px;
  }

  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table th:nth-child(4),
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table td:nth-child(4) {
    width: 12%;
    padding-inline: 1px;
  }

  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table th:nth-child(5),
  body.theme-single .app-shell:not(.archive-mode) .hit-rates-table td:nth-child(5) {
    width: 14%;
    padding-inline: 1px;
  }
}

/* 2026-08-29 v31: weather spacing, team-page flow, and compact history controls */
body.theme-single .weather-quarter-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px minmax(0, 1fr);
  align-items: center;
  width: 100%;
  padding-inline: 0 !important;
  gap: 10px !important;
}

body.theme-single .weather-quarter-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(40px, 46px));
  justify-content: space-between;
  width: 100%;
  min-width: 0;
  gap: 10px;
}

body.theme-single .weather-icon-wrap {
  width: 42px;
  min-width: 42px;
}

body.theme-single .weather-quarter-btn {
  width: 100%;
  min-width: 0;
  height: 40px;
  min-height: 40px;
  padding: 0 !important;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

body.theme-single .weather-quarter-btn.weather-quarter-alert.active {
  border-color: #c51f2f;
  background: #c51f2f;
  color: #ffffff;
  box-shadow: none;
}

.changelog-close,
body.theme-single .changelog-close {
  color: #ffffff !important;
}

@media (max-width: 767px) {
  /* Team-page reading order: banner, schedule, leaders, rankings, filters, details. */
  .app-shell.archive-mode .team-panel[data-side="home"] {
    width: 100%;
    min-width: 0;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-panel-header {
    order: 0;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-schedule-panel {
    order: 1;
    margin-top: 0;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-overview-shell {
    order: 2;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 9px;
    margin-top: 0;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-body-scroll {
    order: 3;
  }

  .app-shell.archive-mode .team-overview-shell .archive-overview-grid {
    order: 1;
    margin-top: 0;
  }

  .app-shell.archive-mode .team-overview-shell > #homeFilterList {
    order: 2;
    width: 100%;
    margin: 0;
    align-self: stretch;
  }

  /* Keep every team-page section on the same left and right rails. */
  .app-shell.archive-mode .top-strip,
  .app-shell.archive-mode .teams-row,
  .app-shell.archive-mode .team-panel-header,
  .app-shell.archive-mode .team-schedule-panel,
  .app-shell.archive-mode .team-overview-shell,
  .app-shell.archive-mode .archive-overview-grid,
  .app-shell.archive-mode .archive-summary-card,
  .app-shell.archive-mode #homeFilterList,
  .app-shell.archive-mode .team-body-scroll {
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
  }

  .app-shell.archive-mode .matchups-strip {
    width: 100%;
    margin-inline: 0;
    padding-inline: 0;
  }
}

@media (min-width: 768px) {
  /* Matchup filters are controlled by the player checkboxes on desktop. */
  body.theme-single .app-shell:not(.archive-mode) .pos-toggle-group {
    display: none !important;
  }

  /* The desktop header uses the clock artwork by itself. */
  body.theme-single .changelog-toggle {
    width: 40px;
    min-width: 40px;
    height: 40px;
    min-height: 40px;
    padding: 0;
    justify-content: center;
    gap: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }

  body.theme-single .changelog-toggle span {
    display: none;
  }

  body.theme-single .changelog-toggle svg {
    width: 20px;
    height: 20px;
  }

  /* Desktop retains the inline leader rows inside Offensive Rankings only. */
  .app-shell.archive-mode #archiveTeamLeadersPanel {
    display: none !important;
  }
}

/* 2026-08-29 v36: filter-specific history notes and uniform mobile title bars */
.summary-control-stack {
  display: inline-flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 3px;
  width: max-content;
  min-width: 0;
}

.section-header-controls {
  align-items: flex-end;
}

.summary-control-stack .summary-past-season-note {
  display: block;
  width: 100%;
  max-width: none;
  line-height: 1.05;
  text-align: left;
  white-space: nowrap;
}

.summary-control-stack .summary-past-season-note[hidden] {
  display: none !important;
}

@media (max-width: 767px) {
  /* Override the stronger desktop rule that joined Player Filter to the row above. */
  .app-shell.archive-mode .team-overview-shell > #homeFilterList {
    overflow: hidden;
    border-top: 1px solid #cbd1ca;
    border-radius: 8px;
  }

  /* Title and collapse control occupy row one; filters receive the full second row. */
  body.theme-single .summary-section-card .section-header-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    min-height: 32px;
  }

  body.theme-single .summary-section-card .section-header-left {
    display: contents;
  }

  body.theme-single .summary-section-card .section-title {
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    min-height: 24px;
    font-size: 12px;
    line-height: 1.1;
  }

  body.theme-single .summary-section-card .section-header-controls {
    grid-column: 1 / -1;
    grid-row: 2;
    align-items: flex-end;
    width: max-content;
    max-width: 100%;
    margin-top: 3px;
  }

  body.theme-single .summary-section-card .section-collapse-btn {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
  }

  /* Restore the readable pre-v35 control sizing while retaining a single row. */
  body.theme-single .summary-section-card .hit-toggle {
    flex: 0 1 auto;
    width: auto;
    min-width: 30px;
    height: 24px;
    min-height: 24px;
    padding-inline: 6px;
    font-size: 9px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 108px;
    min-width: 108px;
    max-width: 108px;
    height: 24px;
    min-height: 24px;
    padding-left: 7px;
    padding-right: 22px;
    font-size: 9px;
  }

  body.theme-single .summary-control-stack .summary-past-season-note {
    font-size: 7.5px;
  }

  /* Give matchup summary cards the same 32px white title bar as positions. */
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card {
    padding: 0 7px 7px;
    overflow: hidden;
    border-radius: 8px;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card .section-header-row {
    margin: 0 -7px 4px;
    padding: 4px 2px 4px 9px;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed {
    padding-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .section-header-row {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 7px;
  }

  /* Defensive ranking cards now use that same title bar and omit the record pill. */
  body.theme-single .app-shell:not(.archive-mode) .info-row > .info-cell {
    padding: 0 7px 8px;
    overflow: hidden;
    border-radius: 8px;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-card-header {
    grid-template-columns: 24px minmax(0, 1fr) 24px;
    align-items: center;
    gap: 6px;
    min-height: 32px;
    margin: 0 -7px 8px;
    padding: 4px 2px 4px 9px;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-team-logo {
    width: 24px;
    height: 24px;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-card-title {
    grid-column: 2;
    align-self: center;
    min-height: 24px;
    font-size: 12px;
    line-height: 1.1;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-record-pill {
    display: none !important;
  }

  body.theme-single .app-shell:not(.archive-mode) .defense-collapse-btn {
    grid-column: 3;
    align-self: center;
    justify-self: end;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
  }

  body.theme-single .app-shell:not(.archive-mode) .info-cell.mobile-collapsed {
    padding-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .info-cell.mobile-collapsed .defense-card-header {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 7px;
  }
}

@media (max-width: 420px) {
  body.theme-single .summary-section-card .hit-toggle {
    min-width: 26px;
    padding-inline: 4px;
    font-size: 8px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 94px;
    min-width: 94px;
    max-width: 94px;
    font-size: 8px;
  }
}

@media (max-width: 360px) {
  body.theme-single .summary-section-card .hit-toggle {
    min-width: 22px;
    padding-inline: 2px;
    font-size: 7.5px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 82px;
    min-width: 82px;
    max-width: 82px;
    padding-left: 4px;
    padding-right: 18px;
    font-size: 7.5px;
  }
}

/* 2026-09-05 v54: linked brand mark, aligned 100% art, and mobile scroll affordance. */
body.theme-single .brand-logo {
  color: inherit;
  text-decoration: none;
  cursor: pointer;
}

body.theme-single .brand-logo:focus-visible {
  outline: 2px solid #8bd020;
  outline-offset: 4px;
  border-radius: 6px;
}

body.theme-single .brand-tagline .brand-hundred {
  display: inline-flex;
  align-items: center;
  height: 1.65em;
  margin-left: .2em;
  padding: 0;
  vertical-align: -.48em;
}

body.theme-single .brand-hundred-image {
  display: block;
  width: auto;
  height: 100%;
  object-fit: contain;
}

@media (max-width: 767px) {
  body.theme-single .team-logo-rail.mobile-scroll-cue,
  body.theme-single .matchups-strip.mobile-scroll-cue {
    scroll-snap-type: none;
  }

  body.theme-single .team-logo-rail.mobile-scroll-cue > .team-logo-btn,
  body.theme-single .matchups-strip.mobile-scroll-cue > .matchup-pill {
    animation: mobile-rail-attention-cue 1000ms cubic-bezier(.22, .72, .28, 1) both;
    will-change: transform;
  }
}

/* 2026-09-05 v55: green Odds and Weather accents on mobile matchup pages. */
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .info-center-stack > .odds-cell,
  body.theme-single .app-shell:not(.archive-mode) .info-center-stack > .weather-cell {
    border-left-color: #84c52a;
  }
}

/* 2026-09-05: phone/tablet home-screen install prompt. */
.install-prompt {
  display: none;
}

@media (max-width: 1366px) and (any-pointer: coarse) {
  .install-prompt.is-visible {
    position: fixed;
    z-index: 10000;
    left: max(12px, env(safe-area-inset-left));
    right: max(12px, env(safe-area-inset-right));
    bottom: max(12px, calc(env(safe-area-inset-bottom) + 10px));
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 12px;
    max-width: 520px;
    margin-inline: auto;
    padding: 16px 42px 16px 16px;
    border: 1px solid rgba(139, 208, 32, .55);
    border-radius: 16px;
    background: #111412;
    color: #ffffff;
    box-shadow: 0 18px 48px rgba(0, 0, 0, .36);
  }

  .install-prompt-icon {
    display: block;
    width: 64px;
    height: 64px;
    border-radius: 14px;
  }

  .install-prompt-content {
    min-width: 0;
  }

  .install-prompt-title {
    margin: 2px 0 12px;
    color: #ffffff;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.2;
  }

  .install-prompt-instructions {
    margin: -3px 0 12px;
    color: #e3e8e1;
    font-size: 13px;
    line-height: 1.4;
  }

  .install-prompt-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  .install-prompt-add,
  .install-prompt-later,
  .install-prompt-close {
    font: inherit;
    cursor: pointer;
  }

  .install-prompt-add,
  .install-prompt-later {
    min-height: 38px;
    padding: 8px 13px;
    border-radius: 9px;
    font-size: 13px;
    font-weight: 800;
  }

  .install-prompt-add {
    border: 1px solid #8bd020;
    background: #8bd020;
    color: #111412;
  }

  .install-prompt-later {
    border: 1px solid #737b74;
    background: transparent;
    color: #ffffff;
  }

  .install-prompt-close {
    position: absolute;
    top: 7px;
    right: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #cfd5cf;
    font-size: 26px;
    line-height: 1;
  }
}

@media (max-width: 420px) and (any-pointer: coarse) {
  .install-prompt.is-visible {
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 10px;
    padding: 14px 38px 14px 14px;
  }

  .install-prompt-icon {
    width: 52px;
    height: 52px;
    border-radius: 12px;
  }

  .install-prompt-title {
    font-size: 15px;
  }
}

/* 2026-08-29 v37: centered team-color history notes and rounded team banner */
.summary-control-stack {
  align-items: center;
}

body.theme-single .summary-control-stack .summary-past-season-note {
  color: var(--team-accent, #445047);
  font-size: 9.5px;
  text-align: center;
}

@media (max-width: 767px) {
  .app-shell.archive-mode .team-panel[data-side="home"] > .team-panel-header {
    border-radius: 8px;
  }
}

/* 2026-08-29 v32: mobile team headers/filter controls and desktop expand visibility */
.team-player-filter-header {
  display: none;
}

.team-player-filter-content {
  display: contents;
}

@media (max-width: 767px) {
  /* Match the summary cards to Schedule, Hit Rates, and TD Leaders. */
  .app-shell.archive-mode .team-overview-shell .archive-summary-card,
  .app-shell.archive-mode .archive-team-leaders-panel {
    border-radius: 8px;
  }

  .app-shell.archive-mode .archive-summary-header {
    min-height: 34px;
    padding: 4px 2px 4px 9px;
    border-bottom-color: #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
  }

  .app-shell.archive-mode .archive-summary-header .archive-summary-title {
    width: auto;
    color: #111713;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-align: left;
  }

  .app-shell.archive-mode .archive-summary-collapse {
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    border-radius: 4px;
    color: #111713;
    font-size: 15px;
  }

  .app-shell.archive-mode .archive-summary-card.mobile-collapsed .archive-summary-header {
    border-radius: 7px;
    background: #ffffff;
  }

  /* Give the checkbox section its own matching collapsible title bar. */
  .app-shell.archive-mode #homeFilterList {
    padding: 0 9px 5px;
    overflow: hidden;
    border: 1px solid #cbd1ca;
    border-left: 5px solid var(--team-accent, #568e0f);
    border-radius: 8px;
    background: #ffffff;
  }

  .app-shell.archive-mode .team-player-filter-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 34px;
    margin: 0 -9px 4px;
    padding: 4px 2px 4px 9px;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
  }

  .app-shell.archive-mode .team-player-filter-title {
    color: #111713;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: .08em;
  }

  .app-shell.archive-mode .team-player-filter-collapse {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: #111713;
    box-shadow: none;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }

  .app-shell.archive-mode .team-player-filter-content {
    display: flex;
    flex-direction: column;
    width: 100%;
  }

  .app-shell.archive-mode #homeFilterList.mobile-collapsed {
    padding-bottom: 0;
  }

  .app-shell.archive-mode #homeFilterList.mobile-collapsed .team-player-filter-header {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 7px;
  }

  .app-shell.archive-mode #homeFilterList.mobile-collapsed .team-player-filter-content {
    display: none;
  }

  /* Preserve the full All opponents label without pushing controls off-screen. */
  body.theme-single .app-shell.archive-mode .player-split-controls {
    grid-template-columns: minmax(0, 1fr) 116px;
    gap: 4px;
  }

  body.theme-single .app-shell.archive-mode .player-period-btn {
    padding-inline: 2px;
    font-size: 8.5px;
  }

  body.theme-single .app-shell.archive-mode .opponent-filter,
  body.theme-single .app-shell.archive-mode .opponent-select {
    width: 116px;
    min-width: 116px;
    max-width: 116px;
    padding-left: 7px;
    padding-right: 22px;
    font-size: 9.5px;
  }
}

@media (min-width: 768px) {
  /* Make the matchup-only full-panel control easier to see and target. */
  body.theme-single .app-shell:not(.archive-mode) .expand-btn {
    width: 30px;
    min-width: 30px;
    height: 30px;
    min-height: 30px;
    padding: 0;
    border-width: 2px;
    border-color: #ffffff;
  }

  body.theme-single .app-shell:not(.archive-mode) .expand-btn svg {
    width: 19px;
    height: 19px;
    stroke-width: 3.2;
  }
}

/* 2026-08-29 v33: consistent section rhythm and collapsible position groups */
.position-section-content {
  display: contents;
}

.position-section-content[hidden],
.team-mobile-position-player-list[hidden] {
  display: none !important;
}

.position-collapse-symbol {
  display: none;
}

@media (max-width: 767px) {
  /* Keep a fixed nine-pixel rhythm between every team-page section. */
  .app-shell.archive-mode .team-panel[data-side="home"] {
    gap: 0;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-schedule-panel {
    margin-bottom: 9px;
  }

  .app-shell.archive-mode .team-panel[data-side="home"] > .team-body-scroll {
    margin-top: 9px;
  }

  /* One title treatment for Schedule, summaries, Player Filter, Hit Rates, and TD Leaders. */
  body.theme-single .team-schedule-header,
  .app-shell.archive-mode .archive-summary-header,
  .app-shell.archive-mode .team-player-filter-header,
  .app-shell.archive-mode .summary-section-card .section-header-row {
    min-height: 32px;
    padding: 4px 2px 4px 9px;
  }

  .app-shell.archive-mode .summary-section-card .section-header-row {
    margin-inline: -7px;
  }

  body.theme-single .team-schedule-header > span:first-child,
  .app-shell.archive-mode .archive-summary-header .archive-summary-title,
  .app-shell.archive-mode .team-player-filter-title,
  .app-shell.archive-mode .summary-section-card .section-title {
    width: auto;
    margin: 0;
    color: #111713;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: .08em;
    text-align: left;
    text-transform: uppercase;
  }

  /* Give every plus/minus control the same box and right edge. */
  body.theme-single .team-schedule-header > span:last-child,
  .app-shell.archive-mode .archive-summary-collapse,
  .app-shell.archive-mode .team-player-filter-collapse,
  .app-shell.archive-mode .summary-section-card .section-collapse-btn,
  .app-shell.archive-mode .position-collapse-symbol {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: end;
    align-self: center;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: #111713;
    box-shadow: none;
    font-family: inherit;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }

  /* Position groups collapse from their existing header bars on mobile team pages. */
  .app-shell.archive-mode .team-mobile-position-section > .position-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: calc(100% + 14px);
    min-height: 38px;
    padding: 7px 2px 7px 10px;
    border: 0;
    font-family: inherit;
    cursor: pointer;
  }

  .app-shell.archive-mode .team-mobile-position-section:not(.position-collapsed) > .position-section-toggle {
    margin-bottom: 8px;
  }

  .app-shell.archive-mode .team-mobile-position-section.position-collapsed {
    padding-bottom: 0;
  }

  .app-shell.archive-mode .team-mobile-position-section.position-collapsed > .position-section-toggle {
    border-radius: 9px;
  }

  /* Center the selected opponent label within the available dropdown width. */
  body.theme-single .app-shell.archive-mode .opponent-select {
    padding-left: 22px;
    padding-right: 22px;
    text-align: center;
    text-align-last: center;
  }
}

@media (min-width: 768px) {
  /* Retain the bold treatment while returning the team expand control to a compact size. */
  body.theme-single .app-shell:not(.archive-mode) .expand-btn {
    width: 26px;
    min-width: 26px;
    height: 26px;
    min-height: 26px;
  }

  body.theme-single .app-shell:not(.archive-mode) .expand-btn svg {
    width: 17px;
    height: 17px;
    stroke-width: 3.2;
  }

  /* Desktop matchup position groups collapse without changing mobile matchup behavior. */
  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section > .position-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: calc(100% + 20px);
    padding-right: 7px;
    border: 0;
    font-family: inherit;
    cursor: pointer;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section .position-collapse-symbol {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    color: #111713;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section.position-collapsed {
    padding-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section.position-collapsed > .position-section-toggle {
    margin-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .position-section-content {
    display: block;
  }
}

/* 2026-08-29 v34: rolling history summaries and unified mobile headers */
.section-header-controls {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
}

.summary-opponent-select {
  width: 126px;
  max-width: 126px;
  height: 24px;
  min-height: 24px;
  padding: 0 22px 0 7px;
  border: 1px solid #8f988f;
  border-radius: 6px;
  background: #ffffff;
  color: #111713;
  font: inherit;
  font-size: 9px;
  font-weight: 700;
  text-align: left;
  text-align-last: left;
}

.summary-opponent-select.active {
  border-color: #67a91b;
  background: #84c52a;
}

.summary-opponent-toggle {
  white-space: nowrap;
}

.weather-native-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.weather-native-icon svg {
  display: block;
  width: 38px;
  height: 34px;
}

.summary-opponent-select option {
  background: #ffffff;
  color: #111713;
  text-align: left;
}

.summary-past-season-note {
  color: #6a716b;
  font-size: 8.5px;
  font-weight: 700;
  line-height: 1.1;
  white-space: nowrap;
}

@media (min-width: 768px) {
  body.theme-single .app-shell:not(.archive-mode) .defense-record-pill {
    display: none !important;
  }

  body.theme-single .app-shell.archive-mode #homeFilterList .player-filter-item {
    font-size: 11.5px;
    font-weight: 400;
    line-height: 1.2;
  }

  body.theme-single .app-shell.archive-mode #homeFilterList .player-filter-name {
    font-weight: 500;
  }
}

@media (max-width: 767px) {
  /* Keep the same section gap above and below Schedule. */
  .app-shell.archive-mode .team-panel[data-side="home"] > .team-panel-header {
    margin-bottom: 9px;
  }

  /* Center every title within its header's height. */
  body.theme-single .team-schedule-header,
  .app-shell.archive-mode .archive-summary-header,
  .app-shell.archive-mode .team-player-filter-header,
  body.theme-single .summary-section-card .section-header-row,
  .app-shell.archive-mode .team-mobile-position-section > .position-section-toggle {
    align-items: center;
  }

  body.theme-single .team-schedule-header > span:first-child,
  .app-shell.archive-mode .archive-summary-header .archive-summary-title,
  .app-shell.archive-mode .team-player-filter-title,
  body.theme-single .summary-section-card .section-title,
  .app-shell.archive-mode .team-mobile-position-section > .position-section-toggle > span:first-child {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
  }

  body.theme-single .summary-section-card .section-header-left {
    align-items: center;
  }

  /* Match position headers to the other white, team-accented section bars. */
  .app-shell.archive-mode .team-mobile-position-section {
    border: 1px solid #cbd1ca;
    border-radius: 8px;
    background: #ffffff;
  }

  .app-shell.archive-mode .team-mobile-position-section > .position-section-toggle {
    min-height: 32px;
    padding: 4px 2px 4px 9px;
    border-left: 5px solid var(--team-accent, #568e0f);
    border-radius: 7px 7px 0 0;
    background: #ffffff;
    color: #111713;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: .08em;
    text-align: left;
  }

  .app-shell.archive-mode .team-mobile-position-section.position-collapsed > .position-section-toggle {
    border-radius: 7px;
    background: #ffffff;
  }

  /* Restore full left-aligned labels in player and summary opponent dropdowns. */
  body.theme-single .app-shell.archive-mode .opponent-select,
  body.theme-single .summary-opponent-select {
    padding-left: 7px;
    padding-right: 22px;
    text-align: left;
    text-align-last: left;
  }

  body.theme-single .app-shell.archive-mode .opponent-select option,
  body.theme-single .summary-opponent-select option {
    text-align: left;
  }

  body.theme-single .summary-opponent-select {
    width: 116px;
    min-width: 116px;
    max-width: 116px;
  }

  /* A collapsed matchup summary shows only its title and expand control. */
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .section-header-controls,
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .hit-toggle-group,
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .summary-opponent-select,
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .summary-past-season-note {
    display: none !important;
  }
}

/* 2026-08-29 v35: single-row mobile controls and full-height team accents */
@media (max-width: 767px) {
  /* Restore the missing top edge so Player Filter rounds like every other card. */
  .app-shell.archive-mode #homeFilterList {
    border-top: 1px solid #cbd1ca;
    border-radius: 8px;
  }

  .app-shell.archive-mode .team-player-filter-header,
  .app-shell.archive-mode .archive-summary-header,
  body.theme-single .team-schedule-header,
  body.theme-single .summary-section-card .section-header-row,
  body.theme-single .matchup-position-section > .position-section-toggle {
    flex-wrap: nowrap;
  }

  /* Keep collapse controls beside the title instead of centering over two header rows. */
  body.theme-single .summary-section-card .section-header-row {
    align-items: start;
  }

  body.theme-single .summary-section-card .section-collapse-btn {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
  }

  /* Percent, range, and opponent controls share one compact row. */
  body.theme-single .summary-section-card .section-header-controls {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    width: max-content;
    max-width: 100%;
    min-width: 0;
    gap: 3px;
  }

  body.theme-single .summary-section-card .hit-toggle-group {
    display: inline-flex;
    flex: 0 1 auto;
    flex-wrap: nowrap;
    width: max-content;
    min-width: 0;
    white-space: nowrap;
  }

  body.theme-single .summary-section-card .hit-toggle-group + .hit-toggle-group {
    margin-left: 2px !important;
  }

  body.theme-single .summary-section-card .hit-toggle,
  body.theme-single .app-shell:not(.archive-mode) .summary-opponent-select {
    height: 24px;
    min-height: 24px;
  }

  body.theme-single .summary-section-card .hit-toggle {
    width: auto;
    min-width: 0;
    padding-inline: 2px;
    font-size: 7px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 74px;
    min-width: 74px;
    max-width: 74px;
    padding-left: 4px;
    padding-right: 18px;
    font-size: 7px;
  }

  body.theme-single .summary-section-card .summary-past-season-note {
    max-width: 32px;
    font-size: 6.5px;
    line-height: 1.05;
    white-space: normal;
  }

  /* The accent belongs to the whole position card, not only its title bar. */
  .app-shell.archive-mode .team-mobile-position-section {
    border-left: 5px solid var(--team-accent, #568e0f);
  }

  .app-shell.archive-mode .team-mobile-position-section > .position-section-toggle {
    border-left: 0;
  }

  /* Matchup summary and position cards use the current team's accent. */
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card,
  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section {
    border-left: 5px solid var(--team-accent, #445047);
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section {
    padding: 0 7px 8px;
    overflow: hidden;
    border-radius: 8px;
    background: #ffffff;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section > .position-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: calc(100% + 14px);
    min-height: 32px;
    margin: 0 -7px 8px;
    padding: 4px 2px 4px 9px;
    border: 0;
    border-left: 0;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
    color: #111713;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: .08em;
    text-align: left;
    cursor: pointer;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section .position-collapse-symbol {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section.position-collapsed {
    padding-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section.position-collapsed > .position-section-toggle {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 7px;
  }

  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section .position-section-content {
    display: block;
  }

  /* Vertically center every matchup title within its visible header. */
  body.theme-single .app-shell:not(.archive-mode) .section-title,
  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section > .position-section-toggle > span:first-child,
  body.theme-single .app-shell:not(.archive-mode) .defense-card-title,
  body.theme-single .app-shell:not(.archive-mode) .info-label {
    align-self: center;
  }

  body.theme-single .app-shell:not(.archive-mode) .section-title,
  body.theme-single .app-shell:not(.archive-mode) .matchup-position-section > .position-section-toggle > span:first-child,
  body.theme-single .app-shell:not(.archive-mode) .defense-card-title {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
  }
}

@media (min-width: 768px) {
  /* Team pages use the checkbox filters directly; the header position strip is redundant. */
  body.theme-single .app-shell.archive-mode .team-panel-header .team-header-center,
  body.theme-single .app-shell.archive-mode .team-panel-header .pos-toggle-group {
    display: none !important;
  }

  .app-shell.archive-mode .team-header-player-zone {
    width: auto;
  }
}

/* v36 final cascade: keep the newest responsive rules after prior release layers. */
.section-header-controls {
  align-items: flex-end;
}

@media (max-width: 767px) {
  .app-shell.archive-mode .team-overview-shell > #homeFilterList {
    overflow: hidden;
    border-top: 1px solid #cbd1ca;
    border-radius: 8px;
  }

  body.theme-single .summary-section-card .section-header-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    min-height: 32px;
  }

  body.theme-single .summary-section-card .section-header-left {
    display: contents;
  }

  body.theme-single .summary-section-card .section-title {
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    min-height: 24px;
    font-size: 12px;
    line-height: 1.1;
  }

  body.theme-single .summary-section-card .section-header-controls {
    grid-column: 1 / -1;
    grid-row: 2;
    align-items: flex-end;
    width: max-content;
    max-width: 100%;
    margin-top: 3px;
  }

  body.theme-single .summary-section-card .section-collapse-btn {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
  }

  body.theme-single .summary-section-card .hit-toggle {
    flex: 0 1 auto;
    width: auto;
    min-width: 30px;
    height: 24px;
    min-height: 24px;
    padding-inline: 6px;
    font-size: 9px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 108px;
    min-width: 108px;
    max-width: 108px;
    height: 24px;
    min-height: 24px;
    padding-left: 7px;
    padding-right: 22px;
    font-size: 9px;
  }

  body.theme-single .summary-control-stack .summary-past-season-note {
    width: 100%;
    max-width: none;
    color: var(--team-accent, #445047);
    font-size: 8.5px;
    line-height: 1.05;
    text-align: center;
    white-space: nowrap;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card {
    padding: 0 7px 7px;
    overflow: hidden;
    border-radius: 8px;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card .section-header-row {
    margin: 0 -7px 4px;
    padding: 4px 2px 4px 9px;
    border-bottom: 1px solid #d7dcd5;
    border-radius: 7px 7px 0 0;
    background: #ffffff;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed {
    padding-bottom: 0;
  }

  body.theme-single .app-shell:not(.archive-mode) .summary-section-card.collapsed .section-header-row {
    margin-bottom: 0;
    border-bottom: 0;
    border-radius: 7px;
  }
}

@media (max-width: 420px) {
  body.theme-single .summary-section-card .hit-toggle {
    min-width: 26px;
    padding-inline: 4px;
    font-size: 8px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 94px;
    min-width: 94px;
    max-width: 94px;
    font-size: 8px;
  }
}

@media (max-width: 360px) {
  body.theme-single .summary-section-card .hit-toggle {
    min-width: 22px;
    padding-inline: 2px;
    font-size: 7.5px;
  }

  body.theme-single .summary-section-card .summary-opponent-select {
    width: 82px;
    min-width: 82px;
    max-width: 82px;
    padding-left: 4px;
    padding-right: 18px;
    font-size: 7.5px;
  }
}

@keyframes mobile-rail-attention-cue {
  0%, 14%, 100% { transform: translateX(0); }
  48% { transform: translateX(18px); }
}

/* 2026-09-05 v59: opposite-direction mobile rail cue and unified summary controls. */
body.theme-single .summary-section-card .section-header-controls,
body.theme-single .player-split-controls {
  gap: 4px;
}

body.theme-single .summary-section-card .summary-control-stack,
body.theme-single .summary-section-card .hit-toggle-group {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

body.theme-single .summary-section-card .summary-opponent-select,
body.theme-single .summary-section-card .summary-opponent-select.active {
  border: 1px solid #d2d7d0;
  border-radius: 6px;
  box-shadow: none;
}

@media (max-width: 767px) {
  body.theme-single .summary-section-card .summary-opponent-select {
    width: 104px;
    min-width: 104px;
    max-width: 104px;
    padding-left: 6px;
    padding-right: 16px;
    font-size: 9px;
  }
}

@media (max-width: 420px) {
  body.theme-single .summary-section-card .summary-opponent-select {
    width: 100px;
    min-width: 100px;
    max-width: 100px;
    font-size: 8px;
  }
}

@media (max-width: 360px) {
  body.theme-single .summary-section-card .summary-opponent-select {
    width: 94px;
    min-width: 94px;
    max-width: 94px;
    padding-left: 5px;
    padding-right: 14px;
    font-size: 7.5px;
  }
}

/* 2026-09-05 v57: reliable mobile rail cue and responsive header/filter polish. */
body.theme-single .app-shell {
  border-radius: 0 0 22px 22px;
}

body.theme-single .brand-tagline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .16em;
}

body.theme-single .brand-tagline .brand-hundred {
  margin-left: 0;
}

body.theme-single .app-shell.archive-mode .opponent-select,
body.theme-single .app-shell.archive-mode .summary-opponent-select {
  font-weight: 400;
}

body.theme-single .app-shell.archive-mode .opponent-select.active,
body.theme-single .app-shell.archive-mode .summary-opponent-select.active {
  font-weight: 700;
}

@media (min-width: 768px) {
  body.theme-single .matchup-pill,
  .app-shell.archive-mode .matchup-pill {
    overflow: hidden;
  }

  body.theme-single .pill-mainline {
    max-width: 100%;
    overflow: hidden;
    font-size: clamp(6px, .64vw, 12px);
    line-height: 1.08;
    white-space: normal;
    word-break: keep-all;
  }

  body.theme-single .pill-small,
  body.theme-single .pill-date {
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
  }
}

@media (max-width: 767px) {
  body.theme-single .app-shell {
    border-radius: 0;
  }
}

/* 2026-09-05 v58: guaranteed two-rail mobile cue and exact banner/dropdown corrections. */
body.theme-single .brand-header {
  border-radius: 0 !important;
}

body.theme-single .brand-tagline > span::before,
body.theme-single .brand-tagline > span::after {
  content: none !important;
  display: none !important;
}

body.theme-single .app-shell.archive-mode .opponent-select,
body.theme-single .app-shell.archive-mode .summary-opponent-select {
  font-size: 10px;
}

@media (max-width: 767px) {
  body.theme-single .app-shell.archive-mode .player-split-controls .opponent-select {
    font-size: 8.5px;
  }

  body.theme-single .app-shell.archive-mode .summary-opponent-select {
    font-size: 9px;
  }
}

@media (max-width: 420px) {
  body.theme-single .app-shell.archive-mode .summary-opponent-select {
    font-size: 8px;
  }
}

@media (max-width: 360px) {
  body.theme-single .app-shell.archive-mode .summary-opponent-select {
    font-size: 7.5px;
  }
}

/* v77: consistent opponent controls and independent mobile matchup sections. */
body.theme-single .player-filter-item:has(input:disabled) { cursor: not-allowed; }
body.theme-single .player-filter-item input:disabled {
  accent-color: #9ca3af;
  opacity: .45;
  cursor: not-allowed;
  filter: grayscale(1);
}
body.theme-single .app-shell.archive-mode { --summary-control-font: 10.5px; --player-control-font: 10.5px; }
body.theme-single .app-shell.archive-mode .summary-section-card .summary-opponent-select,
body.theme-single .app-shell.archive-mode .player-period-btn,
body.theme-single .app-shell.archive-mode .opponent-select {
  box-sizing: border-box;
  height: 24px;
  min-height: 24px;
  padding-block: 0;
  font-family: inherit;
  font-weight: 400;
  font-style: normal;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  vertical-align: middle;
  border: 1px solid #d2d7d0;
  border-radius: 6px;
}
body.theme-single .app-shell.archive-mode .summary-section-card .summary-opponent-select { font-size: var(--summary-control-font); }
body.theme-single .app-shell.archive-mode .player-period-btn,
body.theme-single .app-shell.archive-mode .opponent-select { font-size: var(--player-control-font); }
body.theme-single .app-shell.archive-mode .summary-section-card .summary-opponent-select.active,
body.theme-single .app-shell.archive-mode .player-period-btn.active,
body.theme-single .app-shell.archive-mode .opponent-select.active { font-weight: 650; }
body.theme-single .app-shell.archive-mode .opponent-select,
body.theme-single .app-shell.archive-mode .summary-section-card .summary-opponent-select {
  width: auto;
  min-width: calc(14ch + 28px);
  max-width: none;
  flex: 0 0 auto;
  padding-inline: 7px 22px;
}
@media (min-width: 768px) {
  body.theme-single .app-shell:not(.archive-mode) .player-split-controls { justify-content: flex-start; gap: 4px; }
  body.theme-single .app-shell:not(.archive-mode) .player-period-group { flex: 0 0 auto; gap: 4px; }
  body.theme-single .app-shell:not(.archive-mode) .opponent-toggle { margin-left: 0; }
}
@media (max-width: 767px) {
  body.theme-single .app-shell.archive-mode { --summary-control-font: 9px; --player-control-font: 8.5px; }
  body.theme-single .app-shell.archive-mode .player-split-controls { grid-template-columns: minmax(0, 1fr) max-content; }
  body.theme-single .app-shell:not(.archive-mode) .teams-row { display: flex; flex-direction: column; gap: 12px; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel {
    display: flex;
    flex-direction: column;
    border: 1px solid #d2d7d0;
    border-radius: 8px;
    overflow: hidden;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel-header {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    background: #111512;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-header-player-zone,
  body.theme-single .app-shell:not(.archive-mode) .team-header-left { flex: 1; min-width: 0; width: auto; }
  body.theme-single .app-shell:not(.archive-mode) .team-header-center { display: none; }
  body.theme-single .app-shell:not(.archive-mode) .expand-btn {
    display: inline-flex !important;
    position: static;
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    margin: 0;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: white;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > :not(.team-panel-header) { display: none; }
}
@media (max-width: 420px) { body.theme-single .app-shell.archive-mode { --summary-control-font: 8px; } }
@media (max-width: 360px) { body.theme-single .app-shell.archive-mode { --summary-control-font: 7.5px; } }

/* v78: one segmented period toggle and a separate mobile Player Filter card. */
body.theme-single .app-shell .player-split-controls {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
}
body.theme-single .app-shell .player-split-controls .player-period-group {
  display: inline-flex;
  flex: 0 0 auto;
  flex-wrap: nowrap;
  width: auto;
  gap: 0;
  border: 1px solid #d2d7d0;
  border-radius: 6px;
  overflow: hidden;
}
body.theme-single .app-shell .player-period-group .player-period-btn {
  border: 0;
  border-radius: 0;
  margin: 0;
  box-shadow: none;
}
body.theme-single .app-shell .player-period-group .player-period-btn + .player-period-btn { border-left: 1px solid #d2d7d0; }
body.theme-single .app-shell .player-split-controls .opponent-toggle {
  flex: 0 0 auto;
  margin: 0;
  width: auto;
  max-width: none;
  border: 1px solid #d2d7d0;
  color: #111713;
  font-family: inherit;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1;
}
body.theme-single .app-shell .player-split-controls .opponent-toggle.active { font-weight: 650; }
.matchup-player-filter-header { display: none; }
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel { padding: 0; background: #f3f5f1; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel-header { width: 100%; margin: 0 0 9px; border-radius: 0; }
  body.theme-single .app-shell:not(.archive-mode) .player-filter-list {
    display: block;
    flex: none;
    width: auto;
    margin: 0 7px 9px;
    padding: 0 8px 8px;
    border: 1px solid #d2d7d0;
    border-radius: 7px;
    background: white;
  }
  body.theme-single .app-shell:not(.archive-mode) .matchup-player-filter-header {
    display: flex;
    align-items: center;
    min-height: 34px;
    margin-bottom: 6px;
    border-bottom: 1px solid #d2d7d0;
    color: #111713;
    font-size: 12px;
    font-weight: 700;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-body-scroll { padding-inline: 7px; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > :not(.team-panel-header) { display: none; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header { margin-bottom: 0; }
  body.theme-single .app-shell .player-split-controls .player-period-group { flex: 0 1 auto; }
  body.theme-single .app-shell .player-split-controls .player-period-btn { width: auto; }
}
body.theme-single .app-shell .player-period-group .player-period-btn { height: 22px; min-height: 22px; }
body.theme-single .app-shell .player-split-controls .opponent-toggle { height: 24px; min-height: 24px; }
body.theme-single .app-shell:not(.archive-mode) .player-split-controls { --period-font-size: 10.5px; }
body.theme-single .app-shell:not(.archive-mode) .player-split-controls .player-period-btn,
body.theme-single .app-shell:not(.archive-mode) .player-split-controls .opponent-toggle { font-size: var(--period-font-size); color: #111713; }
@media (max-width: 767px) { body.theme-single .app-shell:not(.archive-mode) .player-split-controls { --period-font-size: 9px; } }
@media (max-width: 420px) { body.theme-single .app-shell:not(.archive-mode) .player-split-controls { --period-font-size: 8px; } }

/* v79: rounded segments and one explicit collapsible body per matchup team. */
body.theme-single .app-shell .player-split-controls .player-period-group {
  gap: 2px;
  padding: 2px;
  background: #fff;
  overflow: visible;
}
body.theme-single .app-shell .player-period-group .player-period-btn,
body.theme-single .app-shell .player-period-group .player-period-btn + .player-period-btn {
  border: 0;
  border-radius: 5px;
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header {
    display: flex;
    position: relative;
    align-items: center;
    min-height: 46px;
    margin: 0;
    padding: 7px 9px;
    background: #111512;
    color: #fff;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
    display: inline-flex !important;
    position: static;
    margin-left: auto;
    color: #fff !important;
    border: 1px solid #fff;
    background: transparent;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content {
    display: flex;
    flex-direction: column;
    gap: 9px;
    min-width: 0;
    padding: 9px 7px;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content[hidden] { display: none !important; }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .team-overview-shell { display: contents; }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .player-filter-list {
    margin: 0;
    padding: 0 8px 8px;
    background: #fff;
    border: 1px solid #d2d7d0;
    border-radius: 7px;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .team-body-scroll { padding: 0; }
}

/* v80: unified section headers, control heights, and matchup accents. */
body.theme-single .app-shell .position-section { background: #e7ece4; }
body.theme-single .app-shell .position-section > .pos-header,
body.theme-single .app-shell .team-mobile-position-section > .position-section-toggle,
body.theme-single .app-shell .matchup-position-section > .position-section-toggle {
  background: #fff;
  color: #252b26;
}
body.theme-single .app-shell .player-split-controls .opponent-toggle,
body.theme-single .app-shell .player-split-controls .opponent-select {
  box-sizing: border-box;
  height: 28px;
  min-height: 28px;
}
@media (min-width: 768px) {
  body.theme-single .app-shell:not(.archive-mode) .info-center-stack > .info-cell { border-left: 5px solid #84c52a; }
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel { border-left: 5px solid var(--team-accent, #445047); }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header {
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr) 24px;
    gap: 6px;
    min-height: 32px;
    padding: 4px 2px 4px 9px;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-header-player-zone,
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-header-left { display: contents; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-logo { width: 24px; height: 24px; grid-column: 1; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-name {
    grid-column: 2;
    width: auto;
    min-height: 24px;
    display: flex;
    align-items: center;
    padding: 0;
    font-size: 12px;
    line-height: 1.1;
    font-weight: 700;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
    grid-column: 3;
    align-self: center;
    justify-self: end;
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    background: transparent;
    font-family: inherit;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header { background: #fff; color: #111713; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header .team-name,
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header .expand-btn { color: #111713 !important; }
}

/* v81: one geometry for period controls, card edges, and collapse buttons. */
body.theme-single .app-shell { --period-control-height: 28px; }
body.theme-single .app-shell .player-split-controls .player-period-group,
body.theme-single .app-shell .player-split-controls .opponent-toggle,
body.theme-single .app-shell .player-split-controls .opponent-select {
  box-sizing: border-box;
  height: var(--period-control-height);
  min-height: var(--period-control-height);
  max-height: var(--period-control-height);
  align-self: center;
}
body.theme-single .app-shell .player-split-controls .player-period-group { padding: 2px; align-items: stretch; }
body.theme-single .app-shell .player-split-controls .player-period-group .player-period-btn {
  box-sizing: border-box;
  height: 100%;
  min-height: 0;
  max-height: none;
  padding-block: 0;
}
body.theme-single .app-shell .summary-section-card .section-collapse-btn,
body.theme-single .app-shell .defense-collapse-btn,
body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  min-width: 24px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  color: #111713 !important;
  font-family: inherit;
  font-size: 15px;
  font-weight: 900;
  line-height: 1;
}
@media (min-width: 768px) {
  body.theme-single .app-shell:not(.archive-mode) .info-center-stack > .info-cell { border-left: 1px solid #d2d7d0; }
  body.theme-single .app-shell .defense-collapse-btn { display: none; }
}
@media (max-width: 767px) {
  /* Nest semantically, without indenting the cards' visible edges. */
  body.theme-single .app-shell:not(.archive-mode) .team-panel {
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    overflow: visible;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content { padding: 9px 0 0; }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header,
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header {
    box-sizing: border-box;
    width: 100%;
    margin: 0;
    padding: 4px 2px 4px 9px;
    min-height: 34px;
    border: 1px solid #d2d7d0;
    border-left: 5px solid var(--team-accent, #445047);
    border-radius: 8px;
    background: #fff;
    color: #111713;
    overflow: hidden;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-name { color: #111713; }
  body.theme-single .app-shell:not(.archive-mode) .info-row > .info-cell,
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card,
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .player-filter-list {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    border-radius: 8px;
    border-left-width: 5px;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .player-filter-list { border-left-color: var(--team-accent, #445047); }
  body.theme-single .app-shell:not(.archive-mode) .defense-card-header,
  body.theme-single .app-shell:not(.archive-mode) .summary-section-card .section-header-row {
    padding-right: 2px;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
    grid-column: 3;
    justify-self: end;
    align-self: center;
  }
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .team-name,
  body.theme-single .app-shell:not(.archive-mode) .defense-card-title {
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
}

/* v82: a visible team container and shared mobile section-header geometry. */
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel {
    border: 1px solid #d2d7d0;
    border-left: 5px solid var(--team-accent, #445047);
    border-radius: 8px;
    background: #e7ece4;
    overflow: hidden;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header,
  body.theme-single .app-shell:not(.archive-mode) .team-panel.mobile-team-collapsed > .team-panel-header {
    border: 0;
    border-radius: 0;
    margin: 0;
    width: 100%;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content {
    padding: 8px;
    gap: 8px;
    border-top: 1px solid #d2d7d0;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .team-summary-sections {
    margin: 0;
    padding: 0;
    gap: 8px;
  }
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content .team-body-scroll {
    margin: 0;
    padding: 0;
    min-height: 0;
    gap: 8px;
  }
  /* Every header reserves the same 36px title row and 24px control at right. */
  body.theme-single .app-shell :is(
    .team-panel > .team-panel-header,
    .defense-card-header,
    .summary-section-card .section-header-row,
    .position-section > .position-section-toggle,
    .matchup-player-filter-header
  ) {
    position: relative;
    box-sizing: border-box;
    min-height: 36px !important;
    padding: 0 40px 0 8px !important;
    background: #fff;
    color: #111713;
  }
  body.theme-single .app-shell :is(
    .team-panel > .team-panel-header,
    .defense-card-header,
    .position-section > .position-section-toggle,
    .matchup-player-filter-header
  ) {
    height: 36px !important;
    max-height: 36px;
    align-items: center;
  }
  body.theme-single .app-shell .summary-section-card .section-header-row {
    grid-template-rows: 36px auto;
    align-items: center;
  }
  body.theme-single .app-shell .summary-section-card.collapsed .section-header-row {
    grid-template-rows: 36px;
    height: 36px !important;
    max-height: 36px;
    margin-bottom: 0;
    border-bottom: 0;
  }
  body.theme-single .app-shell .summary-section-card .section-header-controls { margin-top: 0; margin-bottom: 6px; }
  body.theme-single .app-shell :is(
    .team-panel-header .team-name,
    .defense-card-title,
    .summary-section-card .section-title,
    .position-section-toggle > span:first-child,
    .matchup-player-filter-header
  ) {
    font-family: inherit !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    font-style: normal;
    line-height: 1.1 !important;
    letter-spacing: .08em !important;
    text-transform: uppercase;
  }
  body.theme-single .app-shell :is(
    .team-panel > .team-panel-header .expand-btn,
    .defense-collapse-btn,
    .summary-section-card .section-collapse-btn,
    .position-section-toggle .position-collapse-symbol
  ) {
    position: absolute !important;
    top: 18px !important;
    right: 8px !important;
    bottom: auto;
    left: auto;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 24px !important;
    min-width: 24px !important;
    height: 24px !important;
    min-height: 24px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0;
    box-shadow: none;
    background: transparent;
    color: #111713 !important;
    font-family: inherit;
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
  }
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header {
    grid-template-columns: 24px minmax(0, 1fr);
    column-gap: 6px;
  }
  body.theme-single .app-shell .defense-card-header { grid-template-columns: 24px minmax(0, 1fr); }
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1;
    color: #111713 !important;
    border: 0 !important;
    background: transparent;
  }
}

/* v85: shared controls and unobtrusive nested cards. */
body.theme-single .odds-implied.below-half { color: #c62828; }
@media (min-width: 768px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn {
    color: #fff !important;
  }
}
body.theme-single .app-shell .summary-section-card .section-collapse-btn {
  width: 24px !important;
  min-width: 24px !important;
  height: 24px !important;
  min-height: 24px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: #111713 !important;
  font-size: 15px !important;
  font-weight: 900 !important;
  line-height: 1 !important;
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .mobile-team-content :is(
    .info-cell, .summary-section-card, .player-filter-list, .position-section,
    .position-section-toggle, .player-card
  ),
  body.theme-single .app-shell.archive-mode :is(
    .archive-summary-card, .summary-section-card, .team-player-filter-list,
    #homeFilterList, .team-mobile-position-section, .position-section-toggle, .player-card
  ) {
    border-left: 1px solid #d2d7d0;
  }
}
/* v86: confirmed in-game injury exits and the optional Hit Rates exclusion. */
body.theme-single .stats-table tr.injury-exit-row td:nth-child(n+3) {
  color: #c62828 !important;
}

body.theme-single .app-shell .summary-section-card .section-header-controls {
  flex-wrap: wrap;
  row-gap: 6px;
}
/* v86: a single table shares columns and period controls across both seasons. */
body.theme-single .stats-table .matchup-previous-season-header th {
  background: var(--team-accent, #111713);
  color: #fff;
  padding: 0;
}
body.theme-single .stats-table .matchup-previous-season-header .player-season-toggle {
  display: flex;
  justify-content: space-between;
  width: 100%;
  min-height: 0;
  padding: 2px 10px;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #fff;
  font: inherit;
  line-height: inherit;
}
@media (max-width: 767px) {
  body.theme-single .app-shell.archive-mode .team-panel > .team-panel-header .team-header-left {
    display: flex !important;
    align-items: center;
    gap: 8px;
    width: 100%;
  }
  body.theme-single .app-shell.archive-mode .team-panel > .team-panel-header .team-name {
    display: block !important;
    visibility: visible !important;
    color: #111 !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
    white-space: normal;
  }
  body.theme-single .app-shell.archive-mode :is(.team-schedule-panel, .archive-summary-card, #homeFilterList, .summary-section-card, .team-mobile-position-section) {
    box-sizing: border-box;
    width: 100%;
    padding: 0 !important;
    border: 1px solid #cbd1ca !important;
    border-radius: 8px !important;
    overflow: hidden;
  }
  body.theme-single .app-shell.archive-mode :is(.team-schedule-header, .archive-summary-header, .team-player-filter-header, .summary-section-card .section-header-row, .team-mobile-position-section > .position-section-toggle) {
    position: relative;
    box-sizing: border-box;
    width: 100%;
    min-height: 36px !important;
    height: 36px;
    margin: 0 !important;
    padding: 0 40px 0 8px !important;
    border: 0 !important;
    border-left: 5px solid var(--team-accent, #568e0f) !important;
    border-radius: 7px !important;
    background: #fff !important;
    color: #111713 !important;
    align-items: center;
    font-family: inherit;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
    letter-spacing: .08em;
  }
  body.theme-single .app-shell.archive-mode .summary-section-card:not(.collapsed) .section-header-row {
    height: auto;
    grid-template-rows: 36px auto;
  }
  body.theme-single .app-shell.archive-mode :is(.archive-summary-title, .team-player-filter-title, .summary-section-card .section-title) {
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
    letter-spacing: .08em !important;
  }
  body.theme-single .app-shell.archive-mode :is(.team-schedule-header > span:last-child, .archive-summary-collapse, .team-player-filter-collapse, .summary-section-card .section-collapse-btn, .position-section-toggle .position-collapse-symbol) {
    position: absolute !important;
    top: 18px !important;
    right: 8px !important;
    left: auto !important;
    transform: translateY(-50%);
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 24px !important;
    min-width: 24px !important;
    height: 24px !important;
    min-height: 24px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #111713 !important;
    font-family: inherit;
    font-size: 15px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    box-shadow: none;
  }
  body.theme-single .app-shell.archive-mode .team-player-filter-content { padding: 6px 8px; }
}

@media (max-width: 767px) {
  body.theme-single .stats-table .matchup-previous-season-header .player-season-toggle { padding: 5px 2px; }
}
/* v87: stable reading layout, shared controls, and section-wide mobile accents. */
.defense-title-mobile { display: none; }
body.theme-single .stats-table .matchup-previous-season-header:not(.open) th,
body.theme-single .stats-table .matchup-previous-season-header:not(.open) .player-season-toggle {
  background: #f7f9f6;
  color: #1b2922;
}
body.theme-single .summary-section-card .injury-exclude-toggle { width: auto; white-space: nowrap; }
@media (max-width: 767px) {
  .defense-title-desktop { display: none; }
  .defense-title-mobile { display: inline; }
  body.theme-single .app-shell.archive-mode :is(.team-schedule-panel, .archive-summary-card, #homeFilterList, .summary-section-card, .team-mobile-position-section) {
    border-left: 5px solid var(--team-accent, #568e0f) !important;
  }
  body.theme-single .app-shell.archive-mode :is(.team-schedule-header, .archive-summary-header, .team-player-filter-header, .summary-section-card .section-header-row, .team-mobile-position-section > .position-section-toggle) {
    border-left: 0 !important;
    display: flex;
    align-items: center !important;
  }
  body.theme-single .app-shell.archive-mode .summary-section-card .section-header-row { display: grid; }
  body.theme-single .app-shell.archive-mode .team-mobile-position-section {
    display: block;
    background: #e7ece4;
  }
  body.theme-single .app-shell.archive-mode .team-mobile-position-player-list:not([hidden]) {
    display: grid;
    margin: 0;
    padding: 8px 7px;
    gap: 8px;
  }
  body.theme-single .app-shell.archive-mode .team-mobile-position-section:not(.position-collapsed) > .position-section-toggle {
    border-radius: 7px 7px 0 0 !important;
  }
  body.theme-single .app-shell.archive-mode .summary-section-card > .stats-table-wrapper {
    width: calc(100% - 14px);
    margin: 6px 7px 8px;
  }
  body.theme-single .app-shell.archive-mode .team-panel > .team-panel-header {
    display: flex !important;
    align-items: center !important;
    min-height: 38px !important;
    padding-block: 0 !important;
  }
  body.theme-single .app-shell.archive-mode .team-header-player-zone { align-items: center; }
  body.theme-single .app-shell.archive-mode .current-season-section {
    border: 0;
    margin: 0;
    padding: 0;
  }
  body.theme-single .app-shell:not(.archive-mode) :is(.expand-btn, .defense-collapse-btn, .section-collapse-btn, .position-collapse-symbol) {
    width: 24px !important;
    min-width: 24px !important;
    height: 24px !important;
    min-height: 24px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #111713 !important;
    font-family: inherit !important;
    font-size: 15px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    right: 8px !important;
  }
}
@media (max-width: 767px) {
  body.theme-single .app-shell:not(.archive-mode) .team-panel > .team-panel-header .expand-btn { right: 17px !important; }
  body.theme-single .app-shell:not(.archive-mode) .info-cell .defense-card-header .defense-collapse-btn { right: 10px !important; }
}

/* v88: regulation injury rows and independent team columns. */
body.theme-single .stats-table tr.injury-exit-row td,
body.theme-single .hit-rates-table tr.injury-exit-row td { color: #c62828 !important; }
.team-independent-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-items:start; }
.team-independent-column { display:flex; flex-direction:column; gap:12px; min-width:0; }
.team-independent-column > * { margin:0 !important; width:100%; min-width:0; }
body.theme-single .app-shell.archive-mode .archive-leader-stats,
body.theme-single .app-shell.archive-mode .archive-leader-stat,
body.theme-single .app-shell.archive-mode .archive-leader-stat strong { font-family:inherit; font-size:10.5px; font-weight:400; line-height:1.18; letter-spacing:normal; text-transform:none; }
#mobileDefenseSection[hidden], [id$="DefenseAnchor"] { display:none !important; }
@media(max-width:767px) {
  body.theme-single .app-shell:not(.archive-mode) #mobileDefenseSection { display:block; width:100%; min-width:0; box-sizing:border-box; border:1px solid #d1d8cd; border-left:5px solid #7bbf14; border-radius:8px; background:#f5f7f3; order:3; }
  body.theme-single #mobileDefenseSection .mobile-defense-heading { position:relative; display:flex; align-items:center; width:100%; height:36px; padding:0 49px 0 8px; border:0; background:#fff; border-radius:6px; color:#111713; font-family:inherit; font-size:12px; font-weight:700; font-style:normal; line-height:1.1; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; }
  #mobileDefenseSection .defense-group-symbol { position:absolute; right:17px; top:18px; transform:translateY(-50%); display:inline-flex; justify-content:center; align-items:center; box-sizing:border-box; width:24px; height:24px; padding:0; margin:0; border:0; border-radius:0; background:transparent; box-shadow:none; font-family:inherit; font-size:15px; font-weight:900; line-height:1; letter-spacing:normal; }
  #mobileDefenseSection .mobile-defense-teams { padding:7px; display:grid; gap:8px; }
  #mobileDefenseSection .mobile-defense-teams[hidden] { display:none; }
  body.theme-single .app-shell #mobileDefenseSection .info-cell { margin:0 !important; width:100% !important; min-width:0 !important; border:1px solid #d2d7d0 !important; border-radius:8px; background:#fff; box-shadow:none; }
  body.theme-single .app-shell #mobileDefenseSection .defense-card-header { min-height:34px; grid-template-columns:24px minmax(0,1fr); cursor:default; padding-right:8px; }
  body.theme-single .app-shell #mobileDefenseSection .info-body { display:block !important; padding:5px !important; }
  body.theme-single .app-shell #mobileDefenseSection .def-grid { display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:0 !important; }
  body.theme-single .app-shell #mobileDefenseSection .def-grid-col { min-width:0; }
  body.theme-single .app-shell #mobileDefenseSection .def-line,
  body.theme-single .app-shell #mobileDefenseSection .def-column-header { grid-template-columns:minmax(0,1fr) 4.2ch 5.2ch !important; gap:3px !important; font-size:clamp(7.5px,2.35vw,9.5px) !important; }
}
@media(max-width:767px) {
  body.theme-single .app-shell #mobileDefenseSection .def-grid-col { padding:0 !important; margin:0 !important; border:0 !important; }
  body.theme-single .app-shell #mobileDefenseSection .def-grid-col:first-child { padding-right:6px !important; }
  body.theme-single .app-shell #mobileDefenseSection .def-grid-col-positions { padding-left:6px !important; border-left:1px solid #d7dcd5 !important; }
  body.theme-single .app-shell #mobileDefenseSection .def-column-header { min-height:32px; }
}
/* Keep defence text on the same narrow-screen scale as player statistics. */
@media(max-width:380px) {
  body.theme-single .app-shell #mobileDefenseSection .def-line,
  body.theme-single .app-shell #mobileDefenseSection .def-column-header { font-size:7.5px !important; }
}

/* League-wide touchdown page */
.touchdown-mode .teams-row,
.touchdown-mode .info-row,
.touchdown-mode #mobileDefenseSection { display: none !important; }
.touchdown-page[hidden] { display: none; }
.touchdown-page { margin-top: 16px; padding: 20px; background: var(--bg-panel); border: 1px solid var(--border-soft); border-radius: 12px; min-width: 0; }
.td-page-header { display: flex; align-items: center; gap: 16px; }
.td-page-header img { width: 100px; height: 84px; object-fit: contain; }
.td-page-header h1 { margin: 0; font-size: clamp(20px, 3vw, 28px); }
.td-page-header p { color: var(--text-soft); margin: 6px 0 0; }
.td-page-controls { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
.td-result-count, .td-explanation, .td-past-season { font-size: 12px; color: var(--text-soft); }
.td-explanation { line-height: 1.6; margin: 16px 0 10px; }
.td-past-season { color: var(--accent); }
.td-table-scroll { overflow-x: auto; max-width: 100%; border: 1px solid var(--border-soft); border-radius: 8px; }
.td-league-table { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.td-league-table th, .td-league-table td { padding: 12px 14px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--border-soft); }
.td-league-table th { background: var(--accent-soft); }
.td-league-table th button { color: var(--text-main); font: inherit; font-weight: 700; background: none; border: 0; padding: 0; cursor: pointer; }
.td-league-table th:first-child, .td-league-table td:first-child { text-align: left; }
.td-league-table td:first-child { font-weight: 600; }
.td-league-table tbody tr:nth-child(even) { background: var(--accent-soft2); }
.td-league-table tbody tr:hover { background: var(--accent-soft); }
.td-league-table td:nth-child(3) { font-weight: 700; color: var(--accent); }
.td-league-table tr:last-child td { border-bottom: 0; }
@media (max-width: 767px) {
  .touchdown-page { padding: 12px; }
  .td-page-header img { width: 66px; height: 62px; }
  .td-page-header { gap: 10px; }
  .td-league-table { font-size: 12px; }
  .td-league-table th, .td-league-table td { padding: 10px; }
  .td-league-table th:first-child, .td-league-table td:first-child { position: sticky; left: 0; background: var(--bg-panel); z-index: 1; }
}

.td-toggle-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* v97: matchup-style TD columns and expandable game logs. */
.td-page-controls { margin-bottom: 18px; }
.td-league-table > thead > tr > th { background: #002b5c; color: white; text-align: center; }
.td-league-table > thead > tr > th:first-child { text-align: left; }
.td-league-table > thead > tr > th button { color: white; }
.td-league-table > tbody > .td-player-row { background: #fff; cursor: pointer; }
.td-league-table > tbody > .td-player-row.td-row-shaded { background: #f2f4f1; }
.td-league-table > tbody > .td-player-row:hover { background: #e8ece7; }
.td-league-table > tbody > .td-player-row > td { text-align: center; font-weight: 400; color: #002b5c; }
.td-league-table > tbody > .td-player-row > td:first-child { text-align: left; background: inherit; }
.td-player-expand { border: 0; padding: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; text-align: left; }
.td-player-expand::after { content: ' +'; color: #667166; }
.td-player-expand[aria-expanded="true"]::after { content: none; }
.td-team-select { cursor: pointer; border: 0; max-width: 180px; font-family: inherit; }
.td-game-detail[hidden] { display: none; }
.td-league-table > tbody > .td-game-detail > td { position: static; background: #fafbf9; padding: 0; text-align: left; }
.td-game-log { max-width: 100%; }
.td-game-log p { margin: 0 0 10px; color: #002b5c; font-weight: 600; }
.td-game-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.td-league-table .td-game-table th, .td-league-table .td-game-table td { position: static; padding: 8px; text-align: center; font-weight: 400; color: #002b5c; }
.td-league-table .td-game-table th { background: #002b5c; color: #fff; font-weight: 600; }
.td-league-table .td-game-table tbody tr:nth-child(odd) td { background: #fff; }
.td-league-table .td-game-table tbody tr:nth-child(even) td { background: #f2f4f1; }
.td-league-table > thead > tr > th:first-child { background: #002b5c; color: #fff; }
.td-league-table > tbody > .td-player-row > td:first-child { background: inherit; }
/* v101: TD page typography and site-green headers. */
.td-percentage { font-size: .8em; }
.td-league-table > tbody > .td-player-row > td,
.td-league-table .td-game-table td,
.td-game-log p { color: #000; }
.td-league-table > thead > tr > th,
.td-league-table > thead > tr > th:first-child { background: #111512; color: #fff; }
.td-league-table .td-game-table th { background: var(--accent); color: #111512; }
.td-league-table > thead > tr > th button { color: #fff; }
body.theme-single .td-toggle-controls .hit-toggle { font-family: Arial, sans-serif; }
body.theme-single .td-toggle-controls .hit-toggle { line-height: 1; }

.td-game-log { margin: 0; padding: 0; }
.td-player-opponent { display: block; margin-top: 4px; font-size: 11px; color: #42630f; }
.td-heading-compact { display: none; }

@media (max-width: 767px) {
  .td-page-header h1 { font-size: 20px; }
  .td-heading-full { display: none; }
  .td-heading-compact { display: inline; }
  .td-table-scroll { overflow: visible; border-radius: 0; }
  .td-league-table { table-layout: fixed; font-size: 10px; }
  .td-league-table > thead > tr > th,
  .td-league-table > tbody > .td-player-row > td { position: static; padding: 9px 2px; white-space: normal; overflow-wrap: anywhere; }
  .td-league-table > thead > tr > th:first-child { width: 22%; }
  .td-league-table > thead > tr > th:nth-child(2),
  .td-league-table > thead > tr > th:nth-child(3),
  .td-league-table > thead > tr > th:nth-child(4) { width: 10%; }
  .td-league-table > thead > tr > th:nth-child(5) { width: 12%; }
  .td-league-table > thead > tr > th:nth-child(6),
  .td-league-table > thead > tr > th:nth-child(7) { width: 18%; }
  .td-league-table > thead button { line-height: 1.3; }
  .td-player-expand { width: 100%; line-height: 1.35; }
  .td-percentage { display: block; margin-top: 3px; font-size: 9px; white-space: nowrap; }
  .td-player-opponent { font-size: 10px; }
  .td-game-table, .td-game-table tbody { display: block; width: 100%; }
  .td-game-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .td-game-table tbody tr { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); border-bottom: 1px solid var(--border-soft); }
  .td-league-table .td-game-table td { grid-column: span 3; min-width: 0; padding: 7px 2px; white-space: normal; overflow-wrap: anywhere; font-size: 12px; }
  .td-league-table .td-game-table td::before { content: attr(data-label); display: block; margin-bottom: 3px; font-size: 10px; font-weight: 600; }
  .td-league-table .td-game-table tbody tr td:nth-child(-n+3) { grid-column: span 4; background: var(--accent); color: #111512; }
  .td-league-table .td-game-table td[colspan] { grid-column: 1 / -1; }
}
