html {
  font-size: 14px;
}

/* Force loading spinner rotation in buttons (Jugadores pages) */
.loading-spinner {
    animation: spin 0.8s linear infinite !important;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

/* Custom spinner styling */
.spinner {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
}

.spinner div {
    width: 20px;
    height: 20px;
    margin: 5px;
    border: 4px solid #007bff;
    border-top: 4px solid transparent;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

table.dataTable tbody td {
    padding: 0; /*.1rem .5rem; /* reduce vertical y horizontal */
}

table.dataTable thead th,
table.dataTable tbody td {
    padding-top: 0.2rem !important;
    padding-bottom: 0.2rem !important;
    line-height: 1.1 !important;
    vertical-align: middle;
}

table.dropdown > .btn {
    min-height: 0;
}
/* ===================== Rugby Admin · patrón de páginas (multi-club) ===================== */
:root {
    --ra-primario: #0d6efd;
    --ra-suave: rgba(13,110,253,.08);
    --ra-borde: var(--bs-border-color);
    --ra-radio: .5rem;
}
body { margin-bottom: 0; }
.min-w-0 { min-width: 0; }

/* Cabecera de página: título a la izquierda, acciones a la derecha (se apilan en móvil) */
.pagina-cabecera { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; justify-content: space-between; }
.pagina-acciones { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.pagina-acciones:empty { display: none; }

/* Barra de filtros sobre tablas */
.filtros { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .75rem; }
.filtros .form-control, .filtros .form-select { width: auto; min-width: 12rem; }
@media (max-width: 575.98px) { .filtros .form-control, .filtros .form-select { width: 100%; } }

/* Estado vacío */
.vacio { text-align: center; color: var(--bs-secondary-color); padding: 2.5rem 1rem; border: 1px dashed var(--ra-borde); border-radius: var(--ra-radio); }

/* Filas clicables */
.tabla-clicable tbody tr { cursor: pointer; }

/* Inicio */
.inicio-logo { max-height: 96px; max-width: 160px; }
.acceso-rapido { transition: box-shadow .15s, transform .15s; }
.acceso-rapido:hover, .acceso-rapido:focus-visible { box-shadow: 0 .25rem .75rem rgba(0,0,0,.08); transform: translateY(-1px); }
.acceso-rapido-icono { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--ra-suave); color: var(--ra-primario); flex-shrink: 0; }

/* Acceso (login) */
body.acceso { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: #0c3320; padding: 1rem; position: relative; overflow-x: hidden; }
.acceso-campo { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
.acceso-campo svg { width: 100%; height: 100%; display: block; }
.acceso-campo::after { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse at center, rgba(4,20,12,.15) 0, rgba(4,20,12,.55) 70%); }
.acceso-lineas { opacity: .22; stroke-width: 2; }
.acceso-palos { opacity: .55; }
.acceso-pizarra, .acceso-fichas { opacity: .45; }
.acceso-caja { width: 100%; max-width: 24rem; position: relative; z-index: 1; }
.acceso-emblema { width: 7rem; height: auto; filter: drop-shadow(0 .25rem .5rem rgba(0,0,0,.35)); overflow: visible; }
.acceso-balon { animation: acceso-patada 3.2s ease-in-out infinite alternate; }
@keyframes acceso-patada { from { translate: 0 0; } to { translate: 0 -4px; } }
@media (prefers-reduced-motion: reduce) { .acceso-balon { animation: none; } }
.acceso-marca { color: #fff; font-weight: 600; font-size: 1.6rem; letter-spacing: .04em; margin-top: .5rem; text-transform: uppercase; }
.acceso-lema { color: rgba(255,255,255,.75); font-size: .875rem; }
.acceso-tarjeta { border-top: 4px solid #f5c542 !important; border-radius: .75rem; }

/* Ficheros de trabajo */
.espacio { transition: box-shadow .15s, transform .15s; }
.espacio:hover, .espacio:focus-visible { box-shadow: 0 .25rem .75rem rgba(0,0,0,.08); transform: translateY(-1px); }
.espacio-icono { width: 2.75rem; height: 2.75rem; border-radius: .6rem; display: inline-flex; align-items: center; justify-content: center; background: var(--ra-suave); color: var(--ra-primario); font-size: 1.15rem; flex-shrink: 0; }
.espacio-icono.compartido { background: rgba(var(--bs-success-rgb), .1); color: var(--bs-success-text-emphasis); }
.ruta-ficheros { font-size: .9rem; flex-wrap: wrap; }
.zona-ficheros { position: relative; }
.tabla-ficheros td:first-child { max-width: 0; width: 60%; }
.tabla-ficheros .elemento-enlace:hover .text-break, .tabla-ficheros .elemento-enlace:hover .fw-semibold { text-decoration: underline; }
.subidas { padding: .75rem 1rem; border-bottom: 1px solid var(--bs-border-color); background: var(--ra-suave); }
.soltar-aqui { display: none; position: absolute; inset: 0; z-index: 5; align-items: center; justify-content: center; text-align: center; border: 2px dashed var(--ra-primario); border-radius: inherit; background: rgba(var(--bs-body-bg-rgb), .92); color: var(--ra-primario); pointer-events: none; }
.zona-ficheros.arrastrando .soltar-aqui { display: flex; }

/* Aviso «No imagen» (derechos de imagen no cedidos): cámara tachada */
.badge-no-imagen { display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; }
.icono-tachado { position: relative; display: inline-block; width: 1.15em; text-align: center; }
.icono-tachado .fa-slash { position: absolute; inset: 0; margin: auto; -webkit-text-stroke: 2px var(--bs-warning); paint-order: stroke fill; }

/* Avatares e iniciales */
.avatar { width: 2.25rem; height: 2.25rem; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.iniciales { display: inline-flex; align-items: center; justify-content: center; background: var(--ra-suave); color: var(--ra-primario); font-weight: 600; font-size: .8rem; }

/* Barra de guardar fija al pie en formularios largos */
.barra-guardar { position: sticky; bottom: 0; z-index: 5; background: var(--bs-body-bg); border-top: 1px solid var(--ra-borde); padding: .75rem 0; margin-top: 1rem; display: flex; gap: .5rem; align-items: center; }

/* Equipos: color del equipo como acento */
.equipo-tarjeta { border-left: .375rem solid var(--equipo-color, var(--ra-borde)); }
.equipo-color { width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(--equipo-color, #ccc); flex-shrink: 0; box-shadow: inset 0 0 0 1px rgba(0,0,0,.12); }
.equipo-punto { display: inline-block; width: .75rem; height: .75rem; border-radius: 50%; background: var(--equipo-color, #ccc); flex-shrink: 0; box-shadow: inset 0 0 0 1px rgba(0,0,0,.15); }

@media print {
    .app-header, .app-sidebar, .app-footer, .pagina-acciones, .filtros, .barra-guardar { display: none !important; }
    .app-main { margin: 0 !important; }
}

/* Barra de guardar con cambios pendientes */
.barra-guardar .aviso-cambios { display: none; }
.barra-guardar.barra-sucia .aviso-cambios { display: inline; }

/* Configuración: matriz de importes */
.tabla-importes input { max-width: 8.5rem; text-align: right; }
.tabla-importes td.no-aplica { color: var(--bs-secondary-color); text-align: center; }
.editor-texto { font-family: var(--bs-font-monospace); font-size: .8125rem; min-height: 24rem; }
.celda-valor { max-width: 36rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Preinscripciones */
.kpi { cursor: pointer; transition: box-shadow .15s; }
.kpi:hover, .kpi:focus-visible { box-shadow: 0 .25rem .75rem rgba(0,0,0,.12) !important; }
.kpi.activo { outline: 2px solid var(--bs-primary); }
/* Socio dado de baja: fila en rojo suave (se sigue viendo y se puede abrir). */
.table > tbody > tr.socio-baja > * { --bs-table-bg-type: var(--bs-danger-bg-subtle); color: var(--bs-danger-text-emphasis); }
.leyenda { display: inline-block; width: .7rem; height: .7rem; border-radius: 2px; margin-right: .3rem; vertical-align: middle; }
.doc-miniatura { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; background: var(--bs-tertiary-bg); border-radius: .375rem; cursor: zoom-in; }
.doc-falta { width: 100%; aspect-ratio: 4 / 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .25rem; background: var(--bs-tertiary-bg); color: var(--bs-secondary-color); border: 1px dashed var(--bs-border-color); border-radius: .375rem; font-size: .8125rem; }

/* ---------- Jornadas ---------- */
.jornada-fecha { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 3.25rem; height: 3.25rem; border-radius: var(--ra-radio); background: var(--bs-tertiary-bg); line-height: 1; flex-shrink: 0; }
.jornada-dia { font-size: 1.35rem; font-weight: 700; }
.jornada-mes { font-size: .75rem; text-transform: uppercase; color: var(--bs-secondary-color); }
.jornada-siguiente { border-color: var(--bs-primary); box-shadow: 0 0 0 1px var(--bs-primary); }
.jornada-siguiente .jornada-fecha { background: var(--bs-primary); color: #fff; }
.jornada-siguiente .jornada-fecha .jornada-mes { color: rgba(255,255,255,.85); }
.jornada-resaltada { animation: resaltar 2s ease-out; }
@keyframes resaltar { from { box-shadow: 0 0 0 .3rem rgba(var(--bs-warning-rgb), .6); } to { box-shadow: none; } }
.partido { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr) auto auto; gap: .75rem; align-items: center; }
.partido-hora { font-variant-numeric: tabular-nums; font-weight: 600; text-align: center; }
.marcador { display: inline-flex; flex-direction: column; align-items: center; font-weight: 700; font-variant-numeric: tabular-nums; min-width: 2.25rem; padding: .15rem .4rem; border-radius: .375rem; background: var(--bs-tertiary-bg); line-height: 1.5; }
@media (max-width: 575.98px) { .partido { grid-template-columns: 2.75rem minmax(0, 1fr) auto auto; gap: .5rem; } .partido-resultado .btn { font-size: .75rem; padding: .2rem .4rem; } }
.lado-partido legend { font-size: 1rem; }
.btn-mapa { color: inherit; text-decoration: none; }
.btn-mapa:hover, .btn-mapa:focus-visible { color: var(--bs-link-color); text-decoration: underline; }
.btn-mapa-flecha { font-size: .65em; transition: transform .2s; }
.btn-mapa:not(.collapsed) .btn-mapa-flecha { transform: rotate(180deg); }
.partido-mapa { grid-column: 1 / -1; }
.partido-mapa-cuerpo { display: grid; grid-template-columns: minmax(0, 2fr) minmax(12rem, 1fr); gap: .75rem 1rem; align-items: start; padding: .25rem 0 .25rem; }
.partido-mapa-marco { aspect-ratio: 16 / 9; max-height: 16rem; border-radius: var(--ra-radio, .375rem); overflow: hidden; background: var(--bs-tertiary-bg); }
.partido-mapa-marco iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 767.98px) { .partido-mapa-cuerpo { grid-template-columns: minmax(0, 1fr); } .partido-mapa-marco { aspect-ratio: 4 / 3; } }
.agradecimientos { margin: 1.5rem 0 .5rem; border-radius: var(--ra-radio, .375rem); overflow: hidden; background: #000; text-align: center; }
.agradecimientos img { display: block; width: 100%; max-width: 64rem; height: auto; margin: 0 auto; }
@media print { .agradecimientos { break-inside: avoid; } }

/* ---------- Indicador de carga (site.js: mostrarCarga / ocultarCarga, AJAX, DataTables) ---------- */
.carga-barra { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 2100; overflow: hidden; pointer-events: none; opacity: 0; transition: opacity .2s; }
.carga-barra::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 40%; background: linear-gradient(90deg, transparent, var(--bs-primary), #6ea8fe, transparent); animation: carga-barra 1.1s ease-in-out infinite; }
.carga-barra.activa { opacity: 1; }
@keyframes carga-barra { from { transform: translateX(-100%); } to { transform: translateX(260%); } }
.carga-capa { position: fixed; inset: 0; z-index: 2090; display: flex; align-items: center; justify-content: center; background: rgba(var(--bs-body-bg-rgb), .55); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s; }
.carga-capa.visible { opacity: 1; visibility: visible; }
.carga-caja { display: flex; flex-direction: column; align-items: center; gap: .85rem; padding: 1.5rem 2rem; border-radius: 1rem; background: var(--bs-body-bg); box-shadow: 0 .75rem 2.5rem rgba(0,0,0,.12); color: var(--bs-secondary-color); font-size: .9rem; transform: translateY(6px) scale(.98); transition: transform .25s; }
.carga-capa.visible .carga-caja { transform: none; }
.carga-anillo { width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 3px solid rgba(var(--bs-primary-rgb), .15); border-top-color: var(--bs-primary); border-right-color: var(--bs-primary); animation: carga-giro .8s cubic-bezier(.5,.15,.5,.85) infinite; }
.carga-anillo-sm { width: 1.1rem; height: 1.1rem; border-width: 2px; flex-shrink: 0; }
.carga-inline { display: inline-flex; align-items: center; gap: .5rem; color: var(--bs-secondary-color); }
@keyframes carga-giro { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .carga-anillo { animation-duration: 2s; } .carga-barra::before { animation-duration: 2.5s; } }
/* DataTables: el «Cargando…» como tarjeta flotante sobre la tabla, sin los puntos animados por defecto. */
div.dt-container div.dt-processing { border: 0; background: var(--bs-body-bg); box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.12); border-radius: .75rem; padding: .75rem 1.25rem; width: auto; margin: 0; transform: translate(-50%, -50%); top: 50%; left: 50%; z-index: 5; }
div.dt-container div.dt-processing > div:last-child { display: none; }
td.dt-empty .carga-inline { padding: 1rem 0; }

/* Calendario del club (planificación) */
.cat-c0 { --cat: #0d6efd; } .cat-c1 { --cat: #198754; } .cat-c2 { --cat: #d63384; } .cat-c3 { --cat: #fd7e14; }
.cat-c4 { --cat: #6f42c1; } .cat-c5 { --cat: #20c997; } .cat-c6 { --cat: #dc3545; } .cat-c7 { --cat: #6c757d; }
.cat-punto { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; background: var(--cat, #6c757d); margin-right: .35rem; vertical-align: middle; }
.leyenda-categorias .list-inline-item { margin-right: .75rem; }
.cal-mes { grid-template-rows: auto; border: 1px solid var(--bs-border-color); border-radius: var(--ra-radio); overflow: hidden; background: var(--bs-body-bg); }
.cal-fila { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-fila + .cal-fila { border-top: 1px solid var(--bs-border-color); }
.cal-dia-semana { padding: .4rem .5rem; font-size: .75rem; font-weight: 600; text-transform: uppercase; color: var(--bs-secondary-color); background: var(--bs-tertiary-bg); }
.cal-celda { position: relative; min-height: 6.5rem; padding: .3rem .4rem; border-left: 1px solid var(--bs-border-color); font-size: .75rem; }
.cal-celda:first-child { border-left: 0; }
.cal-finde { background: rgba(var(--bs-primary-rgb), .03); }
.cal-fuera { color: var(--bs-secondary-color); background: var(--bs-tertiary-bg); opacity: .6; }
.cal-num { display: inline-flex; align-items: center; justify-content: center; min-width: 1.6rem; height: 1.6rem; border-radius: 50%; font-weight: 600; font-size: .8rem; }
.cal-hoy .cal-num { background: var(--bs-primary); color: #fff; }
.cal-enlace { text-decoration: none; color: inherit; }
.cal-con:hover { background: rgba(var(--bs-primary-rgb), .07); }
.cal-con:focus-within { outline: 2px solid var(--bs-primary); outline-offset: -2px; }
.cal-eventos { margin-top: .15rem; }
.cal-evento { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid var(--cat, #6c757d); padding: 0 .3rem; margin-bottom: .15rem; border-radius: 2px; background: color-mix(in srgb, var(--cat, #6c757d) 10%, transparent); }
.cal-evento-sin { font-style: italic; }
.cal-hora { font-weight: 600; font-variant-numeric: tabular-nums; }
.cal-mas { color: var(--bs-secondary-color); padding-left: .3rem; }
.cal-vacio { display: none !important; }
.vistas-jornadas { flex-wrap: nowrap; overflow-x: auto; }
.vistas-jornadas .nav-link { white-space: nowrap; }

/* Fin de semana */
.partido-finde { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr) auto; gap: .75rem; align-items: start; }
.partido-finde .partido-hora { padding-top: 1.6rem; }
.lado { padding: .1rem 0; }
.lado-propio { font-weight: 600; }
.logo-club { position: relative; flex: 0 0 1.75rem; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--bs-tertiary-bg); display: inline-flex; align-items: center; justify-content: center; overflow: hidden; }
.logo-club-iniciales { font-size: .6rem; font-weight: 700; color: var(--bs-secondary-color); }
.logo-club img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #fff; }
@media (max-width: 575.98px) { .partido-finde { grid-template-columns: 2.75rem minmax(0, 1fr) auto; gap: .5rem; } }
@media print {
    .app-sidebar, .app-header, .pagina-acciones, .vistas-jornadas, .btn-mapa-flecha, .partido-mapa, .app-footer { display: none !important; }
    .dias-finde .col-xl-6 { width: 100%; }
    .card { break-inside: avoid; }
}

/* ---------- Convocatoria ---------- */
.conv-sin-equipo { border-color: var(--bs-warning-border-subtle); }
.conv-sin-equipo > .card-header { background: var(--bs-warning-bg-subtle); }
.conv-jugador .dorsal { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--bs-tertiary-bg); font-weight: 600; font-size: .85rem; flex-shrink: 0; }
.conv-jugador[data-estado=si] { background: var(--bs-success-bg-subtle); }
.conv-jugador[data-estado=no] { background: var(--bs-danger-bg-subtle); opacity: .85; }
.conv-estado .btn { min-width: 2.25rem; }
.chip-equipo { border-left: .3rem solid var(--equipo-color) !important; }
.border-dashed { border-style: dashed !important; }

/* ---------- Remesas ---------- */
.barra-seleccion { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; padding: .5rem .75rem; margin-bottom: .75rem; border-radius: var(--ra-radio); background: var(--bs-primary-bg-subtle); position: sticky; top: .5rem; z-index: 5; }
.barra-seleccion.d-none { display: none !important; }

/* Agenda semanal (Fisioterapia): 7 columnas en escritorio, lista de días en móvil (los vacíos se ocultan salvo hoy). */
.agenda { display: grid; gap: .5rem; grid-template-columns: 1fr; }
@media (min-width: 992px) { .agenda { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
.agenda-dia { border: 1px solid var(--bs-border-color); border-radius: .5rem; padding: .5rem; min-height: 8rem; background: var(--bs-body-bg); }
.agenda-dia.hoy { border-color: var(--bs-primary); box-shadow: inset 0 3px 0 var(--bs-primary); }
@media (max-width: 991.98px) { .agenda-dia { min-height: 0; } .agenda-dia.vacio:not(.hoy) { display: none; } }
.agenda .cita { display: block; border: 0; border-left: 3px solid var(--bs-success); border-radius: .375rem; background: var(--bs-tertiary-bg); padding: .375rem .5rem; margin-top: .375rem; font-size: .875rem; color: var(--bs-body-color); }
.agenda .cita.pendiente, .agenda .cita.parcial { border-left-color: var(--bs-warning); }
.agenda .cita:hover, .agenda .cita:focus-visible { background: var(--bs-secondary-bg); }

/* ---------- Evaluaciones (Dirección Deportiva) */
.radar-valoracion { width: 100%; max-width: 360px; height: auto; display: block; margin: 0 auto; }
.criterio output { min-width: 2ch; text-align: right; }
.criterio .form-range { margin-top: .25rem; }

/* ---------- Estadísticas (Dirección Deportiva) */
.cuadro-conv-scroll { overflow: auto; max-height: 70vh; border: 1px solid var(--bs-border-color); border-radius: .375rem; }
.cuadro-conv { width: auto; font-size: .8rem; border-collapse: separate; border-spacing: 0; }
.cuadro-conv th, .cuadro-conv td { padding: .2rem .3rem; white-space: nowrap; }
.cuadro-conv thead th { position: sticky; top: 0; z-index: 2; background: var(--bs-tertiary-bg); }
.cuadro-conv .cc-nombre { position: sticky; left: 0; z-index: 1; background: var(--bs-body-bg); min-width: 11rem; max-width: 16rem; overflow: hidden; text-overflow: ellipsis; }
.cuadro-conv thead .cc-nombre { z-index: 3; background: var(--bs-tertiary-bg); }
.cuadro-conv .cc-total { text-align: center; font-weight: 600; }
.cuadro-conv .cc-fecha { vertical-align: bottom; text-align: center; height: 5.5rem; }
.cuadro-conv .cc-fecha span { writing-mode: vertical-rl; transform: rotate(180deg); display: inline-block; }
.cuadro-conv .cc-celda, .cuadro-conv .cc-vacia { min-width: 1.6rem; text-align: center; }
.cuadro-conv .cc-texto { font-size: .7rem; }
.cc-muestra { display: inline-block; width: .9rem; height: .9rem; border-radius: .2rem; border: 1px solid var(--bs-border-color); }
.tabla-evolucion td, .tabla-generaciones td { min-width: 4.5rem; }
@media print {
    .cuadro-conv-scroll { max-height: none; overflow: visible; border: 0; }
    .cuadro-conv .cc-celda { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .tabla-evolucion td, .tabla-generaciones td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* Fondo de los popups algo más claro (master, Asistencia). */
.modal-backdrop.show { opacity: 0.35 !important; }

/* Pasar lista: filas grandes para el dedo, presentes resaltados. */
.asis-lista .asis-fila { padding: .65rem .9rem; min-height: 48px; display: flex; align-items: center; }
.asis-lista .asis-fila > .form-check { width: 100%; padding-left: 0; }
.asis-lista .asis-fila .form-check-input { width: 2.6em; height: 1.35em; margin: 0; flex-shrink: 0; cursor: pointer; }
.asis-lista .asis-fila label { cursor: pointer; }
.asis-lista .asis-fila.presente { background: var(--bs-success-bg-subtle); }

/* Preparación física: test de wellness (5 = mejor, 1 = peor) y datos de medidas */
.pf-calculo { padding: .5rem .75rem; border-radius: var(--bs-border-radius); background: var(--bs-tertiary-bg); min-height: 2.4rem; }
.pf-calculo:empty { visibility: hidden; }
.pf-medida summary { cursor: pointer; }
/* Editor de planes: series en rejilla, marca de guardado y gráficas de evolución */
.ed-series { display: grid; grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); gap: .5rem; }
.ed-guardado { border-color: var(--bs-success) !important; box-shadow: 0 0 0 .2rem rgba(var(--bs-success-rgb), .2); transition: box-shadow .3s; }
#plDatos summary, .rs-jugador summary { cursor: pointer; list-style: none; }
#plDatos summary::-webkit-details-marker, .rs-jugador summary::-webkit-details-marker { display: none; }
.rs-avance { min-width: 9rem; }
.pf-grafica { width: 100%; height: 110px; display: block; }
.pf-grafica-area { fill: rgba(var(--bs-primary-rgb), .12); }
.pf-grafica-linea { stroke: var(--bs-primary); stroke-width: 2; vector-effect: non-scaling-stroke; }
.pf-grafica-punto { fill: var(--bs-primary); }
.wt-escala { display: grid; grid-template-columns: repeat(5, 1fr); gap: .5rem; }
.wt-opcion { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: .25rem; min-height: 48px; padding: .5rem .35rem;
    border: 1px solid var(--bs-border-color); background: var(--bs-body-bg); color: var(--bs-body-color); font-size: .8rem; line-height: 1.2; white-space: normal; }
.wt-opcion .wt-num { font-size: 1.15rem; font-weight: 700; }
.wt-opcion:hover { border-color: var(--bs-primary); }
.btn-check:focus-visible + .wt-opcion { outline: 2px solid var(--bs-primary); outline-offset: 2px; }
.btn-check:checked + .wt-5, .btn-check:checked + .wt-4 { background: var(--bs-success); border-color: var(--bs-success); color: #fff; }
.btn-check:checked + .wt-3 { background: var(--bs-secondary); border-color: var(--bs-secondary); color: #fff; }
.btn-check:checked + .wt-2 { background: var(--bs-warning); border-color: var(--bs-warning); color: #000; }
.btn-check:checked + .wt-1 { background: var(--bs-danger); border-color: var(--bs-danger); color: #fff; }
.wt-apartado .wt-falta { display: none; }
.wt-apartado.falta { border-color: var(--bs-danger); }
.wt-apartado.falta .wt-falta { display: block; }
@media (max-width: 575.98px) {
    .wt-escala { grid-template-columns: 1fr; gap: .4rem; }
    .wt-opcion { flex-direction: row; justify-content: flex-start; gap: .75rem; text-align: left; font-size: .9rem; }
    .wt-opcion .wt-num { width: 1.5rem; text-align: center; }
}
.pf-dato { background: var(--bs-tertiary-bg); border-radius: .5rem; padding: .6rem .8rem; height: 100%; }
.pf-medidas summary { cursor: pointer; list-style: none; }
.pf-medidas summary::-webkit-details-marker { display: none; }
.pf-medidas summary::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .75rem; color: var(--bs-secondary-color); margin-left: .25rem; align-self: center; }
.pf-medidas details[open] summary::after { content: "\f077"; }
.pl-series { display: grid; grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); gap: .5rem; }
.pl-serie { padding: .35rem .5rem; border-radius: .375rem; background: var(--bs-tertiary-bg); transition: background-color .3s; }
.pl-serie.hecha { background: var(--bs-success-bg-subtle); }
.pl-serie.guardada { background: var(--bs-success-border-subtle); }
.pl-serie .pl-valor { min-height: 38px; }

/* Parte médico › Disponibilidad: barra apilada por categoría */
.disp-barra { display: flex; height: .75rem; border-radius: .25rem; overflow: hidden; background: var(--bs-secondary-bg); min-width: 6rem; }
.disp-barra > span { display: block; height: 100%; }
.disp-muestra { display: inline-block; width: .8rem; height: .8rem; border-radius: .2rem; vertical-align: -.1rem; }

/* Accesibilidad: sobre el fondo gris del contenido (#f8f9fa) el azul y el gris de Bootstrap se quedan en 4,26:1 y 4,44:1.
   Un tono más oscuro llega a 4,5:1 (WCAG AA) en enlaces, pestañas, botones de enlace y botones de contorno. */
.app-main { --bs-link-color: #0a58ca; --bs-link-color-rgb: 10, 88, 202; --bs-link-hover-color: #084298; --bs-link-hover-color-rgb: 8, 66, 152; }
.app-main .btn-outline-primary { --bs-btn-color: #0a58ca; --bs-btn-border-color: #0a58ca; }
.app-main .btn-outline-secondary { --bs-btn-color: #565e64; }
.app-main .btn-link { --bs-btn-color: #0a58ca; --bs-btn-hover-color: #084298; }
.app-main .btn-outline-success { --bs-btn-color: #146c43; --bs-btn-border-color: #146c43; }
.app-main .btn-outline-danger { --bs-btn-color: #b02a37; --bs-btn-border-color: #b02a37; }
.alert code { color: inherit; font-weight: 600; }

/* Menú lateral: secciones plegables */
.app-sidebar .grupo-menu { list-style: none; }
.app-sidebar .grupo-toggle {
    display: flex; align-items: center; justify-content: space-between; width: 100%;
    background: none; border: 0; text-align: start; cursor: pointer;
    /* Color propio del título de sección de AdminLTE (claro sobre el menú oscuro, ~8:1). Con «inherit» heredaba
       el texto oscuro del body (#212529 sobre #343a40, ~1,3:1) y las secciones no se veían. */
    color: var(--lte-sidebar-header-color);
    font-size: .75rem; font-weight: 600; letter-spacing: .06em;
}
.app-sidebar .grupo-menu + .grupo-menu { margin-top: .25rem; border-top: 1px solid rgba(255, 255, 255, .08); }
.app-sidebar .grupo-toggle:hover, .app-sidebar .grupo-toggle:focus-visible { color: var(--lte-sidebar-hover-color); }
.app-sidebar .grupo-toggle:focus-visible { outline: 2px solid var(--lte-sidebar-hover-color); outline-offset: -2px; border-radius: .25rem; }
.app-sidebar .grupo-flecha { font-size: .7rem; transition: transform .2s ease; }
.app-sidebar .grupo-menu.plegado .grupo-flecha { transform: rotate(-90deg); }
.app-sidebar .grupo-menu.plegado .grupo-opciones { display: none; }
.app-sidebar .grupo-opciones { padding-left: 0; }
@media (prefers-reduced-motion: reduce) { .app-sidebar .grupo-flecha { transition: none; } }
/* Con el menú encogido (solo iconos) no se pliega: se ven todas las opciones */
.sidebar-collapse .app-sidebar:not(:hover) .grupo-menu.plegado .grupo-opciones { display: flex; }
.sidebar-collapse .app-sidebar:not(:hover) .grupo-flecha { display: none; }

/* Pasar lista: foto del jugador */
.asis-foto-caja { position: relative; display: inline-flex; flex: 0 0 auto; }
.asis-fila .asis-foto { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; flex: 0 0 44px; font-size: .9rem; }
.asis-fila.presente .asis-foto { box-shadow: 0 0 0 2px var(--bs-success); }

/* Tablas en el móvil (pantalla táctil estrecha): filas más altas y zonas de toque de 44 px para usarlas con el dedo.
   Solo móvil: en tablet y ordenador se quedan como están. */
@media (pointer: coarse) and (max-width: 767.98px) {
    .table > :not(caption) > * > *,
    .table-sm > :not(caption) > * > * { padding-top: .8rem; padding-bottom: .8rem; }
    .table td { line-height: 1.35; }
    .table td .btn, .table td .btn-sm, .table td .dropdown-toggle { min-width: 44px; min-height: 44px; }
    .table td a:not(.btn) { display: inline-block; padding: .2rem 0; }
    .table td .form-check-input { width: 1.4em; height: 1.4em; }
    .table td .form-select-sm, .table td .form-control-sm { min-height: 44px; font-size: 1rem; }
    .dropdown-menu .dropdown-item { padding-top: .7rem; padding-bottom: .7rem; }
    .dt-paging .page-link, .dt-paging .dt-paging-button { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
}

/* Mis jugadores: foto y ficha en la tarjeta (sin cursor de ampliar: la tarjeta abre la ficha) */
.mj-imagen { cursor: inherit; }

/* Plantilla: jugador lesionado (fondo rojo suave y franja roja a la izquierda) */
.table > tbody > tr.fila-lesionado > * { --bs-table-bg-type: var(--bs-danger-bg-subtle); }
.table > tbody > tr.fila-lesionado > :first-child { border-left: 4px solid var(--bs-danger); }
.text-none { text-transform: none; }

/* v4.4: importar fichas MatchReady */
.zona-soltar { cursor: pointer; border-color: var(--bs-border-color) !important; transition: background-color .15s; }
.zona-soltar:hover, .zona-soltar:focus-within { background-color: var(--bs-tertiary-bg); }
#pdfsMatchReady:focus-visible + * , .zona-soltar:has(+ #pdfsMatchReady:focus-visible) { outline: 2px solid var(--bs-primary); outline-offset: 2px; }

/* v4.4: súper buscador de Inicio */
.super-buscador .sb-icono { width: 2.25rem; height: 2.25rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.super-buscador #sbResultados { max-height: 32rem; overflow-y: auto; }
.super-buscador mark { padding: 0 .1em; }
.min-w-0 { min-width: 0; }
