/* Deal Inmobiliaria, landing (segunda versión, 3 sep 2026).
   Negro puro, rosa #ecb8cc y blanco. Manrope 800 / 500. Gestos trasplantados
   de las referencias de Diego: nombre gigante sobre foto y bloque de color que
   lo repite (Andermatt); duotono del color de marca, cifra enorme con
   miniaturas flotando y nombre gigante en el pie (Blue Yonder); fila de
   números y pasos numerados (250 Broadway); enunciados grandes a la izquierda,
   pares asimétricos y revelados por recorte (111 West 57).
   Sin JS la página nace completa: todo lo que oculta cuelga de html.anima. */

:root{
  --negro:#000000;
  --humo:#141214;
  /* el rosa oficial de la marca «Casas Deal» (13-oct-2026) */
  --rosa:#ecb8cc;
  --rosa-tinta:#131013;
  --blanco:#F8F8F8;
  --font:"Manrope","Helvetica Neue",Arial,sans-serif;
  --gutter:clamp(18px,3vw,56px);
  /* LA PERILLA DEL TEXTO GIGANTE (17-sep-2026). Diego: «el más grande lo siento
     muy grande, ocupa mucho espacio… dejar el efecto de texto grande, ese es el
     estilo, pero no tan grande». Eligió 82 % viendo la página real a 100, 82 y
     68 lado a lado. Los veinte titulares de display multiplican su tamaño por
     esto, así la proporción ENTRE ellos no cambia y el ajuste es un solo número.
     No toca cuerpo, botones ni el formulario, que tienen su propia escala. */
  --display:.82;
  --ease:cubic-bezier(.76,0,.24,1);
  --ease-out:cubic-bezier(.16,1,.35,1);
  --barra-h:76px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:auto;background:var(--negro)}
body{margin:0;font-family:var(--font);font-weight:500;font-size:18px;line-height:1.45;color:var(--blanco);background:var(--negro);-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit}
h1,h2,h3{margin:0;font-weight:800;letter-spacing:-.04em;line-height:.98;text-wrap:balance}
p,figure{margin:0}
kbd,code,samp{font-family:inherit}
:focus{outline:none}
:focus-visible{outline:2px solid var(--rosa);outline-offset:3px}
button:not(:disabled),label.chip-op,a[href]{cursor:pointer}
.rosa{color:var(--rosa)}
.h-linea{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.h-linea>span{display:block}
.h-linea.rosa>span{color:var(--rosa)}
.chip{display:inline-block;background:var(--rosa);color:var(--rosa-tinta);font-weight:800;font-size:clamp(13px,1vw,16px);letter-spacing:.04em;padding:.5em 1em;border-radius:999px;text-transform:uppercase;line-height:1}

/* ---------- barra: tres piezas ---------- */
.barra{position:fixed;inset:0 0 auto 0;z-index:40;height:var(--barra-h);display:flex;align-items:stretch;gap:24px;padding:0 var(--gutter);background:var(--negro);color:var(--blanco);transition:transform .5s var(--ease)}
.barra.oculta{transform:translateY(-100%)}
.barra-marca{display:flex;align-items:center}
.menu-btn{display:none;margin-left:auto;align-items:center;gap:12px;background:transparent;border:0;padding:10px 0;font-weight:800;font-size:16px}
.menu-btn-lineas{position:relative;width:26px;height:14px;display:block}
.menu-btn-lineas i{position:absolute;left:0;right:0;height:2px;background:var(--blanco);transition:transform .35s var(--ease),top .35s var(--ease)}
.menu-btn-lineas i:first-child{top:0}.menu-btn-lineas i:last-child{top:12px}
.menu-btn[aria-expanded="true"] .menu-btn-lineas i:first-child{top:6px;transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] .menu-btn-lineas i:last-child{top:6px;transform:rotate(-45deg)}
/* logotipo «Casas Deal» (13-oct-2026): mide 6.3 de ancho por 1 de alto contra 3.1 del de antes;
   se iguala por la ALTURA de la DD (unos 26 px), no por el ancho, o quedaba de la mitad */
.barra-marca img{width:160px;height:auto;transition:opacity .4s}
.hero-visible .barra-marca img{opacity:0}
.barra-links{flex:0 0 auto;display:flex;align-items:stretch;align-self:stretch;margin:0 auto;font-weight:500;font-size:clamp(16px,1.3vw,20px);letter-spacing:-.01em}
.barra::after{content:"";flex:0 0 112px}
/* cada sección es un bloque de la barra negra; al pasar el cursor o estar activa, se despliega en blanco desde arriba */
.barra-links a{position:relative;flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:0 clamp(18px,1.9vw,34px);overflow:hidden;transition:color .3s var(--ease-out)}
.barra-links a::before{content:"";position:absolute;inset:0;background:var(--blanco);transform:scaleY(0);transform-origin:top;transition:transform .42s var(--ease)}
.barra-links a>span{position:relative}
.barra-links a:hover::before,.barra-links a[aria-current="page"]::before{transform:scaleY(1)}
.barra-links a:hover,.barra-links a[aria-current="page"]{color:var(--negro)}
.barra-links a::after{content:none}
.barra .logo-claro{display:none}

.barra-cta{justify-self:end;font-weight:800;font-size:16px;background:var(--rosa);color:var(--rosa-tinta);padding:12px 20px;border-radius:8px;transition:transform .16s var(--ease-out),background-color .2s}
.barra-cta:hover{background:#f1cbda}.barra-cta:active{transform:scale(.97)}

.menu[hidden]{display:none}
.menu{position:fixed;top:var(--barra-h);left:0;right:0;z-index:35;background:var(--rosa);color:var(--rosa-tinta);padding:clamp(20px,3vh,36px) var(--gutter) clamp(22px,3vh,40px);clip-path:inset(0 0 100% 0);transition:clip-path .55s var(--ease)}
.menu.abierto{clip-path:inset(0 0 0 0)}
.menu-paginas{display:flex;flex-wrap:wrap;gap:6px clamp(20px,3vw,48px);align-items:baseline}
.menu-paginas a{position:relative;font-size:clamp(24px,3.2vw,52px);font-weight:800;letter-spacing:-.035em;line-height:1.1;padding:.1em 0;opacity:0;transform:translateY(12px);transition:opacity .45s var(--ease-out),transform .45s var(--ease-out)}
.menu-paginas a::after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:3px;background:var(--rosa-tinta);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.menu-paginas a:hover::after,.menu-paginas a[aria-current="page"]::after{transform:scaleX(1)}
.menu-paginas a.menu-rosa{color:var(--blanco)}
.menu-paginas a.menu-rosa::after{background:var(--blanco)}
.menu.abierto .menu-paginas a{opacity:1;transform:none}
.menu.abierto .menu-paginas a:nth-child(1){transition-delay:.12s}.menu.abierto .menu-paginas a:nth-child(2){transition-delay:.17s}.menu.abierto .menu-paginas a:nth-child(3){transition-delay:.22s}.menu.abierto .menu-paginas a:nth-child(4){transition-delay:.27s}.menu.abierto .menu-paginas a:nth-child(5){transition-delay:.32s}
.menu-datos{display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:clamp(14px,2.5vh,28px);font-weight:800;font-size:clamp(14px,1.05vw,17px);opacity:0;transition:opacity .5s .35s}
.menu.abierto .menu-datos{opacity:1}
.menu-datos a:hover{opacity:.7}
.barra.menu-abierto{background:var(--negro)}
.barra.menu-abierto .barra-marca img{opacity:1}

/* ---------- hero ---------- */
.hero{position:relative;height:100svh;min-height:600px;overflow:hidden;display:grid;grid-template-rows:auto 1fr auto;padding:calc(var(--barra-h) + 2vh) var(--gutter) 5vh}
.hero-media{position:absolute;inset:-12% 0 -12% 0;z-index:0}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 6%}
.hero-velo{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.55) 0%,rgba(0,0,0,.05) 38%,rgba(0,0,0,0) 55%,rgba(0,0,0,.72) 100%)}
.hero-marca{position:relative;z-index:2;display:flex;justify-content:center;align-self:start}
.hero-marca img{width:min(58vw,800px);height:auto}
.hero-linea{position:relative;z-index:2;align-self:end;font-size:clamp(24px,2.6vw,40px);line-height:1.08;letter-spacing:-.03em;max-width:22ch;grid-row:3;grid-column:1}
.hero-accion{position:absolute;right:var(--gutter);bottom:5vh;z-index:2;font-weight:800;font-size:clamp(15px,1.1vw,18px);padding:8px 0}

/* ---------- enunciado y par asimétrico ---------- */
.frase{padding:clamp(80px,14vh,180px) var(--gutter) clamp(60px,10vh,140px)}
.frase-big{font-size:calc(clamp(34px,5.4vw,96px) * var(--display));font-weight:800;letter-spacing:-.04em;line-height:1.02;max-width:20ch;text-wrap:balance}
.frase-big .palabra{display:inline-block;transition:opacity .2s}
.par-asim{position:relative;margin-top:clamp(60px,12vh,160px);display:grid;grid-template-columns:repeat(12,1fr);gap:0 clamp(12px,2vw,32px);align-items:start}
.par-grande{grid-column:1/8;overflow:hidden;aspect-ratio:4/5}
.par-chica{grid-column:9/13;margin-top:clamp(80px,22vh,300px);overflow:hidden;aspect-ratio:4/5}
.par-asim img{width:100%;height:100%;object-fit:cover}
.par-chica figcaption{margin-top:12px;font-weight:800;font-size:15px;color:var(--rosa)}

/* ---------- bloque rosa ---------- */
.rosa-bloque{position:relative;background:var(--rosa);color:var(--rosa-tinta);min-height:100svh;overflow:hidden;padding:clamp(48px,7vh,90px) 0 clamp(64px,10vh,120px)}
.desliza{white-space:nowrap;font-weight:800;font-size:calc(clamp(64px,13vw,240px) * var(--display));letter-spacing:-.045em;line-height:.95;opacity:.32;pointer-events:none}
.desliza span{display:inline-block}
.flotas{position:absolute;inset:0;pointer-events:none}
.flota{position:absolute;left:var(--x);top:var(--y);width:var(--w);min-width:70px;aspect-ratio:4/5;object-fit:cover}
.rosa-in{position:relative;padding:clamp(24px,5vh,64px) var(--gutter) 0}
.cifra{font-weight:800;font-size:calc(clamp(120px,22vw,380px) * var(--display));line-height:.85;letter-spacing:-.06em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:.1em;flex-wrap:wrap}
.cifra-de{font-size:.28em;letter-spacing:-.03em}
.rosa-titulo{margin-top:clamp(28px,5vh,56px);font-size:calc(clamp(28px,3.8vw,64px) * var(--display));max-width:16ch;color:var(--rosa-tinta)}
.rosa-texto{margin-top:20px;font-size:clamp(18px,1.6vw,26px);max-width:34ch}

/* ---------- antes y después ---------- */
.cambio{padding:clamp(80px,14vh,180px) 0 0}
.cambio-titulo{padding:0 var(--gutter);font-size:calc(clamp(56px,10vw,176px) * var(--display));margin-bottom:clamp(32px,6vh,72px)}
.cambio-par{position:relative;display:grid;grid-template-columns:1fr 1fr;height:100svh;min-height:520px;margin-bottom:0}
.cambio-par figure{position:relative;overflow:hidden;height:100%}
.cambio-par img{width:100%;height:100%;object-fit:cover}
.cambio-par figcaption{position:absolute;left:var(--gutter);top:24px;font-weight:800;font-size:clamp(13px,1vw,16px);letter-spacing:.06em;text-transform:uppercase;background:var(--negro);color:var(--blanco);padding:8px 12px}
.cambio-despues figcaption{background:var(--rosa);color:var(--rosa-tinta)}
.cambio-rotulo{position:absolute;left:var(--gutter);bottom:5vh;z-index:2;display:flex;align-items:center;gap:20px;font-weight:800;font-size:calc(clamp(40px,7vw,120px) * var(--display));letter-spacing:-.045em;line-height:1;text-shadow:0 2px 24px rgba(0,0,0,.35)}
.cambio-par-h{grid-template-columns:1fr;height:auto;min-height:0}
.cambio-par-h figure{aspect-ratio:906/465;height:auto}
.cambio-par-h .cambio-despues{position:absolute;inset:0}
.cambio-par-h .cambio-despues figcaption{left:auto;right:var(--gutter)}

/* ---------- lista tipográfica ---------- */
.lista{padding:clamp(80px,14vh,180px) var(--gutter)}
.lista-titulo{font-size:clamp(20px,1.6vw,26px);color:var(--rosa);letter-spacing:-.02em;margin-bottom:clamp(24px,4vh,48px)}
.renglones{list-style:none;margin:0;padding:0}
.renglones li{border:0}
.renglones button{width:100%;background:transparent;border:0;padding:clamp(14px,2.2vh,28px) 0;display:flex;align-items:baseline;justify-content:space-between;gap:24px;text-align:left;color:var(--blanco);transition:color .25s}
.renglones button:hover,.renglones button[aria-expanded="true"]{color:var(--rosa)}
.r-txt{font-size:calc(clamp(36px,7.2vw,124px) * var(--display));font-weight:800;letter-spacing:-.045em;line-height:.98}
.r-si{font-weight:800;font-size:clamp(14px,1.1vw,18px);white-space:nowrap;opacity:0;transform:translateX(-10px);transition:opacity .3s,transform .3s var(--ease-out)}
.renglones button:hover .r-si,.renglones button[aria-expanded="true"] .r-si{opacity:1;transform:none}
.r-det{height:0;overflow:hidden}
.r-det>p{font-size:clamp(18px,1.6vw,26px);max-width:44ch;line-height:1.4;padding-bottom:clamp(14px,2.2vh,28px)}
.anima .oferta-titulo .h-linea>span{transform:translateY(112%);transition:transform 1.1s var(--ease)}
.anima .hero-listo .oferta-titulo .h-linea>span,.anima .hero-listo.oferta .oferta-titulo .h-linea>span{transform:none}

