/* ============================================================
   GRUPO RENOVA — luz de día
   Paleta: día #F2F8F4 · río #0B3D5C · hoja #2E9E3A · sol #F6B73C
   Tipos: Bricolage Grotesque / Instrument Sans / IBM Plex Mono
   ============================================================ */

:root{
  --dia:#F2F8F4;
  --dia-2:#E7F1EA;
  --papel:#FFFFFF;
  --rio:#0B3D5C;
  --rio-2:#12557F;
  --hoja:#2E9E3A;
  --hoja-osc:#1E7A3D;
  --sol:#F6B73C;
  --sol-suave:#FBEACB;
  --tinta:#16323F;
  --tinta-suave:#5C6F76;
  --linea:#DCE8DF;
  --sombra:0 22px 50px -28px rgba(11,61,92,.35);
  --radio:20px;
  --ease:cubic-bezier(.22,.9,.24,1);

  /* ── motion tokens (transitions.dev) ── */
  --duration-quick:150ms; --duration-fast:250ms; --duration-slow:400ms; --duration-very-slow:500ms;
  --ease-smooth-out:cubic-bezier(0.22,1,0.36,1); --ease-bounce:cubic-bezier(0.34,1.36,0.64,1);
  --stagger-dur:600ms; --stagger-distance:14px; --stagger-stagger:70ms; --stagger-blur:4px; --stagger-ease:cubic-bezier(0.22,1,0.36,1);
  --digit-dur:520ms; --digit-distance:10px; --digit-stagger:60ms; --digit-blur:3px; --digit-ease:cubic-bezier(0.34,1.45,0.64,1); --digit-dir-x:0; --digit-dir-y:1;
  --check-opacity-dur:500ms; --check-rotate-dur:500ms; --check-rotate-from:80deg; --check-bob-dur:520ms; --check-y-amount:34px; --check-blur-dur:500ms; --check-blur-from:10px; --check-path-dur:460ms; --check-path-delay:90ms;
  --check-ease-out:cubic-bezier(0.22,1,0.36,1); --check-ease-bob:cubic-bezier(0.34,1.35,0.64,1);
  --tilt-perspective:1100px; --tilt-return:900ms; --tilt-return-ease:cubic-bezier(0.22,1,0.36,1); --tilt-follow:300ms; --tilt-follow-ease:cubic-bezier(0.22,1,0.36,1);
}

/* ============================================================
   TRANSICIONES (transitions.dev) — namespaced t-*
   ============================================================ */
/* texts reveal: subida escalonada con desenfoque */
.t-stagger .t-line{
  display:block;opacity:0;transform:translateY(var(--stagger-distance));filter:blur(var(--stagger-blur));
  transition:opacity var(--stagger-dur) var(--stagger-ease),transform var(--stagger-dur) var(--stagger-ease),filter var(--stagger-dur) var(--stagger-ease);
  will-change:transform,opacity,filter;
}
.t-stagger .t-line--2{transition-delay:var(--stagger-stagger)}
.t-stagger .t-line--3{transition-delay:calc(var(--stagger-stagger)*2)}
.t-stagger.is-shown .t-line{opacity:1;transform:none;filter:blur(0)}

/* number pop-in: cada dígito entra con blur */
.t-digit-group{display:inline-flex;align-items:baseline}
.t-digit{display:inline-block;will-change:transform,opacity,filter}
@keyframes t-digit-pop{0%{transform:translate(calc(var(--digit-distance)*var(--digit-dir-x)),calc(var(--digit-distance)*var(--digit-dir-y)));opacity:0;filter:blur(var(--digit-blur))}100%{transform:translate(0,0);opacity:1;filter:blur(0)}}
.t-digit-group.is-animating .t-digit{animation:t-digit-pop var(--digit-dur) var(--digit-ease) both}
.t-digit-group.is-animating .t-digit[data-stagger="1"]{animation-delay:var(--digit-stagger)}
.t-digit-group.is-animating .t-digit[data-stagger="2"]{animation-delay:calc(var(--digit-stagger)*2)}

/* success check */
.t-success-check{display:inline-block;transform-origin:center;opacity:0;will-change:transform,opacity,filter}
.t-success-check svg{display:block;overflow:visible}
.t-success-check svg path{stroke-dasharray:30;stroke-dashoffset:30}
.t-success-check[data-state="in"]{animation:t-check-fade var(--check-opacity-dur) var(--check-ease-out) forwards,t-check-rotate var(--check-rotate-dur) var(--check-ease-out) forwards,t-check-blur var(--check-blur-dur) var(--check-ease-out) forwards,t-check-bob var(--check-bob-dur) var(--check-ease-bob) forwards}
.t-success-check[data-state="in"] svg path{animation:t-check-draw var(--check-path-dur) var(--check-ease-out) var(--check-path-delay) forwards}
@keyframes t-check-fade{from{opacity:0}to{opacity:1}}
@keyframes t-check-rotate{from{transform:rotate(var(--check-rotate-from))}to{transform:rotate(0)}}
@keyframes t-check-blur{from{filter:blur(var(--check-blur-from))}to{filter:blur(0)}}
@keyframes t-check-bob{from{translate:0 var(--check-y-amount)}to{translate:0 0}}
@keyframes t-check-draw{to{stroke-dashoffset:0}}

/* card tilt (ticket) */
.t-tilt{touch-action:none}
.t-tilt-card{transform:perspective(var(--tilt-perspective)) rotateX(var(--tilt-rx,0deg)) rotateY(var(--tilt-ry,0deg));transform-style:preserve-3d;transition:transform var(--tilt-return) var(--tilt-return-ease);will-change:transform}
.t-tilt-card.is-tilting{transition:transform var(--tilt-follow) var(--tilt-follow-ease)}

