/* ================================================================
   HOME — estructura propia (v5)
   ----------------------------------------------------------------
   Se carga solo en la home (index.php define $extra_css = ['home']).
   Todo cuelga de body.home. Los textos, encabezados y enlaces son los
   de siempre: aquí solo cambia la composición. El orden del DOM no se
   toca; la recomposición se hace con grid (áreas), display:contents,
   scroll-snap y JS de presentación (assets/js/motion.js).
   ================================================================ */

body.home { overflow-x: clip; }

/* ---------- Cabecera de sección: titular enorme + párrafo al lado ---------- */
body.home .text-center.mb-lg {
  max-width:none; text-align:left;
  display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
  column-gap:clamp(2rem,6vw,9rem); row-gap:1rem; align-items:end;
  margin-bottom:clamp(2rem,4.5vw,5rem);
}
body.home .text-center.mb-lg h2 { grid-column:1; font-size:clamp(2.3rem, 1rem + 4.6vw, 6rem); line-height:1.02; letter-spacing:-.018em; }
body.home .text-center.mb-lg .separator { grid-column:1; margin:0; width:96px; background:linear-gradient(90deg, var(--c-terra), rgba(203,160,99,0)); }
body.home .text-center.mb-lg .separator::before { left:0; margin-left:0; }
body.home .text-center.mb-lg p:not(.eyebrow) { grid-column:2; grid-row:1 / span 2; justify-self:start; margin:0 !important; max-width:46ch !important; font-size:1.08rem; color:var(--c-text-2); }
body.home .text-center.mb-lg .eyebrow { display:none; }
@media (max-width:900px) {
  body.home .text-center.mb-lg { grid-template-columns:1fr; }
  body.home .text-center.mb-lg p:not(.eyebrow) { grid-column:1; grid-row:auto; }
}

/* ================================================================
   HERO — pantalla completa, titular gigante, barra de cifras
   ================================================================ */
body.home .hero {
  position:relative; isolation:isolate; overflow:hidden; background:#0B0B08;
  min-height:calc(100svh - var(--header-h)); display:grid; align-items:stretch; padding:0;
}
body.home .hero-media { position:absolute; inset:0; z-index:0; overflow:hidden; height:auto; margin:0; }
body.home .hero-media picture { display:block; width:100%; height:100%; }
body.home .hero-media img, body.home .hero-media svg {
  position:absolute; inset:-5% 0; width:100%; height:110%; object-fit:cover; object-position:center 55%;
  translate:0 calc(var(--hero-p, 0) * 8%); scale:1.04;
  animation:heroZoom 2.8s var(--ease) both; will-change:translate, scale;
}
@keyframes heroZoom { from { scale:1.22; } to { scale:1.04; }}
body.home .hero-media-overlay {
  position:absolute; inset:0; pointer-events:none;
  background:
    linear-gradient(90deg, rgba(11,11,8,.92) 0%, rgba(11,11,8,.74) 28%, rgba(11,11,8,.20) 62%, rgba(11,11,8,.05) 100%),
    linear-gradient(0deg, rgba(11,11,8,.96) 0%, rgba(11,11,8,.55) 24%, rgba(11,11,8,0) 52%),
    linear-gradient(180deg, rgba(11,11,8,.62) 0%, rgba(11,11,8,0) 20%),
    radial-gradient(34% 36% at 80% 52%, rgba(11,11,8,.62), transparent 74%),
    radial-gradient(55% 70% at 80% 18%, rgba(255,226,170,.12), transparent 70%);
}
body.home .hero::after { content:''; position:absolute; inset:0; z-index:1; pointer-events:none; background-image:var(--grain); background-size:180px; opacity:.05; mix-blend-mode:overlay; }