/* ---------- números ---------- */
.numeros{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,3vw,48px);padding:0 var(--gutter) clamp(80px,14vh,180px)}
.numero-big{font-weight:800;font-size:calc(clamp(64px,9vw,160px) * var(--display));letter-spacing:-.06em;line-height:.9;font-variant-numeric:tabular-nums;color:var(--rosa)}
.numero-big span{font-size:.5em;letter-spacing:-.02em;margin-left:.06em}
.numero-txt{margin-top:14px;font-weight:800;font-size:clamp(15px,1.2vw,20px);max-width:14ch}

/* ---------- proceso ---------- */
.proceso{position:relative;overflow:hidden;min-height:100svh;display:flex;align-items:end;padding:clamp(80px,14vh,180px) var(--gutter) clamp(60px,10vh,120px)}
.proceso-fondo{position:absolute;inset:-10% 0;z-index:0;opacity:.55}
.proceso-fondo img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.proceso::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.88) 70%)}
.proceso-in{position:relative;z-index:2;width:100%}
.proceso-titulo{font-size:calc(clamp(48px,8vw,140px) * var(--display));margin-bottom:clamp(32px,6vh,72px)}
.pasos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,48px)}
.paso-n{display:block;font-weight:800;font-size:calc(clamp(64px,8vw,140px) * var(--display));line-height:.85;letter-spacing:-.06em;color:var(--rosa);margin-bottom:18px}
.pasos h3{font-size:clamp(22px,2vw,32px);line-height:1.1;max-width:16ch}
.pasos p{margin-top:12px;font-size:clamp(16px,1.2vw,19px);max-width:30ch}

/* ---------- voces ---------- */
.voces{padding:clamp(80px,14vh,180px) var(--gutter)}
.voces-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:14ch}
.citas{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,56px);margin-top:clamp(40px,7vh,88px)}
.citas blockquote{margin:0;padding-top:22px;border-top:3px solid var(--rosa)}
.citas p{font-size:calc(clamp(26px,2.6vw,46px) * var(--display));font-weight:800;letter-spacing:-.035em;line-height:1.05;text-wrap:balance}
.citas footer{margin-top:18px;font-size:16px;font-weight:800;color:var(--rosa)}
.equipo{display:grid;grid-template-columns:5fr 7fr;gap:clamp(28px,5vw,90px);align-items:center;margin-top:clamp(64px,12vh,160px)}
.equipo figure{aspect-ratio:877/719;overflow:hidden}
.equipo img{width:100%;height:100%;object-fit:cover}
.equipo h3{font-size:calc(clamp(32px,4.2vw,72px) * var(--display));max-width:14ch}
.equipo p{margin-top:22px;font-size:clamp(18px,1.4vw,23px);max-width:44ch}

/* ---------- oferta ---------- */
.oferta{min-height:100svh;background:var(--humo)}
.oferta-texto{width:min(100%,calc(760px + 2 * var(--gutter)));margin-inline:auto;padding:clamp(64px,10vh,120px) var(--gutter)}
.oferta-titulo{font-size:calc(clamp(40px,5.6vw,96px) * var(--display));max-width:12ch}
.oferta-lead{margin-top:22px;font-size:clamp(18px,1.5vw,24px);max-width:36ch}
.forma{margin-top:clamp(32px,5vh,56px);display:flex;flex-direction:column;gap:26px;max-width:720px}
.campo{border:0;margin:0;padding:0;min-width:0}
.campo label,.campo legend{display:block;font-weight:800;font-size:16px;margin-bottom:12px;padding:0}
.campo input[type="text"],.campo input[type="tel"]{width:100%;background:#231f23;border:0;border-radius:10px;padding:20px 22px;font-size:clamp(20px,1.6vw,26px);font-weight:800;letter-spacing:-.02em;color:var(--blanco);transition:background-color .2s,box-shadow .2s}
.campo input[type="text"]:focus,.campo input[type="tel"]:focus{background:#2c272c;box-shadow:0 0 0 1px rgba(236,184,204,.6)}
.campo input:focus-visible{outline:2px solid var(--rosa);outline-offset:2px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip-op{position:relative}
.chip-op input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.chip-op span{display:inline-block;padding:14px 20px;border-radius:999px;background:#231f23;font-weight:800;font-size:clamp(15px,1.1vw,18px);transition:background-color .2s,color .2s,transform .16s var(--ease-out)}
.chip-op:hover span{background:#322c32}
.chip-op input:checked+span{background:var(--rosa);color:var(--rosa-tinta)}
.chip-op input:focus-visible+span{outline:2px solid var(--rosa);outline-offset:2px}
.chip-op:active span{transform:scale(.96)}
.error{margin-top:8px;font-size:15px;font-weight:800;color:#ff9db4}
.campo.invalido input[type="text"],.campo.invalido input[type="tel"]{box-shadow:0 0 0 1px #ff9db4}
.miel{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.btn-grande{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:22px 28px;border-radius:10px;border:0;background:var(--rosa);color:var(--rosa-tinta);font-weight:800;font-size:clamp(19px,1.5vw,24px);transition:transform .16s var(--ease-out),background-color .2s}
.btn-grande:hover{background:#f1cbda}.btn-grande:active{transform:scale(.98)}
.forma-nota{font-size:15px;max-width:46ch}
.forma-nota a{color:var(--rosa);font-weight:800}
.forma-nota a:hover,.legal a:hover,.oferta-otros a:hover,.pie-fila a:hover,.pie-base a:hover{color:var(--blanco)}
.forma-ok{margin-top:clamp(32px,5vh,56px);max-width:600px}
.forma-ok h3{font-size:clamp(28px,3vw,48px)}
.forma-ok p{margin:18px 0 26px;font-size:20px}

/* ---------- pie ---------- */
.pie{padding:clamp(56px,8vh,96px) var(--gutter) 40px;overflow:hidden}
.pie-marca img{width:100%;height:auto;max-width:none}
.pie-marca-chica img{width:160px}
.anima .pie-marca-chica img{clip-path:none;transition:none}
.pie-fila{display:flex;flex-wrap:wrap;gap:12px 40px;margin-top:clamp(24px,4vh,40px);font-weight:800;font-size:clamp(16px,1.3vw,22px)}
.pie-fila a:hover{color:var(--rosa)}
.pie-base{display:flex;flex-wrap:wrap;gap:8px 32px;margin-top:clamp(28px,4vh,48px);font-size:14px;font-weight:800}
.pie-base a:hover{color:var(--rosa)}
.pie-base a:last-child{margin-left:auto}

/* ---------- animaciones (solo con html.anima) ---------- */
.anima .h-linea>span{transform:translateY(112%);transition:transform 1.1s var(--ease)}
.anima .hero-listo .hero-linea .h-linea>span,.anima .cambio-titulo.in .h-linea>span{transform:none}
.anima .hero-linea .h-linea:nth-child(2)>span,.anima .cambio-titulo .h-linea:nth-child(2)>span{transition-delay:.1s}
.anima .hero-media .settle{transform:scale(1.12);transition:transform 2s var(--ease-out)}
.anima .hero-listo .hero-media .settle{transform:scale(1)}
.anima .hero-marca{opacity:0;transform:translateY(-16px);transition:opacity 1.2s var(--ease-out) .2s,transform 1.2s var(--ease-out) .2s}
.anima .hero-listo .hero-marca{opacity:1;transform:none}
.anima .hero-accion{opacity:0;transition:opacity .8s .9s}
.anima .hero-listo .hero-accion{opacity:1}
.anima [data-rv]{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease-out),transform 1s var(--ease-out)}
.anima [data-rv].in{opacity:1;transform:none}
.anima .citas blockquote:nth-child(2),.anima .numero:nth-child(2),.anima .pasos li:nth-child(2){transition-delay:.12s}
.anima .citas blockquote:nth-child(3),.anima .numero:nth-child(3),.anima .pasos li:nth-child(3){transition-delay:.24s}
.anima .numero:nth-child(4){transition-delay:.36s}
.anima .renglones li:nth-child(2){transition-delay:.08s}.anima .renglones li:nth-child(3){transition-delay:.16s}.anima .renglones li:nth-child(4){transition-delay:.24s}
.anima .par-asim figure img{transform:scale(1.08);transition:transform 1.6s var(--ease-out)}
.anima .par-asim.in figure img{transform:scale(1)}
.anima .frase-big .palabra{opacity:.3}
.anima .frase-big .palabra.on,.anima.sin-scrub .frase-big .palabra{opacity:1}
.anima .cambio-despues img{clip-path:inset(0 100% 0 0)}
.anima .sin-scrub .cambio-despues img,.anima.sin-scrub .cambio-despues img{clip-path:inset(0);transition:clip-path 1.6s var(--ease)}
.anima .cambio-par.in.sin-scrub .cambio-despues img{clip-path:inset(0)}
.anima .pie-marca img{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--ease)}
.anima .pie-marca.in img{clip-path:inset(0)}

@media (prefers-reduced-motion:reduce){
  .anima .h-linea>span,.anima .hero-media .settle,.anima .hero-marca,.anima .hero-accion,.anima [data-rv],.anima .par-asim figure img,.anima .frase-big .palabra,.anima .cambio-despues img,.anima .pie-marca img,.anima .hero-inicio .h-letra,.anima .hero-inicio .hero-e-foto,.menu,.menu-paginas a,.menu-datos,.anima .portada-titulo .h-linea>span{transition:none!important;transform:none!important;opacity:1!important;clip-path:none!important}
  .anima .hero-inicio::after{display:none}
  .desliza span,.flota,[data-plx]{transform:none!important}
}

/* ---------- pantallas ---------- */
@media (max-width:980px){
  .par-grande{grid-column:1/10}
  .par-chica{grid-column:8/13;margin-top:clamp(200px,40vh,420px)}
  .citas{grid-template-columns:1fr}
  .equipo{grid-template-columns:1fr}
  .oferta-texto{padding:clamp(48px,8vh,80px) var(--gutter)}
  .pasos{grid-template-columns:1fr;gap:36px}
  .proceso{align-items:start}
  .numeros{grid-template-columns:1fr 1fr}
  .cambio-par{grid-template-columns:1fr 1fr;height:70svh}
  .cambio-par-h{height:auto;min-height:0}
  .cambio-rotulo{font-size:calc(clamp(34px,9vw,80px) * var(--display))}
}
@media (max-width:640px){
  .barra{grid-template-columns:auto 1fr auto}
  .menu-btn-txt{display:none}
  .barra-marca{justify-self:center}
  .barra-marca img{width:124px}
  .barra-cta{padding:10px 14px;font-size:14px}
  .hero{min-height:0;height:100svh;padding-bottom:6vh}
  .hero-media img{object-position:50% 10%}
  .hero-marca img{width:78vw}
  .hero-linea{font-size:clamp(22px,6.4vw,30px);max-width:16ch}
  .hero-accion{position:static;margin-top:16px;justify-self:start;grid-row:4}
  .frase-big{font-size:calc(clamp(30px,8.6vw,48px) * var(--display))}
  .par-asim{grid-template-columns:1fr;gap:16px}
  .par-grande,.par-chica{grid-column:1;margin-top:0}
  .par-chica{width:72%;margin-left:auto}
  .cifra{font-size:calc(clamp(100px,34vw,180px) * var(--display))}
  .flota{min-width:56px;width:clamp(56px,22vw,110px)}
  /* (las fotos flotantes del bloque rosa se acomodan en su propia franja: ver
     «TELÉFONO: REPASO DE ADAPTABILIDAD» al final de esta hoja) */
  /* EL PAR SE MIDE POR PROPORCIÓN, NO POR ALTO (23-sep-2026). Con 64svh cada
     columna era 195×540 y de cada foto 3:4 se veía el 48 % del ancho; con alto
     fijo, además, el recorte cambiaba con cada teléfono. Con 9/10 se ve el 60 %,
     el umbral del cerebro (interfaces, «Imagen y recorte»), y el par pesa 433 px
     en vez de 540. */
  .cambio-par{height:auto;min-height:0;aspect-ratio:9/10}
  .cambio-par-h{height:auto;min-height:0;aspect-ratio:auto}
  /* el rótulo de la fachada va debajo de la foto: sin gutter pegaba al borde (x=0) */
  /* y con AIRE abajo (24-sep-2026, Diego: «"Vendida" sale amontonada con las fotos»): sin
     espacio debajo, el par siguiente arrancaba pegado y el rótulo quedaba embarrado entre dos
     fotos. Más cerca de la foto que nombra (arriba) que de la siguiente (abajo). */
  .cambio-par-h .cambio-rotulo{position:static;padding:16px var(--gutter) 32px;text-shadow:none}
  .cambio-rotulo{gap:12px;font-size:calc(clamp(30px,9vw,44px) * var(--display))}
  /* «Antes» y «Después» a la talla de la ficha «Vendida» (13 px); a 11 eran lo más chico de la página */
  .cambio-par figcaption{top:12px;font-size:13px}
  .r-txt{font-size:calc(clamp(30px,9.6vw,44px) * var(--display))}
  /* «Sí la compramos» en escritorio sale al pasar el cursor; al tacto no hay
     cursor, así que en teléfono va siempre, debajo de cada situación, en rosa */
  .lista .renglones button{flex-direction:column;align-items:flex-start;gap:6px}
  .lista .r-si{display:block;opacity:1;transform:none;font-size:15px;color:var(--rosa)}
  .numeros{grid-template-columns:1fr 1fr;gap:28px 16px}
  .pie-base a:last-child{margin-left:0}
}

/* ---------- portada de página interior (sin hero de foto: titular gigante y una línea, 111 West 57) ---------- */
.portada{padding:calc(var(--barra-h) + clamp(48px,9vh,110px)) var(--gutter) clamp(40px,7vh,80px)}
.portada-titulo{font-size:calc(clamp(56px,11vw,190px) * var(--display));line-height:.92}
.portada-lead{margin-top:clamp(24px,4vh,44px);font-size:clamp(19px,1.7vw,28px);max-width:44ch;line-height:1.35}
.anima .portada-titulo .h-linea>span{transform:translateY(112%);transition:transform 1.1s var(--ease)}
.anima .hero-listo .portada-titulo .h-linea>span{transform:none}
.anima .portada-titulo .h-linea:nth-child(2)>span{transition-delay:.1s}

/* ---------- puertas: tres columnas con una palabra grande (250 Broadway) ---------- */
.puertas{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,48px);padding:clamp(80px,14vh,180px) var(--gutter) clamp(40px,7vh,80px)}
.puerta{display:flex;flex-direction:column;gap:14px;padding-top:22px;border-top:3px solid var(--rosa);transition:color .25s}
.puerta:hover{color:var(--rosa)}
.puerta-t{font-size:calc(clamp(30px,3.6vw,60px) * var(--display));font-weight:800;letter-spacing:-.04em;line-height:1}
.puerta-d{font-size:clamp(16px,1.2vw,19px);max-width:26ch}
.rosa-link{display:inline-block;position:relative;z-index:0;margin-top:clamp(20px,3vh,32px);font-weight:800;font-size:clamp(17px,1.3vw,22px);padding:.35em .6em;margin-left:-.6em;transition:color .3s var(--ease-out)}
.rosa-link::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--negro);transform:scaleY(0);transform-origin:bottom;transition:transform .42s var(--ease)}
.rosa-link:hover::before{transform:scaleY(1)}
.rosa-link:hover{color:var(--rosa)}

/* ---------- cierre de página ---------- */
.cierre{padding:clamp(80px,14vh,180px) var(--gutter) clamp(72px,12vh,150px);background:var(--humo)}
.cierre-titulo{font-size:calc(clamp(44px,7.4vw,130px) * var(--display));max-width:11ch}
.cierre-lead{margin-top:clamp(20px,3vh,32px);font-size:clamp(18px,1.5vw,24px);max-width:36ch}
.cierre-acciones{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(28px,5vh,48px)}
.cierre .btn-grande{width:auto;padding:22px 34px}
.btn-linea{display:inline-flex;align-items:center;justify-content:center;padding:22px 34px;border-radius:10px;font-weight:800;font-size:clamp(19px,1.5vw,24px);color:var(--blanco);box-shadow:inset 0 0 0 2px var(--blanco);transition:background-color .2s,color .2s,transform .16s var(--ease-out)}
.btn-linea:hover{background:var(--blanco);color:var(--negro)}.btn-linea:active{transform:scale(.98)}

/* ---------- entregas: tres verticales en fila (111 West 57) ---------- */
.entregas{padding:clamp(40px,7vh,80px) var(--gutter) clamp(60px,10vh,120px)}
.entregas-titulo{font-size:calc(clamp(36px,5vw,84px) * var(--display));margin-bottom:clamp(28px,5vh,56px)}
.tres{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,32px)}
.tres figure{overflow:hidden;aspect-ratio:4/5}
.tres img{width:100%;height:100%;object-fit:cover}
.tres figcaption{margin-top:12px;font-weight:800;font-size:16px;color:var(--rosa)}

/* ---------- recorridos: casas terminadas en video vertical ----------
   9:16 como vienen grabados; en teléfono la fila se desliza de lado para no
   apilar tres pantallas de video una tras otra. */
.tres.recorridos-fila figure{aspect-ratio:auto;overflow:visible}
.recorridos-fila video{display:block;width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;background:var(--rosa-tinta)}
.oferta-otros{margin-top:clamp(28px,5vh,48px);font-size:16px;max-width:46ch}
.oferta-otros a{color:var(--rosa);font-weight:800}

/* ---------- aviso de privacidad ---------- */
.legal{padding:calc(var(--barra-h) + 48px) var(--gutter) 80px;max-width:860px}
.legal-titulo{font-size:calc(clamp(40px,6vw,96px) * var(--display))}
.legal h2{font-size:clamp(22px,2.2vw,32px);margin-top:44px;color:var(--rosa)}
.legal p,.legal li{margin-top:14px;line-height:1.55;font-size:18px}
.legal ul{padding-left:22px}
.legal a{color:var(--rosa);font-weight:800}
.pendiente{background:var(--humo);padding:16px 18px;border-radius:10px;margin-top:22px}

@media (max-width:980px){.puertas{grid-template-columns:1fr 1fr;gap:28px}.tres{grid-template-columns:1fr 1fr 1fr;gap:8px}}
/* LAS DOS FILAS DE TRES SE DESLIZAN EN TELÉFONO (23-sep-2026). «El día de la
   firma» apilaba sus tres fotos 4:5 a todo el ancho: 1,566 px, casi dos
   pantallas sin una decisión dentro (cerebro-interfaces: en el móvil lo que
   sobra es alto; una rejilla de fotos se vuelve tira deslizable). Ahora usa la
   misma tira que los recorridos de arriba. El revelado va en cada foto, así que
   cuando entra la primera entran todas: una tarjeta a la derecha, fuera de la
   vista, no se queda en blanco esperando su turno. */
@media (max-width:640px){
  .tres{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:72%;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter);scrollbar-width:none}
  .tres::-webkit-scrollbar{display:none}
  .tres figure{scroll-snap-align:start}
  .anima .tres:has(> figure.in) > figure[data-rv]{opacity:1;transform:none}
}
@media (max-width:640px){.menu-paginas{flex-direction:column;gap:2px}.menu-paginas a{font-size:clamp(28px,8vw,40px)}.cierre-acciones{flex-direction:column}.cierre .btn-grande,.btn-linea{width:100%}}

/* ---------- acciones: texto en reposo; al pasar el cursor se despliega un bloque de color detrás (el mismo gesto de la barra) ---------- */
.enlace-grande{display:inline-block;position:relative;background:transparent;border:0;padding:.28em .55em;margin-left:-.55em;color:var(--rosa);font-weight:800;font-size:clamp(22px,2.2vw,36px);letter-spacing:-.03em;line-height:1.05;cursor:pointer;transition:color .3s var(--ease-out);z-index:0}
.enlace-grande::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--rosa);transform:scaleY(0);transform-origin:bottom;transition:transform .42s var(--ease)}
.enlace-grande:hover::before,.enlace-grande:focus-visible::before{transform:scaleY(1)}
.enlace-grande:hover,.enlace-grande:focus-visible{color:var(--rosa-tinta);outline:none}
.enlace-blanco{color:var(--blanco)}
.enlace-blanco::before{background:var(--blanco)}
.enlace-blanco:hover{color:var(--negro)}
.rosa-bloque .enlace-grande,.hero-inicio .enlace-grande,.enlace-tinta{color:var(--rosa-tinta)}
.rosa-bloque .enlace-grande::before,.hero-inicio .enlace-grande::before,.enlace-tinta::before{background:var(--negro)}
.rosa-bloque .enlace-grande:hover,.hero-inicio .enlace-grande:hover,.enlace-tinta:hover{color:var(--rosa)}
.cierre-acciones{gap:18px clamp(28px,4vw,64px);align-items:baseline}
.rosa-bloque .enlace-grande{color:var(--rosa-tinta)}
/* opciones del formulario: texto en reposo; la elegida despliega el bloque rosa detrás */
.chips{gap:6px clamp(10px,1.4vw,20px)}
.chip-op span{position:relative;z-index:0;background:transparent;padding:8px 14px;margin-left:-14px;border-radius:0;font-size:clamp(17px,1.35vw,22px);color:var(--blanco);opacity:.8;transition:opacity .2s,color .25s}
.chip-op span::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--rosa);transform:scaleY(0);transform-origin:bottom;transition:transform .36s var(--ease)}
.chip-op:hover span{background:transparent;opacity:1}
.chip-op input:checked+span{background:transparent;color:var(--rosa-tinta);opacity:1}
.chip-op input:checked+span::before{transform:scaleY(1)}
.chip-op input:focus-visible+span{outline:2px solid var(--rosa);outline-offset:2px}
.chip-op:active span{transform:none}
.chip{border-radius:0;padding:.55em .9em}
.forma-ok .enlace-grande{margin-top:6px}
.forma .enlace-grande{align-self:flex-start;margin-top:8px}
.cambio-inicio{padding:0}
.cambio-inicio .cambio-par{margin-bottom:0}

