/*
 * LA TIPOGRAFÍA VIAJA CON LA APLICACIÓN (ADR 0055 §1, FB-0107).
 *
 * Hasta hoy `index.html` pedía esta familia a la hoja de estilos de Google, que
 * a su vez traía los ficheros de su servidor de estáticos. Eso significaba que
 * **la IP de cada persona que abre VERIX viajaba a un tercero en cada visita**
 * —un médico de club, un administrador de una federación—, sin base legal y con
 * FIFA como responsable del tratamiento. Ahora los tres ficheros están en
 * `fuentes/` y salen del mismo origen que todo lo demás.
 *
 * ── De dónde salen estos bytes ──────────────────────────────────────────────
 *
 * Public Sans v21, descargada el 2026-09-08 **del mismo servidor de estáticos
 * al que apuntaba el enlace de antes**: son los MISMOS tres ficheros que el
 * navegador se traía ayer, así que la letra que se ve es exactamente la de
 * ayer y no una sustituta que se le parece.
 *   · familia  https://github.com/uswds/public-sans
 *   · licencia SIL Open Font License 1.1 — el texto entero en `fuentes/OFL.txt`
 *
 * Las tres direcciones exactas y el `sha256` de cada fichero están en el
 * handoff de FB-0107 y **no aquí a propósito**: la guarda del ADR 0055 §1 exige
 * que en `app/frontend/` no aparezca ni una vez el nombre de esos servidores,
 * porque el día que reaparezca en un `href` nadie va a estar mirando.
 *
 * ── Por qué NUEVE reglas y no tres ──────────────────────────────────────────
 *
 * Public Sans v21 es una fuente variable: Google sirve **un fichero por
 * subconjunto** y lo declara tres veces, una por peso. Se copia esa forma tal
 * cual —mismo `unicode-range`, mismo `font-display`, mismos tres pesos— porque
 * cualquier reescritura «más limpia» cambiaría el emparejamiento de pesos, y
 * este brief no toca el aspecto de nada.
 *
 * ── Los pesos: 400, 500 y 600. El 700 se queda fuera A PROPÓSITO ────────────
 *
 * En el código hay ocho `fontWeight: 700` (casi todos en el calendario de
 * whereabouts), pero el `<link>` a Google **nunca los cargó**: con 400/500/600
 * declarados, el algoritmo de emparejamiento de CSS resuelve el 700 al 600 y
 * eso es lo que se ve hoy en pantalla. Bajar el 700 no sería «completar» nada:
 * sería **engordar ocho sitios** que llevan meses viéndose en semibold. Si
 * algún día se quiere ese peso de verdad, es un cambio de diseño con su brief.
 *
 * ── Tres subconjuntos, y ninguno sobra ──────────────────────────────────────
 *
 * `latin` cubre en, es y fr. `latin-ext` y `vietnamese` no son para la interfaz:
 * son para los NOMBRES —Şahin, Đặng, Łukasz—, y esto es FIFA. Cada uno lleva su
 * `unicode-range`, así que el navegador sólo descarga el que necesita: quien
 * nunca vea un nombre vietnamita nunca pide esos 7 KiB.
 */

/* vietnamese */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}
/* latin */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}

/* vietnamese */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}
/* latin */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}

/* vietnamese */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}
/* latin */
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fuentes/public-sans-v21-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;
}

