/* ==========================================================================
   Simplitt · Estilos comunes de toda la web
   Primero móvil: las reglas base son para pantallas pequeñas y los bloques
   @media de más abajo ajustan tablet (768 px) y escritorio (1024 px).
   ========================================================================== */

/* ---------- 0. Tipografías (alojadas en la propia web, carpeta fonts) ----------
   Sora y DM Sans, licencia SIL Open Font License (ver fonts/OFL-*.txt).
   Solo el juego de caracteres latino, suficiente para el español. */
@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 600 700;
  font-display: swap;
  src: url("../fonts/sora-latin.woff2") format("woff2");
}
@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/dm-sans-latin.woff2") format("woff2");
}

/* ---------- 1. Colores, letras y medidas (variables) ---------- */
:root {
  /* Colores de marca */
  --azul: #1F5F8B;          /* Botones, enlaces, iconos */
  --azul-oscuro: #184C70;   /* Botón al pasar el ratón */
  --noche: #13293D;         /* Titulares y texto */
  --texto-2: #475B6E;       /* Subtítulos, notas */
  --cielo: #CFE6F5;         /* Tarjetas, fondos, imágenes */
  --coral: #FAD4CC;         /* Destacados, etiquetas */
  --menta: #D5F0E6;         /* Fondos de apoyo, mensajes de éxito */
  --fondo-suave: #F5F9FC;   /* Fondos de sección */
  --blanco: #FFFFFF;        /* Fondo general */
  --borde: #C5D6E3;         /* Bordes y botón secundario */
  --error: #B42318;         /* Solo para avisos de error del formulario */

  /* Tipografías */
  --letra-titulos: "Sora", "Segoe UI", Arial, sans-serif;
  --letra-texto: "DM Sans", "Segoe UI", Arial, sans-serif;

  /* Tamaños de letra (móvil) */
  --h1: 34px;
  --h2: 28px;
  --h3: 20px;
  --texto: 16px;

  /* Espaciado en múltiplos de 8 px */
  --e1: 8px;
  --e2: 16px;
  --e3: 24px;
  --e4: 32px;
  --e5: 40px;
  --e6: 48px;
  --e8: 64px;
  --e12: 96px;

  --radio: 20px;
  --radio-grande: 24px;
  --ancho-max: 1160px;
  --margen-lateral: 16px;
  --alto-cabecera: 80px;
}

@media (min-width: 768px) {
  :root {
    --h1: 48px;
    --h2: 36px;
    --h3: 22px;
    --texto: 18px;
    --margen-lateral: 32px;
    --alto-cabecera: 96px;
  }
}

/* ---------- 2. Base ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--alto-cabecera) + var(--e2));
}

/* Quien pide "reducir movimiento" en su ordenador o móvil ve la web sin animaciones */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    transition: none !important;
    animation: none !important;
  }
}

[hidden] { display: none !important; }

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;       /* el pie queda abajo aunque la página sea corta */
  margin: 0;
  background: var(--blanco);
  color: var(--noche);
  font-family: var(--letra-texto);
  font-size: var(--texto);
  line-height: 1.55;
}

h1, h2, h3 {
  margin: 0 0 var(--e2);
  font-family: var(--letra-titulos);
  font-weight: 700;
  line-height: 1.2;
  color: var(--noche);
  text-wrap: balance;
}

h1 { font-size: var(--h1); letter-spacing: -0.02em; }
h2 { font-size: var(--h2); letter-spacing: -0.015em; }
h3,
.h3 { font-size: var(--h3); font-weight: 600; line-height: 1.3; letter-spacing: 0; }

main { flex: 1 0 auto; }
.main--suave {              /* páginas cortas: contenido centrado en vertical */
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--fondo-suave);
}

p { margin: 0 0 var(--e2); }
p:last-child { margin-bottom: 0; }

img, svg, video { display: block; max-width: 100%; }