/* tilt genérico para cards (paso / obra / persona) */
[data-tilt]{
  transform:perspective(900px) rotateX(var(--tilt-rx,0deg)) rotateY(var(--tilt-ry,0deg)) translateZ(0);
  transition:transform 700ms var(--tilt-return-ease), box-shadow .3s var(--ease);
  will-change:transform;
}
[data-tilt].is-tilting{transition:transform 140ms var(--tilt-follow-ease), box-shadow .3s var(--ease)}
[data-tilt].is-tilting{box-shadow:0 28px 55px -26px rgba(11,61,92,.5)}
@media (prefers-reduced-motion: reduce){[data-tilt]{transform:none!important;transition:none!important}}

/* si el JS no corre, el título igual se ve */
@media (scripting: none){ .t-stagger .t-line{opacity:1;transform:none;filter:none} }

@media (prefers-reduced-motion: reduce){
  .t-stagger .t-line{opacity:1;transform:none;filter:none;transition:none}
  .t-digit-group .t-digit{animation:none!important}
  .t-success-check{animation:none!important;opacity:1}
  .t-success-check svg path{animation:none!important;stroke-dashoffset:0!important}
  .t-tilt-card{transform:none!important;transition:none!important}
}

*{box-sizing:border-box;margin:0;padding:0}
html{
  scroll-behavior:smooth;
  scroll-padding-top:90px;          /* el nav sticky no tapa los anclajes */
  -webkit-text-size-adjust:100%;    /* iOS: no re-escala el texto en landscape */
  text-size-adjust:100%;
}
body{
  font-family:'Instrument Sans',system-ui,sans-serif;
  background:transparent;
  color:var(--tinta);
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* ============================================================
   CIELO DÍA-NOCHE — capa fija detrás de todo, sigue el scroll
   ============================================================ */
.daynight{
  position:fixed; inset:0; z-index:-2; overflow:hidden;
  background:linear-gradient(180deg,var(--sky-top,#b0d6ec) 0%,var(--sky-mid,#dcefe6) 52%,var(--sky-bot,#ffe6c9) 100%);
}
/* bruma cálida cerca del horizonte del sol para dar profundidad */
.dn-haze{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(60% 40% at var(--haze-x,50%) var(--haze-y,20%),var(--haze-col,rgba(255,240,200,.4)),transparent 70%);
  opacity:var(--haze-op,.6);}

/* SOL: disco brillante + halo grande */
.dn-sun{position:absolute; left:0; top:0; width:170px; height:170px; will-change:transform,opacity;
  display:flex; align-items:center; justify-content:center;}
.dn-sun::before{content:"";position:absolute;width:340px;height:340px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,214,110,.55) 0%,rgba(255,205,90,.22) 34%,rgba(255,200,80,0) 66%);}
.dn-sun-core{position:relative;width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle at 46% 42%,#fffef2 0%,#fff2c0 34%,#ffd34d 66%,#f7b73c 100%);
  box-shadow:0 0 60px 12px rgba(255,206,90,.65);}

/* LUNA */
.dn-moon{position:absolute; left:0; top:0; width:96px; height:96px; border-radius:50%;
  background:radial-gradient(circle at 38% 34%,#ffffff 0%,#e7ecf7 45%,#c3cbe0 100%);
  box-shadow:0 0 70px 16px rgba(210,220,245,.45); opacity:0; will-change:transform,opacity;}
.dn-crater{position:absolute;border-radius:50%;background:rgba(150,160,190,.5)}
.dn-crater:nth-child(1){width:16px;height:16px;top:24px;left:28px}
.dn-crater:nth-child(2){width:10px;height:10px;top:52px;left:56px}
.dn-crater:nth-child(3){width:7px;height:7px;top:32px;left:64px}

/* ESTRELLAS */
.dn-stars{position:absolute;inset:0;opacity:0;will-change:opacity}
.dn-star{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.9}
.dn-star.big{width:3px;height:3px;box-shadow:0 0 6px 1px rgba(255,255,255,.85)}
@keyframes dn-twinkle{0%,100%{opacity:.25}50%{opacity:1}}
.dn-stars.tw .dn-star{animation:dn-twinkle 3.6s ease-in-out infinite}

/* NUBES: blobs suaves que se desplazan lento y se disipan de noche */
.dn-clouds{position:absolute;inset:0;pointer-events:none;opacity:var(--clouds-op,1);transition:opacity .3s linear}
.dn-cloud{position:absolute;border-radius:50%;filter:blur(24px);
  background:radial-gradient(60% 60% at 50% 50%,rgba(255,255,255,.9),rgba(255,255,255,0) 72%);}
.dn-cloud.c1{width:340px;height:120px;top:14%;left:-20%;animation:dn-drift 90s linear infinite}
.dn-cloud.c2{width:260px;height:96px;top:30%;left:-30%;animation:dn-drift 130s linear infinite;animation-delay:-40s;opacity:.8}
.dn-cloud.c3{width:420px;height:140px;top:8%;left:-40%;animation:dn-drift 160s linear infinite;animation-delay:-90s;opacity:.7}
.dn-cloud.c4{width:200px;height:80px;top:44%;left:-25%;animation:dn-drift 110s linear infinite;animation-delay:-20s;opacity:.6}
@keyframes dn-drift{from{transform:translateX(0)}to{transform:translateX(160vw)}}
img{max-width:100%;display:block;height:auto}
picture{display:contents}
a{color:inherit;text-decoration:none}
.wrap{max-width:1160px;margin:0 auto;padding:0 22px}
.mono{font-family:'IBM Plex Mono',monospace}

/* focus visible — piso de calidad */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid var(--sol);outline-offset:2px;border-radius:4px;
}

/* ---------- tipografía de secciones ---------- */
.kicker{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--hoja-osc);margin-bottom:12px;
}
.kicker.claro{color:var(--sol)}
.titulo{
  font-family:'Bricolage Grotesque',sans-serif;
  font-weight:800;font-size:clamp(30px,4.6vw,46px);
  line-height:1.06;letter-spacing:-.02em;color:var(--rio);
  margin-bottom:14px;
}
.titulo em{font-style:normal;color:var(--hoja);}
.titulo.claro{color:#fff}
.titulo.claro em{color:var(--sol)}
.intro{color:var(--tinta-suave);max-width:640px;font-size:17px}

/* ---------- botones ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-weight:700;font-size:15.5px;padding:14px 26px;border-radius:999px;
  border:none;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s,filter .18s;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn-sol{background:var(--sol);color:var(--rio);box-shadow:0 14px 26px -12px rgba(246,183,60,.75)}
.btn-sol:hover{filter:brightness(1.04)}
.btn-linea{background:transparent;color:var(--rio);border:2px solid var(--rio)}
.btn-linea:hover{background:var(--rio);color:#fff}
.btn-rio{background:var(--rio);color:#fff}
.btn-wa{background:var(--hoja);color:#fff;box-shadow:0 14px 26px -12px rgba(46,158,58,.7)}

/* ============================================================
   AMANECER DE CARGA — el sol sube detrás del logo y levanta el telón
   ============================================================ */
.carga{
  position:fixed;inset:0;z-index:200;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#cfe6f2 0%,#e9f3ec 46%,#fde8c8 100%);
  transition:transform 720ms var(--ease-smooth-out),opacity 380ms ease 300ms;
  will-change:transform,opacity;
}
.carga-in{position:relative;display:flex;flex-direction:column;align-items:center;padding:0 24px}
/* el sol asoma detrás del logotipo y termina de salir arriba */
.carga-sol{
  position:absolute;left:50%;top:-118px;width:158px;height:158px;border-radius:50%;
  background:radial-gradient(circle at 46% 42%,#fffef2 0%,#fff2c0 32%,#ffd34d 62%,#f6b73c 100%);
  box-shadow:0 0 78px 18px rgba(255,206,90,.55);
  transform:translate(-50%,72px) scale(.72);opacity:0;
  animation:carga-salir 1500ms var(--ease-smooth-out) forwards;
}
@keyframes carga-salir{
  0%{transform:translate(-50%,72px) scale(.72);opacity:0}
  50%{opacity:1}
  100%{transform:translate(-50%,0) scale(1);opacity:1}
}
.carga-logo{position:relative;z-index:1;display:block;
  opacity:0;transform:translateY(10px);filter:blur(6px);
  animation:carga-logo 700ms var(--ease-smooth-out) 180ms forwards}
.carga-logo img{height:66px;width:auto}
@keyframes carga-logo{to{opacity:1;transform:none;filter:blur(0)}}
/* la línea del horizonte se dibuja de centro hacia afuera */
.carga-horizonte{
  position:relative;z-index:1;display:block;height:2px;width:190px;margin-top:22px;
  background:linear-gradient(90deg,transparent,var(--rio),transparent);
  transform:scaleX(0);opacity:.55;
  animation:carga-horizonte 900ms var(--ease-smooth-out) 380ms forwards;
}
@keyframes carga-horizonte{to{transform:scaleX(1)}}
.carga-pie{position:relative;z-index:1;margin-top:14px;font-size:11.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--tinta-suave);opacity:0;
  animation:carga-pie 600ms var(--ease-smooth-out) 620ms forwards}
@keyframes carga-pie{to{opacity:1}}

/* telón arriba: la página ya está debajo */
.carga.se-va{transform:translateY(-100%);opacity:0;pointer-events:none}
body.cargando{overflow:hidden}

/* redes de seguridad: sin JS o con motion reducido, el telón no bloquea nada */
@media (scripting: none){.carga{display:none}}
@media (prefers-reduced-motion: reduce){
  .carga{transition:opacity 200ms linear}
  .carga.se-va{transform:none}
  .carga-sol{animation:none;opacity:1;transform:translate(-50%,0)}
  .carga-logo,.carga-pie{animation:none;opacity:1;transform:none;filter:none}
  .carga-horizonte{animation:none;transform:scaleX(1)}
}

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:sticky;top:0;z-index:80;
  background:rgba(242,248,244,.96);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--linea);
}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .nav{background:rgba(242,248,244,.86)}
}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:74px}
.nav-logo img{height:42px;width:auto}
.nav-links{display:flex;gap:26px}
.nav-links a{font-weight:600;font-size:15px;color:var(--tinta);position:relative}
.nav-links a i{display:none}                 /* el subtítulo es solo del panel móvil */
.nav-panel-wa{display:none}
.nav-links a::after{
  content:'';position:absolute;left:0;bottom:-6px;height:2.5px;width:0;
  background:var(--sol);transition:width .25s var(--ease);
}
.nav-links a:hover::after{width:100%}
.nav-cta{
  background:var(--rio);color:#fff;font-weight:700;font-size:14px;
  padding:11px 20px;border-radius:999px;transition:.18s;
}
.nav-cta:hover{background:var(--hoja)}

