:root{
  --paper:#FFFFFF; --paper-2:#F7F5F1; --paper-3:#EFEBE2;
  --ink:#2A2620; --ink-2:#544F46; --ink-3:#7A7263;
  --carbon:#0E0E0C; --carbon-2:#16150F;
  --stone:#606858; /* verde olivo-sage para secciones oscuras (Samuel 2026-06-08: swatch elegido) · cream encima */
  --cream:#F4F0E6; --cream-d:rgba(244,240,230,.74);
  --verde:#5E6A52; --verde-soft:#7C8F6F; --verde-deep:#3F4836;
  /* accent → verde (Samuel 2026-06-05: gestos de naranja a verde en todo el sitio) */
  --terra:#5E6A52; --terra-deep:#3F4836; --terra-soft:#9CAA86; --gold:#8E9E78;
  --sage-lt:#C9D4BB; /* celadón claro · acento sobre las secciones verde olivo (--stone) */
  --line:rgba(42,38,32,.14); --line-2:rgba(42,38,32,.22);
  --line-d:rgba(244,240,230,.16); --line-dd:rgba(244,240,230,.10);
  --maxw:1320px; --pad:clamp(22px,5vw,76px);
  --serif:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --sans:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --mono:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --t-hero:clamp(2.6rem,8vw,7.2rem);
  --t-display:clamp(2.3rem,5.4vw,5rem);
  --t-2:clamp(1.9rem,3.6vw,3.4rem);
  --t-lede:clamp(1.04rem,1.35vw,1.26rem);
  --ease:cubic-bezier(.16,1,.3,1);
  --nav-h:74px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;min-width:0;min-height:0;}
html{-webkit-text-size-adjust:100%;overflow-x:clip;}
html.lenis,html.lenis body{height:auto;}.lenis.lenis-smooth{scroll-behavior:auto!important;}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.55;overflow-x:clip;letter-spacing:-.003em;}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;}
::selection{background:var(--terra);color:var(--cream);}
section[id]{scroll-margin-top:var(--nav-h);}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.012em;text-wrap:balance;}
p,li{text-wrap:pretty;} /* regla global Samuel: sin palabras sueltas / orphans */
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad);width:100%;}
em,.it,i{font-style:normal;}

/* furniture */
.eyebrow{display:flex;align-items:center;gap:11px;font-family:var(--mono);font-size:.7rem;letter-spacing:.24em;
  text-transform:uppercase;font-weight:500;color:var(--terra-deep);}
.eyebrow::before{content:"";width:24px;height:1px;background:currentColor;opacity:.7;flex:0 0 auto;}
.eyebrow.center{justify-content:center;}
.eyebrow.on-dark{color:var(--sage-lt);}
.lede{font-size:var(--t-lede);line-height:1.62;color:var(--ink-2);text-wrap:pretty;}
.serif-accent{font-style:normal;color:var(--terra-deep);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* ---------- LOADER ---------- */
/* INTRO cinematográfica "MDP presenta Baalá" · efecto canon villaggiosma.com portado a tokens Baalá (Samuel 2026-06-08)
   Stage 1: wordmark MDP se construye (letras + banda + descriptor). Stage 2: MDP encoge hacia arriba ("el desarrollador presenta") + reveal Baalá con reglas y blur-spread. Fondo oscuro → funde al hero claro. */
.loader{position:fixed;inset:0;z-index:9000;background:var(--paper);overflow:hidden;transition:opacity 1s var(--ease),visibility 1s var(--ease);}
.loader.done{opacity:0;visibility:hidden;}
/* salida cinematográfica · todo se difumina y crece hacia la imagen mientras emerge el hero (Samuel 2026-06-08) */
.loader.done .loading__mark{filter:blur(16px);opacity:0;transform:translate(-50%,-50%) scale(1.14);transition:filter 1s var(--ease),opacity .9s var(--ease),transform 1.15s var(--ease);}
.loading__mark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;isolation:isolate;}
.loading__mark::before{content:"";position:absolute;top:50%;left:50%;width:min(440px,72vw);height:min(440px,72vw);
  transform:translate(-50%,-50%) scale(.5);background:radial-gradient(circle,rgba(156,170,134,.20) 0%,rgba(156,170,134,.08) 38%,transparent 66%);
  opacity:0;z-index:-1;pointer-events:none;animation:mdpHalo 3.4s var(--ease) .1s forwards, haloDim 1s cubic-bezier(.65,0,.35,1) 3.7s forwards;
  background:radial-gradient(circle,rgba(142,158,120,.13) 0%,rgba(142,158,120,.05) 40%,transparent 66%);}
@keyframes mdpHalo{0%{opacity:0;transform:translate(-50%,-50%) scale(.5);}35%{opacity:.7;transform:translate(-50%,-50%) scale(.85);}75%{opacity:1;transform:translate(-50%,-50%) scale(1.05);}100%{opacity:.85;transform:translate(-50%,-50%) scale(1.18);}}
@keyframes haloDim{to{opacity:.2;}}
/* ═ MDP WORDMARK CANON · Helvetica Black + banda atravesando (brand book MDP) ═ */
.mdp-logo{--logo-size:clamp(104px,15vw,168px);--logo-fg:var(--ink);--logo-bg:var(--paper);--logo-hair:rgba(42,38,32,.16);
  --logo-band-h:calc(var(--logo-size)*.16);--logo-desc-size:calc(var(--logo-size)*.062);--logo-band-w:114%;
  position:relative;display:inline-flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:900;font-size:var(--logo-size);
  line-height:.85;letter-spacing:-.04em;color:var(--logo-fg);-webkit-font-smoothing:antialiased;user-select:none;white-space:nowrap;isolation:isolate;}
.mdp-letters{display:inline-flex;gap:0;font-weight:900;font-size:1em;line-height:.85;letter-spacing:inherit;color:var(--logo-fg);position:relative;z-index:1;
  --a:calc(50% - var(--logo-band-h)/2);--b:calc(50% + var(--logo-band-h)/2);
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 var(--a),transparent var(--a),transparent var(--b),#000 var(--b),#000 100%);
  mask-image:linear-gradient(to bottom,#000 0,#000 var(--a),transparent var(--a),transparent var(--b),#000 var(--b),#000 100%);}
.mdp-letters .ltr{display:inline-block;}
.mdp-band{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--logo-band-w);height:var(--logo-band-h);background:var(--logo-bg);
  border-top:1px solid var(--logo-hair);border-bottom:1px solid var(--logo-hair);display:flex;align-items:center;justify-content:center;z-index:2;overflow:hidden;}
.mdp-descriptor{font-family:var(--sans);font-weight:700;font-size:var(--logo-desc-size);letter-spacing:.18em;text-indent:.18em;text-transform:uppercase;text-align:center;color:var(--logo-fg);line-height:1;white-space:nowrap;}
/* build stages (auto-play al estar .mdp-logo--building) */
.mdp-logo--building .mdp-letters .ltr{opacity:0;transform:translateY(36px) scale(.94);animation:mdpLetterIn 1s var(--ease) forwards;}
.mdp-logo--building .mdp-letters .ltr:nth-child(1){animation-delay:.25s;}
.mdp-logo--building .mdp-letters .ltr:nth-child(2){animation-delay:.45s;}
.mdp-logo--building .mdp-letters .ltr:nth-child(3){animation-delay:.65s;}
@keyframes mdpLetterIn{to{opacity:1;transform:translateY(0) scale(1);}}
.mdp-logo--building .mdp-band{transform:translate(-50%,-50%) scaleX(0);transform-origin:center;animation:mdpBandDraw 1.1s cubic-bezier(.65,0,.35,1) 1.6s forwards;}
@keyframes mdpBandDraw{to{transform:translate(-50%,-50%) scaleX(1);}}
.mdp-logo--building .mdp-descriptor{opacity:0;animation:mdpDescIn .8s var(--ease) 2.7s forwards;}
@keyframes mdpDescIn{to{opacity:1;}}
/* Stage 2 · MDP encoge hacia arriba ("presenta") */
.mdp-logo--building{animation:mdpShrinkUp 1s cubic-bezier(.65,0,.35,1) 3.7s forwards;}
@keyframes mdpShrinkUp{to{transform:translateY(-27vh) scale(.38);opacity:.4;}}
/* reveal Baalá */
.vlg-reveal{position:absolute;top:53%;left:50%;transform:translate(-50%,-50%);width:min(720px,88vw);display:flex;flex-direction:column;align-items:center;text-align:center;pointer-events:none;opacity:0;animation:vlgRevealIn .6s var(--ease) 4s forwards;}
@keyframes vlgRevealIn{to{opacity:1;}}
.vlg-eyebrow{font-family:var(--sans);font-size:11px;letter-spacing:.48em;text-transform:uppercase;color:rgba(42,38,32,.55);font-weight:500;padding-left:.48em;opacity:0;transform:translateY(8px);animation:vlgFadeUp .7s var(--ease) 4.2s forwards;}
.vlg-rule{height:1px;background:linear-gradient(90deg,transparent 0%,rgba(156,170,134,.4) 18%,var(--gold) 50%,rgba(156,170,134,.4) 82%,transparent 100%);transform:scaleX(0);transform-origin:center;}
.vlg-rule--top{width:56%;margin:18px 0 26px;animation:vlgRuleDraw .9s cubic-bezier(.65,0,.35,1) 4.45s forwards;}
.vlg-rule--bottom{width:38%;margin:34px 0 20px;animation:vlgRuleDraw .9s cubic-bezier(.65,0,.35,1) 5.4s forwards;}
@keyframes vlgRuleDraw{to{transform:scaleX(1);}}
/* BAALÁ · bold mayúsculas TRANSPARENTE · las letras son ventana al render de la fachada (text-mask · Samuel 2026-06-08) */
.vlg-wordmark{font-family:var(--sans);font-weight:800;text-transform:uppercase;font-size:clamp(64px,12vw,172px);line-height:1;letter-spacing:.02em;margin:0;padding-left:.02em;opacity:0;
  background:url('assets/hero/portada-fachada.webp') center 40%/cover;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
  animation:vlgWordmarkIn 1.1s var(--ease) 4.6s forwards;}
@keyframes vlgWordmarkIn{0%{opacity:0;letter-spacing:.3em;filter:blur(5px);}60%{opacity:1;filter:blur(0);}100%{opacity:1;letter-spacing:.02em;filter:blur(0);}}
.vlg-locality{font-family:var(--sans);font-size:12px;letter-spacing:.42em;text-transform:uppercase;color:rgba(42,38,32,.66);font-weight:500;padding-left:.42em;opacity:0;transform:translateY(6px);animation:vlgFadeUp .8s var(--ease) 5.7s forwards;}
@keyframes vlgFadeUp{to{opacity:1;transform:translateY(0);}}
.intro-skip{position:absolute;right:clamp(18px,4vw,42px);bottom:clamp(16px,4vh,34px);z-index:6;font-family:var(--sans);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);background:none;border:0;cursor:pointer;padding:8px;}
.intro-skip:hover{color:var(--ink);}
@media(max-width:640px){.vlg-wordmark{font-size:clamp(44px,13vw,76px);letter-spacing:.24em;}.vlg-eyebrow,.vlg-locality{font-size:10px;letter-spacing:.34em;}
  .mdp-logo--building{animation:mdpShrinkUpM 1s cubic-bezier(.65,0,.35,1) 3.7s forwards;}@keyframes mdpShrinkUpM{to{transform:translateY(-30vh) scale(.46);opacity:.38;}}}
