/* 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 75–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 75–100   → font-stretch (ancho; MISMO rango que IBM Plex Sans,
                       así el cuerpo serif condensa igual que el sans con
                       --sn-text-width)
     · 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
   / 75–100 para no cargar los masters de despliegue ni los anchos extremos
   que el skin nunca usa (de ~1.6 MB a ~0.9 MB la familia). — */
@font-face {
	font-family: 'Roboto Serif';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 75% 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: 75% 100%;
	font-display: swap;
	src: url('fonts/robotoserif-latin-wghtwdthgrad-italic.woff2') format('woff2');
}
