/* ============================================================
   El Umbral Sereno — base compartida
   Fuentes auténticas (woff2 del repo madre) + tokens INVIOLABLES.
   Fuente de verdad: docs/ultracode-diseno/05-tokens.css + 04-identidad-marca.md
   ============================================================ */

/* ---------- Cormorant Garamond — voz del linaje (serif) ---------- */
@font-face{
  font-family:"Cormorant Garamond";font-style:normal;font-weight:300;font-display:swap;
  src:url("/fonts/cormorant-300-latin.woff2") format("woff2");
}
@font-face{
  font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-display:swap;
  src:url("/fonts/cormorant-300i-latin.woff2") format("woff2");
}
@font-face{
  font-family:"Cormorant Garamond";font-style:italic;font-weight:400;font-display:swap;
  src:url("/fonts/cormorant-400i-latin.woff2") format("woff2");
}
@font-face{
  font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;
  src:url("/fonts/cormorant-500-latin.woff2") format("woff2");
}

/* ---------- Google Sans Flex — cuerpo, interfaz y HEROES (sans) ---------- */
@font-face{
  font-family:"Google Sans Flex";font-style:normal;font-weight:300;font-display:swap;
  src:url("/fonts/googlesansflex-300-latin.woff2") format("woff2");
}
@font-face{
  font-family:"Google Sans Flex";font-style:normal;font-weight:400;font-display:swap;
  src:url("/fonts/googlesansflex-400-latin.woff2") format("woff2");
}
@font-face{
  font-family:"Google Sans Flex";font-style:normal;font-weight:500;font-display:swap;
  src:url("/fonts/googlesansflex-500-latin.woff2") format("woff2");
}

:root{
  /* ── Fondos cream luminoso (jamás penumbra oscura) ── */
  --cream-base:#fefdfb; --cream-surface:#fdf9f0; --cream-warm:#faf3e0;

  /* ── Azul Sofrocay ── */
  --sof-50:#e8eef5; --sof-100:#c5d4e6; --sof-200:#9fb8d5; --sof-300:#7a9cc4;
  --sof-400:#5e87b7; --sof-500:#305b91; --sof-600:#2a5083; --sof-700:#224272; --sof-900:#0f2140;

  /* ── Dorado del LOGRO — uso restringido (✓ practicada, llave, № romano, kicker, celebración) ── */
  --oro:#c9a96e; --oro-hover:#d8b97e;

  /* ── Texto ── */
  --tinta:#1a1a1a; --texto:#4d4d4d; --atenuado:#636363;

  /* ── Tipografía ──
     --serif: voz íntima del linaje (saludo personal, títulos de lección, citas del corpus, fenodescripción)
     --sans : cuerpo + interfaz + HEROES / títulos grandes (decisión de Mario, 2026-06-07) */
  --serif:"Cormorant Garamond", Georgia, serif;
  --sans:"Google Sans Flex","Inter",system-ui,-apple-system,sans-serif;
  --fs-h1:clamp(1.6rem,6vw,2.4rem);
  --fs-leccion:clamp(1.4rem,5vw,1.9rem);
  --fs-body:1rem; --lh-body:1.65; --medida:66ch;

  /* ── Espaciado (mata los números mágicos) ── */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:24px; --space-6:32px; --space-7:48px; --space-8:64px;

  /* ── Radios ── */
  --r-sm:8px; --r-md:14px; --r-lg:20px; --r-full:999px;

  /* ── Sombras suaves (premium, nunca duras) ── */
  --sombra-sutil:0 1px 3px rgba(15,33,64,.06);
  --sombra-card:0 8px 30px -16px rgba(15,33,64,.18);

  /* ── Motion sereno (todas con variante reduced-motion) ── */
  --dur-rapida:160ms; --dur-suave:200ms; --dur-lenta:400ms;
  --ease:cubic-bezier(.4,0,.2,1);

  /* ── Navegador ── */
  --theme-color:#fdf9f0;
}

/* ── Llegada serena (coherencia del pulso sereno) ── Cada pantalla de la academia ENTRA con la misma gracia:
   un velo que se disipa en vez de aparecer de golpe. Un solo gesto, global a las páginas que comparten esta
   hoja → ausencia de fricción y presencia de gracia, el mismo pulso al recorrerla. Solo opacidad (cero riesgo
   de layout sobre elementos fijos/sticky). Respeta prefers-reduced-motion. */
@keyframes umbral-llegada { from { opacity: 0 } to { opacity: 1 } }
body { animation: umbral-llegada var(--dur-lenta, 400ms) var(--ease, cubic-bezier(.4,0,.2,1)) both }
@media (prefers-reduced-motion: reduce) { body { animation: none } }
/* A11y vestibular: honra «reducir movimiento» en TODA animación/transición del sitio —no solo las que
   introdujimos explícitamente (composeIn, pulso, spin, wm-move, confeti…)—. Quien pide menos movimiento
   recorre la academia sin él, sin un tropiezo. Reset estándar (web.dev); solo aplica bajo la preferencia. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
