/* =====================================================================
   Talkademy — tipografias autoalojadas
   GENERADO por scripts/fuentes-descargar.py — no editar a mano.

   Antes esto eran dos viajes encadenados contra Google (el CSS en
   fonts.googleapis.com y despues el WOFF2 en fonts.gstatic.com), unos
   300-600 ms de mas en 4G, y ademas ataba la app instalada a una red
   externa: sin cobertura, sin tipografia. Desde que las caches de
   navegador se particionan por sitio, la cache compartida de Google ya no
   existe, asi que autoalojar no pierde nada y gana el modo sin conexion.

   Dos bloques:
     1. Las caras reales, con `font-display: swap` y el `unicode-range` de
        su subconjunto, para que el navegador solo baje lo que va a pintar.
     2. Las caras de RESPALDO: la fuente del sistema con las metricas
        recalibradas para que ocupe exactamente lo mismo que la definitiva.
        Ahi es donde viven `size-adjust`, `ascent-override` y
        `descent-override`; ponerlos en la cara real deformaria la
        tipografia buena en vez de arreglar el salto. Con esto el
        intercambio de `swap` no mueve ni un pixel.

   Los numeros no estan escritos a mano: salen de medir los binarios
   (anchura media ponderada por frecuencia de letra, y ascendente/
   descendente de la tabla que el propio binario declara como buena).
   ===================================================================== */

/* --- Source Serif 4 — titulares (--display). Variable: un archivo cubre 400-700. --- */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fuentes/source-serif-4-400-700-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: 'Source Serif 4';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fuentes/source-serif-4-400-700-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;
}

/* --- Archivo — texto corriente (--texto). Variable: un archivo cubre 400-700. --- */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fuentes/archivo-400-700-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: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fuentes/archivo-400-700-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;
}

/* --- Charis SIL — transcripcion fonetica (--fonetica). --- */
@font-face {
  font-family: 'Charis SIL';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fuentes/charis-sil-400-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: 'Charis SIL';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fuentes/charis-sil-400-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: 'Charis SIL';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fuentes/charis-sil-700-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: 'Charis SIL';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fuentes/charis-sil-700-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;
}

/* --- Noto Serif — SOLO los signos que a Charis SIL le faltan.
   Charis SIL ya trae el bloque IPA entero, asi que aqui no hay
   bloque IPA: solo el hueco real, medido contra su binario. El
   archivo esta recortado a esos glifos y el unicode-range esta
   acotado a ellos, para no bajar una fuente entera por tres signos. --- */
@font-face {
  font-family: 'Noto Serif';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fuentes/noto-serif-400-700-huecos.woff2') format('woff2');
  unicode-range: U+02C8, U+02D0, U+03B8;
}

/* =====================================================================
   Respaldos calibrados. Cada uno es la fuente del sistema estirada
   hasta ocupar lo mismo que la definitiva, para que el `swap` no
   reajuste la linea. Van SIEMPRE justo detras de su cara real en la
   pila de `font-family`.
   ===================================================================== */

@font-face {
  font-family: 'Source Serif 4 Respaldo';
  src: local('Georgia'), local('Times New Roman'), local('Tinos'), local('Liberation Serif');
  size-adjust: 108.59%;
  ascent-override: 95.40%;
  descent-override: 30.85%;
  line-gap-override: 0.00%;
}

/* Una cara por tramo de peso, no una para todos. Archivo es variable y cambia
   de ancho con el peso; Arial cambia de otra manera, asi que un solo
   `size-adjust` acierta en un peso y falla en los demas, y ese desvio es
   reflujo visible al llegar la fuente.

   Medido en el navegador con una frase real a 100 px, comparando el ancho de
   Archivo con el de Arial sin ajustar: 97,77 % a peso 400, 99,41 a 500, 94,84
   a 600 y 97,95 a 700.

   El valor unico anterior (94,7) dejaba el respaldo un 3,15 % mas estrecho a
   peso 400 —peor que no ajustar nada— porque se calibro contra el eje por
   defecto de Archivo, que es 600, no contra el peso del cuerpo de texto. */
@font-face {
  font-family: 'Archivo Respaldo';
  font-weight: 400 500;
  src: local('Arial'), local('Helvetica Neue'), local('Helvetica'), local('Roboto'), local('Liberation Sans');
  size-adjust: 98.6%;
  ascent-override: 89.03%;
  descent-override: 21.29%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'Archivo Respaldo';
  font-weight: 600;
  src: local('Arial Bold'), local('Arial'), local('Helvetica Neue'), local('Helvetica'), local('Roboto'), local('Liberation Sans');
  size-adjust: 94.56%;
  ascent-override: 89.03%;
  descent-override: 21.29%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'Archivo Respaldo';
  font-weight: 700;
  src: local('Arial Bold'), local('Arial'), local('Helvetica Neue'), local('Helvetica'), local('Roboto'), local('Liberation Sans');
  size-adjust: 97.59%;
  ascent-override: 89.03%;
  descent-override: 21.29%;
  line-gap-override: 0.00%;
}

@font-face {
  font-family: 'Charis SIL Respaldo';
  src: local('Times New Roman'), local('Times'), local('Tinos'), local('Liberation Serif');
  size-adjust: 111.59%;
  ascent-override: 107.20%;
  descent-override: 39.38%;
  line-gap-override: 0.00%;
}

/* =====================================================================
   Pilas con el respaldo calibrado intercalado.
   Este bloque tiene que cargarse DESPUES de base.css (en la aplicacion,
   la ultima de todas las hojas); si se carga antes, no rompe nada,
   simplemente no se aplica.
   ===================================================================== */
:root {
  --display: 'Source Serif 4', 'Source Serif 4 Respaldo', 'Source Serif Pro', Charter, Cambria, Georgia, serif;
  --texto: Archivo, 'Archivo Respaldo', 'Helvetica Neue', Arial, system-ui, sans-serif;
  --fonetica: 'Charis SIL', 'Noto Serif', 'Charis SIL Respaldo', 'Doulos SIL', 'Gentium Plus', serif;
}
