/* Salibandy widgets — white surfaces and blue highlights.
   Load after the site's existing theme stylesheet.
   Change these tokens to match your club colours. */
/* Theme tokens. */
:root {
  --sb-accent: #145cc9;
  --sb-accent-soft: #edf4ff;
  --sb-ink: #233247;
  --sb-muted: #64748b;
  --sb-font: 'Open Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --sb-accent-light: #6ec0f6;
  --sb-line: #dce8f5;
  --sb-surface: #fff;
  --sb-soft: #f8fbff;
  --sb-radius: 14px;
  --sb-shadow: 0 3px 16px rgb(20 55 100 / 5%);
}
/* Widget containers and shared controls. */
:is(
  .salibandy-series,
  .salibandy-competition,
  .salibandy-stats,
  .salibandy-games-list-team,
  .salibandy-game,
  .salibandy-next-home,
  .salibandy-roster,
  .salibandy-all-time-stats
):not(table) {
  color: var(--sb-ink);
  font-family: inherit;
  margin: 24px 0;
  line-height: 1.5;
}
:is(
    .salibandy-series,
    .salibandy-competition,
    .salibandy-stats,
    .salibandy-games-list-team,
    .salibandy-game,
    .salibandy-next-home,
    .salibandy-roster,
    .salibandy-all-time-stats
  )
  *,
.salibandy-player-grid * {
  box-sizing: border-box;
}
.salibandy-rendered > :is(h4, h5) {
  font-size: clamp(1.15rem, 2.5vw, 1.6rem);
  font-weight: 800;
  letter-spacing: -0.025em;
  color: var(--sb-ink);
  margin: 0 0 18px;
  padding-left: 14px;
  border-left: 4px solid var(--sb-accent);
}
.salibandy-content,
.salibandy-all-time-content {
  overflow-x: auto;
}
.salibandy-history-controls {
  display: flex;
  flex-wrap: wrap;
  border: 1px solid var(--sb-line);
  border-radius: var(--sb-radius);
  margin-bottom: 20px;
}
.salibandy-history-controls label {
  display: grid;
  gap: 6px;
  font-weight: 700;
}
.salibandy-history-controls select {
  appearance: auto;
  max-width: 100%;
  min-width: 150px;
  color: var(--sb-ink);
  background: white;
  border: 1px solid var(--sb-line);
  font: inherit;
}
.salibandy-history-status {
  flex-basis: 100%;
  margin: 0;
}
:is(.salibandy-retry, .salibandy-all-time-load) {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 10px 18px;
  border: 0;
  border-radius: 10px;
  background: var(--sb-accent);
  color: #fff;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  margin: 8px 0 16px;
}
:is(.salibandy-retry, .salibandy-all-time-load):hover {
  filter: brightness(0.9);
}
:is(.salibandy-retry, .salibandy-all-time-load):disabled {
  cursor: wait;
  opacity: 0.6;
}
:is(
  .salibandy-season-select,
  .salibandy-category-select,
  .salibandy-retry,
  .salibandy-all-time-load
):focus-visible {
  outline: 3px solid var(--sb-accent);
  outline-offset: 3px;
}
.salibandy-loading {
  font-family: var(--sb-font);
  font-weight: 400;
  line-height: 1.5;
  min-height: 90px;
  justify-content: center;
  color: var(--sb-muted);
  font-size: 0.9rem;
}
.salibandy-loading > span:not(.salibandy-spinner) {
  font: inherit;
  letter-spacing: normal;
  text-transform: none;
}
.salibandy-spinner {
  border-top-color: var(--sb-accent);
}
:is(
  .salibandy-status,
  .salibandy-all-time-status,
  .salibandy-empty,
  .salibandy-error,
  .salibandy-all-time-note
) {
  font-size: 0.875rem;
  color: var(--sb-muted);
  margin: 12px 0;
}
.salibandy-status:empty,
.salibandy-history-status:empty {
  display: none;
}
.salibandy-error {
  color: #b42318;
}
/* Tables: standings and statistics. */
.salibandy-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--sb-surface);
  border: 1px solid var(--sb-line);
  border-radius: var(--sb-radius);
  overflow: hidden;
  box-shadow: var(--sb-shadow);
  margin: 0 0 12px;
}
.salibandy-table :is(th, td) {
  border: 0;
  vertical-align: middle;
  white-space: nowrap;
}
.salibandy-table thead th {
  font-weight: 700;
  text-align: center;
}
.salibandy-table td {
  text-align: center;
  border-bottom: 1px solid var(--sb-line);
  font-variant-numeric: tabular-nums;
}
.salibandy-table tbody tr:last-child td {
  border-bottom: 0;
}

.salibandy-table .salibandy-table-row-highlight td {
  background: var(--sb-accent-soft);
  font-weight: 700;
}
.salibandy-table .salibandy-table-cell-highlight {
  color: var(--sb-accent);
}
.salibandy-series-table :is(th, td):nth-child(2),
.salibandy-stats :is(th, td):nth-child(2),
.salibandy-all-time-table :is(th, td):is(:nth-child(2), :nth-child(3)) {
  text-align: left;
}
.salibandy-series-table td[data-column='p'] {
  color: var(--sb-accent);
  font-weight: 800;
}
.salibandy-team-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.salibandy-team-logo {
  width: 28px;
  height: 28px;
  object-fit: contain;
  flex-shrink: 0;
}
.salibandy-player-link {
  color: inherit;
  font-weight: 600;
  text-decoration: none;
}
.salibandy-player-link:hover {
  color: var(--sb-accent);
  text-decoration: underline;
}
/* Match list: table semantics and card rows. */
.salibandy-games-table-team {
  border-radius: 0;
  border-spacing: 0 12px;
  min-width: 0;
  width: 100%;
  table-layout: auto;
}
.salibandy-games-table-team thead th {
  background: transparent;
  color: var(--sb-muted);
  padding: 0 16px 4px;
  text-align: left;
}
.salibandy-games-table-team tbody tr td,
.salibandy-games-table-team tbody tr:nth-child(even) td {
  text-align: left;
  white-space: normal;
}
.salibandy-games-table-team tbody tr td:first-child {
  border-left: 1px solid var(--sb-line);
  border-radius: 14px 0 0 14px;
  width: 1%;
  white-space: nowrap;
  min-width: 170px;
}
.salibandy-games-table-team tbody tr td:nth-child(2) {
  width: 24%;
}
.salibandy-games-table-team tbody tr td:last-child {
  border-right: 1px solid var(--sb-line);
  border-radius: 0 14px 14px 0;
  min-width: 100px;
  white-space: nowrap;
}