@media(prefers-reduced-motion:reduce){.loader{display:none!important;}}

/* ---------- NAV ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;height:var(--nav-h);display:flex;align-items:center;
  transition:background .5s var(--ease),backdrop-filter .5s,border-color .5s;border-bottom:1px solid transparent;}
/* nav SIEMPRE transparente · adapta color según la sección (Samuel 2026-06-05) */
.nav--light .nav__links a{color:var(--ink-2);}
.nav--light .nav__links a:hover{color:var(--ink);}
.nav--light .btn--solid{background:transparent;color:var(--ink);border-color:var(--line-2);}
.nav--light .btn--solid:hover{background:rgba(20,18,15,.05);border-color:var(--ink);}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;}
.nav__logo{height:26px;width:auto;transition:opacity .35s var(--ease);}
.nav__links{display:flex;gap:clamp(16px,1.9vw,32px);align-items:center;}
.nav__links a{font-size:.8rem;letter-spacing:.02em;color:var(--cream-d);transition:color .25s;}
.nav__links a:hover{color:var(--cream);}
/* hamburguesa (oculta en desktop) */
.nav__toggle{display:none;background:none;border:0;cursor:pointer;width:42px;height:42px;flex:0 0 auto;
  align-items:center;justify-content:center;color:var(--cream);margin:-8px -10px -8px 0;}
.nav--light .nav__toggle{color:var(--ink);}
.nav__toggle span,.nav__toggle span::before,.nav__toggle span::after{content:"";display:block;width:22px;height:2px;background:currentColor;border-radius:2px;transition:transform .3s var(--ease),opacity .2s;}
.nav__toggle span{position:relative;}
.nav__toggle span::before{position:absolute;left:0;top:-7px;}
.nav__toggle span::after{position:absolute;left:0;top:7px;}
.nav--open .nav__toggle span{background:transparent;}
.nav--open .nav__toggle span::before{top:0;transform:rotate(45deg);}
.nav--open .nav__toggle span::after{top:0;transform:rotate(-45deg);}
body.nav-locked{overflow:hidden;}
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 22px;border-radius:1px;font-family:var(--mono);
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500;transition:transform .3s var(--ease),background .3s,color .3s;}
.btn--solid{background:transparent;color:var(--cream);border:1px solid rgba(244,240,230,.55);}
.btn--solid:hover{background:rgba(244,240,230,.12);border-color:var(--cream);}
.btn--ghost{border:1px solid var(--line-2);color:var(--ink);}
.btn--ghost:hover{background:rgba(42,38,32,.06);}
.btn--terra{background:var(--terra-deep);color:var(--cream);}
.btn--terra:hover{background:var(--terra);}

/* ---------- HERO · portada estática (render fachada · textos en el cielo, sin tapar) ---------- */
.hero{position:relative;height:100svh;min-height:600px;overflow:hidden;background:var(--carbon);}
.hero__media{position:absolute;inset:0;z-index:0;}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:center 42%;transform:scale(1.045);transition:transform 9s var(--ease);}
.hero.in .hero__media img{transform:scale(1);}
.hero__scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(46% 36% at 21% 46%,rgba(14,14,12,.5) 0%,rgba(14,14,12,0) 72%),
    linear-gradient(180deg,rgba(14,14,12,.5) 0%,rgba(14,14,12,.16) 26%,rgba(14,14,12,0) 46%,rgba(14,14,12,0) 70%,rgba(14,14,12,.34) 100%);}
.hero__ui{position:absolute;inset:0;z-index:2;pointer-events:none;}
/* logo idéntico a la portada del brochure (p01): crema · alto ~19vh · top 35% · casi a ras izq · SIN sombra (el scrim da legibilidad) */
.hero__brand{position:absolute;left:clamp(62px,11vw,176px);top:35%;pointer-events:auto;display:block;
  height:clamp(110px,19vh,210px);}
.hero__brand img{height:100%;width:auto;display:block;}
@media(max-width:600px){.hero__brand{height:clamp(74px,10vh,112px);left:0;right:0;margin-inline:auto;width:max-content;transform:none;top:30%;}}
.scrollcue{font-family:var(--mono);font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;color:rgba(244,240,230,.55);
  display:flex;align-items:center;gap:9px;}
.scrollcue::after{content:"";width:1px;height:24px;background:linear-gradient(var(--cream),transparent);animation:cue 1.9s var(--ease) infinite;}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top;opacity:0;}40%{transform:scaleY(1);opacity:1;}100%{transform:scaleY(1);transform-origin:bottom;opacity:0;}}

/* ---------- SECTION shells ---------- */
.sec{padding:clamp(44px,7vh,84px) 0;background:var(--paper);}
.sec--2{background:var(--paper-2);}
.sec--ink{background:var(--stone);color:var(--cream);position:relative;isolation:isolate;}
.sec--ink::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:url(assets/texture/paper-linen.png);background-size:360px 360px;
  mix-blend-mode:soft-light;opacity:.55;}
.sec--ink h2,.sec--ink h3{color:var(--cream);}
.sec-head{max-width:none;margin:0 auto clamp(22px,3.5vh,40px);text-align:center;}
.sec-head .eyebrow{justify-content:center;margin-bottom:18px;}
.sec-head h2{font-size:var(--t-2);}
.sec-head p{margin-top:18px;max-width:64ch;margin-inline:auto;}
/* header editorial en 2 columnas (título izq + bajada der · usa el ancho, no compacta) */
.sec-head--split{max-width:none;text-align:left;margin:0 0 clamp(22px,3.5vh,40px);display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(20px,4vw,56px);align-items:end;}
.sec-head--split .eyebrow{grid-column:1/-1;justify-content:flex-start;margin-bottom:6px;}
.sec-head--split h2{margin:0;}
.sec-head--split p{margin:0;align-self:end;max-width:42ch;}
@media(max-width:760px){.sec-head--split{grid-template-columns:1fr;gap:14px;}}
.firmas-foot{font-family:var(--mono);font-size:.6rem;letter-spacing:.08em;color:var(--cream-d);margin-top:clamp(22px,3.4vh,38px);text-align:center;}
/* INVERSIÓN · ilustración de línea "riega tu inversión" + esquema 3 pasos (Samuel 2026-06-08, copia del iconito) */
.inv-stage{display:grid;grid-template-columns:minmax(230px,.82fr) 1fr;gap:clamp(30px,5vw,76px);align-items:center;margin:clamp(34px,6vh,72px) 0 clamp(26px,4vh,52px);}
.inv-ill{margin:0;display:flex;justify-content:center;}
/* icono canónico de Samuel (cwDYv01.svg) · se anima como elemento completo: wipe de abajo→arriba (como llenándose/creciendo) + rise, luego flota suave */
.ill{width:100%;max-width:296px;height:auto;display:block;opacity:0;transform:translateY(18px);clip-path:inset(100% 0 0 0);}
.inv-stage.in .ill{animation:illRise .55s var(--ease) .15s forwards, illWipe 1.2s cubic-bezier(.5,0,.2,1) .15s forwards, illFloat 5.5s ease-in-out 1.7s infinite;}
@keyframes illRise{to{opacity:1;transform:translateY(0);}}
@keyframes illWipe{to{clip-path:inset(0 0 0 0);}}
@keyframes illFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
@media(prefers-reduced-motion:reduce){.ill{opacity:1;transform:none;clip-path:none;animation:none;}}
/* esquema · 3 pasos */
.inv-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.inv-steps li{display:grid;grid-template-columns:auto 1fr;column-gap:18px;align-items:start;padding:clamp(15px,2.3vh,24px) 0;border-bottom:1px solid var(--line);}
.inv-steps li:first-child{padding-top:0;}
.inv-steps li:last-child{border-bottom:0;padding-bottom:0;}
.inv-steps .st-n{grid-row:1/3;font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;color:var(--terra-deep);padding-top:5px;}
.inv-steps h4{margin:0 0 4px;font-family:var(--serif);font-weight:500;font-size:clamp(1.18rem,2.1vw,1.5rem);color:var(--ink);line-height:1.05;}
.inv-steps p{margin:0;color:var(--ink-2);font-size:.96rem;line-height:1.52;}
@media(max-width:820px){.inv-stage{grid-template-columns:1fr;gap:clamp(20px,5vh,38px);}.ill{max-width:250px;}}
.inv-foot{margin:clamp(18px,3vh,30px) auto 0;font-family:var(--mono);font-size:.62rem;letter-spacing:.04em;color:var(--ink-3);max-width:60ch;text-align:center;}
/* INVERSIÓN · lupa de palabras clave (reemplaza el doodle · efecto magnify on-brand,
   paleta papel/tinta/sage · la lente sigue el cursor en desktop y deriva sola en touch) */
.inv-lens{margin:0;}
/* la lente NO va dentro del overflow:hidden (si no se RECORTA en los bordes) ·
   el panel + palabras se recortan en .lens-field; la lupa flota encima sin clip */
.lens-cloud{position:relative;width:100%;max-width:430px;margin-inline:auto;aspect-ratio:1;}
/* sizer EN FLUJO: hijos todos absolute (.lens-field/.lens/.kw) → WebKit ignora
   aspect-ratio y la nube colapsa a 0 (la lupa de inversión desaparecía en Safari). */