/* hamburguesa: dos líneas que se cruzan en X */
.nav-burger{display:none;background:none;border:none;cursor:pointer;
  width:44px;height:44px;padding:0;align-items:center;justify-content:center;
  -webkit-tap-highlight-color:transparent}
.nav-burger-cajita{position:relative;display:block;width:22px;height:14px}
.nav-burger-cajita i{
  position:absolute;left:0;width:100%;height:2.5px;border-radius:2px;background:var(--rio);
  transition:transform var(--duration-fast,250ms) var(--ease-bounce,cubic-bezier(.34,1.36,.64,1)),
             width var(--duration-fast,250ms) var(--ease);
}
.nav-burger-cajita i:nth-child(1){top:0}
.nav-burger-cajita i:nth-child(2){bottom:0;width:70%}
.nav-burger[aria-expanded="true"] .nav-burger-cajita i:nth-child(1){transform:translateY(5.75px) rotate(45deg)}
.nav-burger[aria-expanded="true"] .nav-burger-cajita i:nth-child(2){transform:translateY(-5.75px) rotate(-45deg);width:100%}

/* ============================================================
   HERO — amanece al cargar
   ============================================================ */
.hero{position:relative;overflow:hidden;padding:64px 0 0;background:transparent}
.hero-sky{position:absolute;inset:0;pointer-events:none;z-index:0}
.hero-sun{
  position:absolute;right:8%;top:64%;width:min(34vw,380px);aspect-ratio:1;
  border-radius:50%;
  background:radial-gradient(circle at 42% 38%, #FBD98A 0%, var(--sol) 55%, rgba(246,183,60,0) 74%);
  filter:blur(4px);opacity:.9;
}
.hero-in{
  position:relative;z-index:1;
  display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center;
  padding-bottom:56px;
}
.hero-title{
  font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:clamp(42px,6.4vw,72px);line-height:.98;letter-spacing:-.03em;
  color:var(--rio);margin:14px 0 20px;
}
.hero-title em{
  font-style:normal;color:var(--hoja);
  box-shadow:inset 0 -0.28em 0 var(--sol-suave);
}
.hero-sub{font-size:18.5px;color:var(--tinta-suave);max-width:520px;margin-bottom:30px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.hero-foto{position:relative}
.hero-foto img{
  width:100%;height:460px;object-fit:cover;
  border-radius:200px 200px var(--radio) var(--radio); /* arco de sol */
  box-shadow:var(--sombra);
}
.hero-foto picture{display:block}
.hero-foto figcaption{
  position:absolute;left:18px;bottom:18px;max-width:calc(100% - 36px);line-height:1.45;
  background:rgba(255,255,255,.92);border-radius:10px;
  padding:8px 14px;font-size:11.5px;color:var(--rio);
}
.hero-datos{
  position:relative;z-index:1;
  display:flex;flex-wrap:wrap;justify-content:center;gap:10px 18px;
  padding:20px 22px;font-size:12.5px;color:var(--rio);font-weight:600;
  text-shadow:0 1px 3px rgba(255,255,255,.85);
  background:transparent;
}
.hero-datos i{color:#e08a2b;font-style:normal}

/* ============================================================
   CALCULADORA — la boleta reescrita (signature)
   ============================================================ */
.calc{padding:96px 0;background:transparent}
.calc-head{margin-bottom:44px}

/* --- subir factura · IA --- */
.calc-ia{margin-bottom:40px}
.calc-ia-card{
  position:relative;border-radius:var(--radio);padding:30px;
  background:linear-gradient(135deg,rgba(46,158,58,.08),rgba(11,61,92,.06));
  border:1.5px solid var(--linea);box-shadow:var(--sombra);
}
.calc-ia-badge{
  display:inline-block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--hoja-osc);background:rgba(46,158,58,.14);border:1px solid rgba(46,158,58,.3);
  padding:4px 11px;border-radius:999px;margin-bottom:12px;font-weight:600;
}
.calc-ia-txt h3{font-size:clamp(21px,3.4vw,27px);line-height:1.15;color:var(--rio);margin:0 0 8px;letter-spacing:-.01em}
.calc-ia-txt p{color:var(--tinta-suave);font-size:15.5px;line-height:1.5;margin:0 0 20px;max-width:56ch}
.calc-ia-txt p b{color:var(--tinta)}
.calc-ia-drop{
  display:flex;align-items:center;gap:16px;cursor:pointer;
  padding:20px 22px;border-radius:16px;border:2px dashed rgba(46,158,58,.45);
  background:var(--papel);transition:border-color .18s,background .18s,transform .18s;
}
.calc-ia-drop:hover,.calc-ia-drop.is-drag{border-color:var(--hoja);background:var(--dia);transform:translateY(-1px)}
.calc-ia-drop-ic{
  flex:0 0 auto;width:52px;height:52px;border-radius:14px;display:grid;place-items:center;
  background:rgba(46,158,58,.12);color:var(--hoja-osc);
}
.calc-ia-drop-txt{display:flex;flex-direction:column;gap:3px}
.calc-ia-drop-txt b{font-size:16px;color:var(--tinta)}
.calc-ia-drop-txt i{font-size:12.5px;color:var(--tinta-suave);letter-spacing:.06em}
.calc-ia-consent{font-size:11.5px;line-height:1.5;color:var(--tinta-suave);margin:14px 2px 0;opacity:.85}
.calc-ia-estado{
  margin-top:16px;padding:13px 16px;border-radius:12px;font-size:14.5px;line-height:1.45;
  display:flex;align-items:center;gap:10px;
}
.calc-ia-estado.cargando{background:rgba(11,61,92,.06);color:var(--rio)}
.calc-ia-estado.error{background:rgba(214,90,60,.1);color:#B04A2E}
/* que el hidden del JS gane siempre (si no, display:flex lo deja visible) */
.calc-ia-estado[hidden],.calc-ia-analisis[hidden]{display:none!important}
.calc-ia-spin{
  flex:0 0 auto;width:17px;height:17px;border-radius:50%;
  border:2.5px solid rgba(11,61,92,.2);border-top-color:var(--rio);
  animation:iaSpin .7s linear infinite;
}
@keyframes iaSpin{to{transform:rotate(360deg)}}
.calc-ia-analisis{
  margin-top:18px;padding:18px 20px;border-radius:14px;
  background:var(--papel);border:1px solid var(--linea);
}
.calc-ia-ok{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--hoja-osc);margin:0 0 8px;font-weight:600}
.calc-ia-obs{font-size:15px;line-height:1.55;color:var(--tinta);margin:0 0 10px}
.calc-ia-num{font-size:16.5px;line-height:1.55;color:var(--tinta);margin:0 0 8px}
.calc-ia-num b{color:var(--hoja-osc)}
.calc-ia-tip{font-size:12.5px;color:var(--tinta-suave);margin:0}
.calc-ia-o{text-align:center;color:var(--tinta-suave);font-size:12.5px;letter-spacing:.08em;margin:26px 0 0}
@media (prefers-reduced-motion:reduce){.calc-ia-spin{animation:none}}

.calc-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;
}
/* ticket solo (sin la cuenta manual): centrado y con ancho acotado */
.calc-grid--solo{grid-template-columns:minmax(0,520px);justify-content:center;margin-top:40px}

/* --- formulario --- */
.calc-form fieldset{border:none;margin-bottom:26px}
.calc-form legend{
  font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--rio);font-weight:600;margin-bottom:12px;
}
.calc-form label{display:block;font-weight:600;font-size:14.5px;margin:12px 0 6px;color:var(--tinta)}
.ayuda{font-weight:400;color:var(--tinta-suave);font-size:13px}
.calc-form input,.calc-form select{
  width:100%;padding:13px 15px;font-size:16px;font-family:inherit;
  border:2px solid var(--linea);border-radius:12px;background:var(--papel);color:var(--tinta);
  transition:border-color .18s;
}
.calc-form input:focus,.calc-form select:focus{border-color:var(--hoja);outline:none}
.seg{display:flex;background:var(--papel);border:2px solid var(--linea);border-radius:12px;padding:4px;gap:4px;margin-bottom:14px}
.seg button{
  flex:1;border:none;background:transparent;padding:10px;border-radius:8px;
  font-family:inherit;font-weight:700;font-size:14px;color:var(--tinta-suave);cursor:pointer;transition:.15s;
}
.seg button.on{background:var(--rio);color:#fff}
.btn-calc{width:100%;font-size:17px;padding:16px}
.error{color:#B4441F;font-size:13px;margin-top:10px}

/* --- ticket --- */
.ticket-zone{display:flex;flex-direction:column;gap:18px}
.ticket{
  background:var(--papel);
  border-radius:6px;
  box-shadow:var(--sombra);
  padding:30px 28px 18px;
  position:relative;
  /* borde perforado arriba y abajo */
  -webkit-mask:
    radial-gradient(circle 7px at 14px 0, transparent 97%, #000) top left / 28px 14px repeat-x,
    linear-gradient(#000,#000) 0 14px / 100% calc(100% - 28px) no-repeat,
    radial-gradient(circle 7px at 14px 100%, transparent 97%, #000) bottom left / 28px 14px repeat-x;
  mask:
    radial-gradient(circle 7px at 14px 0, transparent 97%, #000) top left / 28px 14px repeat-x,
    linear-gradient(#000,#000) 0 14px / 100% calc(100% - 28px) no-repeat,
    radial-gradient(circle 7px at 14px 100%, transparent 97%, #000) bottom left / 28px 14px repeat-x;
}
.tk-head{text-align:center;border-bottom:2px dashed var(--linea);padding-bottom:16px;margin-bottom:16px}
.tk-logo{height:52px;width:auto;margin:0 auto 10px}
.tk-tit{font-size:14px;font-weight:600;letter-spacing:.1em;color:var(--rio)}
.tk-sub{font-size:11px;color:var(--tinta-suave);margin-top:2px}
.tk-body{font-size:13.5px}
.tk-body hr{border:none;border-top:2px dashed var(--linea);margin:12px 0}
.tk-fila{display:flex;justify-content:space-between;gap:10px;padding:5px 0;color:var(--tinta)}
.tk-fila span{color:var(--tinta-suave)}
.tk-fila b{font-weight:600;text-align:right}
.tk-fila.grande b{font-size:22px;color:var(--hoja-osc);font-weight:700}
.tk-fila.sol b{color:#B07B12}
.tk-fila.verde b,.tk-fila.verde span{color:var(--hoja-osc)}
.tk-fila.tachado.is-tachado b{
  text-decoration:line-through;text-decoration-color:var(--hoja);text-decoration-thickness:2.5px;
  color:var(--tinta-suave);
}
.tk-foot{margin-top:14px;border-top:2px dashed var(--linea);padding-top:12px;text-align:center}
.tk-foot p{font-size:11.5px;color:var(--tinta-suave)}
.tk-clip{margin-top:8px;color:var(--linea);overflow:hidden;white-space:nowrap}
.ticket-acciones{display:flex;gap:12px;flex-wrap:wrap}
.ticket-acciones .btn{flex:1;min-width:180px;font-size:14.5px;padding:13px 18px}
.letra-chica{font-size:12px;color:var(--tinta-suave);line-height:1.55}

/* ============================================================
   CÓMO FUNCIONA — secuencia real 1→4
   ============================================================ */
.pasos{padding:96px 0;background:transparent}
.pasos-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:40px;
  position:relative;
}
.paso{
  background:var(--dia);border:1px solid var(--linea);border-radius:var(--radio);
  padding:26px 22px;transition:transform .2s var(--ease),box-shadow .2s;
}
.paso:hover{box-shadow:var(--sombra);border-color:var(--sol)}
.paso-n{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:50%;
  background:var(--rio);color:var(--sol);font-weight:600;font-size:16px;
  margin-bottom:14px;
}
.paso h3{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:18px;color:var(--rio);margin-bottom:6px}
.paso p{font-size:14.5px;color:var(--tinta-suave)}
.nota-ute{
  margin-top:34px;background:var(--sol-suave);border-left:5px solid var(--sol);
  border-radius:12px;padding:18px 22px;font-size:15px;color:#6B5518;
}
.nota-ute-tit{
  font-family:var(--display,inherit);font-size:20px;font-weight:700;
  color:#5A4510;margin:0 0 8px;letter-spacing:-.01em;
}
.nota-ute p{margin:0}
.nota-ute p + p{margin-top:9px}

/* ============================================================
   OBRAS
   ============================================================ */
.obras{padding:96px 0;background:transparent}
.obras-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;margin-top:40px}
/* 4 por fila; si la última queda incompleta, se centra */
.obras-grid > .obra{flex:0 0 calc((100% - 3*18px)/4)}
.obra{position:relative;border-radius:var(--radio);overflow:hidden;box-shadow:var(--sombra)}
.obra img{width:100%;height:340px;object-fit:cover;transition:transform .45s var(--ease)}
.obra:hover img{transform:scale(1.06)}
.obra figcaption{
  position:absolute;inset:auto 0 0 0;
  background:linear-gradient(180deg,transparent,rgba(11,61,92,.72) 42%,rgba(9,44,66,.94));
  color:#fff;padding:40px 16px 15px;display:flex;flex-direction:column;
}
.obra figcaption b{font-size:15.5px}
.obra figcaption span{font-size:12.5px;opacity:.85}
.obra-desc{
  font-size:12.5px;line-height:1.42;color:rgba(255,255,255,.9);
  margin:7px 0 0;max-width:34ch;
}
.obra figcaption i{
  position:absolute;top:12px;right:12px;
  font-style:normal;background:var(--sol);color:var(--rio);
  font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;
}
.obra picture{display:block}
/* "4 fotos": avisa que la tarjeta se abre */
.obra-fotos{
  position:absolute;top:12px;left:12px;z-index:1;
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;color:#fff;padding:5px 10px;border-radius:999px;
  background:rgba(9,44,66,.55);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:background var(--duration-fast) var(--ease);
}
.obra:hover .obra-fotos{background:rgba(9,44,66,.8)}
/* toda la tarjeta es tocable: botón invisible encima */
.obra-abrir{
  position:absolute;inset:0;z-index:2;width:100%;
  background:transparent;border:0;padding:0;cursor:zoom-in;
  border-radius:inherit;
}
.obra-abrir:focus-visible{outline:3px solid var(--sol);outline-offset:-3px}

/* ============================================================
   GALERÍA DE UNA OBRA (dialog)
   ============================================================ */
.galeria{
  border:0;padding:0;margin:auto;
  width:min(1100px,94vw);max-width:none;max-height:92vh;
  background:transparent;color:#fff;overflow:visible;
}
.galeria::backdrop{
  background:rgba(6,22,34,.86);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
.galeria[open]{animation:galeria-in .32s var(--ease-smooth-out)}
.galeria[open]::backdrop{animation:galeria-fondo .32s ease-out}
@keyframes galeria-in{from{opacity:0;transform:scale(.97) translateY(8px)}to{opacity:1;transform:none}}
@keyframes galeria-fondo{from{opacity:0}to{opacity:1}}
.galeria-in{position:relative;display:flex;flex-direction:column;gap:12px}
.galeria-top{display:flex;align-items:center;gap:14px}
.galeria-titulo{font-weight:600;font-size:16px;margin:0;flex:1;min-width:0}
.galeria-cont{font-size:12.5px;opacity:.75;margin:0}
.galeria-cerrar{
  display:grid;place-items:center;width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;cursor:pointer;
  transition:background var(--duration-fast) var(--ease),transform var(--duration-quick) var(--ease);
}
.galeria-cerrar:hover{background:rgba(255,255,255,.18)}
.galeria-cerrar:active{transform:scale(.94)}
.galeria-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px}
.galeria-fig img{
  display:block;max-width:100%;max-height:calc(92vh - 120px);width:auto;height:auto;
  border-radius:14px;box-shadow:0 30px 70px -30px rgba(0,0,0,.7);
  transition:opacity .22s ease;
}
.galeria-fig img.is-cargando{opacity:.35}
.galeria-fig figcaption{font-size:14px;color:rgba(255,255,255,.85);text-align:center}
.galeria-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  display:grid;place-items:center;width:48px;height:48px;border-radius:50%;
  border:1px solid rgba(255,255,255,.22);background:rgba(9,44,66,.6);color:#fff;cursor:pointer;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:background var(--duration-fast) var(--ease),transform var(--duration-quick) var(--ease);
}
.galeria-nav:hover{background:rgba(9,44,66,.9)}
.galeria-nav:active{transform:translateY(-50%) scale(.94)}
.galeria-prev{left:-62px}
.galeria-next{right:-62px}
.galeria-cerrar:focus-visible,.galeria-nav:focus-visible{outline:3px solid var(--sol);outline-offset:2px}
@media (max-width:1240px){
  .galeria-prev{left:10px}
  .galeria-next{right:10px}
}
@media (prefers-reduced-motion:reduce){
  .galeria[open],.galeria[open]::backdrop{animation:none}
}

/* ============================================================
   EQUIPO
   ============================================================ */
.equipo{padding:64px 0 110px;background:transparent}
.equipo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}
.persona{background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);overflow:hidden;text-align:center;transition:transform .2s var(--ease)}
.persona:hover{box-shadow:var(--sombra)}
.persona img{width:100%;height:300px;object-fit:cover;object-position:top}
.persona figcaption{padding:16px}
.persona b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:18px;color:var(--rio)}
.persona span{font-size:13.5px;color:var(--hoja-osc)}

/* ============================================================
   CONTACTO + PIE
   ============================================================ */
.contacto{
  background:linear-gradient(180deg,rgba(9,20,46,0) 0,rgba(9,20,46,.55) 90px,rgba(8,17,40,.92) 300px,rgba(7,15,36,.97) 100%);
  color:#fff;padding:150px 0 0;
}
.contacto-in{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;padding-bottom:70px}
.contacto-sub{color:#BFD5E2;font-size:17px;max-width:460px;margin-bottom:26px}
.contacto-datos p{font-size:14px;color:#BFD5E2;margin-bottom:8px}
.contacto-datos a{color:var(--sol);font-weight:500}
.contacto-form{
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:var(--radio);padding:26px;
}
.contacto-form label{display:block;font-weight:600;font-size:14px;margin:12px 0 6px;color:#fff}
.contacto-form input,.contacto-form textarea{
  width:100%;padding:13px 15px;font-size:16px;font-family:inherit;
  border:none;border-radius:11px;background:#fff;color:var(--tinta);
}
.contacto-form .btn{width:100%;margin-top:18px}
.pie{
  border-top:1px solid rgba(255,255,255,.14);
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-top:22px;padding-bottom:26px;flex-wrap:wrap;
}
.pie-logo{height:38px;width:auto;filter:brightness(0) invert(1)}
.pie p{font-size:12.5px;color:#8FA9BB}

/* ── redes sociales ── */
.contacto-redes{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.contacto-redes a{
  display:inline-flex;align-items:center;gap:9px;
  padding:10px 16px 10px 13px;border-radius:999px;
  color:#EAF3F8;background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.16);
  font-size:13.5px;text-decoration:none;
  transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease-bounce);
}
.contacto-redes a:hover{background:var(--sol);border-color:var(--sol);color:var(--rio);transform:translateY(-2px)}
.contacto-redes svg{flex:none}
.pie-redes{display:flex;gap:10px;align-items:center}
.pie-redes a{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:50%;
  color:#C9DAE6;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.14);
  transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease-bounce);
}
.pie-redes a:hover{background:var(--sol);color:var(--rio);transform:translateY(-2px)}

/* ============================================================
   WHATSAPP FLOTANTE
   ============================================================ */
.wa-flotante{
  position:fixed;right:20px;bottom:20px;z-index:90;
  width:58px;height:58px;border-radius:50%;
  background:var(--hoja);display:flex;align-items:center;justify-content:center;
  box-shadow:0 14px 30px -10px rgba(46,158,58,.75);
  transition:transform .18s var(--ease);
}
.wa-flotante:hover{transform:scale(1.09)}

/* ============================================================
   REVEALS — defensivo (gotchas A.4.5 / A.8)
   ============================================================ */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
[data-reveal].is-revealed{opacity:1;transform:none}
.reveal[data-split]{opacity:1;transform:none}
/* si JS no corre, todo visible a los 5s */
@media (scripting: none){[data-reveal]{opacity:1;transform:none}}

/* solo lo intrusivo respeta reduced-motion */
@media (prefers-reduced-motion: reduce){
  .dn-cloud{animation:none!important}
  .dn-stars.tw .dn-star{animation:none!important}
}

/* ============================================================
   RESPONSIVE — el celular es otra composición
   ============================================================ */
@media (max-width:980px){
  .hero-in{grid-template-columns:1fr;gap:36px}
  .hero-foto img{height:340px;border-radius:140px 140px var(--radio) var(--radio)}
  .calc-grid{grid-template-columns:1fr;gap:40px}
  .pasos-grid{grid-template-columns:1fr 1fr}
  .obras-grid > .obra{flex-basis:calc((100% - 18px)/2)}
  .contacto-in{grid-template-columns:1fr;gap:40px}
}
/* ---------- panel de navegación a pantalla completa ---------- */
@media (max-width:900px){
  .nav-burger{display:flex}
  .nav-cta{display:none}

  /* OJO: backdrop-filter crea bloque contenedor y atraparía al panel fixed.
     En celular el nav va sólido y el panel puede ocupar toda la pantalla. */
  .nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--dia)}
  /* logo y X siempre por encima del panel, para poder cerrarlo */
  .nav-logo,.nav-burger{position:relative;z-index:2}

  .nav-links{
    position:fixed;inset:0;top:0;z-index:1;
    display:flex;flex-direction:column;justify-content:center;align-items:stretch;
    gap:0;padding:96px 22px 34px;
    background:linear-gradient(180deg,#eaf4ee 0%,var(--dia) 42%,#fdeed6 100%);
    /* cerrado: invisible y fuera del foco, sin animar display */
    opacity:0;visibility:hidden;transform:translateY(-10px);
    transition:opacity var(--duration-fast) var(--ease-smooth-out),
               transform var(--duration-fast) var(--ease-smooth-out),
               visibility 0s linear var(--duration-fast);
  }
  .nav-links.abierto{
    opacity:1;visibility:visible;transform:none;
    transition:opacity var(--duration-fast) var(--ease-smooth-out),
               transform var(--duration-fast) var(--ease-smooth-out),
               visibility 0s;
  }

  .nav-links a{
    display:flex;align-items:baseline;justify-content:space-between;gap:14px;
    padding:17px 2px;border-bottom:1px solid var(--linea);
    font-size:15px;
    /* cada ítem entra escalonado detrás del panel */
    opacity:0;transform:translateY(14px);filter:blur(var(--stagger-blur));
    transition:opacity var(--stagger-dur) var(--stagger-ease),
               transform var(--stagger-dur) var(--stagger-ease),
               filter var(--stagger-dur) var(--stagger-ease);
    will-change:transform,opacity;
  }
  .nav-links a::after{display:none}
  .nav-links a b{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
    font-size:26px;letter-spacing:-.02em;line-height:1;color:var(--rio);white-space:nowrap}
  .nav-links a i{display:block;font-style:normal;font-size:10px;letter-spacing:.08em;
    text-transform:uppercase;color:var(--hoja-osc);white-space:nowrap}
  .nav-links.abierto a{opacity:1;transform:none;filter:blur(0)}
  .nav-links.abierto a:nth-child(1){transition-delay:calc(var(--stagger-stagger) * 1)}
  .nav-links.abierto a:nth-child(2){transition-delay:calc(var(--stagger-stagger) * 2)}
  .nav-links.abierto a:nth-child(3){transition-delay:calc(var(--stagger-stagger) * 3)}
  .nav-links.abierto a:nth-child(4){transition-delay:calc(var(--stagger-stagger) * 4)}
  .nav-links.abierto a:nth-child(5){transition-delay:calc(var(--stagger-stagger) * 5)}
  .nav-links.abierto a:nth-child(6){transition-delay:calc(var(--stagger-stagger) * 6)}
  .nav-links a:active{transform:scale(.99)}

  .nav-panel-wa{
    display:flex;align-items:center;justify-content:center;
    margin-top:26px;padding:16px 20px !important;border-bottom:none !important;
    background:var(--hoja);color:#fff;border-radius:999px;
    font-weight:700;font-size:15.5px;
    box-shadow:0 14px 26px -12px rgba(46,158,58,.7);
  }
  .nav-panel-wa:active{transform:scale(.98)}

  /* el logo y la X quedan por encima del panel */
  .nav{z-index:90}
  body.menu-abierto{overflow:hidden}
  /* con el menú abierto, el flotante estorba */
  body.menu-abierto .wa-flotante{opacity:0;pointer-events:none;transform:scale(.9)}
  .wa-flotante{transition:transform .18s var(--ease),opacity .18s var(--ease)}

  @media (prefers-reduced-motion: reduce){
    .nav-links,.nav-links a{transition-duration:.01ms !important;transition-delay:0s !important;filter:none}
  }
}
@media (max-width:560px){
  .wrap{padding:0 16px}
  .hero{padding-top:34px}
  .hero-title{font-size:clamp(36px,11vw,46px)}
  .hero-sub{font-size:16.5px;margin-bottom:24px}
  .hero-foto img{height:260px;border-radius:110px 110px 16px 16px}
  .hero-sun{right:-10%;top:70%;width:60vw}
  .hero-datos{font-size:11px;gap:8px 12px}
  .pasos,.calc,.obras{padding:64px 0}
  .equipo{padding-bottom:64px}
  .contacto{padding-top:64px}
  .ticket{padding:24px 18px 14px}
  .tk-fila.grande b{font-size:19px}
  .ticket-acciones .btn{min-width:100%}
  .pie{flex-direction:column;text-align:center}

  /* CTA del hero: una acción principal, la otra baja a enlace */
  .hero-cta{gap:8px;align-items:flex-start}
  .hero-cta .btn-sol{width:100%}
  .hero-cta .btn-linea{
    width:auto;border:none;background:none;padding:10px 2px;
    color:var(--rio);text-decoration:underline;text-underline-offset:5px;
    text-decoration-color:var(--sol);text-decoration-thickness:2px;
  }

  /* los 4 pasos sí son una secuencia: 2×2 en vez de una columna larga */
  .pasos-grid{grid-template-columns:1fr 1fr;gap:12px}
  .paso{padding:20px 16px}
  .paso h3{font-size:16px}
  .paso p{font-size:13.5px}

  /* obras: galería que se desliza con el dedo, la siguiente asoma */
  .obras-grid{
    display:grid;grid-template-columns:none;      /* anula las columnas explícitas */
    grid-auto-flow:column;grid-auto-columns:80%;
    gap:12px;margin-top:28px;
    overflow-x:auto;overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;scroll-padding-left:16px;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
  }
  .obras-grid::-webkit-scrollbar{display:none}
  .obra{scroll-snap-align:start;background:var(--rio);display:flex;flex-direction:column}
  .obra img{height:240px}
  /* en el celular el texto va DEBAJO de la foto: encima tapaba el 70% */
  .obra figcaption{
    position:static;flex:1;
    background:var(--rio);padding:14px 16px 16px;
  }

  /* equipo: los tres en una sola línea */
  .equipo-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:28px}
  .persona{border-radius:14px}
  .persona img{height:116px;object-position:top center}
  .persona figcaption{padding:10px 7px 13px;min-height:62px}
  .persona b{font-size:13px;line-height:1.15}
  .persona span{display:block;margin-top:4px;font-size:10.5px;line-height:1.25}

  /* el flotante de WhatsApp no debe tapar el pie */
  .wa-flotante{right:14px;bottom:14px;width:54px;height:54px}
  .pie{padding-bottom:78px}
}

/* pantallas angostas (iPhone SE): el equipo sigue en una línea, con tipo más chico */
@media (max-width:379px){
  .equipo-grid{gap:8px}
  .persona img{height:104px}
  .persona figcaption{padding:9px 5px 11px;min-height:68px}
  .persona b{font-size:11.5px}
  .persona span{font-size:9.5px;margin-top:3px}
  .obras-grid{grid-auto-columns:84%}
  .paso{padding:18px 14px}
}

/* respuesta táctil: todo lo que se toca se hunde un poco */
@media (hover:none){
  .btn:active,.nav-cta:active,.seg button:active,.wa-flotante:active{transform:scale(.975)}
  .obra:active,.persona:active,.paso:active{transform:scale(.99)}
}
@media (prefers-reduced-motion: reduce){
  .btn:active,.nav-cta:active,.obra:active,.persona:active,.paso:active{transform:none}
}
