/* =============================================================
   base.css — tokens, reset, layout y tipografía de sección.
   Todo lo compartido por la página vive aquí. Los bloques
   visuales concretos están en components.css.
   ============================================================= */

/* --- Tokens: única fuente de color del sitio ---------------- */
:root{
  --bg:#0B1220; --bg2:#0E1626; --card:#111A2C; --border:#1E293B;
  --text:#E8EDF6; --muted:#9AA8BF; --blue:#1BAE63; --teal:#34D5C6; --green:#2FBF71;
  --btn:#0B8046; /* verde más oscuro para botones con texto blanco (mejor contraste) */
}

/* --- Reset y base ------------------------------------------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);
  font-family:ui-sans-serif,system-ui,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}

/* --- Layout: contenedor y ritmo vertical de secciones -------- */
.wrap{max-width:1080px;margin:0 auto;padding:0 22px}
section.block{padding:64px 0}
section.block.tight{padding-top:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:38px}

/* --- Tipografía de sección (encabezado de cada bloque) ------- */
.eyebrow{color:var(--teal);font-weight:700;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}
h2{font-size:clamp(1.6rem,4vw,2.3rem);font-weight:800;letter-spacing:-.01em;margin:.3em 0 .2em}
.sub{color:var(--muted);max-width:640px}

/* --- Utilidad: aparición al entrar en pantalla ---------------
   La clase .reveal la añade scroll-reveal.js; sin JS o con
   movimiento reducido, el contenido queda visible siempre.     */
.reveal{opacity:0;transform:translateY(20px);
  transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1);will-change:opacity,transform}
.reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
