/* ============================================================================
   FBF Panel — Barra de acciones y formulario de alta plegable
   ----------------------------------------------------------------------------
   Acompaña a assets/js/panel-registro.js. El módulo reordena el DOM que ya
   existe; esta hoja le da la forma. Se carga después de admin-refino.css y usa
   sus tokens (--ad-*), por eso no redefine radios ni elevaciones.
   ============================================================================ */

/* ---------- Barra de acciones ----------
   Queda entre el héroe y los listados. Es lo primero accionable de la pestaña
   y por eso se pega arriba al hacer scroll: dar de alta un registro no puede
   depender de volver al principio de una lista de 300 filas. */
.admin-workspace-body .rg-acciones {
  position: sticky;
  top: 92px;
  z-index: 12;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 16px;
  padding: 10px;
  border: 1px solid rgba(6, 44, 31, .10);
  border-radius: var(--ad-r-md, 18px);
  background: rgba(255, 255, 255, .92);
  box-shadow: var(--ad-e2, 0 2px 4px rgba(6,44,31,.07), 0 10px 24px rgba(6,44,31,.07));
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

.admin-workspace-body .rg-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 18px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: linear-gradient(135deg, #0e7d52, #14a067);
  color: #fff;
  font: inherit;
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: -.005em;
  cursor: pointer;
  box-shadow: var(--ad-e2, 0 2px 4px rgba(6,44,31,.07)), inset 0 1px 0 rgba(255, 255, 255, .26);
  transition: transform .2s cubic-bezier(.34, 1.35, .48, 1), filter .2s ease, box-shadow .2s ease;
}
.admin-workspace-body .rg-btn:hover { transform: translateY(-2px); filter: brightness(1.06); }
.admin-workspace-body .rg-btn:active { transform: translateY(0) scale(.98); }
.admin-workspace-body .rg-btn svg { flex: none; }

/* A partir del segundo botón de la misma pestaña (por ejemplo Selecciones,
   que tiene convocatoria y partido), el resto es secundario: una sola acción
   primaria por pantalla, si no ninguna lo parece. */
.admin-workspace-body .rg-btn ~ .rg-btn {
  background: #fff;
  color: #0b2b20;
  border-color: rgba(6, 44, 31, .16);
  box-shadow: none;
}
.admin-workspace-body .rg-btn ~ .rg-btn:hover { border-color: #14a067; color: #0e7d52; filter: none; }

/* ---------- Formulario de alta, plegado al final ---------- */
.admin-workspace-body .rg-alta {
  margin-top: 26px;
  padding: 18px;
  border: 1px solid rgba(20, 160, 103, .30);
  border-radius: var(--ad-r-lg, 24px);
  background: linear-gradient(160deg, rgba(20, 160, 103, .05), rgba(255, 255, 255, 0));
  scroll-margin-top: 150px;
}
.admin-workspace-body .rg-alta[hidden] { display: none !important; }

.admin-workspace-body .rg-alta > .section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 4px;
}

.admin-workspace-body .rg-cerrar {
  flex: none;
  min-height: 38px;
  padding: 0 14px;
  border: 1px solid rgba(6, 44, 31, .16);
  border-radius: 999px;
  background: #fff;
  color: #3a5548;
  font: inherit;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  transition: border-color .2s ease, color .2s ease;
}
.admin-workspace-body .rg-cerrar:hover { border-color: #c62d38; color: #c62d38; }

/* La apertura se anuncia con un movimiento corto. Un formulario de 24 campos
   que aparece de golpe desorienta: el desplazamiento vertical indica de dónde
   salió. */
.admin-workspace-body .rg-alta.is-open { animation: rg-abrir .28s cubic-bezier(.22, 1, .36, 1); }
@keyframes rg-abrir {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: none; }
}

/* ---------- Héroe más compacto ----------
   Los banners ocupaban casi media pantalla antes del primer dato útil. Se
   conservan —dan contexto a quien entra por primera vez— pero ceden altura. */
.admin-workspace-body .subpanel .management-hero,
.admin-workspace-body .subpanel .sport-command,
.admin-workspace-body .subpanel .ops-hero {
  padding: 20px 22px !important;
  margin-bottom: 0 !important;
}
.admin-workspace-body .subpanel .management-hero h2,
.admin-workspace-body .subpanel .sport-command h2,
.admin-workspace-body .subpanel .ops-hero h2 {
  font-size: clamp(19px, 2.2vw, 25px) !important;
  margin: 6px 0 5px !important;
}
.admin-workspace-body .subpanel .management-hero p,
.admin-workspace-body .subpanel .sport-command p,
.admin-workspace-body .subpanel .ops-hero p {
  font-size: 12px !important;
  line-height: 1.5 !important;
}

@media (max-width: 900px) {
  .admin-workspace-body .rg-acciones { top: 6px; }
  .admin-workspace-body .rg-btn { flex: 1 1 auto; justify-content: center; }
  /* En pantalla chica el párrafo del héroe es puro scroll antes del dato. */
  .admin-workspace-body .subpanel .management-hero p,
  .admin-workspace-body .subpanel .sport-command p,
  .admin-workspace-body .subpanel .ops-hero p { display: none !important; }
}

@media (pointer: coarse) {
  .admin-workspace-body .rg-cerrar { min-height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  .admin-workspace-body .rg-alta.is-open { animation: none; }
}

@media print {
  .admin-workspace-body .rg-acciones,
  .admin-workspace-body .rg-cerrar { display: none !important; }
  .admin-workspace-body .rg-alta[hidden] { display: none !important; }
  /* La impresión de Presidencia no necesita nada más aquí: la hoja del panel
     ya oculta barra lateral, chips de navegación y botones de acceso, y ya
     aplica break-inside a las tarjetas del informe. */
}

/* La región recibe el foco al abrirse (ver panel-registro.js). Sin esta regla
   el navegador dibujaría su anillo por defecto alrededor de todo el bloque,
   que aquí no aporta nada: el borde verde y la animación ya señalan el cambio. */
.admin-workspace-body .rg-alta:focus { outline: none; }
.admin-workspace-body .rg-alta:focus-visible { outline: 2px solid #0e7d52; outline-offset: 3px; }

/* ============================================================
   Registro de auditoría
   ------------------------------------------------------------
   Cada fila responde tres preguntas en el orden en que se hacen:
   QUÉ pasó (la etiqueta de acción), QUIÉN lo hizo, CUÁNDO.
   El color de la etiqueta hace que un borrado se distinga de un
   alta sin necesidad de leer: en una lista larga eso es lo que
   permite encontrar el movimiento que importa.
   ============================================================ */
.admin-workspace-body .audit-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 7px;
  border: 1px solid rgba(6, 44, 31, .09);
  border-radius: var(--ad-r-sm, 14px);
  background: #fff;
  box-shadow: var(--ad-e1, 0 1px 2px rgba(6,44,31,.06));
}

.admin-workspace-body .audit-act {
  flex: none;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
  background: rgba(6, 44, 31, .08);
  color: #556d61;
}
.admin-workspace-body .audit-act.is-create { background: rgba(20, 160, 103, .14); color: #0e7d52; }
.admin-workspace-body .audit-act.is-update { background: rgba(242, 183, 5, .20); color: #7a5a00; }
.admin-workspace-body .audit-act.is-delete { background: rgba(198, 45, 56, .12); color: #c62d38; }

.admin-workspace-body .audit-main { min-width: 0; }
.admin-workspace-body .audit-main strong {
  display: block;
  overflow: hidden;
  color: #0b2b20;
  font-size: 12.5px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.admin-workspace-body .audit-main small {
  display: block;
  margin-top: 2px;
  color: #556d61;
  font-size: 11px;
}
.admin-workspace-body .audit-row time {
  flex: none;
  color: #556d61;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}

@media (max-width: 620px) {
  /* La hora pasa debajo del nombre: en pantalla angosta, comprimir tres
     columnas deja el nombre de la persona cortado a la mitad. */
  .admin-workspace-body .audit-row { grid-template-columns: auto minmax(0, 1fr); }
  .admin-workspace-body .audit-row time { grid-column: 2; text-align: left; }
}

/* ============================================================
   Piso de legibilidad en los módulos operativos (ops-*)
   ------------------------------------------------------------
   Las clases .ops-* del panel bajan a 8, 9 y 9.5px en etiquetas,
   ayudas y descripciones. En versalitas —que ya son más difíciles
   de leer— eso deja de ser densidad y pasa a ser un obstáculo.
   Suben al piso de 10px del sistema, el mismo que ya rige en
   admin-refino.css. Se hace aquí, en la hoja que carga al final,
   porque esas reglas viven en el bloque <style> del dashboard.
   ============================================================ */
.admin-workspace-body .ops-chip { font-size: 10px; }
.admin-workspace-body .ops-check small,
.admin-workspace-body .ops-record p,
.admin-workspace-body .ops-help { font-size: 11px; line-height: 1.5; }
.admin-workspace-body .ops-form-title i { font-size: 11px; }
.admin-workspace-body .ops-metric span,
.admin-workspace-body .stadium-health span { font-size: 10px; }

/* El contador de palabras del editor y la nota del asistente son texto de
   apoyo que se lee mientras se escribe: no pueden ser los más chicos de la
   pantalla. */
.admin-workspace-body .char-count,
.admin-workspace-body .ops-ai-assist small { font-size: 11px; }

/* --- Últimos textos por debajo de AA en los editoriales ---
   Medidos sobre su fondo real. Los tonos claros de verde y dorado funcionan
   como fondo de etiqueta, pero no como color de texto encima de ese mismo
   fondo: el contraste cae por debajo de 4.5. Se oscurecen solo las letras;
   los fondos se conservan, así que la señal de color no cambia. */
.admin-workspace-body .ops-form-title i { color: #05613e; }          /* era #078456 → 4.22 */
.admin-workspace-body .ops-chip { color: #2f5548; }                   /* era #3e6255 → 4.35 */
.admin-workspace-body .post-type-tag { color: #0e6d43; font-size: 10px; } /* era #178a54 → 4.38 */

/* La etiqueta dorada de la vista previa vive dentro del bloque del editor y
   no toma la clase .ops-chip: se ajusta por su contenedor. */
.admin-workspace-body .editor-preview span[style*="f2b705"],
.admin-workspace-body .editor-preview .preview-tag { font-size: 10px; color: #7a5a00; }

/* ============================================================
   Barra de acción dentro de una tarjeta (enSitio)
   ------------------------------------------------------------
   Misma pieza que la barra de la pestaña, pero sin pegarse arriba:
   vive dentro de una tarjeta y quedaría flotando sobre el listado
   de al lado. Tampoco lleva fondo propio: la tarjeta ya lo pone.
   ============================================================ */
.admin-workspace-body .rg-acciones-inline {
  position: static;
  margin: 0 0 12px;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

/* Plegada en su sitio, la caja no necesita el marco de la versión que va al
   final de la pestaña: ya está dentro de una tarjeta con borde. */
.admin-workspace-body .rg-alta:not(:last-child) { margin-top: 0; }
.admin-workspace-body .rg-acciones-inline + .rg-alta {
  margin-top: 0;
  margin-bottom: 14px;
}
/* Sin encabezado propio que lo aloje, el botón de cerrar se coloca solo,
   alineado a la derecha del bloque. */
.admin-workspace-body .rg-alta > .rg-cerrar:first-child { float: right; margin-left: 12px; }

/* ============================================================
   Usuarios y roles
   ------------------------------------------------------------
   La pantalla que reparte permisos. Una cuenta con acceso total
   tenía exactamente el mismo aspecto que la de un hincha, y la
   diferencia estaba solo en qué opción del desplegable estaba
   elegida. La franja de color de la izquierda hace visible de
   un vistazo quién puede entrar al panel.
   ============================================================ */
.admin-workspace-body .users-hero-tag {
  flex: none;
  align-self: center;
  padding: 8px 14px;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 999px;
  background: rgba(255, 255, 255, .10);
  color: #b9f2d5;
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}

.admin-workspace-body .users-toolbar { grid-template-columns: minmax(200px, 1fr) minmax(170px, 250px); }

.admin-workspace-body .user-row {
  border-left: 3px solid transparent;
  padding-left: 12px;
}
.admin-workspace-body .user-row.is-total  { border-left-color: #c62d38; }
.admin-workspace-body .user-row.is-gestion { border-left-color: #0e7d52; }
.admin-workspace-body .user-row.is-club   { border-left-color: #7a5a00; }
.admin-workspace-body .user-row.is-hincha { border-left-color: rgba(6, 44, 31, .12); }

/* El tamaño de estas etiquetas (8px en la hoja del panel) ya lo corrige
   admin-refino.css con el piso de 10px; aquí solo se ajusta el color, que
   seguía en --text-muted. */
.admin-workspace-body .user-role-meta em { color: #3f5a4e; }
.admin-workspace-body .tier-tag.tier-total   { background: rgba(198, 45, 56, .12); color: #a8232d; }
.admin-workspace-body .tier-tag.tier-gestion { background: rgba(20, 160, 103, .14); color: #0b6742; }
.admin-workspace-body .tier-tag.tier-club    { background: rgba(242, 183, 5, .20); color: #6d5100; }

/* ============================================================
   Palpites y recompensas — piso de legibilidad
   ------------------------------------------------------------
   admin-predictions.css es una hoja propia del módulo y quedó
   fuera del piso de 10px que admin-refino.css aplica al resto
   del panel: sus etiquetas bajan a 9, 8 y hasta 7px, casi todas
   en versalitas. La leyenda debajo de cada número de la lista de
   participación —el texto que dice qué significa esa cifra— es
   la más chica de las tres.
   ============================================================ */
.admin-workspace-body .prediction-admin-hero span,
.admin-workspace-body .prediction-admin-badge,
.admin-workspace-body #panel-palpites .section-head small,
.admin-workspace-body .prediction-switch small,
.admin-workspace-body .prediction-admin-row small,
.admin-workspace-body .reward-admin-item small { font-size: 11px; line-height: 1.5; }

.admin-workspace-body .prediction-admin-kpi small,
.admin-workspace-body .prediction-admin-stat span,
.admin-workspace-body .reward-admin-status { font-size: 10px; }

/* Gris sobre gris: el estado «Borrador» quedaba en 4.1:1, justo por debajo
   del mínimo, y es la única señal de que una recompensa no está publicada. */
.admin-workspace-body .reward-admin-status.off { color: #4a5f55; }

/* ============================================================
   Documentos FBF
   ------------------------------------------------------------
   Dos altas —carpeta y documento— que ahora se despliegan en su
   sitio. La de carpeta vive en la columna angosta de la
   izquierda, así que el formulario tiene que caber en 260px.
   ============================================================ */
.admin-workspace-body #drive-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }

/* El aviso de modo consulta no es un estado de carga: es una condición
   permanente de quien está mirando. Se distingue del resto. */
.admin-workspace-body .drive-readonly {
  padding: 11px 14px !important;
  margin-bottom: 14px;
  border: 1px solid rgba(242, 183, 5, .38);
  border-radius: var(--ad-r-sm, 14px);
  background: rgba(242, 183, 5, .10);
  color: #6d5100 !important;
  font-size: 11.5px !important;
  text-align: left !important;
}
.admin-workspace-body .drive-readonly[hidden] { display: none !important; }

/* La barra de acción de la columna de carpetas es angosta: el botón ocupa
   todo el ancho en lugar de quedar suelto a la izquierda. */
.admin-workspace-body .drive-folders .rg-acciones-inline { display: block; }
.admin-workspace-body .drive-folders .rg-btn { width: 100%; justify-content: center; }

/* El alta de carpeta no puede heredar la rejilla de dos columnas del alta de
   documento: en 260px cada campo necesita la línea entera. */
.admin-workspace-body #rg-drive-folder { padding: 14px; }
.admin-workspace-body #drive-folder-form .form-field { margin-bottom: 10px; }
.admin-workspace-body #drive-folder-form .btn-save { width: 100%; }

/* La etiqueta de tipo (PDF, DOCX) es verde sobre verde muy claro: 3.79:1.
   Es el único indicador del formato antes de descargar. */
.admin-workspace-body .drive-file-icon { color: #0a5c3e; }

/* El formulario de subida sí es una rejilla, pero dentro del bloque plegado
   pierde el fondo y el borde propios: ya los pone el contenedor. */
.admin-workspace-body #rg-drive-upload .drive-drop {
  border: 0;
  padding: 0;
  background: none;
}

@media (max-width: 1100px) {
  .admin-workspace-body #drive-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .admin-workspace-body #drive-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ============================================================
   Presidencia
   ------------------------------------------------------------
   Mismo caso que Palpites: el módulo trae su propia hoja y quedó
   fuera del piso de 10px del sistema. Aquí pesa más que en otras
   pantallas, porque es la que se proyecta en una reunión y se
   imprime en papel.
   ============================================================ */
.admin-workspace-body .president-command-meta span,
.admin-workspace-body .executive-chart-legend span,
.admin-workspace-body .executive-money small,
.admin-workspace-body .executive-chart-summary span,
.admin-workspace-body .executive-source small { font-size: 10px; }

/* El estado «Disponible» de cada fuente medía 4.38:1 a 8px. Es lo único que
   dice si el número de al lado es de fiar. */
.admin-workspace-body .executive-source small { color: #0b6742; }
.admin-workspace-body .executive-source.offline small { color: #a8232d; }

/* ============================================================
   Centro de partidos (inicio del panel)
   ------------------------------------------------------------
   Tres columnas con una jerarquía deliberada: la primera —los
   resultados que faltan por cargar— es la única que se marca en
   rojo, porque es la única que bloquea algo. Mientras un partido
   jugado siga sin marcador, la clasificación que ve el hincha
   está incompleta.
   ============================================================ */
.admin-workspace-body .fixture-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}

.admin-workspace-body .fixture-col {
  min-width: 0;
  padding: 15px;
  border: 1px solid var(--border);
  border-radius: var(--ad-r-md, 18px);
  background: rgba(255, 255, 255, .78);
  box-shadow: var(--ad-e1, 0 1px 2px rgba(6,44,31,.06));
}
.admin-workspace-body .fixture-col > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 3px;
}
.admin-workspace-body .fixture-col > header strong { font-size: 13px; letter-spacing: -.01em; }
.admin-workspace-body .fx-badge {
  flex: none;
  min-width: 24px;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(6, 44, 31, .07);
  color: #2f5548;
  font-size: 11px;
  font-weight: 850;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.admin-workspace-body .fx-nota {
  margin: 0 0 11px;
  color: #3f5a4e;
  font-size: 11px;
  line-height: 1.45;
}

/* Solo cuando hay algo pendiente de verdad. Una columna vacía en rojo
   permanente deja de significar nada a la semana. */
.admin-workspace-body .fixture-col.es-alerta { border-color: rgba(198, 45, 56, .34); background: rgba(198, 45, 56, .035); }
.admin-workspace-body .fixture-col.es-alerta .fx-badge { background: rgba(198, 45, 56, .13); color: #a8232d; }

.admin-workspace-body .fx-lista { display: grid; gap: 6px; }
.admin-workspace-body .fx-fila {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 10px;
  width: 100%;
  padding: 9px 11px;
  border: 1px solid rgba(6, 44, 31, .08);
  border-radius: var(--ad-r-sm, 14px);
  background: #fff;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .18s ease, transform .18s ease;
}
.admin-workspace-body .fx-fila:hover { border-color: #14a067; transform: translateX(2px); }
.admin-workspace-body .fx-cuando {
  grid-column: 1 / -1;
  color: #3f5a4e;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.admin-workspace-body .fx-cuando.es-atraso { color: #a8232d; }
.admin-workspace-body .fx-equipos {
  min-width: 0;
  overflow: hidden;
  color: #0b2b20;
  font-size: 12.5px;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* El «vs» estaba en 4.08:1. Es texto pequeño y separa los dos nombres. */
.admin-workspace-body .fx-equipos i { margin: 0 6px; color: #536f63; font-style: normal; font-weight: 600; }
.admin-workspace-body .fx-comp {
  grid-column: 1 / -1;
  overflow: hidden;
  color: #3f5a4e;
  font-size: 10.5px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.admin-workspace-body .fx-marcador { font-size: 13px; font-weight: 900; color: #0b2b20; font-variant-numeric: tabular-nums; }
.admin-workspace-body .fx-vivo {
  align-self: center;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(198, 45, 56, .12);
  color: #a8232d;
  font-size: 10px;
  font-weight: 850;
  text-transform: uppercase;
  white-space: nowrap;
}

@media (max-width: 1000px) {
  .admin-workspace-body .fixture-board { grid-template-columns: 1fr; }
}
@media (pointer: coarse) {
  .admin-workspace-body .fx-fila { padding: 12px 11px; }
}

/* ============================================================
   Gráfico de evolución · Presidencia y Reportes
   ------------------------------------------------------------
   El eje de fechas salió del SVG. Dentro del SVG el texto se
   escala con el viewBox: a 375px de ancho, un font-size="11"
   sobre un viewBox de 720 se dibuja a ~4.7px. En HTML mide lo
   que dice el CSS, en cualquier pantalla.
   ============================================================ */
.admin-workspace-body .executive-chart-eje {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-top: 6px;
  padding: 0 2px;
  color: #3f5a4e;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.admin-workspace-body .executive-chart-eje b {
  color: #0b6742;
  font-size: 10px;
  font-weight: 850;
  text-align: center;
}

/* En el móvil el SVG quedaba en 94px de alto y las dos series se pisaban.
   Con una altura mínima la línea vuelve a leerse. */
.admin-workspace-body .executive-chart svg { width: 100%; height: auto; }
@media (max-width: 760px) {
  .admin-workspace-body .executive-chart svg { min-height: 150px; }
  /* El pico se cae de línea antes que las fechas, que son las que orientan. */
  .admin-workspace-body .executive-chart-eje { flex-wrap: wrap; }
  .admin-workspace-body .executive-chart-eje b { order: 3; width: 100%; text-align: left; }
}

/* La etiqueta de estado del pedido (Pagado / Pendiente / Ingresó) bajaba a
   9.5px en versalitas. Es lo que dice si una entrada está cobrada. */
.admin-workspace-body .bp-state { font-size: 10px; }

/* ============================================================
   Editor de zonas de clasificación
   ------------------------------------------------------------
   Panel plegable dentro de la fila de cada competencia, con el
   mismo aspecto que el de «Editar» que ya existía. Los colores
   son los MISMOS que pinta la tabla pública: lo que se elige
   aquí es exactamente lo que se ve allá.
   ============================================================ */
.admin-workspace-body .zn-panel {
  width: 100%;
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.admin-workspace-body .zn-panel[hidden] { display: none !important; }
.admin-workspace-body .zn-ayuda {
  margin: 0 0 12px;
  color: #3f5a4e;
  font-size: 11.5px;
  line-height: 1.5;
}
.admin-workspace-body .zn-lista { display: grid; gap: 6px; margin-bottom: 14px; }
.admin-workspace-body .zn-fila {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  padding: 9px 12px;
  border: 1px solid rgba(6, 44, 31, .09);
  border-radius: var(--ad-r-sm, 14px);
  background: #fff;
}
.admin-workspace-body .zn-color {
  width: 12px; height: 12px; border-radius: 3px; flex: none;
}
.admin-workspace-body .zn-color[data-zona="lib"]    { background: #2f7fe0; }
.admin-workspace-body .zn-color[data-zona="libpre"] { background: #e08a2f; }
.admin-workspace-body .zn-color[data-zona="sud"]    { background: #1f9d63; }
.admin-workspace-body .zn-color[data-zona="promo"]  { background: #7a5ad8; }
.admin-workspace-body .zn-color[data-zona="desc"]   { background: #d8443f; }
.admin-workspace-body .zn-texto strong { display: block; font-size: 12.5px; color: #0b2b20; }
.admin-workspace-body .zn-texto small { display: block; margin-top: 2px; color: #3f5a4e; font-size: 11px; }

.admin-workspace-body .zn-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
  padding: 14px;
  border: 1px solid rgba(20, 160, 103, .28);
  border-radius: var(--ad-r-md, 18px);
  background: rgba(20, 160, 103, .04);
}
.admin-workspace-body .zn-form .form-field:first-child { grid-column: 1 / -1; }
.admin-workspace-body .zn-form .btn-save { grid-column: 1 / -1; justify-self: start; }
.admin-workspace-body .zn-form [hidden] { display: none !important; }

@media (max-width: 760px) {
  .admin-workspace-body .zn-form { grid-template-columns: 1fr; }
}
@media (pointer: coarse) {
  .admin-workspace-body .zn-form input,
  .admin-workspace-body .zn-form select { font-size: 16px !important; }
  .admin-workspace-body .zn-fila .del-btn { min-height: 44px; padding: 0 16px; }
}

/* ============================================================
   Importar tabla desde imagen
   ------------------------------------------------------------
   Lo leído se muestra EDITABLE antes de guardar. Las filas cuyo
   total de puntos no cuadra con V×3+E se marcan en ámbar: puede
   ser un error de lectura o una sanción real, y quien decide es
   la persona, no el módulo.
   ============================================================ */
.admin-workspace-body .imp-panel {
  width: 100%;
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.admin-workspace-body .imp-panel[hidden] { display: none !important; }
.admin-workspace-body .imp-ayuda { margin: 0 0 12px; color: #3f5a4e; font-size: 11.5px; line-height: 1.5; }

.admin-workspace-body .imp-resumen {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px;
  margin: 14px 0 10px; padding: 11px 13px;
  border: 1px solid rgba(6, 44, 31, .1); border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .imp-resumen strong { font-size: 13px; color: #0b2b20; }
.admin-workspace-body .imp-resumen span { font-size: 11px; color: #3f5a4e; }
.admin-workspace-body .imp-conf { margin-left: auto; font-weight: 850; color: #0b6742; }
.admin-workspace-body .imp-conf.es-baja { color: #a8232d; }

.admin-workspace-body .imp-avisos {
  margin: 0 0 12px; padding: 11px 13px 11px 30px;
  border: 1px solid rgba(242, 183, 5, .4); border-radius: var(--ad-r-sm, 14px);
  background: rgba(242, 183, 5, .09); color: #6d5100; font-size: 11.5px; line-height: 1.55;
}

.admin-workspace-body .imp-grupo { margin-bottom: 16px; }
.admin-workspace-body .imp-grupo-label {
  display: flex; align-items: center; gap: 8px; margin-bottom: 7px;
  color: #3f5a4e; font-size: 10px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase;
}
.admin-workspace-body .imp-grupo-label input { max-width: 220px; min-height: 34px; }

/* La tabla puede tener más columnas que el ancho disponible: se desplaza
   dentro de su caja, nunca empuja la página. */
.admin-workspace-body .imp-tabla-wrap { overflow-x: auto; border: 1px solid rgba(6,44,31,.1); border-radius: var(--ad-r-sm, 14px); }
.admin-workspace-body .imp-tabla { width: 100%; min-width: 560px; border-collapse: collapse; background: #fff; }
.admin-workspace-body .imp-tabla th {
  padding: 8px 6px; background: rgba(6, 44, 31, .05); color: #3f5a4e;
  font-size: 10px; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; text-align: center;
}
.admin-workspace-body .imp-tabla td { padding: 5px 6px; text-align: center; border-top: 1px solid rgba(6,44,31,.07); }
.admin-workspace-body .imp-tabla input {
  width: 100%; min-width: 46px; min-height: 34px; padding: 0 7px; text-align: center;
  border: 1px solid rgba(6,44,31,.14); border-radius: 9px; background: #fff; font: inherit; font-size: 12px;
}
.admin-workspace-body .imp-tabla td:nth-child(2) input { min-width: 170px; text-align: left; }
.admin-workspace-body .imp-pts { font-weight: 900; color: #0b2b20; font-variant-numeric: tabular-nums; }
.admin-workspace-body .imp-nota { color: #a8232d; font-size: 10.5px; white-space: nowrap; }
.admin-workspace-body .imp-fila.es-duda td { background: rgba(242, 183, 5, .11); }

.admin-workspace-body .imp-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 6px; }
.admin-workspace-body .imp-nota-final { color: #3f5a4e; font-size: 11px; }

@media (pointer: coarse) {
  .admin-workspace-body .imp-tabla input,
  .admin-workspace-body .imp-panel input { font-size: 16px !important; min-height: 44px; }
}

/* ============================================================
   Agenda de partidos · tres bloques
   ------------------------------------------------------------
   «Resultados por cargar» es el único que se marca, y solo
   cuando tiene filas: son partidos ya jugados sin marcador, y
   mientras sigan ahí la clasificación que ve el hincha está
   incompleta. Los otros dos son informativos.
   ============================================================ */
.admin-workspace-body .match-toolbar { grid-template-columns: minmax(180px, 1.2fr) minmax(170px, 1fr) minmax(150px, .8fr); }

.admin-workspace-body .match-bloque { margin-bottom: 22px; }
.admin-workspace-body .match-bloque > header {
  display: flex; align-items: center; gap: 10px; margin-bottom: 2px;
}
.admin-workspace-body .match-bloque > header h3 {
  margin: 0; font-size: 13.5px; letter-spacing: -.01em; color: #0b2b20;
}
.admin-workspace-body .match-bloque-n {
  min-width: 24px; padding: 3px 8px; border-radius: 999px;
  background: rgba(6, 44, 31, .07); color: #2f5548;
  font-size: 11px; font-weight: 850; text-align: center; font-variant-numeric: tabular-nums;
}
.admin-workspace-body .match-bloque-nota {
  margin: 0 0 11px; color: #3f5a4e; font-size: 11px; line-height: 1.45;
}
.admin-workspace-body .match-bloque[data-bloque="cargar"] .match-bloque-n {
  background: rgba(198, 45, 56, .13); color: #a8232d;
}
.admin-workspace-body .match-bloque[data-bloque="cargar"] > header h3 { color: #a8232d; }

/* El desplegable de categoría se apaga al elegir una competencia concreta:
   ahí ya no hay dos criterios que cruzar. */
.admin-workspace-body #match-filter-category:disabled { opacity: .45; cursor: not-allowed; }

/* La línea que dice competencia y fecha estaba en 9.5px. Con seis
   competencias conviviendo en la misma agenda, es justo lo que distingue un
   partido de Sub-15 de uno de la División Profesional. */
.admin-workspace-body .match-caption { font-size: 10px; }

@media (max-width: 900px) {
  .admin-workspace-body .match-toolbar { grid-template-columns: 1fr; }
}
@media (pointer: coarse) {
  .admin-workspace-body .match-toolbar input,
  .admin-workspace-body .match-toolbar select { font-size: 16px !important; }
}

/* Aviso de lista recortada. Es una nota sobre el dato que se está viendo, no
   un mensaje de estado: va discreta, debajo de la lista. */
.admin-workspace-body .lista-tope {
  margin: 10px 2px 0;
  color: #3f5a4e;
  font-size: 11px;
  font-style: italic;
}

@media (max-width: 760px) {
  .admin-workspace-body .users-toolbar { grid-template-columns: 1fr; }
  .admin-workspace-body .users-hero-tag { align-self: flex-start; }
}

/* En pantalla táctil, un campo por debajo de 16px hace que el navegador
   acerque la página al enfocarlo, y después de ese zoom la vista queda más
   ancha que la pantalla. El desplegable de rol llega con font-size en el
   atributo style, así que hace falta !important para alcanzarlo.
   Se limita a `pointer: coarse` para no engordar la tabla en el escritorio,
   que es donde se administra el padrón la mayor parte del tiempo. */
@media (pointer: coarse) {
  .admin-workspace-body .role-select,
  .admin-workspace-body #panel-palpites select,
  .admin-workspace-body #panel-palpites textarea,
  .admin-workspace-body #panel-palpites input { font-size: 16px !important; }
  .admin-workspace-body .role-select { min-height: 44px; }
  .admin-workspace-body #panel-usuarios .btn-mini,
  .admin-workspace-body #panel-palpites .btn-mini,
  .admin-workspace-body #panel-drive .btn-mini,
  .admin-workspace-body .prediction-admin-actions button { min-height: 44px; }
  /* .del-btn medía 26px: el objetivo más pequeño de la pantalla era, además,
     el que borra el documento y su archivo. */
  .admin-workspace-body #panel-drive .del-btn { min-height: 44px; padding: 0 16px; }
  .admin-workspace-body #panel-drive input,
  .admin-workspace-body #panel-drive select { font-size: 16px !important; }
}

/* ============================================================
   Cargar resultados desde imagen
   ------------------------------------------------------------
   Guardar un partido finalizado no suma a la tabla: la
   reconstruye entera desde los partidos registrados. El bloque
   de impacto existe para que eso se vea ANTES de guardar, con
   los clubes que desaparecen escritos con su nombre.
   ============================================================ */
.admin-workspace-body .res-campos {
  display: flex; flex-wrap: wrap; gap: 14px; margin: 14px 0 12px;
}
.admin-workspace-body .res-campo {
  display: flex; flex-direction: column; gap: 5px;
  color: #3f5a4e; font-size: 10px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase;
}
.admin-workspace-body .res-campo input,
.admin-workspace-body .res-campo select {
  min-height: 36px; min-width: 180px; padding: 0 9px;
  border: 1px solid rgba(6,44,31,.14); border-radius: 9px; background: #fff;
  font: inherit; font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; color: #0b2b20;
}
.admin-workspace-body .res-campo small {
  font-size: 10px; font-weight: 500; letter-spacing: 0; text-transform: none; color: #3f5a4e;
}

.admin-workspace-body .res-tabla { min-width: 720px; }
.admin-workspace-body .res-tabla td:nth-child(1) input,
.admin-workspace-body .res-tabla td:nth-child(4) input { min-width: 150px; text-align: left; }
.admin-workspace-body .res-tabla td:nth-child(2) input,
.admin-workspace-body .res-tabla td:nth-child(3) input { min-width: 52px; font-weight: 850; }
.admin-workspace-body .res-tabla td:nth-child(5) input { min-width: 190px; }
/* Un partido que ya existe se actualiza en vez de duplicarse: se distingue en
   verde para que no se confunda con las filas con problema, que van en ámbar. */
.admin-workspace-body .res-fila.es-existente td { background: rgba(11, 103, 66, .07); }
.admin-workspace-body .res-fila.es-existente .imp-nota { color: #0b6742; }

.admin-workspace-body .res-impacto {
  margin: 16px 0 6px; padding: 15px 17px;
  border: 1px solid rgba(6,44,31,.14); border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .res-impacto.es-peligro {
  border-color: rgba(168, 35, 45, .35); background: rgba(168, 35, 45, .05);
}
.admin-workspace-body .res-impacto.es-bloqueo {
  border-color: rgba(242, 183, 5, .5); background: rgba(242, 183, 5, .1); color: #6d5100;
  font-size: 12px; line-height: 1.55;
}
.admin-workspace-body .res-impacto h4 {
  margin: 0 0 10px; font-size: 13px; font-weight: 900; color: #0b2b20;
}
.admin-workspace-body .res-impacto-lista {
  margin: 0 0 10px; padding-left: 19px; color: #3f5a4e; font-size: 12px; line-height: 1.7;
}
.admin-workspace-body .res-impacto-lista strong { color: #0b2b20; }
.admin-workspace-body .res-impacto-explica {
  margin: 0 0 10px; color: #3f5a4e; font-size: 12px; line-height: 1.6;
}
.admin-workspace-body .res-impacto.es-peligro .res-impacto-explica strong { color: #8f1d26; }
.admin-workspace-body .res-impacto-clubes {
  margin: 0 0 12px; padding: 10px 12px;
  border-radius: 10px; background: rgba(168, 35, 45, .1);
  color: #8f1d26; font-size: 12px; font-weight: 700; line-height: 1.7;
}
.admin-workspace-body .res-confirmo {
  display: flex; align-items: flex-start; gap: 9px; margin: 0 0 13px;
  color: #8f1d26; font-size: 12px; font-weight: 700; line-height: 1.5; cursor: pointer;
}
.admin-workspace-body .res-confirmo input { width: 18px; height: 18px; margin-top: 1px; flex: none; accent-color: #8f1d26; }

@media (pointer: coarse) {
  .admin-workspace-body .res-campo input,
  .admin-workspace-body .res-campo select { font-size: 16px !important; min-height: 44px; }
  .admin-workspace-body .res-confirmo input { width: 22px; height: 22px; }
}

/* ============================================================
   Partidas · categorías separadas de verdad
   ------------------------------------------------------------
   El problema que esto resuelve: cargar un partido de Sub-17
   terminaba mezclado con la División Profesional, tanto al
   crearlo como al leer la agenda. Dos partidos de categorías
   distintas se veían idénticos y solo la letra chica los
   distinguía.

   Cada categoría tiene ahora un tono propio que se repite en
   la pestaña, en el borde del grupo y en el aviso del
   formulario. El color acompaña al texto, nunca lo reemplaza:
   quien no distinga los tonos sigue leyendo el nombre de la
   categoría en todos lados.
   ============================================================ */
.admin-workspace-body {
  --cat-profesional: #0b6742;
  --cat-femenino:    #a4306e;
  --cat-sub:         #1d5fa8;
  --cat-futsal:      #b4601a;
  --cat-otra:        #5a6b62;
}
/* Un solo lugar decide el tono de cada categoría. */
.admin-workspace-body [data-tono]              { --tono: var(--cat-otra); }
.admin-workspace-body [data-tono="profesional"]{ --tono: var(--cat-profesional); }
.admin-workspace-body [data-tono="femenino"]   { --tono: var(--cat-femenino); }
.admin-workspace-body [data-tono^="sub-"]      { --tono: var(--cat-sub); }
.admin-workspace-body [data-tono="futsal"],
.admin-workspace-body [data-tono="playa"]      { --tono: var(--cat-futsal); }

/* ---- Pestañas de categoría ---- */
.admin-workspace-body .cat-tabs {
  display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 14px;
}
.admin-workspace-body .cat-tabs button {
  display: inline-flex; align-items: center; gap: 7px;
  min-height: 38px; padding: 0 15px;
  border: 1px solid rgba(6,44,31,.16); border-radius: 999px;
  background: #fff; color: #3f5a4e;
  font: inherit; font-size: 12px; font-weight: 800; cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.admin-workspace-body .cat-tabs button i {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px;
  /* #3f5a4e sobre este gris daba 4.0:1. La cuenta es un dato, no decoracion:
     tiene que leerse. */
  background: rgba(6,44,31,.09); color: #22382c;
  font-size: 10px; font-weight: 900; font-style: normal; font-variant-numeric: tabular-nums;
}
.admin-workspace-body .cat-tabs button:hover { border-color: var(--tono, #0b6742); color: var(--tono, #0b6742); }
.admin-workspace-body .cat-tabs button.active {
  background: var(--tono, #0b2b20); border-color: var(--tono, #0b2b20); color: #fff;
}
/* Aclarar el tono con blanco translucido dejaba el numero en 4.0:1 sobre la
   pestana activa. Oscurecer en vez de aclarar conserva el blanco legible en
   todos los tonos, incluido el mas claro. */
.admin-workspace-body .cat-tabs button.active i { background: rgba(0,0,0,.28); color: #fff; }

/* ---- Aviso de alcance del formulario ---- */
.admin-workspace-body .match-scope {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px;
  margin: 0 0 16px; padding: 13px 16px;
  border: 1px solid rgba(6,44,31,.12); border-left: 4px solid var(--tono, var(--cat-otra));
  border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .match-scope strong { font-size: 13px; font-weight: 900; color: var(--tono, #0b2b20); }
.admin-workspace-body .match-scope span   { font-size: 12px; color: #3f5a4e; }
.admin-workspace-body .match-scope[data-cat="profesional"] { --tono: var(--cat-profesional); }
.admin-workspace-body .match-scope[data-cat="femenino"]    { --tono: var(--cat-femenino); }
.admin-workspace-body .match-scope[data-cat^="sub-"]       { --tono: var(--cat-sub); }
.admin-workspace-body .match-scope[data-cat="futsal"],
.admin-workspace-body .match-scope[data-cat="playa"]       { --tono: var(--cat-futsal); }

/* ---- Grupo de competencia dentro de cada bloque ---- */
.admin-workspace-body .match-comp-group {
  margin: 0 0 18px; padding: 0 0 2px 13px;
  border-left: 3px solid var(--tono, var(--cat-otra));
}
.admin-workspace-body .match-comp-head {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin: 0 0 10px;
}
.admin-workspace-body .match-comp-head strong { font-size: 13px; font-weight: 900; color: #0b2b20; }
.admin-workspace-body .match-comp-cat {
  padding: 3px 9px; border-radius: 999px;
  background: var(--tono, var(--cat-otra)); color: #fff;
  font-size: 10px; font-weight: 900; letter-spacing: .05em; text-transform: uppercase;
}
.admin-workspace-body .match-comp-n {
  margin-left: auto; padding: 2px 9px; border-radius: 999px;
  background: rgba(6,44,31,.08); color: #3f5a4e;
  font-size: 11px; font-weight: 850; font-variant-numeric: tabular-nums;
}

@media (pointer: coarse) {
  .admin-workspace-body .cat-tabs button { min-height: 44px; font-size: 13px; }
}

/* ============================================================
   Galería de la noticia
   ------------------------------------------------------------
   El orden de las filas ES el orden de publicación, así que
   las flechas de mover tienen que ser tan visibles como el
   campo de la URL: son parte del contenido, no un extra.
   ============================================================ */
.admin-workspace-body .gal-field > label small {
  display: block; margin-top: 3px;
  font-size: 10.5px; font-weight: 500; letter-spacing: 0; text-transform: none; color: #3f5a4e;
}
.admin-workspace-body .gal-lista { display: flex; flex-direction: column; gap: 10px; margin: 10px 0; }
.admin-workspace-body .gal-lista:empty { margin: 0; }

.admin-workspace-body .gal-item {
  padding: 12px 13px;
  border: 1px solid rgba(6,44,31,.14); border-left: 3px solid #0b6742;
  border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .gal-item[data-tipo="video"] { border-left-color: #a8232d; }

.admin-workspace-body .gal-item-cab {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 9px;
}
.admin-workspace-body .gal-item-tipo {
  padding: 3px 10px; border-radius: 999px; background: rgba(6,44,31,.08); color: #22382c;
  font-size: 10px; font-weight: 900; letter-spacing: .05em; text-transform: uppercase;
}
.admin-workspace-body .gal-item[data-tipo="video"] .gal-item-tipo { background: rgba(168,35,45,.1); color: #8f1d26; }

.admin-workspace-body .gal-item-mover { display: flex; gap: 6px; }
.admin-workspace-body .gal-item-mover button {
  width: 30px; height: 30px; padding: 0;
  border: 1px solid rgba(6,44,31,.16); border-radius: 9px; background: #fff;
  color: #3f5a4e; font-size: 11px; line-height: 1; cursor: pointer;
}
.admin-workspace-body .gal-item-mover button:hover { border-color: #0b6742; color: #0b6742; }
.admin-workspace-body .gal-item-mover .gal-quitar { font-size: 16px; color: #a8232d; }
.admin-workspace-body .gal-item-mover .gal-quitar:hover { border-color: #a8232d; background: rgba(168,35,45,.07); }

.admin-workspace-body .gal-item input {
  width: 100%; min-height: 36px; padding: 0 10px; margin-top: 7px;
  border: 1px solid rgba(6,44,31,.14); border-radius: 9px; background: #fff;
  font: inherit; font-size: 12px; color: #0b2b20;
}
.admin-workspace-body .gal-item input:first-of-type { margin-top: 0; }

.admin-workspace-body .gal-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.admin-workspace-body .gal-cuenta { margin-left: auto; color: #3f5a4e; font-size: 11px; font-weight: 700; }

@media (pointer: coarse) {
  .admin-workspace-body .gal-item input { font-size: 16px !important; min-height: 44px; }
  .admin-workspace-body .gal-item-mover button { width: 40px; height: 40px; }
}

/* ============================================================
   Importar calendario desde COMET
   ------------------------------------------------------------
   El paso de correspondencia es el que decide si la
   importacion sale bien, asi que ocupa el espacio que merece:
   cada campo del sistema con su desplegable, y marcado cual
   es obligatorio.
   ============================================================ */
.admin-workspace-body .cmt-mapa {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(232px, 1fr));
  gap: 11px; margin: 12px 0 14px;
}
.admin-workspace-body .cmt-campo { display: flex; flex-direction: column; gap: 5px; }
.admin-workspace-body .cmt-campo > span {
  font-size: 10px; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; color: #3f5a4e;
}
.admin-workspace-body .cmt-campo > span i {
  font-style: normal; color: #8f1d26; letter-spacing: 0; text-transform: none; font-weight: 700;
}
.admin-workspace-body .cmt-campo select {
  min-height: 36px; padding: 0 9px;
  border: 1px solid rgba(6,44,31,.14); border-radius: 9px; background: #fff;
  font: inherit; font-size: 12px; color: #0b2b20;
}

.admin-workspace-body .cmt-conteo {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin: 12px 0 9px;
}
.admin-workspace-body .cmt-conteo span {
  padding: 4px 11px; border-radius: 999px;
  background: rgba(6,44,31,.07); color: #22382c; font-size: 11px; font-weight: 800;
}
.admin-workspace-body .cmt-conteo .ok  { background: rgba(11,103,66,.12); color: #0b6742; }
.admin-workspace-body .cmt-conteo .mal { background: rgba(168,35,45,.11); color: #8f1d26; }

.admin-workspace-body .cmt-tabla { min-width: 760px; }
.admin-workspace-body .cmt-tabla td { text-align: left; }
.admin-workspace-body .cmt-tabla td:first-child { text-align: center; color: #6a8175; font-variant-numeric: tabular-nums; }
.admin-workspace-body .cmt-tabla tr.es-duda td { background: rgba(242,183,5,.11); }
.admin-workspace-body .cmt-tabla tr.es-existente td { background: rgba(11,103,66,.06); }
.admin-workspace-body .cmt-tabla tr.es-existente .imp-nota { color: #0b6742; }

.admin-workspace-body .cmt-aviso {
  margin: 9px 0 0; padding: 10px 12px;
  border: 1px solid rgba(242,183,5,.42); border-radius: var(--ad-r-sm, 14px);
  background: rgba(242,183,5,.09); color: #6d5100; font-size: 11.5px; line-height: 1.55;
}

@media (pointer: coarse) {
  .admin-workspace-body .cmt-campo select { font-size: 16px !important; min-height: 44px; }
}

/* ---- Ayuda del asistente en la importación ----
   La certeza se ve en el color del borde, pero también está escrita: quien
   no distinga los tonos igual la lee. Solo las de certeza alta llegan
   marcadas; media y baja se marcan a mano a propósito. */
.admin-workspace-body .cmt-ia {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin: 10px 0 0; padding: 11px 13px;
  border: 1px solid rgba(6,44,31,.14); border-left: 3px solid #1d5fa8;
  border-radius: var(--ad-r-sm, 14px); background: #f6f9fc;
}
.admin-workspace-body .cmt-ia strong { display: block; font-size: 12.5px; color: #0b2b20; }
.admin-workspace-body .cmt-ia small { display: block; margin-top: 3px; font-size: 11px; color: #3f5a4e; line-height: 1.5; }
.admin-workspace-body .cmt-ia button { margin-left: auto; }

.admin-workspace-body .cmt-props { margin-top: 11px; }
.admin-workspace-body .cmt-props-tit {
  margin: 0 0 8px; font-size: 11px; font-weight: 850;
  letter-spacing: .05em; text-transform: uppercase; color: #3f5a4e;
}
.admin-workspace-body .cmt-prop {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px;
  margin-bottom: 7px; padding: 9px 12px;
  border: 1px solid rgba(6,44,31,.12); border-left: 3px solid #8a9a92;
  border-radius: 10px; background: #fff; cursor: pointer;
}
.admin-workspace-body .cmt-prop.cert-alta  { border-left-color: #0b6742; }
.admin-workspace-body .cmt-prop.cert-media { border-left-color: #b8860b; }
.admin-workspace-body .cmt-prop.cert-baja  { border-left-color: #a8232d; }
.admin-workspace-body .cmt-prop input { width: 18px; height: 18px; flex: none; accent-color: #0b6742; }
.admin-workspace-body .cmt-prop-de { font-size: 12.5px; font-weight: 700; color: #8f1d26; }
.admin-workspace-body .cmt-prop-flecha { color: #6a8175; }
.admin-workspace-body .cmt-prop-a { font-size: 12.5px; font-weight: 800; color: #0b6742; }
.admin-workspace-body .cmt-prop em {
  margin-left: auto; font-style: normal; font-size: 10.5px; color: #3f5a4e;
}
@media (pointer: coarse) {
  .admin-workspace-body .cmt-prop input { width: 22px; height: 22px; }
}

/* ============================================================================
   Importador de padrón COMET · jugadores, clubes y cuerpo técnico
   ----------------------------------------------------------------------------
   Se apoya en los colores que ya usa el resto del panel, así que el contraste
   viene heredado de una paleta ya comprobada. Ninguna letra baja de 10px.
   ============================================================================ */

.admin-workspace-body .imp-mapa {
  margin: 14px 0; padding: 13px; border: 1px solid rgba(6, 44, 31, .12);
  border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .imp-mapa legend {
  padding: 0 6px; font-size: 11.5px; font-weight: 850; color: #0b2b20;
}
.admin-workspace-body .imp-mapa-grid {
  display: grid; gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.admin-workspace-body .imp-req { color: #a8232d; font-weight: 850; }

/* Etiquetas de estado por fila */
.admin-workspace-body .imp-chip {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  font-size: 10px; font-weight: 850; letter-spacing: .02em; white-space: nowrap;
}
.admin-workspace-body .imp-chip-ok    { background: rgba(11, 103, 66, .12);  color: #0b6742; }
.admin-workspace-body .imp-chip-info  { background: rgba(6, 44, 31, .09);    color: #1d4a3a; }
.admin-workspace-body .imp-chip-warn  { background: rgba(242, 183, 5, .18);  color: #6d5100; }
.admin-workspace-body .imp-chip-error { background: rgba(168, 35, 45, .11);  color: #a8232d; }

.admin-workspace-body .imp-motivo,
.admin-workspace-body .imp-nota {
  display: block; margin-top: 3px; font-size: 10px; line-height: 1.4; color: #3f5a4e;
}
.admin-workspace-body .imp-nota { color: #6d5100; font-style: italic; }

/* Las filas que no se van a importar se atenúan, pero NO se ocultan: quien
   importa tiene que poder ver qué queda fuera y por qué. El color no es la
   única señal — la etiqueta lo dice con palabras. */
.admin-workspace-body .imp-fila-error td,
.admin-workspace-body .imp-fila-repetido td { background: rgba(6, 44, 31, .035); }
.admin-workspace-body .imp-tabla td { vertical-align: top; }
.admin-workspace-body .imp-tabla td:first-child { color: #3f5a4e; font-size: 10px; }

/* Paginación */
.admin-workspace-body .imp-paginas {
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
  gap: 10px; margin: 10px 0 4px;
}
.admin-workspace-body .imp-paginas-txt { font-size: 11px; color: #3f5a4e; }
.admin-workspace-body .imp-paginas-txt strong { color: #0b2b20; }
.admin-workspace-body .imp-paginas button[disabled] { opacity: .45; cursor: default; }

/* Ayuda de la IA y emparejado a mano */
.admin-workspace-body .imp-ia {
  margin: 12px 0; padding: 12px 13px;
  border: 1px solid rgba(242, 183, 5, .4); border-radius: var(--ad-r-sm, 14px);
  background: rgba(242, 183, 5, .07);
}
.admin-workspace-body .imp-ia p { margin: 0 0 9px; font-size: 11.5px; line-height: 1.55; color: #6d5100; }
.admin-workspace-body .imp-manual {
  display: grid; gap: 9px; margin-top: 11px;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.admin-workspace-body .imp-cuenta { font-weight: 400; color: #3f5a4e; font-size: 10px; }

.admin-workspace-body .imp-props {
  margin: 11px 0 0; padding: 11px; border: 1px solid rgba(6, 44, 31, .12);
  border-radius: var(--ad-r-sm, 14px); background: #fff;
}
.admin-workspace-body .imp-props legend { padding: 0 6px; font-size: 11px; font-weight: 850; color: #0b2b20; }
.admin-workspace-body .imp-prop {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 6px 4px; font-size: 11.5px; line-height: 1.45; color: #1d4a3a;
  border-top: 1px solid rgba(6, 44, 31, .07); cursor: pointer;
}
.admin-workspace-body .imp-prop:first-of-type { border-top: 0; }
.admin-workspace-body .imp-prop input { margin-top: 2px; flex: none; }
.admin-workspace-body .imp-certeza {
  padding: 1px 7px; border-radius: 999px; font-size: 10px; font-weight: 850;
}
.admin-workspace-body .imp-certeza-alta  { background: rgba(11, 103, 66, .12); color: #0b6742; }
.admin-workspace-body .imp-certeza-media { background: rgba(242, 183, 5, .18); color: #6d5100; }
.admin-workspace-body .imp-certeza-baja  { background: rgba(168, 35, 45, .11); color: #a8232d; }

.admin-workspace-body .imp-confirmar { margin-top: 14px; }
.admin-workspace-body .imp-confirmar .imp-ayuda { margin: 8px 0 0; }
.admin-workspace-body .imp-progreso {
  margin-top: 10px; padding: 9px 12px; border-radius: var(--ad-r-sm, 14px);
  background: rgba(6, 44, 31, .06); font-size: 11.5px; font-weight: 700; color: #0b2b20;
}

.admin-workspace-body .imp-aviso {
  margin: 11px 0; padding: 10px 12px; border-radius: var(--ad-r-sm, 14px);
  font-size: 11.5px; line-height: 1.5; border: 1px solid transparent;
}
.admin-workspace-body .imp-aviso-ok    { background: rgba(11, 103, 66, .09);  border-color: rgba(11, 103, 66, .3);  color: #0b6742; }
.admin-workspace-body .imp-aviso-info  { background: rgba(6, 44, 31, .06);    border-color: rgba(6, 44, 31, .16);   color: #1d4a3a; }
.admin-workspace-body .imp-aviso-error { background: rgba(168, 35, 45, .08);  border-color: rgba(168, 35, 45, .32); color: #a8232d; }

/* Visible solo para lectores de pantalla: el <caption> de la tabla, que
   explica de qué es la previa sin ocupar espacio en la página. */
.admin-workspace-body .sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Que el foco del teclado se vea siempre dentro del importador. */
.admin-workspace-body .imp-panel :focus-visible {
  outline: 2px solid #0b6742; outline-offset: 2px;
}

@media (max-width: 640px) {
  .admin-workspace-body .imp-mapa-grid,
  .admin-workspace-body .imp-manual { grid-template-columns: 1fr; }
  .admin-workspace-body .imp-paginas { justify-content: space-between; }
}
