/* ═══════════════════════════════════════════════════════════════
   TIPOGRAFÍA DE LA PLATAFORMA
   Hoja única para todo /api/. La cargan los tres shells que existen:
       · header.php               → las ~68 páginas del panel general
       · dashboard_client/head.php → la ficha de cliente (v1 y v2)
       · cap/ui.php               → el panel CAP

   Sustituye a google-sans.css y product-sans.css, que estaban sueltas
   y sólo las veía la v2.

   ── EL REPARTO ──────────────────────────────────────────────────
   El mismo criterio que usa Google, y el mismo que ya seguía la v2:

     Google Sans    interfaz. Todo lo que se lee a 13-16 px.
     Product Sans   marca. Sólo texto grande y no numérico. Las dos
                    familias se parecen demasiado como para distinguirse
                    a 16 px: mezclarlas ahí parecería un fallo, no una
                    decisión. Se aplica vía --vega-font-display, nunca
                    de forma automática.
     JetBrains Mono cifras y datos duros. Se sigue cargando de Google
                    Fonts desde cada shell.

   ── LO QUE ESTA HOJA NO TOCA ────────────────────────────────────
   Correos y PDFs. Van en Arial o DejaVu a propósito —Arial porque los
   clientes de correo no cargan fuentes externas, DejaVu porque es la
   que trae Dompdf— y son documentos aparte que nunca enlazan este
   fichero. Además usan estilos en línea, que ganan a cualquier hoja.
   Si algún día alguien "unifica" también los correos, la letra se verá
   bien en su navegador y en Outlook saldrá Times New Roman.

   ── POR QUÉ `html *` Y NO `body` ────────────────────────────────
   Varias hojas del proyecto fijan la fuente con `* { font-family: ... }`
   (assets/dashboard_client.css, entre otras). Un `body { ... }` no las
   desbanca: el universal se aplica a cada elemento directamente, así que
   los hijos nunca llegan a heredar del body.
   `html *` tiene especificidad 0,0,2 y sí gana. Y es deliberado no subir
   a 0,1,0 (un selector de clase): a esa altura desbancaríamos a
   `.fas`/`.fa-solid` de Font Awesome y los iconos saldrían como letras
   sueltas. Ese fallo ya se cometió una vez; de ahí el comentario.

   Los .woff2 están recortados a latín + extendido-A. Los .ttf de origen
   NO están en el servidor: se borraron tras convertir porque quedaban
   descargables desde fuera. Para regenerar, volver a subirlos aquí y:
       python3 scripts/convertir_fuentes_woff2.py
═══════════════════════════════════════════════════════════════ */

/* ─── Google Sans (variable) ────────────────────────────────────
   Un solo fichero para toda la familia. Ejes reales de ESTE fichero,
   leídos de su tabla fvar (no son los del catálogo de Google):
     wght  400..700  No llega a 900. Los títulos que piden 800 se
                     sirven a 700; se ve bien, pero pesan algo menos
                     que con Barlow, que sí tenía 800 real.
     opsz   17..18   Un punto de recorrido: inerte. Este corte ya viene
                     optimizado para ~17 pt. No esperes de aquí el
                     cambio de dibujo entre 14 px y 40 px.
     GRAD -50..200   Engorda el trazo sin cambiar el ancho. Sin usar;
                     serviría para compensar en un modo oscuro.
   El nombre largo es el del fichero de origen, se deja tal cual para
   que al volver a subirlo coincida sin renombrar nada. */
@font-face {
    font-family: 'Google Sans';
    src: url('GoogleSans-VariableFont_GRADopszwght.woff2') format('woff2');
    font-weight: 400 700;   /* rango real del eje, no un valor suelto */
    font-style: normal;
    font-display: swap;
}

/* ─── Product Sans (marca) ──────────────────────────────────────
   Cuatro cortes de los doce de la familia. Thin, Light y las itálicas
   no las pide nadie: el texto de marca va en negrita y nunca en
   cursiva, así que convertirlas sería cargar la carpeta de ficheros
   que no se descargan jamás. */
@font-face {
    font-family: 'Product Sans';
    src: url('ProductSans-Regular.woff2') format('woff2');
    font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'Product Sans';
    src: url('ProductSans-Medium.woff2') format('woff2');
    font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'Product Sans';
    src: url('ProductSans-Bold.woff2') format('woff2');
    font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'Product Sans';
    src: url('ProductSans-Black.woff2') format('woff2');
    font-weight: 900; font-style: normal; font-display: swap;
}

/* ─── JetBrains Mono (cifras y datos duros) ─────────────────────
   También autoalojada. Es OFL —libre de verdad, sin la discusión de
   las otras dos— y se bajó de Google Fonts, que es su distribución
   oficial. Variable, wght 100..800.

   Va partida en dos con unicode-range, igual que la sirve Google: el
   navegador sólo se descarga el fichero extendido si en la página hay
   algún carácter que lo necesite. Como el 99% de lo que se pinta en
   mono son importes, DNIs y fechas, en la práctica sólo baja el de
   latín (40 KB) y el extendido (15 KB) no llega a pedirse nunca. */
@font-face {
    font-family: 'JetBrains Mono';
    src: url('JetBrainsMono-VF-latin-ext.woff2') format('woff2');
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
    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: 'JetBrains Mono';
    src: url('JetBrainsMono-VF-latin.woff2') format('woff2');
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
    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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                   U+FEFF, U+FFFD;
}

/* ─── Tokens ────────────────────────────────────────────────────
   El respaldo es system-ui, no Barlow. Barlow era el respaldo mientras
   se seguía cargando de Google Fonts; ahora que no se carga, dejarlo en
   la pila no servía de nada —una fuente que no está declarada ni
   instalada se ignora— y encima invitaba a pensar que había red de
   seguridad donde no la hay. system-ui es la del sistema: instantánea,
   siempre disponible y sin salir a Internet. */
:root {
    --vega-font:         'Google Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --vega-font-display: 'Product Sans', 'Google Sans', system-ui, -apple-system, sans-serif;
    --vega-font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

/* Activa el eje óptico. Aquí no hace nada (recorrido 17-18), pero si
   algún día se sustituye el fichero por uno de rango completo, la línea
   ya está puesta y funciona sola. */
html {
    font-optical-sizing: auto;
}

html * {
    font-family: var(--vega-font);
}

/* Los elementos de código son selectores de tipo (0,0,1) y perderían
   contra el `html *` de arriba, así que se repiten con el mismo peso
   (0,0,2) y más abajo, que es lo que los hace ganar. Sin esto, cualquier
   <pre> o <code> del proyecto se quedaría en proporcional. */
html code,
html pre,
html kbd,
html samp,
html tt {
    font-family: var(--vega-font-mono);
}
