/*
 * Tipografía del sitio, una sola para todo (público y panel).
 *
 * ── Qué había antes ──────────────────────────────────────────────────────────────
 *
 * 1. Se cargaban SEIS familias, y solo se usaba una.
 *
 *    - **Source Sans Pro**, la que de verdad usaba el CSS, por `@import` en TRES hojas a
 *      la vez: home.css, site.css y 2022/css/style.css. Y un `@import` dentro de un CSS
 *      es la forma más lenta de traer una fuente: el navegador tiene que descargar y
 *      parsear la hoja antes de descubrir que necesita otra petición. Desde home.css
 *      pedía además doce variantes con sus cursivas.
 *    - **Open Sans, Raleway y Poppins** desde el `<link>` del layout, con ocho variantes
 *      cada una y **ninguna regla que las use**: las tres estaban comentadas en
 *      style.css, sustituidas justamente por Source Sans Pro.
 *    - **Anton**, que solo aparecía en una regla comentada, y **Roboto Condensed**, que
 *      no aparecía en ninguna — la única regla que pedía «Roboto» ni siquiera es esa
 *      familia.
 *
 * 2. Ahora se pide una vez, desde el layout, con preconnect a los dos dominios de Google
 *    Fonts (el CSS viene de uno y los .woff2 del otro).
 *
 * 3. `body { font-size: 16pt }` — una unidad de imprenta. 16pt son 21,33 px, y con las
 *    media queries de site.css bajaba a 14pt (18,67 px) y 12pt (16 px). El resultado: el
 *    texto era MÁS grande en el monitor grande, donde se lee de lejos, y más pequeño en
 *    el portátil.
 *
 * 4. `a` y `p` traían `font-family: sans-serif` por su cuenta, así que el texto corrido y
 *    los enlaces ignoraban la fuente del cuerpo de todas formas.
 *
 * ── Qué hay ahora ────────────────────────────────────────────────────────────────
 *
 * **Inter** para todo. Está pensada para pantalla: en cuerpos pequeños —una tarjeta del
 * listado en un móvil— se distingue mejor la 1 de la l y el 0 de la O que en una fuente
 * de rótulo, y trae Latin Extended, que es lo que necesita el **vietnamita** para sus
 * diacríticos.
 *
 * ⚠️ **Noto Sans Khmer** no es un adorno: el sitio ofrece jemer y **ninguna fuente latina
 *    de interfaz —Inter incluida— tiene glifos khmer**. Sin ella, ese idioma se pinta con
 *    lo que cada sistema tenga, y en Windows suele no tener nada. Va detrás en la pila:
 *    el navegador elige por carácter, así que el latín sale en Inter y el jemer en Noto.
 *
 * Los tamaños pasan a rem con `clamp()`, así que crecen con el ancho de forma continua en
 * vez de a saltos, y el usuario que agranda la letra del navegador sigue mandando.
 *
 * Se carga DESPUÉS del tema para ganarle sin usar !important más de lo necesario.
 */

:root {
    --fuente: 'Inter', 'Noto Sans Khmer', -apple-system, BlinkMacSystemFont,
              'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

    /* 16 px en el móvil, 17 px en el escritorio. No más: el cuerpo estaba a 21,33 px y
       en una tarjeta de listado eso son cuatro palabras por línea. */
    --cuerpo: clamp(1rem, 0.97rem + 0.15vw, 1.0625rem);
}

/* El jemer con su fuente por delante: sus metros son distintos y mezclándolo con Inter
   las líneas quedaban desalineadas. */
:lang(km) {
    --fuente: 'Noto Sans Khmer', 'Inter', sans-serif;
}

html { -webkit-text-size-adjust: 100%; }

/* `!important` en la familia y en el tamaño, y no por comodidad: el tema los fija en
   varios sitios y hay que ganarle desde aquí.

   ⚠️ La que costó encontrar: `home.css` tenía
   `html body { font-family: "Source Sans Pro" … !important }`. El selector `html body`
   tiene especificidad (0,0,2), así que con `!important` le ganaba a un
   `body { … !important }` de una hoja POSTERIOR — y al no incluir al propio `html`,
   dejaba `html` con la fuente nueva y `body` con la vieja, que es lo que se veía al
   medirlo. Ya se quitó de ahí; se busca por `html body`, no por `body`, si vuelve a
   aparecer algo así.

   El tamaño lo fija site.css en `pt` dentro de tres media queries, y la que coincide
   gana siempre por orden de aparición. */
html,
body {
    font-family: var(--fuente) !important;
}

body {
    font-size: var(--cuerpo) !important;
    font-weight: 400;
    line-height: 1.6;
    letter-spacing: -0.005em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* La lista es explícita porque site.css y style.css asignan la familia elemento por
   elemento —incluidos `a` y `p`, que la forzaban a `sans-serif`—. */
body, input, select, textarea, button,
h1, h2, h3, h4, h5, h6,
p, a, li, td, th, label, span, div,
.nav-link, .dropdown-item, .btn, .form-control, .form-select {
    font-family: var(--fuente);
}

/* Los tamaños de formulario y tabla los fija site.css en pt; aquí se normalizan. */
input, select, textarea, button, .form-control, .form-select {
    font-size: 1rem;
}

/* --- titulares ---
   Escala fluida: en un móvil un h1 de 40 px se come la pantalla, y en un monitor de 27"
   uno de 25 px no se lee como titular. */
h1 { font-size: clamp(1.6rem, 1.25rem + 1.6vw, 2.25rem); line-height: 1.2; }
h2 { font-size: clamp(1.35rem, 1.15rem + 0.9vw, 1.75rem); line-height: 1.25; }
h3 { font-size: clamp(1.15rem, 1.05rem + 0.5vw, 1.375rem); line-height: 1.3; }
h4 { font-size: 1.125rem; }
h5, h6 { font-size: 1rem; }

h1, h2, h3, h4, h5, h6 {
    font-weight: 700;
    letter-spacing: -0.015em;
}

/* site.css pone `strong, b { font-weight: 900 }`. Inter tiene ese grosor, pero a 900 un
   «strong» dentro de un párrafo pesa demasiado y parece un titular suelto. */
strong, b { font-weight: 600; }

p { line-height: 1.65; }

/* --- lo que NO debe heredar la familia ---
   Los iconos son fuentes con glifos propios: si se les cambia la familia, desaparecen. */
.bi, .bi::before,
[class^="bx"], [class*=" bx"],
.fa, .fas, .far, .fab,
.swiper-button-next::after, .swiper-button-prev::after {
    font-family: inherit;
}
.bi::before { font-family: 'bootstrap-icons' !important; }

/* Los números de las tablas y las cifras del panel, con cifras de ancho fijo: si no, las
   columnas bailan al cambiar de página porque el 1 es más estrecho que el 8. */
.dashboardTable td, .res-numero, .adjunto-n, .rep-paginador .page-link {
    font-variant-numeric: tabular-nums;
}

/* El código y las claves, monoespaciado de verdad. */
code, kbd, pre, samp {
    font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas,
                 'Liberation Mono', monospace;
    font-size: 0.9em;
}