.lens-cloud::before{content:"";display:block;padding-top:100%;}
.lens-field{position:absolute;inset:0;border-radius:16px;border:1px solid var(--line);overflow:hidden;
  background:radial-gradient(125% 125% at 32% 22%, var(--paper) 0%, var(--paper-2) 58%, var(--paper-3) 100%);
  -webkit-mask:radial-gradient(140% 140% at 50% 50%, #000 72%, transparent 100%);
          mask:radial-gradient(140% 140% at 50% 50%, #000 72%, transparent 100%);}
@media(hover:hover){.lens-cloud{cursor:none;}}
.kw{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%) scale(var(--s,1));
  font-family:var(--serif);font-weight:400;font-size:1.16rem;letter-spacing:-.01em;white-space:nowrap;
  color:var(--ink);opacity:.17;filter:blur(.4px);
  transition:opacity .45s var(--ease),color .45s var(--ease),filter .45s var(--ease),transform .5s var(--ease);}
.kw.is-focus{opacity:1;color:var(--terra-deep);filter:none;font-weight:600;text-shadow:0 1px 0 var(--paper);
  transform:translate(-50%,-50%) scale(calc(var(--s,1) * 1.4));}
.lens{position:absolute;left:var(--lx,50%);top:var(--ly,50%);width:38%;aspect-ratio:1;z-index:3;pointer-events:none;
  transform:translate(-50%,-50%);border-radius:50%;border:2px solid var(--gold);
  background:radial-gradient(circle at 38% 30%, rgba(255,255,255,.5), rgba(247,245,241,.10) 48%, rgba(142,158,120,.05) 100%);
  box-shadow:0 12px 32px -14px rgba(42,38,32,.45), inset 0 0 0 6px rgba(255,255,255,.22);
  -webkit-backdrop-filter:saturate(1.12) brightness(1.03);backdrop-filter:saturate(1.12) brightness(1.03);
  transition:left .32s var(--ease),top .32s var(--ease);}
.lens::after{content:"";position:absolute;right:-13%;bottom:-13%;width:32%;height:8px;border-radius:6px;
  background:var(--gold);transform:rotate(45deg);transform-origin:left center;box-shadow:0 1px 4px rgba(42,38,32,.3);}
@media(max-width:820px){.lens-cloud{max-width:360px;}.kw{font-size:1rem;}}
.sec--ink .lede{color:var(--cream-d);}

/* ---------- EL LUGAR ---------- */
.facts{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(24px,5vw,72px);}
.facts .s{text-align:center;}
.facts .s b{display:block;font-family:var(--serif);font-size:clamp(2.4rem,5vw,4rem);font-weight:400;letter-spacing:-.02em;line-height:1;color:var(--ink);}
.facts .s b i{color:var(--terra-deep);font-size:.42em;font-style:normal;font-family:var(--mono);font-weight:500;letter-spacing:.04em;margin-left:2px;}
.facts .s span{display:block;margin-top:11px;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}

/* #lugar · mapa completo a la izquierda + FRANJA blanca a la derecha con el texto */
.lugar-slide{display:grid;grid-template-columns:1fr clamp(330px,35%,470px);min-height:100svh;background:#CDCCC8;}
.lugar-map-bg{position:relative;overflow:hidden;background:#EDEAE3;}
.lugar-map{position:absolute;inset:0;width:100%;height:100%;background:#EDEAE3;z-index:0;}
.lugar-map:empty{background:#EDEAE3 url(assets/map/ubicacion-wide.jpg) center/cover;} /* fallback si Leaflet no carga */
.lugar-map .leaflet-basemap-pane .leaflet-tile{filter:url(#mapEditorial);} /* stretch editorial SOLO al mapa base, por-tile (sin amplificar seams) */
.lugar-map .leaflet-labels-pane{filter:grayscale(1) contrast(1.12) brightness(.74);} /* avenidas legibles, monocromo on-brand */
@media(max-width:820px){.lugar-map .leaflet-labels-pane{filter:grayscale(1) contrast(1.18) brightness(.66);}} /* móvil: nombres más nítidos */
.lugar-map.is-live{cursor:grab;} .lugar-map.is-live:active{cursor:grabbing;}
.lugar-map .leaflet-container{background:#EDEAE3;font-family:var(--sans);outline:none;}
.lugar-map .leaflet-control-attribution{background:rgba(255,255,255,.66);font-size:9px;color:var(--ink-3);}
.lugar-map .leaflet-control-attribution a{color:var(--ink-2);}
.lugar-map .leaflet-bar a{color:var(--ink);border-color:var(--line);}
.lugar-map-bg::after{content:"";position:absolute;inset:0;z-index:401;pointer-events:none;background:#E8E2D6;mix-blend-mode:multiply;opacity:.15;}
/* VELO de activación · mapa bloqueado por defecto (no captura scroll → la página scrollea normal) */
.lugar-veil{position:absolute;inset:0;z-index:402;display:grid;place-items:center;cursor:pointer;border:0;
  background:rgba(237,234,227,.22);-webkit-backdrop-filter:blur(.4px);backdrop-filter:blur(.4px);
  transition:opacity .45s var(--ease),background .45s;font:inherit;}
.lugar-veil:hover{background:rgba(237,234,227,.12);}
.lugar-veil.gone{opacity:0;pointer-events:none;}
.lugar-veil__cta{font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);
  background:rgba(255,255,255,.9);padding:10px 18px;border-radius:2px;box-shadow:0 6px 22px rgba(20,18,15,.14);}
.lugar-veil__cta i{font-style:normal;color:var(--verde-deep,var(--ink));font-weight:700;}
.lugar-veil__cta[data-touch]{display:none;}
@media(hover:none),(max-width:820px){.lugar-veil__cta[data-desktop]{display:none;}.lugar-veil__cta[data-touch]{display:inline-block;}}
.lugar-hint{position:absolute;right:14px;bottom:14px;z-index:500;pointer-events:none;font-family:var(--mono);
  font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);background:rgba(255,255,255,.74);
  padding:6px 10px;border-radius:2px;transition:opacity .6s;}
.lugar-hint.hide{opacity:0;}
.lugar-map .leaflet-div-icon{background:none;border:none;}
/* marcador Baalá · beacon */
.mk-baala .ring{position:absolute;left:0;top:0;width:15px;height:15px;border-radius:50%;border:2px solid var(--verde);
  transform:translate(-50%,-50%);animation:beacon 2.4s var(--ease) infinite;}
.mk-baala .pin{position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:var(--verde);
  transform:translate(-50%,-50%);box-shadow:0 0 0 3px rgba(255,255,255,.92),0 2px 9px rgba(0,0,0,.32);}
.mk-baala .lbl{position:absolute;left:0;top:13px;transform:translateX(-50%);white-space:nowrap;font-weight:700;
  font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);text-shadow:0 1px 5px rgba(255,255,255,.95);}
@keyframes beacon{0%{width:15px;height:15px;opacity:.7;}100%{width:62px;height:62px;opacity:0;}}
/* POI markers + tooltip */
.mk-poi .dot{position:absolute;left:0;top:0;width:9px;height:9px;border-radius:50%;border:2px solid var(--verde);
  background:#fff;transform:translate(-50%,-50%);transition:transform .25s;}
.mk-poi:hover .dot{transform:translate(-50%,-50%) scale(1.35);}
.leaflet-tooltip.poi-tip{background:#fff;border:1px solid var(--line);border-radius:2px;color:var(--ink);
  font-family:var(--sans);font-size:.64rem;font-weight:600;letter-spacing:.04em;box-shadow:0 5px 16px rgba(0,0,0,.13);padding:5px 9px;}
.leaflet-tooltip.poi-tip::before{display:none;}
.poi-tip .t{color:var(--verde-deep);font-weight:700;}
/* PUNTOS CLAVE · pin + etiqueta SIEMPRE visible (nombre + tiempo) · legible sin hover (móvil) */
.mk-key .dot{position:absolute;left:0;top:0;width:13px;height:13px;border-radius:50%;background:var(--verde);
  border:2px solid var(--cream);transform:translate(-50%,-50%);box-shadow:0 1px 6px rgba(20,18,15,.5);}
/* pill RELLENA en verde marca + texto crema → resalta fuerte sobre el mapa B&N */
.mk-key .lbl{position:absolute;left:0;top:9px;transform:translateX(-50%);margin-top:4px;display:inline-flex;align-items:center;gap:5px;
  white-space:nowrap;background:var(--verde);border:1px solid var(--verde-deep);border-radius:5px;padding:3px 9px;
  box-shadow:0 3px 12px rgba(20,18,15,.34);font-family:var(--sans);}
.mk-key .lbl b{font-size:.66rem;font-weight:700;letter-spacing:.01em;color:var(--cream);}
.mk-key .lbl i{font-style:normal;font-family:var(--mono);font-size:.58rem;font-weight:700;letter-spacing:.04em;color:var(--cream);opacity:.84;
  padding-left:6px;border-left:1px solid rgba(244,240,230,.4);}
.mk-key .lbl .arr{font-style:normal;font-weight:800;color:var(--cream);font-size:.74rem;line-height:1;}
/* puntos al borde inferior (aeropuerto, Anáhuac): etiqueta ARRIBA del pin para no cortarse */
.mk-key--up .lbl{top:auto;bottom:9px;margin-top:0;margin-bottom:4px;}
@media(max-width:820px){.mk-key .lbl{padding:2px 7px;}.mk-key .lbl b{font-size:.6rem;}.mk-key .lbl i{font-size:.54rem;}}
/* etiquetas de región (serif italic, no interactivas) */
.mk-region{font-family:Georgia,serif;font-style:italic;color:var(--ink);opacity:.52;white-space:nowrap;font-size:.92rem;
  letter-spacing:.03em;text-shadow:0 1px 3px rgba(255,255,255,.75);transform:translate(-50%,-50%);}
.mk-region.big{font-style:normal;font-family:var(--sans);letter-spacing:.34em;font-size:.82rem;opacity:.42;text-transform:uppercase;}
.lugar-franja{display:flex;flex-direction:column;justify-content:center;gap:clamp(15px,2.1vh,24px);
  background:var(--paper);padding:clamp(44px,6vh,92px) clamp(30px,3vw,60px);box-shadow:-1px 0 0 var(--line);min-width:0;}
.lugar-franja .eyebrow{justify-content:flex-start;margin:0;color:var(--ink-3);}
.lugar-franja h2{font-size:clamp(2rem,2.5vw,3.1rem);font-weight:500;line-height:1.07;letter-spacing:-.015em;color:var(--ink);margin:0;}
.lugar-franja .serif-accent{font-style:italic;color:var(--ink);}
.lugar-kpis{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2vh,24px) 20px;
  border-top:1px solid var(--line);padding-top:clamp(18px,2.4vh,26px);margin-top:clamp(4px,1vh,10px);}
.mk{display:flex;flex-direction:column;gap:4px;}
.mk-n{font-weight:300;font-size:clamp(1.7rem,2.2vw,2.2rem);line-height:1;letter-spacing:-.01em;color:var(--ink);}
.mk-n i{font-style:normal;font-weight:500;font-size:.4em;color:var(--ink-3);margin-left:3px;}
.mk-l{font-size:.59rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);}
.lugar-desc{font-size:clamp(.92rem,1vw,1.02rem);line-height:1.6;color:var(--ink-2);max-width:40ch;margin:0;}
@media(max-width:820px){
  .lugar-slide{grid-template-columns:1fr;min-height:0;align-content:start;}
  .lugar-map-bg{height:56vh;}
  .lugar-franja{padding:clamp(34px,5vh,54px) var(--pad);box-shadow:none;}
}
.mapwrap{margin-top:clamp(38px,6vh,66px);border:1px solid var(--line);border-radius:3px;overflow:hidden;
  position:relative;background:var(--paper-2);aspect-ratio:16/9;}
.mapwrap img{width:100%;height:100%;object-fit:cover;display:block;}
@media(max-width:600px){.mapwrap{aspect-ratio:4/5;}}
.mapcap{position:absolute;left:0;bottom:0;padding:14px 18px;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-2);background:linear-gradient(0deg,rgba(243,239,232,.9),transparent);}

/* ---------- CINEMATIC full-bleed ---------- */
.cine{position:relative;height:100svh;min-height:520px;display:grid;place-items:center;overflow:hidden;background:var(--carbon);}
.cine__bg{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--carbon);}
.cine__bg .blur{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(32px) brightness(.46) saturate(1.05);transform:scale(1.15);}
.cine__bg .full{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 1.8s var(--ease);}
.cine.in .cine__bg .full{transform:scale(1);}
.cine__scrim{position:absolute;inset:0;z-index:1;
  background:radial-gradient(120% 80% at 50% 46%,rgba(14,14,12,.58),rgba(14,14,12,.1) 66%),
    linear-gradient(180deg,rgba(14,14,12,.5),rgba(14,14,12,.08) 30%,rgba(14,14,12,.2) 62%,rgba(14,14,12,.8));}
.cine__in{position:relative;z-index:2;text-align:center;padding:0 var(--pad);max-width:min(92vw,920px);color:var(--cream);
  opacity:0;transform:translateY(28px);transition:opacity 1.05s var(--ease),transform 1.05s var(--ease);}
.cine.in .cine__in{opacity:1;transform:none;}
.cine__in .eyebrow{justify-content:center;color:var(--gold);margin-bottom:18px;}
.cine__in h2{font-size:var(--t-display);font-weight:400;text-shadow:0 3px 44px rgba(0,0,0,.5);}
.cine__in h2 em{color:var(--gold);}
.cine__in p{margin-top:20px;font-size:var(--t-lede);line-height:1.6;max-width:48ch;margin-inline:auto;
  color:rgba(244,240,230,.92);text-shadow:0 1px 18px rgba(0,0,0,.6);}
.cine__foot{position:absolute;z-index:2;left:0;right:0;bottom:clamp(24px,5vh,52px);
  display:flex;justify-content:center;gap:clamp(24px,5vw,72px);flex-wrap:wrap;padding:0 var(--pad);
  opacity:0;transition:opacity 1.1s var(--ease) .3s;}
.cine.in .cine__foot{opacity:1;}
.cine__foot .s{text-align:center;color:var(--cream);}
.cine__foot .s b{display:block;font-family:var(--serif);font-size:clamp(1.8rem,3.2vw,2.8rem);font-weight:400;line-height:1;letter-spacing:-.02em;}
.cine__foot .s span{display:block;margin-top:8px;font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(244,240,230,.74);}


/* ---------- PLAZA · "Baalá" knockout + zoom-through (estilo text-mask-video · imagen full-bleed + capa sólida recortada que hace zoom hasta ENTRAR a la imagen) ---------- */
/* ── LAS RESIDENCIAS · título de sección centrado ── */
.res-intro{background:var(--paper);padding:clamp(74px,13vh,152px) 0 clamp(46px,8vh,92px);text-align:center;}
.res-intro__in{max-width:min(880px,90vw);margin-inline:auto;padding-inline:var(--pad);}
.res-intro .eyebrow{justify-content:center;}
.res-intro__h{font-size:clamp(2.8rem,6.6vw,5.8rem);font-weight:500;line-height:1;letter-spacing:-.018em;margin-top:18px;color:var(--ink);}
.res-intro__h em{font-style:italic;color:var(--terra-deep);}
.res-intro__lede{margin:22px auto 0;max-width:54ch;color:var(--ink-2);font-size:var(--t-lede);line-height:1.6;}
/* overline numerado de cada split (recorrido editorial de detalle) */
.split__num{font-family:var(--mono);font-size:.66rem;letter-spacing:.22em;color:var(--gold);margin-bottom:16px;display:flex;align-items:center;gap:13px;}
.split__num::after{content:"";flex:0 0 40px;height:1px;background:var(--line-2);}
@media(max-width:640px){.tz-foot{flex-direction:column;align-items:flex-start;gap:14px;}.tz-meta{text-align:left;}.tz-cap{max-width:28ch;}.tz-facts b{font-size:1.05rem;}}

/* ---------- ANATOMY (sticky building) ---------- */
.anat{position:relative;background:#fff;color:var(--ink);isolation:isolate;}
.anat::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:url(assets/texture/paper-linen.png);background-size:360px 360px;
  mix-blend-mode:multiply;opacity:.04;}
.anat__grid{display:grid;grid-template-columns:1.46fr .54fr;align-items:start;max-width:var(--maxw);margin-inline:auto;}
.anat__stage{position:sticky;top:0;height:100svh;overflow:hidden;}
.anat__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.anat__stage::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,14,12,.2),rgba(14,14,12,.62));}
/* STAGE de axonométricos · fondo claro · edificio completo sin recortar (contain) · cross-fade por nivel */
.anat__stage--axo{background:#fff;}
.anat__stage--axo::after{display:none;}
.axo-stack{position:absolute;inset:0;}
.axo-stack .axo{position:absolute;inset:0;opacity:0;transition:opacity .8s var(--ease);}
.axo-stack .axo.show{opacity:1;}
.axo-stack .axo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:left center;padding:clamp(8px,1.6vh,22px);}
/* FLECHAS · punto sobre la parte del edificio + línea + label · solo la activa visible */
.axo-notes{position:absolute;inset:0;z-index:3;pointer-events:none;}
/* tablero en lo blanco + línea hacia el punto sobre la parte (como el dibujo de Samuel) */
.axo-note{position:absolute;inset:0;opacity:0;transition:opacity .5s var(--ease);}
.axo-note.active{opacity:1;}
.axo-note .line{position:absolute;left:var(--lx);top:var(--y);width:calc(var(--x) - var(--lx));height:1.5px;background:var(--gold);transform:translateY(-50%);}
.axo-note .tip{position:absolute;left:var(--x);top:var(--y);width:9px;height:9px;border-radius:50%;background:var(--gold);
  transform:translate(-50%,-50%);box-shadow:0 0 0 4px rgba(255,255,255,.92),0 2px 8px rgba(0,0,0,.18);}
.axo-note .lbl{position:absolute;left:var(--lx);top:var(--y);transform:translateY(-50%);white-space:nowrap;
  background:rgba(255,255,255,.97);padding:7px 13px;border-radius:3px;box-shadow:0 4px 16px rgba(20,18,15,.12);
  font-family:var(--serif);font-size:1.02rem;color:var(--ink);}
.axo-note .lbl b{display:block;font-family:var(--mono);font-size:.55rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:2px;}
/* variante vertical (andador): tablero abajo-centro, línea sube al path */
.axo-note--up .line{left:var(--x);top:var(--y);width:1.5px;height:calc(var(--ly) - var(--y));transform:translateX(-50%);}
.axo-note--up .lbl{left:var(--x);top:var(--ly);transform:translate(-50%,0);}
.anat__scroll{padding:8vh 0 12vh;} /* runway corto: el stage se despega justo cuando el último nivel (Rooftop) ya se activó · sin hueco blanco */
.layer{min-height:56vh;display:flex;flex-direction:column;justify-content:center;padding:0 clamp(20px,2.4vw,40px) 0 clamp(20px,2.4vw,44px);
  opacity:.34;transition:opacity .5s var(--ease);}
.layer.active{opacity:1;}
.layer .num{font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;color:var(--gold);}
.layer h3{font-size:clamp(1.5rem,2.2vw,2.1rem);font-weight:400;margin:12px 0 12px;line-height:1.12;}
.layer p{font-size:.98rem;line-height:1.58;color:var(--ink-2);max-width:36ch;}
.layer .meta{margin-top:16px;display:flex;gap:20px;flex-wrap:wrap;}
.layer .meta b{font-family:var(--serif);font-size:1.5rem;font-weight:400;color:var(--ink);}
.layer .meta span{display:block;font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:3px;}
.anchors{max-width:var(--maxw);margin:0 auto;padding:2.4vh var(--pad) clamp(40px,7vh,72px);text-align:center;font-size:.96rem;color:var(--ink-2);}
.anchors b{color:var(--gold);font-weight:600;}

/* ---------- EDITORIAL SPLIT ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;background:var(--paper);}
.split--2{background:var(--paper);}
.split__media{position:relative;overflow:hidden;min-height:clamp(380px,74svh,840px);}
.split__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.07);transition:transform 9s var(--ease);}
.split.in .split__media img{transform:scale(1);}
.split__panel{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,6vw,108px);}
.split__panel .eyebrow{margin-bottom:18px;}
.split__panel h2{font-size:var(--t-2);font-weight:500;}
.split__panel h2 em{color:var(--terra-deep);}
.split__panel .lede{margin-top:18px;max-width:42ch;}
.split__spec{margin-top:32px;display:flex;flex-wrap:wrap;gap:clamp(22px,3vw,48px);}
.split__spec .s b{display:block;font-family:var(--serif);font-size:clamp(1.6rem,2.4vw,2.3rem);font-weight:400;line-height:1;letter-spacing:-.02em;color:var(--ink);}
.split__spec .s span{display:block;margin-top:8px;font-family:var(--mono);font-size:.64rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);}
.split--flip .split__media{order:2;}
/* móvil: la imagen va EN FLUJO (no absolute) y carga su propio aspect-ratio.
   WebKit (iOS Safari ≤16.3) colapsa a 0 una caja con solo aspect-ratio cuyo
   contenido es absolute → las imágenes desaparecían. En flujo, el <img> genera
   altura real y es a prueba de motores. */
@media(max-width:880px){.split{grid-template-columns:1fr;}.split__media{min-height:0;aspect-ratio:auto;}.split__media picture{display:block;}.split__media img{position:relative;width:100%;height:auto;aspect-ratio:4/3;transform:none;}.split--flip .split__media{order:0;}}

/* ---------- PLANS (selector tipologías · card estilo brochure) ---------- */
/* PLANTA GENERAL (master) */
.pgral-sec{padding:clamp(40px,6vh,76px) 0 clamp(18px,2.5vh,32px);background:var(--paper);}
.pgral-sec .plans-head{max-width:660px;margin:0 0 clamp(16px,2.4vh,28px);}
.pgral-frame{max-width:var(--maxw);margin:0 auto;border:1px solid rgba(34,31,27,.07);border-radius:8px;background:#fff;
  box-shadow:0 2px 24px rgba(20,18,15,.06);overflow:hidden;padding:clamp(12px,1.8vw,28px);}
.pgral-frame img{width:100%;height:auto;display:block;}
.plantas-sec{padding:clamp(48px,7vh,86px) 0 clamp(44px,6vh,76px);background:var(--paper);}
.plans-head{max-width:660px;margin:0 0 clamp(16px,2.6vh,28px);text-align:left;}
.plans-head .eyebrow{justify-content:flex-start;color:var(--ink-3);margin-bottom:14px;}
.plans-head h2{font-size:clamp(1.9rem,3.3vw,3rem);}
.plans-head .lede{margin-top:12px;max-width:54ch;}
/* LÁMINA (como brochure): plano IZQUIERDA (cabe en pantalla) · selector+stats DERECHA (donde iba la descripción) */
.plans{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:clamp(132px,14%,170px) minmax(0,1fr) clamp(320px,34%,420px);gap:clamp(16px,2.2vw,34px);align-items:start;}
.pmedia{display:flex;flex-direction:column;gap:14px;min-width:0;}
.pmed{margin:0;}
.pmed .pmini-frame{border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff;aspect-ratio:4/3;box-shadow:0 2px 14px rgba(20,18,15,.06);}
.pmed .pmini-frame img{width:100%;height:100%;object-fit:contain;padding:8px;}
.pmed-vista .pmini-frame img{object-fit:cover;padding:0;}
.pmed figcaption{margin-top:6px;font-size:.53rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.pfig{position:relative;border:1px solid rgba(34,31,27,.07);border-radius:8px;background:#fff;
  box-shadow:0 2px 24px rgba(20,18,15,.06);height:clamp(400px,64vh,500px);display:flex;flex-direction:column;overflow:hidden;}
.pfig-plan{flex:1 1 auto;min-height:0;display:grid;place-items:center;overflow:hidden;}
.pfig img{width:100%;height:100%;object-fit:contain;padding:clamp(14px,1.6vw,26px);opacity:0;transition:opacity .45s var(--ease);}
.pfig img.show{opacity:1;}
.pside{display:flex;flex-direction:column;gap:7px;min-width:0;}
.pside .plans-head{margin:0 0 1px;}
.pside .plans-head .eyebrow{justify-content:flex-start;color:var(--ink-3);margin-bottom:5px;}
.pside .plans-head h2{font-size:clamp(1.2rem,1.7vw,1.6rem);}
.plist{display:flex;flex-direction:column;gap:3px;}
.plist-group{font-family:var(--mono);font-size:.56rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin:8px 0 2px;}
.plist-group:first-child{margin-top:0;}
.pbtn{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;width:100%;cursor:pointer;
  padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);transition:border-color .2s var(--ease),background .2s;}
.pbtn:hover{border-color:var(--line-2);}
.pbtn.active{border-color:var(--verde);background:rgba(94,106,82,.06);}
.pc-name{font-size:.77rem;font-weight:400;color:var(--ink);line-height:1.1;display:flex;align-items:center;gap:7px;min-width:0;}
.pc-op{font-style:normal;font-family:var(--mono);font-size:.52rem;font-weight:600;letter-spacing:.04em;color:var(--verde-deep);background:rgba(94,106,82,.12);padding:2px 6px;border-radius:999px;white-space:nowrap;}
.pc-total{flex:0 0 auto;font-family:var(--mono);font-weight:600;font-size:.69rem;color:var(--ink-2);white-space:nowrap;}
.pc-total i{font-style:normal;font-size:.82em;color:var(--ink-3);}
.pbtn.active .pc-total{color:var(--verde-deep);}
.popts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.popts-label{flex:1 1 100%;font-family:var(--mono);font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.popt{border:1px solid var(--line);background:#fff;cursor:pointer;font-family:var(--mono);font-size:.58rem;color:var(--ink-2);padding:5px 13px;border-radius:999px;transition:.2s;}
.popt:hover{border-color:var(--line-2);color:var(--ink);}
.popt.active{background:var(--verde);color:#fff;border-color:var(--verde);}
.pcode{display:flex;align-items:baseline;gap:10px;}
.pcode-name{font-size:.58rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);}
.pmeta{display:grid;grid-template-columns:repeat(5,1fr);gap:8px 10px;padding-top:9px;border-top:1px solid var(--line);}
.pmeta .s span{display:block;font-size:.49rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:3px;}
.pmeta .s b{display:block;font-weight:500;font-size:clamp(.95rem,1.2vw,1.2rem);color:var(--ink);line-height:1;letter-spacing:-.01em;}
.pmeta .s b small{font-size:.5em;color:var(--ink-3);margin-left:2px;font-weight:500;}
.prail-imgs{display:flex;gap:10px;margin-top:2px;}
.pmini{margin:0;flex:1 1 0;max-width:128px;}
.pmini-frame{border:1px solid var(--line);border-radius:4px;overflow:hidden;background:#fff;aspect-ratio:3/2;}
.pkey .pmini-frame img{width:100%;height:100%;object-fit:contain;padding:6px;}
.pvista .pmini-frame img{width:100%;height:100%;object-fit:cover;}
.pmini figcaption{margin-top:5px;font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);}
.pnote{max-width:var(--maxw);margin:14px auto 0;font-size:.72rem;color:var(--ink-3);text-wrap:pretty;}
@media(max-width:900px){
  .plans{grid-template-columns:1fr;gap:18px;}
  .pfig{height:auto;aspect-ratio:4/3;order:1;}
  .pmedia{order:2;flex-direction:row;}
  .pmed{flex:1 1 0;max-width:200px;}
  .pside{order:3;}
}
@media(max-width:520px){.pmeta{grid-template-columns:repeat(3,1fr);}}

/* ---------- AMENIDADES · panorama horizontal scroll-driven (patrón MDP cine-hpan) ----------
   Sección pin + track horizontal movido por scroll vertical vía animation-timeline:view().
   Sin JS · GPU compositor. Fallback @supports not → overflow-x nativo. */
/* Horizontal scroll robusto = GSAP ScrollTrigger (pin + translate) · efecto 06 · cross-browser */
.cine-hpan{position:relative;background:var(--paper);overflow:clip;}
.cine-hpan-pin{height:100svh;width:100%;overflow:hidden;display:flex;align-items:center;}
.cine-hpan-track{display:flex;gap:clamp(16px,1.8vw,30px);padding:0 4vw;align-items:center;height:90vh;width:max-content;will-change:transform;}
/* fallback · sin GSAP o reduced-motion → scroll horizontal nativo (sin pin) */
.cine-hpan.no-st .cine-hpan-pin{height:auto;overflow-x:auto;overflow-y:hidden;padding:6vh 0;
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.cine-hpan.no-st .cine-hpan-pin::-webkit-scrollbar{display:none;}
.cine-hpan.no-st .hp-shot{scroll-snap-align:center;}
/* cada panel = imagen COMPLETA · box con la proporción REAL (--ar) → cover sin recorte ni letterbox · ancho estable = scroll fluido */
.hp-shot{flex:0 0 auto;position:relative;margin:0;height:90vh;aspect-ratio:var(--ar,1.5);border-radius:5px;overflow:hidden;background:var(--paper-2);}
.hp-shot img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;}
.hp-shot--plan{background:var(--paper);}
.hp-shot--plan img{object-fit:contain;}
/* etiqueta mínima · las imágenes hablan por sí solas */
.hp-label{position:absolute;left:0;right:0;bottom:0;z-index:2;pointer-events:none;display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;
  padding:clamp(34px,6vh,64px) clamp(18px,1.8vw,32px) clamp(16px,2.2vh,28px);
  background:linear-gradient(0deg,rgba(15,14,11,.66) 0%,rgba(15,14,11,.14) 55%,rgba(15,14,11,0) 100%);}
.hp-label .hp-name{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(1.35rem,1.9vw,2.05rem);line-height:1;color:#fff;}
.hp-label .hp-tag{font-family:var(--mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(244,240,230,.8);margin-left:auto;}
@media(hover:hover){.hp-shot:hover img{transition:transform .8s var(--ease);transform:scale(1.02);}}
/* intro · tarjeta clara */
/* AMENIDADES intro = LETRERO ILUMINADO (backlit · inspirado en signage arquitectónico tipo AXIOM) */
/* Amenidades · panel BLANCO + ARTESANAL (Samuel 2026-06-08): papel cálido + textura tejida
   sutil + subrayado hecho a mano bajo el título + acentos sage. (antes: card oscura con sign dorado) */
.hp-intro{flex:0 0 auto;width:clamp(360px,40vw,600px);height:84vh;display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(40px,4.5vw,72px) clamp(32px,3.4vw,56px);position:relative;isolation:isolate;overflow:hidden;
  background:radial-gradient(125% 95% at 28% 18%, var(--paper) 0%, var(--paper-2) 52%, var(--paper-3) 100%);
  border:1px solid var(--line);border-radius:14px;color:var(--ink);
  box-shadow:0 30px 70px -40px rgba(42,38,32,.28),inset 0 1px 0 rgba(255,255,255,.6);}
.hp-intro::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.8;
  background:repeating-linear-gradient(45deg, rgba(124,143,111,.04) 0 1px, transparent 1px 7px),
            radial-gradient(ellipse at 50% 28%, rgba(124,143,111,.11) 0%, transparent 66%);}
.hp-intro>*{position:relative;z-index:1;}
.hp-intro .eyebrow{justify-content:flex-start;color:var(--terra-deep);}
.hp-intro h2{font-family:var(--serif);font-weight:500;font-size:clamp(2.3rem,4.6vw,4.2rem);line-height:1.0;letter-spacing:-.016em;color:var(--ink);max-width:100%;}
.hp-intro h2 em{font-style:italic;color:var(--terra-deep);}
.hp-intro .hp-underline{display:block;width:clamp(150px,62%,270px);height:13px;margin:7px 0 0;color:var(--terra);overflow:visible;}
.hp-intro .hp-underline path{fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;}
.hp-intro .lede{font-size:var(--t-lede);line-height:1.58;color:var(--ink-2);max-width:40ch;}
.hp-intro .hpi-hint{display:inline-flex;align-items:center;gap:11px;align-self:flex-start;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.22em;text-transform:uppercase;color:var(--terra-deep);}
.hp-intro .hpi-hint svg{width:30px;height:9px;fill:none;stroke:currentColor;stroke-width:1.5;animation:hhint 1.9s var(--ease) infinite;}
@keyframes hhint{0%,100%{transform:translateX(0);opacity:.55;}50%{transform:translateX(7px);opacity:1;}}
@media(max-width:900px){
  .cine-hpan-track{gap:clamp(11px,2.4vw,18px);padding:0 6vw;height:78vh;}
  .hp-shot{height:62vh;}
  .hp-label .hp-name{font-size:clamp(1.15rem,4.6vw,1.5rem);}
  .hp-intro{width:clamp(280px,86vw,420px);height:62vh;padding:32px 26px;border-radius:12px;}
  .hp-intro h2{font-size:clamp(2.1rem,9vw,3rem);}
}

/* ---------- MASTER PLAN · planta de amenidades + Andador Contoy ---------- */
.masterplan{background:var(--paper-2);}
.mp-head{max-width:660px;margin:0 0 clamp(20px,3vh,34px);}
.mp-head .eyebrow{justify-content:flex-start;color:var(--ink-3);margin-bottom:14px;}
.mp-head h2{font-size:clamp(1.9rem,3.3vw,3rem);}
.mp-head h2 .serif-accent{font-style:italic;color:var(--terra-deep);}
.mp-head .lede{margin-top:12px;max-width:54ch;}
.mp-grid{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,30%,376px);
  gap:clamp(20px,3vw,46px);align-items:center;}
.mp-fig{margin:0;border:1px solid rgba(34,31,27,.08);border-radius:8px;background:#fff;box-shadow:0 2px 24px rgba(20,18,15,.06);
  overflow:hidden;padding:clamp(10px,1.4vw,20px);display:flex;align-items:center;justify-content:center;}
/* plano ambientado es portrait → cap por alto para que sea asertivo pero quepa en ~1 pantalla */
.mp-fig img{width:auto;height:auto;max-width:100%;max-height:82vh;display:block;border-radius:3px;}
.mp-notes{list-style:none;display:flex;flex-direction:column;gap:clamp(13px,1.8vh,18px);}
.mp-note{display:flex;gap:13px;align-items:flex-start;}
.mp-note i{flex:0 0 auto;width:27px;height:27px;border-radius:50%;background:var(--verde);color:#fff;font-style:normal;
  font-family:var(--mono);font-size:.68rem;font-weight:600;display:grid;place-items:center;margin-top:1px;}
.mp-note b{display:block;font-size:.98rem;color:var(--ink);font-weight:600;line-height:1.2;}
.mp-note span{display:block;margin-top:3px;font-size:.84rem;color:var(--ink-2);line-height:1.45;}
.mp-foot{max-width:var(--maxw);margin:clamp(16px,2.4vh,26px) auto 0;font-size:.8rem;line-height:1.6;color:var(--ink-3);text-wrap:pretty;}
.mp-foot b{color:var(--verde-deep);font-weight:600;}
@media(max-width:880px){.mp-grid{grid-template-columns:1fr;gap:26px;}.mp-fig{max-width:560px;margin-inline:auto;}}


/* ---------- INVERSION / LOCK-OFF ---------- */
.lock{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.lcard{padding:clamp(20px,2.4vw,32px);border:1px solid var(--line);border-radius:3px;background:var(--paper);}
.lcard__tag{font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--terra-deep);}
.lcard--rent .lcard__tag{color:var(--verde);}
.lcard h3{margin:14px 0 16px;font-size:clamp(1.4rem,2vw,1.9rem);font-weight:500;}
.lcard ul{list-style:none;display:flex;flex-direction:column;gap:10px;}
.lcard li{font-size:.98rem;color:var(--ink-2);padding-left:18px;position:relative;}
.lcard li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--terra);}
.lcard--rent li::before{background:var(--verde);}
.lcard .close{margin-top:18px;font-size:1.04rem;font-weight:500;color:var(--terra-deep);}
.inv{max-width:var(--maxw);margin:clamp(16px,2.4vh,28px) auto 0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.icard{padding:clamp(20px,2vw,28px);border:1px solid var(--line);border-radius:11px;position:relative;overflow:hidden;
  background:linear-gradient(168deg,#fff 0%,var(--paper-2) 100%);box-shadow:0 14px 30px -26px rgba(42,38,32,.45);
  opacity:0;transform:translateY(20px);
  transition:opacity .7s var(--ease),transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s var(--ease);}
.icard::before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;transform:scaleX(0);transform-origin:left;
  background:linear-gradient(90deg,var(--terra-deep),var(--terra-soft));transition:transform .45s var(--ease);}
.icard.in{opacity:1;transform:none;}
@media(hover:hover){.icard:hover{transform:translateY(-5px);box-shadow:0 24px 46px -26px rgba(42,38,32,.5);border-color:var(--line-2);}
  .icard:hover::before{transform:scaleX(1);}}
.icard .n{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;
  border:1px solid rgba(124,143,111,.45);background:rgba(124,143,111,.07);
  font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;color:var(--terra-deep);}
.icard h4{margin:15px 0 9px;font-family:var(--serif);font-size:1.26rem;font-weight:500;color:var(--ink);line-height:1.12;}
.icard p{font-size:.92rem;color:var(--ink-2);line-height:1.58;}
.inv--5{grid-template-columns:repeat(5,1fr);}
@media(max-width:980px){.lock{grid-template-columns:1fr;}.inv{grid-template-columns:repeat(2,1fr);}.inv--5{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.inv{grid-template-columns:1fr;}.inv--5{grid-template-columns:1fr;}}

/* ---------- EQUIPO ---------- */
/* EQUIPO · cards editoriales AMPLIAS con descripción tal cual el brochure +
   LED alrededor (mismo color · tenue) · Samuel 2026-06-08. Cada firma respira:
   logo + rol arriba, dato serif, párrafo completo. Hilton = card ancho de cierre. */
.equipo-head{max-width:780px;margin-bottom:clamp(34px,4vh,56px);}
.equipo-statement{font-family:var(--serif);font-weight:400;font-size:clamp(.9rem,1.3vw,1.1rem);line-height:1.4;letter-spacing:-.005em;color:var(--ink-2);margin:8px auto 0;max-width:58ch;}
/* Equipo · "Quiénes están detrás" = highlight (más grande); statement = subtítulo (más chico) · sección más compacta */
#equipo .equipo-head .eyebrow{font-size:clamp(.82rem,1.2vw,1.02rem);letter-spacing:.18em;color:var(--terra-deep);margin-bottom:12px;}
#equipo .firm .firm-fact{font-size:clamp(1.04rem,1.3vw,1.26rem);}
#equipo .firm-body{font-size:.86rem;}
.partners-grid{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,1.7vw,30px);}
/* cada card = panel amplio con LED ALREDEDOR (mismo color sage · tenue) */
.firm{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;
  min-height:clamp(230px,24vh,272px);padding:clamp(26px,2.2vw,38px);
  background:linear-gradient(165deg,#fff 0%,var(--paper-2) 100%);border:1px solid rgba(124,143,111,.34);border-radius:16px;
  animation:ledPulse 6s var(--ease) infinite;}
@keyframes ledPulse{
  0%,100%{box-shadow:0 0 0 1px rgba(124,143,111,.12),0 0 10px -2px rgba(124,143,111,.20),inset 0 0 16px -10px rgba(124,143,111,.14),0 20px 40px -26px rgba(0,0,0,.55);}
  50%{box-shadow:0 0 0 1px rgba(124,143,111,.22),0 0 16px -2px rgba(124,143,111,.32),inset 0 0 18px -9px rgba(124,143,111,.22),0 20px 40px -26px rgba(0,0,0,.55);}}
.firm-head{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;
  padding-bottom:clamp(16px,1.4vw,20px);margin-bottom:clamp(16px,1.4vw,20px);border-bottom:1px solid var(--line);}
.firm-logo{height:42px;display:flex;align-items:center;}
.firm-logo img{max-height:38px;max-width:160px;width:auto;object-fit:contain;object-position:left center;}
.firm-logo .firm-logo-hilton{max-height:42px;}
.firm-logo .partner-wm{display:flex;flex-direction:column;gap:3px;text-align:left;}
.firm-logo .partner-wm .pwm-w{font-family:var(--serif);font-weight:700;font-size:clamp(1.15rem,1.5vw,1.5rem);letter-spacing:.01em;color:var(--ink);line-height:1;white-space:nowrap;}
.firm-logo .partner-wm .pwm-sub{font-family:var(--mono);font-size:.52rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-top:4px;}
.firm-role{flex:none;font-family:var(--mono);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--verde-deep);
  padding:5px 11px;border:1px solid rgba(124,143,111,.4);border-radius:100px;background:rgba(124,143,111,.07);white-space:nowrap;}
.firm .firm-fact{font-family:var(--serif);font-weight:500;font-size:clamp(1.18rem,1.5vw,1.42rem);line-height:1.18;letter-spacing:-.01em;color:var(--ink);margin:0 0 11px;}
.firm .firm-fact em{font-style:italic;font-weight:600;color:var(--verde-deep);}
.firm-body{font-family:var(--sans);font-size:.95rem;line-height:1.62;color:var(--ink-2);margin:0;max-width:46ch;text-wrap:pretty;}
/* Hilton · card de cierre a todo el ancho — logo y texto lado a lado (el operador es el clímax) */
.firm--wide{grid-column:1/-1;flex-direction:row;align-items:center;gap:clamp(28px,4vw,64px);min-height:0;}
.firm--wide .firm-head{flex-direction:column;align-items:flex-start;justify-content:center;gap:16px;width:auto;flex:none;
  padding:0;margin:0;border:0;border-right:1px solid var(--line);padding-right:clamp(28px,4vw,64px);}
.firm--wide .firm-logo{height:48px;}
.firm--wide .firm-logo .firm-logo-hilton{max-height:48px;}
.firm--wide .firm-body{max-width:62ch;}
.firm--wide .firm-fact{margin-bottom:9px;}
.firm--wide-txt{display:flex;flex-direction:column;}
@media(max-width:1080px){.partners-grid{grid-template-columns:repeat(2,1fr);}
  .firm--wide{flex-direction:column;align-items:flex-start;gap:clamp(18px,2.4vw,26px);}
  .firm--wide .firm-head{flex-direction:row;align-items:center;justify-content:space-between;width:100%;
    border-right:0;border-bottom:1px solid var(--line);padding-right:0;padding-bottom:18px;}}
@media(max-width:680px){.partners-grid{grid-template-columns:1fr;}}
@media(prefers-reduced-motion:reduce){.firm{animation:none;box-shadow:0 0 0 1px rgba(124,143,111,.34),0 18px 36px -24px rgba(0,0,0,.5);}}

/* firmas · COMPACTAS (Samuel 2026-06-08) · cards blancas sobre fondo blanco */
.partners-grid{gap:clamp(12px,1.1vw,18px);}
.firm{min-height:0;padding:clamp(16px,1.4vw,22px);}
.firm-head{padding-bottom:clamp(10px,.9vw,13px);margin-bottom:clamp(10px,.9vw,13px);}
.firm .firm-fact{margin-bottom:7px;}
.firm-body{font-size:.9rem;line-height:1.5;}

/* ---------- NUMEROS ---------- */
.nums{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,30px);text-align:center;}
.num b{display:block;font-family:var(--serif);font-size:clamp(1.9rem,4vw,3.4rem);font-weight:300;letter-spacing:-.025em;line-height:.98;color:var(--gold);white-space:nowrap;}
.num span{display:block;margin-top:12px;font-family:var(--mono);font-size:.64rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);}
@media(max-width:880px){.nums{grid-template-columns:repeat(3,1fr);row-gap:36px;}}
@media(max-width:480px){.nums{grid-template-columns:repeat(2,1fr);}}