/*
 * ══════════════ Las tres familias de la portada (FB-0116) ══════════════════
 *
 * La portada pública usa tres familias que el producto no usaba: **Instrument
 * Serif** para los titulares, **Instrument Sans** para el texto y **JetBrains
 * Mono** para el logotipo y los rótulos. Las tres son SIL Open Font License
 * 1.1 —el texto de cada una está al lado, en `fuentes/OFL-*.txt`, con su aviso
 * de copyright— así que alojarlas es legal y no hay que pedir permiso.
 *
 * ── Por qué se alojan, otra vez ────────────────────────────────────────────
 *
 * Por lo mismo que Public Sans arriba, y es la ADR 0055 §1: pedirle la
 * tipografía a un tercero manda **la IP de cada visitante a ese tercero en
 * cada visita**. Y una PORTADA PÚBLICA es exactamente el sitio donde eso más
 * duele: la abre cualquiera, sin haber aceptado nada y sin tener cuenta.
 * `font-src 'self'` lo impide de todas formas — con el enlace fuera, la
 * portada se vería con las letras de reserva y nadie sabría por qué.
 *
 * Los ficheros se bajaron el 2026-09-09 del mismo servidor de estáticos al que
 * apunta el lienzo del diseño, o sea **los mismos bytes que se aprobaron**, ya
 * subconjuntados a `latin` y `latin-ext` por el propio servidor. Las
 * direcciones exactas y el `sha256` de cada uno están en el handoff de FB-0116
 * y **no aquí a propósito**: la guarda del ADR 0055 §1 exige que en
 * `app/frontend/` no aparezca ni una vez el nombre de esos servidores, porque
 * el día que reaparezca en un `href` nadie va a estar mirando.
 *
 * ── Dos subconjuntos y no tres ─────────────────────────────────────────────
 *
 * Public Sans trae además `vietnamese` porque cubre NOMBRES —Đặng— y esto es
 * FIFA. La portada no imprime el nombre de nadie: es texto de producto en el
 * idioma de la interfaz, y `latin` + `latin-ext` cubren en, es y fr con sitio
 * de sobra. El día que la portada hable vietnamita se añade el subconjunto que
 * falte y no se toca nada más — para eso está el `unicode-range`.
 *
 * ── Doce reglas y ocho ficheros ────────────────────────────────────────────
 *
 * Instrument Sans y JetBrains Mono son **variables**: un fichero por
 * subconjunto sirve los dos pesos, y se declara dos veces —una por peso— para
 * que el navegador fije la instancia correcta en cada caso. Es la misma forma
 * que Public Sans arriba y por el mismo motivo: copiar la que sirve el
 * servidor en vez de «limpiarla» y cambiar sin querer el emparejamiento de
 * pesos.
 *
 * Instrument Serif es estática y trae dos estilos —redonda e itálica—, que en
 * la portada no son decoración: la itálica es la que dice «done right» y
 * «Authority ascends». Sintetizarla inclinando la redonda daría otra letra.
 *
 * ── La pila de reserva ─────────────────────────────────────────────────────
 *
 * Va en `theme.ts` (`portadaSerif`, `portadaSans`, `portadaMono`), que es
 * donde vive lo que la portada consume. Aquí sólo se declaran las caras.
 */

/* ── Instrument Sans · variable · pesos 400 y 500 ── */
/* latin-ext */
@font-face {
  font-family: "Instrument Sans";
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fuentes/instrument-sans-v4-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;
}
/* latin */
@font-face {
  font-family: "Instrument Sans";
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fuentes/instrument-sans-v4-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;
}
/* latin-ext */
@font-face {
  font-family: "Instrument Sans";
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fuentes/instrument-sans-v4-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;
}
/* latin */
@font-face {
  font-family: "Instrument Sans";
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fuentes/instrument-sans-v4-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;
}

/* ── Instrument Serif · estática · redonda e itálica, peso 400 ── */
/* latin-ext */
@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/instrument-serif-v5-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;
}
/* latin */
@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/instrument-serif-v5-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;
}
/* latin-ext */
@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/instrument-serif-italic-v5-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;
}
/* latin */
@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/instrument-serif-italic-v5-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;
}

/* ── JetBrains Mono · variable · pesos 400 y 500 ── */
/* latin-ext */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/jetbrains-mono-v24-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;
}
/* latin */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fuentes/jetbrains-mono-v24-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;
}
/* latin-ext */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fuentes/jetbrains-mono-v24-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;
}
/* latin */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fuentes/jetbrains-mono-v24-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;
}