/* ---------- página de variantes de hero ---------- */
.variantes-cabecera{padding:calc(var(--barra-h) + 24px) var(--gutter) 24px;font-weight:800;color:var(--rosa);max-width:70ch}
.variante{position:relative;min-height:100svh;overflow:hidden;border-top:12px solid var(--rosa)}
.var-num{position:absolute;left:var(--gutter);top:calc(var(--barra-h) + 10px);z-index:5;font-weight:800;font-size:clamp(28px,3vw,48px);color:var(--rosa);background:var(--negro);padding:4px 14px}
.var-nota{position:absolute;right:var(--gutter);bottom:18px;z-index:5;font-size:14px;font-weight:800;max-width:38ch;text-align:right;color:var(--blanco);background:rgba(0,0,0,.72);padding:10px 12px}
.hero.variante{padding-top:calc(var(--barra-h) + 2vh)}
.hero.variante .hero-marca img,.hero.variante .hero-media .settle{opacity:1;transform:none}
.hero-b{display:flex;align-items:center;padding:calc(var(--barra-h) + 4vh) var(--gutter) 6vh;background:var(--negro)}
.hero-b-titulo{font-size:clamp(56px,9.5vw,170px);font-weight:800;letter-spacing:-.045em;line-height:.92;max-width:11ch}
.hero-b-linea{margin:clamp(20px,3vh,32px) 0 clamp(24px,4vh,40px);font-size:clamp(18px,1.6vw,26px);max-width:34ch}
.hero-c{display:grid;grid-template-columns:1.1fr .9fr;background:var(--negro)}
.hero-c-texto{padding:calc(var(--barra-h) + 6vh) var(--gutter) 8vh;display:flex;flex-direction:column;justify-content:center;gap:clamp(24px,4vh,40px)}
.hero-c-titulo{font-size:clamp(40px,5.6vw,104px);font-weight:800;letter-spacing:-.04em;line-height:.98;max-width:13ch}
.hero-c-foto{overflow:hidden;min-height:100svh}
.hero-c-foto img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.hero-d{display:flex;align-items:flex-end;padding:0 var(--gutter) 7vh;background:var(--negro)}
.hero-d-media{position:absolute;inset:0}
.hero-d-media img{width:100%;height:100%;object-fit:cover;object-position:50% 45%}
.hero-d-velo{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.2) 40%,rgba(0,0,0,.85))}
.hero-d-titulo{position:relative;font-size:clamp(40px,6.4vw,118px);font-weight:800;letter-spacing:-.04em;line-height:.96;max-width:14ch}
.hero-e{display:grid;grid-template-columns:1.15fr .85fr;background:var(--rosa);color:var(--rosa-tinta);min-height:100svh}
.hero-inicio{padding-top:var(--barra-h);grid-template-columns:1fr 1fr}
.hero-inicio .hero-e-texto{padding-top:6vh}
.hero-inicio .hero-e-foto{position:relative;overflow:hidden;min-height:calc(100svh - var(--barra-h))}
.hero-inicio .hero-e-foto img{position:absolute;inset:-8% 0;height:116%}
.enlace-tinta{color:var(--rosa-tinta);margin-top:clamp(24px,4vh,40px)}
/* Entrada del hero de inicio, propia de Deal: el negro de la barra se retira hacia la derecha como un telón,
   las letras se estampan una por una (suben, giran apenas y asientan), la foto se descubre siguiendo al telón
   y el resto del texto llega al final. Solo transform, opacity y clip-path. Sin JS no hay .anima y todo nace puesto. */