/* ---------- CONTACTO ---------- */
.contact{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,72px);align-items:center;}
.contact__side h2{font-size:var(--t-2);font-weight:500;margin-bottom:18px;}
.contact__side h2 em{color:var(--terra-deep);}
.contact__side .lede{margin-bottom:24px;}
.cline{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--line);font-size:.96rem;color:var(--ink);}
.cline:last-child{border-bottom:1px solid var(--line);}
.cline span{font-family:var(--mono);font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);width:88px;flex:0 0 auto;}
.contact__form{display:flex;flex-direction:column;gap:14px;}
.field label{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:7px;}
.field input,.field select{width:100%;padding:14px 16px;background:var(--paper);border:1px solid var(--line-2);border-radius:2px;color:var(--ink);font-size:.96rem;font-family:var(--sans);transition:border-color .3s;}
.field input:focus,.field select:focus{outline:none;border-color:var(--terra);}
.field input::placeholder{color:var(--ink-3);}
@media(max-width:860px){.contact{grid-template-columns:1fr;}}

/* ---------- FOOTER ---------- */
.foot{background:var(--stone);color:var(--cream);border-top:1px solid var(--line-dd);padding:clamp(56px,8vh,96px) 0 40px;position:relative;isolation:isolate;}
.foot::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:url(assets/texture/paper-linen.png);background-size:360px 360px;
  mix-blend-mode:soft-light;opacity:.55;}