a {
  color: var(--azul);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
a:hover { text-decoration-thickness: 2px; }

/* Foco visible para quien navega con teclado */
:focus-visible {
  outline: 3px solid var(--azul);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Texto solo para lectores de pantalla */
.solo-lector {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* Enlace "Saltar al contenido" (aparece al pulsar Tab) */
.saltar {
  position: absolute;
  left: var(--e2);
  top: -100px;
  z-index: 100;
  padding: var(--e1) var(--e2);
  background: var(--noche);
  color: var(--blanco);
  border-radius: 8px;
  font-weight: 600;
}
.saltar:focus { top: var(--e2); }

/* ---------- 3. Piezas reutilizables ---------- */
.contenedor {
  width: 100%;
  max-width: calc(var(--ancho-max) + var(--margen-lateral) * 2);
  margin: 0 auto;
  padding: 0 var(--margen-lateral);
}

.seccion { padding: var(--e8) 0; }
.seccion--suave { background: var(--fondo-suave); }
.seccion.seccion--sin-arriba { padding-top: 0; }   /* para secciones seguidas sobre fondo blanco */

@media (min-width: 1024px) {
  .seccion { padding: var(--e12) 0; }
}

.seccion__cabecera {
  max-width: 720px;
  margin-bottom: var(--e5);
}
.seccion__cabecera--centro {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.entradilla {
  color: var(--texto-2);
  font-size: 1.1em;
}

/* Botones */
.boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--e1);
  min-height: 48px;
  padding: 12px var(--e3);
  border: 2px solid var(--azul);
  border-radius: 999px;
  background: var(--azul);
  color: var(--blanco);
  font-family: var(--letra-texto);
  font-size: var(--texto);
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.15s, border-color 0.15s;
}
.boton:hover {
  background: var(--azul-oscuro);
  border-color: var(--azul-oscuro);
}

.boton--secundario {
  background: var(--blanco);
  border-color: var(--borde);
  color: var(--noche);
}
.boton--secundario:hover {
  background: var(--fondo-suave);
  border-color: var(--azul);
}

.botones {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e2);
}

/* En móvil los botones ocupan todo el ancho: más fáciles de pulsar */
@media (max-width: 479px) {
  .botones .boton { width: 100%; }
}

/* Etiqueta coral ("Primera reunión gratuita") */
.etiqueta {
  display: inline-block;
  margin-bottom: var(--e2);
  padding: 6px 14px;
  background: var(--coral);
  color: var(--noche);
  border-radius: 999px;
  font-size: 15px;
  font-weight: 600;
}

/* Iconos de línea */
.icono {
  width: 28px;
  height: 28px;
  fill: none;
  stroke: var(--azul);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

.icono-caja {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin-bottom: var(--e2);
  background: var(--cielo);
  border-radius: 16px;
}

/* Tarjetas */
.tarjeta {
  padding: var(--e3);
  background: var(--blanco);
  border: 1px solid var(--borde);
  border-radius: var(--radio-grande);
}
.tarjeta h3 { margin-bottom: var(--e1); }
.tarjeta p { color: var(--texto-2); }
.tarjeta p.h3 { color: var(--noche); }

.rejilla {
  display: grid;
  gap: var(--e2);
}
@media (min-width: 768px) {
  .rejilla--2 { grid-template-columns: repeat(2, 1fr); gap: var(--e3); }
  .rejilla--4 { grid-template-columns: repeat(2, 1fr); gap: var(--e3); }
}
@media (min-width: 1024px) {
  .rejilla--4 { grid-template-columns: repeat(4, 1fr); }
}

/* Enlace con flecha ("Ver el método completo") */
.enlace-flecha {
  display: inline-flex;
  align-items: center;
  gap: var(--e1);
  min-height: 44px;
  font-weight: 600;
  text-decoration: none;
}
.enlace-flecha:hover { text-decoration: underline; }
.enlace-flecha svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 0.15s;
}
.enlace-flecha:hover svg { transform: translateX(3px); }

/* Símbolo de marca: el nudo que se convierte en flecha (assets/simbolo/nudo-flecha.svg).
   Se usa pequeño como conector o para guiar hacia un botón. Proporción 1153 × 269. */
.simbolo {
  display: block;
  width: 96px;
  height: auto;
  flex-shrink: 0;
}
.simbolo--centro { margin-left: auto; margin-right: auto; }
.simbolo--abajo { transform: rotate(90deg); }
.simbolo--arriba { transform: rotate(-90deg); }
.simbolo--izquierda { transform: scaleX(-1); }
.simbolo--cabecera {
  width: min(260px, 70%);
  margin-bottom: var(--e3);
}
.cabecera-pagina--centro .simbolo--cabecera { margin-left: auto; margin-right: auto; }

/* El símbolo "se dibuja" de izquierda a derecha: del nudo a la flecha */
@keyframes dibujar-simbolo {
  from { clip-path: inset(0 100% 0 0); }
  to { clip-path: inset(0 0 0 0); }
}
.js .simbolo--dibuja { animation: dibujar-simbolo 1.4s cubic-bezier(0.6, 0, 0.2, 1) 0.35s both; }

/* Guía hacia un botón (solo en pantallas medianas y grandes) */
.simbolo--guia { width: 104px; }
@media (max-width: 767px) {
  .simbolo--guia { display: none; }
}

/* Marcador de contenido pendiente: se ve a propósito */
.pendiente {
  display: inline-block;
  padding: 2px 8px;
  background: var(--coral);
  border: 2px dashed var(--noche);
  border-radius: 8px;
  color: var(--noche);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
}

/* Foto con esquinas redondeadas */
.foto {
  margin: 0;
  overflow: hidden;
  border-radius: var(--radio-grande);
  background: var(--cielo);
}
.foto img {
  width: 100%;
  height: auto;
}

/* Vídeo de la portada: sobre blanco, sin bordes, con un botón de play suave */
.video-hero {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--blanco);
}
.video-hero video {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: var(--blanco);
  border: 0;
  outline-offset: 4px;
}
.video-hero__play {
  position: absolute;
  top: 80%;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  padding: 0;
  background: var(--cielo);
  border: 0;
  border-radius: 50%;
  color: var(--azul);
  cursor: pointer;
  transform: translate(-50%, -50%);
  transition: transform 0.2s ease;
  animation: latido 2.8s ease-out infinite;
}
.video-hero__play svg {
  width: 26px;
  height: 26px;
  margin-left: 4px;     /* el triángulo parece centrado a la vista */
  fill: currentColor;
}
.video-hero__play:hover { transform: translate(-50%, -50%) scale(1.08); }
.video-hero__play:focus-visible { outline-offset: 4px; border-radius: 50%; }
.video-hero.reproduciendo .video-hero__play { display: none; }

@keyframes latido {
  0% { box-shadow: 0 0 0 0 rgba(207, 230, 245, 0.95); }
  70% { box-shadow: 0 0 0 18px rgba(207, 230, 245, 0); }
  100% { box-shadow: 0 0 0 0 rgba(207, 230, 245, 0); }
}

@media (min-width: 1024px) {
  .video-hero__play { width: 72px; height: 72px; }
  .video-hero__play svg { width: 28px; height: 28px; }
}

/* ---------- 4. Cabecera ---------- */
.cabecera {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--blanco);
  border-bottom: 1px solid var(--borde);
}

.cabecera__barra {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--e2);
  min-height: var(--alto-cabecera);
}

.logo {
  display: block;
  flex-shrink: 0;
  padding: var(--e1) 0;   /* margen libre alrededor del logo */
}
.logo img {
  width: 160px;            /* ancho mínimo del logo */
  height: auto;
}

/* Botón "Menú" (solo móvil y tablet) */
.menu-boton {
  display: inline-flex;
  align-items: center;
  gap: var(--e1);
  min-height: 48px;
  padding: 8px 16px;
  background: var(--blanco);
  border: 2px solid var(--borde);
  border-radius: 999px;
  color: var(--noche);
  font-family: var(--letra-texto);
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
}
.menu-boton:hover { border-color: var(--azul); }
.menu-boton svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
}
.menu-boton .menu-boton__cerrar { display: none; }
.menu-boton[aria-expanded="true"] .menu-boton__abrir { display: none; }
.menu-boton[aria-expanded="true"] .menu-boton__cerrar { display: block; }

