/* ============================================================================
   CATHY HALASZI · ESTILOS DE TODA LA WEB
   Este archivo lo usan TODAS las páginas (español, inglés, privacidad y 404):
   un cambio aquí se ve en todas. Guía completa: HOJA-DE-RUTA.md.
   Después de cambiarlo, sube el número "?v=" del <link> a estilos.css en cada
   página (ej. ?v=3.0 → ?v=3.1) para que los navegadores no usen la copia vieja.

   ÍNDICE DEL CSS (en el mismo orden que la página)
     1. Variables de diseño (:root)   2. Base y textos generales   3. Botones
     4. Menú   5. Portada y mapa   6. Franja de medios   7. Servicios   8. Dos paneles
     9. Por qué Cathy   10. Caso Kawell   11. El camino   12. En los medios
     13. Preguntas   14. Contacto y formulario   15. Pie de página
     16. Efectos (letras doradas, flecha, herradura, reducir movimiento)
     16b. Formulario en uso, videos en reproducción y páginas legales (privacidad, 404)
     17. Celular y tablet (al final: 1180 px, 980 px y 720 px de ancho)
   Para cambiar cómo se ve algo en celular, búscalo en el punto 17, no arriba.
   ============================================================================ */

/* ── 1. VARIABLES DE DISEÑO ───────────────────────────────────────────────────
   Concepto: puente luminoso Chile → EE. UU. Cordillera a la izquierda, Manhattan a la derecha, Cathy al centro de la historia.
   Marino para autoridad, rojo bandera para la acción, oro cobre para la ruta (el cobre es el origen de Kawell).
   Cambiar un valor aquí lo cambia en TODA la página. */
:root {
  --marino: #0E1838;                          /* títulos, menú, fondos oscuros */
  --marino-2: #1B2A55;                        /* frase bajo el titular de la portada */
  --texto: #2E3856;                           /* texto normal */
  --suave: #5A6582;                           /* texto secundario: descripciones, notas */
  --rojo: #B8172C; --rojo-hover: #9C1024;     /* botones principales, íconos, enlaces pequeños (y su color al pasar el mouse) */
  --azul-chile: #1C3F94;                      /* solo la franja azul de la bandera en el mapa */
  --oro-1: #B07A3C; --oro-2: #E2B871;         /* ruta dorada y letras doradas sobre fondo oscuro */
  --cobre: #B4672E; --cobre-claro: #F6E7D6;   /* rayitas de las etiquetas, comillas, círculos de las razones */
  --papel: #FFFFFF; --niebla: #F4F6FA; --linea: #E1E5EE; /* fondo blanco, gris muy claro, bordes finos */
  --f-titulo: "Source Serif 4", "Iowan Old Style", Georgia, serif;   /* títulos (las otras son de respaldo) */
  --f-texto: "Hanken Grotesk", "Segoe UI", system-ui, sans-serif;    /* texto normal y botones */
  --ancho: 1240px;                            /* ancho máximo del contenido en pantallas grandes */
  /* Oro metálico de la web 1.0: degradado periódico (igual al 0% y al 100%) para que el brillo no salte */
  --oro: linear-gradient(90deg, #C9A66B 0%, #E9D3A3 22%, #C9A66B 44%, #C9A66B 60%, #FFF4D8 75%, #C9A66B 90%, #C9A66B 100%);
  color-scheme: light;                       /* la página es solo clara (no tiene modo oscuro) */
}

/* ── 2. BASE Y TEXTOS GENERALES ──────────────────────────────────────────────
   .envoltura = caja centrada con márgenes laterales; casi todas las secciones la usan.
   .etiqueta  = texto pequeño en mayúsculas con rayita cobre antes del título ("CÓMO TE ACOMPAÑA").
               Con la clase extra .sin-raya se quita la rayita. */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--papel); color: var(--texto); font: 400 17px/1.6 var(--f-texto); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
h1, h2, h3 { font-family: var(--f-titulo); color: var(--marino); font-weight: 600; margin: 0; text-wrap: balance; letter-spacing: -0.012em; }
p { margin: 0; }
.envoltura { width: 100%; max-width: var(--ancho); margin-inline: auto; padding-inline: clamp(16px, 4vw, 40px); }
.etiqueta { font: 600 12px/1.2 var(--f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--marino); display: inline-flex; align-items: center; gap: 14px; }
.etiqueta::before { content: ""; width: 34px; height: 1.5px; background: var(--cobre); }
.etiqueta.sin-raya::before { display: none; }
:focus-visible { outline: 2px solid var(--rojo); outline-offset: 3px; }

/* ── 3. BOTONES ────────────────────────────────────────────────────────────────
   Combinar siempre .btn + un estilo:  .btn-rojo (principal)  ·  .btn-linea (secundario, fondo claro)
   ·  .btn-linea-clara (secundario sobre fondo oscuro).  .mas = enlace pequeño en rojo con flecha (el del cierre de servicios).
   La flecha de cada botón es un <svg> dentro del enlace: se mueve sola al pasar el mouse. */