.foot__top{display:flex;justify-content:space-between;align-items:flex-start;gap:36px;flex-wrap:wrap;margin-bottom:42px;}
.foot__logo{width:120px;opacity:.94;}
.foot__nav{display:flex;flex-wrap:wrap;gap:14px 26px;}
.foot__nav a{font-size:.84rem;color:var(--cream-d);transition:color .25s;}
.foot__nav a:hover{color:var(--cream);}
.legal{font-size:.74rem;line-height:1.7;color:rgba(244,240,230,.46);max-width:96ch;}
.legal p{margin-bottom:9px;}
.foot__base{margin-top:30px;padding-top:22px;border-top:1px solid var(--line-dd);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;color:rgba(244,240,230,.5);}

/* ---------- FLOATING WA + cursor ---------- */
.wafloat{position:fixed;right:clamp(16px,2.5vw,28px);bottom:clamp(16px,2.5vw,28px);z-index:45;width:54px;height:54px;border-radius:50%;
  background:var(--verde);display:grid;place-items:center;box-shadow:0 10px 30px rgba(0,0,0,.4);transition:transform .3s var(--ease),background .3s;}
.wafloat:hover{transform:scale(1.08);background:var(--terra);}
.wafloat svg{width:26px;height:26px;fill:var(--cream);}
.cursor{position:fixed;top:0;left:0;width:8px;height:8px;border-radius:50%;background:var(--terra);pointer-events:none;z-index:90;
  transform:translate(-50%,-50%);transition:width .3s var(--ease),height .3s var(--ease),background .3s,opacity .3s;mix-blend-mode:multiply;}