/* Sin JavaScript no hay botón: el menú se muestra siempre */
.menu-boton { display: none; }
.js .menu-boton { display: inline-flex; }

/* Menú desplegable en móvil */
.menu {
  padding: 0 0 var(--e3);
}
.js .menu { display: none; }
.js .menu.abierto { display: block; }

.menu__lista {
  margin: 0;
  padding: 0;
  list-style: none;
}
.menu__lista a {
  display: flex;
  align-items: center;
  min-height: 56px;
  padding: 0 var(--e1);
  border-bottom: 1px solid var(--borde);
  color: var(--noche);
  font-size: 18px;
  font-weight: 500;
  text-decoration: none;
}
.menu__lista a:hover { color: var(--azul); }
.menu__lista a[aria-current="page"] {
  color: var(--azul);
  font-weight: 600;
}
.menu .boton {
  width: 100%;
  margin-top: var(--e3);
}

/* Escritorio: menú siempre visible en una línea */
@media (min-width: 1024px) {
  .js .menu-boton { display: none; }

  .cabecera .contenedor {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--e4);
  }
  .cabecera__barra { flex-shrink: 0; }

  .menu,
  .js .menu {
    display: flex;
    align-items: center;
    gap: var(--e3);
    padding: 0;
  }
  .menu__lista {
    display: flex;
    gap: var(--e1);
  }
  .menu__lista a {
    min-height: 44px;
    padding: 0 12px;
    border-bottom: 0;
    border-radius: 999px;
    font-size: 17px;
  }
  .menu__lista a:hover { background: var(--fondo-suave); }
  .menu__lista a,
  .menu .boton { white-space: nowrap; }
  .menu .boton {
    width: auto;
    margin-top: 0;
  }
}

/* Portátiles pequeños: el menú se compacta un poco para caber en una línea */
@media (min-width: 1024px) and (max-width: 1199px) {
  .cabecera .contenedor { gap: var(--e3); }
  .menu,
  .js .menu { gap: var(--e2); }
  .menu__lista { gap: 0; }
  .menu__lista a {
    padding: 0 10px;
    font-size: 16px;
  }
  .menu .boton { padding: 10px 20px; }
}

/* ---------- 5. Pie de página ---------- */
.pie {
  padding: var(--e8) 0 var(--e4);
  background: var(--noche);
  color: var(--blanco);
}
.pie a {
  color: var(--blanco);
  text-decoration: none;
}
.pie a:hover { text-decoration: underline; }
.pie :focus-visible { outline-color: var(--blanco); }

.pie__columnas {
  display: grid;
  gap: var(--e5);
}

.pie__marca img {
  width: 160px;
  height: auto;
  margin-bottom: var(--e2);
}
.pie__marca p {
  max-width: 280px;
  font-family: var(--letra-titulos);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.4;
}

.pie__titulo {
  margin: 0 0 var(--e2);
  font-family: var(--letra-texto);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--cielo);
}

.pie__lista {
  margin: 0;
  padding: 0;
  list-style: none;
}
.pie__lista li { margin-bottom: var(--e1); }
.pie__lista a {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
}