.hero-inicio{position:relative}
.hero-inicio .h-linea{overflow:visible;padding-bottom:0;margin-bottom:0}
.anima .hero-inicio .h-linea>span{transform:none;transition:none}
.h-letra{display:inline-block;transform-origin:0 100%}
.h-palabra{display:inline-block;white-space:nowrap}
.anima .hero-inicio::after{content:"";position:absolute;inset:0;z-index:3;background:var(--negro);clip-path:inset(0);transition:clip-path 1s var(--ease);pointer-events:none}
.anima .hero-inicio.hero-listo::after{clip-path:inset(0 0 0 100%)}
.anima .hero-inicio .h-letra{opacity:0;transform:translateY(.45em) rotate(5deg) scale(.9);transition:transform .8s var(--ease-out),opacity .5s ease-out;transition-delay:calc(.28s + var(--i) * 34ms)}
.anima .hero-inicio.hero-listo .h-letra{opacity:1;transform:none}
.anima .hero-inicio .hero-e-foto{clip-path:inset(0 0 0 100%);transition:clip-path 1.15s var(--ease) .32s}
.anima .hero-inicio.hero-listo .hero-e-foto{clip-path:inset(0)}
.anima .hero-inicio .settle{transform:scale(1.18) translateX(4%);transition:transform 2.2s var(--ease-out) .32s}
.anima .hero-inicio.hero-listo .settle{transform:none}
.anima .hero-inicio:not(.hero-listo) [data-rv]{opacity:0;transform:translateY(28px)}
.anima .hero-inicio .hero-e-linea{transition-delay:1.05s}
.anima .hero-inicio .enlace-grande{transition-delay:1.2s}
.hero-e-texto{padding:calc(var(--barra-h) + 6vh) var(--gutter) 8vh;display:flex;flex-direction:column;justify-content:center}
.hero-e-titulo{font-size:calc(clamp(56px,8.2vw,150px) * var(--display));font-weight:800;letter-spacing:-.045em;line-height:.9;max-width:9ch;margin:0}
.hero-e-blanco{color:var(--blanco)}
.hero-e-linea{margin-top:clamp(20px,3vh,32px);font-size:clamp(18px,1.6vw,26px);max-width:32ch}
.hero-e-foto{overflow:hidden;min-height:100svh}
.hero-e-foto img{width:100%;height:100%;object-fit:cover}
@media (max-width:760px){.hero-c,.hero-e{grid-template-columns:1fr}.hero-c-foto,.hero-e-foto{min-height:60svh}.var-nota{position:static;text-align:left;max-width:none}}
/* ---------- EL HERO EN TELÉFONO (17/18-sep-2026) ----------
   Antes eran DOS pantallas completas: una rosa con el texto centrado en el vacío y
   otra con la foto sola. Diego: «no me gusta cómo sale esa primera parte y segunda
   al abrir la página en celular». Se le enseñaron dos estructuras lado a lado y
   eligió ésta (18-sep, «pues C»): la foto ocupa la primera pantalla y el titular,
   la línea y el botón van encima, sobre una franja rosa que sube en degradado
   desde abajo — degradado solo en la franja donde cae el texto, nunca velo
   parejo sobre toda la imagen (§5.1-bis). Una sola pantalla con todo. */
@media (max-width:760px){
  .hero-inicio{position:relative;display:block;min-height:100svh;background:var(--negro)}
  .hero-inicio .hero-e-foto{position:absolute;inset:0;min-height:0;height:auto}
  .hero-inicio .hero-e-foto img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 18%}
  .hero-inicio .hero-e-texto{position:absolute;left:0;right:0;bottom:0;z-index:2;justify-content:flex-end;padding:clamp(120px,22vh,180px) var(--gutter) calc(28px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--rosa) 0,var(--rosa) 52%,rgba(236,184,204,.55) 78%,rgba(236,184,204,0) 100%)}
  .hero-inicio .hero-e-titulo{font-size:calc(clamp(56px,16vw,80px) * var(--display));max-width:none}
  .hero-inicio .hero-e-blanco{color:var(--blanco)}
  .hero-inicio .hero-e-linea{margin-top:18px;font-size:17px;max-width:34ch}
  .anima .hero-inicio .settle{transform:scale(1.12)}
  .anima .hero-inicio.hero-listo .settle{transform:none}
}
@media (max-width:640px){
  /* EN TELÉFONO LA BARRA ES LOGO + HAMBURGUESA (Diego, 17-sep-2026: «este menú
     debe salir en el menú de hamburguesa, no ahí distribuido»). Los seis enlaces
     repartidos en una segunda fila de 13 px eran una barra de dos pisos que se
     comía 104 px de la primera pantalla. */
  :root{--barra-h:60px}
  .barra{gap:0}
  .barra-marca img{width:124px}
  .barra::after{display:none}
  .barra-links{display:none}
  .menu-btn{display:flex;align-items:center;padding:10px 0 10px 16px}
  .hero-inicio{padding-top:var(--barra-h)}
  /* El menú ocupa toda la pantalla bajo la barra: enlaces apilados, grandes, y
     abajo la oferta y el WhatsApp. Entra con el mismo telón (clip-path) de siempre. */
  .menu{bottom:0;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(24px,5vh,40px) var(--gutter) calc(24px + env(safe-area-inset-bottom));overflow-y:auto}
  .menu-paginas{flex-direction:column;align-items:flex-start;gap:4px}
  .menu-paginas a{font-size:clamp(30px,9vw,44px)}
  .menu-datos{flex-direction:column;gap:12px;font-size:17px}
}

/* ═══════════════════════════════════════════════════════════════════════
   CORTINA DE ACCESO — temporal, mientras el sitio no se abre al público.
   Al revés que una cortina de bienvenida: ésta NACE PUESTA y el JS sólo la
   RETIRA. Por eso el bloqueo de scroll va aquí y no en el script: si el JS
   falla, una puerta tiene que quedarse CERRADA, no abierta.
   Se quita borrando este bloque y los tres de generar.mjs.
   ═══════════════════════════════════════════════════════════════════════ */
html:not([data-abierto]) body{overflow:hidden}
html[data-abierto] .cortina{display:none}

.cortina{
  position:fixed; inset:0; z-index:2147483000;
  /* flex + margin auto en la caja, NO place-items:center: con el centrado de grid, un
     contenido más alto que la ventana se corta arriba y abajo sin poder alcanzarse
     (medido: a 380px de alto el botón Entrar quedaba fuera). Con margin auto se centra
     igual y, cuando desborda, se puede llegar a los dos extremos. */
  display:flex; align-items:center; justify-content:center;
  padding:var(--gutter);
  background:var(--negro);
  color:var(--blanco);
  overflow-y:auto;
}
.cortina-caja{width:min(560px,100%); margin:auto; text-align:left}
.cortina-marca{
  margin:0 0 clamp(20px,4vh,38px);
  font-size:12px; font-weight:800;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--rosa);
}
.cortina-titulo{
  margin:0 0 18px;
  font-size:clamp(34px,7vw,62px); font-weight:800;
  line-height:1.02; letter-spacing:-.02em;
}
.cortina-lead{
  margin:0 0 clamp(26px,5vh,40px);
  max-width:44ch;
  font-size:clamp(15px,1.7vw,17px); font-weight:500;
  line-height:1.55; color:rgba(248,248,248,.62);
}
.cortina-forma{display:flex; flex-wrap:wrap; gap:10px}
.cortina-campo{
  flex:1 1 220px; min-width:0;
  height:54px; padding:0 18px;
  font:500 16px/1 var(--font);        /* 16px o iOS hace zoom al enfocar */
  color:var(--blanco);
  background:transparent;
  border:1px solid rgba(248,248,248,.22);
  border-radius:0;
  outline:none;
  transition:border-color .22s var(--ease-out);
  -webkit-appearance:none; appearance:none;
}
.cortina-campo::placeholder{color:rgba(248,248,248,.38)}
.cortina-campo:focus{border-color:var(--rosa)}
.cortina-boton{
  height:54px; padding:0 30px;
  font:800 14px/1 var(--font);
  letter-spacing:.06em; text-transform:uppercase;
  color:var(--rosa-tinta);
  background:var(--rosa);
  border:0; border-radius:0; cursor:pointer;
  transition:transform .22s var(--ease-out), opacity .22s var(--ease-out);
}
.cortina-boton:hover{opacity:.86}
.cortina-boton:active{transform:scale(.97)}
.cortina-error{
  margin:16px 0 0; min-height:1.2em;
  font-size:14px; font-weight:500; color:var(--rosa);
}
/* Salida: sólo opacity y transform, que no recalculan la página (§7-bis) */
.cortina-sale{
  opacity:0; transform:translateY(-14px);
  transition:opacity .42s var(--ease), transform .42s var(--ease);
  pointer-events:none;
}
@media (prefers-reduced-motion:reduce){
  .cortina-sale{transition-duration:.01ms}
  .cortina-boton,.cortina-campo{transition:none}
}

/* ---------- LA AGENDA DE LA LLAMADA: SE ELIGE EL DÍA (23-sep-2026) ----------

   El mes a la izquierda y, donde antes iban las horas, el día elegido dicho en
   grande con lo que va a pasar. Diego pidió elegir por DÍA, de lunes a viernes,
   con un calendario «como el de la página de FG, adaptado a Deal».

   De FG se toma la FORMA: casillas rellenas para lo que se puede elegir, lo
   demás apagado y la elegida con el color invertido. De Deal, la PIEL: casillas
   cuadradas como el tablero de la portada, la elegida en rosa lleno con tinta,
   hoy con un anillo rosa, y sábados y domingos apagados, NO escondidos
   (cerebro-interfaces, catálogo 9). Sin caja alrededor, como el resto del
   formulario de la variante 1. */