.cursor.big{width:52px;height:52px;background:rgba(94,106,82,.0);border:1px solid var(--terra);}
.cursor{display:none;}
@media(pointer:fine){.cursor{display:block;}}

/* ---------- REVEAL ---------- */
[data-reveal]{opacity:0;transform:translateY(26px);filter:blur(7px);transition:opacity .9s var(--ease),transform .9s var(--ease),filter 1s var(--ease);}
[data-reveal].in{opacity:1;transform:none;filter:blur(0);}
[data-reveal][data-delay="1"]{transition-delay:.1s;}
[data-reveal][data-delay="2"]{transition-delay:.2s;}
/* WEB FLOW · imágenes con parallax sutil (deben poder moverse dentro de su caja).
   OJO: NADA de will-change:transform estático aquí → en iOS Safari deja la imagen EN BLANCO
   (bug real, reportado por Samuel). El parallax es solo desktop y GSAP ya pone will-change al animar. */
.split__media,.fac-tall,.fac-wide{overflow:hidden;}
[data-reveal][data-delay="3"]{transition-delay:.3s;}

@media(max-width:980px){
  /* móvil/tablet: MISMA animación que desktop · scrollytelling vertical.
     El edificio (stage) queda sticky arriba mientras los niveles suben por debajo;
     el axo hace swap (general→hotel→comercial) y cada nivel se ilumina al cruzar el centro.
     El JS (setSeg vía IntersectionObserver) ya corre en móvil; sólo había que dejar
     que el CSS lo muestre (antes lo congelaba con !important). Sin overlap: el stage
     ocupa la mitad superior, el texto del nivel vive en la mitad inferior. */
  .anat__grid{display:block;}
  /* edificio sticky POR ENCIMA del texto (fondo blanco opaco): el nivel saliente
     se esconde detrás del edificio al subir · el nivel activo vive debajo, limpio */
  .anat__stage{position:sticky;top:0;height:55svh;aspect-ratio:auto;z-index:2;}
  .axo-stack .axo img{object-position:center;}
  .axo-notes{display:block;}
  .anat__scroll{padding:0 0 10vh;position:relative;z-index:1;}
  .layer{min-height:68svh;padding:clamp(22px,5vw,38px) var(--pad);}
}
@media(max-width:860px){
  .nav__toggle{display:flex;}
  .nav .btn--solid{padding:9px 13px;font-size:.66rem;} /* CTA compacto para que quepa con la hamburguesa */
  .nav__links{position:fixed;top:var(--nav-h);left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:var(--stone);padding:6px var(--pad) 22px;border-bottom:1px solid var(--line-d);
    box-shadow:0 22px 40px -26px rgba(0,0,0,.7);
    transform:translateY(-10px);opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s;}
  .nav--open .nav__links{opacity:1;visibility:visible;transform:none;pointer-events:auto;}
  .nav__links a,.nav--light .nav__links a{color:var(--cream);font-size:1.02rem;padding:15px 2px;border-bottom:1px solid var(--line-dd);}
  .nav--light .nav__links a:hover{color:#fff;}
  .nav__links a:last-child{border-bottom:0;}
  .nav--light.nav--open .nav__toggle{color:var(--cream);} /* al abrir el menú oscuro, la X va clara */
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important;}
  .hero{height:100svh;}
  [data-reveal],.cine__in,.cine__foot,.layer{opacity:1!important;transform:none!important;filter:none!important;}
  .cine__bg img{transform:scale(1.02)!important;}
}

