/* ============================================================================
   BRAVO ADVOCATS · TIPOGRAFÍAS SERVIDAS DESDE AQUÍ
   ----------------------------------------------------------------------------
   Antes las dos familias se pedían al CDN de Google en 80 páginas, con NUEVE
   variantes distintas de la misma URL. Eso significaba dos cosas:

   1. La web dependía de un servidor que no es nuestro. Si Google Fonts falla o
      está bloqueado, la web se ve con la tipografía del sistema.
   2. Cada visita mandaba la IP del visitante a Google ANTES de que nadie
      aceptase nada. En la web de un despacho que publica su política de
      cookies, eso es justo lo que no puede pasar.

   Ahora los ficheros están en `/fuentes/`, servidos por nuestro alojamiento.
   Son las VARIABLES de cada familia: un solo fichero cubre todo el rango de
   peso, así que las nueve variantes de antes se resuelven con cuatro
   descargas en vez de con una por peso.

   2026-08-30 — cambio de familia (Playfair Display + DM Sans → Literata +
   Public Sans). Las dos son OFL 1.1, igual que las anteriores: alojarlas está
   expresamente permitido por su licencia. Ficheros bajados una sola vez del
   CDN oficial de Google Fonts (fonts.gstatic.com) en fase de build; en
   runtime no hay ninguna petición a fonts.googleapis.com ni a
   fonts.gstatic.com. Textos de licencia en `/fuentes/OFL-Literata.txt` y
   `/fuentes/OFL-PublicSans.txt`.

   `font-display: swap` a propósito: el texto se lee desde el primer momento
   con la tipografía del sistema y se recompone al llegar la buena. En una web
   donde alguien puede estar buscando un teléfono de urgencias, esperar a la
   tipografía es peor que un cambio de letra.
   ========================================================================== */


/* Literata · normal · latin */
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fuentes/literata-latin.woff2?v=20260830a') 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;
}

/* Literata · normal · latin-ext */
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fuentes/literata-latin-ext.woff2?v=20260830a') 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;
}

/* Literata · italic · latin */
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fuentes/literata-ital-latin.woff2?v=20260830a') 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;
}

/* Literata · italic · latin-ext */
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('/fuentes/literata-ital-latin-ext.woff2?v=20260830a') 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;
}

/* Public Sans · normal · latin */
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/publicsans-latin.woff2?v=20260830a') 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;
}

/* Public Sans · normal · latin-ext */
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/publicsans-latin-ext.woff2?v=20260830a') 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;
}

/* Public Sans · italic · latin */
@font-face {
  font-family: 'Public Sans';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/publicsans-ital-latin.woff2?v=20260830a') 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;
}

/* Public Sans · italic · latin-ext */
@font-face {
  font-family: 'Public Sans';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fuentes/publicsans-ital-latin-ext.woff2?v=20260830a') 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;
}


/* ══════════════════════════════════════════════════════════════════════════
   LAS DOS FAMILIAS DE RESPALDO, CON LAS MEDIDAS DE LAS BUENAS      (02/09/26)
   --------------------------------------------------------------------------
   EL PROBLEMA, MEDIDO, NO SUPUESTO. Con `font-display: swap` el texto se
   pinta primero con la tipografía del sistema y se recompone al llegar la
   buena. Eso está bien decidido (arriba se explica por qué), pero las dos
   familias del sistema NO MIDEN LO MISMO que las nuestras:

     Literata     es un  6,2 % más ancha que Georgia
     Public Sans  es un 11,9 % más ancha que la `system-ui` de macOS

   Así que el texto provisional cabe en menos líneas que el definitivo, y al
   llegar la fuente buena el bloque CRECE y la página salta. Medido en la
   portada con las fuentes retrasadas 1,2 s (Chromium, 1440×900):
   `.hero__inner` pasaba de 696 px a 773 px de alto y, como el hero centra su
   contenido en 100vh, todo subía 39 px de golpe. **CLS 0,079 a 1440 y 0,047
   a 390** — la mitad del presupuesto de 0,1, gastada en un salto de fuente.

   EL ARREGLO. Dos familias de respaldo que no descargan nada (`local()`: es
   la fuente que el visitante ya tiene instalada) y a las que se les corrige
   la anchura con `size-adjust` hasta que ocupan EXACTAMENTE lo mismo que la
   nuestra. Como el texto provisional ya rompe las líneas donde las va a
   romper el definitivo, al hacer el cambio no se mueve nada.

   LOS NÚMEROS SON MEDIDOS, uno a uno, con `canvas.measureText` sobre la
   misma frase del titular de la portada a 100 px:

     Literata 2257,8 px · Georgia 2140,1 px  →  105,5 %  → respaldo 2257,6 px
     Public Sans 2268,5 px · Helvetica 2195  →  103,3 %  → respaldo 2269,1 px

   `ascent-override` y `descent-override` copian las cajas de Literata (118/31
   por cada 100 de eme) y de Public Sans (95/23). Con la interlínea sin unidad
   que usa toda la web no cambian el alto de línea, pero sí la posición de la
   base: sin ellos el texto provisional se apoya unos píxeles más arriba y se
   nota al recomponer.

   RESULTADO MEDIDO, con el mismo retraso de 1,2 s:
     1440×900 · CLS 0,079 → 0,014
      390×844 · CLS 0,047 → 0,000

   SI ALGÚN DÍA SE CAMBIA DE TIPOGRAFÍA, ESTOS DOS BLOQUES SE VUELVEN A MEDIR.
   Un `size-adjust` heredado de otra familia es peor que no tenerlo: mueve el
   texto provisional a un sitio que tampoco es el bueno.
   ══════════════════════════════════════════════════════════════════════════ */
@font-face {
  font-family: 'Literata respaldo';
  src: local('Georgia'), local('Times New Roman'), local('Liberation Serif');
  size-adjust: 105.5%;
  ascent-override: 111%;
  descent-override: 29%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Public Sans respaldo';
  src: local('Helvetica Neue'), local('Arial'), local('Liberation Sans');
  size-adjust: 103.3%;
  ascent-override: 91%;
  descent-override: 22%;
  line-gap-override: 0%;
}
