/* ═══════════════════════════════════════════════════════════════════════
   CORE FIT · LAS FUENTES, EN CASA

   Hasta el 2026-09-05 las dos fuentes venían de Google. Se midió lo que
   costaba y no era poco:

     · **52 KB** — el 40% de todo lo que baja el teléfono para abrir /hoy
     · **dos dominios ajenos** (fonts.googleapis.com y fonts.gstatic.com),
       cada uno con su búsqueda de DNS y su saludo TLS ANTES de bajar nada
     · y el CSS de Google **BLOQUEA EL DIBUJADO**: hasta que él no contesta,
       la pantalla no pinta una letra

   Con buena señal no se nota. Con la señal de un gimnasio, sí — y es
   exactamente donde se usa esta app.

   ── LO QUE SE GANA ────────────────────────────────────────────────────

     1. Dos conexiones menos a servidores de otro. Las fuentes viajan por
        la MISMA conexión que ya está abierta para la app.
     2. El dibujado deja de depender de que Google conteste.
     3. Google deja de ver quién abre Core Fit. No es paranoia: cada visita
        le decía a un tercero la dirección IP de un cliente.
     4. La política de seguridad se puede apretar: sin esto había que
        permitir dos dominios externos.

   ── ⚠️ LA LICENCIA, PORQUE ESTO IMPORTA ───────────────────────────────

   Las dos son **SIL Open Font License 1.1**, que permite explícitamente
   alojarlas uno mismo, redistribuirlas y usarlas en un producto comercial.
   No hay que pedir permiso ni pagar.

     · Space Grotesk — Florian Karsten · OFL 1.1
     · JetBrains Mono — JetBrains s.r.o. · OFL 1.1

   Lo único que la licencia NO permite es venderlas sueltas, cosa que nadie
   va a hacer.

   ── LOS ARCHIVOS SON VARIABLES, y por eso son dos y no seis ───────────

   La app usa cuatro pesos de Space Grotesk (400/500/600/700) y dos de
   JetBrains Mono (400/700). Serían seis archivos — pero cada uno de éstos
   es una fuente VARIABLE que lleva todo el rango adentro. De ahí que 52 KB
   cubran los seis pesos.

   Por eso `font-weight` declara un RANGO y no un número: es lo que le dice
   al navegador que puede pedirle cualquier peso intermedio al archivo.

   ── CÓMO SE ACTUALIZAN ────────────────────────────────────────────────

   No hace falta. Una fuente no tiene parches de seguridad. Se tocan sólo
   si se quiere otro peso o si cambia el diseño.
   ═══════════════════════════════════════════════════════════════════════ */

@font-face {
  font-family: "Space Grotesk";
  font-style: normal;
  font-weight: 300 700;
  /* 🔴 `swap` Y NO `block`. Con `block` el navegador esconde el texto hasta
     que la fuente esté — y en una red mala eso es una pantalla en blanco
     con la letra ya descargada esperando. Con `swap` el texto se ve al
     instante con la del sistema y cambia cuando llega la nuestra.

     Se prefiere un parpadeo de tipografía antes que un segundo sin texto:
     lo primero se nota y se olvida, lo segundo se lee como que la app no
     carga. */
  font-display: swap;
  src: url("/fuentes/space-grotesk.woff2") format("woff2");
  /* Sólo el alfabeto latino. El navegador ni siquiera pide el archivo si
     la página no tiene ninguna letra de este rango. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
                 U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
                 U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF,
                 U+FFFD;
}

@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("/fuentes/jetbrains-mono.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
                 U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
                 U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF,
                 U+FFFD;
}