.salibandy-games-table-team tbody tr:hover td {
  border-color: #a7c9ed;
}
.salibandy-match-row:focus-visible {
  outline: 3px solid var(--sb-accent);
  outline-offset: 3px;
}
.salibandy-match-date {
  white-space: nowrap;
  display: grid;
  gap: 8px;
  font-size: 0.8rem;
  font-weight: 600;
}
.salibandy-match-teams {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
}
.salibandy-match-teams .salibandy-team-label {
  display: flex;
  flex-direction: column;
  text-align: center;
  font-size: 0.82rem;
  font-weight: 700;
  gap: 6px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.salibandy-match-teams .salibandy-team-logo {
  width: 38px;
  height: 38px;
  order: -1;
}
.salibandy-match-separator {
  color: #a3afbd;
}
.salibandy-countdown {
  display: inline-flex;
  width: fit-content;
  padding: 5px 9px;
  border-radius: 7px;
  color: var(--sb-accent);
  background: var(--sb-accent-soft);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.025em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.salibandy-match-badge {
  display: inline-block;
  padding: 5px 9px;
  color: var(--sb-muted);
  background: var(--sb-soft);
  border-radius: 7px;
  font-size: 0.72rem;
}
.salibandy-match-row[data-status='Live'] td:first-child {
  border-left: 3px solid var(--sb-accent);
}
.salibandy-result-indicator {
  flex-shrink: 0;
  box-shadow: 0 0 0 2px var(--sb-surface);
}
.salibandy-result-indicator::after {
  content: none;
}
/* Previous and next-match cards. */
.salibandy-next-game {
  display: grid;
  gap: 18px;
}
.salibandy-match-card {
  border: 1px solid var(--sb-line);
  background: #fff;
  overflow: hidden;
}
.salibandy-match-card:hover {
  border-color: #a7c9ed;
}
.salibandy-match-card:focus-visible {
  outline: 3px solid var(--sb-accent);
  outline-offset: 3px;
}
.salibandy-match-card .widget-title {
  padding: 15px 20px;
  border-bottom: 1px solid var(--sb-line);
  background: var(--sb-soft);
}
.salibandy-match-card .widget-title h4 {
  color: var(--sb-ink);
  font-size: 0.85rem;
  font-weight: 700;
  margin: 0;
}
.salibandy-match-card :is(ul, li) {
  margin: 0;
  padding: 0;
  list-style: none;
}
.salibandy-match-card .fixture {
  text-align: center;
  padding: 24px 20px;
}
.salibandy-match-card .competition {
  color: var(--sb-muted);
  font-size: 0.75rem;
  margin-bottom: 20px;
}
.salibandy-match-card .clubs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.salibandy-match-card :is(.home-clubs, .away-clubs) {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 0;
  font-size: 0.95rem;
}
.salibandy-match-card :is(.home-club, .away-club) {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.salibandy-match-card .salibandy-team-logo {
  width: 68px;
  height: 68px;
}
.salibandy-match-card .score {
  font-size: 1.8rem;
  font-weight: 800;
  margin-top: 10px;
}
.salibandy-match-card .wpcm-date {
  font-size: 0.85rem;
  font-weight: 600;
  margin: 20px 0 10px;
}
.salibandy-match-venue {
  font-size: 0.8rem;
  color: var(--sb-muted);
  margin-top: 10px;
}
/* Player gallery. */
.salibandy-player-grid {
  gap: 20px;
}
.salibandy-player-card {
  border-color: var(--sb-line);
}
.salibandy-player-card:hover {
  transform: translateY(-3px);
}
.salibandy-player-number {
  color: var(--sb-accent);
}
.salibandy-player-body:hover {
  color: inherit;
  text-decoration: none;
}
/* Shared responsive adjustments. */
@media (max-width: 800px) {
  .salibandy-history-controls {
    padding: 12px;
  }
  .salibandy-history-controls label {
    width: 100%;
  }
  .salibandy-history-controls select {
    width: 100%;
  }
  .salibandy-table :is(th, td) {
    padding: 11px 10px;
    font-size: 0.8rem;
  }
  .salibandy-games-table-team {
    min-width: 0;
    display: block;
    border-spacing: 0;
  }
  .salibandy-games-table-team thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }
  .salibandy-games-table-team tbody {
    display: grid;
    gap: 14px;
  }
  .salibandy-games-table-team .salibandy-match-row {
    display: grid;
    column-gap: 12px;
    padding: 16px;
    border: 1px solid var(--sb-line);
    border-radius: 14px;
    background: white;
  }
  .salibandy-games-table-team tbody tr td,
  .salibandy-games-table-team tbody tr:nth-child(even) td {
    border: 0;
    padding: 0;
    width: auto;
    min-width: 0;
    border-radius: 0;
    background: transparent;
  }
  .salibandy-games-table-team tbody tr:last-child td {
    border-bottom: 0;
  }
  .salibandy-games-table-team tbody tr td:first-child {
    grid-column: 1;
    grid-row: 1;
  }
  .salibandy-games-table-team tbody tr td:nth-child(2) {
    padding-top: 12px;
  }
  .salibandy-games-table-team
    tbody
    tr
    td:nth-child(2):not(:empty):not(.salibandy-venue-empty)::before {
    content: 'Paikka: ';
  }
  .salibandy-games-table-team tbody tr td:nth-child(3) {
    padding-top: 16px;
  }
  .salibandy-games-table-team tbody tr td:last-child {
    padding-left: 12px;
  }
  .salibandy-match-teams {
    grid-template-columns: 1fr auto 1fr;
  }
  .salibandy-match-teams .salibandy-team-logo {
    width: 46px;
    height: 46px;
  }
  .salibandy-player-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .salibandy-player-name {
    font-size: 0.85rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  .salibandy-player-card {
    transition: none;
  }
  .salibandy-player-card:hover {
    transform: none;
  }
}
/* Venue filters: compare venue IDs, independently of home/away team order. */
.salibandy-match-tabs {
  display: flex;
  flex-wrap: wrap;
}
.salibandy-match-tab {
  min-height: 44px;
  border: 1px solid var(--sb-line);
  background: var(--sb-surface);
  color: var(--sb-muted);
  font: inherit;
  cursor: pointer;
}

.salibandy-match-tab:hover:not(:disabled) {
  background: var(--sb-accent-soft);
}
.salibandy-match-tab:focus-visible {
  outline: 3px solid var(--sb-accent);
  outline-offset: 3px;
}
.salibandy-match-tab:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.salibandy-match-count,
.salibandy-match-note {
  color: var(--sb-muted);
  font-size: 0.8rem;
  margin: 8px 0;
}

/* Narrow cards give dates and scores their own complete lines. */
@media (max-width: 420px) {
  .salibandy-games-table-team tbody tr td:first-child {
    grid-column: 1;
    grid-row: 1;
  }
  .salibandy-games-table-team tbody tr td:last-child {
    padding: 12px 0 0;
  }
}

.salibandy-games-table-team .salibandy-table-row-highlight td {
  background: var(--sb-surface);
}
.salibandy-games-table-team tbody tr td:nth-child(3) {
  min-width: 180px;
}
@media (max-width: 800px) {
  .salibandy-games-table-team .salibandy-table-row-highlight td {
    background: transparent;
  }
  .salibandy-games-table-team tbody tr td:nth-child(3) {
    min-width: 0;
  }
}

/* Venue occupies a complete line below the teams. */
.salibandy-games-table-team {
  display: block;
}
.salibandy-games-table-team thead {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}
.salibandy-games-table-team tbody {
  display: grid;
  gap: 14px;
}
.salibandy-games-table-team .salibandy-match-row {
  display: grid;
  grid-template-columns: 148px minmax(0, 1fr) 140px;
  border: 1px solid var(--sb-line);
  background: var(--sb-surface);
}
.salibandy-games-table-team tbody tr td,
.salibandy-games-table-team tbody tr:nth-child(even) td,
.salibandy-games-table-team tbody tr:last-child td {
  width: auto;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.salibandy-games-table-team tbody tr td:first-child {
  grid-column: 1;
  grid-row: 1;
}
.salibandy-games-table-team tbody tr td:nth-child(3) {
  grid-column: 2;
  grid-row: 1;
}
.salibandy-games-table-team tbody tr td:last-child {
  grid-column: 3;
  grid-row: 1;
  align-self: center;
}
.salibandy-games-table-team tbody tr td:nth-child(2) {
  grid-column: 1 / -1;
  grid-row: 2;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: left;
  border-top: 1px solid var(--sb-line);
}
.salibandy-games-table-team tbody tr td:nth-child(2):empty,
.salibandy-games-table-team tbody tr .salibandy-venue-empty {
  display: none;
}
.salibandy-games-table-team
  tbody
  tr
  td:nth-child(2):not(:empty):not(.salibandy-venue-empty)::before {
  content: 'Paikka: ';
}
@media (max-width: 800px) {
  .salibandy-games-table-team .salibandy-match-row {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .salibandy-games-table-team tbody tr td:last-child {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
  }
  .salibandy-games-table-team tbody tr td:nth-child(3) {
    grid-column: 1 / -1;
    grid-row: 2;
  }
  .salibandy-games-table-team tbody tr td:nth-child(2) {
    grid-column: 1 / -1;
    grid-row: 3;
  }
}
@media (max-width: 420px) {
  .salibandy-games-table-team .salibandy-match-row {
    grid-template-columns: minmax(0, 1fr);
  }
  .salibandy-games-table-team tbody tr td:last-child {
    grid-column: 1;
    grid-row: 2;
    text-align: left;
  }
  .salibandy-games-table-team tbody tr td:nth-child(3) {
    grid-column: 1;
    grid-row: 3;
  }
  .salibandy-games-table-team tbody tr td:nth-child(2) {
    grid-column: 1;
    grid-row: 4;
  }
}

/* Match row details: keep the venue below teams and timer in the result column. */
.salibandy-games-table-team .salibandy-match-row {
  height: auto;
  grid-auto-rows: auto;
  align-items: start;
}
.salibandy-games-table-team .salibandy-match-date {
  height: auto;
  min-width: 0;
}
/* Match cards replace table-cell borders; only the venue separator remains. */
.salibandy-games-table-team tbody tr.salibandy-match-row > td,
.salibandy-games-table-team tbody tr.salibandy-match-row > td:first-child,
.salibandy-games-table-team tbody tr.salibandy-match-row > td:last-child {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
}
.salibandy-games-table-team
  tbody
  tr.salibandy-match-row
  > .salibandy-match-venue-cell:not(.salibandy-venue-empty) {
  display: block !important;
  visibility: visible;
  opacity: 1;
  height: auto;
  min-width: 0;
  overflow: visible;
  grid-column: 1 / -1;
  align-self: start;
  padding-top: 10px;
  border-top: 1px solid var(--sb-line);
  color: var(--sb-muted);
}
.salibandy-games-table-team .salibandy-match-date,
.salibandy-games-table-team .salibandy-match-date > span {
  border: 0;
  box-shadow: none;
}

/* Upcoming countdown belongs to the result column, never the venue line. */
.salibandy-games-table-team tbody tr.salibandy-match-row > td:last-child .salibandy-countdown {
  position: static;
  float: none;
  transform: none;
  margin: 0;
  max-width: 100%;
  white-space: normal;
  text-align: center;
  vertical-align: middle;
}

/* Optional roster table with details directly below the selected player. */
.salibandy-roster-table {
  min-width: 0;
  width: 100%;
}
.salibandy-roster-table th:first-child,
.salibandy-roster-table td:first-child:not([colspan]) {
  width: 80px;
}
.salibandy-roster-table td:nth-child(2) {
  text-align: left;
  white-space: normal;
}
.salibandy-player-open {
  font: inherit;
  background: transparent;
  border: 0;
  padding: 10px 0;
  text-align: left;
  cursor: pointer;
}
.salibandy-player-open:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 4px;
}
.salibandy-player-detail {
  text-align: left;
  white-space: normal;
  overflow-x: auto;
}
.salibandy-player-detail-image {
  width: 160px;
  height: 160px;
  object-fit: cover;
  border-radius: 12px;
}
.salibandy-player-detail-stats {
  margin-top: 16px;
  min-width: 0;
}

.salibandy-page-button {
  font: inherit;
  padding: 9px 14px;
  min-height: 44px;
  color: var(--sb-accent);
  background: var(--sb-surface);
  border: 1px solid var(--sb-line);
  border-radius: 8px;
  cursor: pointer;
}
.salibandy-page-button:disabled {
  opacity: 0.45;
  cursor: default;
}
.salibandy-page-button:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 3px;
}
.salibandy-page-label {
  color: var(--sb-muted);
  font-size: 0.85rem;
}

/* All-time category sections share tabs and retain independent tables. */
.salibandy-all-time-panel {
  min-width: 0;
  overflow-x: auto;
}
.salibandy-all-time-panel > h4 {
  font-family: var(--sb-font);
  color: var(--sb-ink);
  margin: 0 0 14px;
}
section.salibandy-all-time-panel + section.salibandy-all-time-panel {
  margin-top: 20px;
}

/* Standings leaderboards and staff panels. */
.salibandy-standings-leaders {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.salibandy-standings-leaderboard {
  min-width: 0;
  overflow-x: auto;
}

/* Compact leaderboards and staff use the same white/blue table treatment. */
.salibandy-standings-leaderboard {
  background: var(--sb-surface);
  border: 1px solid var(--sb-line);
}
.salibandy-standings-leaderboard h5 {
  font-weight: 700;
}
.salibandy-top-stats {
  min-width: 0;
  box-shadow: none;
}

.salibandy-top-stats :is(th, td):nth-child(-n + 2) {
  text-align: left;
  white-space: normal;
  overflow-wrap: anywhere;
}
.salibandy-top-stats :is(th, td):last-child {
  width: 76px;
  white-space: nowrap;
  text-align: right;
}
.salibandy-roster-staff {
  margin-top: 24px;
  padding: 20px;
  background: var(--sb-surface);
  border: 1px solid var(--sb-line);
  border-radius: var(--sb-radius);
}
.salibandy-roster-staff h5 {
  margin: 0 0 14px;
  color: var(--sb-accent);
  font-size: 1.05rem;
}
.salibandy-roster-staff-table {
  min-width: 0;
  box-shadow: none;
}
.salibandy-roster-staff-table :is(th, td) {
  text-align: left;
  white-space: normal;
  overflow-wrap: anywhere;
}
.salibandy-player-detail {
  padding: 20px;
}
.salibandy-player-detail h5 {
  color: var(--sb-accent);
}
.salibandy-history-status button {
  margin-left: 10px;
  padding: 7px 12px;
  border: 1px solid var(--sb-line);
  border-radius: 8px;
  background: var(--sb-surface);
  color: var(--sb-accent);
  font: inherit;
  cursor: pointer;
}
.salibandy-history-status button:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 3px;
}
@media (max-width: 600px) {
  .salibandy-standings-leaderboard,
  .salibandy-roster-staff,
  .salibandy-player-detail {
    padding: 12px;
  }
  .salibandy-standings-leaders {
    gap: 14px;
  }
  .salibandy-top-stats :is(th, td) {
    padding: 9px 8px;
  }
}

/* Keep API display-name casing across theme typography rules. */
:is(
  .salibandy-person-name,
  .salibandy-player-name,
  .salibandy-player-open,
  .salibandy-player-link
) {
  text-transform: none !important;
  font-variant: normal;
}
/* Row markers also apply to compact leaderboards and roster/staff tables. */
.salibandy-table tbody tr.salibandy-table-row-highlight > td {
  font-weight: 700;
}
.salibandy-top-stats tbody tr.salibandy-table-row-highlight > td:first-child {
  border-left: 3px solid var(--sb-accent);
}
.salibandy-top-stats tbody tr.salibandy-table-row-highlight .salibandy-player-link {
  color: var(--sb-accent);
}

:is(.salibandy-stats, .salibandy-top-stats, .salibandy-all-time-table)
  td:first-child
  .salibandy-person-name {
  text-transform: none !important;
  font-variant: normal !important;
}

/* Shared tracks keep dates, team logos and results aligned across match rows. */
.salibandy-games-table-team tbody tr td:nth-child(3) .salibandy-team-label {
  display: flex;
  width: 100%;
  justify-content: flex-start;
  align-items: center;
  gap: 8px;
}
.salibandy-games-table-team .salibandy-team-logo {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.salibandy-games-table-team tbody tr td:first-child {
  text-align: left;
}
.salibandy-games-table-team tbody tr td:last-child {
  width: 140px;
  justify-self: end;
  text-align: right;
}
@media (max-width: 800px) {
  .salibandy-games-table-team .salibandy-match-row {
    grid-template-columns: minmax(0, 1fr) 140px;
  }
}
@media (max-width: 420px) {
  .salibandy-games-table-team .salibandy-match-row {
    grid-template-columns: minmax(0, 1fr);
  }
  .salibandy-games-table-team tbody tr td:last-child {
    width: auto;
    justify-self: start;
    text-align: left;
  }
}
.salibandy-games-table-team .salibandy-match-teams .salibandy-team-label {
  flex-direction: row;
  text-align: left;
}
.salibandy-games-table-team .salibandy-team-name {
  min-width: 0;
  flex: 1;
  overflow-wrap: anywhere;
}

/* ISB theme refinement: Open Sans and the site's #145cc9 navigation blue.
   No extra font download: reuse the font already loaded by the WordPress theme. */
:is(
  .salibandy-series,
  .salibandy-competition,
  .salibandy-stats,
  .salibandy-roster,
  .salibandy-games-list-team,
  .salibandy-game,
  .salibandy-next-home,
  .salibandy-all-time-stats
):not(table) {
  font-family: var(--sb-font);
  font-size: 14px;
  line-height: 1.55;
  margin: 24px 0 32px;
}
.salibandy-table {
  font-family: var(--sb-font);
  font-size: 14px;
  border-color: var(--sb-line);
}
.salibandy-table :is(th, td) {
  padding: 12px 14px;
}
.salibandy-table thead th {
  color: var(--sb-ink);
  background: #f6f9fe;
  font-size: 12px;
  letter-spacing: 0.025em;
  border-bottom: 1px solid var(--sb-line);
}
.salibandy-table tbody tr:nth-child(even) td {
  background: #fafcff;
}
.salibandy-table tbody tr:hover td {
  background: #f2f7ff;
}
.salibandy-table tbody tr.salibandy-table-row-highlight > td {
  background: var(--sb-accent-soft);
}
.salibandy-rendered :is(h4, h5) {
  font-family: var(--sb-font);
  font-weight: 700;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: -0.02em;
}
.salibandy-history-controls {
  padding: 16px;
  gap: 16px;
  align-items: start;
  border-color: var(--sb-line);
  box-shadow: none;
  background: #f8fbff;
}
.salibandy-history-controls label {
  font-size: 12px;
  color: var(--sb-ink);
}
.salibandy-history-controls select {
  border-radius: 9px;
  padding: 10px 12px;
  min-height: 44px;
  box-shadow: 0 1px 2px rgb(20 55 100 / 3%);
  font-size: 14px;
}
.salibandy-match-tabs {
  gap: 6px;
  margin: 0 0 18px;
}
.salibandy-match-tab {
  padding: 10px 15px;
  border-radius: 9px;
  font-family: var(--sb-font);
  font-size: 13px;
  font-weight: 700;
  transition:
    background-color 0.15s,
    border-color 0.15s,
    color 0.15s;
}
.salibandy-match-tab[aria-selected='true'] {
  background: var(--sb-accent);
  border-color: var(--sb-accent);
  color: #fff;
  box-shadow: 0 2px 6px rgb(20 92 201 / 15%);
}
.salibandy-match-tab:hover:not(:disabled):not([aria-selected='true']) {
  background: var(--sb-accent-soft);
  border-color: #b5cff3;
}
.salibandy-competition-tabs {
  border-bottom: 1px solid var(--sb-line);
  padding-bottom: 12px;
  margin-bottom: 22px;
}
.salibandy-competition-tab {
  min-width: 140px;
}
.salibandy-standings-leaders {
  gap: 18px;
  margin-top: 26px;
}
.salibandy-standings-leaderboard {
  padding: 16px;
  border-radius: 12px;
  border-top: 3px solid var(--sb-accent-light);
  box-shadow: none;
}
.salibandy-standings-leaderboard h5 {
  font-size: 14px;
  color: var(--sb-ink);
  margin: 0 0 14px;
}
.salibandy-top-stats {
  margin-bottom: 0;
  border-radius: 9px;
  font-size: 13px;
}
.salibandy-top-stats :is(th, td) {
  padding: 10px 11px;
}
.salibandy-top-stats td:last-child {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.salibandy-roster-staff {
  border-top: 3px solid var(--sb-accent-light);
  box-shadow: none;
}
.salibandy-roster-staff-table td:last-child {
  color: var(--sb-muted);
}
.salibandy-player-open {
  font-family: var(--sb-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--sb-accent);
}
.salibandy-player-detail {
  border-top: 1px solid var(--sb-line);
  background: #f8fbff;
  border-radius: 0 0 12px 12px;
}
.salibandy-player-detail-image {
  border: 1px solid var(--sb-line);
  background: #fff;
}
.salibandy-player-card {
  border-radius: 12px;
  box-shadow: none;
  transition:
    box-shadow 0.15s,
    border-color 0.15s;
}
.salibandy-player-card:hover {
  border-color: #b5cff3;
  box-shadow: var(--sb-shadow);
}
.salibandy-games-table-team {
  border: 0;
  box-shadow: none;
  background: transparent;
}
.salibandy-games-table-team .salibandy-match-row {
  padding: 18px 16px;
  gap: 16px;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgb(20 55 100 / 3%);
}
.salibandy-games-table-team tbody tr :is(td, th),
.salibandy-games-table-team tbody tr:nth-child(even) td,
.salibandy-games-table-team tbody tr:hover td {
  padding: 0;
  background: transparent;
}
.salibandy-games-table-team tbody tr td:nth-child(2) {
  padding-top: 12px;
  font-size: 12px;
  color: var(--sb-muted);
}
.salibandy-games-table-team .salibandy-team-name {
  font-size: 13px;
  font-weight: 700;
}
.salibandy-games-table-team tbody tr td:last-child {
  font-size: 15px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.salibandy-match-card {
  border-radius: 14px;
  box-shadow: var(--sb-shadow);
}
.salibandy-page-button {
  font-family: var(--sb-font);
  font-size: 13px;
  font-weight: 700;
}
.salibandy-sort-header {
  min-height: 32px;
  border-radius: 6px;
}
.salibandy-sort-header:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 2px;
}
@media (max-width: 600px) {
  .salibandy-history-controls {
    gap: 12px;
    padding: 12px;
  }
  .salibandy-history-controls label {
    flex: 1 1 160px;
    min-width: 0;
  }
  .salibandy-history-controls select {
    min-width: 0;
    width: 100%;
  }
  .salibandy-competition-tab {
    min-width: 0;
    flex: 1;
  }
  .salibandy-standings-leaderboard,
  .salibandy-roster-staff {
    padding: 12px;
  }
  .salibandy-games-table-team .salibandy-match-row {
    padding: 14px 12px;
    gap: 12px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .salibandy-match-tab,
  .salibandy-player-card {
    transition: none;
  }
}

/* Active tabs retain contrast when a theme supplies button hover colors. */
.salibandy-match-tabs .salibandy-match-tab[aria-selected='true'],
.salibandy-match-tabs .salibandy-match-tab[aria-selected='true']:is(:hover, :focus, :active) {
  background: var(--sb-accent);
  border-color: var(--sb-accent);
  color: #fff;
}
.salibandy-match-tabs .salibandy-match-tab:not([aria-selected='true']):hover {
  background: var(--sb-accent-soft);
  color: var(--sb-accent);
}

.salibandy-games-table-team tbody .salibandy-match-row:hover {
  background: #f2f7ff;
  border-color: #a7c9ed;
  box-shadow: 0 4px 14px rgb(20 92 201 / 12%);
}
.salibandy-games-table-team .salibandy-match-row {
  transition:
    background-color 0.15s,
    border-color 0.15s,
    box-shadow 0.15s;
}
.salibandy-player-birthyear {
  color: var(--sb-muted);
  font-size: 13px;
}
@media (prefers-reduced-motion: reduce) {
  .salibandy-games-table-team .salibandy-match-row {
    transition: none;
  }
}

/* Next-home cards: team logos and names flank the centered timer.
   Desktop and mobile sizes are kept together; theme overrides stay scoped. */
.salibandy-next-home .salibandy-next-game {
  gap: 10px;
}
.salibandy-next-home .salibandy-match-card {
  border-radius: 10px;
}
.salibandy-next-home .salibandy-match-card .widget-title {
  padding: 9px 12px;
}
.salibandy-next-home .salibandy-match-card .widget-title h4 {
  font-size: 13px;
  line-height: 1.4;
}
.salibandy-next-home .salibandy-match-card .fixture {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(100px, auto) minmax(0, 1fr);
  padding: 12px;
  gap: 8px 12px;
  align-items: center;
}
.salibandy-next-home .salibandy-match-card .fixture-meta {
  grid-column: 1 / -1;
  grid-row: 1;
}
.salibandy-next-home .salibandy-match-card .competition {
  margin-bottom: 2px;
  font-size: 12px;
}
.salibandy-next-home .salibandy-match-card .clubs {
  display: contents;
}
.salibandy-next-home .salibandy-match-card :is(.home-clubs, .away-clubs) {
  min-width: 0;
  font-size: 13px;
  line-height: 1.4;
}
.salibandy-next-home .salibandy-match-card .home-clubs {
  grid-column: 1;
  grid-row: 2;
}
.salibandy-next-home .salibandy-match-card .away-clubs {
  grid-column: 3;
  grid-row: 2;
}
.salibandy-next-home .salibandy-match-card :is(.home-club, .away-club) {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  width: 100%;
  min-width: 0;
  text-align: center;
  overflow-wrap: normal;
  word-break: normal;
}
.salibandy-next-home .salibandy-match-card img.salibandy-team-logo {
  display: block;
  width: 88px !important;
  height: 88px !important;
  margin: 0;
  min-width: 88px;
  max-width: 88px;
  min-height: 88px;
  max-height: 88px;
  flex: 0 0 88px;
  object-fit: contain;
}
.salibandy-next-home .salibandy-match-card .score {
  font-size: 20px;
  margin-top: 4px;
}
.salibandy-next-home .salibandy-match-card .score:empty {
  display: none;
}
.salibandy-next-home .salibandy-match-card .salibandy-countdown {
  grid-column: 2;
  grid-row: 2;
  justify-self: center;
  align-self: center;
  padding: 4px 7px;
  font-size: 12px;
  max-width: 100%;
  white-space: normal;
  text-align: center;
  line-height: 1.4;
}
.salibandy-next-home .salibandy-match-card .wpcm-date {
  grid-column: 1 / -1;
  grid-row: 3;
  margin: 4px 0 0;
  font-size: 13px;
}
.salibandy-next-home .salibandy-match-card .salibandy-match-venue {
  grid-column: 1 / -1;
  grid-row: 4;
  margin: 0;
  font-size: 12px;
}
.salibandy-next-home .salibandy-live-badge {
  padding: 8px 12px !important;
  font-size: 12px;
}
.salibandy-next-home .salibandy-match-card .salibandy-live-detail {
  grid-column: 2;
  grid-row: 2;
  text-align: center;
  font-size: 12px;
}
@media (max-width: 420px) {
  .salibandy-next-home .salibandy-match-card .fixture {
    grid-template-columns: minmax(0, 1fr) minmax(72px, auto) minmax(0, 1fr);
    gap: 8px 6px;
    padding: 10px;
  }
  .salibandy-next-home .salibandy-match-card :is(.home-clubs, .away-clubs) {
    font-size: 12px;
  }
  .salibandy-next-home .salibandy-match-card .salibandy-countdown {
    max-width: 100px;
    font-size: 11px;
    padding: 4px 5px;
  }
  .salibandy-next-home .salibandy-match-card img.salibandy-team-logo {
    width: 64px !important;
    height: 64px !important;
    min-width: 64px;
    max-width: 64px;
    min-height: 64px;
    max-height: 64px;
    flex-basis: 64px;
  }
}

/* Standalone staff directory, grouped by team. */
.salibandy-staff {
  font-family: var(--sb-font);
  color: var(--sb-ink);
  margin: 24px 0 32px;
}
.salibandy-staff-team {
  margin-bottom: 24px;
}
.salibandy-staff-team > h5 {
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 10px;
}
.salibandy-staff-team .salibandy-roster-staff {
  margin-top: 0;
}

@media (max-width: 600px) {
  .salibandy-standings-leaders {
    grid-template-columns: minmax(0, 1fr);
  }
}

a.salibandy-staff-link {
  color: var(--sb-accent);
  text-decoration: none;
}
a.salibandy-staff-link:hover {
  text-decoration: underline;
}
a.salibandy-staff-link:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 3px;
}

/* Roster staff use the same media lookup as players, without statistics. */
.salibandy-staff-photo {
  display: block;
  width: 64px;
  height: 64px;
  min-width: 64px;
  object-fit: cover;
  border-radius: 8px;
}
.salibandy-staff-card-info {
  padding: 12px 14px;
}
.salibandy-staff-card-info .salibandy-staff-link {
  font-weight: 700;
}
.salibandy-staff-role {
  margin-top: 4px;
  color: var(--sb-muted);
  font-size: 13px;
}

/* Standings: optional columns, form and inline match schedules. */
.salibandy-standings-wrap {
  container-type: inline-size;
  overflow-x: auto;
}
.salibandy-series-table {
  min-width: 0;
}
.salibandy-standings-team {
  color: inherit;
  text-decoration: none;
}
.salibandy-standings-team:hover {
  color: var(--sb-accent);
  text-decoration: underline;
}
.salibandy-standings-form {
  display: inline-flex;
  gap: 4px;
}
.salibandy-form-link {
  display: inline-flex;
  padding: 5px 0;
}
.salibandy-form-link .salibandy-result-indicator {
  margin-left: 0 !important;
}
.salibandy-form-link:hover,
.salibandy-form-link:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 2px;
  border-radius: 4px;
}
.salibandy-standings-toggle {
  border: 1px solid var(--sb-line);
  border-radius: 6px;
  background: var(--sb-surface);
  color: var(--sb-accent);
  cursor: pointer;
  padding: 4px 10px;
  font: inherit;
}
.salibandy-standings-toggle:hover {
  background: var(--sb-accent-soft);
  color: var(--sb-accent);
}
.salibandy-standings-detail[hidden] {
  display: none !important;
}
.salibandy-series-table .salibandy-standings-detail td {
  white-space: normal;
  text-align: left;
}
.salibandy-standings-schedule {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.salibandy-standings-schedule h6 {
  margin: 0 0 8px;
}
.salibandy-standings-games {
  list-style: none;
  padding: 0;
  margin: 0 0 8px;
}

.salibandy-standings-match {
  color: var(--sb-accent);
  font-size: 0.875rem;
  overflow-wrap: anywhere;
}
@container (max-width: 760px) {
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='jv'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='jh'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='me'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='po'] {
    display: none;
  }
}
@container (max-width: 520px) {
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='v'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='h'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='m'],
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='form'] {
    display: none;
  }
  .salibandy-standings-schedule {
    grid-template-columns: 1fr;
  }
  .salibandy-series-table [data-column='team'] {
    white-space: normal;
  }
  .salibandy-series-table .salibandy-team-label {
    white-space: normal;
  }
}

/* Expanded standings games and compact home-arena schedule. */
.salibandy-standings-schedule {
  background: var(--sb-surface);
  border-radius: 0;
  padding: 8px;
  gap: 12px;
}
.salibandy-standings-schedule section {
  min-width: 0;
}
.salibandy-standings-schedule h6 {
  text-align: center;
  text-transform: uppercase;
  color: var(--sb-accent);
  font-weight: 800;
  font-size: 0.875rem;
}
.salibandy-standings-games li {
  padding: 0;
  border-bottom: 1px solid var(--sb-line);
}
.salibandy-standings-games .salibandy-standings-game-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 8px;
  padding: 5px;
  text-decoration: none;
  color: var(--sb-ink);
  align-items: center;
  line-height: 1.25;
  font-size: 0.75rem;
}
.salibandy-standings-game-home,
.salibandy-standings-game-away {
  display: flex;
  gap: 5px;
  align-items: center;
  overflow-wrap: anywhere;
}
.salibandy-standings-game-home {
  justify-content: flex-end;
  text-align: right;
}
.salibandy-standings-game-away {
  text-align: left;
}
.salibandy-standings-game-row img {
  width: 24px !important;
  height: 24px !important;
  object-fit: contain;
  flex-shrink: 0;
  margin: 0 !important;
}
.salibandy-standings-game-middle {
  white-space: nowrap;
  text-align: center;
  font-weight: 700;
}
.salibandy-game-score {
  min-width: 42px;
  border-radius: 5px;
  padding: 4px 7px;
  background: var(--sb-accent-soft);
}
.salibandy-game-score.win {
  background: #dcfce7;
  color: #166534;
}
.salibandy-game-score.lose {
  background: #fee2e2;
  color: #991b1b;
}
.salibandy-game-score.draw {
  background: #e2e8f0;
  color: #334155;
}
.salibandy-standings-game-row:hover,
.salibandy-standings-game-row:focus-visible {
  background: var(--sb-accent-soft);
}
.salibandy-home-fixtures-heading {
  margin: 0;
  padding: 12px 14px;
  font-size: 1rem;
  font-weight: 800;
  color: var(--sb-accent);
  background: var(--sb-accent-soft);
  border: 1px solid var(--sb-line);
  border-bottom: 0;
  border-radius: var(--sb-radius) var(--sb-radius) 0 0;
}
.salibandy-home-fixtures {
  list-style: none;
  padding: 0;
  margin: 0;
  border: 1px solid var(--sb-line);
  border-radius: 0 0 var(--sb-radius) var(--sb-radius);
  overflow: hidden;
  background: var(--sb-surface);
}
.salibandy-home-fixtures li + li {
  border-top: 1px solid var(--sb-line);
}
.salibandy-home-fixture,
.salibandy-home-fixture-head {
  display: grid;
  grid-template-columns: 160px 80px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  color: var(--sb-ink);
  text-decoration: none;
  font-size: 0.875rem;
}
.salibandy-home-fixture:hover,
.salibandy-home-fixture:focus-visible {
  background: var(--sb-accent-soft);
  color: var(--sb-accent);
}
.salibandy-home-fixture-category {
  color: var(--sb-accent);
  font-weight: 700;
}
.salibandy-home-fixture-date {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.salibandy-home-fixture-teams {
  overflow-wrap: anywhere;
}
@media (max-width: 600px) {
  .salibandy-home-fixture,
  .salibandy-home-fixture-head {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 5px 10px;
  }
  .salibandy-home-fixture-teams {
    grid-column: 1 / -1;
  }
}

/* Compact list controls and accessible form popups. */
.salibandy-list-arrows {
  display: flex;
  justify-content: center;
  gap: 8px;
  padding: 5px;
}
.salibandy-list-arrows button {
  width: 30px;
  height: 28px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--sb-accent);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.salibandy-list-arrows button:hover,
.salibandy-list-arrows button:focus-visible {
  background: var(--sb-accent-soft);
  outline: 2px solid var(--sb-accent);
}
.salibandy-list-arrows [hidden] {
  display: none !important;
}
.salibandy-form-popup {
  display: none;
  position: fixed;
  z-index: 10000;
  box-sizing: border-box;

  overflow-y: auto;

  border: 1px solid var(--sb-line);

  color: var(--sb-ink);

  white-space: normal;
  text-align: left;
  font-size: 0.8rem;
  font-weight: 400;
  line-height: 1.4;
  pointer-events: none;
}
.salibandy-form-link:hover .salibandy-form-popup,
.salibandy-form-link:focus .salibandy-form-popup {
  display: block;
}
.salibandy-home-fixture-teams {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.salibandy-home-fixture-side {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.salibandy-home-fixture-side img {
  width: 22px !important;
  height: 22px !important;
  object-fit: contain;
  margin: 0 !important;
  flex-shrink: 0;
}
@container (max-width: 950px) {
  .salibandy-standings-wrap:not(.salibandy-standings-full) [data-column='form'] {
    display: none;
  }
}

/* Form tooltip: compact match panel with logos and central result. */
.salibandy-form-popup {
  max-height: 150px;
  padding: 10px;
  border-radius: 5px;
  border-color: #d1d5db;
  background: #fff;
  box-shadow: 0 3px 12px rgb(0 0 0 / 20%);
}
.salibandy-form-popup-date {
  display: block;
  text-align: center;
  color: var(--sb-muted);
  font-size: 0.75rem;
  margin-bottom: 8px;
}
.salibandy-form-popup-teams {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
}
.salibandy-form-popup-team {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4px;
  font-weight: 700;
}
.salibandy-form-popup-team img {
  width: 28px !important;
  height: 28px !important;
  object-fit: contain;
  margin: 0 !important;
}
.salibandy-form-popup-score {
  border-radius: 4px;
  background: var(--sb-accent-soft);
  padding: 5px 7px;
  white-space: nowrap;
}

/* Team fixture tabs. */
.salibandy-team-games-tabs {
  flex-wrap: wrap;
}
.salibandy-team-games .salibandy-match-card {
  margin-bottom: 12px;
}
.salibandy-team-games [role='tabpanel'] {
  min-width: 0;
}

/* Separate next and last cards, matching the supplied layout. */
.salibandy-fixture-card {
  margin-top: 12px;
  border: 1px solid var(--sb-line);
  border-radius: 12px;
  background: var(--sb-surface);
  overflow: hidden;
  box-shadow: var(--sb-shadow);
}
.salibandy-fixture-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 16px 4px;
}
.salibandy-fixture-card-header h4 {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--sb-ink);
  text-transform: uppercase;
}
.salibandy-fixture-card-header a {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--sb-accent);
  text-decoration: none;
}
.salibandy-compact-game {
  display: block;
  padding: 18px 16px 16px;
  color: var(--sb-ink);
  text-decoration: none;
}
.salibandy-compact-game:hover,
.salibandy-compact-game:focus-visible {
  background: var(--sb-soft);
  color: var(--sb-ink);
}
.salibandy-compact-game-teams {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(120px, 1.4fr) minmax(0, 1fr);
  gap: 10px;
  align-items: center;
}
.salibandy-compact-game-home,
.salibandy-compact-game-away {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
  font-size: 0.85rem;
  overflow-wrap: anywhere;
}
.salibandy-compact-game-teams img {
  width: 64px !important;
  height: 64px !important;
  margin: 0 !important;
  object-fit: contain;
}
.salibandy-compact-game-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4px;
}
.salibandy-compact-game-result {
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--sb-accent);
  line-height: 1.2;
  margin-bottom: 8px;
  white-space: nowrap;
}
.salibandy-compact-game-date,
.salibandy-compact-game-detail,
.salibandy-compact-game-category {
  font-size: 0.8rem;
  line-height: 1.4;
}
.salibandy-compact-game-detail:empty,
.salibandy-compact-game-category:empty {
  display: none;
}
@media (max-width: 400px) {
  .salibandy-compact-game {
    padding: 14px 8px;
  }
  .salibandy-compact-game-teams {
    grid-template-columns: minmax(0, 1fr) minmax(100px, 1.3fr) minmax(0, 1fr);
    gap: 5px;
  }
  .salibandy-compact-game-teams img {
    width: 48px !important;
    height: 48px !important;
  }
}