/* ════════ SUBPÁGINAS · page hero + galería + teaser ════════ */
/* portada de subpágina: IMAGEN arriba (sin texto encima) + banda de título limpia abajo */
/* portada PANTALLA COMPLETA (Samuel 2026-06-08): imagen full-screen + texto crema abajo sobre scrim */
.pagehero{position:relative;height:100svh;min-height:560px;background:var(--carbon);overflow:hidden;isolation:isolate;
  display:flex;flex-direction:column;justify-content:flex-end;}
.pagehero__img{position:absolute;inset:0;z-index:-2;overflow:hidden;}
.pagehero__img img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;display:block;will-change:object-position;
  animation:heroPan 18s ease-in-out infinite alternate;}
@keyframes heroPan{from{object-position:0% 0%;}to{object-position:100% 100%;}}
@media(prefers-reduced-motion:reduce){.pagehero__img img{animation:none;object-position:center;}}
.pagehero__img::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(14,14,12,.42) 0%,rgba(14,14,12,0) 24%,rgba(14,14,12,0) 40%,rgba(14,14,12,.8) 100%);}
.pagehero__in{max-width:var(--maxw);margin:0 auto;width:100%;padding:0 var(--pad) clamp(40px,7vh,86px);color:var(--cream);}
.pagehero .eyebrow{color:rgba(244,240,230,.82);justify-content:flex-start;}
.pagehero .eyebrow::before{background:rgba(244,240,230,.65);}
.pagehero__crumb{display:none;}
.pagehero__crumb a{color:rgba(244,240,230,.7);} .pagehero__crumb a:hover{color:var(--cream);}
.pagehero h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.05rem,4.1vw,3.5rem);line-height:1.03;letter-spacing:-.016em;color:var(--cream);margin-top:12px;max-width:15ch;
  text-shadow:0 2px 30px rgba(14,14,12,.32);}
.pagehero h1 em{font-style:italic;color:var(--cream);}
.pagehero__lede{margin-top:15px;max-width:42ch;color:rgba(244,240,230,.9);font-size:clamp(.88rem,1vw,1rem);line-height:1.6;
  text-align:justify;text-justify:inter-word;hyphens:none;text-shadow:0 1px 18px rgba(14,14,12,.4);}
/* posición del texto sobre la imagen · default abajo; --top lo lleva arriba (sobre cielo/árboles) ·
   regla: ubicar el texto en zonas vacías de la foto, sin tapar lo importante (Samuel 2026-06-08) */
.pagehero--top{justify-content:flex-start;}
.pagehero--top .pagehero__in{padding-top:clamp(90px,15vh,142px);padding-bottom:0;}
/* el texto va ARRIBA → scrim oscuro arriba (no abajo) para que se lea sobre cielo/zonas claras */
.pagehero--top .pagehero__img::after{background:linear-gradient(180deg, rgba(14,14,12,.66) 0%, rgba(14,14,12,.3) 24%, rgba(14,14,12,0) 50%);}
/* móvil: reforzar el degradado y la sombra del texto (el recorte puede dejar zonas claras bajo el texto) */
@media(max-width:700px){
  .pagehero__img::after{background:linear-gradient(180deg, rgba(14,14,12,.5) 0%, rgba(14,14,12,.12) 26%, rgba(14,14,12,0) 46%, rgba(14,14,12,.86) 100%);}
  .pagehero--top .pagehero__img::after{background:linear-gradient(180deg, rgba(14,14,12,.76) 0%, rgba(14,14,12,.42) 26%, rgba(14,14,12,0) 54%);}
  .pagehero h1{text-shadow:0 2px 26px rgba(14,14,12,.66),0 1px 2px rgba(14,14,12,.5);}
  .pagehero__lede{text-shadow:0 1px 18px rgba(14,14,12,.74),0 1px 2px rgba(14,14,12,.5);}
}
/* portada CONTAIN · muestra el render COMPLETO (sin recortar) sobre un fondo desenfocado del mismo render
   (para renders verticales que no caben full-screen sin corte · Samuel: "no cortes la imagen") */
.pagehero--contain .pagehero__img{background:var(--carbon);}
.pagehero--contain .pagehero__img img{height:100%;}
.pagehero--contain .pagehero__fill{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;
  filter:blur(42px) brightness(.6) saturate(1.08);transform:scale(1.14);will-change:auto;}
.pagehero--contain .pagehero__img picture{position:absolute;inset:0;z-index:1;display:block;}
.pagehero--contain .pagehero__img picture img{width:100%;height:100%;object-fit:contain;object-position:center;}
.pagehero--contain .pagehero__img::after{z-index:2;}
.pgsec{padding:clamp(40px,7vh,96px) 0;}
.pgallery{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(10px,1.4vw,20px);align-items:start;}
.pgallery figure{margin:0;position:relative;overflow:hidden;border-radius:5px;background:var(--paper-2);aspect-ratio:var(--ar,3/2);}
.pgallery img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s var(--ease);}
@media(hover:hover){.pgallery figure:hover img{transform:scale(1.03);}}
.pgallery figcaption{position:absolute;left:0;right:0;bottom:0;padding:clamp(26px,4vh,44px) 18px 14px;color:#fff;font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;background:linear-gradient(0deg,rgba(15,14,11,.62),transparent);}
.pg-12{grid-column:span 12;} .pg-8{grid-column:span 8;} .pg-6{grid-column:span 6;} .pg-4{grid-column:span 4;}
@media(max-width:760px){.pg-6,.pg-4,.pg-8{grid-column:span 12;}}

/* ════════ SELECTOR DE PLANTAS · comercial (blanco · plano IZQ, controles DER) ════════ */
.plsel{margin-top:clamp(24px,4vh,44px);display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(28px,4.5vw,64px);align-items:center;}
.plsel__plan{margin:0;border-radius:8px;overflow:hidden;background:var(--paper-2);border:1px solid var(--line);box-shadow:0 26px 54px -36px rgba(0,0,0,.35);}
.plsel__plan img{width:100%;height:auto;display:block;}
.plsel__tabs{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:clamp(18px,2.6vh,26px);}
.plsel__tab{font-family:var(--mono);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-2);background:transparent;border:1px solid var(--line-2);border-radius:100px;
  padding:10px 18px;cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);}
.plsel__tab:hover{color:var(--ink);border-color:var(--ink);}
.plsel__tab.is-active{color:#fff;background:var(--terra-deep);border-color:var(--terra-deep);font-weight:600;}
.plsel__info .pl-title{font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,2.6vw,2.2rem);color:var(--ink);margin:0 0 6px;line-height:1.05;}
.plsel__info .pl-locales{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--terra-deep);}
.plsel__info .pl-pitch{color:var(--ink-2);font-size:1rem;line-height:1.6;margin:14px 0 18px;}
.plsel__info .pl-desde{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);}
.plsel__info .pl-desde b{display:block;font-family:var(--serif);font-size:1.5rem;color:var(--ink);letter-spacing:0;text-transform:none;margin-top:3px;}
.pl-zones{margin-top:16px;display:flex;flex-direction:column;gap:12px;}
.pl-zone{border-left:2px solid var(--line-2);padding-left:14px;}
.pl-zone.is-food{border-left-color:var(--terra);}
.pl-zone b{display:block;color:var(--ink);font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;}
.pl-zone i{display:block;color:var(--terra-deep);font-style:normal;font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;margin-top:2px;}
.pl-zone span{display:block;color:var(--ink-2);font-size:.9rem;line-height:1.5;margin-top:4px;}
@media(max-width:820px){.plsel{grid-template-columns:1fr;gap:clamp(20px,4vh,30px);}}

/* food hall feature · Cocina Abierta */
.foodhall{margin-top:clamp(34px,6vh,68px);display:grid;grid-template-columns:1.75fr 1fr;gap:clamp(24px,4vw,56px);align-items:center;
  border-top:1px solid var(--line-d);padding-top:clamp(30px,5vh,56px);}