body.home .hero-inner {
  position:relative; z-index:2; max-width:none; width:100%;
  padding:0 var(--gutter) clamp(.75rem,1.6vw,1.6rem); margin-top:0;
  display:grid; grid-template-columns:repeat(12, minmax(0,1fr)); column-gap:clamp(1rem,2vw,2.5rem);
  grid-template-rows:1fr auto auto auto auto; min-height:calc(100svh - var(--header-h));
}
body.home .hero-text { display:contents; }                       /* sus hijos pasan a ser celdas de la rejilla */
body.home .hero-text .eyebrow { grid-column:1 / 9; grid-row:2; align-self:end; margin:0 0 1.2rem; white-space:normal; font-size:.74rem; }
body.home .hero-text h1 {
  grid-column:1 / 9; grid-row:3 / 5; margin:0 0 1.4rem;
  font-size:clamp(3rem, .6rem + 8.4vw, 9.6rem); line-height:.93; letter-spacing:-.028em; color:#F7F1E6; text-wrap:balance;
}
body.home .hero-text h1 em { display:block; color:var(--c-terra-dd); }
body.home .hero-text > p.lead { grid-column:9 / 13; grid-row:3; align-self:end; margin:0 0 1.4rem; max-width:38ch; font-size:clamp(1.02rem,.9rem + .35vw,1.25rem); color:#F4EEE3; text-shadow:0 1px 18px rgba(0,0,0,.7); }
body.home .hero-actions { grid-column:9 / 13; grid-row:4; align-self:start; margin:0; }
body.home .hero-actions .btn { padding:1.15rem 2.4rem; font-size:.82rem; }

body.home .hero-stats {
  grid-column:1 / -1; grid-row:5; align-self:end;
  display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:0; width:100%; justify-self:stretch;
  margin-top:clamp(1.5rem,3.5vw,3.5rem); padding-right:clamp(0px, 5vw, 84px);
  border-top:1px solid rgba(203,160,99,.4);
}
body.home .hero-stats > div {
  padding:clamp(1rem,1.8vw,1.8rem) clamp(.8rem,1.6vw,2rem) .4rem; background:none; border:0; border-radius:0; box-shadow:none;
  -webkit-backdrop-filter:none; backdrop-filter:none; border-left:1px solid rgba(203,160,99,.22);
  transition:background-color .5s var(--ease);
}
body.home .hero-stats > div:first-child { border-left:0; padding-left:0; }
body.home .hero-stats > div:hover { background:linear-gradient(0deg, rgba(203,160,99,.10), transparent); transform:none; }
body.home .hero-stat-n { font-size:clamp(1.8rem, .6rem + 2.9vw, 4rem); line-height:1; min-width:0; color:#E3C68F; }
body.home .hero-stat-l { font-size:.74rem; letter-spacing:.18em; color:rgba(244,238,227,.78); margin-top:.7rem; }

@media (max-width:1100px) {
  body.home .hero-text h1 { grid-column:1 / -1; grid-row:3; font-size:clamp(3rem, 1rem + 9vw, 7rem); }
  body.home .hero-text > p.lead { grid-column:1 / 9; grid-row:4; margin:0 0 1.2rem; }
  body.home .hero-actions { grid-column:1 / -1; grid-row:5; }
  body.home .hero-stats { grid-row:6; padding-right:0; }
  body.home .hero-inner { grid-template-rows:1fr auto auto auto auto auto; }
  body.home .hero-text .eyebrow { grid-column:1 / -1; }
}
@media (max-width:760px) {
  body.home .hero, body.home .hero-inner { min-height:calc(100svh - var(--header-h)); }
  body.home .hero-text > p.lead { grid-column:1 / -1; font-size:1.02rem; }
  body.home .hero-actions .btn { width:100%; }
  body.home .hero-stats { grid-template-columns:repeat(2,1fr); margin-top:1.4rem; }
  body.home .hero-stats > div { padding:.85rem .9rem .5rem; }
  body.home .hero-stats > div:nth-child(odd) { border-left:0; padding-left:0; }
  body.home .hero-stats > div:nth-child(n+3) { border-top:1px solid rgba(203,160,99,.22); }
  body.home .hero-stat-n { font-size:clamp(1.8rem, 8vw, 2.4rem); }
  body.home .hero-stat-l { font-size:.62rem; letter-spacing:.12em; margin-top:.4rem; }
  body.home .hero-media-overlay { background:
    linear-gradient(0deg, rgba(11,11,8,.98) 0%, rgba(11,11,8,.9) 50%, rgba(11,11,8,.55) 74%, rgba(11,11,8,.32) 100%),
    linear-gradient(180deg, rgba(11,11,8,.55) 0%, rgba(11,11,8,0) 18%); }
}

/* ================================================================
   GALERÍA — tira horizontal arrastrable, de borde a borde
   ================================================================ */
body.home .gp-section { padding-bottom:clamp(3rem,6vw,6rem); overflow:hidden; }
body.home .gp-section > .container { max-width:none; padding:0; }
body.home .gp-section .text-center.mb-lg { padding:0 var(--gutter); }
body.home .gp-grid {
  display:flex; gap:clamp(12px,1.5vw,28px); overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory; scroll-padding-inline:var(--gutter); padding:1rem var(--gutter) 3.5rem; margin:0;
  scrollbar-width:none; -webkit-overflow-scrolling:touch; cursor:grab; grid-template-columns:none;
}
body.home .gp-grid::-webkit-scrollbar { display:none; }
body.home .gp-grid.is-dragging { cursor:grabbing; scroll-snap-type:none; }
body.home .gp-grid.is-dragging .gp-item { pointer-events:none; }
body.home .gp-item { flex:0 0 clamp(250px, 26vw, 560px); aspect-ratio:4/5; scroll-snap-align:start; margin-top:0 !important; }
@media (min-width:901px) {
  body.home .gp-item:nth-child(even) { margin-top:3.5rem !important; }
  body.home .gp-item:nth-child(3n) { flex-basis:clamp(280px, 30vw, 640px); }
}
body.home .gp-controls { display:flex; align-items:center; gap:1rem; padding:0 var(--gutter); margin-top:-1.2rem; }
body.home .gp-progress { flex:1; height:2px; background:var(--c-border-m); position:relative; overflow:hidden; border-radius:2px; }
body.home .gp-progress i { position:absolute; left:0; top:0; bottom:0; width:var(--gp-w,20%); background:var(--gold-grad); transform:translateX(var(--gp-x,0)); border-radius:2px; }
body.home .gp-arrow { width:52px; height:52px; border-radius:50%; border:1px solid var(--c-border-m); background:var(--c-white); color:var(--c-text-1); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:all var(--transition); }
body.home .gp-arrow:hover { border-color:var(--c-terra); background:var(--c-terra); color:#14110C; }
body.home .gp-arrow[disabled] { opacity:.35; pointer-events:none; }
body.home .gp-section .text-center.mt-lg { padding:0 var(--gutter); text-align:left; margin-top:2rem; }

/* ================================================================
   CONFIGURADOR — instrumento a todo lo ancho
   ================================================================ */
#calculadora .container { max-width:none; }
#calculadora .calc-wrapper { grid-template-columns:minmax(0,1.35fr) minmax(380px,.65fr); gap:clamp(2rem,5vw,6rem); }
#calculadora .calc-options { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,220px),1fr)); gap:.85rem; }
#calculadora .calc-opt { flex-direction:column; align-items:flex-start; gap:.9rem; padding:1.15rem 1.2rem 1.25rem; border-radius:var(--r-xl); position:relative; overflow:hidden; min-height:150px; }
#calculadora .calc-opt:hover { transform:translateY(-4px); }
#calculadora .calc-opt-icon { width:46px; height:46px; }
#calculadora .calc-opt-name { font-size:1.08rem; }
#calculadora .calc-opt-text { gap:4px; }
#calculadora .calc-result-inner { padding:clamp(1.6rem,2.4vw,2.6rem); }
#calculadora .calc-result-min, #calculadora .calc-result-max { font-size:clamp(1.7rem,1.2rem + 1vw,2.4rem); }
@media (max-width:1100px) { #calculadora .calc-wrapper { grid-template-columns:1fr; } #calculadora .calc-result { position:static; } }

/* ================================================================
   VENTAJAS — mosaico de seis piezas de tamaños distintos
   ================================================================ */
body.home .features {
  display:grid; grid-template-columns:repeat(12, minmax(0,1fr)); gap:clamp(10px,1.3vw,22px);
  background:none; border:0; border-radius:0; overflow:visible;
}
body.home .feature {
  position:relative; isolation:isolate; overflow:hidden; display:flex; flex-direction:column; justify-content:flex-end;
  min-height:clamp(200px, 18vw, 320px); padding:clamp(1.4rem,2.2vw,2.6rem);
  background:var(--c-white); border:1px solid var(--c-border-m); border-radius:var(--r-xl);
  transition:transform .6s var(--ease), border-color .5s var(--ease), box-shadow .6s var(--ease);
}
body.home .feature::before { content:''; position:absolute; inset:0; z-index:-1; opacity:0; transition:opacity .5s var(--ease); background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), rgba(203,160,99,.26), transparent 62%); }
body.home .feature:hover { transform:translateY(-6px); border-color:var(--c-terra); box-shadow:var(--shadow-lg); background:var(--c-white); }
body.home .feature:hover::before { opacity:1; }
body.home .feature::after { display:none; }
body.home .feature-icon { position:absolute; top:clamp(1.2rem,2vw,2.2rem); left:clamp(1.2rem,2vw,2.2rem); margin:0; width:58px; height:58px; }
body.home .feature h3 { font-size:clamp(1.35rem,1rem + 1vw,2rem); margin:0 0 .5rem; }
body.home .feature p { font-size:1rem; max-width:40ch; }
body.home .feature-t1 { grid-column:1 / 7; grid-row:span 2; min-height:clamp(420px, 36vw, 640px); }
body.home .feature-t2 { grid-column:7 / 13; }
body.home .feature-t3 { grid-column:7 / 10; }
body.home .feature-t4 { grid-column:10 / 13; }
body.home .feature-t5 { grid-column:1 / 7; }
body.home .feature-t6 { grid-column:7 / 13; }
body.home .feature-t1 {
  --c-white:#14110C; --c-text-1:#F4EEE3; --c-text-2:rgba(244,238,227,.82); --c-text-3:rgba(244,238,227,.66); --c-terra-dd:#D9B77E; --c-border-m:rgba(203,160,99,.4);
  background:radial-gradient(90% 70% at 85% 0%, rgba(203,160,99,.28), transparent 60%), linear-gradient(160deg,#1B1712,#0B0B08);
}
body.home .feature-t1 .feature-icon { width:96px; height:96px; background:radial-gradient(circle at 30% 25%, rgba(255,255,255,.14), rgba(203,160,99,.12) 70%); color:var(--c-terra-dd); }
body.home .feature-t1 .feature-icon svg { width:40px; height:40px; }
body.home .feature-t1 h3 { font-size:clamp(2.2rem,1.2rem + 2.6vw,4.2rem); line-height:1; margin-bottom:.9rem; }
body.home .feature-t1 p { font-size:1.12rem; }
body.home .feature-t4 { --c-text-1:#14110C; --c-text-2:#3B3228; --c-terra-dd:#5E4520; background:var(--gold-grad); border-color:transparent; }
body.home .feature-t4 .feature-icon { background:rgba(255,255,255,.35); border-color:rgba(20,17,12,.35); color:#14110C; }
body.home .feature-t4:hover { background:var(--gold-grad); filter:brightness(1.05); }
@media (max-width:1080px) {
  body.home .features { grid-template-columns:repeat(2, minmax(0,1fr)); }
  body.home .feature, body.home .feature-t1, body.home .feature-t2, body.home .feature-t3, body.home .feature-t4, body.home .feature-t5, body.home .feature-t6 { grid-column:auto; grid-row:auto; }
  body.home .feature-t1 { grid-column:1 / -1; min-height:340px; }
}
@media (max-width:640px) {
  body.home .features { grid-template-columns:1fr; }
  body.home .feature { min-height:190px; padding-top:5.4rem; justify-content:flex-start; }
  body.home .feature-t1 { min-height:320px; padding-top:8rem; }
  body.home .feature-t1 .feature-icon { width:68px; height:68px; }
  body.home .feature-t1 .feature-icon svg { width:30px; height:30px; }
  body.home .feature-t1 h3 { font-size:clamp(2rem,9vw,2.6rem); }
}

/* ================================================================
   SERVICIOS — paneles que se expanden (carrusel con snap en móvil)
   ================================================================ */
body.home .sec-servicios > .container { max-width:none; }
body.home .cards-grid-4up { display:flex; gap:clamp(8px,1vw,16px); height:clamp(540px, 74vh, 780px); grid-template-columns:none; }
body.home .cards-grid-4up > .card {
  flex:1 1 0; min-width:0; aspect-ratio:auto !important; grid-column:auto !important; grid-row:auto !important; min-height:0;
  transition:flex .9s var(--ease), box-shadow .6s var(--ease); border-radius:var(--r-xl);
}
body.home .cards-grid-4up > .card::after { border-radius:calc(var(--r-xl) - 8px); }
body.home .cards-grid-4up > .card.is-open { flex:3.4; }
body.home .cards-grid-4up > .card:not(.is-open) .card-eyebrow,
body.home .cards-grid-4up > .card:not(.is-open) .card-desc,
body.home .cards-grid-4up > .card:not(.is-open) .card-link { display:none; }
body.home .cards-grid-4up > .card:not(.is-open) .card-title { font-size:1.2rem; }
body.home .cards-grid-4up > .card .card-body { left:16px; right:16px; bottom:16px; padding:1.1rem 1.25rem 1.2rem; transition:padding .6s var(--ease); }
body.home .cards-grid-4up > .card.is-open .card-body { max-width:min(560px, calc(100% - 32px)); padding:1.6rem 1.8rem 1.8rem; }
body.home .cards-grid-4up > .card.is-open .card-title { font-size:clamp(1.9rem,1.2rem + 1.6vw,3rem); }
body.home .cards-grid-4up > .card.is-open .card-desc { max-height:none; opacity:1; margin-top:.8rem; font-size:1.02rem; }
body.home .cards-grid-4up > .card.is-open .card-link { opacity:1; transform:none; margin-top:1rem; }
body.home .cards-grid-4up > .card:not(.is-open) .card-img img { filter:saturate(.8) brightness(.78); transition:filter .9s var(--ease), transform 1.2s var(--ease); }
body.home .cards-grid-4up > .card.is-open .card-img img { transform:scale(1.05); filter:none; }
@media (max-width:900px) {
  body.home .cards-grid-4up { height:auto; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; margin:0 calc(var(--gutter) * -1); padding:0 var(--gutter) 1rem; scroll-padding-inline:var(--gutter); scrollbar-width:none; }
  body.home .cards-grid-4up::-webkit-scrollbar { display:none; }
  body.home .cards-grid-4up > .card { flex:0 0 min(84vw, 460px); aspect-ratio:4/5 !important; scroll-snap-align:start; transition:none; }
  body.home .cards-grid-4up > .card:not(.is-open) .card-eyebrow, body.home .cards-grid-4up > .card:not(.is-open) .card-desc, body.home .cards-grid-4up > .card:not(.is-open) .card-link { display:block; }
  body.home .cards-grid-4up > .card .card-body, body.home .cards-grid-4up > .card.is-open .card-body { max-width:none; padding:1rem 1.15rem 1.15rem; }
  body.home .cards-grid-4up > .card .card-desc { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; max-height:none; opacity:1; margin-top:.4rem; font-size:.92rem; }
  body.home .cards-grid-4up > .card .card-link { opacity:1; transform:none; margin-top:.6rem; }
  body.home .cards-grid-4up > .card:not(.is-open) .card-title, body.home .cards-grid-4up > .card.is-open .card-title { font-size:1.45rem; }
  body.home .cards-grid-4up > .card:not(.is-open) .card-img img { filter:none; }
}
body.home .sec-servicios .text-center.mt-xl { text-align:left; margin-top:2rem; }

/* ================================================================
   PROCESO — titular fijo + pasos de gran formato
   ================================================================ */
body.home .sec-proceso > .container { max-width:none; }
body.home .sec-proceso > .container > div { grid-template-columns:minmax(0,5fr) minmax(0,7fr) !important; gap:clamp(2rem,6vw,9rem) !important; }
body.home .sec-proceso h2 { font-size:clamp(2.4rem,1rem + 4.2vw,5.4rem); line-height:1.02; }
body.home .sec-proceso .steps { counter-reset:paso; }
body.home .step { position:relative; display:grid; grid-template-columns:auto 1fr; gap:1.5rem clamp(1.2rem,2.4vw,3rem); padding:clamp(1.6rem,2.6vw,3rem) 0; margin:0; border-radius:0; border-top:1px solid rgba(203,160,99,.28); counter-increment:paso; }
body.home .step:last-child { border-bottom:1px solid rgba(203,160,99,.28); padding-bottom:clamp(1.6rem,2.6vw,3rem); }
body.home .step:hover { background:transparent; }
body.home .step::after { content:counter(paso, decimal-leading-zero) / ''; position:absolute; right:0; top:50%; translate:0 -50%; font-family:var(--font-display); font-variation-settings:'opsz' 26; font-size:clamp(5rem,4rem + 6vw,11rem); line-height:1; color:rgba(203,160,99,.11); pointer-events:none; transition:color .6s var(--ease), translate .8s var(--ease); }
body.home .step:hover::after { color:rgba(203,160,99,.22); translate:-12px -50%; }
body.home .step-num { width:clamp(56px,5vw,84px); height:clamp(56px,5vw,84px); box-shadow:none; }
body.home .step-num .icon { width:clamp(22px,2vw,32px); height:clamp(22px,2vw,32px); }
body.home .step-body h3 { font-size:clamp(1.5rem,1rem + 1.6vw,2.6rem); margin-bottom:.6rem; }
body.home .step-body p { font-size:clamp(1rem,.95rem + .25vw,1.18rem); max-width:52ch; }
@media (max-width:900px) {
  body.home .sec-proceso > .container > div { grid-template-columns:1fr !important; }
  body.home .step::after { font-size:5rem; top:1.2rem; translate:0 0; }
  body.home .step:hover::after { translate:0 0; }
}

/* ================================================================
   CONFIANZA — cifras a gran escala + reseñas grandes
   ================================================================ */
body.home .sec-confianza > .container { max-width:none; }
body.home .trust-band { display:grid; grid-template-columns:repeat(4, 1fr); border:0; border-top:1px solid var(--c-border-m); gap:0; }
body.home .trust-card { text-align:left; padding:clamp(1.6rem,2.6vw,3rem) clamp(1rem,2vw,2.5rem) clamp(1.4rem,2.2vw,2.6rem); flex:none; border-left:1px solid var(--c-border-m); }
body.home .trust-card:first-child { border-left:0; padding-left:0; }
body.home .trust-card + .trust-card::before { display:none; }
body.home .trust-card-icon { margin-bottom:clamp(1.2rem,2.6vw,3rem); }
body.home .trust-card-n { font-size:clamp(3.2rem, 1rem + 6.4vw, 9rem); line-height:.9; margin-bottom:1rem; letter-spacing:-.02em; }
body.home .trust-card-label { font-size:.78rem; }
@media (max-width:900px) { body.home .trust-band { grid-template-columns:repeat(2,1fr); } body.home .trust-card:nth-child(3) { border-left:0; padding-left:0; } body.home .trust-card:nth-child(n+3) { border-top:1px solid var(--c-border-m); } }
body.home .testimonios-carousel { margin-top:clamp(2.5rem,5vw,5rem); }
body.home .testimonios-track { gap:clamp(12px,1.4vw,24px); }
body.home .testimonio { flex:0 0 clamp(300px, 32vw, 600px); padding:clamp(1.6rem,2.4vw,2.8rem); border-radius:var(--r-xl); }
body.home .testimonio-texto { font-size:clamp(1.05rem,.95rem + .4vw,1.35rem); line-height:1.6; }

/* ================================================================
   MAPA — mitad de pantalla, a sangre
   ================================================================ */
body.home .sec-mapa { padding:0; }
body.home .sec-mapa > .container { max-width:none; padding:0; }
body.home .sec-mapa > .container > div { grid-template-columns:minmax(320px,5fr) minmax(0,7fr) !important; gap:0 !important; align-items:stretch !important; }
body.home .sec-mapa .intro-col-sticky { position:static; padding:clamp(3rem,6vw,7rem) var(--gutter) clamp(3rem,6vw,7rem); display:flex; flex-direction:column; justify-content:center; }
body.home .sec-mapa h2 { font-size:clamp(2.3rem,1rem + 3.6vw,4.8rem); line-height:1.02; }
body.home .sec-mapa .map-embed { border-radius:0; border:0; box-shadow:none; height:100%; min-height:clamp(380px, 52vw, 720px); background:linear-gradient(135deg,#DDD2BC,#C9BC9F); }
body.home .sec-mapa .map-embed iframe { height:100% !important; min-height:inherit; border-radius:0 !important; }
@media (max-width:900px) { body.home .sec-mapa > .container > div { grid-template-columns:1fr !important; } body.home .sec-mapa .map-embed { min-height:380px; } }

/* ================================================================
   FAQ — titular fijo a la izquierda, preguntas a la derecha
   ================================================================ */
body.home .sec-faq > .container { max-width:none; display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(2rem,6vw,9rem); align-items:start; }
body.home .sec-faq .text-center.mb-lg { display:block; position:sticky; top:calc(var(--header-h) + 2rem); max-width:none; text-align:left; margin:0; }
body.home .sec-faq .text-center.mb-lg h2 { font-size:clamp(2.2rem,1rem + 3.6vw,4.8rem); }
body.home .sec-faq .text-center.mb-lg .separator-center { margin:1.4rem 0 0; width:96px; background:linear-gradient(90deg, var(--c-terra), rgba(203,160,99,0)); }
body.home .sec-faq .text-center.mb-lg .separator::before { left:0; margin-left:0; }
body.home .sec-faq .faq-list { max-width:none; margin:0; }
body.home .faq-q { font-size:clamp(1.08rem,.95rem + .4vw,1.45rem); padding:clamp(1.3rem,2vw,2.1rem) .15rem; }
body.home .faq-a { font-size:1.06rem; max-width:62ch; }
@media (max-width:900px) { body.home .sec-faq > .container { grid-template-columns:1fr; } body.home .sec-faq .text-center.mb-lg { position:static; } }

/* ================================================================
   CTA FINAL — titular gigante a la izquierda, acción a la derecha
   ================================================================ */
body.home .cta-band { text-align:left; padding:clamp(5rem,12vw,13rem) 0; }
body.home .cta-band > .container { max-width:none; display:grid; grid-template-columns:minmax(0,8fr) minmax(0,4fr); column-gap:clamp(2rem,5vw,8rem); align-items:end; }
body.home .cta-band .eyebrow { grid-column:1 / -1; justify-content:flex-start; margin:0 0 1.5rem; }
body.home .cta-band .eyebrow::after { display:none; }
body.home .cta-band h2 { grid-column:1; grid-row:2 / 4; font-size:clamp(3rem, .6rem + 8vw, 9.6rem); line-height:.95; letter-spacing:-.028em; margin:0; }
body.home .cta-band p:not(.eyebrow) { grid-column:2; grid-row:2; align-self:end; margin:0 0 1.8rem; max-width:34ch; font-size:1.15rem; }
body.home .cta-band > .container > div { grid-column:2; grid-row:3; justify-content:flex-start !important; }
@media (max-width:900px) {
  body.home .cta-band > .container { grid-template-columns:1fr; }
  body.home .cta-band h2, body.home .cta-band p:not(.eyebrow), body.home .cta-band > .container > div { grid-column:1; grid-row:auto; }
  body.home .cta-band p:not(.eyebrow) { margin-top:1.4rem; }
}

/* ================================================================
   MOVIMIENTO — reveals escalonados, luz que sigue el cursor, botón magnético
   ================================================================ */
body.home .reveal { transition-delay:calc(var(--i, 0) * 85ms); }
.has-glow { position:relative; }
.btn-magnetic { transition:transform .4s var(--ease), box-shadow .3s var(--ease), filter .3s var(--ease); }
/* Barra de progreso de lectura bajo el header */
.read-progress { position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--gold-grad); transform:scaleX(var(--read, 0)); transform-origin:left; z-index:2; pointer-events:none; }
@media (prefers-reduced-motion: reduce) {
  body.home .hero-media img, body.home .hero-media svg { animation:none; translate:none; scale:1.02; }
  body.home .reveal { transition-delay:0s; }
  body.home .cards-grid-4up > .card, body.home .feature { transition:none; }
}

/* ================================================================
   SCROLL — la página se va "ejecutando" mientras se baja
   ----------------------------------------------------------------
   Lo activa assets/js/scrollfx.js agregando html.fx y publicando por sección
   --sa (llegada 0→1), --sp (recorrido 0→1) y, en las escenas fijas (hero y
   servicios), --pin (avance 0→1 mientras la escena está anclada).
   Solo transform/opacity/clip-path. Con valores por defecto (var(--sa,1)) la
   página se ve igual si no hay JS; con "reducir movimiento" no se activa.
   ================================================================ */
@media (prefers-reduced-motion: no-preference) {

  /* ---- ESCENA 1 · Hero anclado: la foto se acerca y se oscurece, el texto se despide ---- */
  html.fx body.home .hero { overflow:clip; min-height:0; height:calc((100svh - var(--header-h)) * 1.8); align-items:start; grid-template-rows:1fr; }
  html.fx body.home .hero-media,
  html.fx body.home .hero-inner { position:sticky; inset:var(--header-h) 0 auto 0; grid-area:1 / 1; align-self:start; height:calc(100svh - var(--header-h)); min-height:0; }
  html.fx body.home .hero-media { z-index:0; }
  html.fx body.home .hero-media picture, html.fx body.home .hero-media svg {
    scale:calc(1 + var(--pin, 0) * .42); opacity:calc(1 - var(--pin, 0) * .45); transform-origin:62% 55%; will-change:scale, opacity;
  }
  html.fx body.home .hero-media img { translate:0 calc(var(--pin, 0) * -5%); }
  html.fx body.home .hero::after { opacity:calc(.05 + var(--pin, 0) * .1); }
  html.fx body.home .hero-text .eyebrow { translate:0 calc(var(--pin, 0) * -9vh); opacity:calc(1 - var(--pin, 0) * 2.4); }
  html.fx body.home .hero-text h1       { translate:calc(var(--pin, 0) * -6vw) calc(var(--pin, 0) * -15vh); opacity:calc(1 - (var(--pin, 0) - .12) * 1.9); }
  html.fx body.home .hero-text h1 em    { translate:calc(var(--pin, 0) * 9vw) 0; }
  html.fx body.home .hero-text > p.lead { translate:0 calc(var(--pin, 0) * -11vh); opacity:calc(1 - var(--pin, 0) * 2.1); }
  html.fx body.home .hero-actions       { translate:0 calc(var(--pin, 0) * -8vh);  opacity:calc(1 - var(--pin, 0) * 2.6); }
  html.fx body.home .hero-stats         { opacity:calc(1 - (var(--pin, 0) - .35) * 1.7); }

  /* ---- Titulares de sección: salen de una máscara al llegar y el filete dorado se dibuja ---- */
  html.fx body.home .text-center.mb-lg h2,
  html.fx body.home .sec-proceso h2,
  html.fx body.home .sec-mapa h2 { translate:0 calc((1 - var(--sa, 1)) * 64px); clip-path:inset(0 0 calc((1 - var(--sa, 1)) * 105%) 0); }
  @media (pointer:coarse) {
    html.fx body.home .text-center.mb-lg h2, html.fx body.home .sec-proceso h2, html.fx body.home .sec-mapa h2 { clip-path:none; opacity:calc(.15 + var(--sa, 1) * .85); }
  }
  html.fx body.home .separator { transform-origin:left center; scale:calc(.06 + var(--sa, 1) * .94) 1; }

  /* ---- Galería y servicios: la foto se desplaza dentro de su marco ---- */
  @media (hover:hover) and (pointer:fine) { html.fx body.home .gp-item img { scale:1.16; translate:0 calc((.5 - var(--sp, .5)) * 12%); } }
  @media (hover:hover) and (pointer:fine) { html.fx body.home .cards-grid-4up > .card .card-img img { scale:1.1; translate:0 calc((.5 - var(--sp, .5)) * 7%); } }

  /* ---- Ventajas: cada pieza del mosaico llega desde más abajo que la anterior ---- */
  html.fx body.home .sec-ventajas .feature { translate:0 calc((1 - var(--sa, 1)) * (34px + var(--i, 0) * 26px)); }

  /* (Servicios: la escena anclada con apertura automática se retiró — cambiar el ancho de los paneles al hacer scroll
     cuenta como desplazamiento de diseño (CLS). Los paneles se abren solo al pasar el cursor.) */

  /* ---- ESCENA 3 · Proceso: el paso del centro se enciende (círculo dorado), el resto se apaga ---- */
  html.fx body.home .sec-proceso .step { min-height:clamp(240px, 44vh, 460px); align-content:center; }
  html.fx body.home .sec-proceso .step .step-body { opacity:.3; translate:0 22px; transition:opacity .7s var(--ease), translate .7s var(--ease); }
  html.fx body.home .sec-proceso .step.fx-done .step-body { opacity:.55; translate:0 0; }
  html.fx body.home .sec-proceso .step.fx-active .step-body { opacity:1; translate:0 0; }
  /* el círculo es siempre opaco (la línea del recorrido nunca se ve a través de él) */
  html.fx body.home .sec-proceso .step .step-num {
    background:var(--c-bg); border-color:rgba(203,160,99,.38); color:rgba(203,160,99,.5); opacity:1;
    box-shadow:0 0 0 9px var(--c-bg); transition:box-shadow .8s var(--ease), background .6s var(--ease), color .6s var(--ease), border-color .6s var(--ease), scale .8s var(--ease);
  }
  html.fx body.home .sec-proceso .step.fx-done .step-num { border-color:var(--c-terra); color:var(--c-terra-dd); }
  html.fx body.home .sec-proceso .step.fx-active .step-num {
    background:var(--gold-grad); border-color:var(--c-terra); color:#14110C; scale:1.12;
    box-shadow:0 0 0 9px var(--c-bg), 0 0 0 10px rgba(203,160,99,.22), 0 0 54px rgba(203,160,99,.4);
  }
  @media (max-width:900px) { html.fx body.home .sec-proceso .step.fx-active .step-num { scale:1.04; box-shadow:0 0 0 6px var(--c-bg), 0 0 36px rgba(203,160,99,.4); } }
  html.fx body.home .sec-proceso .step::after { transition:color .8s var(--ease), translate .8s var(--ease); }
  html.fx body.home .sec-proceso .step.fx-active::after { color:rgba(203,160,99,.2); }

  /* ---- Cifras de confianza: crecen al llegar ---- */
  html.fx body.home .trust-card-n { transform-origin:left bottom; scale:calc(.8 + var(--sa, 1) * .2); translate:0 calc((1 - var(--sa, 1)) * (36px + var(--i, 0) * 16px)); }

  /* ---- Mapa: la ventana se abre hasta ocupar todo el ancho ---- */
  html.fx body.home .sec-mapa .map-embed { clip-path:inset(calc((1 - var(--sa, 1)) * 14%) calc((1 - var(--sa, 1)) * 12%) round calc((1 - var(--sa, 1)) * 40px)); }

}

/* ================================================================
   SCROLL · escenas del resto de la home
   ================================================================ */
@media (prefers-reduced-motion: no-preference) {

  /* ---- Galería anclada (solo con ratón): el scroll vertical recorre la tira en horizontal.
         En pantallas táctiles queda la tira normal que se desliza con el dedo. ---- */
  @media (min-width:901px) and (hover:hover) and (pointer:fine) {
    html.fx body.home .gp-section { overflow:clip; min-height:calc(100svh + 150vh); padding-bottom:0; }
    html.fx body.home .gp-section > .container { position:sticky; top:calc(var(--header-h) + 12px); padding-bottom:1.5rem; }
    html.fx body.home .gp-grid { scroll-snap-type:none; scroll-behavior:auto; padding-bottom:1.4rem; cursor:default; }
    html.fx body.home .gp-item { flex-basis:clamp(210px, min(23vw, 40svh), 460px); }
    html.fx body.home .gp-item:nth-child(3n) { flex-basis:clamp(230px, min(27vw, 46svh), 520px); }
    html.fx body.home .gp-section .text-center.mt-lg { margin-top:.4rem; }
    html.fx body.home .gp-section .text-center.mb-lg { margin-bottom:1rem; }

    html.fx body.home .gp-arrow { display:none; }
  }

  /* las piezas que viajan en horizontal no deben provocar scroll lateral */
  html.fx body.home #calculadora, html.fx body.home .sec-ventajas, html.fx body.home .sec-faq, html.fx body.home .sec-mapa, html.fx body.home .sec-confianza, html.fx body.home .site-footer { overflow-x:clip; }

  /* ---- Calculadora: las opciones llegan desde abajo, una tras otra; el resultado entra desde la derecha ---- */
  html.fx body.home #calculadora .calc-opt { translate:0 calc((1 - var(--sa, 1)) * (70px + var(--i, 0) * 34px)); scale:calc(.9 + var(--sa, 1) * .1); }
  html.fx body.home #calculadora .calc-result { translate:calc((1 - var(--sa, 1)) * 140px) 0; rotate:calc((1 - var(--sa, 1)) * 2.4deg); transform-origin:left center; }

  /* ---- Ventajas: el mosaico se arma — cada pieza llega desde un lado distinto, girada ---- */
  html.fx body.home .sec-ventajas .feature { translate:0 0; rotate:0deg; scale:1; }
  html.fx body.home .sec-ventajas .feature-t1 { translate:calc((1 - var(--sa, 1)) * -22vw) calc((1 - var(--sa, 1)) * 6vh);  rotate:calc((1 - var(--sa, 1)) * -5deg); }
  html.fx body.home .sec-ventajas .feature-t2 { translate:calc((1 - var(--sa, 1)) * 18vw) calc((1 - var(--sa, 1)) * -4vh);  rotate:calc((1 - var(--sa, 1)) * 4deg); }
  html.fx body.home .sec-ventajas .feature-t3 { translate:0 calc((1 - var(--sa, 1)) * 30vh); rotate:calc((1 - var(--sa, 1)) * -3deg); }
  html.fx body.home .sec-ventajas .feature-t4 { translate:calc((1 - var(--sa, 1)) * 10vw) calc((1 - var(--sa, 1)) * 34vh); rotate:calc((1 - var(--sa, 1)) * 5deg); scale:calc(.82 + var(--sa, 1) * .18); }
  html.fx body.home .sec-ventajas .feature-t5 { translate:calc((1 - var(--sa, 1)) * -12vw) calc((1 - var(--sa, 1)) * 30vh); rotate:calc((1 - var(--sa, 1)) * -4deg); }
  html.fx body.home .sec-ventajas .feature-t6 { translate:calc((1 - var(--sa, 1)) * 20vw) calc((1 - var(--sa, 1)) * 26vh); rotate:calc((1 - var(--sa, 1)) * 3deg); }

  /* ---- Confianza: las cifras suben escalonadas y los testimonios flotan a distinto ritmo ---- */
  html.fx body.home .trust-card { translate:0 calc((1 - var(--sa, 1)) * (60px + var(--i, 0) * 46px)); }
  html.fx body.home .trust-card-n { translate:0 0; scale:calc(.7 + var(--sa, 1) * .3); }
  @media (hover:hover) and (pointer:fine) {
    html.fx body.home .testimonio:nth-child(odd)  { translate:0 calc((.5 - var(--sp, .5)) * 90px); }
    html.fx body.home .testimonio:nth-child(even) { translate:0 calc((.5 - var(--sp, .5)) * -90px); }
  }

  /* ---- Mapa: el texto llega desde la izquierda y el mapa se acerca mientras se abre ---- */
  html.fx body.home .sec-mapa .intro-col-sticky { translate:calc((1 - var(--sa, 1)) * -90px) 0; }
  html.fx body.home .sec-mapa .map-embed iframe { scale:calc(1.3 - var(--sa, 1) * .3); transform-origin:center; }

  /* ---- Preguntas frecuentes: cada pregunta entra desde la derecha ---- */
  html.fx body.home .sec-faq .faq-item { translate:calc((1 - var(--sa, 1)) * (160px + var(--i, 0) * 60px)) 0; }


  /* ---- Pie: las columnas suben una tras otra ---- */
  html.fx body.home .site-footer .footer-grid > * { translate:0 calc((1 - var(--sa, 1)) * (50px + var(--i, 0) * 34px)); }
}

/* ---- Llamada final (versión refinada): escena corta, titular elegante que sale de una máscara.
       Solo en pantallas con altura suficiente: en un celular el contenido no cabe anclado. ---- */
@media (prefers-reduced-motion: no-preference) and (min-width:901px) and (min-height:640px) {
  html.fx body.home .cta-band { --cta-h:min(calc(100svh - var(--header-h) - 12px), 680px); overflow:clip; min-height:calc(var(--cta-h) + 42vh); padding:0; }
  html.fx body.home .cta-band > .container { position:sticky; top:calc(var(--header-h) + 12px + (100svh - var(--header-h) - 12px - var(--cta-h)) / 2); min-height:var(--cta-h); align-content:center; padding-top:2rem; padding-bottom:2rem; }
  html.fx body.home .cta-band > .container::before { content:''; position:absolute; left:var(--gutter); top:0; height:1px; width:calc((100% - var(--gutter) * 2) * min(var(--pin, 1) * 2, 1)); background:linear-gradient(90deg, var(--c-terra), rgba(203,160,99,.15)); pointer-events:none; }
  html.fx body.home .cta-band .eyebrow { opacity:min(var(--pin, 1) * 5, 1); }
  html.fx body.home .cta-band h2 {
    font-size:clamp(2.4rem, 1rem + 5vw, 6.4rem); line-height:1.03; letter-spacing:-.022em; transform-origin:left center;
    clip-path:inset(0 0 calc((1 - min(var(--pin, 1) * 3, 1)) * 105%) 0);
    translate:0 calc((1 - min(var(--pin, 1) * 3, 1)) * 36px); scale:calc(.95 + min(var(--pin, 1) * 3, 1) * .05);
  }
  html.fx body.home .cta-band p:not(.eyebrow) { opacity:calc((var(--pin, 1) - .22) * 4); translate:0 calc((1 - min(max(var(--pin, 1) - .2, 0) * 3.5, 1)) * 28px); }
  html.fx body.home .cta-band > .container > div { align-self:start; opacity:calc((var(--pin, 1) - .34) * 4); translate:0 calc((1 - min(max(var(--pin, 1) - .3, 0) * 3.5, 1)) * 34px); }
}

/* ================================================================
   SCROLL · versión ligera para pantallas táctiles
   En el celular se conservan las escenas (hero, proceso, llamada final) y las llegadas
   escalonadas, pero solo con translate/opacity, que no obligan a repintar: sin rotaciones,
   sin escalado de texto, sin recortes (clip-path) ni escalado del mapa.
   ================================================================ */
@media (prefers-reduced-motion: no-preference) and (pointer:coarse) {
  html.fx body.home .sec-ventajas .feature { rotate:0deg !important; scale:1 !important; }
  html.fx body.home .sec-ventajas .feature-t1, html.fx body.home .sec-ventajas .feature-t5 { translate:calc((1 - var(--sa, 1)) * -14vw) calc((1 - var(--sa, 1)) * 10vh); }
  html.fx body.home .sec-ventajas .feature-t2, html.fx body.home .sec-ventajas .feature-t4, html.fx body.home .sec-ventajas .feature-t6 { translate:calc((1 - var(--sa, 1)) * 14vw) calc((1 - var(--sa, 1)) * 10vh); }
  html.fx body.home .sec-ventajas .feature-t3 { translate:0 calc((1 - var(--sa, 1)) * 12vh); }
  html.fx body.home #calculadora .calc-opt { scale:1; }
  html.fx body.home #calculadora .calc-result { rotate:0deg; translate:0 calc((1 - var(--sa, 1)) * 60px); }
  html.fx body.home .trust-card-n { scale:1; }
  html.fx body.home .sec-mapa .map-embed { clip-path:none; opacity:calc(.2 + var(--sa, 1) * .8); }
  html.fx body.home .sec-mapa .map-embed iframe { scale:1; }
  html.fx body.home .sec-proceso .step.fx-active .step-num { box-shadow:0 0 0 6px var(--c-bg), 0 0 0 7px rgba(203,160,99,.25); }
  html.fx body.home .site-footer .footer-grid > * { translate:0 calc((1 - var(--sa, 1)) * 24px); }
}

/* Llamada final en pantallas pequeñas o bajas (sin escena anclada): llega desde abajo, sin más */
@media (prefers-reduced-motion: no-preference) and (max-width:900px), (prefers-reduced-motion: no-preference) and (max-height:639px) {
  html.fx body.home .cta-band > .container > * { translate:0 calc((1 - var(--sa, 1)) * 36px); opacity:calc(.2 + var(--sa, 1) * .8); }
}

/* Servicios en móvil: carrusel con flechas, barra de progreso y arrastre con ratón (igual que la galería) */
@media (max-width:900px) {
  body.home .cards-grid-4up { cursor:grab; }
  body.home .cards-grid-4up.is-dragging { scroll-snap-type:none; cursor:grabbing; }
  body.home .cards-grid-4up.is-dragging > .card { pointer-events:none; }
  body.home .sec-servicios .gp-controls { margin-top:.4rem; }
}
