/* =====================================================================
   León Business S.A.S. — Landing
   styles.css — Sistema de diseño (identidad azul premium)
   ===================================================================== */

/* ---------- Tokens ---------- */
:root{
  /* Azules */
  --navy-900:#061630;
  --navy-800:#0a2140;
  --navy-700:#0e2f57;
  --navy-600:#123c6e;
  --blue-700:#0f57b0;
  --blue-600:#1462c6;
  --blue-500:#1f74e0;
  --blue-400:#3d94f5;
  --blue-300:#79b4ff;
  --sky-200:#d7e6f8;
  --sky-100:#eaf2fc;
  --sky-50:#f4f8fd;
  /* Neutros */
  --ink:#0b1830;
  --slate:#465873;
  --muted:#566985;
  --line:#dbe6f3;
  --line-2:#e8f0f9;
  --white:#ffffff;
  /* Acento cálido (uso puntual en tejas) */
  --warm:#d9793a;
  --warm-soft:#f6eadf;
  /* WhatsApp */
  --wa:#25d366;
  --wa-700:#128c4a;

  --font-display:"Sora","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --font-body:"Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;

  --r-xs:8px; --r-sm:12px; --r:16px; --r-lg:22px; --r-xl:30px; --r-pill:999px;

  --sh-1:0 1px 2px rgba(10,33,64,.06), 0 2px 8px rgba(10,33,64,.06);
  --sh-2:0 6px 18px rgba(10,33,64,.10), 0 2px 6px rgba(10,33,64,.06);
  --sh-3:0 18px 44px rgba(10,33,64,.16), 0 6px 14px rgba(10,33,64,.08);
  --sh-blue:0 18px 40px rgba(20,98,198,.28);

  --nav-h:72px;
  --ease:cubic-bezier(.22,.61,.36,1);
  --container:1240px;
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--white);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,picture,video,svg{display:block;max-width:100%}
img,video{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
a{color:inherit;text-decoration:none}
ul{list-style:none;padding:0}
:focus-visible{outline:3px solid var(--blue-400);outline-offset:2px;border-radius:6px}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.08;font-weight:700;letter-spacing:-.02em;color:var(--navy-800)}
::selection{background:var(--blue-400);color:#fff}

/* Spans de contenido editable del CMS: <span data-t="clave">texto</span>.
   Envuelven SOLO el tramo de texto de nodos que mezclan texto con markup que no se
   puede perder (iconos <svg>, contadores (0), el <span>›</span> del menú móvil, el
   <span class="req">*</span>, el <b>1</b> de los pasos, #year, .accent).
   Sin esta regla, selectores por etiqueta como '.nav__brand span' o '.info-line span'
   atraparían estos spans nuevos y les aplicarían display:block u otros estilos,
   rompiendo la maquetación. Con display:contents el span no genera caja: el texto se
   maqueta exactamente como si el span no existiera. !important porque esas reglas por
   etiqueta tienen mayor especificidad.
   display:contents elimina la caja pero NO la herencia: el span sigue en la cadena y
   propaga a su texto las propiedades heredables que le apliquen esas reglas por etiqueta
   (p. ej. '.mmenu__links a span{color:var(--blue-300);font-size:1rem}' teñía de azul y
   encogía las etiquetas del menú móvil). Por eso se fuerzan a inherit: así el texto toma
   los valores del padre real, exactamente como antes de envolverlo. */
[data-t]{
  display:contents !important;
  color:inherit !important;
  font-family:inherit !important;
  font-size:inherit !important;
  font-weight:inherit !important;
  font-style:inherit !important;
  line-height:inherit !important;
  letter-spacing:inherit !important;
  text-transform:inherit !important;
  white-space:inherit !important;
}

/* Skip link (accesibilidad de teclado) */
.skip-link{position:fixed;top:-70px;left:12px;z-index:400;background:var(--blue-600);color:#fff;
  padding:12px 18px;border-radius:0 0 12px 12px;font-weight:650;box-shadow:var(--sh-2);
  transition:top .25s var(--ease)}
.skip-link:focus{top:0}

/* scrollbar (webkit) */
body::-webkit-scrollbar{width:12px}
body::-webkit-scrollbar-thumb{background:var(--sky-200);border-radius:99px;border:3px solid var(--white)}

/* ---------- Layout helpers ---------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-left:max(clamp(20px,5vw,44px),env(safe-area-inset-left));padding-right:max(clamp(20px,5vw,44px),env(safe-area-inset-right))}
.section{padding-block:clamp(64px,9vw,120px);position:relative}
.section--tight{padding-block:clamp(44px,6vw,80px)}
.section--navy{background:radial-gradient(120% 120% at 80% -10%,var(--navy-700),var(--navy-900));color:#dbe7f6}
.section--navy h2,.section--navy h3{color:#fff}
.section--sky{background:linear-gradient(180deg,var(--sky-50),#fff)}
.bleed{position:relative;overflow:hidden}

.eyebrow{
  display:inline-flex;align-items:center;gap:.5rem;
  font-family:var(--font-body);font-weight:700;font-size:.78rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--blue-600);
}
.eyebrow::before{content:"";width:26px;height:2px;background:linear-gradient(90deg,var(--blue-500),transparent);border-radius:2px}
.section--navy .eyebrow{color:var(--blue-300)}
.section--navy .eyebrow::before{background:linear-gradient(90deg,var(--blue-300),transparent)}

.h-head{max-width:720px;margin-bottom:clamp(30px,4vw,52px)}
.h-head.center{margin-inline:auto;text-align:center}
.h-head h2,.s-title{font-size:clamp(1.55rem,3.4vw,2.5rem);margin-top:12px;line-height:1.1}
.s-title{margin-top:0}
.h-head p{margin-top:16px;color:var(--slate);font-size:clamp(1rem,1.6vw,1.15rem)}
.section--navy .h-head p{color:#a9c0dd}

.grid{display:grid;gap:clamp(16px,2vw,26px)}

/* ---------- Buttons ---------- */
.btn{
  --_bg:var(--blue-600);--_fg:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:var(--font-body);font-weight:650;font-size:.98rem;letter-spacing:.005em;
  padding:.9rem 1.5rem;border-radius:var(--r-pill);
  background:var(--_bg);color:var(--_fg);
  border:1px solid transparent;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease),filter .25s var(--ease);
  will-change:transform;line-height:1;text-align:center;position:relative;
}
.btn svg{width:1.15em;height:1.15em;flex:0 0 auto}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn--primary{background:linear-gradient(135deg,var(--blue-500),var(--blue-700));box-shadow:var(--sh-blue)}
.btn--primary:hover{box-shadow:0 22px 48px rgba(20,98,198,.36)}
.btn--wa{background:linear-gradient(135deg,#0f9a4c,#0a6d37);box-shadow:0 16px 34px rgba(12,110,58,.34);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.btn--wa:hover{box-shadow:0 20px 42px rgba(12,110,58,.44)}
.btn--ghost{background:transparent;color:var(--navy-700);border-color:var(--line)}
.btn--ghost:hover{border-color:var(--blue-400);color:var(--blue-600);background:var(--sky-50)}
.btn--light{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.32);backdrop-filter:blur(6px)}
.btn--light:hover{background:rgba(255,255,255,.24)}
.btn--lg{padding:1.05rem 1.9rem;font-size:1.05rem}
.btn--sm{padding:.62rem 1.05rem;font-size:.85rem}
.btn--block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.btn.is-loading{color:transparent;pointer-events:none}
.btn.is-loading::after{
  content:"";position:absolute;width:1.15em;height:1.15em;border-radius:50%;
  border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Loader ---------- */
.loader{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;
  background:radial-gradient(130% 130% at 50% 20%,var(--navy-700),var(--navy-900));
  transition:opacity .6s var(--ease),visibility .6s;
}
.loader.is-done{opacity:0;visibility:hidden}
.loader__box{display:grid;justify-items:center;gap:26px;width:min(320px,80vw);text-align:center}
.loader__roof{width:150px;height:96px;position:relative}
.loader__tile{
  position:absolute;left:50%;bottom:0;width:150px;height:20px;border-radius:5px;
  background:linear-gradient(90deg,var(--blue-400),var(--blue-600));
  transform:translate(-50%,-6px);opacity:0;
  animation:stack 2.1s var(--ease) infinite;
}
.loader__tile:nth-child(1){--i:0;width:150px}
.loader__tile:nth-child(2){--i:1;width:120px}
.loader__tile:nth-child(3){--i:2;width:90px}
.loader__tile:nth-child(4){--i:3;width:60px}
.loader__tile{bottom:calc(var(--i,0) * 22px)}
.loader__tile{animation-delay:calc(var(--i) * .18s)}
@keyframes stack{
  0%{opacity:0;transform:translate(-50%,-22px)}
  22%,70%{opacity:1;transform:translate(-50%,-6px)}
  100%{opacity:1;transform:translate(-50%,-6px)}
}
.loader__logo{width:min(230px,64vw);height:auto;opacity:.96;animation:pulse 2.1s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.6}50%{opacity:1}}
.loader__txt{color:#9fb8db;font-size:.82rem;letter-spacing:.22em;text-transform:uppercase}
@media (prefers-reduced-motion:reduce){
  .loader__tile,.loader__logo{animation:none;opacity:1}
}

/* ---------- Navbar ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:120;
  height:calc(var(--nav-h) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);box-sizing:border-box;
  display:flex;align-items:center;
  transition:background .35s var(--ease),box-shadow .35s var(--ease),transform .4s var(--ease),backdrop-filter .35s;
}
/* Velo superior para legibilidad de la barra sobre el hero (estado transparente) */
.nav::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,22,48,.55),rgba(6,22,48,0));
  opacity:1;transition:opacity .35s var(--ease)}
