/* ============================================================
   CBAT Digital Platform — Design Tokens v1 (claro)
   ------------------------------------------------------------
   Arquitectura en 3 niveles:
     1. Primitivas (--cbat-*): paleta del club y escalas brutas.
     2. Semánticas (--primary, --bg, --text, ...): MISMOS nombres
        que ya consumen app.css y los CSS de área. Cambiar un valor
        aquí retematiza toda la plataforma sin tocar markup.
     3. Componente (--topbar-h, --radius-*, --shadow-*, ...).

   Este archivo es la ÚNICA fuente de verdad de la paleta.
   app.css ya no define :root — tokens.css debe cargarse ANTES.

   Identidad: navy #071432 + dorado #F1C84C (colores RRSS club).
   Criterio: admin claro, denso, fino (referencia NobleUI light).
   ============================================================ */
:root {
  /* ---- 1 · PRIMITIVAS -------------------------------------- */

  /* Navy del club (navy-950 = #071432, el de las tarjetas RRSS) */
  --cbat-navy-950: #071432;
  --cbat-navy-900: #0d1d40;
  --cbat-navy-800: #142950;
  --cbat-navy-700: #1d3a66;
  --cbat-navy-600: #2a4d7e;
  --cbat-navy-500: #3a6094;
  --cbat-navy-400: #5e80ab;
  --cbat-navy-300: #91a9c8;
  --cbat-navy-200: #c3d1e3;
  --cbat-navy-100: #dfe7f1;
  --cbat-navy-050: #eef3f9;

  /* Dorado del club (gold-400 = #F1C84C, el de las tarjetas RRSS) */
  --cbat-gold-600: #b58a14;
  --cbat-gold-500: #d9a92c;
  --cbat-gold-400: #f1c84c;
  --cbat-gold-100: #faf0d2;
  --cbat-gold-050: #fdf8e9;

  /* Grises fríos */
  --cbat-gray-900: #0f172a;
  --cbat-gray-700: #334155;
  --cbat-gray-600: #475569;
  --cbat-gray-500: #64748b;
  --cbat-gray-400: #94a3b8;
  --cbat-gray-300: #cbd5e1;
  --cbat-gray-200: #e2e8f0;
  --cbat-gray-100: #eef2f6;
  --cbat-gray-050: #f8fafc;

  /* ---- 2 · SEMÁNTICAS (nombres heredados, NO renombrar) ----- */
  --primary: var(--cbat-navy-700);
  --primary-dark: var(--cbat-navy-900);
  --primary-soft: var(--cbat-navy-050);
  --bg: #f4f6fa;
  --card: #ffffff;
  --text: #182338;
  --muted: #586477;   /* 5,54:1 sobre --bg · antes #5f6b81 daba 4,97:1, justo en el límite AA */
  --border: #e4e9f1;

  /* Estados (valores previos de app.css, sin cambio de criterio) */
  --green: #16803c;
  --green-bg: #e8f7ed;
  --orange: #b56b00;
  --orange-bg: #fff4df;
  --red: #ba1a1a;
  --red-bg: #fdecec;
  --blue: #1d4ed8;                 /* info/enlace — base para derivar fondos y bordes con color-mix */
  --blue-bg: var(--cbat-navy-050);

  /* Calendario — paleta CATEGÓRICA (configurable por club desde Sistema → Configuración).
     NO son colores de marca: cada uno identifica una cosa (tipo de evento / sede / día) y debe
     mantenerse distinto. Las celdas y tintes claros se DERIVAN en el CSS con color-mix desde estos
     bases, así que el club cambia el color base y todo lo demás sigue. Defaults = valores históricos. */
  --cal-training: #2563eb;   /* entreno / tecnificación */
  --cal-match:    #16a34a;   /* partido / amistoso */
  --cal-block:    #dc2626;   /* bloqueo / mantenimiento */
  --cal-event:    #ea580c;   /* evento / otros */
  --cal-pending:  #f59e0b;   /* pendiente / borrador */
  --cal-conflict: #d6437a;   /* conflicto de reserva */
  /* Sedes (8) — color base por pabellón; las celdas se derivan (color-mix) */
  --cal-sede-1: #2f6fd0; --cal-sede-2: #2ea36a; --cal-sede-3: #d79324; --cal-sede-4: #7b46d0;
  --cal-sede-5: #1f97a5; --cal-sede-6: #d6437a; --cal-sede-7: #6b7686; --cal-sede-8: #4a52c9;
  /* Días de la semana — tinte claro directo (lun→dom) */
  --cal-day-1: #eef4fe; --cal-day-2: #edfbf3; --cal-day-3: #fff6ea; --cal-day-4: #f6eefe;
  --cal-day-5: #e9fafb; --cal-day-6: #fdeef3; --cal-day-7: #f1f2f5;

  /* Tipos de objetivo — paleta CATEGÓRICA (configurable por club, como el calendario).
     Codifica una dimensión real del producto: de qué tipo es un objetivo. Se ve en el mapa de
     metodología, el seguimiento por tipo y el detalle del plan.
     Estaba DUPLICADA a mano en 4 archivos PHP con los mismos valores (04/08/2026) — un cambio en
     uno dejaba los otros desincronizados. Ahora vive aquí y se consume por `cbat_obj_tipos()`
     (includes/objetivo_tipos.php), que es la fuente única de color + etiqueta.
     Al ser categórica, cada color debe seguir DISTINGUIÉNDOSE del resto: no derivar de la marca. */
  --obj-tecnico:      #3b82f6;   /* técnico */
  --obj-tactico:      #10b981;   /* táctico */
  --obj-fisico:       #f59e0b;   /* físico */
  --obj-actitudinal:  #8b5cf6;   /* actitudinal */
  --obj-metodologico: #ec4899;   /* metodológico */
  --obj-otro:         #6b7280;   /* sin tipo / otro */

  /* Áreas de contenido del PLAN — otra paleta categórica, distinta de los tipos de objetivo:
     aquí táctico ofensivo y defensivo SÍ se separan, y existe "competitivo". Se ve en la
     metodología por categoría y en el detalle del plan. También estaba duplicada (2 archivos). */
  --plan-area-tecnico:     #3b82f6;   /* técnico */
  --plan-area-tactico-of:  #22c55e;   /* táctico ofensivo */
  --plan-area-tactico-def: #ef4444;   /* táctico defensivo */
  --plan-area-fisico:      #f59e0b;   /* físico */
  --plan-area-mental:      #8b5cf6;   /* mental / psicológico */
  --plan-area-competitivo: #0ea5e9;   /* competitivo */

  /* Género del equipo (chips M/F en el panel de coordinación). Van en pareja:
     tokenizar solo uno de los dos rompería la codificación. */
  --genero-m: #dbeafe;  --genero-m-fg: #1d4ed8;
  --genero-f: #fce7f3;  --genero-f-fg: #9d174d;

  /* Nivel/dificultad de un objetivo (base → avanzado). También estaba duplicada
     literalmente entre el picker de objetivos y la metodología por categoría. */
  --nivel-base:     #e0f2fe;  --nivel-base-fg:     #075985;   /* base */
  --nivel-medio:    #fef9c3;  --nivel-medio-fg:    #854d0e;   /* medio */
  --nivel-avanzado: #fee2e2;  --nivel-avanzado-fg: #991b1b;   /* avanzado */

  /* Prioridad de un objetivo (clave → baja). Cuarta paleta categórica del Coach Hub.
     Estaba duplicada en 2 archivos y ya se había DESINCRONIZADO (04/08/2026):
     «clave» era #ef4444 en metodología y #dc2626 en el plan; «baja», #cbd5e1 vs #94a3b8.
     Unificados aquí a un solo valor. */
  --prio-clave: #dc2626;   /* clave */
  --prio-alta:  #f59e0b;   /* alta */
  --prio-media: #3b82f6;   /* media */
  --prio-baja:  #94a3b8;   /* baja */

  /* Agrupación en el catálogo de objetivos (picker + metodología por categoría).
     Distingue el ORIGEN de un objetivo, no su tipo. También estaba duplicada en 2 archivos. */
  --grp-grupo:       #ede9fe;  --grp-grupo-fg:       #5b21b6;   /* grupo temático */
  --grp-transversal: #e0e7ff;  --grp-transversal-fg: #3730a3;   /* transversal a etapas */
  --grp-categoria:   #ccfbf1;  --grp-categoria-fg:   #0f766e;   /* propio de la categoría */

  /* Series de gráfica (dataviz) — rampa categórica para distinguir barras/series.
     NO configurable por club a propósito: aquí lo que importa es que se diferencien entre sí,
     no que peguen con la marca. Primer uso: gantt de bloques de la planificación. */
  --chart-1: #3b82f6; --chart-2: #10b981; --chart-3: #f59e0b; --chart-4: #ef4444;
  --chart-5: #8b5cf6; --chart-6: #ec4899; --chart-7: #06b6d4; --chart-8: #84cc16;

  /* Front público — acentos propios SOBRE NAVY (lo que no cubre --shell-*).
     El texto principal/blanco sobre navy usa --shell-text / --shell-text-strong. */
  --front-text-soft:  #8fa1c0;   /* secundario sobre navy (cards, footer) */
  --front-text-faint: #5d6f93;   /* muy tenue (base del footer) */
  --front-win:  #7ddf9a;         /* resultado ganado sobre navy (verde legible en oscuro) */
  --front-loss: #ff9b9b;         /* resultado perdido sobre navy (rojo legible en oscuro) */

  /* Acento dorado: usar con disciplina (destacados, no acciones) */
  --accent: var(--cbat-gold-400);
  --accent-strong: var(--cbat-gold-600);
  --accent-soft: var(--cbat-gold-050);

  /* Superficies, bordes y texto (DS 2.0 · set semántico — el componente NO inventa hex) */
  --surface: var(--card);                                               /* superficie base = tarjeta */
  --surface-sunken: color-mix(in srgb, var(--primary) 4%, var(--card)); /* relleno interior sutil; sigue la marca del club */
  --border-strong: var(--cbat-navy-300);                                /* hairline enfatizado: hover / selección */
  --text-strong: var(--cbat-gray-700);                                  /* etiquetas y 2º nivel, más firme que --muted */
  --shadow-sm: 0 1px 2px rgba(7, 20, 50, .05);                          /* elevación mínima opcional (por defecto: plano) */

  /* Tablas (DS 2.0 — el componente las lee; base themeable por club) */
  --table-head-bg: var(--cbat-gray-050);                                /* fondo de la cabecera */
  --table-head-fg: var(--muted);                                        /* texto de la cabecera */
  --table-line: var(--border);                                          /* líneas / bordes de fila */
  --table-row-alt: transparent;                                         /* zebra (off por defecto) */
  --table-row-hover: transparent;                                       /* fila al pasar (off por defecto) */

  /* Tipografía (base segura — el club fija su display desde Sistema → Configuración) */
  --font-body: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-heading: var(--font-body);

  /* ---- 3 · COMPONENTE --------------------------------------- */
  --topbar-h: 58px;
  --sidebar-w: 260px;

  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;

  --shadow-card: 0 1px 2px rgba(7, 20, 50, .06), 0 4px 12px rgba(7, 20, 50, .06);
  --shadow-pop: 0 8px 24px rgba(15, 23, 42, .12);

  --focus-ring: 0 0 0 3px var(--cbat-navy-100);

  /* Shell premium (sidebar + topbar navy, contenido claro) — 12/06 */
  --shell-bg: var(--cbat-navy-950);
  --shell-bg-soft: var(--cbat-navy-900);
  --shell-border: rgba(255, 255, 255, .08);
  --shell-text: #c6d2e6;
  --shell-text-strong: #ffffff;
  --shell-muted: #6e80a6;
  --shell-accent: var(--cbat-gold-400);
  --shell-hover: rgba(255, 255, 255, .06);
  --shell-active: rgba(241, 200, 76, .10);
}

/* ── Movimiento reducido, para TODO el proyecto (05/08/2026) ───────────────────
   De 18 hojas con animaciones o transiciones, solo 6 respetaban la preferencia del
   sistema. En vez de repetir el bloque en las 12 restantes —y olvidarlo en la 19—,
   se declara una sola vez aquí: `tokens.css` se carga siempre y antes que el resto.
   No elimina las animaciones, las deja en un instante: así no se rompe nada que
   dependa de que un `transitionend` llegue a dispararse. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
