/* Readable controls and content on the public viewer. Source layouts have no player nav. */
html body:has(.player-viewer-nav) :is(
  .league-admin-summary-jumps a, .series-leaderboard-tabs button, .series-leaderboard-search input,
  .series-team-roster button, .fp-notes summary
) {
  min-height: 44px;
  box-sizing: border-box;
}

html body:has(.player-viewer-nav) :is(
  .league-admin-summary-jumps a, .league-admin-summary-card summary, .series-leaderboard-tabs button,
  .series-leaderboard-search input, .series-team-card summary, .series-team-roster button, .fp-notes summary
):focus-visible {
  outline: 2px solid var(--viewer-shell-action);
  outline-offset: -2px;
}

/* Series Hub: a straight edge for kickoff and check-in information. */
body.series-page .series-hub-top-grid .player-viewer-fixtures > li > .player-viewer-link {
  grid-template-columns: minmax(0, 1fr) minmax(9rem, 30%);
  align-items: stretch;
}

body.series-page .series-hub-top-grid .series-hub-fixture-time {
  font-variant-numeric: tabular-nums;
}

/* Match Centre and Matches share a clear, readable treatment for times and scores. */
html.viewer-public-shell body:has(.player-viewer-nav) :is(.viewer-match-centre-page, .viewer-matches-page) .viewer-slot-clock {
  font-variant-numeric: tabular-nums;
}

html.viewer-public-shell body:has(.player-viewer-nav) .viewer-match-centre-page .viewer-ladder-row {
  grid-template-columns: 22px minmax(0, 1fr) repeat(4, minmax(28px, 8%));
  column-gap: 7px;
}

html.viewer-public-shell body:has(.player-viewer-nav) .viewer-match-centre-page .viewer-ladder-row.head {
  letter-spacing: .02em;
  white-space: nowrap;
}

html.viewer-public-shell body:has(.player-viewer-nav) .viewer-matches-page .player-viewer-tools {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  align-items: end;
}

html.viewer-public-shell body:has(.player-viewer-nav) .viewer-matches-page .viewer-artwork-match > .viewer-match-banner {
  opacity: .07;
}

/* Keep the score and ranking columns easy to scan while preserving table overflow. */
html.viewer-public-shell body:has(.player-viewer-nav) .player-viewer-ladder .viewer-full-ladder-row {
  font-variant-numeric: tabular-nums;
}

html.viewer-public-shell body:has(.player-viewer-nav) .player-viewer-ladder .viewer-full-ladder-row.head {
  color: var(--viewer-shell-muted);
  background: var(--viewer-shell-raised);
}

html.viewer-public-shell body:has(.player-viewer-nav) .player-viewer-ladder .player-viewer-points {
  font-weight: 750;
}

/* Give roster results a visible affordance and keep result names readable. */
body.series-page:has(.player-viewer-nav) .series-team-card > summary {
  min-height: 80px;
  color: var(--viewer-shell-ink);
}

body.series-page:has(.player-viewer-nav) .series-team-card[open] > summary {
  background: var(--viewer-shell-raised);
}

body.series-page:has(.player-viewer-nav) .series-team-card .series-team-toggle {
  color: var(--viewer-shell-action);
  font-size: .75rem;
}

body.series-page:has(.player-viewer-nav) .series-team-card .series-team-toggle i {
  border-color: currentColor;
}

body.series-page:has(.player-viewer-nav) .series-team-roster li { align-items: center; }

/* Stat categories wrap as a group, including longer translated labels. */
body.series-page:has(.player-viewer-nav) .series-leaderboard-tools {
  padding: 12px;
  border: 1px solid var(--viewer-shell-line);
  border-radius: var(--brk-workspace-radius-control, 8px);
  background: var(--viewer-shell-raised);
}

body.series-page:has(.player-viewer-nav) .series-leaderboard-tabs {
  flex-wrap: wrap;
  overflow: visible;
  padding: 0;
}

body.series-page:has(.player-viewer-nav) .series-leaderboard-tabs button {
  max-width: 100%;
  padding-inline: 10px;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* League Info remains a set of disclosures with legible labels and values. */
body.series-page:has(.player-viewer-nav) .league-admin-summary-jumps a {
  display: inline-flex;
  align-items: center;
  overflow-wrap: anywhere;
}

body.series-page:has(.player-viewer-nav) .league-admin-summary-card > summary {
  color: var(--viewer-shell-ink);
  min-height: 52px;
}

body.series-page:has(.player-viewer-nav) .league-admin-summary-groups :is(dt, dd) {
  line-height: 1.5;
}

/* Finals keep the round, local time and both entrants together. */
html.viewer-public-shell body:has(.player-viewer-nav) .viewer-finals-compact .fp-lane h3 {
  font-size: .9375rem;
  line-height: 1.35;
}

html.viewer-public-shell body:has(.player-viewer-nav) .viewer-finals-compact .fp-date {
  font-size: .8125rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

@media (max-width: 759px) {
  body.series-page:has(.player-viewer-nav) .series-team-card .series-team-toggle {
    display: grid;
    justify-items: end;
    gap: 5px;
  }

  body.series-page:has(.player-viewer-nav) .series-team-card .series-team-toggle :is(.series-team-toggle-open, .series-team-toggle-close) {
    position: static;
    width: auto;
    height: auto;
    max-width: 12ch;
    clip: auto;
    overflow: visible;
    line-height: 1.25;
    text-align: end;
    overflow-wrap: anywhere;
  }

  body.series-page:has(.player-viewer-nav) .series-leaderboard-tabs button { flex: 1 1 calc(50% - 8px); }
}

@media (max-width: 480px) {
  body.series-page .series-hub-top-grid .player-viewer-fixtures > li > .player-viewer-link,
  html.viewer-public-shell body:has(.player-viewer-nav) .viewer-matches-page .player-viewer-tools {
    grid-template-columns: minmax(0, 1fr);
  }

  html.viewer-public-shell body:has(.player-viewer-nav) .viewer-match-centre-page .viewer-ladder-row {
    grid-template-columns: 18px minmax(0, 1fr) repeat(4, minmax(23px, 8%));
    column-gap: 4px;
  }

  html.viewer-public-shell body:has(.player-viewer-nav) .viewer-finals-compact .fp-lane {
    grid-template-columns: minmax(0, 1fr);
    padding: 10px;
    border: 1px solid var(--viewer-shell-line);
    border-radius: var(--brk-workspace-radius-control, 8px);
    background: var(--viewer-shell-raised);
  }
}
