/* Stella Nova — fuentes auto-alojadas. Sin CDN en runtime (privacidad +
   instalación local). Dos familias para texto y una mono:
     · IBM Plex Sans — sans del cuerpo · UI · cabeceras. VARIABLE de DOS
       ejes (peso wght 100–700 + ancho wdth 75–100), normal e italic.
     · Roboto Serif — serif del cuerpo cuando el usuario alterna a familia
       serif desde el menú (data-sn-family="serif"), y en <poem>/blockquote
       por defecto. VARIABLE de CUATRO ejes (peso wght 100–900, ancho
       wdth 62.5–100, óptico opsz 8–60, grado GRAD −50–100), normal e italic.
     · IBM Plex Mono — código, normal+italic 400 y normal 600.
   Subset latin: U+0000-00FF cubre el español (no hace falta latin-ext).
   Las woff2 viven en resources/fonts/.

   IMPORTANTE: cada familia debe declarar TANTO normal como italic. Si
   falta la italic, el navegador "sintetiza" una falsa (sesga la regular)
   y se ve mal. Esto le pasó en la primera migración: los <em>/<cite> del
   cuerpo quedaron con itálicas sintéticas hasta que se añadieron estas. */

/* — IBM Plex Sans — variable de DOS ejes: peso (wght 100–700) Y ancho
   (wdth 75–100, declarado aquí como font-stretch 75% 100%). Un único woff2
   por estilo cubre TODOS los pesos y TODOS los anchos del diseño, interpolando
   de verdad. Para usar un ancho condensado en un elemento basta `font-stretch`
   (p.ej. 80%) o `font-variation-settings: "wdth" 80`; 100% = ancho normal,
   75% = lo más condensado que ofrece Plex.
   NOTA: la build de fontsource `@fontsource-variable/ibm-plex-sans` solo expone
   el eje wght — por eso los antiguos `plexsans-latin-wght-*.woff2` ignoraban
   font-stretch. Estos archivos `wdthwght` son la build de DOS ejes de Google
   Fonts (gstatic), subset latin, redonda + itálica. — */
@font-face {
	font-family: 'IBM Plex Sans';
	font-style: normal;
	font-weight: 100 700;
	font-stretch: 75% 100%;
	font-display: swap;
	src: url('fonts/plexsans-latin-wdthwght-normal.woff2') format('woff2');
}
@font-face {
	font-family: 'IBM Plex Sans';
	font-style: italic;
	font-weight: 100 700;
	font-stretch: 75% 100%;
	font-display: swap;
	src: url('fonts/plexsans-latin-wdthwght-italic.woff2') format('woff2');
}

/* — IBM Plex Mono — código. — */
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('fonts/plexmono-latin-ext-italic-400.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: 'IBM Plex Mono';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('fonts/plexmono-latin-italic-400.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: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('fonts/plexmono-latin-ext-normal-400.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: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('fonts/plexmono-latin-normal-400.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: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('fonts/plexmono-latin-ext-normal-600.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: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('fonts/plexmono-latin-normal-600.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;
}

/* — Roboto Serif — serif del cuerpo (alterna desde el menú), citas y
   poemas. VARIABLE de CUATRO ejes en un único woff2 por estilo:
     · wght 100–900  → font-weight (peso)
     · wdth 62.5–100 → font-stretch (ancho). El cuerpo serif condensa MÁS que
                       el sans: IBM Plex Sans solo baja a wdth 75, así que se
                       re-instanció esta familia con piso 62.5 para darle al
                       modo serif un escalón extra de condensación (token
                       --sn-text-width, que en serif baja por debajo de 75)
     · opsz 8–60     → font-optical-sizing: auto (tamaño óptico)
     · GRAD −50–100  → font-variation-settings "GRAD" (grado; lo conduce el
                       token --sn-serif-grade, que sube en modo oscuro)
   Subset latin, TTF variable de Google Fonts (OFL) instanciado a estos
   rangos con fonttools: opsz y wdth se recortaron de 8–144 / 50–150 a 8–60
   / 62.5–100 para no cargar los masters de despliegue ni los anchos extremos
   que el skin nunca usa (~0.95 MB la familia). — */
@font-face {
	font-family: 'Roboto Serif';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 62.5% 100%;
	font-display: swap;
	src: url('fonts/robotoserif-latin-wghtwdthgrad-normal.woff2') format('woff2');
}
@font-face {
	font-family: 'Roboto Serif';
	font-style: italic;
	font-weight: 100 900;
	font-stretch: 62.5% 100%;
	font-display: swap;
	src: url('fonts/robotoserif-latin-wghtwdthgrad-italic.woff2') format('woff2');
}