.btn { white-space: nowrap; display: inline-flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 26px; border-radius: 4px; font: 700 13px/1 var(--f-texto); letter-spacing: .14em; text-transform: uppercase; transition: background .3s, color .3s, transform .3s, box-shadow .3s; cursor: pointer; border: 1.5px solid transparent; }
.btn svg { width: 16px; height: 16px; transition: transform .3s; }
.btn:hover svg { transform: translateX(4px); }
.btn-rojo { background: var(--rojo); color: #fff; box-shadow: 0 10px 24px -12px rgba(184,23,44,.7); }
.btn-rojo:hover { background: var(--rojo-hover); }
.btn-linea { border-color: var(--marino); color: var(--marino); background: rgba(255,255,255,.7); }
.btn-linea:hover { background: var(--marino); color: #fff; }
.btn-linea-clara { border-color: rgba(255,255,255,.7); color: #fff; }
.btn-linea-clara:hover { background: #fff; color: var(--marino); }
.mas { font: 700 12px/1 var(--f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--rojo); display: inline-flex; gap: 10px; align-items: center; }
.mas svg { width: 14px; height: 14px; transition: transform .3s; }
.mas:hover svg { transform: translateX(4px); }

/* ── 4. MENÚ ──────────────────────────────────────────────────────────────────
   Queda pegado arriba al bajar (position: sticky). El enlace con clase .activo sale en rojo.
   En celular (menos de 980 px) se ocultan los enlaces y el selector de idioma; queda el botón. */
.nav { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 20; background: rgba(255,255,255,.92); backdrop-filter: blur(10px); border-bottom: 1px solid var(--linea); }
.nav .envoltura { display: flex; align-items: center; gap: 28px; min-height: 84px; }
.marca { display: grid; gap: 4px; }
.marca b { font: 700 30px/1 var(--f-titulo); color: var(--marino); letter-spacing: -.01em; }
.marca small { font: 600 9.5px/1 var(--f-texto); letter-spacing: .28em; white-space: nowrap; text-transform: uppercase; color: var(--suave); }
.nav ul { list-style: none; display: flex; gap: 26px; white-space: nowrap; margin: 0 0 0 auto; padding: 0; }
.nav li a { font: 600 12px/1 var(--f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--marino); padding: 8px 0; border-bottom: 2px solid transparent; }
.nav li a.activo { color: var(--rojo); border-color: var(--rojo); }
.nav li a:hover { color: var(--rojo); }
.idioma { white-space: nowrap; font: 700 12px/1 var(--f-texto); letter-spacing: .12em; color: var(--suave); }
.idioma b { color: var(--marino); }
.idioma a:hover { color: var(--rojo); }   /* el idioma que NO estás viendo es un enlace a la otra versión */

/* ── 5. PORTADA Y MAPA ────────────────────────────────────────────────────────
   Tres columnas: foto de Cathy | texto | mapa y cita. Las fotos de fondo (Andes a la izquierda,
   Nueva York a la derecha) se desvanecen hacia el centro con mask-image; el velo blanco del
   centro es .portada-fondo::after (súbele o bájale la opacidad si el texto se lee mal). */
.portada { position: relative; overflow: hidden; background: var(--papel); isolation: isolate; }
.portada-fondo { position: absolute; inset: 0; z-index: -1; }
.portada-fondo .andes, .portada-fondo .ny { position: absolute; top: 0; bottom: 0; background-size: cover; }
.portada-fondo .andes { left: 0; width: 46%; background-image: url(img/andes.webp); background-position: 30% 30%; -webkit-mask-image: linear-gradient(90deg, #000 30%, transparent 100%); mask-image: linear-gradient(90deg, #000 30%, transparent 100%); }
.portada-fondo .ny { right: 0; width: 46%; background-image: url(img/nueva-york.webp); background-position: 60% 100%; -webkit-mask-image: linear-gradient(270deg, #000 20%, transparent 100%); mask-image: linear-gradient(270deg, #000 20%, transparent 100%); }
.portada-fondo::after { content: ""; position: absolute; inset: 0; background: radial-gradient(42% 70% at 52% 45%, rgba(255,255,255,.97) 35%, rgba(255,255,255,.6) 75%, rgba(255,255,255,.1) 100%), linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,0) 30%, rgba(255,255,255,0) 80%, #fff 100%); }
.portada-grid { display: grid; grid-template-columns: minmax(0, 27fr) minmax(0, 45fr) minmax(0, 28fr); align-items: end; gap: 24px; min-height: 600px; }
.portada-cathy { align-self: end; margin-left: -40px; }
.portada-cathy img { width: 100%; height: auto; max-width: 440px; filter: drop-shadow(0 30px 40px rgba(14,24,56,.25)); animation: entrar 1.1s cubic-bezier(.2,.7,.2,1) backwards; }
/* Fotos de Cathy: al pasar el mouse crecen levemente desde la base, como las siluetas del mapa */
.portada-cathy img, .por-que-foto img { transform-origin: 50% 100%; transition: transform .6s cubic-bezier(.2,.7,.2,1), filter .6s; }
.portada-cathy img:hover { transform: scale(1.025); filter: drop-shadow(0 36px 44px rgba(14,24,56,.38)); }
.por-que-foto img:hover { transform: scale(1.025); filter: drop-shadow(0 18px 24px rgba(14,24,56,.25)); }
.portada-texto { align-self: center; padding-block: 24px 32px;  /* poco aire arriba: el menú ya separa y así se ve más de Cathy y del texto */ display: grid; gap: 24px; }
.pruebas { font: 600 12px/1.4 var(--f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--marino); display: flex; flex-wrap: wrap; gap: 6px 14px; }
.pruebas span + span::before { content: "•"; margin-right: 14px; color: var(--cobre); }
.portada h1 { font-size: clamp(40px, 4.3vw, 64px); line-height: 1.02; font-weight: 700; letter-spacing: -.025em; }
.portada h1 em { font-style: normal; color: var(--rojo); display: block; }
.portada .bajada { font: 500 clamp(19px, 1.6vw, 22px)/1.45 var(--f-titulo); color: var(--marino-2); max-width: 40ch; }
.acciones { display: flex; flex-wrap: wrap; gap: 14px; }
.sellos { display: flex; flex-wrap: wrap; gap: 10px 22px; padding-top: 6px; font: 500 13px/1.3 var(--f-texto); color: var(--suave); }
.sellos span { display: inline-flex; align-items: center; gap: 8px; }
.sellos svg { width: 16px; height: 16px; color: var(--cobre); flex: none; }
.portada-ruta { align-self: center; display: grid; gap: 22px; padding-block: 40px; }
.mapa-caja { position: relative; }
.mapa { width: 118%; max-width: none; margin-left: -10%; height: auto; overflow: visible; }
/* Ruta del mapa: se dibuja, luego un punto de luz viaja de Santiago a Chino cada 4 s (SMIL) y un destello recorre la línea */
.mapa .ruta-brillo { stroke-dasharray: 10 110; stroke-dashoffset: 10; opacity: 0; animation: brillo-mapa 4s 3s ease-in-out infinite; filter: drop-shadow(0 0 3px rgba(255,244,216,.9)); }
@keyframes brillo-mapa { 0% { stroke-dashoffset: 10; opacity: 0; } 8% { opacity: .9; } 55% { opacity: .9; } 62%, 100% { stroke-dashoffset: -100; opacity: 0; } }
.mapa .llegada { transform-box: fill-box; transform-origin: center; animation: llegada 4s 3s ease-out infinite; }
@keyframes llegada { 0%, 58% { transform: scale(1); } 66% { transform: scale(1.7); } 80%, 100% { transform: scale(1); } }
/* Siluetas: al pasar el mouse se elevan levemente */
.mapa .pais { transform-box: fill-box; transform-origin: center; transition: transform .6s cubic-bezier(.2,.7,.2,1), filter .6s; }
.mapa .pais:hover { transform: translateY(-3px) scale(1.025); filter: drop-shadow(0 8px 8px rgba(14,24,56,.28)); }
.mapa .ruta { stroke-dasharray: 100; stroke-dashoffset: 100; animation: trazar 2.4s .5s cubic-bezier(.6,.1,.2,1) forwards; filter: drop-shadow(0 0 4px rgba(226,184,113,.8)); }
.mapa-txt { font: 600 8.5px var(--f-texto); letter-spacing: .12em; text-transform: uppercase; fill: var(--marino); }
.mapa-lista { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; font: 600 10.5px/1.6 var(--f-texto); letter-spacing: .24em; text-transform: uppercase; color: var(--marino); }
.mapa-lista li + li::before { content: "→"; margin-right: 14px; color: var(--cobre); letter-spacing: 0; }
.cita { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; }
.cita .comillas { font: 700 64px/0.8 var(--f-titulo); color: var(--cobre); }
.cita p { font: italic 500 21px/1.35 var(--f-titulo); color: var(--marino); }
.cita small { grid-column: 2; font: 600 11px/1 var(--f-texto); letter-spacing: .24em; text-transform: uppercase; color: var(--suave); }
.cita small::before { content: "— "; }

/* ── 6. FRANJA DE MEDIOS (cinta que avanza sola) ──────────────────────────────
   Truco del bucle sin cortes: en el HTML la lista de medios está escrita DOS veces seguidas y la
   animación mueve la cinta exactamente la mitad (-50%). Si agregas o quitas un medio, hazlo en
   las DOS mitades. Velocidad: "38s" en .cinta-pista (más segundos = más lento). Se pausa con el mouse encima. */
.medios { background: var(--marino); color: #fff; }
.medios .envoltura { display: flex; align-items: center; gap: 22px 44px; flex-wrap: wrap; padding-block: 22px; }
.medios .etiqueta { color: var(--oro-2); font-size: 11px; }
.medios .etiqueta::before { background: var(--oro-2); }
.medios .envoltura { flex-wrap: nowrap; }
.cinta { flex: 1; min-width: 0; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.cinta-pista { width: max-content; animation: cinta 38s linear infinite; }
.cinta:hover .cinta-pista { animation-play-state: paused; }
.cinta-pista li::after { content: "•"; margin-left: 36px; color: var(--oro-2); }
@keyframes cinta { to { transform: translateX(-50%); } }
.medios ul { list-style: none; display: flex; flex-wrap: nowrap; white-space: nowrap; gap: 36px; margin: 0; padding: 0; font: 600 13px/1.3 var(--f-texto); letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.88); }

/* ── 7. SERVICIOS ─────────────────────────────────────────────────────────────
   Izquierda: título fijo mientras bajas (sticky). Derecha: tarjetas en 3 columnas
   (2 en tablet, 1 en celular). Las tarjetas se acomodan solas: puedes agregar o quitar. */
.servicios { padding-block: 96px 88px; }
.servicios .envoltura { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 56px; align-items: start; }
.servicios-intro { display: grid; gap: 22px; position: sticky; top: 120px; }
.servicios-intro h2, .titulo-seccion { font-size: clamp(34px, 3.4vw, 46px); line-height: 1.08; }
.servicios-intro p { color: var(--suave); max-width: 40ch; }
.nota { font-style: italic; font-size: 14px; color: var(--suave); border-left: 2px solid var(--cobre); padding-left: 14px; }
.tarjetas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.tarjeta { background: var(--papel); border: 1px solid var(--linea); border-radius: 6px; padding: 28px 24px 24px; display: grid; gap: 12px; align-content: start; transition: transform .35s, box-shadow .35s, border-color .35s; }
.tarjeta:hover { transform: translateY(-4px); box-shadow: 0 22px 40px -24px rgba(14,24,56,.35); border-color: transparent; }
.tarjeta svg.icono { width: 40px; height: 40px; color: var(--rojo); }
.tarjeta h3 { font-size: 22px; line-height: 1.2; }
.tarjeta p { font-size: 15.5px; color: var(--suave); }
.tarjetas-cierre { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px 16px; padding-top: 10px; font-size: 15.5px; color: var(--suave); } /* línea final con el enlace al formulario */

/* ── 8. DOS PANELES ───────────────────────────────────────────────────────────
   Izquierda oscuro con foto de los Andes de fondo; derecha claro con la herradura que gira. */
.paneles { display: grid; grid-template-columns: 1fr 1fr; }
.panel { position: relative; overflow: hidden; isolation: isolate; padding: 64px clamp(16px, 5vw, 72px); display: grid; gap: 18px; align-content: center; min-height: 420px; }
.panel-oscuro { color: #fff; background: var(--marino); }
.panel-oscuro::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(14,24,56,.96) 35%, rgba(14,24,56,.55)), url(img/andes.webp) center 35%/cover; }
.panel-oscuro h2 { color: #fff; font-size: clamp(30px, 2.8vw, 40px); line-height: 1.1; max-width: 16ch; }
.panel-oscuro p { color: rgba(255,255,255,.82); max-width: 46ch; }
.panel-oscuro .etiqueta { color: #fff; }
.panel-claro { background: var(--niebla); grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; align-items: center; }
.panel-claro .texto { display: grid; gap: 18px; }
.panel-claro h2 { font-size: clamp(28px, 2.5vw, 36px); line-height: 1.12; }
.panel-claro p { color: var(--suave); }
.panel-claro img { width: 100%; height: auto; border-radius: 6px; box-shadow: 0 30px 50px -28px rgba(14,24,56,.55); }
.panel .acciones { padding-top: 6px; }

/* ── 9. POR QUÉ CATHY ─────────────────────────────────────────────────────────
   Foto de Cathy a la izquierda; abajo, Andes y Nueva York de fondo desvanecidos (::before y .por-que-ny). */
.por-que { position: relative; isolation: isolate; overflow: hidden; padding-top: 96px; }
.por-que::before, .por-que-ny { content: ""; position: absolute; bottom: 0; height: 72%; width: 56%; z-index: -2; background: url(img/andes.webp) center 30%/cover; }
.por-que::before { left: 0; -webkit-mask-image: linear-gradient(90deg, #000 60%, transparent); mask-image: linear-gradient(90deg, #000 60%, transparent); }
.por-que-ny { right: 0; background-image: url(img/nueva-york.webp); background-position: center bottom; -webkit-mask-image: linear-gradient(270deg, #000 55%, transparent); mask-image: linear-gradient(270deg, #000 55%, transparent); }
.por-que::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, #fff 30%, rgba(255,255,255,.72) 58%, rgba(255,255,255,.2) 88%, rgba(255,255,255,.35)); }
.por-que .envoltura { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 40px; align-items: end; }
.por-que-foto img { width: 100%; height: auto; max-width: 420px; -webkit-mask-image: linear-gradient(180deg, #000 82%, transparent); mask-image: linear-gradient(180deg, #000 82%, transparent); }
.por-que-cuerpo { display: grid; gap: 34px; padding-bottom: 72px; }
.por-que h2 { font-size: clamp(36px, 4vw, 58px); line-height: 1.04; font-weight: 700; padding-bottom: 18px; border-bottom: 2px solid var(--cobre); }
.razones { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.razon { background: rgba(255,255,255,.9); border: 1px solid rgba(180,103,46,.35); border-radius: 10px; padding: 28px 22px; display: grid; gap: 12px; justify-items: center; text-align: center; align-content: start; transition: transform .35s, box-shadow .35s, border-color .35s; }
.razon:hover { transform: translateY(-4px); box-shadow: 0 22px 40px -24px rgba(14,24,56,.35); border-color: transparent; }
.razon .circulo { width: 76px; height: 76px; border-radius: 50%; background: var(--cobre-claro); display: grid; place-items: center; color: var(--cobre); }
.razon .circulo svg { width: 38px; height: 38px; }
.razon h3 { font-size: 24px; line-height: 1.12; font-weight: 700; }
.razon h3::after { content: ""; display: block; width: 56px; height: 1.5px; background: var(--cobre); margin: 14px auto 0; }
.razon p { font-size: 15.5px; color: var(--texto); }
.frase { display: grid; grid-template-columns: auto 1fr auto; gap: 16px; align-items: start; border: 1px solid rgba(180,103,46,.45); border-radius: 10px; padding: 22px 24px; background: rgba(255,255,255,.9); backdrop-filter: blur(6px); }
.frase span { font: 700 72px/.7 var(--f-titulo); color: var(--cobre); }
.frase span:last-child { align-self: end; }
.frase p { font: italic 500 clamp(20px, 1.9vw, 26px)/1.35 var(--f-titulo); color: var(--marino); text-align: center; }

/* ── 10. CASO KAWELL (línea de tiempo) ────────────────────────────────────────
   5 hitos en una fila: "repeat(5, ...)" en .linea-tiempo. Si agregas un hito, cambia ese 5.
   Las fotos de los hitos se recortan solas a proporción 4:3 (object-fit: cover). */
.kawell { padding-block: 96px; background: linear-gradient(180deg, var(--niebla), #fff 60%); }
.kawell-cabeza { display: grid; gap: 12px; justify-items: center; text-align: center; margin-bottom: 56px; }
.kawell-cabeza h2 { font-size: clamp(36px, 4vw, 58px); line-height: 1.05; font-weight: 700; }
.kawell-cabeza p { font-size: 20px; letter-spacing: .04em; color: var(--suave); }
.linea-tiempo { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; position: relative; }
.linea-tiempo::before { content: ""; position: absolute; top: 46px; left: 10%; right: 10%; height: 1.5px; background: linear-gradient(90deg, var(--oro-1), var(--oro-2), var(--oro-1)); }
.hito { position: relative; display: grid; gap: 14px; justify-items: center; text-align: center; padding: 18px 16px 16px; background: var(--papel); border: 1px solid var(--linea); border-radius: 6px; align-content: start; transition: transform .35s, box-shadow .35s, border-color .35s; }
.hito:hover { transform: translateY(-4px); box-shadow: 0 22px 40px -24px rgba(14,24,56,.35); border-color: transparent; }
/* Círculo en oro metálico con destello (como los seis pasos) y número marino */
.hito .num { position: relative; width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; font: 700 26px/1 var(--f-titulo); color: var(--marino); background-image: var(--oro); background-size: 200% 100%; animation: brillo 5s ease-in-out infinite; box-shadow: 0 0 0 6px #fff, 0 10px 22px -6px rgba(176,122,60,.65); }
.hito p { font-size: 15.5px; line-height: 1.45; min-height: 7.3em; }
.hito p b { color: var(--marino); }
.hito img { width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; border-radius: 6px; }
.prueba { margin: 56px auto 0; max-width: 760px; display: grid; grid-template-columns: auto 1fr; gap: 24px; align-items: center; padding: 26px 34px; border: 1px solid rgba(180,103,46,.45); border-radius: 10px; background: #fff; box-shadow: 0 24px 50px -36px rgba(14,24,56,.45); }
.prueba svg { width: 54px; height: 54px; color: var(--cobre); }
.prueba strong { display: block; font: 700 30px/1.1 var(--f-titulo); color: var(--marino); }
.prueba p { font-size: 18px; color: var(--texto); }
.fuente { text-align: center; margin-top: 18px; font-size: 13px; color: var(--suave); }

/* ── 11. EL CAMINO (6 pasos con ruta dorada animada) ──────────────────────────
   Cómo funciona: el JavaScript del final agrega la clase .espera al cargar (pasos atenuados) y
   la cambia por .en-marcha cuando la sección aparece en pantalla. Entonces la línea dorada se
   llena en 7.5 s, un punto de luz la recorre y cada paso se "enciende" 1.25 s después del anterior
   La línea avanza a velocidad CONSTANTE (linear) y el JavaScript calcula, según la posición real de
   cada punto, el segundo exacto en que la línea pasa por él (variable --t de cada <li>): así cada texto
   se enciende justo cuando la línea lo alcanza, en cualquier ancho de pantalla. No le pongas a la línea
   una curva de velocidad (ease, cubic-bezier): se desfasaría de los textos.
   Duración total del recorrido: --ruta en .recorrido (7.5s). Cambia solo ese valor.
   Si agregas o quitas un paso: ajusta "repeat(6, ...)" en .pasos; los tiempos se recalculan solos.
   --i (orden desde 0) queda como respaldo si el JavaScript no corre. "Paso 1, 2..." lo escribe el CSS. */
.camino { padding-block: 88px; background: var(--marino); color: #fff; position: relative; overflow: hidden; isolation: isolate; }
.camino::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(14,24,56,.92), rgba(14,24,56,.97)), url(img/nueva-york.webp) center 70%/cover; }
.camino .cabeza { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 48px; }
.camino h2 { color: #fff; font-size: clamp(32px, 3.4vw, 46px); }
.camino .etiqueta { color: var(--oro-2); }
.camino .cabeza p { max-width: 44ch; color: rgba(255,255,255,.78); }
.recorrido { position: relative; padding-top: 30px; --ruta: 7.5s; } /* --ruta = duración del recorrido de la línea */
.pista { position: absolute; top: 0; left: 0; right: 0; height: 2px; background: rgba(255,255,255,.14); border-radius: 2px; }
.pista-oro { position: absolute; inset: 0; background: linear-gradient(90deg, var(--oro-1), var(--oro-2), #FFF4D8); transform-origin: left; border-radius: 2px; }
.pista-luz { position: absolute; top: 50%; left: 100%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: radial-gradient(circle, #FFF4D8 0 25%, var(--oro-2) 45%, transparent 72%); box-shadow: 0 0 18px 6px rgba(226,184,113,.5); }
.pista-brillo { position: absolute; top: -1px; height: 4px; width: 90px; left: -90px; border-radius: 4px; background: linear-gradient(90deg, transparent, #FFF4D8, transparent); opacity: 0; }
.pasos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 18px; counter-reset: paso; }
.pasos li { counter-increment: paso; position: relative; display: grid; gap: 8px; align-content: start; transition: opacity .6s, transform .6s; }
.pasos li .hito-punto { position: absolute; top: -37px; left: 0; width: 12px; height: 12px; border-radius: 50%; background: var(--marino); border: 2px solid var(--oro-2); transition: background .4s, box-shadow .4s; }
/* Con JS: la ruta se dibuja al entrar en pantalla, el punto viaja y cada paso se enciende al pasar */
.recorrido.espera .pista-oro { transform: scaleX(0); }
.recorrido.espera .pista-luz { left: 0; opacity: 0; }
.recorrido.espera li h3, .recorrido.espera li p { opacity: .4; }
.recorrido.en-marcha .pista-oro { animation: llenar var(--ruta) linear forwards; }
.recorrido.en-marcha .pista-luz { animation: viajar var(--ruta) linear forwards, latido 2.2s var(--ruta) ease-in-out infinite; }
.recorrido.en-marcha .pista-brillo { animation: brillo-ruta 4s calc(var(--ruta) + .7s) ease-in-out infinite; }
.recorrido.en-marcha li h3, .recorrido.en-marcha li p { animation: encender .9s var(--t, calc(var(--i) * 1.25s)) backwards; }
.recorrido.en-marcha li .hito-punto { animation: punto-on .7s var(--t, calc(var(--i) * 1.25s)) forwards; }
@keyframes llenar { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes viajar { 0% { left: 0; opacity: 1; } 100% { left: 100%; opacity: 1; } }
@keyframes latido { 50% { box-shadow: 0 0 30px 12px rgba(226,184,113,.8); } }
@keyframes brillo-ruta { 0% { left: -90px; opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
@keyframes encender { from { opacity: .4; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes punto-on { to { background: var(--oro-2); box-shadow: 0 0 8px 2px rgba(226,184,113,.45); } }
.pasos li::before { content: "Paso " counter(paso); font: 600 11px/1 var(--f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--oro-2); }
.pasos li:lang(en)::before { content: "Step " counter(paso); } /* "Step 1, 2..." en la página en inglés */
.pasos h3 { color: #fff; font-size: 20px; line-height: 1.2; }
.pasos p { font-size: 14.5px; color: rgba(255,255,255,.72); }
.extremos { display: flex; justify-content: space-between; margin-top: 30px; font: 600 12px/1 var(--f-texto); letter-spacing: .24em; text-transform: uppercase; color: rgba(255,255,255,.6); }

/* ── 12. EN LOS MEDIOS ────────────────────────────────────────────────────────
   Tres cuadros: dos videos con foto de fondo y botón rojo de play, y un cuadro de texto (.video-texto). */
.en-medios { padding-block: 96px; }
.en-medios .cabeza { display: grid; gap: 14px; margin-bottom: 40px; }
.videos { display: grid; grid-template-columns: 1.25fr 1fr 1fr; gap: 18px; }
.video { position: relative; border-radius: 6px; overflow: hidden; color: #fff; min-height: 300px; display: grid; align-content: end; padding: 24px; isolation: isolate; }
.video img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .8s; }
.video { transition: transform .35s, box-shadow .35s; }
.video:hover { transform: translateY(-4px); box-shadow: 0 22px 40px -24px rgba(14,24,56,.55); }
.video:hover img { transform: scale(1.04); }
.video::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 35%, rgba(14,24,56,.9)); }
.video .play { position: absolute; top: 20px; right: 20px; width: 52px; height: 52px; border-radius: 50%; background: var(--rojo); display: grid; place-items: center; }
.video .play svg { width: 18px; height: 18px; margin-left: 3px; }
.video b { font: 600 22px/1.2 var(--f-titulo); }
.video small { font-size: 14px; color: rgba(255,255,255,.8); }
.video-texto { background: var(--marino); align-content: center; gap: 18px; }
.video-texto::after { display: none; }
.video-texto ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.video-texto li { display: grid; gap: 4px; font: 600 19px/1.25 var(--f-titulo); border-top: 1px solid rgba(255,255,255,.2); padding-top: 16px; }
.video-texto li a { display: grid; gap: 4px; }
.video-texto li a:hover { color: var(--oro-2); }
.video-texto small { font-family: var(--f-texto); font-weight: 400; }
.alianzas { margin-top: 24px; font-size: 14px; color: var(--suave); }

/* ── 13. PREGUNTAS FRECUENTES ─────────────────────────────────────────────────
   Usan <details>/<summary> del navegador: se abren y cierran sin JavaScript. El "+" gira a "×" al abrir. */
.faq { padding-block: 0 96px; }
.faq .envoltura { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 56px; }
.faq details { border-bottom: 1px solid var(--linea); padding-block: 20px; }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 18px; font: 600 20px/1.3 var(--f-titulo); color: var(--marino); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--rojo); font-family: var(--f-texto); font-weight: 400; font-size: 26px; line-height: 1; transition: transform .3s; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { padding-top: 12px; color: var(--suave); max-width: 64ch; }

/* ── 14. CONTACTO Y FORMULARIO ────────────────────────────────────────────────
   .ancho = el campo ocupa las dos columnas. .aviso = mensaje bajo el botón (errores o confirmación). */
.contacto { background: var(--marino); color: #fff; position: relative; overflow: hidden; isolation: isolate; }
.contacto::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(14,24,56,.97) 45%, rgba(14,24,56,.75)), url(img/andes.webp) right 30%/cover; }
.contacto .envoltura { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 56px; padding-block: 96px; align-items: center; }
.contacto h2 { color: #fff; font-size: clamp(34px, 3.6vw, 50px); line-height: 1.06; }
.contacto h2 em { font-style: normal; color: var(--oro-2); }
.contacto .etiqueta { color: var(--oro-2); }
.contacto-texto { display: grid; gap: 20px; }
.contacto-texto p { color: rgba(255,255,255,.8); max-width: 42ch; }
.formulario { background: #fff; color: var(--texto); border-radius: 8px; padding: 32px; display: grid; gap: 16px; grid-template-columns: 1fr 1fr; box-shadow: 0 40px 70px -40px rgba(0,0,0,.6); }
.formulario .ancho { grid-column: 1 / -1; }
.formulario label { display: grid; gap: 6px; font: 600 13px/1.2 var(--f-texto); color: var(--marino); min-width: 0; }
.formulario label small { font-weight: 400; color: var(--suave); }
.formulario input, .formulario textarea { font: 400 16px/1.4 var(--f-texto); color: var(--marino); border: 1px solid var(--linea); border-radius: 4px; padding: 13px 14px; background: var(--niebla); width: 100%; }
.formulario textarea { min-height: 112px; resize: vertical; }
.formulario input:focus, .formulario textarea:focus { outline: 2px solid var(--marino); outline-offset: 0; background: #fff; }
.formulario .consent { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; font-size: 13.5px; color: var(--suave); }
.formulario .consent input { width: 18px; height: 18px; margin-top: 2px; flex: none; accent-color: var(--rojo); }
.formulario .btn { justify-content: center; }
.aviso { grid-column: 1 / -1; font-size: 14px; color: var(--rojo); }

/* ── 15. PIE DE PÁGINA ─────────────────────────────────────────────────────── */
footer { background: #080F26; color: rgba(255,255,255,.65); font-size: 14px; }
footer .envoltura { display: flex; flex-wrap: wrap; gap: 16px 32px; justify-content: space-between; align-items: center; padding-block: 28px; }
footer .marca b { color: #fff; font-size: 22px; }
footer .marca small { color: rgba(255,255,255,.55); }
footer a { text-decoration: underline; text-underline-offset: 3px; }
footer a:hover { color: #fff; }
.creditos { width: 100%; font-size: 12px; color: rgba(255,255,255,.45); } /* crédito obligatorio de las fotos de fondo (Wikimedia Commons) */

/* ── 16. EFECTOS ────────────────────────────────────────────────────────────── */

/* Letras doradas con destello cada 5 s (mismo efecto que la web 1.0).
   Para que un texto nuevo sea dorado, agrega su selector a esta lista. El degradado --oro es
   "periódico" (empieza y termina igual): por eso el brillo no da saltos. No le cambies los extremos. */
.medios .etiqueta, .camino .etiqueta, .contacto .etiqueta, .contacto h2 em, .pasos li::before {
  background-image: var(--oro); background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: brillo 5s ease-in-out infinite;
}
@keyframes brillo { 0%, 55% { background-position: 0 0; } 100% { background-position: -200% 0; } }
/* Flecha flotante para volver arriba: aparece al bajar */
.subir { position: fixed; right: max(20px, env(safe-area-inset-right, 0px)); bottom: calc(24px + env(safe-area-inset-bottom, 0px)); z-index: 30; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; cursor: pointer; color: var(--oro-2); background: var(--marino); border: 1.5px solid var(--oro-1); box-shadow: 0 14px 30px -12px rgba(14,24,56,.6); opacity: 0; transform: translateY(16px); pointer-events: none; transition: opacity .35s, transform .35s, background .3s, color .3s; }
.subir.visible { opacity: 1; transform: none; pointer-events: auto; }
.subir:hover { background: var(--rojo); color: #fff; border-color: var(--rojo); transform: translateY(-3px); }
.subir svg { width: 20px; height: 20px; }
.frase, .prueba, .formulario { transition: transform .35s, box-shadow .35s; }
/* Herradura del caso destacado: gira sola, lento y sin pausa, sobre su eje vertical ("12s" = una vuelta) */
.herradura-caja { justify-self: center; width: 100%; max-width: 320px; perspective: 900px; }
.panel-claro .herradura { width: 100%; height: auto; border-radius: 0; box-shadow: none; filter: drop-shadow(0 24px 20px rgba(14,24,56,.28)); animation: girar 12s linear infinite; }
@keyframes girar { from { transform: rotateY(0deg); } to { transform: rotateY(360deg); } }
.frase:hover, .prueba:hover, .formulario:hover { transform: translateY(-4px); box-shadow: 0 26px 44px -24px rgba(14,24,56,.4); }
@keyframes entrar { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: none; } }
@keyframes trazar { to { stroke-dashoffset: 0; } }
/* Reducir movimiento: si la persona lo pidió en su computador o celular, se apagan TODAS las
   animaciones y transiciones, la ruta del mapa aparece ya dibujada y el punto viajero se oculta. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .mapa .ruta { stroke-dashoffset: 0; }
  .mapa .viajero, .mapa .ruta-brillo { display: none; }
}

/* ── 16b. FORMULARIO EN USO, VIDEOS Y PÁGINAS LEGALES ─────────────────────────
   - .error-campo: el texto rojo bajo un campo con error (lo escribe el JavaScript con lo que responde api/lead.php).
   - .gracias: el cuadro que reemplaza al formulario cuando el mensaje se envió bien.
   - .video.reproduciendo: el cuadro del video cuando la persona apretó play (el video se descarga solo en ese momento).
   - .legal: páginas de texto (política de privacidad y 404), con el mismo menú y pie que la página principal. */
.formulario [aria-invalid="true"] { outline: 2px solid var(--rojo); outline-offset: 0; }
.error-campo { font: 500 13px/1.35 var(--f-texto); color: var(--rojo); }
.formulario button[disabled] { opacity: .65; cursor: wait; }
.trampa { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; } /* campo trampa para robots: invisible para personas */
.gracias { background: #fff; color: var(--texto); border-radius: 8px; padding: 40px 32px; display: grid; gap: 14px; justify-items: start; box-shadow: 0 40px 70px -40px rgba(0,0,0,.6); }
.gracias svg { width: 48px; height: 48px; color: var(--cobre); }
.gracias h3 { font-size: 30px; }
.gracias p { color: var(--suave); }
.video.reproduciendo { padding: 0; background: #000; }
.video.reproduciendo:hover { transform: none; }
.video.reproduciendo::after { display: none; }
.video.reproduciendo video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #000; }
.legal { padding-block: 80px 96px; }
.legal .envoltura { max-width: 820px; display: grid; gap: 22px; }
.legal h1 { font-size: clamp(38px, 5vw, 58px); line-height: 1.05; }
.legal p { font-size: 18px; color: var(--texto); }
.legal p strong { color: var(--marino); }
.legal a:not(.btn) { color: var(--rojo); text-decoration: underline; text-underline-offset: 3px; }
.legal .acciones { padding-top: 10px; }

/* ── 17. CELULAR Y TABLET ─────────────────────────────────────────────────────
   Cada bloque aplica desde ese ancho hacia abajo y se suma al anterior:
     1180 px → laptop chica/tablet horizontal: mapa baja bajo el texto, 2 columnas de tarjetas, pasos en 3 columnas
      980 px → tablet vertical: todo a 1 columna, se ocultan los enlaces del menú
      720 px → celular: portada apilada (texto, foto, mapa), sin foto de Nueva York, formulario a 1 columna
      400 px → celular angosto: menú más compacto
   Revisa siempre a ~380 px (celular chico): no debe aparecer barra de desplazamiento horizontal. */
@media (max-width: 1180px) {
  .nav ul { gap: 22px; }
  .portada-grid { grid-template-columns: minmax(0, 34fr) minmax(0, 66fr); }
  .portada-ruta { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; align-items: center; padding-top: 0; }
  .tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pasos { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 34px; }
  .pista, .pasos li .hito-punto { display: none; }
  .recorrido { padding-top: 0; }
  .pasos li { border-top: 1.5px solid rgba(226,184,113,.5); padding-top: 16px; }
}
@media (max-width: 980px) {
  .nav ul, .nav .idioma { display: none; }
  .nav .btn { margin-left: auto; }
  .servicios .envoltura, .por-que .envoltura, .faq .envoltura, .contacto .envoltura { grid-template-columns: minmax(0, 1fr); }
  .servicios-intro { position: static; }
  .paneles { grid-template-columns: minmax(0, 1fr); }
  .linea-tiempo { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; }
  .linea-tiempo::before { display: none; }
  .hito p { min-height: 0; }
  .videos { grid-template-columns: minmax(0, 1fr); }
  .por-que-foto { order: 2; justify-self: center; }
  .por-que-foto img { max-width: 320px; }
  .por-que-cuerpo { padding-bottom: 0; }
}
@media (max-width: 720px) {
  .medios .envoltura { flex-wrap: wrap; }
  .cinta { flex-basis: 100%; }
  body { font-size: 16px; }
  .marca b { font-size: 24px; }
  .marca small { letter-spacing: .16em; }   /* el lema más junto para que quepa el botón (en inglés es más largo) */
  .nav .btn { padding: 0 16px; min-height: 44px; font-size: 11px; letter-spacing: .1em; }
  .nav .envoltura { min-height: 70px; gap: 12px; }
  .portada-grid { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .portada-texto { order: 1; padding-block: 20px 8px; }
  .portada-cathy { order: 2; margin: 0 auto; max-width: 330px; }
  .portada-ruta { order: 3; grid-template-columns: minmax(0, 1fr); }
  .portada-fondo .andes { width: 100%; height: 45%; top: auto; -webkit-mask-image: linear-gradient(0deg, #000 40%, transparent); mask-image: linear-gradient(0deg, #000 40%, transparent); }
  .portada-fondo .ny { display: none; }
  .tarjetas, .razones, .linea-tiempo, .pasos { grid-template-columns: minmax(0, 1fr); }
  .panel-claro { grid-template-columns: minmax(0, 1fr); }
  .panel-claro img { aspect-ratio: 4/3; }
  .formulario { grid-template-columns: minmax(0, 1fr); padding: 22px; }
  .prueba { grid-template-columns: minmax(0, 1fr); justify-items: center; text-align: center; padding: 24px; }
  .frase { grid-template-columns: minmax(0, 1fr); }
  .frase span { display: none; }
  .extremos { display: none; }
}
@media (max-width: 400px) {   /* celulares angostos (360-400 px): menú más compacto para que quepa el botón */
  .nav .envoltura { gap: 8px; }
  .marca b { font-size: 21px; }
  .marca small { font-size: 8.5px; letter-spacing: .12em; }
  .nav .btn { padding: 0 12px; letter-spacing: .06em; gap: 8px; }
}
@media (max-width: 340px) { .nav .btn { font-size: 10px; padding: 0 10px; } } /* celulares muy chicos (320 px) */
