/* ============================================================
   base.css — reset, elementos base, tipografía, accesibilidad.
   Sin reglas de layout de secciones.
   ============================================================ */

*, *::before, *::after{ box-sizing:border-box; }

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

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:var(--text-base);
  line-height:var(--line-height-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

h1, h2, h3, h4{
  font-family:var(--font-display);
  font-weight:700;
  line-height:var(--line-height-tight);
  color:var(--ink);
  margin:0;
  text-wrap:balance;
}

p{ margin:0; }
p + p{ margin-top:var(--space-2); }

a{ color:inherit; }
img, svg{ display:block; max-width:100%; height:auto; }
svg{ fill:none; stroke:currentColor; }

ul{ margin:0; padding:0; list-style:none; }

strong{ font-weight:700; }

small{ font-size:var(--text-sm); }

/* Línea de lectura cómoda para párrafos */
.prose p{ max-width:var(--measure); }

/* Datos técnicos en tabular */
.data{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-size:var(--text-sm); }

/* Enlaces en navegación y acciones */
.nav-link, .btn{ font-family:var(--font-display); }

/* Foco visible, independiente del navegador */
:focus-visible{
  outline:var(--focus-ring);
  outline-offset:var(--focus-offset);
  border-radius:var(--radius-sm);
}

::selection{ background:var(--accent); color:var(--accent-ink); }

/* Respeto por movimiento reducido */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}