.pie__legal {
  display: flex;
  flex-direction: column;
  gap: var(--e2);
  margin-top: var(--e6);
  padding-top: var(--e3);
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  font-size: 15px;
}
.pie__legal ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e1) var(--e3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.pie__legal p { margin: 0; }

@media (min-width: 768px) {
  .pie__columnas { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .pie__columnas { grid-template-columns: 1.6fr 1fr 1.2fr; }
  .pie__legal {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
}

/* ==========================================================================
   6. Página de Inicio
   ========================================================================== */

/* Cabecera principal (hero) */
.hero {
  padding: var(--e5) 0 var(--e8);
}
.hero__rejilla {
  display: grid;
  gap: var(--e5);
  align-items: center;
}
.hero h1 { margin-bottom: var(--e3); }
.hero__subtitulo {
  margin-bottom: var(--e4);
  color: var(--texto-2);
  font-size: 1.1em;
  max-width: 560px;
}
@media (min-width: 1024px) {
  .hero { padding: var(--e8) 0 var(--e12); }
  .hero__rejilla {
    grid-template-columns: 1.05fr 1fr;
    gap: var(--e8);
  }
}

/* ¿Te suena? */
.problemas {
  display: grid;
  gap: var(--e2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.problemas li {
  display: flex;
  align-items: flex-start;
  gap: var(--e2);
  padding: var(--e3);
  background: var(--blanco);
  border: 1px solid var(--borde);
  border-radius: var(--radio);
}
.problemas .icono { margin-top: 2px; }

@media (min-width: 768px) {
  .problemas { grid-template-columns: repeat(2, 1fr); gap: var(--e3); }
}

/* Cómo trabajamos (resumen): tarjetas unidas por el símbolo nudo-flecha.
   En móvil y tablet van en columna y el símbolo apunta hacia abajo; en escritorio,
   en fila y el símbolo apunta a la derecha. */
.pasos {
  --hueco-pasos: 80px;
  display: grid;
  gap: var(--hueco-pasos);
  margin: 0 0 var(--e5);
  padding: 0;
  list-style: none;
  counter-reset: paso;
}
.paso {
  position: relative;
  padding: var(--e3);
  background: var(--fondo-suave);
  border-radius: var(--radio-grande);
  counter-increment: paso;
}
.paso::after {
  content: "";
  position: absolute;
  top: calc(100% + var(--hueco-pasos) / 2);
  left: 50%;
  width: 64px;
  aspect-ratio: 1153 / 269;
  background: url("../assets/simbolo/nudo-flecha.svg") center / contain no-repeat;
  transform: translate(-50%, -50%) rotate(90deg);
  --empuje: 0 4px;
  transition: clip-path 0.9s cubic-bezier(0.6, 0, 0.2, 1) calc(var(--retraso, 0ms) + 0.35s);
}
.paso:last-child::after { display: none; }
.paso.anima::after { clip-path: inset(0 100% 0 0); }
.paso.anima.visible::after { clip-path: inset(0 0 0 0); }
.paso:not(.anima)::after { animation: empujar 3s ease-in-out 1s infinite; }

@keyframes empujar {
  0%, 100% { translate: 0 0; }
  50% { translate: var(--empuje); }
}
.paso::before {
  content: counter(paso);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin-bottom: var(--e2);
  background: var(--azul);
  color: var(--blanco);
  border-radius: 50%;
  font-family: var(--letra-titulos);
  font-size: 20px;
  font-weight: 700;
}
.paso h3 { margin-bottom: var(--e1); }
.paso p { color: var(--texto-2); }

@media (min-width: 1024px) {
  .pasos {
    --hueco-pasos: 56px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .paso::after {
    top: 48px;      /* a la altura del número */
    left: calc(100% + var(--hueco-pasos) / 2);
    width: 48px;
    transform: translate(-50%, -50%);
    --empuje: 4px 0;
  }
}
@media (min-width: 1200px) {
  .pasos { --hueco-pasos: 84px; }
  .paso::after { width: 70px; }
}

.pasos__pie {
  display: flex;
  align-items: center;
  gap: var(--e2);
}
.pasos__pie .simbolo { width: 88px; }

/* Para quién */
.para-quien {
  display: grid;
  gap: var(--e4);
  padding: var(--e4) var(--e3);
  background: var(--menta);
  border-radius: var(--radio-grande);
}
.para-quien h2 { margin-bottom: var(--e2); }
.para-quien p { font-size: 1.05em; }

.chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.chips li {
  padding: 10px 18px;
  background: var(--blanco);
  border-radius: 999px;
  font-weight: 600;
}

@media (min-width: 1024px) {
  .para-quien {
    grid-template-columns: 1.3fr 1fr;
    align-items: center;
    gap: var(--e8);
    padding: var(--e8);
  }
}

/* Llamada final */
.llamada {
  padding: var(--e5) var(--e3);
  background: var(--cielo);
  border-radius: var(--radio-grande);
  text-align: center;
}
.llamada h2 { margin-bottom: var(--e2); }
.llamada p {
  max-width: 600px;
  margin: 0 auto var(--e4);
}
.llamada .botones { justify-content: center; }

@media (min-width: 1024px) {
  .llamada { padding: var(--e8); }
}

/* ==========================================================================
   7. Páginas interiores (piezas compartidas)
   ========================================================================== */

/* Cabecera de cada página interior */
.cabecera-pagina {
  padding: var(--e6) 0 var(--e8);
  background: var(--fondo-suave);
}
.cabecera-pagina h1 {
  max-width: 860px;
  margin-bottom: var(--e3);
}
.cabecera-pagina .entradilla { max-width: 760px; }
.cabecera-pagina--centro { text-align: center; }
.cabecera-pagina--centro h1,
.cabecera-pagina--centro .entradilla {
  margin-left: auto;
  margin-right: auto;
}
.cabecera-pagina--centro .botones { justify-content: center; }
.cabecera-pagina .botones { margin-top: var(--e4); }

@media (min-width: 1024px) {
  .cabecera-pagina { padding: var(--e8) 0 var(--e12); }
}

/* Texto largo de lectura cómoda */
.texto-largo { max-width: 68ch; }
.texto-largo p { margin-bottom: var(--e3); }

/* Bloque destacado (coral) */
.destacado {
  display: flex;
  align-items: flex-start;
  gap: var(--e2);
  margin-top: var(--e5);
  padding: var(--e3);
  background: var(--coral);
  border-radius: var(--radio);
  color: var(--noche);
}
.destacado .icono { stroke: var(--noche); }
.destacado a { color: var(--noche); font-weight: 600; }

/* Panel de color con esquinas redondeadas */
.panel {
  padding: var(--e4) var(--e3);
  border-radius: var(--radio-grande);
}
.panel--menta { background: var(--menta); }
.panel--cielo { background: var(--cielo); }
.panel--blanco {
  background: var(--blanco);
  border: 1px solid var(--borde);
}
@media (min-width: 1024px) {
  .panel { padding: var(--e8); }
}

/* Lista con marcas de verificación */
.lista-check {
  display: grid;
  gap: var(--e3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.lista-check li {
  display: flex;
  align-items: flex-start;
  gap: var(--e2);
}
.marca {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  background: var(--blanco);
  border-radius: 50%;
}
.marca svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: var(--azul);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.panel--blanco .marca,
.seccion--suave .panel--blanco .marca { background: var(--cielo); }

@media (min-width: 768px) {
  .lista-check--2 { grid-template-columns: repeat(2, 1fr); gap: var(--e3) var(--e5); }
}

/* Dos columnas: texto + imagen, o texto + lista */
.dos-columnas {
  display: grid;
  gap: var(--e5);
  align-items: center;
}
@media (min-width: 1024px) {
  .dos-columnas {
    grid-template-columns: 1fr 1fr;
    gap: var(--e8);
  }
  .dos-columnas--arriba { align-items: start; }
}

.centrado {
  margin-top: var(--e5);
  text-align: center;
}
.centrado .botones { justify-content: center; }

/* Rejilla de 3 columnas (servicios, blog) */
@media (min-width: 768px) {
  .rejilla--3 { grid-template-columns: repeat(2, 1fr); gap: var(--e3); }
}
@media (min-width: 1024px) {
  .rejilla--3 { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- Cómo trabajamos: línea de pasos ---------- */
.linea-pasos {
  max-width: 820px;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: paso;
}
.linea-pasos li {
  position: relative;
  padding: 0 0 var(--e5) 72px;
  counter-increment: paso;
}
.linea-pasos li::before {
  content: counter(paso);
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background: var(--azul);
  border: 2px solid var(--azul);
  color: var(--blanco);
  border-radius: 50%;
  font-family: var(--letra-titulos);
  font-size: 20px;
  font-weight: 700;
  transition: background-color 0.45s ease calc(var(--retraso, 0ms) + 0.2s), color 0.45s ease calc(var(--retraso, 0ms) + 0.2s);
}
/* La línea que une un paso con el siguiente se va rellenando de azul */
.linea-pasos li::after {
  content: "";
  position: absolute;
  top: 56px;
  bottom: 8px;
  left: 23px;
  width: 2px;
  background: linear-gradient(var(--azul), var(--azul)) top / 100% 100% no-repeat, var(--borde);
  transition: background-size 1.1s ease calc(var(--retraso, 0ms) + 0.5s);
}
.linea-pasos li.anima::before { background-color: var(--blanco); color: var(--azul); }
.linea-pasos li.anima::after { background-size: 100% 0%, auto; }
.linea-pasos li.anima.visible::before { background-color: var(--azul); color: var(--blanco); animation: latido-numero 0.6s ease calc(var(--retraso, 0ms) + 0.2s); }
.linea-pasos li.anima.visible::after { background-size: 100% 100%, auto; }

@keyframes latido-numero {
  0%, 100% { scale: 1; }
  50% { scale: 1.12; }
}
.linea-pasos li:last-child { padding-bottom: 0; }
.linea-pasos li:last-child::after { display: none; }
.linea-pasos h2 {
  margin: 8px 0 var(--e1);
}
.linea-pasos p { color: var(--texto-2); }

@media (min-width: 768px) {
  .linea-pasos li { padding-left: 88px; }
  .linea-pasos li::before { width: 56px; height: 56px; font-size: 22px; }
  .linea-pasos li::after { top: 64px; left: 27px; }
  .linea-pasos h2 { margin-top: 12px; }
}

/* Lista con puntos azules */
.lista-puntos {
  display: grid;
  gap: var(--e2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.lista-puntos li {
  position: relative;
  padding-left: 28px;
}
.lista-puntos li::before {
  content: "";
  position: absolute;
  top: 0.6em;
  left: 4px;
  width: 10px;
  height: 10px;
  background: var(--azul);
  border-radius: 50%;
}

/* ---------- Preguntas frecuentes (desplegables) ---------- */
.preguntas {
  display: grid;
  gap: var(--e2);
  max-width: 860px;
}
.pregunta {
  background: var(--blanco);
  border: 1px solid var(--borde);
  border-radius: var(--radio);
}
.pregunta summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--e2);
  min-height: 64px;
  padding: var(--e2) var(--e3);
  border-radius: var(--radio);
  cursor: pointer;
  list-style: none;
}
.pregunta summary::-webkit-details-marker { display: none; }
.pregunta summary:hover .pregunta__titulo { color: var(--azul); }
.pregunta__titulo {
  margin: 0;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.35;
}
.pregunta__signo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  background: var(--cielo);
  border-radius: 50%;
}
.pregunta__signo svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: var(--azul);
  stroke-width: 2.5;
  stroke-linecap: round;
  transition: transform 0.2s;
}
.pregunta[open] .pregunta__signo svg { transform: rotate(45deg); }
.pregunta__respuesta {
  padding: 0 var(--e3) var(--e3);
  color: var(--texto-2);
}
@media (min-width: 768px) {
  .pregunta__titulo { font-size: 20px; }
}

/* ---------- Blog: tarjetas del listado ---------- */
.tarjeta-articulo {
  display: flex;
  flex-direction: column;
  gap: var(--e2);
  color: var(--noche);
  text-decoration: none;
}
.tarjeta-articulo h2,
.tarjeta-articulo h3 { margin: 0; }
.tarjeta-articulo p { margin: 0; }
.tarjeta-articulo .etiqueta { align-self: flex-start; margin: 0; }
.tarjeta-articulo__pie {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--e2);
  margin-top: auto;
  padding-top: var(--e2);
  border-top: 1px solid var(--borde);
  color: var(--texto-2);
  font-size: 15px;
}
.tarjeta-articulo__leer {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--azul);
  font-weight: 600;
}
.tarjeta-articulo__leer svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 0.2s;
}
.tarjeta-articulo:hover .tarjeta-articulo__leer svg { transform: translateX(4px); }
.tarjeta-articulo:hover h2 { color: var(--azul); }

/* ==========================================================================
   8. Formulario de presupuesto
   ========================================================================== */
.contacto-rejilla {
  display: grid;
  gap: var(--e5);
}
@media (min-width: 1024px) {
  .contacto-rejilla {
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: var(--e8);
    align-items: start;
  }
  .contacto-lateral {
    position: sticky;
    top: calc(var(--alto-cabecera) + var(--e3));
  }
}

.formulario {
  display: grid;
  gap: var(--e3);
}
.formulario__aviso {
  color: var(--texto-2);
  font-size: 15px;
}

.bloque {
  min-width: 0;
  margin: 0;
  padding: var(--e3);
  background: var(--blanco);
  border: 1px solid var(--borde);
  border-radius: var(--radio-grande);
}
.bloque > legend,
.bloque__titulo {
  float: left;            /* mete el título dentro del recuadro */
  display: flex;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  margin: 0 0 var(--e2);
  padding: 0;
  font-family: var(--letra-titulos);
  font-size: var(--h3);
  font-weight: 600;
  line-height: 1.3;
}
.bloque > legend + *,
.bloque__titulo + * { clear: both; }

/* Grupo dentro de un bloque ("¿Cómo prefieres que te contactemos?") */
.subgrupo {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.subgrupo legend {
  margin-bottom: var(--e1);
  padding: 0;
  font-weight: 600;
}
.subgrupo .error { margin-top: var(--e1); }
.bloque__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  background: var(--cielo);
  border-radius: 50%;
  font-size: 16px;
}
.bloque__ayuda {
  margin: 0 0 var(--e2);
  color: var(--texto-2);
  font-size: 15px;
}

/* Opciones en forma de píldora (radio y casillas) */
.opciones {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e1);
}
.opcion input,
.casilla input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.opcion label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 10px 18px 10px 14px;
  background: var(--blanco);
  border: 2px solid var(--borde);
  border-radius: 999px;
  font-weight: 500;
  line-height: 1.25;
  cursor: pointer;
  transition: border-color 0.15s, background-color 0.15s;
}
.opcion label:hover { border-color: var(--azul); }

/* El circulito (radio) o cuadradito (casilla) dentro de la píldora */
.opcion label::before,
.casilla label::before {
  content: "";
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  background: var(--blanco) center / 14px no-repeat;
  border: 2px solid var(--borde);
  border-radius: 6px;
}
.opcion input[type="radio"] + label::before { border-radius: 50%; }

.opcion input:checked + label {
  background: var(--cielo);
  border-color: var(--azul);
  font-weight: 600;
}
.opcion input[type="checkbox"]:checked + label::before,
.casilla input:checked + label::before {
  background-color: var(--azul);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  border-color: var(--azul);
}
.opcion input[type="radio"]:checked + label::before {
  background: var(--azul);
  border-color: var(--azul);
  box-shadow: inset 0 0 0 3px var(--blanco);
}
.opcion input:focus-visible + label,
.casilla input:focus-visible + label {
  outline: 3px solid var(--azul);
  outline-offset: 3px;
}

/* Casilla grande (privacidad) */
.casilla label {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
}
.casilla label::before {
  width: 24px;
  height: 24px;
  margin-top: 1px;
}
.casilla + .error { margin: var(--e1) 0 0 36px; }

/* Información básica de protección de datos (bajo la casilla de privacidad) */
.info-datos {
  margin-top: var(--e3);
  padding: var(--e2);
  background: var(--fondo-suave);
  border-radius: 12px;
  color: var(--texto-2);
  font-size: 15px;
}
.info-datos p { margin-bottom: var(--e1); }
.info-datos p:last-child { margin-bottom: 0; }
.info-datos strong,
.info-datos__titulo {
  color: var(--noche);
  font-weight: 600;
}

/* Campos de texto */
.campos {
  display: grid;
  gap: var(--e3);
}
@media (min-width: 768px) {
  .campos--2 { grid-template-columns: repeat(2, 1fr); }
}
.campo {
  display: grid;
  gap: var(--e1);
  align-content: start;
}
.campo > label,
.campo__etiqueta {
  font-weight: 600;
}
.opcional {
  color: var(--texto-2);
  font-weight: 400;
}
.campo input,
.campo textarea {
  width: 100%;
  min-height: 52px;
  padding: 12px 16px;
  background: var(--blanco);
  border: 2px solid var(--borde);
  border-radius: 12px;
  color: var(--noche);
  font: inherit;
}
.campo textarea {
  min-height: 160px;
  resize: vertical;
}
.campo input:hover,
.campo textarea:hover { border-color: #9DB6CA; }
.campo input:focus,
.campo textarea:focus {
  border-color: var(--azul);
  outline: 3px solid var(--cielo);
  outline-offset: 0;
}

/* Errores */
.error {
  display: none;
  margin: 0;
  color: var(--error);
  font-size: 15px;
  font-weight: 600;
}
.error.visible { display: block; }
.campo [aria-invalid="true"] { border-color: var(--error); }
.bloque.con-error { border-color: var(--error); }

.formulario__resumen-error {
  display: none;
  padding: var(--e2) var(--e3);
  background: var(--coral);
  border-radius: var(--radio);
  color: var(--noche);
  font-weight: 600;
}
.formulario__resumen-error.visible { display: block; }

.formulario__enviar .boton { width: 100%; }
@media (min-width: 768px) {
  .formulario__enviar .boton { width: auto; }
}

/* Campo trampa para robots: invisible para las personas */
.trampa {
  position: absolute;
  left: -9999px;
}

/* Mensaje tras enviar */
.mensaje-exito {
  padding: var(--e4) var(--e3);
  background: var(--menta);
  border-radius: var(--radio-grande);
}
.mensaje-exito h2 { font-size: var(--h3); }
.mensaje-exito .pendiente { margin-top: var(--e2); }
.mensaje-exito:focus { outline: none; }

/* Columna lateral de contacto */
.contacto-lateral .lista-contacto {
  display: grid;
  gap: var(--e3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.lista-contacto li {
  display: flex;
  align-items: flex-start;
  gap: var(--e2);
}
.lista-contacto strong {
  display: block;
  font-weight: 600;
}
.lista-contacto .icono-caja {
  width: 48px;
  height: 48px;
  margin: 0;
  background: var(--blanco);
  border-radius: 14px;
}
.lista-contacto .icono { width: 24px; height: 24px; }

/* ==========================================================================
   9. Páginas legales
   ========================================================================== */
.fecha-actualizacion {
  margin: 0;
  color: var(--texto-2);
}

.texto-legal { max-width: 760px; }
.texto-legal > .pendiente,
.texto-legal > .entradilla { margin-bottom: var(--e5); }
.texto-legal h2 {
  margin: var(--e6) 0 var(--e2);
  font-size: 22px;
}
.texto-legal h2:first-of-type { margin-top: 0; }
.texto-legal ul {
  margin: 0 0 var(--e2);
  padding-left: 1.4em;
}
.texto-legal li { margin-bottom: var(--e1); }
.texto-legal li::marker { color: var(--azul); }

@media (min-width: 768px) {
  .texto-legal h2 { font-size: 26px; }
}

/* Lista de datos (titular, NIF, resumen…) */
.datos {
  margin: 0 0 var(--e3);
  padding: var(--e1) var(--e3);
  background: var(--fondo-suave);
  border-radius: var(--radio);
}
.datos--cielo { background: var(--cielo); }
.datos > div {
  display: grid;
  gap: 2px;
  padding: 12px 0;
  border-bottom: 1px solid var(--borde);
}
.datos > div:last-child { border-bottom: 0; }
.datos dt { font-weight: 600; }
.datos dd { margin: 0; }

@media (min-width: 768px) {
  .datos > div {
    grid-template-columns: 180px 1fr;
    gap: var(--e2);
  }
}

/* ==========================================================================
   10. Movimiento: entradas suaves al cargar y al desplazarse
   (js/animaciones.js añade las clases .anima y .visible)
   ========================================================================== */
@keyframes entrar {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: none; }
}

/* Al cargar: portada de Inicio y cabecera de cada página */
.js .hero .etiqueta,
.js .hero h1,
.js .hero__subtitulo,
.js .hero .botones,
.js .video-hero,
.js .cabecera-pagina .contenedor > *,
.js .articulo__cabecera .contenedor > * {
  animation: entrar 0.8s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}
.js .hero h1,
.js .cabecera-pagina .contenedor > :nth-child(2),
.js .articulo__cabecera .contenedor > :nth-child(2) { animation-delay: 0.08s; }
.js .hero__subtitulo,
.js .cabecera-pagina .contenedor > :nth-child(3),
.js .articulo__cabecera .contenedor > :nth-child(3) { animation-delay: 0.16s; }
.js .hero .botones,
.js .cabecera-pagina .contenedor > :nth-child(4),
.js .articulo__cabecera .contenedor > :nth-child(4) { animation-delay: 0.24s; }
.js .video-hero,
.js .cabecera-pagina .contenedor > :nth-child(n+5),
.js .articulo__cabecera .contenedor > :nth-child(n+5) { animation-delay: 0.32s; }
/* El símbolo de cabecera tiene su propia animación de dibujo */
.js .cabecera-pagina .contenedor > .simbolo--dibuja { animation: dibujar-simbolo 1.4s cubic-bezier(0.6, 0, 0.2, 1) 0.35s both; }

/* Al desplazarse: los bloques aparecen subiendo un poco */
.anima {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) var(--retraso, 0ms), transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) var(--retraso, 0ms);
}
.anima.visible {
  opacity: 1;
  transform: none;
}

/* Cabecera con una sombra suave al bajar por la página */
.cabecera { transition: box-shadow 0.3s ease; }
.cabecera.desplazada { box-shadow: 0 6px 24px rgba(19, 41, 61, 0.07); }

/* Tarjetas y botones que reaccionan al pasar el ratón */
.tarjeta,
.problemas li,
.paso,
.pregunta {
  transition: transform 0.25s ease, border-color 0.25s ease;
}
.boton { transition: background-color 0.15s, border-color 0.15s, transform 0.15s; }
.icono-caja { transition: transform 0.25s ease; }
@media (hover: hover) {
  .tarjeta:hover,
  .problemas li:hover {
    transform: translateY(-4px);
    border-color: var(--azul);
  }
  .paso:hover { transform: translateY(-4px); }
  .tarjeta:hover .icono-caja { transform: scale(1.08) rotate(-4deg); }
  .pregunta:hover { border-color: var(--azul); }
  .boton:hover { transform: translateY(-2px); }
}

/* Etiquetas "Para quién": aparecen una a una con un pequeño rebote */
.chips > li.anima { transform: scale(0.85); }
.chips > li.anima.visible {
  transform: none;
  transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ==========================================================================
   11. Artículos del blog (formato minimalista y visual)
   ========================================================================== */
.contenedor--estrecho { max-width: calc(720px + var(--margen-lateral) * 2); }

.articulo__cabecera {
  padding: var(--e5) 0 var(--e6);
  background: var(--fondo-suave);
}
.articulo__cabecera h1 { margin-bottom: var(--e3); }
.articulo__cabecera .etiqueta { margin-bottom: var(--e2); }
.articulo__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin: var(--e3) 0 0;
  color: var(--texto-2);
  font-size: 15px;
}
.articulo__meta span + span::before {
  content: "·";
  margin-right: 12px;
}

/* Migas de pan: Inicio › Blog › artículo */
.migas ol {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  margin: 0 0 var(--e3);
  padding: 0;
  list-style: none;
  color: var(--texto-2);
  font-size: 15px;
}
.migas li + li::before {
  content: "›";
  margin-right: 8px;
}
.migas a { color: var(--texto-2); }
.migas a:hover { color: var(--azul); }
.migas [aria-current] {
  max-width: 28ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.articulo__cuerpo {
  padding-top: var(--e6);
  padding-bottom: var(--e8);
  font-size: calc(var(--texto) + 1px);
  line-height: 1.7;
}
.articulo__cuerpo > * + * { margin-top: var(--e3); }
.articulo__cuerpo p { margin-bottom: 0; }
.articulo__cuerpo h2 {
  margin: var(--e8) 0 0;
  font-size: calc(var(--h2) - 4px);
}
.articulo__cuerpo h2 + * { margin-top: var(--e2); }
.articulo__cuerpo h3 { margin: 0 0 var(--e1); }
.articulo__cuerpo ul,
.articulo__cuerpo ol { padding-left: 1.3em; }
.articulo__cuerpo li + li { margin-top: var(--e1); }
.articulo__cuerpo li::marker { color: var(--azul); font-weight: 700; }
.articulo__cuerpo a { font-weight: 500; }
.articulo__cuerpo strong { font-weight: 600; }

/* Índice del artículo */
.indice {
  padding: var(--e3);
  border: 1px solid var(--borde);
  border-radius: var(--radio);
}
.indice__titulo {
  margin: 0 0 var(--e1) !important;
  font-family: var(--letra-titulos);
  font-weight: 600;
}
.indice ol { margin: 0; }
.indice a { text-decoration: none; }
.indice a:hover { text-decoration: underline; }

/* "En pocas palabras": resumen al principio */
.resumen {
  padding: var(--e3);
  background: var(--menta);
  border-radius: var(--radio);
}
.resumen__titulo {
  margin: 0 0 var(--e1) !important;
  font-family: var(--letra-titulos);
  font-weight: 700;
}
.resumen ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.resumen li {
  position: relative;
  padding-left: 32px;
}
.resumen li::before {
  content: "";
  position: absolute;
  top: 0.3em;
  left: 0;
  width: 22px;
  height: 22px;
  background: var(--blanco) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231F5F8B' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 13px no-repeat;
  border-radius: 50%;
}

/* Nota destacada con icono */
.nota {
  display: flex;
  gap: var(--e2);
  align-items: flex-start;
  padding: var(--e3);
  background: var(--cielo);
  border-radius: var(--radio);
}
.nota .icono { margin-top: 2px; }
.nota--coral { background: var(--coral); }
.nota--coral .icono { stroke: var(--noche); }
.nota p { margin: 0; }

/* Frase destacada */
.frase {
  margin-top: var(--e6) !important;
  margin-bottom: var(--e6);
  padding-left: var(--e3);
  border-left: 4px solid var(--azul);
  font-family: var(--letra-titulos);
  font-size: calc(var(--h3) + 2px);
  font-weight: 600;
  line-height: 1.4;
}

/* Pasos visuales unidos por el símbolo nudo-flecha */
.pasos-visuales {
  padding: 0 !important;
  list-style: none;
  counter-reset: pv;
}
.pasos-visuales > li {
  position: relative;
  display: flex;
  gap: var(--e2);
  align-items: flex-start;
  margin: 0 !important;
  padding: var(--e3);
  background: var(--fondo-suave);
  border-radius: var(--radio);
  counter-increment: pv;
}
.pasos-visuales > li + li { margin-top: 64px !important; }
.pasos-visuales > li::before {
  content: counter(pv);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  background: var(--azul);
  color: var(--blanco);
  border-radius: 50%;
  font-family: var(--letra-titulos);
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
}
.pasos-visuales > li + li::after {
  content: "";
  position: absolute;
  top: -32px;
  left: 44px;
  width: 52px;
  aspect-ratio: 1153 / 269;
  background: url("../assets/simbolo/nudo-flecha.svg") center / contain no-repeat;
  transform: translate(-50%, -50%) rotate(90deg);
}
.pasos-visuales strong {
  display: block;
  margin-bottom: 4px;
  font-family: var(--letra-titulos);
  font-weight: 600;
}

/* Tarjetas dentro del artículo */
.tarjetas-articulo {
  display: grid;
  gap: var(--e2);
  padding: 0 !important;
  list-style: none;
}
.tarjetas-articulo > li {
  margin: 0 !important;
  padding: var(--e3);
  border: 1px solid var(--borde);
  border-radius: var(--radio);
}
.tarjetas-articulo .icono-caja {
  width: 48px;
  height: 48px;
  margin-bottom: var(--e2);
  border-radius: 14px;
}
.tarjetas-articulo h3 { font-size: 20px; }
.tarjetas-articulo p { font-size: var(--texto); }
.antes-despues {
  display: grid;
  gap: var(--e1);
  margin-top: var(--e2);
}
.antes-despues p {
  padding: 10px var(--e2);
  border-radius: 12px;
  line-height: 1.5;
}
.antes-despues .antes { background: var(--fondo-suave); color: var(--texto-2); }
.antes-despues .despues { background: var(--menta); color: var(--noche); }
.antes-despues b {
  display: block;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
@media (min-width: 768px) {
  .tarjetas-articulo--2 { grid-template-columns: repeat(2, 1fr); }
}

/* Comparativa en dos columnas */
.comparativa {
  display: grid;
  gap: var(--e2);
}
.comparativa > div {
  padding: var(--e3);
  border-radius: var(--radio);
}
.comparativa h3 { font-size: 18px; }
.comparativa ul {
  margin: 0;
  padding: 0 !important;
  list-style: none;
}
.comparativa li {
  position: relative;
  padding-left: 28px;
  font-size: var(--texto);
}
.comparativa li::before {
  position: absolute;
  left: 0;
  font-weight: 700;
}
.comparativa__mal { background: var(--fondo-suave); }
.comparativa__mal li::before { content: "✕"; color: var(--texto-2); }
.comparativa__bien { background: var(--menta); }
.comparativa__bien li::before { content: "✓"; color: var(--azul); }
@media (min-width: 768px) {
  .comparativa { grid-template-columns: 1fr 1fr; }
}

/* Semáforo: nunca / con cuidado / sin problema */
.semaforo {
  display: grid;
  gap: var(--e2);
}
.semaforo > div {
  padding: var(--e3);
  border-radius: var(--radio);
}
.semaforo h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 18px;
}
.semaforo h3 span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--blanco);
  border-radius: 50%;
  font-size: 15px;
}
.semaforo ul { margin: 0; font-size: var(--texto); }
.semaforo__nunca { background: var(--coral); }
.semaforo__cuidado { background: var(--cielo); }
.semaforo__si { background: var(--menta); }

/* Fórmula visual */
.formula {
  padding: var(--e4) var(--e3);
  background: var(--fondo-suave);
  border-radius: var(--radio);
  text-align: center;
}
.formula__cuenta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--e1) var(--e2);
  margin: 0 0 var(--e2) !important;
  font-family: var(--letra-titulos);
  font-size: 20px;
  font-weight: 600;
}
.formula__cuenta span {
  padding: 8px 16px;
  background: var(--blanco);
  border: 1px solid var(--borde);
  border-radius: 999px;
}
.formula__cuenta .formula__resultado {
  background: var(--azul);
  border-color: var(--azul);
  color: var(--blanco);
}
.formula p { color: var(--texto-2); font-size: var(--texto); }

/* Separador con el símbolo */
.separador-simbolo {
  display: flex;
  justify-content: center;
  margin-top: var(--e8) !important;
}
.separador-simbolo .simbolo { width: 120px; }

/* Final del artículo: artículos relacionados */
.relacionados { padding: var(--e8) 0; background: var(--fondo-suave); }
.relacionados h2 { font-size: var(--h3); margin-bottom: var(--e3); }

/* Al imprimir, todo visible aunque no se haya animado */
@media print {
  .anima { opacity: 1 !important; transform: none !important; }
}