/* Embedded team selector and one heading per match day. */
.salibandy-team-games-tabs {
  display: flex;
  gap: 0;
  padding: 0;
  background: var(--sb-soft);
  border: 1px solid var(--sb-line);
  border-bottom: 2px solid var(--sb-accent);
  border-radius: 0;
}
.salibandy-team-games-tabs .salibandy-match-tab {
  flex: 1 1 auto;
  margin: 0;
  padding: 11px 16px;
  border: 0;
  border-right: 1px solid var(--sb-line);
  border-radius: 0;
  background: transparent;
  color: var(--sb-ink);
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: normal;
  box-shadow: none;
  transition:
    background 0.15s,
    color 0.15s;
}
.salibandy-team-games-tabs .salibandy-match-tab:last-child {
  border-right: 0;
}
.salibandy-team-games-tabs .salibandy-match-tab:hover {
  background: var(--sb-accent-soft);
  color: var(--sb-accent);
}
.salibandy-team-games-tabs .salibandy-match-tab[aria-selected='true'],
.salibandy-team-games-tabs .salibandy-match-tab[aria-selected='true']:hover {
  background: var(--sb-accent);
  color: #fff;
  box-shadow: none;
}
.salibandy-team-games-tabs .salibandy-match-tab:focus-visible {
  outline: 2px solid var(--sb-ink);
  outline-offset: -3px;
}
.salibandy-fixture-card .salibandy-compact-game + .salibandy-compact-game {
  border-top: 1px solid var(--sb-line);
}