.cita-dicho{margin:0 0 18px;font-size:16px;color:#9a929a;max-width:52ch}
/* EL MES A LO ANCHO (Diego, 23-sep-2026: «lo veo muy a la izquierda, muy esquinado»).
   Con 440 px el calendario ocupaba un tercio y dejaba un hueco a la derecha del
   día elegido. Ahora el mes toma más de la mitad y sus casillas son rectángulos
   (no cuadrados): se estira a los lados sin volverse una torre. */
/* la columna del día se estira al alto del mes: el día arriba, a la altura del
   nombre del mes, y los botones abajo, al ras de la última semana */
.agenda{display:grid;grid-template-columns:minmax(0,620px) minmax(0,1fr);gap:clamp(32px,6vw,112px);align-items:stretch}
.agenda-mes{display:flex;align-items:center;gap:4px;margin-bottom:14px}
.agenda-mes p{margin:0 auto 0 0;font-weight:800;font-size:clamp(18px,1.6vw,26px);letter-spacing:-.02em}
.agenda-mes p::first-letter{text-transform:uppercase}
.agenda-flecha{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:0;background:transparent;color:var(--blanco);cursor:pointer;transition:background-color .2s var(--ease-out),opacity .2s var(--ease-out),transform .16s var(--ease-out)}
.agenda-flecha:hover{background:#2c272c}
.agenda-flecha:active{transform:scale(.94)}
.agenda-flecha:disabled{opacity:.25;cursor:default;background:transparent;transform:none}
.agenda-flecha:focus{outline:none}
.agenda-flecha:focus-visible,.agenda-d:focus-visible{outline:2px solid var(--rosa);outline-offset:2px}
.agenda-semana,.agenda-dias{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.agenda-semana span{text-align:center;font-size:13px;font-weight:800;letter-spacing:.04em;color:#8a828a;padding:6px 0}
.agenda-d{aspect-ratio:auto;height:clamp(42px,5.8vh,60px);min-height:40px;display:grid;place-items:center;border:0;border-radius:0;background:#231f23;color:var(--blanco);font:inherit;font-weight:800;font-size:clamp(16px,1.3vw,20px);font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color .2s var(--ease-out),color .2s var(--ease-out),transform .16s var(--ease-out)}
.agenda-d:focus{outline:none}
.agenda-d:hover{background:#322c32}
.agenda-d:active{transform:scale(.94)}
.agenda-d.hoy{box-shadow:inset 0 0 0 2px rgba(236,184,204,.6)}
.agenda-d[aria-pressed="true"]{background:var(--rosa);color:var(--rosa-tinta);box-shadow:none}
.agenda-d:disabled{background:transparent;color:#4d464d;font-weight:500;cursor:default;transform:none}
.agenda-resumen{display:flex;flex-direction:column;padding-top:4px}
.agenda-resumen p{margin:0}
.agenda-resumen-rot{font-weight:500;font-size:clamp(18px,1.6vw,26px);line-height:1.3;color:var(--blanco)}
.agenda-resumen .agenda-resumen-dia{margin-top:6px;font-weight:800;font-size:calc(clamp(26px,2.6vw,46px) * var(--display));letter-spacing:-.04em;line-height:1.1;color:var(--rosa)}
.agenda-resumen .agenda-resumen-nota{margin-top:18px;font-size:clamp(16px,1.3vw,22px);line-height:1.4;color:#cfc8cf;max-width:34ch}
@media (max-width:900px){.agenda{grid-template-columns:1fr}}
@media (max-width:640px){.agenda-semana,.agenda-dias{gap:4px}.agenda .agenda-d{height:auto;aspect-ratio:1;min-height:42px}}

/* ---------- EL FORMULARIO EN CUATRO PASOS (16-sep-2026) ----------

   La forma viene del panel; la piel es la de esta página. Los campos, los chips
   y el rosa son los que ya estaban: lo único nuevo es el andamio del paso —la
   barra, el rótulo y el titular de cada pregunta— y una lista desplegable con
   la misma cara que los campos de texto.

   TODO SE MUEVE CON `transform` Y `opacity`, y cuelga de la misma curva que ya
   usa el sitio (`--ease-out`). Una animación bien hecha que no comparte reloj
   con sus vecinas es justo lo que hace que una página se sienta a saltos. */
.paso-progreso{height:4px;background:#1a161a;border-radius:2px;overflow:hidden;margin-bottom:22px;max-width:760px}
.paso-progreso i{display:block;height:100%;background:var(--rosa);transform-origin:left center;transform:scaleX(.25);transition:transform .52s var(--ease-out)}
.paso-rotulo{margin:0 0 10px;color:var(--rosa);font-weight:800;font-size:14px;letter-spacing:.02em}
.paso-titulo{margin:0 0 10px;font-size:clamp(27px,2.8vw,38px);font-weight:800;line-height:1.1;letter-spacing:-.03em}
.paso-dicho{margin:0;color:#9a929a;font-size:clamp(16px,1.15vw,17px);max-width:52ch}
/* `position` + `z-index` a propósito: el botón «Continuar» (`.enlace-grande`)
   trae z-index:0 y viene DESPUÉS en el marcado, así que sin esto se pintaba
   ENCIMA de la capa del desplegable, que vive dentro del paso (medido en
   captura: «Continuar» atravesaba la lista de municipios). */
.paso{display:flex;flex-direction:column;gap:22px;position:relative;z-index:2}
/* UN `display` EXPLÍCITO GANA AL `[hidden]` DEL NAVEGADOR, así que sin esta
   línea los cuatro pasos se pintan a la vez aunque el JS los marque ocultos.
   El `[hidden]` del user-agent es `display:none` con la especificidad más baja
   que existe: cualquier regla propia con display lo pisa. Vale para todo
   elemento al que se le dé display y se oculte por atributo. */
.paso[hidden],.forma[hidden],.forma-ok[hidden],#cita legend[hidden],#cita .cita-dicho[hidden]{display:none}

/* LA LISTA, PROPIA DE PUNTA A PUNTA (17-sep-2026). Hasta el 16-sep el campo
   tenía nuestra piel pero al abrirse el navegador pintaba SU menú —azul de
   sistema, otra letra—, y Diego lo cazó en la primera captura. Ahora el botón,
   la capa y las opciones son de esta página (cerebro-interfaces §6, «Select»).

   El `<select>` de verdad sigue en el marcado: sin JS es lo que se ve, y por
   eso conserva su piel. Con JS app.js lo esconde (`.desp-nativa`) y monta
   esto encima; el valor se sigue guardando en él.

   SE LLAMAN `desp-` Y NO `lista-` PORQUE `.lista` YA EXISTÍA en este sitio y le
   heredaba 180px de relleno al campo (medido en la primera captura). Antes de
   estrenar una clase, `grep` del nombre. */
.campo select{width:100%;background:#231f23;border:0;border-radius:10px;padding:16px 48px 16px 18px;font:inherit;font-size:clamp(17px,1.2vw,19px);font-weight:500;letter-spacing:-.01em;color:var(--blanco);cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 16 16' fill='none' stroke='%23ecb8cc' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 18px center;background-size:20px 20px;transition:background-color .2s}
.campo select:focus{background-color:#2c272c;outline:0}
.campo select:focus-visible{outline:2px solid var(--rosa);outline-offset:2px}
.campo select:invalid,.campo select option[value=""]{color:#6e666e}
.campo select.desp-nativa{position:absolute;width:1px;height:1px;padding:0;opacity:0;pointer-events:none;overflow:hidden}

.desp{position:relative}
.desp-boton{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;background:#231f23;border:0;border-radius:10px;padding:16px 18px;font:inherit;font-size:clamp(17px,1.2vw,19px);font-weight:500;letter-spacing:-.01em;text-align:left;color:#8a828a;cursor:pointer;transition:background-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.desp-boton.con-valor{color:var(--blanco)}
.desp-boton:hover{background:#2a252a}
.desp.abierta .desp-boton{background:#2c272c;box-shadow:0 0 0 1px rgba(236,184,204,.6)}
.desp-boton:focus-visible{outline:2px solid var(--rosa);outline-offset:2px}
.desp-valor{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.desp-chevron{flex:none;color:var(--rosa);transition:transform .24s var(--ease-out)}
.desp.abierta .desp-chevron{transform:rotate(180deg)}
.campo.invalido .desp-boton{box-shadow:0 0 0 1px #ff9db4}

.desp-menu{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 8px);max-height:min(360px,52vh);overflow-y:auto;overscroll-behavior:contain;padding:6px;background:#262126;border-radius:12px;box-shadow:0 0 0 1px rgba(255,255,255,.07),0 18px 44px -12px rgba(0,0,0,.7);transform-origin:top center}
.desp-menu.arriba{top:auto;bottom:calc(100% + 8px);transform-origin:bottom center}
.desp-menu[hidden],.desp-velo[hidden]{display:none}
.desp-asa,.desp-titulo{display:none}
.desp-op{display:flex;align-items:flex-start;gap:10px;padding:12px 12px;border-radius:8px;font-size:16px;font-weight:500;line-height:1.3;color:var(--blanco);cursor:pointer;transition:background-color .14s var(--ease-out)}
.desp-op.activa{background:#342d34}
.desp-op[aria-selected="true"]{font-weight:800}
/* La palomita SIEMPRE ocupa su sitio y solo cambia de opacidad: si entrara y
   saliera del flujo, el texto de la opción elegida brincaría a la derecha. */
.desp-palomita{flex:none;margin-top:2px;color:var(--rosa);opacity:0}
.desp-op[aria-selected="true"] .desp-palomita{opacity:1}

/* EN TELÉFONO, HOJA INFERIOR: una capa anclada a un campo que está a media
   pantalla se sale por abajo y, con el teclado fuera, la mitad no se alcanza.
   app.js la muda al <body> mientras está abierta (ver la nota ahí). */
.desp-velo{position:fixed;inset:0;z-index:2147482000;background:rgba(0,0,0,.6)}
.desp-menu.hoja{position:fixed;z-index:2147482001;left:0;right:0;top:auto;bottom:0;max-height:72svh;padding:8px 12px calc(16px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;box-shadow:0 -18px 44px -12px rgba(0,0,0,.7);font-family:inherit}
.desp-menu.hoja .desp-asa{display:block;width:40px;height:4px;border-radius:2px;background:#4d464d;margin:4px auto 12px}
.desp-menu.hoja .desp-titulo{display:block;margin:0 12px 8px;font-size:14px;font-weight:800;color:#9a929a}
.desp-menu.hoja .desp-op{padding:15px 12px;font-size:17px}

.forma-acciones{display:flex;flex-wrap:wrap;align-items:center;gap:10px clamp(20px,3vw,40px)}
.enlace-volver{background:none;border:0;padding:0;font:inherit;font-weight:800;font-size:16px;color:#9a929a;cursor:pointer;transition:color .2s var(--ease-out)}
.enlace-volver:hover{color:var(--blanco)}

/* ---------- LA ESCALA DEL FORMULARIO (17-sep-2026) ----------

   Diego, sobre esta pantalla: «hay fuente muy pequeña y, al mismo tiempo,
   fuente muy grande». Medido: el botón llegaba a 36 px y el titular a 46, lo
   que se teclea iba a 26 en peso 800, y la letra chica a 15. Entre 15 y 26 no
   había NADA, y un botón pesaba casi lo mismo que el titular de la pregunta.

   La escala nueva tiene cuatro escalones y cada uno hace un trabajo:
     38  la pregunta del paso        (uno solo por pantalla)
     24  el botón que avanza         (segundo en jerarquía, no empate)
     17–19  lo que la persona lee y teclea: campos, listas, bajada
     14–15  rótulos, ayudas, errores y la nota legal
   Lo tecleado baja a peso 500: en 800 y a ese tamaño, tres campos llenos
   gritaban más que el titular. Los rótulos se quedan en 800, que es lo que los
   separa del valor sin necesidad de hacerlos más grandes.

   VA AL FINAL Y CON `.oferta` DELANTE a propósito: `.enlace-grande` y `.campo`
   son piezas de todo el sitio, y esto solo afina el formulario. */
.oferta .forma{gap:22px;max-width:760px}
.oferta .campo label,.oferta .campo legend{font-size:15px;margin-bottom:10px}
.oferta .campo input[type="text"],.oferta .campo input[type="tel"]{padding:16px 18px;font-size:clamp(17px,1.2vw,19px);font-weight:500;letter-spacing:-.01em}
.oferta .campo input::placeholder{color:#8a828a;font-weight:500}
.oferta .forma .enlace-grande,.oferta .forma-ok .enlace-grande{font-size:clamp(20px,1.55vw,24px)}
/* LOS DOS BOTONES SE ASIENTAN EN EL MISMO RENGLÓN (`baseline`), no se centran
   por caja. Medido el 17-sep: «Volver» quedaba 6.4 px más arriba que «Apartar
   mi llamada» y Diego lo vio «desfasado». Dos causas: `align-items:center`
   centra CAJAS, y con dos tamaños de letra los centros coinciden pero los
   renglones no; y el botón rosa arrastraba `align-self:flex-start` +
   `margin-top:8px` de cuando era hijo directo del formulario y estaba solo. */
.oferta .forma-acciones{margin-top:4px;align-items:baseline}
.oferta .forma-acciones .enlace-grande{align-self:auto;margin-top:0}
.oferta .error{font-size:14px}
.ayuda{margin:8px 0 0;font-size:14px;color:#9a929a;max-width:52ch}


/* ---------- EMILIANO, la segunda pantalla del inicio (17-sep-2026) ---------- */
.emiliano{display:grid;grid-template-columns:5fr 7fr;gap:clamp(28px,5vw,90px);align-items:center;padding:clamp(80px,14vh,180px) var(--gutter) 0}
.emiliano-foto{aspect-ratio:4/5;height:min(70svh,640px);width:auto;justify-self:start}
.emiliano-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:12ch}
.emiliano-p{margin-top:22px;font-size:clamp(18px,1.4vw,23px);max-width:44ch}
.emiliano-p+.emiliano-p{margin-top:14px}
.emiliano .enlace-grande{margin-top:26px}

/* ---------- HISTORIAS: el carrusel de testimonios (17-sep-2026) ----------
   SIN JS: lista apilada, todo visible, sin mandos. CON JS (html.anima): una
   pista horizontal que se mueve con transform, nunca con scroll-left ni
   márgenes (§7-bis: transform es gratis). El avance automático lo lleva una
   barra que crece con scaleX; se pausa junto con el carrusel. */
/* Sobre humo, no sobre negro: Diego pidió que se vea «muy notable», y en esta
   página el humo es la superficie que separa un bloque del resto (el cierre). */
.historias{padding:clamp(72px,12vh,150px) var(--gutter) clamp(48px,8vh,96px);background:var(--humo)}
.historias-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:12ch;margin-bottom:clamp(28px,5vh,56px)}
.historias-pista{display:grid;gap:clamp(40px,7vh,88px)}
.historia{display:grid;grid-template-columns:5fr 7fr;gap:clamp(24px,4vw,72px);align-items:center}
/* Alto fijo y ancho derivado (justify-self evita el estirado de la rejilla, que
   rompería la proporción): así la historia completa cabe en una pantalla con su
   título y sus mandos, que es la condición para que un carrusel se lea. */
.historia-foto{aspect-ratio:4/5;height:min(50svh,460px);width:auto;justify-self:start}
.historia-cita{margin:0}
.historia-cita p{font-size:calc(clamp(30px,3.6vw,64px) * var(--display));font-weight:800;letter-spacing:-.035em;line-height:1.04;text-wrap:balance}
.historia-cita footer{display:flex;flex-direction:column;gap:2px;margin-top:clamp(20px,3vh,32px);padding-top:18px;border-top:3px solid var(--rosa);max-width:36ch;font-size:16px}
.historia-cita footer strong{font-weight:800;color:var(--rosa)}
.historia-cita footer span{color:#9a929a}
.historias-mandos{display:none}
.anima .historias-marco{overflow:hidden}
.anima .historias-pista{display:flex;gap:0;transition:transform .7s var(--ease);will-change:auto}
.anima .historia{flex:0 0 100%;min-width:0}
.anima .historias-mandos{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:8px 14px;margin-top:clamp(24px,4vh,40px)}
.historias-flecha{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:0;background:transparent;color:var(--blanco);cursor:pointer;transition:color .2s var(--ease-out),transform .16s var(--ease-out)}
.historias-flecha:hover{color:var(--rosa)}
.historias-flecha:active{transform:scale(.94)}
.historias-flecha:focus-visible,.historias-punto:focus-visible{outline:2px solid var(--rosa);outline-offset:2px}
.historias-puntos{display:flex;gap:6px;padding-left:8px}
.historias-punto{width:28px;height:44px;border:0;padding:0;background:transparent;cursor:pointer;position:relative}
.historias-punto::before{content:"";position:absolute;left:0;right:0;top:20px;height:4px;background:#3a333a;transition:background-color .25s var(--ease-out),transform .25s var(--ease-out)}
.historias-punto:hover::before{background:#6a5f6a}
.historias-punto[aria-selected="true"]::before{background:var(--rosa)}
.historias-contador{margin:0;font-weight:800;font-size:15px;color:#9a929a;font-variant-numeric:tabular-nums}
.historias-barra{grid-column:1/-1;height:3px;background:#1a161a;overflow:hidden}
.historias-barra i{display:block;height:100%;background:var(--rosa);transform-origin:left center;transform:scaleX(0)}
.historias-barra i.corre{animation:historia-avanza var(--historia-ms,6500ms) linear forwards}
.historias.pausado .historias-barra i.corre{animation-play-state:paused}
@keyframes historia-avanza{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.historias-marco{cursor:grab}
.historias-marco.arrastrando{cursor:grabbing}
.historias-marco.arrastrando .historias-pista{transition:none}

/* ---------- QUÉ SÍ COMPRAMOS Y QUÉ NECESITAMOS (17-sep-2026) ---------- */
.sino{padding:clamp(40px,7vh,80px) var(--gutter) clamp(80px,14vh,180px)}
.sino-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:14ch;margin-bottom:clamp(36px,6vh,72px)}
.sino-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,90px)}
.sino-col h3{font-size:clamp(20px,1.6vw,26px);padding-top:18px;border-top:3px solid var(--rosa);color:var(--rosa)}
.sino-col ul{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px}
.sino-col li{font-size:clamp(18px,1.4vw,23px);line-height:1.35;max-width:38ch;padding-left:26px;position:relative}
.sino-col li::before{content:"";position:absolute;left:0;top:.62em;width:12px;height:3px;background:var(--rosa)}

/* ---------- PREGUNTAS FRECUENTES (17-sep-2026): el acordeón de /tu-casa en tamaño de pregunta ---------- */
.faq{padding:clamp(80px,14vh,180px) var(--gutter) clamp(60px,10vh,140px)}
.faq-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:12ch;margin-bottom:clamp(24px,4vh,48px)}
.faq-lista{max-width:1100px;border-top:1px solid #2a252a}
.faq-lista li{border-bottom:1px solid #2a252a}
.faq-lista button{align-items:center;padding:clamp(18px,2.6vh,30px) 0}
.faq-lista .r-txt{font-size:calc(clamp(22px,2.4vw,44px) * var(--display));letter-spacing:-.03em;line-height:1.06}
.r-mas{flex:none;font-weight:500;font-size:clamp(28px,2.4vw,40px);line-height:1;color:var(--rosa);transition:transform .35s var(--ease-out)}
.renglones li.abierto .r-mas{transform:rotate(45deg)}
.faq-lista .r-det>p{font-size:clamp(17px,1.3vw,21px);max-width:60ch;padding-bottom:clamp(18px,2.6vh,30px);color:#cfc8cf}

/* ---------- NOSOTROS (17-sep-2026) ---------- */
.personas{display:grid;gap:clamp(56px,10vh,120px);padding:clamp(24px,4vh,48px) var(--gutter) 0}
.persona{display:grid;grid-template-columns:5fr 7fr;gap:clamp(28px,5vw,90px);align-items:center}
.persona:nth-child(even) .persona-foto{order:2}
.persona-foto{aspect-ratio:4/5;max-height:72svh}
.persona-texto h2{font-size:calc(clamp(40px,6.4vw,112px) * var(--display))}
.persona-rol{margin-top:14px;font-weight:800;font-size:clamp(16px,1.2vw,20px);color:var(--rosa)}
.persona-texto p:not(.persona-rol){margin-top:18px;font-size:clamp(18px,1.4vw,23px);max-width:44ch}
.equipo-areas{display:grid;grid-template-columns:7fr 5fr;gap:clamp(28px,5vw,90px);align-items:start;padding:clamp(80px,14vh,180px) var(--gutter) 0}
.equipo-foto{aspect-ratio:3/2}
.areas-titulo{font-size:calc(clamp(32px,4.2vw,72px) * var(--display));max-width:14ch}
.areas-lista{margin:clamp(24px,4vh,40px) 0 0;display:grid;gap:18px}
.areas-lista div{padding-top:14px;border-top:1px solid #2a252a}
.areas-lista dt{font-weight:800;font-size:clamp(18px,1.4vw,23px);color:var(--rosa)}
.areas-lista dd{margin:6px 0 0;font-size:clamp(16px,1.2vw,19px);max-width:40ch;color:#cfc8cf}
.zonas{padding:clamp(80px,14vh,180px) var(--gutter) clamp(60px,10vh,140px)}
.zonas-titulo{font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:12ch;margin-bottom:clamp(24px,4vh,48px)}
.zonas-lista{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.1em .75em;max-width:36ch}
.zonas-lista li{white-space:nowrap;font-weight:800;font-size:calc(clamp(30px,4.6vw,84px) * var(--display));letter-spacing:-.04em;line-height:1.08}
/* sin punto medio entre municipios (regla de Diego: nunca «·» en una landing); los separa el aire */
.zonas-nota{margin-top:clamp(20px,3vh,32px);font-size:clamp(17px,1.3vw,21px);max-width:44ch;color:#cfc8cf}

@media (max-width:980px){
  .emiliano,.persona,.equipo-areas{grid-template-columns:1fr}
  .persona:nth-child(even) .persona-foto{order:0}
  .emiliano-foto,.persona-foto{max-width:420px}
  .historia{grid-template-columns:2fr 3fr}
}
@media (max-width:640px){
  .historia{grid-template-columns:1fr;gap:20px}
  .historia-foto{aspect-ratio:4/3;height:auto;width:100%;max-height:none}
  .emiliano-foto,.persona-foto{height:auto;width:100%;max-width:none}
  .anima .historias-mandos{grid-template-columns:auto auto 1fr;}
  .historias-contador{grid-column:3;justify-self:end}
  .historias-puntos{display:none}
  .sino-cols{grid-template-columns:1fr;gap:40px}
  /* LOS MUNICIPIOS, UNO POR RENGLÓN. En fila corrida el separador quedaba colgado
     al final de cada renglón («San Nicolás ·») y a esta talla los nombres de dos
     palabras se leían pegados al vecino. Apilados no necesitan separador. */
  .zonas-lista{max-width:none;flex-direction:column;gap:.1em}
  .zonas-lista li:not(:last-child)::after{content:none}
}
@media (max-width:640px){.puertas{grid-template-columns:1fr}}

/* ═══════════════════════════════════════════════════════════════════════
   23-SEP-2026 · LO QUE ELIGIÓ DIEGO DE LAS VARIACIONES (junta del 21-sep)
   Va al final a propósito: pisa la barra, la portada y las historias viejas.
   ═══════════════════════════════════════════════════════════════════════ */

/* ---------- BARRA: tres enlaces al centro y «Vende tu casa» en la esquina ----------
   Rejilla de tres columnas iguales a los lados: el centro de los enlaces ES el centro
   de la pantalla, no el hueco que queda entre el logo y el botón. Ya no se esconde al
   bajar: la acción tiene que estar siempre a la vista. */
.barra{display:grid;grid-template-columns:1fr auto 1fr;gap:0;padding:0}
.barra-marca{padding-left:var(--gutter)}
.barra::after{content:none}
.barra.oculta{transform:none}
.barra-marca{justify-self:start}
.barra-links{grid-column:2;margin:0}
.barra-vende{grid-column:3;justify-self:end;position:relative;z-index:0;display:flex;align-items:center;padding:0 clamp(24px,3vw,52px);overflow:hidden;background:var(--rosa);color:var(--rosa-tinta);font-weight:800;font-size:clamp(16px,1.3vw,20px);letter-spacing:-.01em;white-space:nowrap}
.barra-vende::before{content:"";position:absolute;inset:0;z-index:-1;background:#f1cbda;transform:scaleY(0);transform-origin:top;transition:transform .42s var(--ease)}
.barra-vende span{display:block;transition:transform .16s var(--ease-out)}
.barra-vende:hover::before,.barra-vende:focus-visible::before{transform:none}
.barra-vende:active span{transform:scale(.97)}
.barra-vende:focus-visible{outline:none}
@media (max-width:980px){.barra-links a{padding:0 16px}}
@media (max-width:640px){
  .barra{display:flex;padding:0}
  .barra-vende{margin-left:auto;padding:0 16px;font-size:16px}
  .menu-btn{margin-left:0;padding:10px var(--gutter) 10px 16px}
}

/* ---------- PORTADA CON MOSAICO: el tablero de firmas ---------- */
.hero-mosaico{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:100svh;padding-top:var(--barra-h);overflow:hidden;background:var(--rosa);color:var(--rosa-tinta)}
.hm-texto{align-self:stretch;display:flex;flex-direction:column;justify-content:center;min-width:0;padding:6vh var(--gutter) 8vh}
.hm-cuerpo{container-type:inline-size;min-width:0}
.hero-mosaico .h-linea{overflow:visible;padding-bottom:0;margin-bottom:0}
/* los municipios en fila: cuatro columnas iguales con una raya blanca encima (el blanco de
   «como está.»); si la caja no alcanza, dos por dos, que sigue siendo simétrico */
.munis{list-style:none;margin:clamp(18px,2.6vh,28px) 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:34em}
.munis li{padding-top:10px;border-top:3px solid var(--blanco);font-weight:800;font-size:clamp(16px,1.3vw,22px);letter-spacing:-.01em;line-height:1.1;white-space:nowrap}
@media (min-width:761px){@container (max-width:356px){.munis{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}}}
.hm-accion{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px clamp(18px,2vw,32px);margin-top:clamp(24px,4vh,40px)}
.hm-accion .enlace-grande{margin-top:0}
.hm-plazo{margin:0;font-weight:800;font-size:clamp(16px,1.3vw,22px)}
/* cuatro por tres teselas 3:4 hacen un cuadrado: el tablero mide lo que queda de alto bajo la barra */
.hm-tablero{width:min(calc(100svh - var(--barra-h)),58vw);aspect-ratio:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:4px}
/* el fondo de la tesela es el rosa de la portada, no negro: si una foto tarda, no se ve un hueco oscuro */
.hm-t{position:relative;margin:0;overflow:hidden;background:var(--rosa)}
.hm-t img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* LA ENTRADA («bum, entran, limpio», Diego 23-sep): cada tesela crece desde .82 mientras
   su foto se asienta desde 1.3, en cascada desde la esquina del texto. Opacidad y escala
   comparten duración (cerebro §7-bis.2-bis) y solo se mueven transform y opacity. */
.anima .hero-mosaico .hm-t{opacity:0;transform:scale(.82)}
.anima .hero-mosaico .hm-t img{transform:scale(1.3)}
.anima .hero-mosaico.mosaico-entra .hm-t{opacity:1;transform:none;transition:opacity .9s var(--ease-out) var(--e,0s),transform .9s var(--ease-out) var(--e,0s)}
.anima .hero-mosaico.mosaico-entra .hm-t img{transform:none;transition:transform 1.1s var(--ease-out) var(--e,0s)}
/* el titular con su cascada de letras, igual que la portada anterior */
.anima .hero-mosaico .h-linea>span{transform:none;transition:none}
.anima .hero-mosaico .h-letra{opacity:0;transform:translateY(.45em) rotate(5deg) scale(.9);transition:transform .8s var(--ease-out),opacity .5s ease-out;transition-delay:calc(.28s + var(--i) * 34ms)}
.anima .hero-mosaico.hero-listo .h-letra{opacity:1;transform:none}
.anima .hero-mosaico:not(.hero-listo) [data-rv]{opacity:0;transform:translateY(28px)}
.anima .hero-mosaico .hero-e-linea{transition-delay:1.05s}
.anima .hero-mosaico .munis{transition-delay:1.15s}
.anima .hero-mosaico .hm-accion{transition-delay:1.25s}
/* vertical (teléfono y tableta parada): el tablero arriba, entero; el texto debajo */
@media (max-width:760px),(max-aspect-ratio:1/1){
  .hero-mosaico{display:flex;flex-direction:column}
  .hm-tablero{order:-1;width:100%}
  .hm-texto{flex:1;justify-content:center}
}
@media (min-width:761px) and (max-aspect-ratio:1/1){
  .hm-tablero{aspect-ratio:9/4;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .hero-mosaico .hero-e-titulo{font-size:calc(clamp(56px,16vw,80px) * var(--display));max-width:none}
  .hero-mosaico .hero-e-linea{margin-top:16px;font-size:17px;max-width:34ch}
  .munis{gap:8px;margin-top:16px}
  .munis li{font-size:16px;padding-top:8px}
  @container (max-width:343px){.munis{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:12px}}
  .hm-accion{margin-top:20px}
  .hm-plazo{font-size:16px}
  .hm-tablero{gap:3px}
  .hm-texto{padding:24px var(--gutter) calc(28px + env(safe-area-inset-bottom))}
}
/* teléfono bajito: dos filas de cuatro, para que el texto quepa en la primera pantalla */
@media (max-width:760px) and (max-height:740px){
  .hm-tablero{aspect-ratio:3/2;grid-template-rows:repeat(2,minmax(0,1fr))}
  .hm-tablero .hm-t:nth-child(n+9){display:none}
}

/* ---------- TESTIMONIOS: la fila de reels con una frase pareja debajo ----------
   Diego, 23-sep: «el texto de abajo se ve muy grande y sin orden: en unos grande, en
   otros menos». Ahora cada tarjeta lleva UNA frase corta en la misma talla (la de la
   línea de la portada) con dos renglones reservados, y el nombre en rosa debajo:
   todos los nombres quedan a la misma altura. */
.testimonios{padding:clamp(72px,12vh,150px) 0 clamp(48px,8vh,96px);background:var(--negro)}
.testimonios-titulo{padding:0 var(--gutter);font-size:calc(clamp(40px,6.4vw,112px) * var(--display));max-width:12ch;margin-bottom:clamp(28px,5vh,56px)}
.testimonios-fila{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(240px,20vw,330px);gap:clamp(16px,2vw,32px);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:0 var(--gutter) 14px;scrollbar-width:none}
.testimonios-fila::-webkit-scrollbar{display:none}
.testimonios-fila:focus-visible{outline:2px solid var(--rosa);outline-offset:-2px}
/* con mouse la fila pasa sola (app.js, deriva) y va SIN imán: el imán devolvería cada
   paso chico, y al pausarse (mouse encima, sonido) la regresaba de golpe a la tarjeta
   más cercana. En el teléfono el imán se queda: ahí se desliza con el dedo. */
@media (hover:hover) and (pointer:fine){.testimonios-fila{scroll-snap-type:none}}
.reel{scroll-snap-align:start;min-width:0}
.reel-marco{position:relative;display:block;aspect-ratio:9/16;cursor:pointer;overflow:hidden;background:var(--rosa-tinta);-webkit-user-drag:none;user-select:none;-webkit-tap-highlight-color:transparent}
.reel-video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:var(--x,50%) 50%;transition:transform .6s var(--ease-out)}
@media (hover:hover){.reel-marco:hover .reel-video{transform:scale(1.03)}}
.reel-marco:focus-visible{outline:2px solid var(--rosa);outline-offset:3px}
/* el rótulo del sonido va abajo a la izquierda: los subtítulos quemados viven entre el 65 y el 80 % del alto */
.reel-sonido{position:absolute;left:12px;bottom:12px;z-index:2;font-weight:800;font-size:15px;line-height:1;padding:10px 12px;border-radius:8px;background:rgba(0,0,0,.62);color:var(--blanco);pointer-events:none}
.reel-marco[data-estado="sonando"] .reel-sonido{background:var(--rosa);color:var(--rosa-tinta)}
.reel-cita{margin:18px 0 0}
.reel-cita p{margin:0;min-height:2.3em;font-weight:800;font-size:clamp(18px,1.6vw,26px);letter-spacing:-.02em;line-height:1.15;text-wrap:balance}
.reel-cita footer{margin-top:10px;font-weight:800;font-size:16px;color:var(--rosa)}
.testimonios-riel{display:none}
@supports (animation-timeline:scroll()){
  .testimonios{timeline-scope:--fila-reels}
  .testimonios-fila{scroll-timeline:--fila-reels x}
  .testimonios-riel{display:block;height:3px;margin:16px var(--gutter) 0;background:#2a252a;overflow:hidden}
  .testimonios-riel i{display:block;height:100%;background:var(--rosa);transform-origin:left center;animation:riel-reels linear both;animation-timeline:--fila-reels}
}
@keyframes riel-reels{from{transform:scaleX(.2)}to{transform:scaleX(1)}}
@media (max-width:640px){.testimonios-fila{grid-auto-columns:78%}}

/* ---------- WHATSAPP FLOTANTE: la doble D del logotipo (Diego, 23-sep-2026, opción 5) ----------
   La D grande con el glifo dentro y la media luna al lado, en las proporciones del logo. Entra
   dibujándose (la D crece desde su lomo, la media luna aparece, el glifo brinca), la media luna se
   separa con el cursor y, una vez por visita, sola. Dos caras apiladas: rosa (sobre negro y fotos)
   y negra (sobre el rosa); el cambio es un fundido de opacidad. Solo transform y opacity. */
.wa-flota{position:fixed;right:var(--gutter);bottom:calc(20px + env(safe-area-inset-bottom));z-index:45;display:block;border-radius:4px 30px 30px 4px;filter:drop-shadow(0 10px 13px rgba(0,0,0,.26));transition:transform .16s var(--ease-out),opacity .3s var(--ease-out);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.wa-flota .cara{position:relative;display:flex;align-items:center;gap:1.5px;height:60px;transition:opacity .4s var(--ease)}
.wa-flota .cara-alt{position:absolute;inset:0;opacity:0}
.wa-sobre-rosa .wa-flota .cara-alt{opacity:1}
.wa-sobre-rosa .wa-flota .cara:not(.cara-alt){opacity:0}
.wa-flota svg{display:block}
.wa-flota path{fill:var(--rosa)}
.wa-flota .cara-alt path{fill:var(--negro)}
.wa-D{position:relative;display:block;transform-origin:0 50%}
.wa-d{display:block;transform-origin:0 50%}
.wa-d-in{display:block;transition:transform .32s var(--ease-out)}
.wa-flota .g{position:absolute;left:12px;top:17px;width:26px;height:26px;fill:currentColor;color:var(--rosa-tinta);transition:transform .32s var(--ease-out)}
.wa-flota .cara-alt .g{color:var(--rosa)}
.wa-flota:active{transform:scale(.95)}
@media (hover:hover){.wa-flota:hover .wa-d-in{transform:translateX(6px)}.wa-flota:hover .g{transform:scale(1.1)}}
.wa-flota:focus-visible{outline:2px solid var(--rosa);outline-offset:4px}
.wa-flota:focus-visible .wa-d-in{transform:translateX(6px)}
.wa-sobre-rosa .wa-flota:focus-visible{outline-color:var(--blanco)}
/* la entrada, cuando app.js le pone .vivo (después de la portada) */
.anima .wa-flota:not(.vivo){visibility:hidden}
.wa-flota.vivo .wa-D{animation:wa-D .7s var(--ease) backwards}
.wa-flota.vivo .wa-d{animation:wa-d .55s var(--ease-out) .5s backwards}
.wa-flota.vivo .g{animation:wa-pop .5s var(--ease-out) .65s backwards}
@keyframes wa-D{from{transform:scaleX(0)}}
@keyframes wa-d{from{transform:scale(0)}}
@keyframes wa-pop{from{opacity:0;transform:scale(.5)}}
/* el llamado: la media luna toca dos veces, una vez por visita */
.wa-flota.llama .wa-d-in{animation:wa-toca 1s var(--ease) 2}
@keyframes wa-toca{0%,100%{transform:none}30%{transform:translateX(7px)}55%{transform:none}72%{transform:translateX(3px)}}
/* se retira con el menú abierto y cuando aparece el pie: los dos traen su propio WhatsApp */
.barra.menu-abierto~.wa-flota,.pie-visible .wa-flota{opacity:0;transform:scale(.8);pointer-events:none}
@media (max-width:640px){
  .wa-flota{right:12px;bottom:calc(12px + env(safe-area-inset-bottom))}
  .wa-flota .cara{height:56px}
  .wa-flota svg:not(.g){height:56px;width:auto}
  .wa-flota .g{left:11px;top:16px;width:24px;height:24px}
}

@media (prefers-reduced-motion:reduce){
  .anima .hero-mosaico .hm-t,.anima .hero-mosaico .hm-t img,.anima .hero-mosaico .h-letra,.anima .hero-mosaico [data-rv]{transition:none!important;opacity:1!important;transform:none!important}
  .reel-video{transition:none}
  .reel-marco:hover .reel-video{transform:none}
  .wa-flota.vivo .wa-D,.wa-flota.vivo .wa-d,.wa-flota.vivo .g,.wa-flota.llama .wa-d-in{animation:none}
  .testimonios-riel i{animation:none;transform:scaleX(1)}
}

/* ---------- fotos reales del equipo en los huecos que eran «pendiente» (23-sep-2026) ---------- */
.foto-real{position:relative;margin:0;overflow:hidden;background:var(--humo)}
.foto-real img{width:100%;height:100%;object-fit:cover}

/* ---------- EL FORMULARIO COMO LA VARIANTE 1 (23-sep-2026) ----------

   Diego eligió en /taller/formulario la variante 1: la pregunta del paso toma el
   sitio del titular, los campos van uno al lado del otro a lo ancho y lo que se
   contesta va grande sobre un renglón, sin caja. Y sobre ella pidió tres cosas:
   bajar la letra «un poquito» sin que se desfase del resto de la página, que
   «Volver» se vea como botón y quitar la nota de abajo.

   LA LETRA BAJA UN ESCALÓN DE LA ESCALA QUE YA TIENE LA PÁGINA, no a una talla
   inventada. Cada talla sale de una clase del sitio:
     pregunta del paso   .oferta-titulo 66 → .equipo h3 50   (a 1440)
     respuesta           .puerta-t 42    → .citas p 31
     pregunta de Vale    .hero-e-linea 23         (se queda)
     tema del paso       .lista-titulo 23         (se queda)
     Continuar           .enlace-grande 32 → .pasos h3 29
     errores, WhatsApp y Volver   .munis li 19
   Todo cuelga de `.oferta`, porque .campo y .enlace-grande son piezas de todo
   el sitio. */
.oferta{
  --f-titulo:calc(clamp(32px,4.2vw,72px) * var(--display));
  --f-valor:calc(clamp(26px,2.6vw,46px) * var(--display));
  --f-pregunta:clamp(18px,1.6vw,26px);
  --f-rotulo:clamp(20px,1.6vw,26px);
  --f-boton:clamp(22px,2vw,32px);
  --f-chico:clamp(16px,1.3vw,22px);
}
/* EL PASO SE REPARTE A LO ALTO SIN IRSE AL FONDO (Diego, 23-sep-2026). Primero:
   «se siente muy compactado en la parte de arriba». Se centró todo y la segunda
   corrección fue la contraria: «lo siento muy abajo… pon ¿Qué día te llamamos?
   más arriba». Lo que quedó: la pregunta arriba, junto a su tema; el aire entre
   pregunta, campos y botones crece con el alto de la pantalla (vh), y solo los
   datos de contacto bajan al fondo con `margin-top:auto`. */
.oferta-texto{width:100%;min-height:100svh;display:flex;flex-direction:column;padding:calc(var(--barra-h) + clamp(28px,5vh,56px)) var(--gutter) clamp(32px,6vh,72px)}
.oferta .forma{max-width:none;margin-top:0;gap:0}

/* el andamio del paso: barra fina a todo el ancho, tema en rosa y cuenta en blanco */
.oferta .paso-progreso{height:3px;max-width:none;border-radius:0;margin:0}
.oferta .paso-rotulo{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:14px 0 0;font-size:var(--f-rotulo);letter-spacing:-.02em;line-height:1.2}
.oferta .paso-rotulo[hidden],.oferta .paso-titulo[hidden]{display:none}
.paso-cuenta{color:var(--blanco);font-variant-numeric:tabular-nums;white-space:nowrap}
.oferta .paso-titulo{margin:clamp(18px,3.6vh,44px) 0 clamp(28px,5.6vh,68px);padding-top:0;font-size:var(--f-titulo);line-height:1;letter-spacing:-.045em}
.paso-t{display:block}
.paso-t.rosa{color:var(--rosa)}

/* LOS CAMPOS DEL PASO, UNO AL LADO DEL OTRO. En «Tu casa» las preguntas miden
   distinto, así que las rayas se alinean abajo; en los otros dos se alinean
   arriba, porque el WhatsApp lleva una ayuda debajo que empujaría su raya. */
.oferta .paso{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:start;gap:clamp(24px,3.6vh,36px) clamp(24px,3vw,56px)}
.oferta .paso[data-paso="casa"]{align-items:end}
.oferta .paso[data-paso="llamada"]{display:block}
.oferta .paso[hidden]{display:none}
.oferta .campo label,.oferta .campo legend{margin:0 0 6px;font-weight:500;font-size:var(--f-pregunta);line-height:1.3;color:var(--blanco)}
.oferta .campo.invalido label{color:#ff9db4}

/* EL RENGLÓN: lo que se contesta va grande, sin caja, sobre una raya gris; al
   enfocar o abrir, una raya rosa crece de izquierda a derecha (transform). El
   foco se ve en la raya, no en un recuadro. Un input no admite ::before, por
   eso los de texto viven dentro de .campo-linea. */
.campo-linea,.oferta .desp{position:relative;display:block}
.campo-linea::before,.campo-linea::after,.oferta .desp::before,.oferta .desp::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;pointer-events:none}
.campo-linea::before,.oferta .desp::before{background:#3a333a}
.campo-linea::after,.oferta .desp::after{background:var(--rosa);transform:scaleX(0);transform-origin:left center;transition:transform .42s var(--ease)}
.campo-linea:focus-within::after,.oferta .desp:focus-within::after,.oferta .desp.abierta::after{transform:scaleX(1)}
.campo.invalido .campo-linea::before,.campo.invalido .desp::before{background:#ff9db4}
.oferta .campo input[type="text"],.oferta .campo input[type="tel"],.oferta .desp-boton{min-height:48px;padding:.16em 0 .24em;border-radius:0;background:transparent;box-shadow:none;font-size:var(--f-valor);font-weight:800;letter-spacing:-.04em;line-height:1.1;color:var(--blanco)}
.oferta .campo input[type="text"]:focus,.oferta .campo input[type="tel"]:focus,.oferta .desp-boton:hover,.oferta .desp.abierta .desp-boton,.oferta .campo.invalido input,.oferta .campo.invalido .desp-boton{background:transparent;box-shadow:none}
.oferta .campo input:focus,.oferta .campo input:focus-visible{outline:none}
.oferta .desp-boton:focus-visible{outline:2px solid var(--rosa);outline-offset:4px}
.oferta .campo input::placeholder{color:#8a828a;font-weight:500}
.oferta .desp-boton{color:#8a828a;font-weight:500;text-align:left}
.oferta .desp-boton.con-valor{color:var(--blanco);font-weight:800}
.oferta .desp-valor{white-space:normal;overflow:visible}
.oferta .desp-chevron{width:.5em;height:.5em}
.oferta .error{margin:10px 0 0;font-size:var(--f-chico);line-height:1.3}
.oferta .ayuda{margin-top:10px;font-size:15px}

/* LA LISTA: sin radio y sin anillo, a la talla de las preguntas; la elegida
   lleva el bloque rosa de la página, así que la palomita sobra. */
.desp-menu{border-radius:0;box-shadow:0 18px 44px -12px rgba(0,0,0,.7);padding:6px 0}
.desp-op{border-radius:0;padding:.45em .8em;font-weight:800;font-size:clamp(18px,1.6vw,26px);letter-spacing:-.02em;line-height:1.2}
.desp-op.activa{background:#342d34}
.desp-op[aria-selected="true"]{background:var(--rosa);color:var(--rosa-tinta)}
.desp-palomita{display:none}
.desp-menu.hoja{padding:8px 0 calc(16px + env(safe-area-inset-bottom))}
.desp-menu.hoja .desp-titulo{margin:0 var(--gutter) 8px}
.desp-menu.hoja .desp-op{padding:14px var(--gutter);font-size:19px}

/* LAS ACCIONES: «Volver» es un bloque a la izquierda y «Continuar» el enlace
   grande rosa de la página. Antes «Volver» era texto gris suelto y Diego lo leyó
   como «texto flotante». El bloque es de superficie, sin borde, como los campos
   de antes. */
.oferta .forma-acciones{align-items:center;gap:10px 12px;margin-top:clamp(28px,5.6vh,68px)}
/* LOS DOS BOTONES, PAREJOS (Diego, 23-sep-2026: «Apartar mi llamada está más
   grande… se ve descuadrado a comparación de Volver»). Eran dos idiomas juntos:
   un bloque de 19 px y un enlace de texto de 29 px, cada uno con su alto. Ahora
   son dos bloques de la misma talla y el mismo alto, uno al lado del otro: el de
   avanzar en rosa lleno y el de regresar en superficie. El rosa ya dice cuál
   manda; no hace falta que además sea más grande. */
.oferta .forma #forma-seguir{display:inline-flex;align-items:center;min-height:52px;margin:0;padding:0 26px;background:var(--rosa);color:var(--rosa-tinta);font-size:var(--f-chico);letter-spacing:-.01em;line-height:1.2}
.oferta .forma #forma-seguir::before{background:#f3d3df}
.oferta .forma #forma-seguir:hover,.oferta .forma #forma-seguir:focus-visible{color:var(--rosa-tinta)}
.oferta .forma #forma-seguir:focus-visible{box-shadow:0 0 0 3px rgba(236,184,204,.55)}
.oferta .forma #forma-seguir:active{transform:scale(.97)}
.oferta .enlace-volver:not([hidden])~.enlace-grande{margin-left:0}
.oferta .enlace-volver{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 22px 0 18px;background:#231f23;color:var(--blanco);font-size:var(--f-chico);font-weight:800;letter-spacing:-.01em;transition:background-color .2s var(--ease-out),transform .16s var(--ease-out)}
.oferta .enlace-volver[hidden]{display:none}
.oferta .enlace-volver svg{flex:none;transition:transform .24s var(--ease-out)}
.oferta .enlace-volver:hover{background:#2c272c;color:var(--blanco)}
.oferta .enlace-volver:hover svg{transform:translateX(-3px)}
.oferta .enlace-volver:active{transform:scale(.97)}
.oferta .enlace-volver:focus{outline:none}
.oferta .enlace-volver:focus-visible{box-shadow:0 0 0 3px rgba(236,184,204,.55)}
.oferta .forma-nota{margin-top:14px;font-size:15px;max-width:52ch}
/* la otra salida, en su propio renglón y con su pregunta: no es parte del mes */
.forma-alterna{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:clamp(22px,3.6vh,34px)}
.forma-alterna[hidden]{display:none}
.forma-alterna p{margin:0;font-size:var(--f-chico);color:#cfc8cf}
.alterna-wa{display:inline-flex;align-items:center;gap:10px;text-align:left;line-height:1.25;min-height:48px;padding:0 18px;border:0;border-radius:0;background:#231f23;color:var(--blanco);font:inherit;font-weight:800;font-size:var(--f-chico);letter-spacing:-.01em;cursor:pointer;transition:background-color .2s var(--ease-out),transform .16s var(--ease-out)}
.alterna-wa svg{flex:none;fill:var(--rosa)}
.alterna-wa:hover{background:#322c32}
.alterna-wa:active{transform:scale(.97)}
.alterna-wa:focus{outline:none}
.alterna-wa:focus-visible{box-shadow:0 0 0 3px rgba(236,184,204,.55)}
/* EN EL ÚLTIMO PASO los botones viven bajo el día elegido (app.js los muda), y la
   línea de contacto de abajo se retira: la salida por WhatsApp ya está a la vista. */
.agenda-cierre:empty{display:none}
.agenda-cierre{margin-top:auto;padding-top:clamp(24px,4vh,40px)}
.agenda-cierre .forma-acciones{margin-top:0}
.agenda-cierre .forma-alterna{margin-top:clamp(16px,2.6vh,24px)}
.oferta[data-paso="llamada"] .oferta-otros{display:none}
/* en teléfono el último paso se aprieta para que sus botones alcancen a verse al
   llegar: menos aire entre bloques y casillas de 42 px de alto (el mínimo de dedo
   sigue en pie), sin quitar nada de lo que dice */
@media (max-width:640px){
  .oferta[data-paso="llamada"] .paso-titulo{margin-bottom:16px}
  .agenda{gap:16px}
  .agenda-mes{margin-bottom:6px}
  .agenda-semana span{padding:2px 0}
  .agenda .agenda-d{aspect-ratio:auto;height:42px}
  .agenda-resumen .agenda-resumen-dia{margin-top:2px}
  .agenda-resumen .agenda-resumen-nota{margin-top:8px}
  .agenda-cierre{padding-top:14px}
  .agenda-cierre .forma-alterna{margin-top:12px;gap:6px 12px}
  /* «Volver» y «Apartar mi llamada» en UN renglón también a 360 px: sumaban 325 px
     en 324 y «Apartar» bajaba a otro renglón, fuera de la pantalla al llegar */
  .oferta .forma .agenda-cierre #forma-seguir{padding:0 20px}
  .oferta .agenda-cierre .enlace-volver{padding:0 16px 0 14px}
}
.oferta .forma-nota[hidden]{display:none}
.oferta .oferta-otros{margin-top:auto;padding-top:clamp(20px,3.4vh,32px);font-size:var(--f-chico);line-height:1.4}
@media (max-width:760px){.oferta-texto{padding-top:calc(var(--barra-h) + 24px)}.oferta .forma .enlace-grande{padding-top:.52em;padding-bottom:.52em}}
/* la pantalla final: el mismo titular de dos renglones que los pasos */
.oferta .forma-ok{max-width:none;margin-top:clamp(18px,3.6vh,44px);padding-top:0}
.oferta .forma-ok h2{font-size:var(--f-titulo);line-height:1;letter-spacing:-.045em;max-width:none}
.oferta .forma-ok p{font-size:var(--f-pregunta);line-height:1.4;margin:clamp(16px,2.6vh,24px) 0 clamp(18px,3vh,28px);max-width:40ch}
.oferta .forma-ok .enlace-grande{font-size:var(--f-boton);padding-top:.4em;padding-bottom:.4em}
@media (prefers-reduced-motion:reduce){.campo-linea::after,.oferta .desp::after,.oferta .enlace-volver,.oferta .enlace-volver svg{transition:none}}


/* ---------- ANTES Y DESPUÉS: LA FACHADA SE DETIENE MIENTRAS LA CRUZA EL DESPUÉS (23-sep-2026) ----------
   El par de una sola foto cabe entero bajo la barra, porque app.js lo detiene ahí
   mientras el después lo cruza: si fuera más alto, se quedaría cortado todo ese
   tramo. */
/* `width:100%` explícito: una figura con proporción dentro de una rejilla NO se estira
   a lo ancho (con proporción, `justify-self:normal` vale `start`); al ponerle alto
   máximo quedaba de 1,294 px en una pantalla de 1,470 y el resto se veía negro */
.cambio-par-h figure{width:100%;max-height:calc(100svh - var(--barra-h))}
/* el par horizontal es UNA foto con el después encima: la regla de ≤980 px que le da
   dos columnas a los pares verticales también se lo llevaba a él, y en teléfono la
   fachada salía de 159×82 px (medido el 23-sep-2026; ya estaba así publicado) */
@media (max-width:980px){.cambio-par.cambio-par-h{grid-template-columns:1fr}}
/* el barrido por ventana (app.js): la foto ya no se recorta, la figura sale del par */
.cambio-par-h{overflow:hidden}
.anima .cambio-par-h.velo .cambio-despues img{clip-path:none}
/* PARES DE DOS COLUMNAS: el después ya está completo (nunca una columna negra a
   medio descubrir) y al entrar se asienta desde un poco más grande. Solo transform. */
.anima .cambio-par:not(.cambio-par-h) .cambio-despues img{clip-path:none;transform:scale(1.08);transition:transform 1.6s var(--ease)}
.anima .cambio-par.in:not(.cambio-par-h) .cambio-despues img{transform:none}
@media (prefers-reduced-motion:reduce){.anima .cambio-par:not(.cambio-par-h) .cambio-despues img{transform:none;transition:none}}
/* SIN RAYAS NEGRAS ENTRE FOTOS (Diego, 23-sep-2026: «esos bordecitos negros»): los pares
   van pegados (antes llevaban 6 px de fondo negro entre sí) y la columna del después se
   encima 1 px sobre el antes, para que un ancho con medio píxel no deje ver el fondo. */
.cambio-par:not(.cambio-par-h) .cambio-despues{margin-left:-1px}
/* en Casas, menos aire entre la bajada y la primera foto (Diego: «un poco, no tanto») */
.portada + .cambio{padding-top:clamp(40px,7vh,88px)}

/* ═══════════════════════════════════════════════════════════════════════
   TELÉFONO: REPASO DE ADAPTABILIDAD (23-sep-2026)
   Barrido medido a 360, 390 y 430 px (Diego: «que todo esté correctamente
   adaptado a móvil… y si hay cosas que no son iguales en computadora, que se
   vean adaptadas a celular»). Todo cuelga de ≤640 px: la computadora no cambia.
   ═══════════════════════════════════════════════════════════════════════ */
@media (max-width:640px){
  /* ZONA DE TOQUE DE 44 PX SIN MOVER NADA. Los enlaces grandes medían 35 px de
     alto y «Ver el antes y el después» 37: se extiende la zona tocable con un
     pseudo-elemento transparente (el ::before ya es el bloque de color), así el
     dedo atina y el acomodo queda idéntico (cerebro-interfaces §9b). */
  .enlace-grande::after,.rosa-link::after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;transform:translateY(-50%)}

  /* El menú: «Quiero mi oferta» y «WhatsApp» medían 25 px de alto. */
  .menu-datos{gap:0}
  .menu-datos a{padding:10px 0}

  /* EL PIE: enlaces de 23 y 20 px de alto, y la línea de abajo partida a la mitad
     («2026 Deal Inmobiliaria  Aviso de privacidad» y «Sitio por Hi22» solo en otro
     renglón). Cada enlace toma 44 px de alto (el relleno sustituye al hueco entre
     renglones) y la línea de abajo se apila, a 15 px como las notas del sitio. */
  .pie-fila{row-gap:0;margin-top:calc(clamp(24px,4vh,40px) - 11px)}
  .pie-fila a{padding:11px 0}
  .pie-base{flex-direction:column;align-items:flex-start;gap:0;margin-top:calc(clamp(28px,4vh,48px) - 11px);font-size:15px}
  .pie-base>*{padding:11px 0}

  /* La flecha de las listas del formulario medía 10 px (media letra de 21): apenas
     se veía. A tres cuartos de la letra se lee como lista a la primera. */
  .oferta .desp-chevron{width:.75em;height:.75em}

  /* LAS FOTOS FLOTANTES DEL BLOQUE ROSA, EN SU PROPIA FRANJA. En pantalla ancha
     flotan a la derecha de la cifra; aquí la cifra toma todo el ancho, así que
     flotaban encima del texto (medido a 360: la tercera tapaba el enlace) y la
     cuarta se salía del borde derecho a los tres anchos (86 px de foto, 39 fuera).
     Ahora van DEBAJO del texto, en una franja propia de dos hileras escalonadas:
     nunca tocan el texto, en ningún alto de pantalla, y conservan su parallax. */
  .rosa-bloque{display:flex;flex-direction:column}
  .rosa-in{padding-bottom:28px}
  /* «es la meta» siempre en su renglón: mientras el contador va en «0» cabía junto
     al número y al llegar a «1,000» bajaba, y el bloque crecía 37 px a la vista */
  .cifra{flex-direction:column;align-items:flex-start}
  .flotas{position:relative;inset:auto;order:1;flex:none;height:58vw;margin-top:auto}
  .flotas .flota{width:20vw;min-width:0}
  .flotas .flota:nth-child(1){left:5%;top:0}
  .flotas .flota:nth-child(3){left:41%;top:4vw}
  .flotas .flota:nth-child(4){left:75%;top:1vw}
  .flotas .flota:nth-child(2){left:22%;top:32vw}
  .flotas .flota:nth-child(5){left:59%;top:33vw}
}

/* FOTOS QUE LLEGAN POR RED (24-sep-2026). Diego: «al entrar a esta página se tardan en cargar las
   imágenes y se ven en negro por un momento». Mientras la foto llega, la figura enseña su propia
   miniatura (--vista, puesta por generar.mjs) en lugar del negro de la página, y la foto entra con un
   fundido atado a su carga: el <head> la marca con data-lista al llegar (cerebro-interfaces §7, el
   fundido atado al load se escribe como @keyframes). Sin JS no existe .anima y todo se ve de golpe.
   El después del par horizontal NO lleva vista: va encima del antes y se descubre con el barrido. */
.cambio-par:not(.cambio-par-h) figure,.cambio-par-h .cambio-antes{background:#1b1b1b var(--vista,none) center/cover no-repeat}
.anima .cambio-par img:not([data-lista]){opacity:0}
.anima .cambio-par img[data-lista]{animation:foto-llega .5s cubic-bezier(.22,1,.36,1) both}
@keyframes foto-llega{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.anima .cambio-par img[data-lista]{animation:none}}
