:root {
  --bg: #000000;
  --surface: #141414;
  --text: #f3f4f6;
  --muted: #9ca3af;
  --accent: #3b82f6;
  --accent-hover: #60a5fa;
  --border: #2a2a2e;
  --score-bg: #1e293b;
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.45);
  --board-max-width: 680px;
  --board-gap: 0.72rem;
  --meet-row-height: 4.85rem;
  --rank-pair-min-height: 4.35rem;
  --rank-pair-inner-gap: 0.45rem;
  --rank-scroll-gap: 0.65rem;
  --rank-scroll-padding: 0.55rem 0.72rem;
  --rank-card-pad-y: 0.45rem;
  --rank-card-pad-x: 0.75rem;
  --rank-card-inner-gap: 0.45rem;
  --board-wrap-gap-row: 0.82rem;
  --board-wrap-gap-col: 1rem;
  /* Vista RG: tirar columnas laterales bajo el borde superior del viewport (superponen al header) */
  --board-wrap-pad-block-start: 1.1rem;
  /* Cabecera: Liga + PRIMERA PLATA + título/subtítulo del marcador (valores alineados al CSS escritorio RG) */
  --site-header-stack-h: calc(
    0.2rem + 0.75rem + clamp(1.85rem, 5.2vw, 2.75rem) + 0.28rem + clamp(1.12rem, 2.35vw, 1.42rem) + 0.35rem +
      clamp(1rem, 2.15vw, 1.28rem) + 0.65rem
  );
  --rg-lateral-pull: calc(var(--site-header-stack-h) + var(--board-wrap-pad-block-start));
  --rank-general-panel-bg: linear-gradient(
      165deg,
      rgba(59, 130, 246, 0.32) 0%,
      rgba(30, 58, 95, 0.78) 38%,
      rgba(18, 22, 32, 1) 100%
    ),
    var(--surface);
  --rank-general-panel-border: rgba(59, 130, 246, 0.55);
  /* Columna posición: ancho fijo y estrecho para alinear logos entre filas; cabe "10..12" */
  --rank-pos-w: 5.5ch;
  --rank-pos-col: minmax(var(--rank-pos-w), var(--rank-pos-w));
  /* Misma altura que .rank-card__logo (escritorio) */
  --rank-card-logo-size: 44px;
  /* Modales: contraste con el tablero */
  --modal-backdrop: rgba(0, 0, 0, 0.62);
  --modal-backdrop-blur: 10px;
  --modal-surface-elevated: linear-gradient(180deg, #1c1c22 0%, #16161a 100%);
  --modal-border-strong: rgba(148, 163, 184, 0.22);
  --modal-shadow-strong: 0 28px 64px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.07);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: 18px;
  -webkit-font-smoothing: antialiased;
  color-scheme: dark;
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, sans-serif;
  background: var(--bg);
  color: var(--text);
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.banner-error {
  width: 100%;
  max-width: 40rem;
  margin: 1rem;
  padding: 0.85rem 1.1rem;
  background: #fef2f2;
  color: #991b1b;
  border-radius: 8px;
  text-align: center;
  font-size: 1.05rem;
}

.banner-error p {
  margin: 0;
}

.banner-error p + p {
  margin-top: 0.5rem;
}

.banner-error__hint {
  font-size: 0.95rem;
  font-weight: 500;
  line-height: 1.35;
}

.site-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 1.65rem 1rem 0.75rem;
}

.site-header__center {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

/* Logos extra cabecera: solo visibles en escritorio sala cuando hay vídeo en columna (ver JS) */
.site-header__desk-video-logos {
  display: none;
}

/* Logos laterales solo en móvil (columnas izq./der.); en escritorio ocultos */
.site-header__mobile-logos {
  display: none;
}

.desktop-header-logo {
  display: block;
  width: auto;
  height: clamp(56px, 8vw, 96px);
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.35));
  image-rendering: auto;
}

.desktop-header-logo--fesba {
  width: clamp(56px, 8vw, 96px);
  height: clamp(56px, 8vw, 96px);
  border-radius: 50%;
  object-fit: contain;
  padding: clamp(4px, 0.7vw, 8px);
  box-sizing: border-box;
  background: #fff;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.28);
}

.desktop-header-logo--ajmao {
  height: clamp(72px, 10vw, 120px);
}

.desktop-header-logo--esportscime {
  width: clamp(64px, 9vw, 108px);
  height: clamp(64px, 9vw, 108px);
  border-radius: 50%;
  object-fit: cover;
}

.desktop-header-logo--esportsib {
  width: clamp(64px, 9vw, 108px);
  height: clamp(64px, 9vw, 108px);
  border-radius: 50%;
  object-fit: contain;
}

.title {
  margin: 0;
  font-size: clamp(1.5rem, 4.5vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* Título clicable solo con sesión (abre configuración) */
.title-btn {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0.1em 0.2em;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  text-align: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.title-btn:hover {
  background: rgba(255, 255, 255, 0.06);
}

.title-btn:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.subtitle {
  margin: 0.35rem 0 0;
  font-size: 1.05rem;
  color: var(--muted);
  font-weight: 500;
}

.subtitle.subtitle--plata {
  letter-spacing: 0.06em;
}

.site-header__encounters-line {
  margin: 0.28rem 0 0;
  font-size: clamp(0.92rem, 1.85vw, 1.12rem);
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
  max-width: 100%;
}

/* Marcador (sala): cabecera oscura */
body.board-venue .board-wrap > .site-header {
  background: #000;
  color: #fff;
}

body.board-venue .board-wrap > .site-header .title,
body.board-venue .board-wrap > .site-header .title-btn {
  color: #fff;
}

body.board-venue .board-wrap > .site-header .subtitle {
  color: rgba(255, 255, 255, 0.82);
}

body.board-venue .board-wrap > .site-header .subtitle.subtitle--plata {
  color: #fff;
}

body.board-venue .board-wrap > .site-header .site-header__encounters-line {
  color: #fff;
}

body.board-venue .board-wrap > .site-header .title-btn:hover {
  background: rgba(255, 255, 255, 0.08);
}

/* Logos cabecera / columna derecha: sin sombra proyectada ni disco detrás del FESBA */
body.board-venue .desktop-header-logo {
  filter: none;
}

body.board-venue .desktop-header-logo--fesba {
  background: transparent;
  box-shadow: none;
  padding: 0;
}

body.board-venue .desktop-header-logo--esportscime,
body.board-venue .desktop-header-logo--esportsib {
  border-radius: 0;
}

.board-wrap {
  flex: 1;
  min-height: 0;
  display: grid;
  gap: var(--board-wrap-gap-row) var(--board-wrap-gap-col);
  align-items: stretch;
  justify-content: center;
  width: 100%;
  max-width: 1920px;
  margin: 0 auto;
  padding: 1.1rem 1.1rem 4.6rem;
  box-sizing: border-box;
}

/* Escritorio (≥641px): rejilla ranking general; móvil redefine más abajo */
.board-center-column {
  display: contents;
}

.board-rg-marcadores-band,
.board-rg-left-stack {
  display: contents;
}

.board-desktop-logos {
  display: none;
}

/* Sin botón fijo «Configuración» abajo: menos hueco al estar logueado */
body.is-logged-in .board-wrap {
  padding-bottom: 1.1rem;
}

.board-grid__title--c {
  grid-area: tc;
}

.board-grid__title--g {
  grid-area: tg;
}

.board-grid__title--g {
  width: 100%;
  max-width: var(--board-max-width);
  justify-self: center;
  box-sizing: border-box;
}

.board-slot {
  grid-area: bs;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 0;
  min-height: 0;
  padding: 0 0.15rem;
}

#rank-general {
  grid-area: rg;
  width: 100%;
  max-width: var(--board-max-width);
  justify-self: center;
  min-width: 0;
  align-self: start;
  max-height: 100%;
}

.mobile-rank-toolbar,
.mobile-rank-backdrop {
  display: none;
}

.mobile-rank-toolbar__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 2.75rem;
  padding: 0.45rem 1.1rem;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--muted);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}

.mobile-rank-toolbar__btn:hover {
  color: var(--text);
  border-color: var(--accent);
}

.mobile-rank-toolbar__btn:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.mobile-rank-toolbar__btn--active {
  color: var(--accent);
  border-color: var(--accent);
  background: rgba(59, 130, 246, 0.18);
  box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.45);
}

.mobile-rank-toolbar__label {
  pointer-events: none;
  white-space: nowrap;
}

/* Título dentro del scroll de rankings (JS); oculto en escritorio para no duplicar los h2 de columna */
.rank-heading--mobile {
  display: none;
}