/* Team tabs sit within a single card panel. */
.salibandy-team-games-shell {
  font-family: var(--sb-font);
  background: var(--sb-surface);
  border: 1px solid var(--sb-line);
  border-radius: 12px;
  box-shadow: var(--sb-shadow);
  overflow: hidden;
}
.salibandy-team-games-shell .salibandy-team-games-tabs {
  border: 0;
  border-bottom: 2px solid var(--sb-accent);
}
.salibandy-team-games-shell .salibandy-fixture-card {
  margin-top: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.salibandy-team-games-shell .salibandy-compact-game-result {
  font-family: inherit !important;
  font-style: normal;
  font-weight: 800;
  letter-spacing: normal;
  font-variant-numeric: tabular-nums;
}
.salibandy-team-games-shell .salibandy-compact-game-teams strong {
  font-family: inherit !important;
}

/* Joined tabs align with the panel's rounded outer edges. */
.salibandy-team-games-shell {
  padding: 0;
}
.salibandy-team-games-shell .salibandy-team-games-tabs {
  gap: 0;
  padding: 0;
  margin: 0;
  background: var(--sb-soft);
  border-radius: 0;
}
.salibandy-team-games-shell .salibandy-team-games-tabs .salibandy-match-tab {
  border-radius: 0;
  border-right: 1px solid var(--sb-line);
}
.salibandy-team-games-shell .salibandy-team-games-tabs .salibandy-match-tab:last-child {
  border-right: 0;
}
.salibandy-team-games-shell > [role='tabpanel'] {
  padding: 10px;
}

.salibandy-all-time-table .salibandy-sort-header {
  font: inherit;
  color: inherit;
  background: transparent;
  border: 0;
  padding: 4px;
  cursor: pointer;
  white-space: nowrap;
}
.salibandy-all-time-table .salibandy-sort-header:focus-visible {
  outline: 2px solid var(--sb-accent);
  outline-offset: 2px;
}

.salibandy-category-link {
  color: var(--sb-accent);
  text-decoration: none;
}
.salibandy-category-link:hover,
.salibandy-category-link:focus-visible {
  text-decoration: underline;
}

/* Shared player identity in expanded rows and gallery cards. */
.salibandy-player-profile {
  display: flex;
  align-items: center;
  gap: 24px;
  margin-bottom: 20px;
}
.salibandy-player-profile .salibandy-player-detail-image {
  flex: 0 0 160px;
}
.salibandy-player-identity {
  min-width: 0;
  text-align: left;
}
.salibandy-player-identity .salibandy-person-name {
  margin: 0 0 8px;
  font: 700 1.15rem/1.3 var(--sb-font);
  color: var(--sb-accent);
}
.salibandy-player-identity .salibandy-player-birthyear {
  margin: 0 0 10px;
}
.salibandy-player-identity .salibandy-player-link {
  display: inline-block;
  color: var(--sb-accent);
  font: 600 0.85rem/1.5 var(--sb-font);
  text-decoration: none;
}
.salibandy-player-identity .salibandy-player-link:hover {
  text-decoration: underline;
}
.salibandy-player-card > .salibandy-player-identity {
  padding: 16px;
}
.salibandy-player-identity .salibandy-player-number {
  display: inline-block;
  margin-bottom: 8px;
  font-weight: 700;
}
@media (max-width: 480px) {
  .salibandy-player-profile {
    gap: 14px;
    align-items: flex-start;
  }
  .salibandy-player-profile .salibandy-player-detail-image {
    width: 96px;
    height: 96px;
    flex-basis: 96px;
  }
}

.salibandy-player-name-link {
  color: inherit;
  font: inherit;
  text-decoration: none;
}
.salibandy-player-name-link:hover {
  color: var(--sb-accent);
  text-decoration: underline;
}

/* One border and shared typography across the home-games panel. */
.salibandy-home-fixtures-panel {
  font-family: var(--sb-font);
  border: 1px solid var(--sb-line);
  border-radius: var(--sb-radius);
  overflow: hidden;
  background: var(--sb-surface);
}
.salibandy-home-fixtures-panel > .salibandy-home-fixtures-heading {
  margin: 0;
  border: 0;
  border-radius: 0;
  font-family: inherit;
}
.salibandy-home-fixtures-panel .salibandy-home-fixtures-tabs {
  margin: 0;
  padding: 0;
  gap: 0;
  border: 0;
  border-bottom: 1px solid var(--sb-line);
  background: var(--sb-surface);
  border-radius: 0;
}
.salibandy-home-fixtures-tabs .salibandy-match-tab {
  margin: 0;
  border-radius: 0;
  border: 0;
  padding: 10px 14px;
  font-family: inherit;
}
.salibandy-home-fixtures-panel .salibandy-home-fixtures {
  border: 0;
  border-radius: 0;
}
.salibandy-home-fixtures-panel .salibandy-home-fixture {
  font-family: inherit;
}

/* Keep standings highlighting visible when theme link styles take precedence. */
.salibandy-series-table.salibandy-table tbody tr.salibandy-table-row-highlight > td {
  background: var(--sb-accent-soft);
  font-weight: 700;
}
.salibandy-series-table tbody tr.salibandy-table-row-highlight > td:first-child {
  box-shadow: inset 3px 0 var(--sb-accent);
}
.salibandy-series-table tr.salibandy-table-row-highlight .salibandy-standings-team,
.salibandy-series-table tr.salibandy-table-row-highlight .salibandy-team-name {
  color: var(--sb-accent);
  font-weight: 700;
}

.salibandy-home-fixture-head {
  font-family: var(--sb-font);
  font-size: 0.75rem;
  font-weight: 700;
  background: var(--sb-accent-soft);
  border-bottom: 1px solid var(--sb-line);
}