.nav.is-scrolled::before{opacity:0}
.nav:not(.is-scrolled) .nav__links a,
.nav:not(.is-scrolled) .nav__brand b,
.nav:not(.is-scrolled) .nav__brand span{text-shadow:0 1px 8px rgba(0,0,0,.4)}
.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}
.nav.is-scrolled{background:rgba(255,255,255,.86);backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 1px 0 rgba(10,33,64,.08),0 10px 30px rgba(10,33,64,.08)}
.nav.is-hidden{transform:translateY(-110%)}
.nav__brand{display:flex;align-items:center;gap:.8rem;z-index:2;min-width:0}
.nav__brand img{height:34px;width:auto;flex:0 0 auto}
.nav__brand .logo-light{filter:drop-shadow(0 2px 6px rgba(0,0,0,.35))}
.nav__brand .logo-dark{display:none}
.nav.is-scrolled .nav__brand .logo-light{display:none}
.nav.is-scrolled .nav__brand .logo-dark{display:block}
/* Separador + bajada: el logotipo ya trae el nombre, el texto solo aporta rubro */
.nav__brand .brand-tx{padding-left:.8rem;border-left:1px solid rgba(255,255,255,.28)}
.nav.is-scrolled .nav__brand .brand-tx{border-left-color:var(--line)}
.nav__brand b{font-family:var(--font-display);font-weight:800;font-size:1.15rem;color:#fff;letter-spacing:.01em;line-height:1}
.nav__brand span{display:block;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:#cfe0f5;font-weight:600;white-space:nowrap}
.nav.is-scrolled .nav__brand b{color:var(--navy-800)}
.nav.is-scrolled .nav__brand span{color:var(--blue-600)}
.nav__links{display:flex;align-items:center;gap:.25rem}
.nav__links a{
  font-size:.92rem;font-weight:550;color:rgba(255,255,255,.92);padding:.55rem .8rem;border-radius:var(--r-pill);
  transition:color .2s,background .2s;position:relative;
}
.nav__links a:hover{background:rgba(255,255,255,.14)}
.nav.is-scrolled .nav__links a{color:var(--slate)}
.nav.is-scrolled .nav__links a:hover{color:var(--blue-600);background:var(--sky-100)}
.nav__actions{display:flex;align-items:center;gap:.6rem;z-index:2}
.nav__burger{
  display:none;width:46px;height:46px;border-radius:12px;position:relative;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);
}
.nav.is-scrolled .nav__burger{background:var(--sky-100);border-color:var(--line)}
.nav__burger span{position:absolute;left:11px;right:11px;height:2.4px;border-radius:3px;background:#fff;transition:transform .3s var(--ease),opacity .2s}
.nav.is-scrolled .nav__burger span{background:var(--navy-800)}
.nav__burger span:nth-child(1){top:15px}
.nav__burger span:nth-child(2){top:22px}
.nav__burger span:nth-child(3){top:29px}
body.menu-open .nav__burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.menu-open .nav__burger span:nth-child(2){opacity:0}
body.menu-open .nav__burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* Mobile menu */
.mmenu{
  position:fixed;inset:0;z-index:115;display:flex;flex-direction:column;
  padding:calc(var(--nav-h) + 20px) clamp(22px,7vw,40px) calc(28px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,var(--navy-800),var(--navy-900));
  transform:translateX(100%);transition:transform .42s var(--ease);
  visibility:hidden;
}
body.menu-open .mmenu{transform:translateX(0);visibility:visible}
.mmenu__links{display:flex;flex-direction:column;gap:.2rem;margin-top:10px}
.mmenu__links a{
  color:#e6eefb;font-family:var(--font-display);font-weight:600;font-size:1.35rem;
  padding:.7rem 0;border-bottom:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:space-between;
  opacity:0;transform:translateX(18px);
}
body.menu-open .mmenu__links a{animation:mmIn .5s var(--ease) forwards}
.mmenu__links a:nth-child(1){animation-delay:.06s}
.mmenu__links a:nth-child(2){animation-delay:.10s}
.mmenu__links a:nth-child(3){animation-delay:.14s}
.mmenu__links a:nth-child(4){animation-delay:.18s}
.mmenu__links a:nth-child(5){animation-delay:.22s}
.mmenu__links a:nth-child(6){animation-delay:.26s}
.mmenu__links a:nth-child(7){animation-delay:.30s}
.mmenu__links a:nth-child(8){animation-delay:.34s}
.mmenu__links a span{color:var(--blue-300);font-size:1rem}
@keyframes mmIn{to{opacity:1;transform:translateX(0)}}
.mmenu__foot{margin-top:auto;display:grid;gap:14px;padding-top:24px}
.mmenu__foot .btn{width:100%}
.mmenu__foot small{color:#8ba6c9;text-align:center;letter-spacing:.02em}
@media (prefers-reduced-motion:reduce){
  .mmenu,.mmenu__links a{transition:none;animation:none;opacity:1;transform:none}
}

/* ---------- HERO ---------- */
.hero{position:relative;min-height:100svh;min-height:100vh;display:flex;align-items:flex-end;overflow:hidden;isolation:isolate}
.hero__media{position:absolute;inset:0;z-index:-2;background:var(--navy-800)}
.hero__img{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .95s var(--ease)}
.hero__img img{width:100%;height:100%;object-fit:cover;object-position:center}
.hero[data-mode="day"] .hero__img--day{opacity:1}
.hero[data-mode="night"] .hero__img--night{opacity:1}
.hero__scrim{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(90deg,rgba(5,18,42,.95) 0%,rgba(5,18,42,.82) 34%,rgba(5,18,42,.5) 58%,rgba(5,18,42,.12) 84%,rgba(5,18,42,0) 100%),
    linear-gradient(0deg,rgba(5,18,42,.9) 0%,rgba(5,18,42,.5) 44%,rgba(5,18,42,.06) 72%,rgba(5,18,42,0) 90%);
  transition:opacity .95s var(--ease);
}
.hero[data-mode="night"] .hero__scrim{
  background:
    linear-gradient(90deg,rgba(4,14,34,.9) 0%,rgba(4,14,34,.62) 36%,rgba(4,14,34,.16) 66%,rgba(4,14,34,0) 100%),
    linear-gradient(0deg,rgba(4,14,34,.86) 0%,rgba(4,14,34,.44) 44%,rgba(4,14,34,.05) 72%,rgba(4,14,34,0) 90%);
}
.hero__inner{padding-block:clamp(90px,14vh,150px) clamp(52px,9vh,110px);width:100%}
.hero__content{position:relative;isolation:isolate;max-width:660px;color:#fff}
/* Charco de contraste muy sutil detrás del texto (sin bordes ni cajas visibles).
   El degradado DEBE llegar a 0 dentro de su propia caja: con `farthest-side` el
   radio termina justo en el lado más lejano, así que en ningún borde queda un
   corte. Antes se usaba un radio en % que moría al 70%, de modo que la caja
   recortaba el degradado cuando todavía iba al 40% de opacidad y se veía el
   filo recto arriba y a la izquierda. Los márgenes van en px (no en %) para que
   la mancha conserve la misma forma en cualquier pantalla. */
.hero__content::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;
  inset:-150px -190px -120px -190px;
  background:radial-gradient(farthest-side ellipse at 50% 50%,
    rgba(4,13,32,.5) 0%,
    rgba(4,13,32,.46) 55%,
    rgba(4,13,32,.3) 78%,
    rgba(4,13,32,.12) 92%,
    rgba(4,13,32,0) 100%);
}
.hero__content .eyebrow{color:#e6effc;text-shadow:0 1px 10px rgba(3,12,32,.6)}
.hero__content .eyebrow::before{background:linear-gradient(90deg,#9cc4ff,transparent)}
.hero h1{
  color:#fff;font-size:clamp(2.3rem,6.4vw,4.6rem);font-weight:800;line-height:1.02;margin-top:18px;
  text-shadow:0 2px 6px rgba(3,12,32,.6),0 2px 34px rgba(0,0,0,.32);
}
.hero h1 .accent{background:none;color:#fff;-webkit-text-fill-color:#fff}
.hero__sub{margin-top:20px;font-size:clamp(1.05rem,2.1vw,1.35rem);color:#eef4fd;max-width:44ch;text-shadow:0 1px 4px rgba(3,12,32,.65),0 2px 16px rgba(0,0,0,.32)}
.hero__sub b{color:#fff;font-weight:700}
.hero__cta{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:32px}
.hero__trust{display:flex;flex-wrap:wrap;gap:20px 26px;margin-top:38px}
.hero__trust li{display:flex;align-items:center;gap:.55rem;font-size:.92rem;color:#eef4fd;font-weight:600;text-shadow:0 1px 6px rgba(3,12,32,.7)}
.hero__trust svg{width:1.25rem;height:1.25rem;color:#a9ccff;flex:0 0 auto;filter:drop-shadow(0 1px 4px rgba(3,12,32,.5))}
.hero-anim{opacity:0;transform:translateY(26px);animation:heroIn .9s var(--ease) forwards}
.hero-anim.d1{animation-delay:.15s}.hero-anim.d2{animation-delay:.28s}.hero-anim.d3{animation-delay:.42s}
.hero-anim.d4{animation-delay:.56s}.hero-anim.d5{animation-delay:.7s}
@keyframes heroIn{to{opacity:1;transform:translateY(0)}}

/* Day/Night toggle */
.hero__toggle{
  position:absolute;top:calc(var(--nav-h) + 16px + env(safe-area-inset-top));right:max(clamp(18px,5vw,44px),env(safe-area-inset-right));z-index:6;
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:var(--r-pill);
  background:rgba(8,22,48,.42);border:1px solid rgba(255,255,255,.24);
  backdrop-filter:blur(10px);
}
.hero__switch{
  --w:62px;--h:32px;position:relative;width:var(--w);height:var(--h);border-radius:var(--r-pill);
  background:linear-gradient(90deg,#5fa8ea,#2f74c9);transition:background .5s var(--ease);
  border:1px solid rgba(255,255,255,.4);flex:0 0 auto;
}
.hero[data-mode="night"] .hero__switch{background:linear-gradient(90deg,#12224a,#25406f)}
.hero__knob{
  position:absolute;top:50%;left:3px;width:calc(var(--h) - 8px);height:calc(var(--h) - 8px);
  border-radius:50%;background:#fff8e6;transform:translateY(-50%);
  box-shadow:0 2px 8px rgba(0,0,0,.35);transition:transform .5s var(--ease),background .5s;
  display:grid;place-items:center;
}
.hero[data-mode="night"] .hero__knob{transform:translate(calc(var(--w) - var(--h) - 0px),-50%);background:#e8eefc}
.hero__knob svg{width:16px;height:16px}
.hero__knob .i-sun{color:#f5a623;display:block}
.hero__knob .i-moon{color:#33507f;display:none}
.hero[data-mode="night"] .hero__knob .i-sun{display:none}
.hero[data-mode="night"] .hero__knob .i-moon{display:block}
.hero__toggle-label{font-size:.72rem;color:#e6eefb;font-weight:600;letter-spacing:.06em;text-transform:uppercase;user-select:none;min-width:44px}
.hero__switch:active .hero__knob{width:calc(var(--h) - 4px)}
@media (prefers-reduced-motion:reduce){
  .hero__img,.hero__scrim{transition:opacity .28s linear}
  .hero__knob,.hero__switch{transition:none}
  .hero-anim{animation:none;opacity:1;transform:none}
}

/* scroll cue */
.hero__scroll{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:5;display:grid;place-items:center;gap:6px;color:#cfe0f5;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase}
.hero__scroll .mouse{width:24px;height:38px;border:2px solid rgba(255,255,255,.6);border-radius:14px;position:relative}
.hero__scroll .mouse::after{content:"";position:absolute;top:7px;left:50%;width:4px;height:7px;background:#fff;border-radius:3px;transform:translateX(-50%);animation:wheel 1.6s var(--ease) infinite}
@keyframes wheel{0%{opacity:0;transform:translate(-50%,0)}40%{opacity:1}100%{opacity:0;transform:translate(-50%,12px)}}
@media (max-width:900px){.hero__scroll{display:none}}
@media (prefers-reduced-motion:reduce){.hero__scroll .mouse::after{animation:none}}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s var(--ease),transform .7s var(--ease);will-change:opacity,transform}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}
/* Fail-safe: si no hay JS, el contenido siempre es visible */
html:not(.js) .reveal{opacity:1 !important;transform:none !important}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ---------- Empresa / trust ---------- */
.intro{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,5vw,70px);align-items:center}
.intro__lead{font-size:clamp(1.15rem,2vw,1.4rem);color:var(--navy-700);font-weight:500;line-height:1.5}
.intro__lead b{color:var(--blue-600)}
.intro p{margin-top:16px;color:var(--slate)}
.intro__stats{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.stat{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:22px 20px;box-shadow:var(--sh-1);transition:transform .3s var(--ease),box-shadow .3s}
.stat:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.stat b{display:block;font-family:var(--font-display);font-size:clamp(1.8rem,3.4vw,2.5rem);font-weight:800;color:var(--blue-600);line-height:1}
.stat span{display:block;margin-top:6px;color:var(--slate);font-size:.9rem;font-weight:500}
.pillrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.pill{display:inline-flex;align-items:center;gap:.5rem;background:var(--sky-100);color:var(--navy-700);border:1px solid var(--sky-200);padding:.5rem .95rem;border-radius:var(--r-pill);font-size:.85rem;font-weight:600}
.pill svg{width:1rem;height:1rem;color:var(--blue-500)}

/* ---------- Cards (productos) ---------- */
.cards{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.card{
  background:#fff;border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column;box-shadow:var(--sh-1);
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s;
}
.card:hover{transform:translateY(-6px);box-shadow:var(--sh-3);border-color:var(--sky-200)}
.card__media{position:relative;aspect-ratio:4/3;overflow:hidden;display:grid;place-items:center;padding:16px;background:radial-gradient(120% 120% at 50% 8%,#14294a,#081527)}
.card__media img{width:100%;height:100%;object-fit:contain;transition:transform .5s var(--ease);filter:drop-shadow(0 12px 26px rgba(0,0,0,.45))}
.card:hover .card__media img{transform:scale(1.06)}
.card__badge{position:absolute;top:12px;left:12px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);color:#fff;font-size:.72rem;font-weight:600;letter-spacing:.02em;padding:.35rem .7rem;border-radius:var(--r-pill);backdrop-filter:blur(4px)}
.card__zoom{position:absolute;top:10px;right:10px;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.9);display:grid;place-items:center;opacity:0;transform:scale(.8);transition:opacity .3s,transform .3s;box-shadow:var(--sh-1)}
.card__media:hover .card__zoom,.card__media:focus-within .card__zoom{opacity:1;transform:scale(1)}
@media (hover:none){.card__zoom{opacity:1;transform:scale(1)}}
.card__zoom svg{width:18px;height:18px;color:var(--navy-700)}
.card__body{padding:20px 20px 22px;display:flex;flex-direction:column;flex:1}
.card__body h3{font-size:1.18rem}
.card__desc{margin-top:8px;color:var(--slate);font-size:.92rem;line-height:1.55}
.card__specs{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px}
.card__specs li{font-size:.76rem;color:var(--navy-700);background:var(--sky-50);border:1px solid var(--line-2);padding:.28rem .6rem;border-radius:var(--r-xs);font-weight:500}
.card__foot{margin-top:auto;padding-top:18px;display:flex;align-items:center;gap:10px}
.card__link{font-weight:650;color:var(--blue-600);font-size:.9rem;display:inline-flex;align-items:center;gap:.4rem}
.card__link:hover{color:var(--blue-700)}
.card__link svg{width:1rem;height:1rem;transition:transform .25s}
.card__link:hover svg{transform:translateX(3px)}
/* variante oscura (puertas) */
.section--navy .card{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.1)}
.section--navy .card:hover{border-color:rgba(121,180,255,.4)}
.section--navy .card__media{background:#0a1b38}
.section--navy .card__body h3{color:#fff}
.section--navy .card__desc{color:#a9c0dd}
.section--navy .card__specs li{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#cfe0f5}
.section--navy .card__foot{border-color:rgba(255,255,255,.1)}

/* ---------- Split feature (tejas destacado) ---------- */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,56px);align-items:center}
.feature--rev .feature__media{order:2}
.feature__media{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-3);aspect-ratio:5/4;position:relative}
.feature__media img{width:100%;height:100%;object-fit:cover}
.feature__list{margin-top:22px;display:grid;gap:14px}
.feature__list li{display:flex;gap:12px;align-items:flex-start}
.feature__list .ic{flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:var(--sky-100);display:grid;place-items:center;color:var(--blue-600)}
.feature__list .ic svg{width:18px;height:18px}
.feature__list b{display:block;color:var(--navy-800);font-size:1rem}
.feature__list span{color:var(--slate);font-size:.9rem}

/* ---------- Video gallery ---------- */
.vgrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.vcard{
  position:relative;aspect-ratio:9/16;border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-2);border:1px solid rgba(255,255,255,.14);cursor:pointer;
  background:var(--navy-800);transition:transform .35s var(--ease),box-shadow .35s;
}
.vcard:hover{transform:translateY(-6px) scale(1.01);box-shadow:var(--sh-3)}
.vcard img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.vcard:hover img{transform:scale(1.07)}
.vcard__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(6,16,36,.9) 4%,rgba(6,16,36,.15) 46%,rgba(6,16,36,.35) 100%)}
.vcard__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:60px;height:60px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center;box-shadow:0 8px 26px rgba(0,0,0,.35);transition:transform .3s var(--ease),background .3s}
.vcard:hover .vcard__play{transform:translate(-50%,-50%) scale(1.12);background:#fff}
.vcard__play svg{width:24px;height:24px;color:var(--blue-600);margin-left:3px}
.vcard__cap{position:absolute;left:0;right:0;bottom:0;padding:16px 16px 18px;color:#fff}
.vcard__cap b{display:block;font-family:var(--font-display);font-size:1rem;font-weight:600;line-height:1.2}
.vcard__cap span{display:block;margin-top:3px;font-size:.78rem;color:#c7d8f0}
.vcard__dur{position:absolute;top:12px;right:12px;background:rgba(6,16,36,.7);color:#fff;font-size:.72rem;font-weight:600;padding:.2rem .5rem;border-radius:6px;backdrop-filter:blur(3px)}

/* ---------- Projects strip ---------- */
.pgrid{grid-template-columns:repeat(4,1fr);grid-auto-rows:210px}
.pgrid figure{position:relative;overflow:hidden;border-radius:var(--r);box-shadow:var(--sh-2);cursor:pointer}
.pgrid img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.pgrid figure:hover img{transform:scale(1.08)}
/* La primera foto solo ocupa 2×2 si quedan al menos 4 detrás; con 4 fotos
   la fila se completa sin huecos. */
.pgrid .big:nth-last-child(n+5){grid-column:span 2;grid-row:span 2}
.pgrid figcaption{position:absolute;inset:0;background:linear-gradient(0deg,rgba(6,16,36,.7),transparent 55%);opacity:0;transition:opacity .35s;display:flex;align-items:flex-end;padding:16px;color:#fff;font-size:.85rem;font-weight:500}
.pgrid figure:hover figcaption{opacity:1}

/* ---------- Wizard / Cotización ---------- */
.quote{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(26px,4vw,56px);align-items:start}
.quote__aside h2{font-size:clamp(1.9rem,4vw,2.9rem)}
.quote__aside p{margin-top:16px;color:var(--slate)}
.quote__note{margin-top:22px;background:var(--sky-50);border:1px solid var(--line-2);border-left:3px solid var(--blue-500);border-radius:var(--r-sm);padding:16px 18px;font-size:.9rem;color:var(--slate)}
.quote__steps{margin-top:26px;display:grid;gap:14px}
.qstep-i{display:flex;gap:14px;align-items:center;color:var(--slate);font-size:.92rem}
.qstep-i b{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--sky-100);color:var(--blue-600);display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:.9rem}

.wizard{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-3);overflow:hidden}
.wizard__bar{display:flex;gap:8px;padding:22px 26px 0}
.wizard__bar .seg{flex:1;height:6px;border-radius:99px;background:var(--sky-100);overflow:hidden}
.wizard__bar .seg i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue-400),var(--blue-600));border-radius:99px;transition:width .5s var(--ease)}
.wizard__bar .seg.done i{width:100%}
.wizard__bar .seg.active i{width:50%}
.wizard__head{padding:18px 26px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}
.wizard__head .step-name{font-family:var(--font-display);font-weight:700;color:var(--navy-800);font-size:1.15rem}
.wizard__head .step-count{font-size:.82rem;color:var(--muted);font-weight:600}
.wizard__body{padding:18px 26px 8px;min-height:280px}
.wstep{display:none;animation:fadeStep .45s var(--ease)}
.wstep.active{display:block}
@keyframes fadeStep{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.wstep{animation:none}}
.wstep .wh4{font-size:1.05rem;margin-bottom:4px}
.wstep .hint{color:var(--muted);font-size:.86rem;margin-bottom:16px}

.choice{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.choice__item{
  position:relative;border:1.5px solid var(--line);border-radius:var(--r);padding:16px;cursor:pointer;
  display:flex;gap:12px;align-items:center;transition:border-color .25s,background .25s,transform .2s;background:#fff;
}
.choice__item:hover{border-color:var(--blue-400);background:var(--sky-50)}
.choice__item.sel{border-color:var(--blue-500);background:var(--sky-100);box-shadow:0 0 0 3px rgba(31,116,224,.14)}
.choice__item .ic{width:42px;height:42px;border-radius:12px;background:var(--sky-100);display:grid;place-items:center;color:var(--blue-600);flex:0 0 auto}
.choice__item.sel .ic{background:var(--blue-500);color:#fff}
.choice__item .ic svg{width:22px;height:22px}
.choice__item b{display:block;font-size:.98rem;color:var(--navy-800)}
.choice__item small{color:var(--muted);font-size:.8rem}

.field{margin-bottom:16px}
.field label{display:block;font-size:.85rem;font-weight:600;color:var(--navy-700);margin-bottom:6px}
.field label .req{color:#c53d24}
.field .opt{color:var(--muted);font-weight:500}
.field input,.field select,.field textarea{
  width:100%;padding:.8rem .95rem;border:1.5px solid var(--line);border-radius:var(--r-sm);background:#fff;
  font-size:.95rem;transition:border-color .2s,box-shadow .2s;color:var(--ink);
}
.field textarea{resize:vertical;min-height:110px;line-height:1.5}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue-500);box-shadow:0 0 0 3px rgba(31,116,224,.16)}
.field.err input,.field.err select,.field.err textarea{border-color:#e0533b;box-shadow:0 0 0 3px rgba(224,83,59,.14)}
.field .msg{display:none;color:#c53d24;font-size:.78rem;margin-top:5px;align-items:center;gap:5px}
.field.err .msg{display:flex}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:var(--r-pill);padding:.5rem .95rem;font-size:.86rem;font-weight:550;color:var(--navy-700);cursor:pointer;transition:all .2s}
.chip:hover{border-color:var(--blue-400);color:var(--blue-600)}
.chip.sel{background:var(--blue-500);border-color:var(--blue-500);color:#fff}
.pay-ref{margin-top:8px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line-2)}
.pay-ref img{width:100%}

.summary{display:grid;gap:2px;background:var(--sky-50);border:1px solid var(--line-2);border-radius:var(--r);padding:6px 4px}
.summary__row{display:grid;grid-template-columns:130px 1fr;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line-2)}
.summary__row:last-child{border-bottom:none}
.summary__row dt{color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.summary__row dd{color:var(--navy-800);font-size:.94rem;white-space:pre-wrap;word-break:break-word}
.summary__edit{margin-top:12px;text-align:center}
.summary__edit button{color:var(--blue-600);font-weight:600;font-size:.88rem;text-decoration:underline}

.wizard__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 26px 24px;border-top:1px solid var(--line-2);margin-top:8px}
.wizard__foot .spacer{flex:1}
.wizard__done{text-align:center;padding:20px 10px}
.wizard__done .ok{width:64px;height:64px;border-radius:50%;background:var(--wa);display:grid;place-items:center;margin:0 auto 16px;color:#fff}
.wizard__done .ok svg{width:32px;height:32px}

/* ---------- Payments block ---------- */
.pay{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,4vw,54px);align-items:center}
.pay__img{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-3);border:1px solid var(--line)}
.pay__list{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}
.pay__item{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:15px 16px;box-shadow:var(--sh-1)}
.pay__item b{color:var(--navy-800);font-size:.98rem;display:flex;align-items:center;gap:8px}
.pay__item b .dot{width:8px;height:8px;border-radius:50%;background:var(--blue-500)}
.pay__item span{display:block;color:var(--muted);font-size:.82rem;margin-top:3px}
.pay__item .acc{color:var(--blue-600);font-weight:600;font-family:var(--font-display);letter-spacing:.02em}

/* ---------- Ubicación ---------- */
/* Selector de sede (dos ubicaciones) */
.sede-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:720px;margin:0 0 clamp(20px,3vw,28px)}
.sede-tab{
  display:grid;grid-template-columns:auto 1fr;grid-template-areas:"ic name" "ic addr";
  column-gap:12px;align-items:center;text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:.85rem 1.05rem;cursor:pointer;
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease);
}
.sede-tab svg{grid-area:ic;width:22px;height:22px;color:var(--blue-500)}
.sede-tab b{grid-area:name;font-family:var(--font-display);font-size:.98rem;color:var(--navy-800);line-height:1.2}
.sede-tab span{grid-area:addr;font-size:.82rem;color:var(--muted);line-height:1.35}
.sede-tab:hover{border-color:var(--blue-400)}
.sede-tab.is-on{border-color:var(--blue-500);background:var(--sky-50);box-shadow:0 0 0 3px rgba(31,116,224,.14)}
.sede-tab.is-on svg{color:var(--blue-600)}
.sede-tab:active{transform:scale(.99)}
@media (max-width:560px){
  .sede-tabs{grid-template-columns:1fr;gap:10px;max-width:none}
  .sede-tab{padding:.75rem .9rem}
}

.loc{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(22px,3vw,40px);align-items:stretch}
.loc__map{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-3);border:1px solid var(--line);min-height:380px;position:relative}
.loc__map iframe{width:100%;height:100%;min-height:380px;border:0;display:block}
.loc__side{display:grid;gap:18px;align-content:start}
.loc__card{background:#fff;border:1px solid var(--line-2);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-1)}
.loc__card h3{font-size:1.15rem}
.loc__facade{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-2);cursor:pointer;position:relative;aspect-ratio:4/3}
.loc__facade img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.loc__facade:hover img{transform:scale(1.05)}
.loc__facade .tag{position:absolute;left:14px;bottom:14px;background:rgba(6,16,36,.72);color:#fff;padding:.5rem .9rem;border-radius:var(--r-pill);font-size:.82rem;font-weight:600;display:flex;gap:.4rem;align-items:center;backdrop-filter:blur(4px)}
.info-line{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line-2)}
.info-line:last-child{border-bottom:none}
.info-line .ic{width:38px;height:38px;border-radius:11px;background:var(--sky-100);color:var(--blue-600);display:grid;place-items:center;flex:0 0 auto}
.info-line .ic svg{width:19px;height:19px}
.info-line b{display:block;color:var(--navy-800);font-size:.95rem}
.info-line span,.info-line a{display:block;color:var(--slate);font-size:.88rem}
.info-line a:hover{color:var(--blue-600)}
/* Lista de los 5 teléfonos: dos columnas para no alargar la tarjeta */
.info-phones{display:grid !important;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 14px;margin-top:2px}
.info-phones a{white-space:nowrap}

/* ---------- Contacto band ---------- */
.contact{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,4vw,60px);align-items:center}
.contact__cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ccard{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);padding:20px;transition:transform .3s,background .3s}
.ccard:hover{transform:translateY(-4px);background:rgba(255,255,255,.09)}
.ccard .ic{width:44px;height:44px;border-radius:12px;background:rgba(121,180,255,.16);color:var(--blue-300);display:grid;place-items:center;margin-bottom:12px}
.ccard .ic svg{width:22px;height:22px}
.ccard b{color:#fff;font-size:1rem;display:block}
.ccard span,.ccard a{color:#a9c0dd;font-size:.88rem}
.ccard a:hover{color:#fff}
.ccard__phones{display:grid;gap:1px}
.ccard__phones a{display:block;color:#a9c0dd}

/* ---------- FAQ ---------- */
.faq{max-width:820px;margin-inline:auto}
.acc{border:1px solid var(--line);border-radius:var(--r);margin-bottom:12px;overflow:hidden;background:#fff;transition:box-shadow .3s,border-color .3s}
.acc.open{box-shadow:var(--sh-2);border-color:var(--sky-200)}
.acc__h{margin:0;font:inherit}
.acc__q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px;text-align:left;font-family:var(--font-display);font-weight:600;font-size:1.02rem;color:var(--navy-800)}
.acc__q .pm{flex:0 0 auto;width:28px;height:28px;border-radius:50%;background:var(--sky-100);display:grid;place-items:center;color:var(--blue-600);transition:background .3s,transform .3s}
.acc.open .acc__q .pm{background:var(--blue-500);color:#fff;transform:rotate(180deg)}
.acc__a{max-height:0;overflow:hidden;visibility:hidden;transition:max-height .4s var(--ease),visibility .4s}
.acc.open .acc__a{visibility:visible}
.acc__a-in{padding:0 22px 20px;color:var(--slate);font-size:.94rem;line-height:1.6}

/* ---------- Footer ---------- */
.footer{background:linear-gradient(180deg,var(--navy-800),var(--navy-900));color:#a9c0dd;padding-block:clamp(48px,6vw,72px) 26px}
.footer__top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(24px,4vw,50px)}
.footer__brand img{height:auto;width:min(210px,70%);margin-bottom:16px}
.footer__brand p{max-width:34ch;font-size:.9rem}
.footer__phones{display:grid;gap:2px}
.footer .wh4{color:#fff;font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px;font-family:var(--font-body);font-weight:700}
.footer__col a,.footer__col p{display:block;color:#9fb8db;font-size:.9rem;padding:5px 0;transition:color .2s}
.footer__col a:hover{color:var(--blue-300)}
.footer__bottom{margin-top:40px;padding-top:22px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;font-size:.82rem;color:#7f97ba}
.footer__bottom a{color:#9fb8db}
.footer__bottom a:hover{color:#fff}

/* ---------- WhatsApp float ---------- */
.wa-float{
  position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:90;
  display:flex;align-items:center;gap:0;
  background:linear-gradient(135deg,#0f9a4c,#0a6d37);color:#fff;
  border-radius:var(--r-pill);box-shadow:0 12px 30px rgba(12,110,58,.42);
  padding:0;height:58px;overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s;
  transform:translateY(120px);right:max(18px,env(safe-area-inset-right));
}
.wa-float.show{transform:translateY(0)}
.wa-float:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(18,140,74,.5)}
.wa-float .wa-ic{width:58px;height:58px;display:grid;place-items:center;flex:0 0 auto}
.wa-float .wa-ic svg{width:30px;height:30px}
.wa-float .wa-tx{max-width:0;white-space:nowrap;overflow:hidden;font-weight:650;font-size:.92rem;transition:max-width .4s var(--ease),padding .4s;padding-right:0}
.wa-float:hover .wa-tx{max-width:200px;padding-right:22px}
@media (max-width:640px){.wa-float:hover .wa-tx{max-width:0;padding-right:0}}
.wa-float .ping{position:absolute;top:8px;left:8px;width:12px;height:12px;border-radius:50%;background:#fff}
.wa-float .ping::before{content:"";position:absolute;inset:0;border-radius:50%;background:#fff;animation:ping 1.8s var(--ease) infinite}
@keyframes ping{0%{transform:scale(1);opacity:.7}100%{transform:scale(2.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.wa-float{transition:none}.wa-float .ping::before{animation:none}}

/* ---------- Modal (imagen + video) ---------- */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:clamp(14px,4vw,40px)}
.modal.open{display:flex}
.modal__back{position:absolute;inset:0;background:rgba(4,12,30,.86);backdrop-filter:blur(6px);opacity:0;transition:opacity .35s}
.modal.open .modal__back{opacity:1}
.modal__box{position:relative;z-index:2;max-width:min(100%,1100px);max-height:92vh;display:flex;flex-direction:column;opacity:0;transform:scale(.94) translateY(14px);transition:opacity .38s var(--ease),transform .38s var(--ease)}
.modal.open .modal__box{opacity:1;transform:none}
.modal__box.is-video{max-width:min(100%,460px)}
.modal__media{border-radius:var(--r-lg);overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.6);background:#000;display:flex;max-height:86vh}
.modal__media img{max-width:100%;max-height:86vh;object-fit:contain;margin:auto}
.modal__media video{width:100%;max-height:86vh;display:block;background:#000}
.modal__close{position:absolute;top:-14px;right:-14px;width:44px;height:44px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:var(--sh-2);z-index:3;transition:transform .25s,background .25s}
.modal__close:hover{transform:rotate(90deg) scale(1.05)}
.modal__close svg{width:22px;height:22px;color:var(--navy-800)}
.modal__cap{color:#e4eefb;text-align:center;margin-top:14px;font-size:.95rem}
.modal__cap b{color:#fff;display:block;font-family:var(--font-display)}
@media (max-width:520px){.modal__close{top:6px;right:6px;width:40px;height:40px}}
@media (prefers-reduced-motion:reduce){.modal__box,.modal__back{transition:opacity .2s}}

body.lock{overflow:hidden;touch-action:none}

/* ---------- Responsive ---------- */
@media (max-width:1080px){
  .pgrid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:980px){
  .nav__links{display:none}
  .nav__actions .nav-wa{display:none}
  .nav__burger{display:block}
  .nav__brand .brand-tx{display:none}
  .intro,.feature,.feature--rev,.quote,.pay,.loc,.contact{grid-template-columns:1fr}
  .feature--rev .feature__media{order:0}
  .quote__aside{max-width:640px}
}
@media (max-width:760px){
  :root{--nav-h:64px}
  .hero{min-height:92svh}
  .hero__inner{padding-bottom:clamp(90px,16vh,120px)}
  .hero__cta{gap:.6rem}
  .hero__cta .btn{flex:1 1 auto;min-width:calc(50% - .3rem)}
  .intro__stats{grid-template-columns:repeat(2,1fr)}
  .nav__brand img{height:30px}
  .pgrid{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .pgrid .big:nth-last-child(n+5){grid-column:span 2;grid-row:span 1}
  .info-phones{grid-template-columns:1fr}
  .footer__top{grid-template-columns:1fr}
  .contact__cards,.pay__list,.field-row{grid-template-columns:1fr}
  .choice{grid-template-columns:1fr}
  .vgrid{grid-template-columns:repeat(2,1fr)}
  .summary__row{grid-template-columns:1fr}
  .summary__row dt{margin-bottom:-4px}
}
@media (max-width:400px){
  .hero__toggle-label{display:none}
  .hero__cta .btn{min-width:100%}
}
@media (min-width:1600px){
  :root{--container:1360px}
}

/* Movimiento reducido: neutraliza micro-interacciones de hover y el spinner */
@media (prefers-reduced-motion:reduce){
  .btn:hover,.btn:active,.card:hover,.stat:hover,.vcard:hover,.ccard:hover,.pay__item:hover,.loc__facade:hover,.wa-float:hover{transform:none}
  .card:hover .card__media img,.vcard:hover img,.pgrid figure:hover img,.loc__facade:hover img{transform:none}
  .btn.is-loading::after{animation-duration:1.6s}
  .modal__close:hover{transform:none}
}

/* =====================================================================
   Catálogo compacto · carrito de cotización · detalle
   ===================================================================== */

/* Encabezado de catálogo */
.cat-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:clamp(20px,3vw,34px)}
.cat-head__sub{margin-top:8px;color:var(--slate);font-size:.95rem;max-width:54ch}
.cat-head__cart{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;background:var(--sky-100);border:1px solid var(--sky-200);color:var(--navy-700);border-radius:var(--r-pill);padding:.55rem 1.05rem;font-weight:650;font-size:.88rem;transition:border-color .2s,color .2s,background .2s}
.cat-head__cart:hover{border-color:var(--blue-400);color:var(--blue-600);background:#fff}
.cat-head__cart svg{width:1.15em;height:1.15em;color:var(--blue-500)}

/* Grid + tarjeta de producto compacta */
.catalog{display:grid;gap:clamp(12px,1.6vw,20px);grid-template-columns:repeat(auto-fill,minmax(212px,1fr))}
.pcard{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--sh-1);transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:var(--sky-200)}
.pcard__media{position:relative;width:100%;aspect-ratio:1/1;background:radial-gradient(120% 100% at 50% 0%,#f4f8fd,#e6eef8);cursor:pointer;border:0;overflow:hidden}
.pcard__media img{position:absolute;top:7%;left:7%;width:86%;height:86%;object-fit:contain;object-position:center;transition:transform .4s var(--ease);filter:drop-shadow(0 8px 16px rgba(10,33,64,.16))}
.pcard:hover .pcard__media img{transform:scale(1.05)}
/* Relación de aspecto por categoría — equilibrio según el tipo de producto */
#tejas .pcard__media{aspect-ratio:4/3}
#puertas .pcard__media{aspect-ratio:3/4}
#accesorios .pcard__media{aspect-ratio:1/1}
.pcard__body{padding:11px 13px 13px;display:flex;flex-direction:column;gap:5px;flex:1}
.pcard__cat{font-size:.64rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--blue-600);line-height:1.3}
.pcard__name{font-size:.98rem;line-height:1.2;color:var(--navy-800);font-family:var(--font-display);font-weight:600}
.pcard__actions{margin-top:auto;display:flex;gap:8px;align-items:center;padding-top:10px}
.pcard__detail{font-size:.8rem;font-weight:600;color:var(--slate);text-decoration:underline;text-underline-offset:2px}
.pcard__detail:hover{color:var(--blue-600)}
.pcard__add{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:.82rem;font-weight:650;color:#fff;background:var(--blue-600);border-radius:var(--r-pill);padding:.44rem .82rem;transition:background .2s,transform .2s}
.pcard__add svg{width:.95em;height:.95em}
.pcard__add:hover{background:var(--blue-700);transform:translateY(-1px)}
.pcard__add:active{transform:scale(.96)}

/* Botón carrito en la barra */
.nav__cart{position:relative;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:#fff;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);transition:background .25s,color .25s,border-color .25s}
.nav__cart svg{width:22px;height:22px}
.nav.is-scrolled .nav__cart{color:var(--navy-800);background:var(--sky-100);border-color:var(--line)}
.nav__cart:hover{background:rgba(255,255,255,.24)}
.nav.is-scrolled .nav__cart:hover{background:var(--sky-200)}
.nav__cart-badge{position:absolute;top:-5px;right:-5px;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:#f2683c;color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center;line-height:1;border:2px solid transparent}

/* FAB carrito (esquina inferior izquierda) */
.cart-fab{position:fixed;left:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:95;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));color:#fff;display:grid;place-items:center;box-shadow:0 12px 30px rgba(20,98,198,.42);transform:translateY(130px);transition:transform .35s var(--ease),box-shadow .3s}
.cart-fab.show{transform:translateY(0)}
.cart-fab svg{width:26px;height:26px}
.cart-fab:hover{box-shadow:0 16px 40px rgba(20,98,198,.52)}
.cart-fab__badge{position:absolute;top:-2px;right:-2px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#f2683c;color:#fff;font-size:.78rem;font-weight:700;display:grid;place-items:center;border:2px solid #fff}
.cart-fab.bump{animation:cbump .4s var(--ease)}
@keyframes cbump{0%,100%{transform:translateY(0) scale(1)}42%{transform:translateY(0) scale(1.14)}}
@media (prefers-reduced-motion:reduce){.cart-fab{transition:none}.cart-fab.bump{animation:none}}

/* Drawer del carrito */
.cart{position:fixed;inset:0;z-index:210;display:none}
.cart.open{display:block}
.cart__back{position:absolute;inset:0;background:rgba(4,12,30,.55);backdrop-filter:blur(3px);opacity:0;transition:opacity .35s}
.cart.open .cart__back{opacity:1}
.cart__panel{position:absolute;top:0;right:0;height:100%;width:min(420px,100%);background:#fff;box-shadow:-20px 0 60px rgba(6,22,48,.28);display:flex;flex-direction:column;transform:translateX(102%);transition:transform .4s var(--ease)}
.cart.open .cart__panel{transform:translateX(0)}
.cart__head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line-2);flex:0 0 auto}
.cart__head h2{font-size:1.2rem;display:flex;align-items:center;gap:10px}
.cart__count{background:var(--blue-500);color:#fff;font-size:.78rem;font-family:var(--font-body);font-weight:700;min-width:24px;height:24px;padding:0 6px;border-radius:12px;display:grid;place-items:center}
.cart__close{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:var(--slate);background:var(--sky-50)}
.cart__close:hover{background:var(--sky-100);color:var(--navy-800)}
.cart__close svg{width:20px;height:20px}
.cart__scroll{flex:1;overflow-y:auto;padding:16px 20px;-webkit-overflow-scrolling:touch}
.cart__empty{text-align:center;padding:38px 12px;color:var(--muted)}
.cart__empty svg{color:var(--sky-200);margin-bottom:10px}
.cart__empty p{font-weight:650;color:var(--navy-700);font-size:1.02rem}
.cart__empty span{display:block;margin-top:6px;font-size:.88rem;line-height:1.5}
.cart__items{display:grid;gap:11px}
.citem{display:flex;gap:12px;border:1px solid var(--line-2);border-radius:var(--r);padding:10px;background:#fff}
.citem__img{position:relative;flex:0 0 64px;width:64px;height:64px;border-radius:10px;background:radial-gradient(120% 100% at 50% 0%,#f4f8fd,#e6eef8);overflow:hidden}
.citem__img img{position:absolute;top:10%;left:10%;width:80%;height:80%;object-fit:contain;object-position:center}
.citem__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.citem__cat{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--blue-600)}
.citem__name{font-size:.9rem;color:var(--navy-800);line-height:1.25;font-weight:600}
.citem__row{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.qty{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:var(--r-pill);padding:2px}
.qbtn{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:var(--blue-600);transition:background .2s}
.qbtn:hover{background:var(--sky-100)}
.qbtn svg{width:15px;height:15px}
.qval{min-width:24px;text-align:center;font-weight:700;color:var(--navy-800);font-size:.9rem}
.citem__rm{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--muted);transition:background .2s,color .2s}
.citem__rm:hover{background:#fdece8;color:#c53d24}
.citem__rm svg{width:17px;height:17px}
.cart__form{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line)}
.cart__form-title{font-size:.95rem;margin-bottom:10px;color:var(--navy-800)}
.cart__form .field{margin-bottom:12px}
.cart__foot{padding:14px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line-2);display:grid;gap:10px;background:#fff;flex:0 0 auto}
.cart__clear{justify-self:start;display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:var(--muted);font-weight:600}
.cart__clear:hover{color:#c53d24}
@media (prefers-reduced-motion:reduce){.cart__panel,.cart__back{transition:none}}

/* Modal de detalle de producto */
.detail__box{position:relative;z-index:2;width:min(880px,100%);max-height:92vh;background:#fff;border-radius:var(--r-lg);overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.5);opacity:0;transform:scale(.96) translateY(12px);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.modal.open .detail__box{opacity:1;transform:none}
.detail__grid{display:grid;grid-template-columns:1fr 1fr;max-height:92vh}
.detail__media{background:radial-gradient(120% 100% at 50% 0%,#f4f8fd,#e6eef8);display:grid;place-items:center;padding:26px;overflow:hidden;min-width:0}
.detail__media img{display:block;max-width:100%;max-height:52vh;width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 14px 26px rgba(10,33,64,.2))}
.detail__info{padding:26px 26px 24px;overflow-y:auto;display:flex;flex-direction:column}
.detail__cat{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--blue-600)}
.detail__info h3{font-size:clamp(1.3rem,2.4vw,1.7rem);margin-top:6px}
.detail__desc{margin-top:12px;color:var(--slate);font-size:.95rem;line-height:1.6}
.detail__specs{margin-top:16px;display:grid;gap:9px}
.detail__specs li{display:flex;gap:9px;align-items:flex-start;font-size:.9rem;color:var(--navy-700)}
.detail__specs svg{color:var(--blue-500);flex:0 0 auto;margin-top:2px}
.detail__actions{margin-top:auto;padding-top:22px;display:grid;gap:10px}

/* Toast */
.toast{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(18px);z-index:300;background:var(--navy-800);color:#fff;padding:.7rem 1.15rem;border-radius:var(--r-pill);font-size:.9rem;font-weight:600;box-shadow:0 12px 30px rgba(6,22,48,.42);display:inline-flex;align-items:center;gap:8px;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;max-width:calc(100vw - 32px)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast svg{color:#5fe0a0;flex:0 0 auto}
@media (prefers-reduced-motion:reduce){.toast{transition:opacity .2s}}

/* Responsive catálogo / carrito / detalle */
@media (max-width:760px){
  .section{padding-block:clamp(40px,7vw,60px)}
  .catalog{grid-template-columns:repeat(2,1fr);gap:10px}
  .pcard__body{padding:10px 11px 11px}
  .pcard__name{font-size:.85rem}
  .cat-head{margin-bottom:20px}
  .cat-head__cart{padding:.5rem .9rem;font-size:.82rem}
  .detail__box{max-height:90vh;overflow-y:auto}
  .detail__grid{grid-template-columns:1fr;max-height:none}
  .detail__media{padding:16px}
  .detail__media img{max-height:34vh}
  .detail__info{padding:18px 20px 20px;overflow:visible}
  .cart__panel{width:100%}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom))}
}
@media (max-width:520px){
  .pcard__actions{flex-direction:column;align-items:stretch;gap:7px}
  .pcard__add{margin-left:0;width:100%;justify-content:center;padding:.5rem}
  .pcard__detail{text-align:center}
}
