/* Las dos tipografías de cvm+, servidas desde el propio dominio.
 *
 * ── Por qué se dejó de usar el CDN de Google ──
 *
 * Hasta el 9 de agosto de 2026, las 33 páginas del sitio traían la tipografía
 * con `<link href="fonts.googleapis.com/css2…" rel="stylesheet">`. Eso tiene
 * tres costos, y los tres importan:
 *
 *  1. **Bloquea el pintado.** Una hoja de estilos externa detiene el render
 *     hasta que llega. Y no es una parada: son dos — el CSS viene de
 *     `fonts.googleapis.com` y los archivos de `fonts.gstatic.com`, cada uno
 *     con su DNS y su TLS. Medido contra el sitio en producción, solo el CSS
 *     tardaba más de un segundo en frío.
 *  2. **Contradecía la regla de la casa.** «Cero terceros, sin CDN» es una
 *     restricción del proyecto, y la tipografía era la excepción que quedó.
 *  3. **Le contaba a Google quién entra.** Cada visita filtraba una IP a otro
 *     dominio antes de que la persona hubiera hecho nada — en un sitio con
 *     política de tratamiento de datos, eso no se sostiene.
 *
 * ── Por qué son cuatro archivos y no nueve ──
 *
 * Las dos familias tienen versión VARIABLE: un solo archivo cubre todos los
 * pesos del eje `wght`, de 100 a 900. Antes se pedían seis pesos de League
 * Spartan y tres de JetBrains Mono, que eran nueve descargas.
 *
 * Se traen `latin` y `latin-ext` y nada más. Sin cirílico, griego ni vietnamita:
 * es un sitio en español para Colombia. `latin-ext` sí hace falta, y no es
 * adorno — ahí viven caracteres que aparecen en nombres propios de verdad.
 *
 * `font-display: swap` es deliberado: el texto se ve de una con la tipografía
 * del sistema y cambia cuando llega la nuestra. La alternativa es texto
 * invisible durante medio segundo, que se siente como una página rota.
 *
 * Licencias: las dos son SIL Open Font License 1.1, que permite alojarlas.
 */

@font-face {
  font-family: 'League Spartan';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/league-spartan-latin.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;
}
@font-face {
  font-family: 'League Spartan';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/league-spartan-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                 U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                 U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url('/fuentes/jetbrains-mono-latin.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;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url('/fuentes/jetbrains-mono-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                 U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                 U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
