/* Fuentes self-hosted (antes Google Fonts + Fontshare CDN) — generado 2026-06-10 */
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('DMSans-300.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('DMSans-400.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('DMSans-500.woff2') format('woff2'); }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('SpaceMono-400.woff2') format('woff2'); }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 700; font-display: swap; src: url('SpaceMono-700.woff2') format('woff2'); }
@font-face { font-family: 'Clash Display'; font-style: normal; font-weight: 300; font-display: swap; src: url('ClashDisplay-300.woff2') format('woff2'); }
@font-face { font-family: 'Clash Display'; font-style: normal; font-weight: 400; font-display: swap; src: url('ClashDisplay-400.woff2') format('woff2'); }
@font-face { font-family: 'Clash Display'; font-style: normal; font-weight: 500; font-display: swap; src: url('ClashDisplay-500.woff2') format('woff2'); }
@font-face { font-family: 'Clash Display'; font-style: normal; font-weight: 600; font-display: swap; src: url('ClashDisplay-600.woff2') format('woff2'); }
@font-face { font-family: 'Clash Display'; font-style: normal; font-weight: 700; font-display: swap; src: url('ClashDisplay-700.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('DMSans-700.woff2') format('woff2'); }
/* Inter / Inter Tight — misma tipografia del hub y Voria Academy (2026-07-10) */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('Inter-400.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('Inter-500.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; font-display: swap; src: url('Inter-700.woff2') format('woff2'); }
@font-face { font-family: 'Inter Tight'; font-style: normal; font-weight: 600; font-display: swap; src: url('InterTight-600.woff2') format('woff2'); }
@font-face { font-family: 'Inter Tight'; font-style: normal; font-weight: 700; font-display: swap; src: url('InterTight-700.woff2') format('woff2'); }
/* Hanken Grotesk — la del copy del portafolio, ahora tambien la del copy del hub
   (2026-08-06). Es VARIABLE: un solo archivo cubre 400-800 y por eso va UNA regla
   con rango, no cinco. El portafolio la declara 5 veces apuntando a 5 copias del
   MISMO binario (md5 identico) y se baja 138KB para servir 34KB; aca no.
   Verificado en browser (_lab/_hanken_var.py): a 32px el mismo texto mide
   637.0 / 648.4 / 652.6 px en 400 / 700 / 800, o sea los pesos son reales. */
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400 800; font-display: swap; src: url('HankenGrotesk-var.woff2') format('woff2'); }
/* Caveat — la letra a mano de la marca (la de los reels). En la web entra sólo
   para el saludo de ALMA del hub. Va el subset latin con su unicode-range, como lo
   sirve Google: los cinco saludos (Hola, Hello, Olá, Ciao, Bonjour) caben ahí. */
@font-face { font-family: 'Caveat'; font-style: normal; font-weight: 600; font-display: swap; src: url('Caveat-600-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; }