@media (min-width: 641px) {
  /* Misma anchura que el header del marcador y que #board (min cap 96vw) */
  body.board-desktop-layout--rg {
    --board-column-width: min(var(--board-max-width), 96vw);
  }

  .rank-heading--mobile {
    display: none !important;
  }

  .site-header__mobile-logos {
    display: none !important;
  }

  /*
   * Vista RG: laterales misma anchura (1fr | 1fr); el centro (encuentros) es el que absorbe el flexible
   * entre max contenido y --board-column-width.
   */
  .board-wrap {
    grid-template-columns: minmax(0, 1fr) minmax(0, var(--board-column-width)) minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    grid-template-areas:
      ". sitehdr ."
      "lstack cstack logos";
    align-items: stretch;
    column-gap: var(--board-wrap-gap-col);
    overflow: visible;
  }

  /* Sin ranking: marcador + logos reparten el ancho (≈65 % / 35 %) */
  body.board-ranking-hidden.board-desktop-layout--rg .board-wrap {
    grid-template-columns: minmax(0, 1.85fr) minmax(0, 1fr);
    grid-template-areas:
      "sitehdr sitehdr"
      "cstack logos";
  }

  body.board-ranking-hidden .board-wrap .board-rg-left-stack {
    display: none !important;
  }

  body.board-ranking-hidden .board-wrap > .site-header {
    grid-column: 1 / -1;
    grid-area: sitehdr;
    justify-self: stretch;
    width: 100%;
    max-width: none;
  }

  body.board-ranking-hidden .board-wrap .board-center-column {
    max-width: none;
    justify-self: stretch;
  }

  .board-wrap .board-rg-marcadores-band {
    display: contents;
  }

  .board-wrap .board-rg-left-stack {
    display: flex;
    flex-direction: column;
    grid-area: lstack;
    align-self: stretch;
    position: relative;
    z-index: 2;
    margin-top: calc(-1 * var(--rg-lateral-pull));
    min-width: 0;
    width: 100%;
    min-height: 100vh;
    min-height: 100dvh;
    gap: 0.4rem;
    container-type: inline-size;
    container-name: rank-aside;
  }

  .board-wrap .board-rg-left-stack #rank-general.rank-general-shell {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    align-self: stretch;
    grid-area: unset;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0;
    gap: 0;
    width: 100%;
    max-width: none;
    justify-self: stretch;
  }

  .board-wrap .board-rg-left-stack .rank-general__heading {
    flex: 0 0 auto;
    margin: 0;
    padding: 0.42rem 0.55rem 0.3rem;
    font-size: clamp(1.05rem, 2.6vw, 1.65rem);
    font-size: clamp(1.05rem, 6cqi, 1.65rem);
    font-weight: 700;
    text-align: left;
    justify-content: flex-start;
    align-self: stretch;
    line-height: 1.15;
    color: var(--text);
    min-height: 0;
    grid-area: unset;
    border-bottom: 1px solid rgba(148, 163, 184, 0.22);
  }

  .board-wrap .board-rg-left-stack #rank-general-inner.rank-general__inner {
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    background: transparent;
    border: none;
    box-shadow: none;
    border-radius: 0;
    padding: clamp(0.22rem, 1.2vw, 0.42rem) clamp(0.28rem, 1.4vw, 0.52rem);
    padding-top: 0.32rem;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
  }

  /* Aside ranking: posición grande; tarjetas y huecos más compactos */
  .board-wrap .board-rg-left-stack #rank-general .rank-pair {
    gap: clamp(0.12rem, 1cqi, 0.32rem);
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card-row {
    gap: 0;
    padding: clamp(0.06rem, 0.45cqi, 0.14rem) clamp(0.08rem, 0.55cqi, 0.18rem);
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card {
    gap: clamp(0.08rem, 0.65cqi, 0.22rem);
    /* Sin padding entre posición y logo; solo separación hacia el borde derecho */
    padding: clamp(0.06rem, 0.5cqi, 0.16rem) clamp(0.1rem, 0.75cqi, 0.26rem) clamp(0.06rem, 0.5cqi, 0.16rem) 0;
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card__main {
    gap: clamp(0.08rem, 0.65cqi, 0.22rem);
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card__scores {
    gap: clamp(0.16rem, 1cqi, 0.34rem);
  }

  /* Panel de puntos (PF/PC o total): más grande en el aside del ranking */
  .board-wrap .board-rg-left-stack #rank-general .rank-tanteo,
  .board-wrap .board-rg-left-stack #rank-general .rank-tanteo--solo {
    min-width: clamp(2rem, 5vw, 3.25rem);
    padding: clamp(0.16rem, 1vw, 0.38rem) clamp(0.28rem, 1.75vw, 0.58rem);
    font-size: clamp(0.88rem, 2.75vw, 1.5rem);
    border-radius: clamp(6px, 0.9cqi, 11px);
    min-width: clamp(2rem, 9cqi, 3.75rem);
    padding: clamp(0.16rem, 1.1cqi, 0.42rem) clamp(0.28rem, 2cqi, 0.65rem);
    font-size: clamp(0.88rem, 4.25cqi, 1.65rem);
    border-radius: clamp(6px, 1.1cqi, 12px);
  }

  /* Columna de posición mínima; número al borde del club (margen negativo suave) */
  .board-wrap .board-rg-left-stack #rank-general .rank-card-row .rank-card__pos-wrap {
    justify-content: flex-end;
    margin-right: -0.1rem;
    margin-right: clamp(-0.14rem, -0.8cqi, -0.04rem);
    flex: 0 0 clamp(4ch, 7.5cqi, 5.25ch);
    width: clamp(4ch, 7.5cqi, 5.25ch);
    min-width: clamp(4ch, 7.5cqi, 5.25ch);
    max-width: clamp(4ch, 7.5cqi, 5.25ch);
    flex: 0 0 clamp(4ch, 2.75vw, 5.25ch);
    width: clamp(4ch, 2.75vw, 5.25ch);
    min-width: clamp(4ch, 2.75vw, 5.25ch);
    max-width: clamp(4ch, 2.75vw, 5.25ch);
    font-size: clamp(1.05rem, 3.2vw, 2rem);
    font-size: clamp(1.05rem, 7.5cqi, 2rem);
    font-weight: 800;
    line-height: 1;
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card-row--filler .rank-card__pos-wrap--filler {
    justify-content: flex-end;
    margin-right: -0.1rem;
    margin-right: clamp(-0.14rem, -0.8cqi, -0.04rem);
    width: clamp(4ch, 2.75vw, 5.25ch);
    min-width: clamp(4ch, 2.75vw, 5.25ch);
    max-width: clamp(4ch, 2.75vw, 5.25ch);
    width: clamp(4ch, 7.5cqi, 5.25ch);
    min-width: clamp(4ch, 7.5cqi, 5.25ch);
    max-width: clamp(4ch, 7.5cqi, 5.25ch);
    font-size: clamp(1.05rem, 3.2vw, 2rem);
    font-size: clamp(1.05rem, 7.5cqi, 2rem);
  }

  .board-wrap .board-rg-left-stack #rank-general .rank-card__logo {
    padding: clamp(0.02rem, 0.22cqi, 0.06rem);
  }

  .board-wrap .board-center-column {
    display: flex;
    flex-direction: column;
    grid-area: cstack;
    align-self: stretch;
    min-width: 0;
    width: 100%;
    max-width: var(--board-column-width);
    justify-self: center;
    min-height: 0;
    gap: 0.55rem;
  }

  .board-wrap .board-head {
    width: 100%;
    flex: 0 0 auto;
  }

  .board-wrap .board-slot {
    width: 100%;
    flex: 1 1 auto;
    min-height: 0;
  }

  .board-wrap #board-desktop-logos {
    grid-area: logos;
    display: flex;
    flex-direction: column;
    align-self: stretch;
    position: relative;
    z-index: 2;
    background: #000;
    margin-top: calc(-1 * var(--rg-lateral-pull));
    align-items: stretch;
    justify-content: flex-start;
    min-width: 0;
    min-height: 100vh;
    min-height: 100dvh;
    width: 100%;
    padding: 0;
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 0;
    gap: clamp(0.35rem, 1.2vh, 0.75rem);
    container-type: inline-size;
    container-name: logos-aside;
  }

  /* Cortinilla al alternar logos ↔ vídeo (cubre toda la columna derecha) */
  .board-wrap #board-desktop-logos .board-desktop-logos__curtain {
    --ls-curtain-ease: cubic-bezier(0.42, 0, 0.2, 1);
    --ls-curtain-half: 0.52s;
    position: absolute;
    inset: 0;
    z-index: 24;
    pointer-events: none;
    visibility: hidden;
    display: flex;
    flex-direction: row;
    overflow: hidden;
    box-sizing: border-box;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain[hidden] {
    display: none !important;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain.board-desktop-logos__curtain--visible {
    display: flex !important;
    visibility: visible;
    pointer-events: auto;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain-panel {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 50.6%;
    background: linear-gradient(168deg, #111827 0%, #1e293b 42%, #0f172a 100%);
    box-shadow: inset 0 0 48px rgba(0, 0, 0, 0.45);
    transition: transform var(--ls-curtain-half) var(--ls-curtain-ease);
    will-change: transform;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain-panel--l {
    left: 0;
    transform: translateX(-102%);
    border-right: 1px solid rgba(15, 23, 42, 0.85);
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain-panel--r {
    right: 0;
    transform: translateX(102%);
    border-left: 1px solid rgba(15, 23, 42, 0.85);
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__curtain.board-desktop-logos__curtain--shut .board-desktop-logos__curtain-panel--l,
  .board-wrap #board-desktop-logos .board-desktop-logos__curtain.board-desktop-logos__curtain--shut .board-desktop-logos__curtain-panel--r {
    transform: translateX(0);
  }

  @media (prefers-reduced-motion: reduce) {
    .board-wrap #board-desktop-logos .board-desktop-logos__curtain-panel {
      --ls-curtain-half: 0.08s;
    }
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__strip {
    --board-esponsor-strip-logo-max: 80%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(var(--board-esponsor-strip-rows, 4), minmax(0, 1fr));
    align-items: center;
    justify-items: center;
    align-content: center;
    flex: 1 1 0;
    min-height: 0;
    width: 100%;
    gap: clamp(0.06rem, 0.35vh, 0.28rem);
    box-sizing: border-box;
    padding: clamp(0.08rem, 0.3vh, 0.22rem) clamp(0.1rem, 0.45cqi, 0.24rem)
      clamp(0.12rem, 0.4vh, 0.28rem);
    overflow: hidden;
  }

  /* Mayor especificidad que la regla anterior: si no, `display:flex` gana a `[hidden]` */
  .board-wrap #board-desktop-logos .board-desktop-logos__strip[hidden] {
    display: none !important;
  }

  /* Refuerzo: modo vídeo oculta por completo la franja de logos (evita restos por flex/grid) */
  .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__strip {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
    flex: 0 0 0 !important;
    pointer-events: none !important;
  }

  /*
   * Modo vídeo (subgrid): fila 1 = misma altura que .site-header → solo el logo rotatorio.
   * Fila 2 = misma altura que el bloque central (encuentros + marcador) → solo el vídeo, a altura completa.
   */
  @supports (grid-template-rows: subgrid) {
    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video {
      grid-area: unset;
      grid-column: 3;
      grid-row: 1 / span 2;
      align-self: stretch;
      margin-top: 0 !important;
      min-height: 0 !important;
      height: auto;
      display: grid;
      grid-template-rows: subgrid;
      grid-template-columns: minmax(0, 1fr);
      gap: 0;
      justify-items: stretch;
      align-content: stretch;
      overflow: hidden;
    }

    /*
     * Banda logo sobre el vídeo: 2 + 3 logos; altura acotada para no solapar el vídeo.
     */
    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video-brand {
      grid-row: 1;
      grid-column: 1;
      align-self: stretch;
      justify-self: stretch;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 0;
      height: var(--ls-header-sync-h, auto);
      max-height: var(--ls-header-sync-h, 100%);
      overflow: hidden;
      padding: 0;
      margin: 0;
      box-sizing: border-box;
      contain: layout;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video-wrap {
      grid-row: 2;
      grid-column: 1;
      display: flex;
      flex-direction: column;
      align-items: stretch;
      justify-content: flex-start;
      align-self: stretch;
      min-height: 0;
      width: 100%;
      height: var(--ls-encuentros-sync-h, 100%);
      max-height: var(--ls-encuentros-sync-h, none);
      overflow: hidden;
      flex: 1 1 auto;
      box-sizing: border-box;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row {
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
      column-gap: clamp(0.06rem, 0.55cqi, 0.28rem);
      row-gap: clamp(0.05rem, 0.35cqi, 0.18rem);
      align-items: stretch;
      justify-items: stretch;
      width: 100%;
      max-width: 100%;
      height: min(100%, clamp(5.2rem, 23vmin, 9.5rem));
      max-height: min(100%, clamp(5.2rem, 23vmin, 9.5rem));
      min-height: 0;
      margin: 0;
      padding: 0;
      overflow: hidden;
      box-sizing: border-box;
    }

    /* Con vídeo: 2 logos arriba, 3 abajo; rejilla 6 col. */
    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo {
      display: block;
      width: 100%;
      height: 100%;
      max-width: none;
      max-height: none;
      margin: 0;
      padding: 0;
      border: none;
      object-fit: contain;
      object-position: center center;
      box-sizing: border-box;
      filter: none;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--fesba {
      background: transparent;
      border-radius: 0;
      box-shadow: none;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--esportscime {
      border-radius: 0;
      object-fit: contain;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--esportsib {
      border-radius: 0;
      object-fit: contain;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video {
      flex: 1 1 auto;
      align-self: stretch;
      width: 100%;
      min-width: 0;
      min-height: 0;
      height: 100%;
      max-height: none !important;
      object-fit: cover;
      object-position: center center;
    }
  }

  /* Sin subgrid: logo compacto arriba; vídeo flex ocupa el resto */
  @supports not (grid-template-rows: subgrid) {
    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video {
      grid-area: unset;
      grid-column: 3;
      grid-row: 1 / span 2;
      align-self: stretch;
      margin-top: 0 !important;
      min-height: 0 !important;
      display: flex;
      flex-direction: column;
      justify-content: flex-start;
      align-items: stretch;
      gap: 0;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video-brand {
      flex: 0 0 auto;
      display: flex;
      align-items: center;
      justify-content: center;
      height: var(--ls-header-sync-h, auto);
      max-height: var(--ls-header-sync-h, 22vh);
      min-height: 0;
      overflow: hidden;
      padding: 0;
      margin: 0;
      box-sizing: border-box;
      contain: layout;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row {
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
      column-gap: clamp(0.06rem, 0.55cqi, 0.28rem);
      row-gap: clamp(0.05rem, 0.35cqi, 0.18rem);
      align-items: stretch;
      justify-items: stretch;
      width: 100%;
      max-width: 100%;
      height: min(100%, clamp(5.2rem, 23vmin, 9.5rem));
      max-height: min(100%, clamp(5.2rem, 23vmin, 9.5rem));
      min-height: 0;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      overflow: hidden;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo {
      display: block;
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      border: none;
      object-fit: contain;
      object-position: center center;
      box-sizing: border-box;
      filter: none;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--fesba {
      background: transparent;
      border-radius: 0;
      box-shadow: none;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--esportscime {
      border-radius: 0;
      object-fit: contain;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__brand-row > .desktop-header-logo--esportsib {
      border-radius: 0;
      object-fit: contain;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video-wrap {
      flex: 1 1 auto;
      display: flex;
      flex-direction: column;
      align-items: stretch;
      justify-content: flex-start;
      min-height: 0;
      width: 100%;
      height: var(--ls-encuentros-sync-h, auto);
      max-height: var(--ls-encuentros-sync-h, none);
      overflow: hidden;
      box-sizing: border-box;
    }

    .board-wrap #board-desktop-logos.board-desktop-logos--playing-video .board-desktop-logos__video {
      flex: 1 1 auto;
      width: 100%;
      min-width: 0;
      min-height: 0;
      height: 100%;
      max-height: none !important;
      object-fit: cover;
      object-position: center center;
    }
  }

  body.board-venue .board-wrap #board-desktop-logos.board-desktop-logos--playing-video {
    justify-content: unset;
    gap: 0;
    background: #000;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__video-wrap {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__video-brand {
    flex: 0 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    min-height: 0;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__video-brand[hidden] {
    display: none !important;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(0.06rem, 0.55cqi, 0.28rem);
    row-gap: clamp(0.05rem, 0.35cqi, 0.18rem);
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    max-width: 100%;
    height: min(100%, clamp(5.2rem, 23vmin, 9.5rem));
    min-height: 0;
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    overflow: hidden;
  }

  /* Fila 1: dos logos; fila 2: tres (rejilla 6 col.) */
  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row > .desktop-header-logo:nth-child(1) {
    grid-column: 1 / 4;
    grid-row: 1;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row > .desktop-header-logo:nth-child(2) {
    grid-column: 4 / 7;
    grid-row: 1;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row > .desktop-header-logo:nth-child(3) {
    grid-column: 1 / 3;
    grid-row: 2;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row > .desktop-header-logo:nth-child(4) {
    grid-column: 3 / 5;
    grid-row: 2;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row > .desktop-header-logo:nth-child(5) {
    grid-column: 5 / 7;
    grid-row: 2;
  }

  /* Patrocinadores (img/esponsors/): 2 columnas */
  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row--esponsors {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(var(--board-esponsor-strip-rows, 3), minmax(0, 1fr));
    justify-items: center;
    align-items: center;
    gap: clamp(0.06rem, 0.45cqi, 0.22rem);
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__brand-row--esponsors > .desktop-header-logo {
    flex: unset;
    grid-column: unset !important;
    grid-row: unset !important;
    width: auto;
    height: auto;
    max-height: min(100%, clamp(2.2rem, 9vmin, 4rem));
    max-width: min(94%, calc(48% + 0.5rem));
    min-width: 0;
    margin: 0;
    object-fit: contain;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__video-wrap[hidden] {
    display: none !important;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__video {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: min(58vh, 100%);
    object-fit: contain;
    background: #000;
    border-radius: 8px;
    box-sizing: border-box;
  }

  /* Solo la franja de logos: si aplica a todo el aside, un logo suelto puede seguir viéndose encima del vídeo */
  .board-wrap #board-desktop-logos .board-desktop-logos__strip > .desktop-header-logo {
    min-height: 0;
    min-width: 0;
    width: auto;
    height: auto;
    max-width: var(--board-esponsor-strip-logo-max, 80%);
    max-height: var(--board-esponsor-strip-logo-max, 80%);
    object-fit: contain;
    object-position: center center;
    place-self: center;
    box-sizing: border-box;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__strip > .desktop-header-logo--esponsor {
    width: auto;
    height: auto;
    max-width: var(--board-esponsor-strip-logo-max, 80%);
    max-height: var(--board-esponsor-strip-logo-max, 80%);
    min-width: 0;
    min-height: 0;
    place-self: center;
    padding: 0;
    background: transparent;
    box-shadow: none;
    border-radius: 0;
    aspect-ratio: auto;
    object-fit: contain;
    object-position: center center;
  }

  .board-wrap #board-desktop-logos .board-desktop-logos__strip > .desktop-header-logo--fesba {
    /* Sin flex-grow: si no, la columna estira la img y 50% → óvalo */
    flex: 0 0 auto;
    align-self: center;
    margin-inline: auto;
    width: min(100%, clamp(132px, 38cqi, 240px));
    box-sizing: border-box;
    aspect-ratio: 1;
    height: auto;
    max-height: none;
    object-fit: contain;
    object-position: center;
    padding: clamp(8px, 2cqi, 18px);
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 2px 14px rgba(0, 0, 0, 0.38);
  }

  body.board-desktop-layout--rg .board-wrap > .site-header {
    grid-area: sitehdr;
    align-self: stretch;
    justify-self: stretch;
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0.2rem 0 0.65rem;
  }

  body.board-desktop-layout--rg .board-wrap > .site-header .title {
    font-size: clamp(1.85rem, 5.2vw, 2.75rem);
  }

  body.board-desktop-layout--rg .board-wrap > .site-header .subtitle.subtitle--plata {
    margin-top: 0.28rem;
    font-size: clamp(1.12rem, 2.35vw, 1.45rem);
    font-weight: 600;
    color: var(--muted);
  }

  body.board-desktop-layout--rg .board-wrap > .site-header .site-header__encounters-line {
    margin-top: 0.32rem;
    font-size: clamp(1rem, 2.15vw, 1.32rem);
    font-weight: 600;
  }

  body.board-venue.board-desktop-layout--rg .board-wrap > .site-header {
    background: #000;
    color: #fff;
  }

  body.board-venue.board-desktop-layout--rg .board-wrap > .site-header .title,
  body.board-venue.board-desktop-layout--rg .board-wrap > .site-header .title-btn {
    color: #fff;
  }

  body.board-venue.board-desktop-layout--rg .board-wrap > .site-header .subtitle.subtitle--plata {
    color: #fff;
  }

  body.board-venue.board-desktop-layout--rg .board-wrap > .site-header .site-header__encounters-line {
    color: #fff;
  }

  /* Con vídeo en columna: fila + laterales fijos; tipografía y padding de cabecera = mismo RG sin vídeo */
  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg .board-wrap > .site-header {
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: center;
    gap: 0;
    padding: 0.2rem 0 0.65rem;
    margin: 0;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg .site-header__desk-video-logos {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    flex: 0 0 clamp(7rem, 22vw, 13.5rem);
    width: clamp(7rem, 22vw, 13.5rem);
    min-width: clamp(7rem, 22vw, 13.5rem);
    max-width: clamp(7rem, 22vw, 13.5rem);
    align-self: stretch;
    min-height: 0;
    margin: 0;
    padding: 0;
    container-type: normal;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg
    .board-wrap
    > .site-header
    .site-header__center {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
    width: auto;
    margin: 0;
    padding-left: clamp(0.45rem, 1.1vw, 1.1rem);
    padding-right: clamp(0.45rem, 1.1vw, 1.1rem);
    box-sizing: border-box;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg .site-header__desk-video-logos-l-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    justify-content: center;
    align-content: center;
    justify-items: center;
    align-items: center;
    gap: clamp(0.1rem, 0.45vw, 0.35rem);
    width: 100%;
    max-width: 100%;
    min-height: 0;
    flex: 1 1 0;
    margin-left: auto;
    margin-right: auto;
    margin-top: 0;
    margin-bottom: 0;
    padding: 0;
    align-self: center;
    overflow: visible;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg .site-header__desk-video-logos-r-row {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: clamp(0.1rem, 0.45vw, 0.35rem);
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 100%;
    min-height: 0;
    flex: 1 1 0;
    margin-left: auto;
    margin-right: auto;
    margin-top: 0;
    margin-bottom: 0;
    padding: 0;
    align-self: center;
    overflow: visible;
  }

  /*
   * Logos centrados; max-width % en grid se aplicaba a la celda (izq. minúscula). Misma lógica ambos lados.
   */
  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg
    .site-header__desk-video-logos
    .desktop-header-logo {
    display: block;
    width: auto !important;
    height: auto !important;
    max-width: min(6.75rem, 100%) !important;
    max-height: 100% !important;
    min-width: 0;
    min-height: 0;
    object-fit: contain;
    object-position: center center;
    margin-left: auto !important;
    margin-right: auto !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding: 0 !important;
    box-sizing: border-box;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg
    .site-header__desk-video-logos-l-grid
    > .desktop-header-logo {
    flex: unset;
    align-self: center;
  }

  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg
    .site-header__desk-video-logos-r-row
    > .desktop-header-logo {
    flex: 1 1 0;
    align-self: center;
    min-width: 0;
  }

  /*
   * FESBA en cabecera con vídeo: caja cuadrada (aspect-ratio 1) para que border-radius 50% no recorte;
   * sin disco blanco (fondo transparente, sin sombra).
   */
  body.board-venue.board-venue-desk-video-logos-in-header.board-desktop-layout--rg
    .site-header__desk-video-logos
    .desktop-header-logo--fesba {
    aspect-ratio: 1;
    width: min(6.75rem, 100%) !important;
    max-width: min(6.75rem, 100%) !important;
    height: auto !important;
    max-height: min(6.75rem, 100%) !important;
    box-sizing: border-box !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 50%;
    object-fit: contain;
    object-position: center center;
    overflow: visible;
  }

  /* Escritorio: selector de ronda solo en móvil */
  .board-wrap .board-head {
    display: none !important;
  }

  body.board-desktop-layout--rg .board-wrap > .site-header .site-header__center {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding-left: clamp(0.45rem, 1.1vw, 1.1rem);
    padding-right: clamp(0.45rem, 1.1vw, 1.1rem);
    box-sizing: border-box;
  }

  /*
   * Ranking general en columna: posición alineada con la tarjeta de club.
   */
  .board-wrap[data-desktop-rank="general-only"] .rank-card-row {
    align-items: center;
    /* Recorta al border-radius de la fila; sin esto .rank-card puede verse “fuera” del marco */
    overflow: hidden;
  }

  .board-wrap[data-desktop-rank="general-only"] .rank-card-row.rank-flip-item {
    overflow: visible !important;
  }

  .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row .rank-card {
    align-self: center;
    flex: 1 1 0;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
  }

  .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row .rank-card__pos-wrap {
    align-self: center;
    height: var(--rank-card-logo-size);
    min-height: var(--rank-card-logo-size);
    max-height: var(--rank-card-logo-size);
  }

  .board-wrap[data-desktop-rank="general-only"] .rank-card-row--filler .rank-card__pos-wrap--filler {
    align-self: center;
    height: var(--rank-card-logo-size);
    min-height: var(--rank-card-logo-size);
    max-height: var(--rank-card-logo-size);
  }
}

.side-column__title {
  margin: 0 0 0.5rem;
  font-size: clamp(0.68rem, 1.1vw, 0.82rem);
  font-weight: 700;
  text-align: center;
  color: var(--text);
  line-height: 1.2;
  min-height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.board-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 0;
}

@media (min-width: 641px) {
  .side-column__title {
    font-size: clamp(1.5rem, 4.5vw, 2.1rem);
    line-height: 1.1;
  }
}

.round-switch {
  display: inline-flex;
  gap: 0.4rem;
  flex-wrap: wrap;
  justify-content: center;
}

.round-switch__btn {
  padding: 0.38rem 0.95rem;
  font-size: clamp(0.8rem, 1.5vw, 0.92rem);
  font-weight: 600;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg);
  color: var(--muted);
  cursor: pointer;
  font-family: inherit;
}

.round-switch__btn[aria-selected="true"] {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--surface);
}

.round-switch__btn:hover:not([aria-selected="true"]) {
  color: var(--text);
}

.board {
  width: 100%;
  max-width: var(--board-max-width);
  display: flex;
  flex-direction: column;
  gap: var(--board-gap);
  flex: 1 1 auto;
  min-height: 0;
}

.rank-scroll {
  flex: 0 1 auto;
  min-height: 0;
  width: 100%;
  height: auto;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: var(--rank-scroll-gap);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: var(--rank-scroll-padding);
  box-shadow: var(--shadow);
  box-sizing: border-box;
}

/* [hidden] solo no basta: .rank-scroll gana en especificidad y dejaba visibles los splits vacíos */
.rank-scroll[hidden] {
  display: none !important;
}

/* FLIP reordenación (app.js): el translateY debe poder verse fuera del clip de overflow:auto */
.rank-scroll.rank-flip-active {
  overflow: visible !important;
}

/* Panel ranking general: marco coloreado en el shell; las tarjetas van en #rank-general-inner */
#rank-general.rank-general-shell {
  background: var(--rank-general-panel-bg);
  border: 1px solid var(--rank-general-panel-border);
  border-radius: 10px;
  box-shadow: var(--shadow);
  box-sizing: border-box;
}

#rank-general.rank-general-shell > .rank-general__inner.rank-scroll {
  background: transparent;
  border: none;
  box-shadow: none;
}

.rank-empty {
  margin: 0.5rem;
  font-size: 0.72rem;
  color: var(--muted);
  text-align: center;
}

.rank-pair {
  display: flex;
  flex-direction: column;
  gap: var(--rank-pair-inner-gap);
  min-height: var(--rank-pair-min-height);
  flex-shrink: 0;
  margin: 0;
  width: 100%;
  align-self: stretch;
  box-sizing: border-box;
}

/* Fila: tarjeta de posición + tarjeta de club, unidas */
.rank-card-row {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 0.5rem;
  flex: 1 1 0;
  width: 100%;
  min-height: 0;
  border-radius: 10px;
  overflow: visible;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  background: var(--bg);
  box-sizing: border-box;
  padding: 0.4rem 0.55rem;
}

/* Ranking general: 1.º y 2.º verde tenue; penúltimo y último rojo tenue */
#rank-general-inner .rank-card-row--rank-top {
  background: linear-gradient(
    145deg,
    rgba(34, 197, 94, 0.16) 0%,
    rgba(22, 101, 52, 0.12) 100%
  );
  border-color: rgba(52, 211, 153, 0.45);
}

#rank-general-inner .rank-card-row--rank-bottom {
  background: linear-gradient(
    145deg,
    rgba(248, 113, 113, 0.14) 0%,
    rgba(185, 28, 28, 0.12) 100%
  );
  border-color: rgba(248, 113, 113, 0.42);
}

.rank-card__pos-wrap {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  box-sizing: border-box;
}

/* Ranking (combinado): número de posición sin marco — misma altura que la tarjeta (fila), número centrado en la columna */
#rank-general .rank-card-row .rank-card__pos-wrap {
  flex: 0 0 var(--rank-pos-w);
  width: var(--rank-pos-w);
  min-width: var(--rank-pos-w);
  max-width: var(--rank-pos-w);
  align-self: stretch;
  height: auto;
  min-height: var(--rank-card-logo-size);
  max-height: none;
  padding: 0;
  overflow: hidden;
  font-size: clamp(0.88rem, 1.45vw, 1.08rem);
}

/* Un poco más pequeña que .cell-name (marcador), pero más grande que antes */
.rank-card {
  display: flex;
  align-items: center;
  gap: var(--rank-card-inner-gap);
  padding: var(--rank-card-pad-y) var(--rank-card-pad-x);
  flex: 1 1 0;
  min-width: 0;
  min-height: 0;
  background: var(--bg);
  border: none;
  border-radius: 0;
  font-size: clamp(0.87rem, 2.2vw, 1.02rem);
  box-shadow: none;
}

.rank-card__main {
  display: flex;
  align-items: center;
  gap: 0.48rem;
  flex: 1;
  min-width: 0;
  min-height: 0;
}

.rank-card-row--filler {
  flex: 1 1 0;
  min-height: 0;
  visibility: hidden;
  pointer-events: none;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

.rank-card-row--filler .rank-card,
.rank-card-row--filler .rank-card__pos-wrap {
  visibility: hidden;
  border-color: transparent;
  background: transparent;
}

.rank-card-row--filler .rank-card__pos-wrap--filler {
  width: var(--rank-pos-w);
  min-width: var(--rank-pos-w);
  max-width: var(--rank-pos-w);
  align-self: stretch;
  height: auto;
  min-height: var(--rank-card-logo-size);
  max-height: none;
  font-size: clamp(0.88rem, 1.45vw, 1.08rem);
}

/* Solo con sesión: fila principal + bloque manual debajo */
.rank-card--filler {
  flex: 1 1 0;
  min-height: 0;
  visibility: hidden;
  pointer-events: none;
  border: none;
  background: transparent;
  box-shadow: none;
}

.rank-card__scores {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 0.38rem;
  flex-shrink: 0;
}

.rank-tanteo {
  min-width: 1.15rem;
  padding: 0.12rem 0.28rem;
  font-size: clamp(0.68rem, 1.25vw, 0.82rem);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-align: center;
  background: var(--score-bg);
  color: var(--text);
  border-radius: 5px;
  line-height: 1;
  font-family: inherit;
}

.rank-tanteo--solo {
  min-width: 1.55rem;
  padding: 0.14rem 0.32rem;
  font-size: clamp(0.78rem, 1.35vw, 0.95rem);
}

.rank-card__pos {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  box-sizing: border-box;
  padding: 0;
}

/* Texto de posición (ranking) */
#rank-general .rank-card__pos {
  width: 100%;
  min-width: 0;
  font-size: inherit;
  line-height: 1.05;
}

#rank-general .rank-card__pos--shared {
  white-space: nowrap;
}

.rank-card__logo {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  padding: 0.2rem;
  box-sizing: border-box;
  border-radius: 6px;
  overflow: hidden;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}

.rank-card__logo-img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.rank-card__logo--empty {
  background: repeating-linear-gradient(
    -45deg,
    var(--border),
    var(--border) 2px,
    transparent 2px,
    transparent 6px
  );
  opacity: 0.45;
}

.rank-card__body {
  min-width: 0;
  flex: 1;
}

.rank-card__name {
  font-weight: 600;
  font-size: inherit;
  line-height: 1.22;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.rank-card-row.rank-flip-item {
  box-shadow: 0 6px 20px rgba(37, 99, 235, 0.22);
}

.edit-club-standings {
  margin: 0.75rem 0 0;
  padding: 0.75rem 0 0;
  border: none;
  border-top: 1px solid var(--border);
}

.edit-club-standings legend {
  padding: 0 0.35rem;
  font-size: 1rem;
  font-weight: 700;
}

.edit-standings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr));
  gap: 0.5rem 0.65rem;
  margin-top: 0.35rem;
}

.edit-standings-grid label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  font-size: 0.85rem;
  font-weight: 500;
}

.edit-standings-grid input {
  padding: 0.45rem 0.5rem;
  font-size: 1rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: inherit;
  background: var(--bg);
  color: var(--text);
}

.score-popover {
  position: fixed;
  z-index: 200;
  max-width: 16rem;
  padding: 0.55rem 0.75rem;
  background: #1e293b;
  color: #f8fafc;
  font-size: 0.9rem;
  line-height: 1.35;
  border-radius: 8px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.score-popover--out {
  opacity: 0;
}

.row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 0.75rem;
  flex-wrap: wrap;
  min-height: var(--meet-row-height);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0.62rem 0.85rem;
  box-shadow: var(--shadow);
}

.cell-name {
  flex: 1 1 100px;
  min-width: 0;
  text-align: center;
  font-weight: 600;
  font-size: clamp(0.98rem, 2.8vw, 1.24rem);
  /* >1.2 evita que -webkit-line-clamp recorte descendentes (g, y, p, q) */
  line-height: 1.3;
  color: var(--text);
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow-wrap: break-word;
  word-break: break-word;
}

.club-rank-badge {
  display: none;
}

.cell-name__text {
  min-width: 0;
  /* Hueco bajo la última línea clampa para descendentes */
  padding-bottom: 0.08em;
}

.cell-name--left {
  order: 1;
}

.cell-name--right {
  order: 6;
}

.cell-logo {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.cell-logo--left {
  order: 2;
}

.cell-logo--right {
  order: 5;
}

.cell-logo img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.cell-logo--empty {
  background: repeating-linear-gradient(
    -45deg,
    var(--border),
    var(--border) 2px,
    transparent 2px,
    transparent 6px
  );
  opacity: 0.5;
}

.score {
  min-width: 2.45rem;
  padding: 0.38rem 0.65rem;
  font-size: clamp(1.45rem, 5vw, 2.05rem);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-align: center;
  background: var(--score-bg);
  color: var(--text);
  border-radius: 8px;
  border: none;
  cursor: default;
  font-family: inherit;
  line-height: 1;
}

.board[data-logged-in="1"] .score {
  cursor: pointer;
  user-select: none;
  /* Permite doble tap funcional sin activar zoom del navegador */
  touch-action: manipulation;
}

.board[data-logged-in="1"] .score:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.score--1 {
  order: 3;
}

.score--2 {
  order: 4;
}

/* En escritorio el wrapper no altera el flex (hijos participan como antes) */
.score-pair {
  display: contents;
}

/* Spotlight visitante: clon centrado (fuera de .board) — mismas animaciones de flip/bump */
.visitor-spotlight-backdrop {
  position: fixed;
  inset: 0;
  z-index: 99998;
  background: rgba(15, 23, 42, 0.55);
  opacity: 0;
  transition: opacity 280ms ease;
  pointer-events: none;
}

.visitor-spotlight-backdrop--visible {
  opacity: 1;
}

/* Capa vacía anclada al viewport: el scaler va en position:absolute con left/top en px de pantalla */
.visitor-spotlight-row-wrap {
  position: fixed;
  inset: 0;
  z-index: 99999;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  pointer-events: none;
  overflow: visible;
  isolation: isolate;
}

.visitor-spotlight-scaler {
  position: absolute;
  margin: 0;
  box-sizing: border-box;
  opacity: 1;
  visibility: visible;
  will-change: transform;
}

.visitor-spotlight-scaler > .row {
  opacity: 1;
  visibility: visible;
  width: 100%;
  max-width: none;
}

.visitor-spotlight-row-wrap .row {
  perspective: 1000px;
  min-height: 0;
  height: 100%;
  box-shadow: 0 22px 50px rgba(0, 0, 0, 0.35);
}

.visitor-spotlight-row-wrap .score.score--panel-flip {
  transform-style: preserve-3d;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
  transform-origin: center center;
  animation: scorePanelSpinY 2.75s linear forwards;
}

.visitor-spotlight-row-wrap .score.score--panel-flip--rev {
  transform-style: preserve-3d;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
  transform-origin: center center;
  animation: scorePanelSpinYRev 2.75s linear forwards;
}

.visitor-spotlight-row-wrap .score.score--panel-bump {
  animation: scorePanelBump 1s ease-out forwards;
  will-change: transform;
}

/* Paneles mecánicos al actualizar tanteo (solo visitante, clases desde JS) */
.board[data-logged-in="0"] .row {
  perspective: 1000px;
}

.board[data-logged-in="0"] .score.score--panel-flip {
  transform-style: preserve-3d;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
  transform-origin: center center;
  animation: scorePanelSpinY 2.75s linear forwards;
}

.board[data-logged-in="0"] .score.score--panel-flip--rev {
  transform-style: preserve-3d;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
  transform-origin: center center;
  animation: scorePanelSpinYRev 2.75s linear forwards;
}

/* Misma velocidad angular que antes (1800° en 1,75 s) → 1800 × (2,75/1,75) */
@keyframes scorePanelSpinY {
  from {
    transform: rotateY(0deg);
  }
  to {
    transform: rotateY(2828.571deg);
  }
}

@keyframes scorePanelSpinYRev {
  from {
    transform: rotateY(0deg);
  }
  to {
    transform: rotateY(-2828.571deg);
  }
}

.board[data-logged-in="0"] .score.score--panel-bump {
  animation: scorePanelBump 1s ease-out forwards;
  will-change: transform;
}

@keyframes scorePanelBump {
  0% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0);
  }
  28% {
    transform: scale(1.42);
    box-shadow: 0 8px 28px rgba(37, 99, 235, 0.35);
  }
  100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .board[data-logged-in="0"] .score.score--panel-flip,
  .board[data-logged-in="0"] .score.score--panel-flip--rev,
  .visitor-spotlight-row-wrap .score.score--panel-flip,
  .visitor-spotlight-row-wrap .score.score--panel-flip--rev {
    animation: none;
  }
}

/* Móvil: un encuentro por bloque — rejilla 2 filas (nombres / logos + tanteos) */
@media (max-width: 640px) {
  html {
    font-size: 16px;
  }

  .site-header__desk-video-logos {
    display: none !important;
  }

  .site-header {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    gap: clamp(0.25rem, 2vw, 0.55rem);
    padding: 0.85rem 0.45rem 0.45rem;
    text-align: center;
  }

  .site-header__mobile-logos {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: clamp(0.2rem, 1.2vw, 0.38rem);
    flex: 0 0 clamp(2.35rem, 12.5vw, 3.15rem);
    width: clamp(2.35rem, 12.5vw, 3.15rem);
    min-width: 0;
    padding-top: 0.15rem;
    box-sizing: border-box;
  }

  .site-header__mobile-logos .desktop-header-logo,
  .site-header__mobile-logos .site-header__mobile-logo-img {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: clamp(1.85rem, 9vw, 2.65rem);
    object-fit: contain;
    object-position: center center;
    margin: 0;
    flex-shrink: 0;
  }

  .site-header__mobile-logos .desktop-header-logo--fesba {
    width: 100%;
    max-width: 100%;
    aspect-ratio: 1;
    height: auto;
    max-height: clamp(2rem, 9.5vw, 2.75rem);
    padding: clamp(2px, 0.5vw, 5px);
    box-sizing: border-box;
  }

  .site-header__mobile-logos .desktop-header-logo--ajmao {
    max-height: clamp(1.9rem, 9vw, 2.6rem);
  }

  .site-header__mobile-logos .desktop-header-logo--esportscime {
    width: 100%;
    aspect-ratio: 1;
    max-height: clamp(1.9rem, 9vw, 2.65rem);
    object-fit: cover;
  }

  .site-header__mobile-logos .desktop-header-logo--esportsib {
    width: 100%;
    aspect-ratio: 1;
    max-height: clamp(1.9rem, 9vw, 2.65rem);
    object-fit: contain;
  }

  .site-header__center {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 100%;
  }

  .desktop-header-logo {
    height: clamp(42px, 10vw, 56px);
    max-width: clamp(56px, 16vw, 84px);
  }

  .desktop-header-logo--fesba {
    width: clamp(42px, 10vw, 56px);
    height: clamp(42px, 10vw, 56px);
    background: #fff;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
  }

  .desktop-header-logo--ajmao {
    height: clamp(46px, 11vw, 60px);
  }

  .desktop-header-logo--esportscime {
    width: clamp(42px, 10vw, 56px);
    height: clamp(42px, 10vw, 56px);
  }

  .desktop-header-logo--esportsib {
    width: clamp(42px, 10vw, 56px);
    height: clamp(42px, 10vw, 56px);
  }

  .title {
    font-size: clamp(1.15rem, 5vw, 1.45rem);
  }

  .subtitle {
    font-size: 0.9rem;
  }

  .subtitle.subtitle--plata {
    font-size: clamp(0.95rem, 4.2vw, 1.12rem);
    font-weight: 600;
  }

  .site-header__encounters-line {
    font-size: clamp(0.88rem, 3.6vw, 1rem);
  }

  .board-wrap {
    padding: 0.85rem 0.8rem 5.4rem;
    align-items: stretch;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto 1fr;
    grid-template-areas:
      "hdr"
      "mt"
      "tc"
      "bs";
    max-width: 100%;
  }

  .board-wrap > .site-header {
    grid-area: hdr;
  }

  body.is-logged-in .board-wrap {
    padding-bottom: 0.85rem;
  }

  .mobile-rank-toolbar {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0.55rem;
    grid-area: mt;
    width: 100%;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding: 0.45rem 0.75rem 0.55rem;
    margin-bottom: 0.15rem;
    box-sizing: border-box;
    position: relative;
    z-index: 45;
  }

  .mobile-rank-toolbar__btn {
    flex: 0 1 auto;
    font-size: clamp(0.88rem, 3.8vw, 1rem);
    padding: 0.48rem 1.15rem;
    min-height: 2.65rem;
  }

  .mobile-rank-backdrop:not([hidden]) {
    display: block;
    position: fixed;
    top: var(--mobile-rank-overlay-top, 3.5rem);
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    margin: 0;
    padding: 0;
    border: none;
    background: rgba(0, 0, 0, 0.58);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }

  .board-grid__title--g,
  #rank-general {
    display: none !important;
  }

  /* Título fijo solo en escritorio; en móvil sigue el encabezado inyectado en el scroll */
  .rank-general__heading {
    display: none !important;
  }

  .rank-heading--mobile {
    display: block;
    margin: 0 0 0.65rem;
    padding: 0 0.15rem 0.55rem;
    font-size: clamp(1rem, 4vw, 1.15rem);
    font-weight: 700;
    text-align: center;
    line-height: 1.25;
    color: var(--text);
    border-bottom: 1px solid var(--border);
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-heading--mobile {
    border-bottom-color: var(--rank-general-panel-border);
  }

  body.mobile-rank-open.mobile-rank--general #rank-general {
    --mobile-rank-logo: 56px;
    /* Columna de posición más ancha que el aside de escritorio: número legible y centrado */
    --rank-pos-w: clamp(2.85rem, 9.5vw, 3.65rem);
    display: flex !important;
    flex: none;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    align-content: flex-start;
    gap: 0.75rem;
    position: fixed;
    left: 0;
    right: 0;
    top: var(--mobile-rank-overlay-top, 3.5rem);
    bottom: auto;
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: calc(100dvh - var(--mobile-rank-overlay-top, 3.5rem));
    z-index: 42;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
    touch-action: pan-y;
    padding: 0.65rem 0.95rem calc(1rem + env(safe-area-inset-bottom, 0px));
    box-sizing: border-box;
    pointer-events: auto;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general {
    background: var(--rank-general-panel-bg);
    border-top: 1px solid var(--rank-general-panel-border);
  }

  /* Evitar flex: 1 1 0 de .rank-card-row: en columna aplasta todas las filas a “líneas” */
  body.mobile-rank-open.mobile-rank--general #rank-general .rank-pair {
    flex: 0 0 auto;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    align-content: flex-start;
    min-height: auto;
    width: 100%;
    max-width: 100%;
    gap: 0.85rem;
  }

  /* Fila = columna posición + tarjeta (evita que el flex empuje pos/puntos fuera de pantalla) */
  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card-row {
    display: grid;
    grid-template-columns: var(--rank-pos-col) minmax(0, 1fr);
    grid-template-rows: auto;
    column-gap: 0.5rem;
    flex: 0 0 auto;
    flex-shrink: 0;
    min-height: auto;
    width: 100%;
    max-width: 100%;
    border-radius: 12px;
    overflow: hidden;
    align-items: center;
    padding: 0.45rem 0.55rem;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card {
    grid-column: 2;
    grid-row: 1;
    display: grid;
    grid-template-columns:
      var(--mobile-rank-logo) minmax(0, 1fr) max-content;
    align-items: center;
    column-gap: 0.5rem;
    row-gap: 0.2rem;
    padding: 0.85rem 0.6rem;
    min-height: auto;
    min-width: 0;
    border-radius: 0;
    font-size: 1rem;
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }

  /* .rank-card-row en el selector: misma o mayor especificidad que #rank-general .rank-card-row .rank-card__pos-wrap */
  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card-row .rank-card__pos-wrap {
    grid-column: 1;
    grid-row: 1;
    /* Anula align-self: stretch del ranking escritorio: centrar la columna de posición en altura respecto a la tarjeta */
    align-self: center;
    justify-self: center;
    display: grid;
    place-items: center;
    justify-content: unset;
    align-content: unset;
    text-align: center;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: var(--mobile-rank-logo);
    min-height: var(--mobile-rank-logo);
    max-height: var(--mobile-rank-logo);
    margin: 0;
    padding: 0;
    overflow: visible;
    flex-shrink: 0;
    border: none;
    background: transparent;
    box-shadow: none;
    box-sizing: border-box;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card-row .rank-card__pos {
    width: auto;
    min-width: 0;
    max-width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-size: clamp(1.45rem, 6.5vw, 2rem);
    line-height: 1;
    font-weight: 800;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card-row .rank-card__pos--shared {
    font-size: clamp(1.05rem, 4.2vw, 1.35rem);
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card__logo {
    width: var(--mobile-rank-logo);
    height: var(--mobile-rank-logo);
    padding: 0.28rem;
    box-sizing: border-box;
    border-radius: 8px;
    grid-column: 1;
    grid-row: 1;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card__body {
    min-width: 0;
    grid-column: 2;
    grid-row: 1;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card__scores {
    grid-column: 3;
    grid-row: 1;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
    flex-shrink: 0;
    margin-left: 0;
    min-width: 0;
    max-width: 100%;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-card__name {
    font-size: clamp(0.92rem, 3.8vw, 1.05rem);
    line-height: 1.28;
    font-weight: 700;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    text-overflow: ellipsis;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-tanteo {
    min-width: 2.55rem;
    padding: 0.38rem 0.58rem;
    font-size: clamp(1.08rem, 4.8vw, 1.28rem);
    border-radius: 10px;
  }

  body.mobile-rank-open.mobile-rank--general #rank-general .rank-tanteo.rank-tanteo--solo {
    min-width: 2.95rem;
    padding: 0.45rem 0.72rem;
    font-size: clamp(1.22rem, 5.8vw, 1.55rem);
    border-radius: 11px;
  }

  .board {
    gap: 1rem;
    max-width: 100%;
  }

  .row {
    display: grid;
    width: 100%;
    max-width: 100%;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 0.55rem 0.72rem;
    align-items: start;
    justify-items: stretch;
    flex-wrap: nowrap;
    padding: 0.95rem 0.78rem;
  }

  .row > .cell-name--left,
  .row > .cell-logo--left,
  .row > .score-pair,
  .row > .cell-logo--right,
  .row > .cell-name--right {
    order: 0;
  }

  .cell-name--left {
    grid-column: 1;
    grid-row: 1;
    justify-self: center;
    text-align: center;
  }

  .cell-logo--left {
    grid-column: 1;
    grid-row: 2;
    justify-self: center;
  }

  .score-pair {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
    justify-self: center;
  }

  .cell-name--right {
    grid-column: 3;
    grid-row: 1;
    justify-self: center;
    text-align: center;
  }

  .cell-logo--right {
    grid-column: 3;
    grid-row: 2;
    justify-self: center;
  }

  .cell-name--left,
  .cell-name--right {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.28rem;
    flex: unset;
    font-size: clamp(0.9rem, 3.95vw, 1.12rem);
    line-height: 1.3;
    padding: 0 0.15rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: visible;
    overflow-wrap: break-word;
    word-break: break-word;
    text-align: center;
  }

  .cell-name__text {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
    padding-bottom: 0.1em;
  }

  .club-rank-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    min-height: 1.35rem;
    padding: 0.12rem 0.35rem;
    border-radius: 6px;
    border: 1px solid rgba(220, 38, 38, 0.55);
    background: rgba(220, 38, 38, 0.22);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
    flex-shrink: 0;
    transform-origin: center;
    backface-visibility: hidden;
    box-shadow: none;
  }

  .club-rank-badge--flip {
    animation: club-rank-badge-flip 0.85s linear forwards;
  }

  @keyframes club-rank-badge-flip {
    0% {
      transform: perspective(320px) rotateY(0deg);
    }
    100% {
      transform: perspective(320px) rotateY(1080deg);
    }
  }

  .cell-logo {
    width: 40px;
    height: 40px;
  }

  .score {
    width: 40px;
    height: 40px;
    min-width: 40px;
    max-width: 40px;
    min-height: 40px;
    max-height: 40px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: clamp(1.05rem, 5.2vw, 1.35rem);
  }
}

#config-modal[hidden] {
  display: none !important;
}

.config-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.85rem 1rem 0.6rem;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.config-modal__close {
  flex-shrink: 0;
  width: 2.35rem;
  height: 2.35rem;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  font-size: 1.65rem;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.config-modal__close:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.07);
}

.config-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 0.35rem;
  padding: 0.45rem 0.75rem 0;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.config-tab {
  padding: 0.45rem 0.7rem;
  border: none;
  border-radius: 8px 8px 0 0;
  background: transparent;
  color: var(--muted);
  font-family: inherit;
  font-size: 0.92rem;
  font-weight: 650;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}

.config-tab:hover {
  color: var(--text);
}

.config-tab[aria-selected='true'] {
  color: var(--accent);
  border-bottom-color: var(--accent);
  background: rgba(59, 130, 246, 0.08);
}

.config-tab-panels {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.config-tab-panel-inner {
  padding: 0.9rem 1.1rem 1.2rem;
}

.panel-h3--tab {
  margin: 0 0 0.55rem;
  font-size: 1.08rem;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.01em;
}

.panel-h4 {
  margin: 0 0 0.35rem;
  font-size: 0.95rem;
  font-weight: 650;
  color: var(--text);
}

.panel-footer--modal {
  margin-top: 1.25rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border);
}

.panel-section {
  margin-bottom: 1.25rem;
}

.panel-section h2 {
  margin: 0 0 0.5rem;
  font-size: 1.15rem;
  font-weight: 700;
}

.panel-section--major {
  margin-bottom: 1.75rem;
  padding-bottom: 1.35rem;
  border-bottom: 1px solid var(--border);
}

.panel-section--major:last-of-type {
  border-bottom: none;
  margin-bottom: 0.5rem;
  padding-bottom: 0;
}

.panel-subsection {
  margin-top: 1.1rem;
}

.panel-subsection:first-of-type {
  margin-top: 0.35rem;
}

.panel-h3 {
  margin: 0 0 0.45rem;
  font-size: 1rem;
  font-weight: 650;
  color: var(--text);
  letter-spacing: 0.01em;
}

.hint {
  margin: 0 0 0.75rem;
  font-size: 0.95rem;
  color: var(--muted);
}

.board-vistas-fields {
  margin-top: 1rem;
}

.board-vistas-fields select {
  max-width: 28rem;
}

.board-vistas-fields .input-narrow {
  max-width: 10rem;
}

.board-vistas-fields label.checkbox-label {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  max-width: 36rem;
  cursor: pointer;
  font-weight: 500;
}

.stack {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.stack label {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 1rem;
  font-weight: 500;
}

.stack input,
.line-form select {
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 1.05rem;
  background: var(--bg);
  color: var(--text);
}

.stack button[type="submit"],
.line-form button {
  padding: 0.6rem 1.1rem;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
}

.stack button[type="submit"]:hover,
.line-form button:hover {
  background: var(--accent-hover);
}

.btn-secondary {
  padding: 0.6rem 1.1rem;
  background: var(--surface);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
}

.btn-secondary:hover {
  background: var(--bg);
}

.panel-fesba-actions {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: 0.5rem;
}

.panel-fesba-import-hint {
  margin-top: 0.85rem;
}

.panel-fesba-import {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.65rem 1rem;
  margin-top: 0.45rem;
}

.panel-fesba-import__date,
.panel-fesba-import__mode {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 0.95rem;
}

.panel-fesba-import__mode select,
.panel-fesba-import__slot select {
  padding: 0.45rem 0.55rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  font-family: inherit;
  font-size: 1rem;
  min-width: 12rem;
}

.panel-fesba-import__slot {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.65rem 1rem;
  width: 100%;
}

.panel-fesba-import__slot label {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 0.95rem;
}

.panel-fesba-import__date input[type='date'] {
  padding: 0.45rem 0.55rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  font-family: inherit;
  font-size: 1rem;
}

.panel-fesba-results {
  margin-top: 1rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--border);
}

.panel-fesba-results__actions {
  margin-top: 0.45rem;
}

.btn-fesba-primary {
  padding: 0.6rem 1.1rem;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
}

.btn-fesba-primary:hover {
  background: var(--accent-hover);
}

.msg-fesba-tools {
  margin: 0.5rem 0 0;
  font-size: 0.9rem;
  color: var(--muted);
  min-height: 1.2rem;
}

.edit-club-wrap {
  margin-top: 1rem;
  padding: 1rem;
  background: var(--bg);
  border-radius: 10px;
  border: 1px solid var(--border);
}

.edit-club-title {
  margin: 0 0 0.75rem;
  font-size: 1.1rem;
  font-weight: 700;
}

.edit-club-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.clubs-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.club-row {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.55rem 0.7rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 1rem;
}

.club-thumb {
  width: 42px;
  height: 42px;
  object-fit: contain;
  border-radius: 6px;
  background: var(--bg);
  flex-shrink: 0;
}

.club-thumb--empty {
  display: inline-block;
  width: 42px;
  height: 42px;
  border-radius: 6px;
  background: repeating-linear-gradient(
    -45deg,
    var(--border),
    var(--border) 2px,
    transparent 2px,
    transparent 6px
  );
  opacity: 0.45;
}

.club-row-name {
  flex: 1;
  min-width: 0;
  font-weight: 600;
}

.club-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.btn-edit-club,
.btn-delete-club {
  padding: 0.4rem 0.75rem;
  font-size: 0.95rem;
  font-weight: 600;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--surface);
  cursor: pointer;
  color: var(--accent);
}

.btn-edit-club:hover {
  background: var(--bg);
}

.btn-delete-club {
  color: #b91c1c;
  border-color: #fecaca;
}

.btn-delete-club:hover {
  background: #fef2f2;
}

.msg {
  min-height: 1.25rem;
  font-size: 0.95rem;
  margin: 0;
}

.msg--ok {
  color: #047857;
}

.msg--err {
  color: #b91c1c;
}

.line-forms {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.line-forms-round {
  margin: 0.35rem 0 0.1rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
}

.line-forms-round:first-child {
  margin-top: 0;
}

.line-form {
  display: grid;
  grid-template-columns: 3.25rem 1fr 1fr auto;
  gap: 0.35rem 0.5rem;
  align-items: center;
  font-size: 0.95rem;
}

/* Marcador en modal: columna de guardar fija + icono (sin texto) */
#line-forms .btn-save-line {
  width: 2.35rem;
  height: 2.35rem;
  min-width: 2.35rem;
  padding: 0 !important;
  font-size: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  line-height: 0;
}

#line-forms .btn-save-line__ico {
  display: block;
  flex-shrink: 0;
}

#line-forms .line-form {
  grid-template-columns: 2.65rem minmax(0, 1fr) minmax(0, 1fr) 2.35rem;
  gap: 0.3rem 0.35rem;
}

.line-form .ln {
  font-weight: 700;
  color: var(--muted);
}

.panel-footer {
  margin: 0;
  padding-top: 0.5rem;
  border-top: 1px solid var(--border);
  text-align: center;
}

.linkish {
  background: none;
  border: none;
  color: var(--muted);
  text-decoration: underline;
  cursor: pointer;
  font-size: 1rem;
}

.modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}

/* `hidden` + `.modal { display: flex }`: forzar cierre sin quitar la clase */
#db-standings-modal[hidden] {
  display: none !important;
}

.modal-backdrop {
  position: absolute;
  inset: 0;
  background: var(--modal-backdrop);
  backdrop-filter: blur(var(--modal-backdrop-blur));
  -webkit-backdrop-filter: blur(var(--modal-backdrop-blur));
}

@media (prefers-reduced-motion: reduce) {
  .modal-backdrop {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

.modal-box {
  position: relative;
  z-index: 1;
  background: var(--surface);
  border-radius: 12px;
  padding: 1.65rem;
  width: 100%;
  max-width: 400px;
  border: 1px solid var(--modal-border-strong);
  box-shadow: var(--modal-shadow-strong);
}

.modal-box h2 {
  margin: 0 0 1rem;
  font-size: 1.35rem;
}

.modal-box--wide {
  max-width: min(960px, 96vw);
}

.modal-box.modal-box--wide {
  background: var(--modal-surface-elevated);
}

.modal-box.modal-box--config {
  --config-modal-h: min(82vh, 780px);
  width: min(720px, calc(100vw - 2rem));
  max-width: min(720px, 96vw);
  height: var(--config-modal-h);
  min-height: var(--config-modal-h);
  max-height: var(--config-modal-h);
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  box-sizing: border-box;
  background: var(--modal-surface-elevated);
  border-color: rgba(148, 163, 184, 0.28);
  box-shadow:
    0 32px 72px rgba(0, 0, 0, 0.62),
    0 0 0 1px rgba(255, 255, 255, 0.09);
}

.modal-box.modal-box--config .config-modal__header h2 {
  margin: 0;
  font-size: 1.22rem;
}

.panel-db-standings-actions {
  margin: 0.5rem 0 1rem;
}

.db-standings-intro code {
  font-size: 0.88em;
}

.db-standings-wrap {
  overflow: auto;
  max-height: min(70vh, 560px);
  margin: 0 0 1rem;
  border: 1px solid var(--border);
  border-radius: 8px;
}

.db-standings-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.db-standings-table th,
.db-standings-table td {
  padding: 0.45rem 0.55rem;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}

.db-standings-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--surface);
  text-align: right;
  font-weight: 600;
  white-space: nowrap;
}

.db-standings-table thead th.db-standings-th--left {
  text-align: left;
}

.db-standings-table tbody th {
  text-align: left;
  font-weight: 500;
}

.db-standings-table td {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.db-standings-table td.db-standings-td--left,
.db-standings-table th.db-standings-td--left {
  text-align: left;
}

.db-standings-table tbody tr:nth-child(even) {
  background: rgba(255, 255, 255, 0.03);
}

.db-standings-table .db-standings-warn {
  color: #f59e0b;
  font-weight: 600;
}

.db-standings-table .db-standings-ok {
  color: var(--muted);
}

.db-standings-footer {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
}

@media (max-width: 640px) {
  .line-form {
    grid-template-columns: 1fr;
  }

  .line-form .ln {
    grid-column: 1 / -1;
  }

  #line-forms .line-form {
    grid-template-columns: 1fr;
  }

  #line-forms .btn-save-line {
    justify-self: end;
    width: 2.35rem;
    height: 2.35rem;
  }
}

/*
 * Escritorio por defecto (clase board-venue en html/body): vista tipo pabellón —
 * viewport fijo sin scroll, 6 encuentros repartiendo alto, laterales a la misma altura.
 * Solo aplica ≥641px; móvil (<641px) no usa estas reglas (scroll y layout actuales).
 */
@media (min-width: 641px) {
  html.board-venue {
    height: 100%;
    max-height: 100%;
    overflow: hidden;
  }

  body.board-venue {
    --venue-board-gap: clamp(0.1rem, 0.48vmin, 0.72rem);
    --board-max-width: min(1100px, 94vw);
    --rank-card-logo-size: clamp(28px, 5.2vmin, 160px);
    --rank-pos-w: clamp(4ch, 5vmin, 8ch);
    --rank-pair-inner-gap: clamp(0.12rem, 0.42vmin, 0.5rem);
    --rank-scroll-gap: clamp(0.35rem, 0.85vmin, 0.65rem);
    --rank-scroll-padding: clamp(0.22rem, 0.48vmin, 0.55rem) clamp(0.28rem, 0.62vmin, 0.72rem);
    --rank-card-pad-y: clamp(0.1rem, 0.32vmin, 0.45rem);
    --rank-card-pad-x: clamp(0.22rem, 0.52vmin, 0.75rem);
    --rank-card-inner-gap: clamp(0.18rem, 0.42vmin, 0.45rem);

    min-height: 100dvh !important;
    height: 100dvh;
    max-height: 100dvh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }


  body.board-venue .board-wrap {
    flex: 1 1 auto;
    min-height: 0;
    padding-top: var(--board-wrap-pad-block-start);
    padding-bottom: var(--board-wrap-pad-block-start);
    padding-left: clamp(0.45rem, 1.1vw, 1.1rem);
    padding-right: clamp(0.45rem, 1.1vw, 1.1rem);
    overflow: hidden;
    align-items: stretch;
  }

  body.board-venue.is-logged-in .board-wrap {
    padding-bottom: var(--board-wrap-pad-block-start);
  }

  body.board-venue .board-wrap .board-rg-left-stack,
  body.board-venue .board-wrap #board-desktop-logos {
    min-height: 0 !important;
    height: auto;
    align-self: stretch;
    max-height: none;
  }

  body.board-venue .board-wrap .board-center-column {
    min-height: 0;
    justify-content: flex-start;
    align-self: stretch;
    height: auto;
    flex: 1 1 auto;
  }

  body.board-venue .board-wrap .board-slot {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
  }

  body.board-venue #board.board {
    width: 100%;
    max-width: 100%;
    margin-inline: auto;
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    max-height: 100%;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: repeat(6, minmax(0, 1fr));
    gap: var(--venue-board-gap);
    justify-items: stretch;
    align-content: stretch;
    align-self: stretch;
  }

  body.board-venue #board.board .row {
    min-height: 0 !important;
    height: 100%;
    max-height: 100%;
    /* overflow-y visible: las “g” etc. no se cortan; X sigue contenido */
    overflow-x: hidden;
    overflow-y: visible;
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    flex-wrap: nowrap;
    padding: clamp(0.18rem, 0.52vmin, 0.72rem) clamp(0.28rem, 0.85vmin, 0.85rem);
    gap: clamp(0.2rem, 0.6vmin, 0.75rem);
  }

  body.board-venue .cell-logo {
    width: clamp(32px, 6.8vmin, 200px);
    height: clamp(32px, 6.8vmin, 200px);
    flex-shrink: 1;
    min-width: 0;
    min-height: 0;
  }

  body.board-venue .cell-name {
    font-size: clamp(0.72rem, 3.1vmin, 4.2rem);
    line-height: 1.28;
  }

  body.board-venue .score {
    min-width: 0;
    padding: clamp(0.12rem, 0.5vmin, 0.65rem) clamp(0.32rem, 1.05vmin, 1.6rem);
    font-size: clamp(1rem, 5.2vmin, 5rem);
    border-radius: clamp(6px, 0.75vmin, 14px);
  }

  body.board-venue .board-head .round-switch__btn {
    font-size: clamp(0.62rem, 1.1vmin, 0.98rem);
    padding: clamp(0.2rem, 0.42vmin, 0.38rem) clamp(0.48rem, 0.95vmin, 0.95rem);
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general.rank-general-shell {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }

  body.board-venue #rank-general-inner.rank-scroll,
  body.board-venue #rank-general.rank-general-shell #rank-general-inner.rank-general__inner {
    overflow: hidden !important;
    flex: 1 1 auto !important;
    min-height: 0 !important;
    display: flex !important;
    flex-direction: column;
    gap: var(--rank-scroll-gap);
    justify-content: stretch;
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general-inner.rank-general__inner {
    gap: clamp(0.18rem, 0.75vmin, 0.42rem);
  }

  body.board-venue .rank-scroll {
    overflow: hidden !important;
  }

  body.board-venue .rank-pair {
    flex: 1 1 0 !important;
    min-height: 0 !important;
    flex-shrink: 1 !important;
    margin: 0;
    overflow: hidden;
    gap: var(--rank-pair-inner-gap);
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-pair {
    gap: clamp(0.1rem, 0.65vmin, 0.28rem) !important;
  }

  body.board-venue .rank-pair .rank-card-row {
    flex: 1 1 0;
    min-height: 0;
    overflow: hidden;
    align-items: stretch;
  }

  body.board-venue .rank-card {
    font-size: clamp(0.52rem, 1.85vmin, 2.75rem);
    min-height: 0;
    overflow: hidden;
  }

  body.board-venue .rank-card__main {
    min-height: 0;
    overflow: hidden;
  }

  body.board-venue .rank-card__body {
    min-width: 0;
    overflow: hidden;
  }

  body.board-venue .rank-card__name {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }

  body.board-venue .rank-tanteo,
  body.board-venue .rank-tanteo--solo {
    min-width: 0;
    padding: clamp(0.08rem, 0.28vmin, 0.14rem) clamp(0.18rem, 0.42vmin, 0.32rem);
    font-size: clamp(0.55rem, 1.75vmin, 2.4rem);
    border-radius: clamp(4px, 0.5vmin, 8px);
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-tanteo,
  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-tanteo--solo {
    min-width: clamp(2.1rem, 5.5vmin, 4rem);
    padding: clamp(0.14rem, 0.55vmin, 0.42rem) clamp(0.3rem, 1.05vmin, 0.82rem);
    font-size: clamp(0.88rem, 3.2vmin, 3rem);
    border-radius: clamp(7px, 0.85vmin, 14px);
  }

  body.board-venue .rank-card__logo {
    width: var(--rank-card-logo-size);
    height: var(--rank-card-logo-size);
    flex-shrink: 1;
    min-width: 0;
    min-height: 0;
    padding: clamp(0.08rem, 0.22vmin, 0.2rem);
  }

  body.board-venue .board-wrap .board-rg-left-stack .rank-general__heading {
    flex: 0 0 auto;
    font-size: clamp(1rem, 2.4vmin, 2rem) !important;
    font-weight: 700 !important;
    padding: clamp(0.28rem, 0.85vmin, 0.55rem) clamp(0.3rem, 1vmin, 0.55rem) clamp(0.22rem, 0.55vmin, 0.4rem) !important;
  }

  body.board-venue .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row .rank-card__pos-wrap,
  body.board-venue .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row--filler .rank-card__pos-wrap--filler {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    align-self: stretch;
  }

  body.board-venue .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row .rank-card__pos-wrap,
  body.board-venue .board-wrap[data-desktop-rank="general-only"] #rank-general .rank-card-row--filler .rank-card__pos-wrap--filler {
    font-size: clamp(0.95rem, 2.5vmin, 2.75rem);
    font-weight: 800;
  }

  body.board-venue #rank-general .rank-card-row .rank-card__pos-wrap {
    font-size: clamp(0.95rem, 2.5vmin, 2.75rem);
    font-weight: 800;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    align-self: stretch;
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-card-row {
    gap: 0;
    padding: clamp(0.05rem, 0.28vmin, 0.12rem) clamp(0.08rem, 0.35vmin, 0.18rem);
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-card {
    gap: clamp(0.06rem, 0.32vmin, 0.18rem);
    padding: clamp(0.05rem, 0.28vmin, 0.14rem) clamp(0.08rem, 0.38vmin, 0.22rem) clamp(0.05rem, 0.28vmin, 0.14rem) 0;
  }

  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-card-row .rank-card__pos-wrap,
  body.board-venue .board-wrap .board-rg-left-stack #rank-general .rank-card-row--filler .rank-card__pos-wrap--filler {
    justify-content: flex-end;
    margin-right: clamp(-0.16rem, -0.55vmin, -0.05rem);
  }

  body.board-venue #rank-general .rank-card-row .rank-card__pos-wrap {
    justify-content: flex-end;
    margin-right: clamp(-0.16rem, -0.55vmin, -0.05rem);
  }

  body.board-venue .board-wrap #board-desktop-logos {
    justify-content: space-between;
    gap: clamp(0.25rem, 1vmin, 0.75rem);
    background: #000;
  }

  body.board-venue .board-wrap #board-desktop-logos:not(.board-desktop-logos--playing-video) {
    justify-content: flex-start;
  }

  body.board-venue .board-wrap #board-desktop-logos .board-desktop-logos__strip > .desktop-header-logo {
    width: auto;
    max-width: var(--board-esponsor-strip-logo-max, 80%);
    height: auto;
    max-height: var(--board-esponsor-strip-logo-max, 80%);
    min-height: 0;
    min-width: 0;
    object-fit: contain;
    object-position: center center;
    place-self: center;
    filter: none;
  }

  body.board-venue
    .board-wrap
    #board-desktop-logos:not(.board-desktop-logos--playing-video)
    .board-desktop-logos__strip
    > .desktop-header-logo--esponsor {
    max-width: var(--board-esponsor-strip-logo-max, 80%);
    max-height: var(--board-esponsor-strip-logo-max, 80%);
  }

  body.board-venue .board-wrap #board-desktop-logos .board-desktop-logos__strip > .desktop-header-logo--fesba {
    flex: 0 0 auto;
    width: min(100%, clamp(140px, 22vmin, 280px));
    max-width: min(100%, clamp(140px, 22vmin, 280px));
    aspect-ratio: 1;
    height: auto;
    margin-inline: auto;
    background: transparent;
    box-shadow: none;
    padding: 0;
    border-radius: 0;
  }
}