.foodhall__media{margin:0;border-radius:8px;overflow:hidden;}
.foodhall__media img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:2.554;}
.foodhall__txt h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.7rem,2.8vw,2.4rem);color:var(--ink);margin:8px 0 12px;}
.foodhall__txt p{color:var(--ink-2);font-size:1rem;line-height:1.62;max-width:44ch;}
.foodhall__pill{display:inline-block;margin-top:18px;font-family:var(--mono);font-size:.7rem;letter-spacing:.05em;
  color:#fff;background:var(--terra-deep);border-radius:100px;padding:9px 16px;font-weight:600;}
.foodhall__pill span{opacity:.65;}
.foodhall--top{border-top:0;padding-top:0;}
@media(max-width:820px){.foodhall{grid-template-columns:1fr;}}
.subnav{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);display:grid;grid-template-columns:1fr 1fr 1fr;gap:clamp(12px,1.6vw,22px);}
.subcard{position:relative;display:block;overflow:hidden;border-radius:6px;aspect-ratio:4/5;isolation:isolate;background:var(--carbon);}
/* sizer EN FLUJO: WebKit ignora aspect-ratio si todos los hijos son absolute
   (img + .subcard__in) y la card colapsa a 0 → fallback a prueba de motores.
   125% = 4/5 · ver media query 16/10 abajo. */
.subcard::before{content:"";display:block;padding-top:125%;}
.subcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1s var(--ease);}
.subcard::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(14,14,12,.18) 0%,rgba(14,14,12,.78) 100%);}
@media(hover:hover){.subcard:hover img{transform:scale(1.05);}}
.subcard__in{position:absolute;left:0;right:0;bottom:0;padding:clamp(22px,3vw,38px);color:var(--cream);}
.subcard__k{font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);}
.subcard h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.4vw,2.3rem);line-height:1.05;color:var(--cream);margin:8px 0 0;}
.subcard__go{margin-top:14px;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--cream);display:inline-flex;align-items:center;gap:9px;}
.subcard__go::after{content:"→";transition:transform .3s var(--ease);}
@media(hover:hover){.subcard:hover .subcard__go::after{transform:translateX(5px);}}
@media(max-width:780px){.subnav{grid-template-columns:1fr;}.subcard{aspect-ratio:16/10;}.subcard::before{padding-top:62.5%;}}

/* ════════ LOCK-OFF · split espejo (verde=vives · terracota=rentas) como el brochure ════════ */
.lo-split{display:grid;grid-template-columns:1fr auto 1fr;gap:0 clamp(14px,2.6vw,38px);align-items:stretch;margin-top:clamp(28px,5vh,52px);}
.lo-half{display:flex;flex-direction:column;}
.lo-photo{position:relative;height:clamp(170px,26vh,250px);border-radius:12px;overflow:hidden;background:var(--paper-2);}
.lo-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.lo-ptag{position:absolute;left:0;bottom:14px;padding:5px 13px 5px 13px;background:rgba(20,18,15,.52);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--cream);font-family:var(--mono);font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;border-left:2px solid var(--gold);}
.lo-card{margin-top:14px;padding:clamp(22px,2.6vw,34px);border-radius:14px;flex:1;display:flex;flex-direction:column;}
.lo-half--live .lo-card{background:linear-gradient(160deg,rgba(94,106,82,.16),rgba(244,240,230,.5));border:1px solid rgba(94,106,82,.24);}
.lo-half--rent .lo-card{background:linear-gradient(160deg,rgba(185,122,82,.14),rgba(244,240,230,.5));border:1px solid rgba(185,122,82,.24);}
.lo-tag{font-family:var(--mono);font-size:.58rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;}
.lo-half--live .lo-tag{color:var(--terra-deep);} .lo-half--rent .lo-tag{color:#9c6438;}
.lo-card h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.4rem,2.2vw,1.95rem);line-height:1.06;margin:10px 0 0;color:var(--ink);}
.lo-card h3 b{font-weight:600;}
.lo-half--live h3 b{color:var(--terra-deep);} .lo-half--rent h3 b{color:#9c6438;}
.lo-list{list-style:none;margin:16px 0 0;display:flex;flex-direction:column;gap:9px;}
.lo-list li{position:relative;padding-left:20px;font-size:.94rem;line-height:1.4;color:var(--ink-2);}
.lo-list li::before{content:"";position:absolute;left:0;top:.66em;width:10px;height:1px;background:var(--ink-3);}
.lo-close{margin-top:auto;padding-top:15px;border-top:1px solid var(--line-2);font-family:var(--serif);font-style:italic;font-size:1.02rem;color:var(--ink);}
.lo-key{display:flex;flex-direction:column;align-items:center;gap:15px;padding-top:clamp(58px,9vh,108px);}
.lo-key__circle{width:50px;height:50px;border-radius:50%;background:var(--ink);color:var(--cream);display:grid;place-items:center;font-size:1.5rem;flex:0 0 auto;line-height:1;}
.lo-key__label{writing-mode:vertical-rl;font-family:var(--mono);font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3);}
.lo-foot{margin-top:clamp(20px,3vh,34px);font-family:var(--mono);font-size:.62rem;letter-spacing:.05em;color:var(--ink-3);text-align:center;}
@media(max-width:760px){
  .lo-split{grid-template-columns:1fr;gap:22px 0;}
  .lo-key{flex-direction:row;padding-top:0;justify-content:center;gap:12px;}
  .lo-key__label{writing-mode:horizontal-tb;}
}

/* ════════ LANDING · secciones a PANTALLA COMPLETA (imagen full-bleed + eyebrow + botón animado) ════════ */
.fscol{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate;overflow:hidden;background:var(--carbon);}
.fscol__bg{position:absolute;inset:0;z-index:-2;}
.fscol__bg img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transform:scale(1.04);transition:transform 1.4s var(--ease);}
.fscol.in .fscol__bg img,.fscol:hover .fscol__bg img{transform:scale(1);}
.fscol::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(14,14,12,.3) 0%,rgba(14,14,12,0) 26%,rgba(14,14,12,0) 42%,rgba(14,14,12,.82) 100%);}
.fscol__in{max-width:var(--maxw);margin:0 auto;width:100%;padding:0 var(--pad) clamp(48px,8vh,92px);color:var(--cream);display:flex;flex-direction:column;align-items:flex-start;gap:clamp(14px,2vh,22px);}
.fscol__in::before{content:"";width:46px;height:1px;background:rgba(244,240,230,.65);margin-bottom:2px;}
.fscol__in .eyebrow{justify-content:flex-start;color:rgba(244,240,230,.82);font-size:.62rem;letter-spacing:.28em;}
.fscol__in .eyebrow::before{display:none;}
.fscol__txt{max-width:38ch;}
.fscol__txt h2{font-family:var(--serif);font-weight:400;font-size:clamp(2.1rem,3.7vw,3.3rem);line-height:1;letter-spacing:-.022em;color:var(--cream);}
.fscol__txt h2 em{font-style:italic;color:var(--cream);}
.fscol__txt p{margin-top:13px;color:rgba(244,240,230,.84);font-size:clamp(.9rem,1vw,1.02rem);line-height:1.62;max-width:32ch;}
.fscta{position:relative;display:inline-flex;align-items:center;gap:13px;padding:17px 32px;border:1px solid var(--cream);border-radius:999px;font-family:var(--mono);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--cream);overflow:hidden;isolation:isolate;transition:color .45s var(--ease),border-color .45s var(--ease);}
.fscta::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--cream);transform:translateY(101%);transition:transform .5s var(--ease);}
.fscta:hover{color:var(--ink);}
.fscta:hover::before{transform:translateY(0);}
.fscta svg{width:22px;height:9px;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .4s var(--ease);}
.fscta:hover svg{transform:translateX(6px);}
/* variante: imagen COMPLETA sin recortar (sección crece a la altura de la imagen, aunque pase el viewport) */
.fscol--tall{min-height:0;display:block;position:relative;}
.fscol--tall .fscol__bg{position:static;}
.fscol--tall .fscol__bg img{width:100%;height:auto;display:block;transform:none;animation:none;}
.fscol--tall::after{z-index:1;}
.fscol--tall .fscol__in{position:absolute;left:0;right:0;bottom:0;z-index:2;}
/* MÓVIL · NO texto sobre foto (Samuel 2026-06-08): apilar imagen arriba + texto
   en recuadro blanco abajo, montado un poco sobre la foto. Regla web_no_big_text_over_photo. */
@media(max-width:700px){
  .fscol,.fscol--tall{min-height:0;display:block;background:var(--paper);overflow:visible;}
  .fscol__bg{position:relative;inset:auto;z-index:0;aspect-ratio:4/3;border-radius:0;overflow:hidden;}
  .fscol__bg img{width:100%;height:100%;object-fit:cover;transform:none;}
  /* la variante --tall (centro comercial) en móvil debe comportarse como .fscol normal:
     foto 4/3 arriba + recuadro abajo. Sin estos overrides, sus reglas desktop (más
     específicas: 0,2,0) sobreviven al @media y dejan el card ABSOLUTO tapando la foto
     entera → "ya no sale la imagen del centro comercial" (Samuel 2026-06-08). */
  .fscol--tall .fscol__bg{position:relative;aspect-ratio:4/3;}
  .fscol--tall .fscol__bg img{height:100%;object-fit:cover;}
  .fscol--tall .fscol__in{position:relative;left:auto;right:auto;bottom:auto;}
  .fscol::after,.fscol--tall::after{display:none;}
  .fscol__in{position:relative;z-index:2;left:auto;right:auto;bottom:auto;color:var(--ink);
    background:var(--paper);margin-top:clamp(-40px,-7vw,-26px);border-radius:18px 18px 0 0;
    padding:clamp(26px,6.5vw,34px) var(--pad) clamp(28px,7vw,38px);gap:14px;
    box-shadow:0 -18px 40px -28px rgba(0,0,0,.4);}
  .fscol__in::before{background:var(--line-2);}
  .fscol__in .eyebrow{color:var(--terra-deep);}
  .fscol__txt h2,.fscol__txt h2 em{color:var(--ink);}
  .fscol__txt p{color:var(--ink-2);max-width:42ch;}
  .fscta{border-color:var(--ink);color:var(--ink);}
  .fscta::before{background:var(--ink);}
  .fscta:hover{color:var(--cream);}
}

/* ════════ LA FACHADA · dúo torre vertical + vista andador (sin recorte) ════════ */
.fac-duo{display:grid;grid-template-columns:.74fr 1.26fr;gap:clamp(12px,1.6vw,24px);margin-top:clamp(24px,4vh,46px);align-items:stretch;}
.fac-tall{margin:0;border-radius:6px;overflow:hidden;aspect-ratio:1265/2374;}
.fac-tall img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1s var(--ease);}
.fac-side{display:flex;flex-direction:column;gap:clamp(12px,1.6vw,24px);min-height:0;}
.fac-wide{margin:0;border-radius:6px;overflow:hidden;}
.fac-wide img{width:100%;height:auto;display:block;transition:transform 1s var(--ease);}
@media(hover:hover){.fac-tall:hover img,.fac-wide:hover img{transform:scale(1.04);}}
.fac-copy{flex:1;display:flex;flex-direction:column;justify-content:center;padding:clamp(8px,1.4vw,20px) 0 clamp(8px,1.4vw,20px) clamp(14px,3.4vw,64px);}
.fac-copy .eyebrow{justify-content:flex-start;}
.fac-copy h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.4vw,2.2rem);line-height:1.06;margin:12px 0 0;color:var(--ink);}
.fac-copy h3 em{font-style:italic;color:var(--terra-deep);}
.fac-copy p{margin-top:14px;max-width:44ch;color:var(--ink-2);font-size:var(--t-lede);line-height:1.55;}
@media(max-width:760px){.fac-duo{grid-template-columns:1fr;}}
