/* Reset & Base Typography */
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Skip-link accesible: oculto hasta recibir foco por teclado */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    /* por encima de la cabecera sticky y de la publicidad: es lo primero que se
       enfoca y tiene que verse sobre cualquier cosa */
    z-index: var(--z-overlay);
    padding: var(--space-xs) var(--space-s);
    background: var(--action-strong);
    color: var(--action-strong-ink);
    font-family: var(--font-family-sans);
    font-weight: 600;
    text-decoration: none;
    border-radius: 0 0 var(--radius-sm) 0;
}

.skip-link:focus {
    left: 0;
}

/* Texto solo para lectores de pantalla: etiquetas y encabezados que la
   estructura necesita pero el diseño no muestra */
.visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

/* Evita el contorno de foco al saltar al contenedor principal (no es interactivo) */
.main-content:focus {
    outline: none;
}

/* Misma razón que en .btn: ningún <button> del site debe heredar el gris de
   sistema que `color-scheme: light dark` activa. Los componentes que sí quieren
   relleno lo declaran por clase, que gana a este selector de elemento. */
button {
    background-color: transparent;
}

/* --- FOCO DE TECLADO (WCAG 2.4.7 / 2.4.11) ---------------------------------
   Un solo anillo para todo el site. Funciona sobre cualquier superficie porque
   el outline-offset lo dibuja FUERA del control: el anillo cae sobre el fondo
   del contenedor, no sobre el propio componente. Por eso un botón dorado y uno
   blanco pueden compartir anillo. Los módulos oscuros solo redeclaran
   --focus-ring; no necesitan reglas de foco propias.
   -------------------------------------------------------------------------- */
/* Sobre tinta el gold-800 se apaga a 2,3:1 y el anillo desaparece.
   Solo módulos con fondo oscuro real: .paywall es crema, no entra. */
.mp-privel,
.mp-subscribe-promo {
    --focus-ring: var(--focus-on-ink);
    /* 11,1:1 sobre tinta */
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 3px;
    /* La cabecera es sticky (70px): sin esto el elemento que recibe el foco
       queda debajo de ella cuando el navegador hace scroll hasta él. */
    scroll-margin-block: var(--header-offset);
}

/* Controles pegados al borde de un contenedor con overflow:hidden, que
   recortaría un anillo exterior. Aquí el anillo va por dentro. */
.mp-privel__subnav-link:focus-visible,
.rp-toggle__btn:focus-visible,
.card__image a:focus-visible,
.mp-report__media a:focus-visible,
.mp-privel__media a:focus-visible,
.rel__media a:focus-visible,
.sumario-cover a:focus-visible {
    outline-offset: -3px;
}

/* Alto contraste de Windows: el dorado no existe, cede al color del sistema */
@media (forced-colors: active) {

    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible,
    summary:focus-visible,
    [tabindex]:not([tabindex="-1"]):focus-visible {
        outline-color: Highlight;
    }
}

/* iOS agranda el texto por su cuenta al girar a horizontal y descuadra la escala
   fluida; con 100 % se respeta la escala y el zoom del usuario sigue funcionando. */
html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    margin: 0;
    padding: 0;
    font-family: var(--font-family-sans);
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: var(--text-body);
    background-color: var(--surface-page);
    -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--font-family-serif);
    line-height: var(--line-height-tight);
    color: var(--text-strong);
    margin-top: 0;
    margin-bottom: var(--space-s);
    /* Titulares de dos o tres líneas con las líneas igualadas: evita la viuda de
       una sola palabra que deja el ajuste voraz. Donde no se soporta, no pasa nada. */
    text-wrap: balance;
}

h1 a,
h2 a,
h3 a {
    text-decoration: none !important;
}

h1 {
    font-size: var(--font-size-xxl);
}

h2 {
    font-size: var(--font-size-xl);
}

h3 {
    font-size: var(--font-size-lg);
}

h4 {
    font-size: var(--font-size-md);
}

p {
    margin-top: 0;
    margin-bottom: var(--space-m);
    max-width: 70ch;
    /* En párrafos `balance` sería caro y estrecharía la caja; `pretty` solo evita
       la última línea de una palabra. */
    text-wrap: pretty;
}

a {
    color: var(--link);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
    text-decoration-color: var(--link-underline);
    /* El anillo de foco NO se transiciona: debe aparecer instantáneo */
    transition: color 0.2s ease, text-decoration-color 0.2s ease;
}

a:hover {
    color: var(--link-hover);
    text-decoration-color: var(--link-hover);
}

img,
video,
iframe {
    max-width: 100%;
    height: auto;
    display: block;
}

.serif {
    font-family: var(--font-family-serif);
}