/*
 * LAS TRES FAMILIAS, SERVIDAS DESDE ESTE ORIGEN.
 * ---------------------------------------------------------------------------
 * Sustituye a la hoja de fonts.googleapis.com que index.html pedia en cada carga
 * en frio. MISMAS familias, MISMOS ejes, MISMOS pesos: solo cambia de donde
 * vienen los bytes.
 *
 * POR QUE SE LOCALIZARON. Un panel que promete offline no puede depender de un
 * tercero para arrancar. Y no era un peligro teorico: MEDIDO el 2026-08-08, una
 * primera carga en frio bajaba 237,7 KB desde Google (Inter 141,4 + Bricolage
 * 75,1). La segunda ya no tocaba la red —el runtime cache del service worker las
 * tenia—, pero la primera es justo la del operador nuevo en una instalacion
 * nueva.
 *
 * POR QUE NO SE PODIA RESOLVER PRECACHEANDOLAS SIN MAS. Lo explica sw.js: los
 * .woff2 viven en fonts.gstatic.com con URLs que Google ROTA y que ademas
 * dependen del User-Agent, asi que no caben en una lista estatica. Localizarlas
 * lo resuelve por construccion: ahora son tres archivos de este origen, con
 * nombre estable, y entran al SHELL como cualquier otro.
 *
 * LO QUE **NO** ERA EL MOTIVO, y conviene dejarlo escrito para que nadie lo
 * "reoptimice" al reves: NO se hizo por rendimiento. Se midio el mismo arbol con
 * y sin la hoja, con el freno de Lighthouse (Slow 4G + CPU 4x) y sin el:
 *
 *     Performance   60 vs 60      LCP  10535 vs 10540 ms, score 0 en los DOS
 *     render-blocking  0 vs 0     FCP   5554 vs  5529 ms
 *
 * Quitarla no movia una sola metrica. Lo que bloquea el render son los doce
 * <script src> sincronos del <head> de index.html; la hoja de Google era uno mas
 * de trece. Ese frente es de quien posee index.html y esta pasado por buzon.
 *
 * ── DE DONDE SALEN ESTOS ARCHIVOS ──────────────────────────────────────────
 * De los .woff2 que Google sirve, subseteados a los 116 caracteres que el
 * producto usa de verdad (los tres locales + el texto del HTML). El juego exacto
 * esta en fonts/charset-subset.txt y el procedimiento en scripts/make-fonts.js.
 *
 *     Bricolage Grotesque   76.888 -> 51.896 B   (-33 %)
 *     Inter                 48.256 -> 28.308 B   (-41 %)
 *     JetBrains Mono        31.432 -> 21.992 B   (-30 %)
 *     total                152,9 KB -> 99,8 KB   (-35 %)
 *
 * El ahorro es del 35 % y no del 80 % que suele prometerse porque son fuentes
 * VARIABLES: el subsetting quita glifos, no la maquinaria de ejes. Bajar mas
 * exigiria instanciar a pesos fijos, y serian nueve archivos en vez de tres.
 *
 * LICENCIA: las tres son SIL Open Font License 1.1. El texto viaja con los
 * archivos, en fonts/OFL-*.txt, que es lo que la licencia exige.
 *
 * ── POR QUE UN RANGO DE PESO Y NO UNA CARA POR PESO ────────────────────────
 * Google declaraba una @font-face por peso pedido (600, 700, 800 para Bricolage;
 * 400-700 para Inter; 500-800 para Mono) apuntando SIEMPRE al mismo archivo
 * variable. Aqui se declara UNA cara por familia con el RANGO equivalente: el
 * navegador instancia el mismo eje wght y el resultado renderizado es el mismo.
 *
 * Los rangos son EXACTAMENTE los que Google cubria, ni uno mas. Ampliarlos
 * pondria en esta tipografia pesos que hoy caen a la reserva del sistema, y eso
 * si seria cambiar el diseno. Los pesos que el producto usa son 400, 500, 600,
 * 700 y 800, todos dentro.
 *
 * `font-display: swap` se conserva de la hoja de Google: el texto se pinta con
 * la reserva del sistema y cambia al llegar la fuente, en vez de quedarse
 * invisible.
 */

@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('./fonts/bricolage-grotesque.woff2') format('woff2');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('./fonts/inter.woff2') format('woff2');
}

@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url('./fonts/jetbrains-mono.woff2') format('woff2');
}
