/* ============================================================
   Casa Ayala · Web · Identidad Casa Ayala (Guía v1.0, agosto 2026)
   Evolución del coming soon: mismos colores, tipografías y ritmo.
   ============================================================ */
@font-face{font-family:"PP Neue World";src:url(../fonts/PPNeueWorld-ExtendedUltralight.woff2) format("woff2");font-weight:200;font-style:normal;font-display:block}
@font-face{font-family:"Arimo";src:url(../fonts/Arimo-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Arimo";src:url(../fonts/Arimo-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}

:root{
  --ivory:#fff8e5;   /* Ayala Ivory · principal */
  --mineral:#ece5d0; /* Ayala Mineral · apoyo */
  --violet:#9d9dc7;  /* Twilight Violet · acento */
  --black:#222222;   /* Midnight Black · tipografía */
  --rule:rgba(34,34,34,.16);
  --display:"PP Neue World",Georgia,serif;
  --text:"Arimo",Arial,sans-serif;
  /* escala del Figma RHAIGA/VEILOR · Web (2026-09-24, maqueta a 1440): un solo tamaño de titular (36), cifras 64, texto 16, etiquetas 10 */
  --fs-body:1rem;                                       /* 16 */
  --fs-lead:1rem;                                       /* 16: en el Figma la entradilla va al mismo cuerpo que el texto */
  --fs-h1:clamp(1.625rem,1.05rem + 1.45vw,2.25rem);     /* 26 → 36 */
  --fs-h2:clamp(1.5rem,1.05rem + 1.25vw,2.25rem);       /* 24 → 36 */
  --fs-h3:clamp(1.25rem,1rem + .7vw,1.625rem);          /* 20 → 26 */
  --fs-num:clamp(2.5rem,1.3rem + 3vw,4rem);             /* 40 → 64 · cifras de la portada */
  --fs-label:.625rem;                                   /* 10 · menú, botones, etiquetas */
  --tr-label:.11em;
  --fs-small:.8125rem;                                  /* 13 */
  --lh:1.35;
  --track:.05em;
  --gutter:clamp(1.5rem,4vw,4.5rem);
  --measure:62ch;
  --nav-h:4rem;   /* 64 px, como la barra del Figma */
  --bw:clamp(8px,.75vw,12px);
  --e-inout:cubic-bezier(.87,0,.13,1);
  --e-power3:cubic-bezier(.215,.61,.355,1);
  --e-out:cubic-bezier(.16,1,.3,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:var(--nav-h)}
html.pre:not(.pre-done){overflow:hidden}
html.menu-open{overflow:hidden}
body{background:var(--ivory);color:var(--black);font-family:var(--text);font-size:var(--fs-body);line-height:var(--lh);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
button{font:inherit;color:inherit}
::selection{background:var(--violet);color:var(--black)}
:focus-visible{outline:2px solid var(--black);outline-offset:3px}
.sr{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.display{font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:var(--track);line-height:1.2}
.eyebrow{font-family:var(--text);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label)}

.lead{font-size:var(--fs-lead);line-height:1.4}
p+p{margin-top:1rem}
.measure{max-width:var(--measure)}
.muted{opacity:.7}
.wrap{max-width:96rem;margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
.wrap--narrow{max-width:62rem}
/* Ancho a ras del margen de la barra y del pie (sin el ancho máximo del .wrap) */
.edge{padding-left:clamp(1.25rem,2.5vw,2.75rem);padding-right:clamp(1.25rem,2.5vw,2.75rem)}

/* ---------- Botones y enlaces ---------- */
.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:.7rem;white-space:nowrap;text-align:center;border:1px solid var(--black);border-radius:0;background:var(--violet);color:var(--black);font:inherit;font-size:var(--fs-label);line-height:1.2;text-transform:uppercase;letter-spacing:var(--tr-label);padding:.5rem .95rem;cursor:pointer;text-decoration:none;transition:background .25s,color .25s,border-color .25s}   /* Figma: violeta, filete negro de 1 px, 10 px con tracking 11 % */
.btn:hover,.btn:focus-visible{background:var(--black);color:var(--ivory);outline:none}
.btn--ghost{background:transparent;color:var(--black)}
.btn--ghost:hover,.btn--ghost:focus-visible{background:var(--black);color:var(--ivory)}
.btn--light{border-color:var(--ivory);background:var(--ivory);color:var(--black)}
.btn--light:hover,.btn--light:focus-visible{background:transparent;color:var(--ivory)}
.btn--violet{border-color:var(--black);background:var(--violet);color:var(--black)}
@media (pointer:coarse),(max-width:800px){.btn{padding:.85rem 1.25rem}}   /* área táctil ≥ 40 px */
.btn[disabled]{opacity:.55;cursor:progress}
.arrow{display:inline-flex;align-items:center;gap:.9rem;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.22em;text-decoration:none;position:relative;padding-bottom:.4rem}
.arrow::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(.35);transform-origin:left;transition:transform .6s var(--e-out)}
.arrow:hover::after,.arrow:focus-visible::after{transform:scaleX(1)}
.arrow svg{width:1.1rem;height:1.1rem;transition:transform .5s var(--e-out)}
.arrow:hover svg{transform:translateX(4px)}

/* ---------- Navegación (Figma 2026-09-24): Ivory siempre, menú a la izquierda, logotipo centrado, ES | EN y botón Contacto ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:80;height:var(--nav-h);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;column-gap:1.5rem;padding:0 clamp(1rem,1.75vw,1.5625rem);background:var(--ivory);color:var(--black);transition:box-shadow .5s,transform .6s var(--e-out)}
.nav.is-solid{box-shadow:0 1px 0 var(--rule)}
.nav.is-up{transform:translateY(-100%)}
.nav > nav{display:contents}
.nav__menu{grid-column:1;grid-row:1;justify-self:start;display:flex;gap:clamp(1.5rem,2.8vw,2.5rem);list-style:none}
.nav__menu a{display:inline-block;font-size:var(--fs-label);line-height:1.2;text-transform:uppercase;letter-spacing:var(--tr-label);text-decoration:none;position:relative;padding:.35rem 0}
.nav__menu a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--e-out)}
.nav__menu a:hover::after,.nav__menu a:focus-visible::after,.nav__menu a[aria-current="page"]::after{transform:scaleX(1)}
.nav__menu-contact{display:none}   /* en escritorio lo resuelve el botón; en el menú desplegado sí aparece */
.nav__logo{grid-column:2;grid-row:1;justify-self:center;display:inline-block;color:inherit;line-height:0}
.nav__logo svg{width:clamp(150px,14.7vw,212px);height:auto}
.nav__right{grid-column:3;grid-row:1;justify-self:end;display:flex;align-items:center;gap:clamp(.9rem,1.2vw,1.1rem)}
.nav__lang{display:inline-flex;gap:.35rem;align-items:center;font-size:var(--fs-label);letter-spacing:var(--tr-label);text-transform:uppercase}
.nav__lang b{font-weight:400}
.nav__lang span:last-child{opacity:.45}
.nav__cta{display:inline-flex;align-items:center;font-size:var(--fs-label);line-height:1.2;letter-spacing:var(--tr-label);text-transform:uppercase;text-decoration:none;background:var(--violet);color:var(--black);border:1px solid var(--black);padding:.375rem .8125rem;white-space:nowrap;transition:background .25s,color .25s}   /* 91 × 26 en la maqueta */
.nav__cta:hover,.nav__cta:focus-visible{background:var(--black);color:var(--ivory);outline:none}
.nav__toggle{display:none;grid-column:1;grid-row:1;justify-self:start;appearance:none;background:none;border:0;width:2.75rem;height:2.75rem;margin-left:-.6rem;cursor:pointer;position:relative;color:inherit}
.nav__toggle span{position:absolute;left:.6rem;right:.6rem;height:1px;background:currentColor;transition:transform .5s var(--e-inout),opacity .3s}
.nav__toggle span:nth-child(1){top:1.05rem}.nav__toggle span:nth-child(2){top:1.4rem}.nav__toggle span:nth-child(3){top:1.75rem}
html.menu-open .nav__toggle span:nth-child(1){transform:translateY(.35rem) rotate(45deg)}
html.menu-open .nav__toggle span:nth-child(2){opacity:0}
html.menu-open .nav__toggle span:nth-child(3){transform:translateY(-.35rem) rotate(-45deg)}
@media (max-width:1100px){
  .nav__toggle{display:block}
  .nav__lang{display:none}
  .nav__logo svg{width:150px}
  .nav__menu{position:fixed;inset:0;justify-self:stretch;align-self:stretch;width:100%;height:100%;background:var(--ivory);color:var(--black);flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;padding:var(--nav-h) var(--gutter) 3rem;transform:translateY(-100%);visibility:hidden;transition:transform .8s var(--e-inout),visibility 0s linear .8s;z-index:-2}
  html.menu-open .nav__menu{transform:none;visibility:visible;transition-delay:0s}
  html.menu-open .nav{transform:none!important}
  .nav__menu-contact{display:block}
  .nav__menu a{font-family:var(--display);font-size:clamp(1.5rem,6vw,2.25rem);letter-spacing:var(--track);padding:.1rem 0;opacity:0;transform:translateY(18px);transition:opacity .6s var(--e-power3),transform .6s var(--e-power3)}
  html.menu-open .nav__menu a{opacity:1;transform:none;transition-delay:calc(.25s + var(--i,0)*70ms)}
}
@media (max-width:420px){.nav__logo svg{width:128px}.nav__cta{padding:.45rem .65rem}}

/* ---------- Precarga (solo portada) ---------- */
.preloader{position:fixed;inset:0;z-index:100;background:var(--ivory);overflow:hidden;will-change:transform}
.preloader__stage{position:absolute;inset:0;display:grid;place-items:center;transition:transform 1.6s var(--e-inout)}
html:not(.pre) .preloader{display:none}
.preloader__cover{position:absolute;inset:-4%;opacity:0;transform:scale(1.18);transition:opacity 1.3s var(--e-out),transform 2.3s var(--e-out)}
.preloader__cover svg{width:100%;height:100%}
.preloader.is-on .preloader__cover{opacity:1;transform:scale(1);animation:drift 14s ease-in-out 2.3s infinite alternate}
@keyframes drift{to{transform:scale(1.035) translate(-.6%,-.8%)}}
.preloader__center{position:relative;display:grid;justify-items:center;gap:clamp(2rem,5vh,3.25rem);padding:0 var(--gutter);width:100%}
.preloader__logo{position:relative;width:clamp(210px,28vw,380px);color:var(--black)}
/* Intro del coming soon dentro de la precarga: flor, párrafo por líneas y filete */
.preloader__intro{display:grid;justify-items:center;gap:clamp(1.25rem,3vh,2rem);max-width:44rem;text-align:center;color:var(--black)}
.preloader__flor .intro__icon{margin:0;opacity:0;transform:translateY(10px);transition:opacity .9s var(--e-power3),transform .9s var(--e-power3)}
.preloader.is-text .preloader__flor .intro__icon{opacity:1;transform:none}
.preloader__lead{font-size:var(--fs-lead);line-height:1.4;opacity:0}   /* oculto hasta que el texto está partido en líneas */
.preloader.is-text .preloader__lead{opacity:1}
.preloader__lead .line{transition-delay:calc(var(--i,0)*110ms + 250ms)}
.preloader.is-text .preloader__lead .line{transform:none}
.preloader__rule{width:3rem;height:1px;background:var(--black);opacity:.6;transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--e-power3) 1.1s}
.preloader.is-text .preloader__rule{transform:scaleX(1)}
.preloader.is-off .preloader__intro{transition:opacity .7s ease;opacity:0}
.preloader__logo path{opacity:0;transform:translateY(170px)}
.preloader.is-on .preloader__logo path{animation:letter 1s var(--e-power3) forwards;animation-delay:calc(.3s + var(--i,0)*70ms)}
@keyframes letter{to{opacity:1;transform:none}}
.preloader.is-off{transition:transform 1.6s var(--e-inout);transform:translateY(-100%)}
.preloader.is-off .preloader__stage{transform:translateY(100%)}
.preloader.is-on.is-off .preloader__cover{animation:none;transition:opacity 1.2s ease,transform 1.6s var(--e-inout);opacity:.55;transform:scale(1.05)}
.preloader.is-off .preloader__logo{transition:transform 1.3s var(--e-inout),opacity .9s ease .1s;transform:translateY(-70px);opacity:0}

/* ---------- Apariciones ---------- */
.line-mask{display:block;overflow:hidden;padding-top:.22em;margin-top:-.22em;padding-bottom:.14em;margin-bottom:-.14em}   /* padding-top: sin él la máscara recortaba las tildes de las mayúsculas (Á, É…) */
.line{display:block;transform:translateY(108%);transition:transform .9s var(--e-power3);transition-delay:calc(var(--i,0)*70ms + var(--d,0ms))}
.is-in .line{transform:none}
.reveal{opacity:0;transform:translateY(12px);transition:opacity .8s var(--e-power3),transform .8s var(--e-power3);transition-delay:calc(var(--i,0)*90ms + var(--d,0ms))}
.reveal.is-in{opacity:1;transform:none}
.reveal--fade{transform:none}
.media{position:relative;overflow:hidden;background:var(--mineral)}
.media img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
/* aparición discreta (2026-09-22, el cliente veía exagerada la cortina): solo un fundido corto, sin zoom ni cortina marfil */
.media--reveal img{opacity:0;transition:opacity .9s var(--e-out)}
.media--reveal::after{content:none}
.sec--mineral .media--reveal::after,.phero .media--reveal::after{background:var(--mineral)}
.media--reveal.is-in img{opacity:1}
.media--reveal.is-in::after{transform:scaleY(0)}
.rule{width:3rem;height:1px;background:var(--black);opacity:.6;transform-origin:left}
.rule.reveal{transform:scaleX(0);opacity:.6}.rule.reveal.is-in{transform:scaleX(1)}

/* ---------- Hero portada ---------- */
.hero{position:relative;min-height:100svh;display:grid;grid-template-rows:1fr auto;color:var(--ivory);isolation:isolate;overflow:hidden}
.hero__media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:50% 40%;transition:transform 1.8s var(--e-inout)}
html.js:not(.hero-in) .hero__media img{transform:scale(1.04)}
.hero__veil{position:absolute;inset:0;z-index:-1;background:rgba(34,34,34,.38)}
.hero__veil::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(34,34,34,.32) 0%,rgba(34,34,34,0) 30%,rgba(34,34,34,0) 60%,rgba(34,34,34,.34) 100%)}
.hero__dim{position:absolute;inset:0;z-index:-1;background:#222;opacity:0;transition:opacity 2.2s var(--e-inout)}
/* Marco Ivory que crece con el scroll (la foto «encoge» hacia la sección siguiente); grosor final = filete del pie */
.hero__frame{position:absolute;inset:0;z-index:3;pointer-events:none;border:0 solid var(--ivory);border-width:calc(var(--fp,0)*var(--bw));will-change:border-width}
html.js:not(.hero-in) .hero__dim{opacity:.15}
.hero__body{display:grid;place-content:center;text-align:center;padding:calc(var(--nav-h) + 3rem) var(--gutter) 3rem}
.hero__body .eyebrow{margin-bottom:clamp(1.25rem,3vh,2rem);opacity:.75}
.hero__body .eyebrow.reveal{opacity:0}.hero__body .eyebrow.reveal.is-in{opacity:.75}
.hero h1{font-size:var(--fs-h1);max-width:16ch;margin:0 auto}
@media (min-width:900px){.hero h1{max-width:none}}
.hero__lead{max-width:44rem;margin:clamp(1.5rem,3.5vh,2.5rem) auto 0;font-size:var(--fs-lead);line-height:1.4;opacity:.95}
.hero__lead.reveal{opacity:0}.hero__lead.reveal.is-in{opacity:.95}
.hero__cta{margin-top:clamp(2rem,4.5vh,3rem)}
.hero__bottom{display:grid;grid-template-columns:1fr auto 1fr;justify-items:center;align-items:end;gap:1rem;padding:0 var(--gutter) clamp(1.5rem,4vh,2.75rem);font-size:var(--fs-small)}
.hero__bottom .eyebrow{letter-spacing:.18em;opacity:.85;justify-self:start}
.scroll{display:inline-flex;flex-direction:column;align-items:center;gap:.9rem;text-decoration:none;opacity:.75;color:var(--ivory);transition:opacity .3s}
.scroll:hover{opacity:1}
.scroll__label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.32em}
.scroll__line{width:1px;height:2.75rem;background:currentColor;transform-origin:top;animation:line 2.6s ease-in-out infinite}
@keyframes line{0%{transform:scaleY(0);opacity:0}30%{opacity:1}100%{transform:scaleY(1);opacity:0}}
.br{display:none}
@media (min-width:900px){.br{display:inline}}
@media (max-width:640px){.hero__bottom{grid-template-columns:1fr}.hero__bottom .eyebrow{display:none}.hero__media img{object-position:50% 45%}}

/* ---------- Cabecera de página interior ---------- */
.phero{padding:calc(var(--nav-h) + clamp(4rem,10vh,7rem)) 0 0;background:var(--mineral)}
.phero__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2rem clamp(2rem,6vw,6rem);align-items:end;padding-bottom:clamp(3rem,7vh,5rem)}
.phero .eyebrow{margin-bottom:1.25rem;opacity:.75}
.phero h1{font-size:var(--fs-h2)}
.phero__text{max-width:var(--measure);align-self:end}
.phero__text .lead{font-size:var(--fs-body);line-height:var(--lh)}
.phero__media{aspect-ratio:16/8;max-height:74vh}
.phero__media img{width:100%;height:100%;object-fit:cover}
@media (max-width:800px){.phero__inner{grid-template-columns:1fr}.phero__media{aspect-ratio:4/3}}

/* ---------- Cabecera interior v2 · marco negro, titular centrado, foto + párrafo al pie ---------- */
.phero2{margin-top:var(--nav-h);border:var(--bw) solid var(--black);background:var(--ivory)}
.phero2__title{text-align:center;padding:clamp(3.5rem,9vh,6.5rem) var(--gutter)}
.phero2__title .eyebrow{margin-bottom:1.25rem;opacity:.7}
.phero2__title h1{font-size:var(--fs-h1);max-width:22ch;margin:0 auto;text-wrap:balance}
.phero2__rule{height:var(--bw);background:var(--black)}
.phero2__body{--gap:clamp(1rem,2vw,2rem);display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:end;gap:var(--gap);padding:var(--gap)}
.phero2__media{aspect-ratio:16/10;max-height:78vh;min-height:24rem}
.phero2__media img{width:100%;height:100%;object-fit:cover}
.phero2__text{padding:0 clamp(0rem,2vw,2rem) 0 0;max-width:34rem;font-size:var(--fs-body);line-height:var(--lh)}
.phero2__text .lead{font-size:var(--fs-body);line-height:var(--lh)}
/* cabecera v3: foto a sangre entre los márgenes de la barra; debajo, titular | texto | ornamento */
.phero3{--pad:clamp(1.25rem,2.5vw,2.75rem);margin-top:var(--nav-h);padding:var(--pad) var(--pad) 0}
.phero3__media{aspect-ratio:21/9;max-height:72vh;min-height:20rem}
.phero3__media img{width:100%;height:100%;object-fit:cover}
.phero3__row{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,5fr) minmax(0,2fr);gap:clamp(2rem,4vw,5rem);align-items:start;padding:clamp(3rem,7vh,5rem) var(--pad) clamp(1rem,3vh,2rem)}
.phero3--orn .phero3__row{grid-template-columns:minmax(0,5fr) minmax(0,5fr) minmax(0,2fr)}
.phero3__row h1{font-size:2.125rem;margin:0;line-height:1.2}   /* mismo nivel que los h2 de los splits */
.phero3__text{max-width:22rem;font-size:var(--fs-small);line-height:1.55}   /* mismo nivel que el párrafo de las tarjetas de la tira; columna estrecha con aire lateral */
.phero3__text .lead{font-size:var(--fs-small);line-height:1.55}
.phero3__text p+p{margin-top:1.1em}
.phero3__orn{justify-self:end;align-self:end;width:clamp(3rem,4.5vw,4.25rem);color:var(--black)}   /* pequeño y alineado con el final del párrafo */
.phero3__orn svg{width:100%;height:auto;display:block}
@media (max-width:800px){.phero3__media{aspect-ratio:4/3;min-height:0;max-height:none}.phero3__row,.phero3--orn .phero3__row{grid-template-columns:1fr;gap:1.5rem;padding-top:2rem}.phero3__text{max-width:none}.phero3__orn{justify-self:start;width:4rem;margin-top:.5rem}}
/* cabecera v4: imagen a pantalla completa bajo la barra, titular centrado en marfil; después la intro centrada */
.phero4{position:relative;margin-top:var(--nav-h);min-height:calc(100svh - var(--nav-h));display:grid;place-items:center;isolation:isolate;overflow:hidden;background:var(--black);color:var(--ivory);padding:clamp(3rem,8vh,6rem) var(--gutter)}
.phero4__media{position:absolute;inset:0;z-index:-2;background:var(--black)}
.phero4__media img{width:100%;height:100%;object-fit:cover}
.phero4__veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(34,34,34,.18) 0%,rgba(34,34,34,.30) 55%,rgba(34,34,34,.48) 100%)}
.phero4 h1{font-size:clamp(1.9rem,.9rem + 3.4vw,3.9rem);text-align:center;max-width:22ch;text-wrap:balance;margin:0;line-height:1.15}
.intro{padding:clamp(4.5rem,10vh,7rem) var(--gutter) clamp(2rem,4vh,3rem);text-align:center}
.intro__text{max-width:34rem;margin:0 auto;font-size:var(--fs-body);line-height:var(--lh)}
.intro__text p+p{margin-top:1.1em}
.intro__orn{width:clamp(2.75rem,3.5vw,3.5rem);margin:clamp(2rem,4vh,3rem) auto 0;color:var(--violet)}
.intro__orn svg{width:100%;height:auto;display:block}
/* momento a pantalla completa sin texto (Home) */
.moment{height:100svh;min-height:32rem;background:var(--black)}
.moment__media{height:100%}
.moment__media img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
@media (max-width:800px){.phero4{min-height:72svh}.moment{height:70svh}}
@media (max-width:800px){.phero2__body{grid-template-columns:1fr}.phero2__media{aspect-ratio:4/3;min-height:0;max-height:none}.phero2__text{max-width:none;padding:.25rem 0 .5rem}}

/* Cabecera de Contacto · dos celdas divididas por el filete negro, titular a tamaño H1 */
.chero{margin-top:var(--nav-h);background:var(--mineral);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;border:var(--bw) solid var(--black);border-bottom:0}
.chero__title{padding:clamp(3.5rem,9vh,6rem) clamp(1.25rem,2.5vw,2.75rem);border-right:var(--bw) solid var(--black);display:grid;align-content:center}
.chero__title h1{font-size:var(--fs-h1)}
.chero__text{padding:clamp(3.5rem,9vh,6rem) clamp(1.25rem,2.5vw,2.75rem);max-width:calc(var(--measure) + 2*clamp(1.25rem,2.5vw,2.75rem));display:grid;align-content:center;justify-self:center;width:100%}
.chero__text .lead{font-size:var(--fs-body);line-height:var(--lh)}
@media (max-width:800px){.chero{grid-template-columns:1fr}.chero__title{border-right:0;border-bottom:var(--bw) solid var(--black);padding-bottom:clamp(2rem,5vh,3rem)}.chero__text{padding-top:clamp(2rem,5vh,3rem);max-width:none}}

/* ---------- Secciones ---------- */
.sec{padding:clamp(5rem,11vh,8.5rem) 0}
.sec--tight{padding:clamp(3.5rem,8vh,6rem) 0}
.sec--mineral{background:var(--mineral)}
.sec--violet{background:var(--violet)}
.sec--dark{background:var(--black);color:var(--ivory)}
.sec--dark .rule{background:var(--ivory)}
.sec__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem clamp(2rem,6vw,6rem);align-items:end;margin-bottom:clamp(2.5rem,6vh,4.5rem)}
.sec__head h2{font-size:var(--fs-h2)}
.sec__head .eyebrow{margin-bottom:1.1rem;opacity:.7}
.sec__head--center{grid-template-columns:1fr;text-align:center;justify-items:center}
.sec__head--center .measure{margin:0 auto}
h2.display,h3.display{text-wrap:balance}
h3.display{font-size:var(--fs-h3)}
.sec__foot{display:flex;justify-content:center;margin-top:clamp(2.5rem,6vh,4rem)}
@media (max-width:800px){.sec__head{grid-template-columns:1fr}}

/* Doble panel dividido por marco (dossier): texto centrado sobre Mineral · imagen pequeña con aire dentro del marco */
.panels{display:grid;grid-template-columns:1fr 1fr;min-height:min(92svh,56rem)}
.panels__text{background:var(--mineral);display:grid;place-items:center;padding:clamp(4rem,10vh,7rem) var(--gutter);text-align:center}
.panels__inner{max-width:34rem;display:grid;gap:1.25rem;justify-items:center}
.panels__inner .intro__icon{margin:0 0 .25rem}
.panels__inner .eyebrow{opacity:.7}
.panels__inner h2{font-size:var(--fs-h3);margin-bottom:.5rem}
.panels__inner p{text-wrap:pretty}
.panels__media{background:var(--ivory);display:grid;place-items:center;padding:clamp(3rem,9vh,6rem) clamp(3rem,9vw,8rem)}
.panels__img{width:min(100%,26rem);aspect-ratio:4/5}
.panels__media.media--reveal::after,.panels .media--reveal::after{background:var(--ivory)}
@media (max-width:800px){.panels{grid-template-columns:1fr;min-height:0}.panels__media{padding:3rem clamp(2rem,12vw,5rem)}.panels__img{width:min(100%,20rem)}}

/* Equipo · celdas divididas por el filete negro grueso, con la imagen dentro del marco */
.team{background:var(--black)}
.team__row{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--bw);background:var(--black)}
.team__row > li{display:contents}
.team__cell{background:var(--ivory);color:var(--black);text-decoration:none;padding:clamp(1.75rem,4vh,2.5rem) clamp(1.25rem,2.2vw,2rem);display:grid;gap:.9rem;align-content:start;transition:background .55s var(--e-out)}
a.team__cell:hover,a.team__cell:focus-visible{background:var(--mineral);outline:none}
.team__cell b{font-family:var(--display);font-weight:200;font-size:clamp(1.25rem,1rem + 1vw,1.75rem);letter-spacing:.03em;line-height:1.2;text-wrap:balance}
.team__logo{display:flex;align-items:center;height:clamp(3.25rem,4.5vw,4.25rem);color:var(--black)}
.team__logo svg{height:100%;width:auto;max-width:100%}
.team__logo--rhaiga svg{height:46%}
.team__logo--lesarc svg{height:100%}
.team__mediawrap{background:var(--ivory);border-top:var(--bw) solid var(--black);padding:clamp(1rem,2vw,2rem)}
.team__media{aspect-ratio:3/1}
@media (max-width:900px){.team__row{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.team__row{grid-template-columns:1fr}.team__media{aspect-ratio:3/2}}

/* Bloque texto + imagen */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2.5rem,6vw,7rem);align-items:center}
.split--rev .split__media{order:-1}
.split--end{align-items:end}
@media (max-width:800px){.split--end{align-items:start}}
.split__text{max-width:var(--measure)}
.split__text .eyebrow{margin-bottom:1.1rem;opacity:.7}
.split__text h2,.split__text h3{margin-bottom:clamp(1.25rem,3vh,1.75rem)}
.split__text h2{font-size:2.125rem}   /* 34 px (pedido 2026-09-14) */
@media (max-width:800px){.split__text h2{font-size:var(--fs-h3)}}
.split__text .arrow,.split__text .btn{margin-top:clamp(1.75rem,4vh,2.5rem)}
.split__media{aspect-ratio:4/5}
.split__media--wide{aspect-ratio:4/3}
.split__media--square{aspect-ratio:1}
.split__media.split__media--natural{aspect-ratio:1537/1800}   /* grabado del dossier: proporción real, sin recorte */
.split + .split{margin-top:clamp(5rem,11vh,8.5rem)}
@media (max-width:800px){.split{grid-template-columns:1fr;gap:2rem}.split--rev .split__media{order:0}.split__media{aspect-ratio:4/3}}

/* Datos clave (portada / viviendas) */
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--rule)}
.facts li{list-style:none;padding:clamp(1.5rem,3vh,2.25rem) clamp(1rem,2vw,2rem) clamp(1.5rem,3vh,2.25rem) 0;border-bottom:1px solid var(--rule);display:grid;gap:.9rem;align-content:start}
.facts .num{font-family:var(--display);font-weight:200;font-size:clamp(1.75rem,1.2rem + 1.6vw,2.75rem);line-height:1.1;letter-spacing:.02em}
.facts .num small{font-size:.5em;letter-spacing:.06em;vertical-align:.5em}
.facts--plain li{grid-template-columns:auto 1fr;gap:1rem;align-items:start}
.facts--plain p{max-width:none;font-size:var(--fs-body)}
.fact__ico{width:1.1rem;height:auto;margin-top:.15rem;color:var(--black);opacity:.85}
.facts p{font-size:var(--fs-body);max-width:24ch}
.facts--plain{border-top:1px solid var(--rule)}
.facts--4{grid-template-columns:repeat(4,1fr)}
@media (max-width:800px){.facts,.facts--4{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.facts,.facts--4{grid-template-columns:1fr}}

/* Datos clave · rejilla de celdas con filete (dossier p.3) */
.tiles{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--bw);background:var(--black);border:var(--bw) solid var(--black)}
.tiles--4{grid-template-columns:repeat(4,1fr)}
.tiles--1{grid-template-columns:1fr}
.tile{background:var(--ivory);padding:clamp(2.5rem,5.5vh,4rem) clamp(1.75rem,3vw,3rem) clamp(2.5rem,5.5vh,3.75rem);min-height:clamp(15rem,30vh,20rem);display:grid;gap:clamp(1.75rem,4vh,2.75rem);align-content:start;transition:background .55s var(--e-out)}
.sec--mineral .tile{background:var(--mineral)}
.tile:hover{background:var(--mineral)}
.sec--mineral .tile:hover{background:var(--ivory)}
.tile__ico{width:1.4rem;height:auto;color:var(--black)}
.frame--section{margin-bottom:0}
.sec--airy-b{padding-bottom:clamp(8rem,18vh,13rem)}
.sec--airy-t{padding-top:clamp(7rem,16vh,12rem)}
/* Cierre de portada: junto con el pie ocupa la pantalla completa */
.sec--fill{min-height:calc(100svh - var(--footer-h,14rem));display:grid;align-content:center}
.sec--fill .quote p.display{font-size:var(--fs-h1);max-width:18ch}
.sec--fill .quote .lead{max-width:40rem!important;margin-top:clamp(1.75rem,4vh,2.75rem)!important}
.sec--fill .quote .btn{margin-top:clamp(2.25rem,5.5vh,3.5rem)}
.tile p{display:flex;flex-direction:column;gap:.7rem;max-width:none;font-size:.75rem;text-transform:uppercase;letter-spacing:.16em;line-height:1.5}
.tile b{font-family:var(--display);font-weight:200;font-size:clamp(1.5rem,1.15rem + 1.3vw,2.375rem);line-height:1.12;letter-spacing:.03em;text-transform:uppercase;text-wrap:balance}
.tile b small{font-size:.5em;letter-spacing:.06em;vertical-align:.55em}
.tiles--4 .tile b{font-size:clamp(1.35rem,1rem + 1.1vw,2rem)}
@media (max-width:1000px){.tiles,.tiles--4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.tiles,.tiles--4{grid-template-columns:1fr}}

/* Intro con icono (Ivory limpio · hereda del coming soon) */
.intro{padding:clamp(6rem,14vh,10rem) var(--gutter)}
.intro__inner{max-width:var(--measure);margin:0 auto;text-align:center}
.intro__icon{width:clamp(2.5rem,3.6vw,3.25rem);height:auto;margin:0 auto clamp(2rem,5vh,3rem);color:var(--black)}
.intro .rule{margin:clamp(2.5rem,6vh,4rem) auto 0}

/* Teasers de portada */
/* Home: tira horizontal de secciones (ref. Kinfolk «Inside Issue»): tarjetas con scroll lateral, snap y arrastre */
.strip{padding-bottom:clamp(4rem,9vh,6rem);background:var(--violet)}   /* Home: la tira de secciones sobre violeta */
.strip .strip__btn{border-color:var(--black)}
.strip .media{background:rgba(34,34,34,.08)}
.strip__head{display:flex;justify-content:space-between;align-items:center;min-height:2.75rem;margin-bottom:clamp(1.5rem,3.5vh,2.5rem);padding-left:clamp(1.25rem,2.5vw,2.75rem);padding-right:clamp(1.25rem,2.5vw,2.75rem)}
.strip__nav{display:flex;gap:.6rem}
.strip__nav[hidden]{display:none}   /* display:flex anulaba el atributo hidden */
.strip__btn{appearance:none;width:2.75rem;height:2.75rem;border:1px solid var(--black);background:transparent;color:var(--black);display:grid;place-items:center;cursor:pointer;transition:background .3s,color .3s,opacity .3s}
.strip__btn svg{width:1.1rem;height:1.1rem}
.strip__btn:hover,.strip__btn:focus-visible{background:var(--black);color:var(--ivory)}
.strip__btn[disabled]{opacity:.3;pointer-events:none}
.strip__track{--sg:clamp(1.25rem,2.5vw,2.75rem);display:flex;gap:clamp(1rem,2vw,2rem);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--sg) .5rem;scroll-padding-inline:var(--sg);scrollbar-width:none;cursor:grab;-webkit-overflow-scrolling:touch}
.strip__track::-webkit-scrollbar{display:none}
.strip__track.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
.strip__card{flex:0 0 clamp(17rem,29vw,26.5rem);scroll-snap-align:start;display:grid;gap:1.4rem;align-content:start}
.strip__media{display:block;aspect-ratio:4/5}
.strip__media img{transition:transform 1.6s var(--e-out)}
.strip__card:hover .strip__media img{transform:scale(1.04)}
.strip__text{display:grid;gap:.9rem;padding-right:1rem}
.strip__text .eyebrow{opacity:.7}
.strip__text h2{font-size:clamp(1.35rem,1.05rem + 1vw,1.9rem);max-width:none}
.strip__text p{font-size:var(--fs-small);line-height:1.55;max-width:34rem}
.strip__text .arrow{margin-top:.5rem}
@media (max-width:640px){.strip__card{flex-basis:82vw}.strip__media{aspect-ratio:4/5}}
.teaser{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(2rem,5vw,6rem);align-items:end}
.teaser:nth-of-type(even){grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.teaser:nth-of-type(even) .teaser__media{order:2}
.teaser__media{aspect-ratio:3/2}
.teaser__text{max-width:36rem}
.teaser__text .eyebrow{margin-bottom:1rem;opacity:.7}
.teaser__text h2{font-size:var(--fs-h3);margin-bottom:1.25rem}
.teaser__text .arrow{margin-top:1.75rem}
.teaser + .teaser{margin-top:clamp(7rem,16vh,12rem)}
@media (max-width:800px){.teaser,.teaser:nth-of-type(even){grid-template-columns:1fr;align-items:start}.teaser + .teaser{margin-top:clamp(4rem,9vh,6rem)}.teaser:nth-of-type(even) .teaser__media{order:0}}

/* Galerías de estancias / amenities */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.5rem,3vw,3rem) clamp(1.5rem,3vw,3rem)}
.cards--3{grid-template-columns:repeat(3,1fr)}
.card{display:grid;gap:1rem;align-content:start}
.card .media{aspect-ratio:3/2}
.card--tall .media{aspect-ratio:4/5}
.card--square .media{aspect-ratio:1}
.card figcaption{display:grid;gap:.4rem;max-width:40ch}
.card figcaption .eyebrow{opacity:.7}
.card figcaption p{font-size:var(--fs-body)}
.cards--stagger .card:nth-child(even){transform:translateY(clamp(1.5rem,5vw,4.5rem))}
@media (max-width:800px){.cards,.cards--3{grid-template-columns:1fr}.cards--stagger .card:nth-child(even){transform:none}}
@media (min-width:801px) and (max-width:1100px){.cards--3{grid-template-columns:repeat(2,1fr)}}
/* estancias: renders sin pie, rejilla simétrica (panorámico + 2×2) a los márgenes de la barra */
.estancias{display:grid;grid-template-columns:1fr 1fr;gap:clamp(.75rem,1.5vw,1.5rem)}
.estancias .media{aspect-ratio:3/2}
.estancias .estancias__wide{grid-column:1/-1;aspect-ratio:2/1}
.estancias--whole .media{aspect-ratio:1}
.estancias--whole .media.estancias__wide{aspect-ratio:3/2}   /* piscina y patio enteros, en su proporción */
@media (max-width:800px){.estancias--whole .media{aspect-ratio:1}.estancias--whole .media.estancias__wide{aspect-ratio:3/2}}
.estancias--3{grid-template-columns:repeat(3,1fr)}
.estancias--3 .media{aspect-ratio:4/5}   /* panorámica + tres verticales iguales (Amenities) */
@media (max-width:800px){.estancias{grid-template-columns:1fr}.estancias .media,.estancias .estancias__wide{aspect-ratio:3/2}}

/* Mosaico de fotografía (localización / edificio) */
.mosaic{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(.75rem,1.5vw,1.5rem)}
.mosaic .media:nth-child(1){grid-column:span 7;aspect-ratio:3/2}
.mosaic .media:nth-child(2){grid-column:span 5;aspect-ratio:5/4}
.mosaic .media:nth-child(3){grid-column:span 4;aspect-ratio:4/5}
.mosaic .media:nth-child(4){grid-column:span 8;aspect-ratio:2/1}
@media (max-width:800px){.mosaic .media{grid-column:span 12!important;aspect-ratio:3/2!important}}
/* galería simétrica: dos iguales + una panorámica centrada en el eje */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:clamp(.75rem,1.5vw,1.5rem)}
.gallery .media{aspect-ratio:4/3}
.gallery .gallery__wide{grid-column:1/-1;aspect-ratio:21/9}
.gallery--3{grid-template-columns:repeat(3,1fr)}
.gallery--3 .media{aspect-ratio:4/5}
.gallery--3 .gallery__wide{aspect-ratio:21/9}
@media (max-width:800px){.gallery{grid-template-columns:1fr}.gallery .media,.gallery .gallery__wide{aspect-ratio:3/2}}

/* Cita / frase grande */
.quote{text-align:center;padding:clamp(5rem,12vh,9rem) var(--gutter)}
/* cierre de sección tipo banner: imagen de la sección siguiente, texto marfil a la izquierda y botón perfilado (ref. Kinfolk) */
.next{position:relative;display:grid;align-items:center;min-height:clamp(20rem,50vh,30rem);color:var(--ivory);text-decoration:none;isolation:isolate;overflow:hidden;background:var(--black)}
.next__media{position:absolute;inset:0;z-index:-2;aspect-ratio:auto}
.next__media img{width:100%;height:100%;object-fit:cover;transition:transform 1.6s var(--e-out)}
.next:hover .next__media img{transform:scale(1.04)}
.next__veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(34,34,34,.62) 0%,rgba(34,34,34,.34) 50%,rgba(34,34,34,.5) 100%)}
.next__body{padding:clamp(3rem,7vh,5rem) var(--gutter);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto;column-gap:clamp(2rem,5vw,6rem);align-items:center}   /* texto a la izquierda, botón a la derecha */
.next__body .eyebrow{opacity:.85;margin-bottom:1.25rem;grid-column:1;align-self:end}
.next__title{font-size:var(--fs-h2);max-width:18ch;text-wrap:balance;margin:0;grid-column:1;align-self:center}
.next__link{position:absolute;inset:0;z-index:1}   /* todo el banner enlaza a la sección siguiente */
.next__body{position:relative;z-index:2;pointer-events:none}   /* por encima del enlace general, pero transparente al ratón salvo el CTA */
.next__actions{grid-column:2;grid-row:1;justify-self:end;align-self:center;display:grid;justify-items:end;gap:1.1rem}
.next__btn{border-color:var(--ivory);color:var(--ivory)}
.next__cta{position:relative;z-index:2;pointer-events:auto;color:var(--ivory);font-size:.6875rem}   /* llamada a contacto integrada en el cierre, por encima del enlace general */
.next__cta:hover{opacity:.8}
.next:hover .next__btn,.next__link:focus-visible ~ .next__body .next__btn{background:var(--ivory);color:var(--black)}
.next .media--reveal::after{display:none}
@media (max-width:640px){.next{min-height:24rem;align-items:end}.next__veil{background:linear-gradient(180deg,rgba(34,34,34,.15) 0%,rgba(34,34,34,.62) 100%)}.next__body{grid-template-columns:1fr;grid-template-rows:auto auto;row-gap:0}.next__actions{grid-column:1;grid-row:2;justify-self:start;justify-items:start;margin-top:1.75rem}}
.next + .ctaband{border-top:0}
.next + .footer{border-top:0}
.quote p{font-size:var(--fs-h2);max-width:22ch;margin:0 auto}
.quote .arrow,.quote .btn{margin-top:clamp(2rem,5vh,3rem)}

/* Marco Midnight Black grueso (heredado del registro del coming soon) */
.frame{border:var(--bw) solid var(--black)}
.frame--no-b{border-bottom:0}
.frame--no-t{border-top:0}
.frame__rule{height:var(--bw);background:var(--black)}

/* ---------- Tabla de tipologías ---------- */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;min-width:44rem}
.tbl th,.tbl td{text-align:left;padding:1.15rem 1rem 1.15rem 0;border-bottom:1px solid var(--rule);vertical-align:top}
.tbl th{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;font-weight:400;opacity:.7;padding-top:0;padding-bottom:.9rem}
.tbl td:first-child{font-family:var(--display);font-weight:200;font-size:1.375rem;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.tbl td small{display:block;font-size:var(--fs-small);opacity:.7;margin-top:.25rem}
.tbl .m2{white-space:nowrap}
.tbl tr.is-top td{border-bottom:0;padding-bottom:.4rem}
.tbl tr.is-top + tr td{padding-top:0}
.tbl tbody tr:last-child td{border-bottom:1px solid var(--black)}
.status{display:inline-flex;gap:.45rem;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:.45rem;font-size:.6875rem;text-transform:uppercase;letter-spacing:.14em;padding:.35rem .7rem;border:1px solid var(--black);white-space:nowrap}
.chip::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:currentColor}
.chip--disponible{background:transparent}
.chip--reservado{background:var(--violet);border-color:var(--violet)}
.chip--vendido{background:#8c8a80;border-color:#8c8a80;color:var(--ivory)}
.chip--vendido::before{background:var(--ivory)}
.legend{display:flex;gap:1.25rem 2rem;flex-wrap:wrap;margin-top:1.5rem;font-size:var(--fs-small)}
.legend span{display:inline-flex;align-items:center;gap:.6rem}
.legend i{width:.75rem;height:.75rem;border:1px solid var(--black);display:inline-block}
.legend .i-reservado{background:var(--violet);border-color:var(--violet)}
.legend .i-vendido{background:#8c8a80;border-color:#8c8a80}
.disclaimer{font-size:.75rem;line-height:1.55;opacity:.65;max-width:70ch}

/* Ficha de planos · planta sobre Ivory */
.plano{display:flex;justify-content:space-between;align-items:center;gap:2rem 3rem;flex-wrap:wrap;padding-top:clamp(1.5rem,3vh,2rem);border-top:1px solid var(--rule)}   /* fila de cierre de la tabla: rótulo + acciones, sin plano */
.plano .eyebrow{opacity:.7}
@media (max-width:640px){.plano{flex-direction:column;align-items:flex-start}}
/* Áticos · banda Violet con marco */
.aticos{background:var(--violet);color:var(--black)}   /* violeta: el bloque protagonista de Viviendas */
.aticos .media--reveal::after{background:var(--violet)}
.aticos .btn:hover,.aticos .btn:focus-visible{background:var(--ivory);border-color:var(--ivory);color:var(--black)}
.aticos__head{display:grid;gap:0;max-width:var(--measure);margin-bottom:clamp(3rem,7vh,5rem)}
.aticos__head .eyebrow{opacity:.7;margin-bottom:1.1rem}
.aticos__head h2{font-size:var(--fs-h2);margin-bottom:clamp(1.25rem,3vh,2rem)}
.aticos__split{align-items:stretch}
.aticos__media{aspect-ratio:1;min-height:0;width:100%;height:auto;align-self:start}   /* el ancho manda: nunca se sale de su columna */   /* cuadrada: sin los párrafos, las fichas son cortas y la foto a su alto natural (2:3) dejaba un hueco enorme */
.aticos__col{display:grid;align-content:space-between;gap:clamp(2.5rem,6vh,4rem)}
.aticos__col .aticos__item + .aticos__item{padding-top:clamp(2.5rem,6vh,4rem);border-top:1px solid var(--black)}
@media (max-width:800px){.aticos__media{aspect-ratio:4/3;min-height:0}}
.aticos__item{display:grid;gap:1.25rem;align-content:start}
.aticos__item .eyebrow{opacity:.75}
.aticos__specs{list-style:none;display:grid;gap:.6rem;padding-top:1.25rem;border-top:1px solid var(--black);margin-top:.5rem;font-size:var(--fs-small);letter-spacing:.04em}
.aticos__specs li{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.15rem 1.5rem}
.aticos__specs b{font-weight:400;font-family:var(--display);font-size:1.2rem;letter-spacing:.02em;text-align:right;white-space:nowrap}
.aticos__specs small{grid-column:2;text-align:right;opacity:.7;font-size:.75rem;letter-spacing:.03em}

/* Interiorismo · soluciones y muestras */
.solutions{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.5rem,3vw,3rem)}
.solution{display:grid;gap:1.1rem;align-content:start;padding-top:1.25rem;border-top:1px solid var(--black)}
.solution h3{font-size:1.25rem}
.swatches{display:flex;gap:.75rem}
.swatch{width:clamp(3.25rem,5vw,4.5rem);aspect-ratio:1;border-radius:50%;overflow:hidden;border:1px solid var(--rule)}
.swatch img{width:100%;height:100%;object-fit:cover}
.solution dl{display:grid;gap:.75rem;font-size:var(--fs-small);line-height:1.5}
.solution dt{text-transform:uppercase;letter-spacing:.18em;font-size:.6875rem;opacity:.65}
@media (max-width:800px){.solutions{grid-template-columns:1fr}}

/* ---------- Mapa interactivo ---------- */
.map{--gap:clamp(1rem,2vw,2rem);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}
.map__side{display:grid;grid-template-rows:auto 1fr;gap:0;align-content:start;padding:0;border-right:var(--bw) solid var(--black);background:var(--ivory)}
.map__head{padding:var(--gap);border-bottom:var(--bw) solid var(--black);container-type:inline-size}
.map__head h2{font-size:clamp(2rem,11.8cqw,4.5rem);max-width:none;line-height:1.1;overflow-wrap:anywhere}
.map__side .map__cols{padding:var(--gap) var(--gap) 0}
.map__side .map__note{padding:2rem var(--gap) .85rem}
.map__cols{display:flex;flex-wrap:wrap;gap:2rem clamp(1.75rem,3vw,3.5rem);align-items:flex-start}
@media (min-width:1800px){.map__cols{flex-wrap:nowrap}}
.map__side .map__note{align-self:end;margin:0}
.map__area{display:grid;place-items:center;padding:var(--gap);background:var(--ivory)}
.map__side .eyebrow{opacity:.7;margin-bottom:.8rem}
.filters{display:grid;gap:.5rem}
.filter{appearance:none;position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;gap:.9rem;background:transparent;border:1px solid var(--rule);padding:.8rem 1rem;text-align:left;cursor:pointer;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.16em;transition:border-color .25s,color .3s,opacity .25s}
.filter::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--black);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--e-out)}
.filter:hover,.filter:focus-visible{color:var(--ivory);border-color:var(--black);opacity:1}
.filter:hover::before,.filter:focus-visible::before{transform:scaleX(1)}
.filter:hover i{border-color:var(--ivory)}
.filter:hover .n,.filter:focus-visible .n{opacity:.85}
.filter i{width:.85rem;height:.85rem;border-radius:50%;border:1px solid var(--black);flex:0 0 auto}
.filters.is-solo .filter[aria-pressed="true"]{color:var(--ivory);border-color:var(--black)}
.filters.is-solo .filter[aria-pressed="true"]::before{transform:scaleX(1)}
.filters.is-solo .filter[aria-pressed="true"] i{border-color:var(--ivory)}
.filters.is-solo .filter[aria-pressed="true"] .n{opacity:.85}
.filters.is-solo .filter[aria-pressed="false"]{opacity:.55}
.filter .n{margin-left:auto;opacity:.55;letter-spacing:.05em}
.i-gastro{background:#75756d}.i-moda{background:#ccc5b0}.i-arte{background:var(--ivory)}.i-bienestar{background:#3d3d3b}
.radius{display:grid;border:1px solid var(--black)}
.radius button{text-align:left;white-space:nowrap}
.radius button + button{border-top:1px solid var(--black)}
.radius button{appearance:none;background:transparent;border:0;padding:.8rem 1.1rem;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.16em;cursor:pointer;transition:background .25s,color .25s}
.radius button[aria-pressed="true"]{background:var(--black);color:var(--ivory)}
.map__note{font-size:.6875rem;opacity:.45;line-height:1.45;max-width:30rem}
.map__stage{position:relative;overflow:hidden;background:var(--ivory);width:min(calc(var(--mw,1110) * 1px),calc(100vw - 30rem))}
.map__canvas{position:relative;aspect-ratio:1110/1080;width:100%;container-type:inline-size}
.map__base{position:absolute;inset:0;width:100%;height:100%}
.map__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.map__svg .ring{fill:none;stroke:var(--black);stroke-width:1.6;stroke-dasharray:2 7;stroke-linecap:round;transition:opacity .5s}
.map__svg .ring.is-off{opacity:.18}
.map__svg .home{fill:var(--violet);stroke:var(--black);stroke-width:1.2}
.map__svg .home-icon{fill:var(--black)}
.map__svg .street{font-family:var(--text);font-size:11px;letter-spacing:.14em;text-transform:uppercase;fill:var(--black);opacity:.75}
.map__svg .rlabel{font-family:var(--text);font-size:12px;letter-spacing:.08em;fill:var(--black)}
.map__layer{position:absolute;inset:0}
.poi-dot,.poi-tag{position:absolute;left:calc(var(--x)*100%);top:calc(var(--y)*100%);transform:translate(calc(-50% + var(--sx,0px)),calc(-50% + var(--sy,0px)));transition:opacity .45s var(--e-out),transform .45s var(--e-out)}
.poi-dot{width:clamp(6px,.9cqw,8px);height:clamp(6px,.9cqw,8px);border-radius:50%;background:var(--black)}
.poi-tag{appearance:none;white-space:pre;text-align:center;font-size:clamp(.53rem,.92cqw,.6875rem);letter-spacing:.02em;padding:.3em .7em;border:1px solid var(--black);border-radius:999px;background:var(--ivory);color:var(--black);line-height:1.2;cursor:default;transition:background .25s,color .25s,opacity .45s var(--e-out),transform .45s var(--e-out)}
.poi-dot.is-off,.poi-tag.is-off{opacity:0;pointer-events:none;transform:translate(calc(-50% + var(--sx,0px)),calc(-50% + var(--sy,0px))) scale(.85)}
.poi-tag.poi--gastro{background:#75756d;color:var(--ivory)}
.poi-tag.poi--moda{background:#ccc5b0}
.poi-tag.poi--bienestar{background:#3d3d3b;color:var(--ivory)}
.poi-tag:hover,.poi-tag:focus-visible{background:var(--black);color:var(--ivory);z-index:2}
.map__list{margin-top:2.5rem;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem 2rem;font-size:var(--fs-small);line-height:1.5}
.map__list h3{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;opacity:.7;margin-bottom:.8rem;display:flex;align-items:center;gap:.6rem}
.map__list h3 i{width:.7rem;height:.7rem;border-radius:50%;border:1px solid var(--black)}
.map__list ul{list-style:none}
.map__list li{padding:.3rem 0;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:.75rem;opacity:0;transform:translateY(8px);transition:opacity .6s var(--e-power3),transform .6s var(--e-power3);transition-delay:calc(var(--i,0)*45ms)}
.map__list ul.is-in li{opacity:1;transform:none}
.map__list li .t{opacity:.55;white-space:nowrap;display:inline-flex;align-items:center;gap:.35rem}
.walk{width:.95rem;height:.95rem;flex:0 0 auto;transition:transform .4s var(--e-out)}
.map__list li:hover .walk{transform:translateX(3px)}
.map__list ul.is-in li.is-off{opacity:.3;transition-delay:0s}
@media (prefers-reduced-motion:reduce){.map__list li{opacity:1;transform:none;transition:none}}
@media (max-width:1300px){.map{grid-template-columns:1fr}.map__side{border-right:0;border-bottom:var(--bw) solid var(--black);grid-template-rows:auto auto}.map__area{padding:var(--gap) 0 0}.map__stage{overflow:auto;width:100%}.map__canvas{min-width:50rem}}
@media (max-width:560px){.map__cols{grid-template-columns:1fr}}
@media (max-width:800px){.map__list{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.map__list{grid-template-columns:1fr}.poi-tag{font-size:.5625rem}}

/* ---------- Formularios ---------- */
.form{display:grid;gap:1.5rem 2rem;grid-template-columns:1fr 1fr;text-align:left;align-content:start;align-self:start}
.field{position:relative;display:grid;gap:.5rem;align-content:start}
.field--full{grid-column:1/-1}
.field label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.16em}
.req{opacity:.7}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.field input,.field textarea{appearance:none;width:100%;background:transparent;border:0;border-bottom:1px solid var(--black);border-radius:0;padding:.65rem 0;font:inherit;font-size:var(--fs-body);color:var(--black);outline:none;transition:border-color .2s}
.field textarea{resize:vertical;min-height:3.2rem;line-height:1.4}
.field input::placeholder,.field textarea::placeholder{color:rgba(34,34,34,.45)}
.field select{appearance:none;-webkit-appearance:none;width:100%;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none' stroke='%23222' stroke-width='1.1'%3E%3Cpath d='M2.5 5l4.5 4.5L11.5 5'/%3E%3C/svg%3E") no-repeat right .1rem center;border:0;border-bottom:1px solid var(--black);border-radius:0;padding:.65rem 1.6rem .65rem 0;font:inherit;font-size:var(--fs-body);color:var(--black);outline:none;cursor:pointer;transition:border-color .2s}
.field select:focus,.field input:focus,.field textarea:focus{border-bottom-width:2px}
.field select.is-empty{color:rgba(34,34,34,.45)}
.field select option{color:var(--black)}
.field input:user-invalid,.field select:user-invalid{border-color:#7a2e2e}
.consent{grid-column:1/-1;display:flex;gap:.85rem;align-items:flex-start;font-size:var(--fs-small);line-height:1.45}
.consent input{appearance:none;flex:0 0 auto;width:1.05rem;height:1.05rem;margin-top:.1rem;border:1px solid var(--black);background:transparent;cursor:pointer;display:grid;place-content:center}
.consent input:checked::before{content:"";width:.55rem;height:.55rem;background:var(--black)}
.consent a{text-decoration:underline;text-underline-offset:.15em}
.consent--opt{margin-top:-.5rem}
.actions{grid-column:1/-1;display:flex;justify-content:flex-start;align-items:center;gap:1.5rem;margin-top:.5rem;flex-wrap:wrap}
.form__msg{grid-column:1/-1;font-size:var(--fs-body)}
.form__msg:empty{display:none}
.form.is-done .field,.form.is-done .consent,.form.is-done .actions{display:none}
.form.is-done .form__msg{font-size:var(--fs-lead);line-height:1.4;text-wrap:balance}
@media (max-width:640px){.form{grid-template-columns:1fr}.btn{white-space:normal;text-align:center;padding:1rem 1.5rem;max-width:100%}.actions{gap:1rem 1.25rem}}

/* Contacto · banda Violet con marco (heredada del registro) */
.contact{background:var(--violet);color:var(--black);border:var(--bw) solid var(--black);border-bottom:0}
.contact__grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(2.5rem,6vw,7rem);padding-block:clamp(4rem,9vh,6rem) clamp(5rem,11vh,8rem)}   /* padding-block para no anular los márgenes laterales de .wrap */
.contact__info{display:grid;gap:1.5rem;align-content:start}
.contact__info h2{font-size:var(--fs-h2)}
.contact__info .eyebrow{opacity:.75}
.contact__meta{list-style:none;display:grid;gap:.9rem;padding-top:1.5rem;border-top:1px solid var(--black);font-size:var(--fs-small);letter-spacing:.03em;line-height:1.5}
.contact__meta a{text-decoration:underline;text-underline-offset:.15em}
.contact__meta b{display:block;font-weight:400;text-transform:uppercase;letter-spacing:.18em;font-size:.6875rem;opacity:.7;margin-bottom:.25rem}
@media (max-width:900px){.contact__grid{grid-template-columns:1fr}}

/* Minimapa de Contacto · calles reales (OpenStreetMap) en tonos lila, con el puntero de la flor */
.minimap{display:block;aspect-ratio:4/3;width:100%;max-width:none;margin-top:1rem;background:var(--violet);overflow:hidden}
.minimap svg{width:100%;height:100%;display:block}
.cmap__parks polygon{fill:#8b8bba}
.cmap__roads polyline{stroke:var(--ivory);opacity:1}
.cmap__labels text{font-family:var(--text);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;fill:var(--black);opacity:.85}
.minimap__halo{fill:var(--black);stroke:var(--ivory);stroke-width:2}
.minimap__drop{fill:var(--black);stroke:var(--ivory);stroke-width:2}
.minimap__flor{fill:var(--ivory)}
.minimap__flor *{fill:var(--ivory);stroke:var(--ivory)}
.minimap__label{font-family:var(--display);font-size:19px;letter-spacing:.04em;text-transform:uppercase;fill:var(--black);text-anchor:middle;paint-order:stroke;stroke:var(--violet);stroke-width:5px;stroke-linejoin:round}
.minimap__pin{opacity:0;transform:translate(260px,155px);transition:opacity .7s var(--e-power3) .5s,transform .9s var(--e-out) .5s}
.minimap.is-in .minimap__pin{opacity:1;transform:translate(260px,195px)}
.minimap:hover .minimap__pin{transform:translate(260px,189px)}

/* Cierre de sección (CTA en cada sección) */
.close{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:center;padding:clamp(2rem,4vh,2.75rem) 0;border-top:1px solid var(--black);border-bottom:1px solid var(--black)}
.close h2{font-size:var(--fs-h3)}
.close p{margin-top:.6rem;max-width:52ch}
@media (max-width:700px){.close{grid-template-columns:1fr}}

/* ---------- Ventana modal (planos) ---------- */
.modal[hidden],.cb[hidden]{display:none}
.modal{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:1rem;background:rgba(34,34,34,.55);opacity:0;pointer-events:none;transition:opacity .5s var(--e-out)}
.modal.is-on{opacity:1;pointer-events:auto}
.modal__box{position:relative;width:min(44rem,100%);max-height:calc(100svh - 2rem);overflow:auto;background:var(--ivory);color:var(--black);border:var(--bw) solid var(--black);padding:clamp(2rem,5vh,3.5rem) clamp(1.5rem,4vw,3.5rem);transform:translateY(24px);transition:transform .6s var(--e-out)}
.modal.is-on .modal__box{transform:none}
.modal__close{position:absolute;top:1rem;right:1rem;appearance:none;background:none;border:0;width:2.5rem;height:2.5rem;cursor:pointer;font-size:1.5rem;line-height:1}
.modal__box h2{font-size:var(--fs-h3);margin-bottom:.75rem}
.modal__box .lead{margin-bottom:2rem;font-size:var(--fs-body);opacity:.8}
.modal .form{gap:1.25rem 1.5rem}

/* ---------- CTA flotante ---------- */
.cta{position:fixed;right:clamp(1rem,2.5vw,2.25rem);bottom:clamp(1rem,3vh,2rem);z-index:50;display:inline-flex;align-items:center;gap:.7rem;background:var(--violet);color:var(--black);border:1px solid var(--black);font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;padding:.7rem 1.1rem .7rem .95rem;text-decoration:none;white-space:nowrap;opacity:0;transform:translateY(12px) scale(.96);pointer-events:none;transition:opacity .8s var(--e-power3),transform .8s var(--e-power3),background .25s,color .25s,border-color .25s}
.cta.is-on{opacity:1;transform:none;pointer-events:auto}
.cta.is-hidden,html.menu-open .cta{opacity:0;transform:translateY(12px) scale(.96);pointer-events:none}
.cta:hover,.cta:focus-visible{background:var(--black);border-color:var(--black);color:var(--ivory);outline:none}
.cta__icon{width:1rem;height:1rem;flex:0 0 auto}
@media (max-width:640px){.cta{left:0;right:0;margin:0 auto;width:max-content;max-width:calc(100vw - 2rem);bottom:1rem}}

/* ---------- Cookies ---------- */
.cb{position:fixed;left:clamp(1rem,2.5vw,2.25rem);right:auto;bottom:clamp(1rem,3vh,2rem);z-index:60;width:min(26rem,calc(100vw - 2rem));background:var(--ivory);color:var(--black);border:var(--bw) solid var(--black);padding:1.3rem 1.4rem 1.2rem;font-size:.8125rem;line-height:1.5;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity .7s var(--e-power3),transform .7s var(--e-power3)}
.cb.is-on{opacity:1;transform:none;pointer-events:auto}
.cb__title{font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:var(--track);font-size:1.0625rem;margin-bottom:.6rem}
.cb p{margin:0 0 .9rem}
.cb a{text-decoration:underline;text-underline-offset:.15em}
.cb__actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-top:.4rem}
.cb__btn{appearance:none;font:inherit;font-size:.6875rem;text-transform:uppercase;letter-spacing:.18em;padding:.75rem 1.1rem;border:1px solid var(--black);background:var(--black);color:var(--ivory);cursor:pointer;transition:background .2s,color .2s}
.cb__btn--ghost{background:transparent;color:var(--black)}
.cb__btn:hover{background:var(--violet);border-color:var(--violet);color:var(--black)}
.cb__link{appearance:none;background:none;border:0;font:inherit;font-size:.6875rem;text-transform:uppercase;letter-spacing:.18em;color:var(--black);cursor:pointer;text-decoration:underline;text-underline-offset:.2em;padding:.5rem 0;margin-left:auto}
.cb__opts{display:none;margin:.4rem 0 .6rem;border-top:1px solid var(--rule);padding-top:.8rem}
.cb.is-config .cb__opts{display:block}
.cb__opt{display:flex;gap:.8rem;align-items:flex-start;margin-bottom:.6rem}
.cb__opt input{appearance:none;flex:0 0 auto;width:1.05rem;height:1.05rem;margin-top:.1rem;border:1px solid var(--black);background:transparent;cursor:pointer;display:grid;place-content:center}
.cb__opt input:checked::before{content:"";width:.55rem;height:.55rem;background:var(--black)}
.cb__opt input:disabled{opacity:.5;cursor:default}
.cb__opt b{font-weight:700}
.cb__opt small{display:block;opacity:.75}
html.cb-open .cta{opacity:0;pointer-events:none}
@media (max-width:640px){.cb{left:.75rem;right:.75rem;width:auto;bottom:.75rem}}

/* ---------- Pie (Figma 2026-09-24): banda Violet, logotipo grande centrado, contacto en PP Neue World, logotipos del equipo y legal ---------- */
.footer{background:var(--violet);color:var(--black);padding:clamp(4rem,10vh,6.5rem) clamp(1.25rem,2.5vw,2.75rem) clamp(1.25rem,3vh,1.75rem);text-align:center}
.page-contacto .footer{border-top:var(--bw) solid var(--black)}   /* el formulario también es Violet: el filete los separa */
.footer__grid{display:grid;justify-items:center;gap:clamp(2rem,5vh,2.75rem)}
.footer__brand{display:block;color:var(--black);width:clamp(220px,28vw,404px)}
.footer__logo{width:100%;height:auto;overflow:visible}
html.js .footer__logo path{opacity:0;transform:translateY(170px)}
.footer__grid.is-in .footer__logo path{animation:letter .9s var(--e-power3) forwards;animation-delay:calc(.15s + var(--i,0)*60ms)}
@media (prefers-reduced-motion:reduce){html.js .footer__logo path{opacity:1;transform:none;animation:none}}
.footer__contact{font-style:normal;display:grid;justify-items:center;gap:1.35rem;font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.03em;font-size:clamp(.9375rem,.8rem + .35vw,1.25rem);line-height:1.2}
.footer__link{text-decoration:none;position:relative;display:inline-block}
.footer__link::after,.footer__legal a::after{content:"";position:absolute;left:0;bottom:-.12em;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--e-out)}
.footer__link:hover::after,.footer__link:focus-visible::after,.footer__legal a:hover::after{transform:scaleX(1)}
.footer__mail{overflow-wrap:anywhere}
.footer__head{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label);opacity:.7}
.footer__partners{list-style:none;width:100%;max-width:72rem;margin:clamp(1rem,3vh,2rem) 0 0;padding:clamp(2rem,4.5vh,2.75rem) 0 0;border-top:1px solid var(--black);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem clamp(1.5rem,3vw,3rem)}
.footer__partners li{display:grid;grid-template-rows:auto 3rem;justify-items:center;align-items:center;gap:1rem}
.footer__plink{display:inline-flex;align-items:center;color:var(--black)}   /* solo logotipos, sin enlace */
.footer__plogo{display:block;height:1.5rem;width:auto;color:var(--black);shape-rendering:geometricPrecision}
.footer__plogo--rhaiga{height:1.15rem}
.footer__plogo--lesarc{height:3rem}
.footer__pname{font-family:var(--display);font-weight:200;font-size:1.2rem;letter-spacing:.04em;line-height:1;text-transform:uppercase}
.footer__bottom{width:100%;display:grid;grid-template-columns:1fr auto 1fr;gap:1rem 2rem;align-items:center;margin-top:clamp(.5rem,2vh,1.25rem);padding-top:clamp(1.25rem,3vh,1.75rem);border-top:1px solid rgba(34,34,34,.25);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label)}
.footer__bottom>*{margin:0;white-space:nowrap}
.footer__copy{justify-self:start}
.footer__legal{display:flex;gap:1.6rem;list-style:none;margin:0;justify-self:center}
.footer__legal a{text-decoration:none;position:relative;display:inline-block}
.footer__top{text-decoration:none;display:inline-flex;align-items:center;gap:.55rem;justify-self:end}
.footer__top svg{width:.95rem;height:.95rem;transition:transform .5s var(--e-out)}
.footer__top:hover svg{transform:translateY(-3px)}
@media (max-width:800px){.footer__partners{grid-template-columns:1fr 1fr;gap:2.25rem 1.5rem}.footer__bottom{grid-template-columns:1fr;justify-items:center}.footer__copy,.footer__top{justify-self:center}.footer__legal{flex-wrap:wrap;justify-content:center;gap:.9rem 1.5rem}}

@media (prefers-reduced-motion:reduce){
  .reveal,.line{opacity:1;transform:none;transition:none}.rule.reveal{transform:none}.media--reveal img{transform:none}.media--reveal::after{display:none}
  .scroll__line{animation:none}html{scroll-behavior:auto}.hero__media img{transition:none;transform:none!important}.hero__dim{opacity:0!important}
  .hero__body .eyebrow.reveal,.hero__lead.reveal{opacity:.95}
}
/* móvil (2026-09-22): sin cortinas ni desplazamientos, solo fundidos breves; las imágenes se muestran directamente */
@media (max-width:800px){
  .media--reveal img{opacity:1;transition:none}
  .reveal{transform:none;transition:opacity .6s var(--e-power3)}
  .line{transform:none;transition:none}
  html.js:not(.hero-in) .hero__media img{transform:none}.hero__media img{transition:none}
}
/* contacto: teléfono y WhatsApp como enlaces directos */
/* Contacto · vías directas: tres recuadros enmarcados, clicables, con icono, rótulo y dato en tipografía de titulares */
.direct{padding:0 0 clamp(4rem,9vh,6rem)}
.direct__grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--bw);background:var(--black);border:var(--bw) solid var(--black)}
.direct__tile{display:grid;gap:1.1rem;justify-items:center;text-align:center;align-content:center;min-height:clamp(14rem,28vh,18rem);padding:clamp(2rem,4vh,3rem) clamp(1.25rem,2.5vw,2.5rem);background:var(--ivory);color:var(--black);text-decoration:none;transition:background .45s var(--e-out),color .45s var(--e-out)}
.direct__tile:hover,.direct__tile:focus-visible{background:var(--violet);outline:none}
.direct__ico{width:2rem;height:2rem;margin-bottom:.4rem}
.direct__tile .eyebrow{opacity:.65}
.direct__tile b{font-weight:200;font-size:clamp(1.15rem,.9rem+1vw,1.75rem);letter-spacing:.03em;line-height:1.2;overflow-wrap:anywhere}
.contact__title{font-size:var(--fs-h2);margin:0 0 1.5rem;max-width:12ch}
@media (max-width:800px){.direct__grid{grid-template-columns:1fr}.direct__tile{min-height:11rem}}
/* Viviendas · interiorismo + datos: 50/50 con la imagen a sangre */
.fuse{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;border-top:var(--bw) solid var(--black);background:var(--ivory)}
.fuse__text{min-width:0;display:grid;gap:1.25rem;align-content:center;padding:clamp(4rem,10vh,7rem) clamp(2rem,6vw,7rem) clamp(4rem,10vh,7rem) var(--gutter);max-width:46rem}
.fuse__text h2{font-size:2.125rem;margin:0 0 .5rem}
.fuse__text .eyebrow{opacity:.7}
.fuse__specs{margin-top:1rem}
.fuse__media{min-height:min(88vh,52rem);aspect-ratio:auto}
.fuse__media img{width:100%;height:100%;object-fit:cover}
@media (max-width:800px){.fuse{grid-template-columns:minmax(0,1fr)}.fuse__text h2{font-size:clamp(1.5rem,6.6vw,2.125rem)}.fuse__media{min-height:0;aspect-ratio:4/5;order:-1}.fuse__text{padding:clamp(2.5rem,6vh,3.5rem) var(--gutter)}}
/* Casa Ayala · cabecera tríptico: titular | grabado a gran escala en el eje | texto y ornamento */
.gheader{margin-top:var(--nav-h);min-height:calc(100svh - var(--nav-h));display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:clamp(1.5rem,4vw,4.5rem);align-items:stretch;padding:clamp(2rem,5vh,3.5rem) var(--gutter);background:#ebe3d0;   /* mismo tono que el papel del grabado: la ilustración se funde con el fondo */border-bottom:var(--bw) solid var(--black)}
.gheader__l{align-self:start;padding-top:clamp(1rem,6vh,4rem)}
.gheader__l .eyebrow{opacity:.7;margin-bottom:1.25rem}
.gheader__l h1{font-size:clamp(1.9rem,1rem + 2.6vw,3.6rem);line-height:1.1;margin:0}
.gheader__img{height:calc(100svh - var(--nav-h) - clamp(4rem,10vh,7rem));aspect-ratio:1537/1800;max-width:44vw}
.gheader__img img{width:100%;height:100%;object-fit:contain}
.gheader__r{align-self:end;max-width:24rem;justify-self:end;padding-bottom:clamp(1rem,6vh,4rem);font-size:var(--fs-small);line-height:1.6}
.gheader__orn{width:clamp(2.5rem,3vw,3.25rem);margin-top:clamp(1.5rem,4vh,2.5rem);color:var(--black)}
.gheader__orn svg{width:100%;height:auto;display:block}
@media (max-width:900px){.gheader{grid-template-columns:1fr;min-height:0;gap:2rem;padding-block:clamp(2rem,6vh,3rem)}.gheader__l,.gheader__r{padding:0;justify-self:start;max-width:none}.gheader__img{height:auto;width:100%;max-width:none}}
/* Localización · el mapa como cabecera */
.mhero{margin-top:var(--nav-h);padding:clamp(1rem,2.5vh,1.75rem) 0 clamp(4rem,9vh,6rem);background:var(--mineral)}
.mhero .map__head{border-bottom:var(--bw) solid var(--black);display:grid;gap:1.25rem}
.mhero .map__head h1{font-size:clamp(1.9rem,1rem + 2.4vw,3.4rem);line-height:1.1;margin:0}
.mhero .map__head p{font-size:var(--fs-small);line-height:1.6;max-width:30rem;margin:0}
/* Contacto · cabecera partida */
.chero2{margin-top:var(--nav-h);display:grid;grid-template-columns:1fr 1fr;min-height:calc(100svh - var(--nav-h));border-bottom:var(--bw) solid var(--black);background:var(--ivory)}
.chero2__media{aspect-ratio:auto;min-height:100%}
.chero2__media img{width:100%;height:100%;object-fit:cover}
.chero2__body{display:grid;align-content:center;gap:clamp(1.25rem,3vh,2rem);padding:clamp(3rem,8vh,6rem) clamp(2rem,6vw,7rem)}
.chero2__body h1{font-size:clamp(2.2rem,1.2rem + 3vw,4.5rem);line-height:1;margin:0}
.chero2__lead p{font-size:var(--fs-body);line-height:var(--lh);max-width:32rem;margin:0}
.chero2__list{list-style:none;margin:clamp(.5rem,2vh,1.5rem) 0 0;padding:0;border-top:1px solid var(--black)}
.chero2__row{display:grid;grid-template-columns:auto 7.5rem minmax(0,1fr) auto;align-items:center;gap:1.25rem;padding:1.25rem .75rem;border-bottom:1px solid var(--black);color:var(--black);text-decoration:none;transition:background .35s var(--e-out)}
.chero2__row:hover,.chero2__row:focus-visible{background:var(--violet);outline:none}
.chero2__row .direct__ico{width:1.5rem;height:1.5rem;margin:0}
.chero2__row .eyebrow{opacity:.65}
.chero2__row b{font-weight:200;font-size:clamp(1rem,.8rem + .6vw,1.4rem);letter-spacing:.02em;line-height:1.25}
.chero2__row[href^="mailto"] b{text-transform:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* el email en minúscula y en una sola línea */
.chero2__go{width:1.1rem;height:1.1rem;transition:transform .4s var(--e-out)}
.chero2__row:hover .chero2__go{transform:translateX(4px)}
@media (max-width:900px){.chero2{grid-template-columns:1fr;min-height:0}.chero2__media{aspect-ratio:4/3;min-height:0}.chero2__body{padding:clamp(2.5rem,6vh,3.5rem) var(--gutter)}.chero2__row{grid-template-columns:auto minmax(0,1fr) auto;row-gap:.25rem}.chero2__row .eyebrow{grid-column:2}.chero2__row b{grid-column:2}.chero2__row .direct__ico{grid-row:1/3}.chero2__go{grid-column:3;grid-row:1/3}}
/* salvaguarda general contra solapes: ningún hijo de una rejilla puede ser más ancho que su pista */
.split>*,.aticos__split>*,.fuse>*,.planta__grid>*,.gheader>*,.chero2>*,.contact__grid>*{min-width:0;max-width:100%}
/* Home · cierre compacto (antes a pantalla completa) */
.closer{padding:clamp(4.5rem,11vh,7rem) 0}
.closer .quote p.display{font-size:var(--fs-h2);max-width:20ch}
.closer .quote .btn{margin-top:clamp(1.75rem,4vh,2.5rem)}
/* listas con filete fino (servicios de Amenities) */
.bullets{list-style:none;margin:1.5rem 0 0;padding:0;border-top:1px solid rgba(34,34,34,.3)}
.bullets li{position:relative;padding:.9rem 0 .9rem 1.6rem;border-bottom:1px solid rgba(34,34,34,.3);font-size:var(--fs-body);line-height:1.5}
.bullets li::before{content:"";position:absolute;left:0;top:1.45em;width:.55rem;height:1px;background:var(--black)}

/* ============================================================
   Figma RHAIGA/VEILOR · Web (2026-09-24): módulos nuevos
   Titular 36 · texto 16 · etiquetas 10 · esquinas rectas · marco negro --bw
   ============================================================ */
/* Cabecera: titular y entradilla centrados sobre Ivory; debajo, la imagen a sangre */
.fhero{margin-top:var(--nav-h);background:var(--ivory)}
.fhero__text{text-align:center;padding:clamp(4rem,13vh,8.5rem) var(--gutter) clamp(2.75rem,7vh,4.25rem)}
.fhero h1{font-size:var(--fs-h1);max-width:21ch;margin:0 auto;text-wrap:balance}
.fhero__lead{max-width:23rem;margin:clamp(.75rem,2vh,1rem) auto 0;font-size:var(--fs-body);line-height:1.25;text-wrap:pretty}
.fhero__lead p+p{margin-top:.75em}
.fhero__lead--wide{max-width:30rem}
.fhero__orn{width:clamp(1.75rem,2.2vw,2.25rem);margin:clamp(2rem,5vh,3rem) auto 0;color:var(--black)}
.fhero__orn .intro__icon{width:100%;margin:0}
.fhero__media{aspect-ratio:16/9;max-height:calc(100svh - var(--nav-h));width:100%}
.fhero__media img{width:100%;height:100%;object-fit:cover}
@media (max-width:800px){.fhero__media{aspect-ratio:4/5;max-height:78svh}}
/* secuencia de imágenes (Localización, comentario #6): fundido encadenado con un leve acercamiento */
.seq{position:relative;overflow:hidden;background:var(--mineral)}
.seq__item{position:absolute;inset:0;opacity:0;transition:opacity 1.6s var(--e-out)}
.seq__item img{width:100%;height:100%;object-fit:cover;transform:scale(1.001);transition:transform 7s linear}
.seq__item.is-on{opacity:1}
.seq__item.is-on img{transform:scale(1.06)}
@media (prefers-reduced-motion:reduce){.seq__item,.seq__item img{transition:none}.seq__item.is-on img{transform:none}}
/* bloque de titular centrado que abre un módulo */
.lede{text-align:center;padding:clamp(4.5rem,12vh,8rem) var(--gutter) clamp(2.75rem,7vh,4.5rem)}
.lede h2{font-size:var(--fs-h2);max-width:24ch;margin:0 auto;text-wrap:balance}
.lede p{max-width:26rem;margin:clamp(.75rem,2vh,1rem) auto 0;font-size:var(--fs-body);line-height:1.25;text-wrap:pretty}
.lede .eyebrow{margin-bottom:1rem;opacity:.75}
/* Home · cifras en Violet, 2 × 2, con la flor arriba */
.cifras{background:var(--violet);padding:clamp(3.5rem,9vh,5.5rem) var(--gutter) clamp(4rem,11vh,7rem);text-align:center}
.cifras__orn{width:clamp(2.25rem,2.8vw,2.75rem);margin:0 auto clamp(3rem,9vh,5.5rem);color:var(--black)}
.cifras__orn .intro__icon{width:100%;margin:0}
.cifras__row{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:clamp(2.5rem,7vh,4rem);column-gap:var(--gutter);max-width:64rem;margin:0 auto}
.cifras__row li{display:grid;gap:.45rem;justify-items:center;align-content:start}
.cifras__row b{font-weight:200;font-size:var(--fs-num);line-height:1;letter-spacing:.02em;white-space:nowrap}
.cifras__row b .u{text-transform:none}
.cifras__row span{font-size:var(--fs-small);line-height:1.35}
@media (max-width:640px){.cifras__row{grid-template-columns:1fr}}
/* Slider de dos paneles (Home: secciones · Viviendas: semiático y ático): texto sobre Mineral, imagen enmarcada en negro */
.slides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-height:clamp(32rem,56vw,50rem);background:var(--mineral)}
.slides__panel{min-width:0;display:grid;grid-template-rows:1fr auto;justify-items:center;text-align:center;padding:clamp(3rem,8vh,5rem) var(--gutter) clamp(1.5rem,4vh,2.5rem);touch-action:pan-y}
.slides__stage{display:grid;align-items:center;justify-items:center;width:100%}
.slide{grid-area:1/1;display:grid;justify-items:center;gap:.9rem;max-width:30rem;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .7s var(--e-power3),transform .7s var(--e-power3),visibility 0s linear .7s}
.slide.is-on{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.slide h2,.slide h3{font-size:var(--fs-h2);margin:0;text-wrap:balance}
.slide .btn{margin-top:.6rem}
.slide__specs{list-style:none;display:grid;gap:.9rem;justify-items:center;width:min(100%,17rem);margin:.4rem 0 .3rem;padding-top:1.1rem;border-top:1px solid var(--black)}
.slide__specs li{display:grid;gap:.1rem;justify-items:center}
.slide__specs span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label)}
.slide__specs b{font-family:var(--display);font-weight:200;font-size:clamp(1.25rem,1rem + .6vw,1.625rem);line-height:1.15;letter-spacing:.02em;text-transform:uppercase}
.slide__specs small{font-size:.75rem;opacity:.7}
.slides__dots{display:flex;gap:.2rem;margin-top:clamp(2rem,5vh,3rem)}
.slides__dots button{appearance:none;background:none;border:0;min-width:1.9rem;height:1.9rem;font-family:var(--display);font-weight:200;font-size:.9375rem;color:var(--black);opacity:.35;cursor:pointer;transition:opacity .3s}
.slides__dots button:hover,.slides__dots button:focus-visible{opacity:.75;outline:none}
.slides__dots button[aria-current="true"]{opacity:1}
.slides__media{min-width:0;position:relative;display:grid;place-items:center;background:var(--ivory);border:var(--bw) solid var(--black);padding:clamp(2.5rem,7vh,5rem) clamp(2rem,6vw,6rem)}
.slides__img{grid-area:1/1;width:min(100%,24rem);aspect-ratio:4/5;opacity:0;transition:opacity .8s var(--e-power3)}
.slides__img.is-on{opacity:1}
.slides__img img{width:100%;height:100%;object-fit:cover}
.slides__imgs{display:grid;width:100%;justify-items:center}
.slides__media > .slides__img{opacity:1}
@media (max-width:800px){.slides{grid-template-columns:1fr;min-height:0}.slides__media{order:-1;padding:clamp(1.75rem,8vw,3rem)}.slides__img{width:min(100%,18rem)}.slides__panel{padding-top:3rem}}
/* Home · cierre compacto sobre Ivory */
.closer{padding:clamp(4.5rem,12vh,7.5rem) var(--gutter);text-align:center;background:var(--ivory)}
.closer p.display{font-size:var(--fs-h2);max-width:16ch;margin:0 auto;text-wrap:balance}
.closer .btn{margin-top:clamp(1.25rem,3vh,1.75rem)}
/* Viviendas · imagen a sangre */
.bleed{aspect-ratio:16/10;max-height:calc(100svh - var(--nav-h));width:100%}
.bleed img{width:100%;height:100%;object-fit:cover}
@media (max-width:800px){.bleed{aspect-ratio:4/3}}
/* Viviendas · carrusel de estancias: la central grande, las laterales asoman (Figma) */
.carousel{padding-bottom:clamp(4.5rem,11vh,7rem)}
.carousel__track{--cw:min(68vw,calc((100svh - var(--nav-h) - 6rem) * 4 / 3));display:flex;gap:clamp(.75rem,1.2vw,1rem);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 calc((100% - var(--cw)) / 2);scrollbar-width:none;cursor:grab;align-items:center}
.carousel__track::-webkit-scrollbar{display:none}
.carousel__track.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
.carousel__item{flex:0 0 var(--cw);aspect-ratio:4/3;scroll-snap-align:center;transform:scale(.9);transition:transform .6s var(--e-out)}
.carousel__item.is-on{transform:none}
.carousel__item img{pointer-events:none}
.carousel__nav{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:clamp(1.25rem,3vh,2rem)}
.carousel__btn{appearance:none;width:2.25rem;height:2.25rem;display:grid;place-items:center;background:transparent;border:1px solid var(--black);color:var(--black);cursor:pointer;transition:background .25s,color .25s,opacity .25s}
.carousel__btn svg{width:1rem;height:1rem}
.carousel__btn:hover,.carousel__btn:focus-visible{background:var(--black);color:var(--ivory);outline:none}
.carousel__btn[disabled]{opacity:.3;pointer-events:none}
.carousel__count{font-family:var(--display);font-weight:200;font-size:.9375rem;min-width:3.5rem;text-align:center}
@media (max-width:800px){.carousel__track{--cw:84vw}.carousel__item{transform:none}}
/* Viviendas · planos: marco negro; plano grande a la izquierda; a la derecha, vivienda y datos, con el alzado para elegir planta */
.planta{padding:0 clamp(1rem,1.75vw,1.5625rem) clamp(4.5rem,11vh,7rem)}
.planta__box{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,3fr);gap:var(--bw);background:var(--black);border:var(--bw) solid var(--black)}
.planta__view{position:relative;min-width:0;background:var(--mineral);display:grid;place-items:center;min-height:clamp(30rem,58vw,52rem);padding:clamp(1.5rem,3vw,3rem)}
.planta__plan{width:100%;height:100%;display:grid;place-items:center}
.planta__plan[hidden],.planta__noplan[hidden]{display:none}
.planta__plan img{width:100%;height:100%;max-height:calc(100svh - var(--nav-h) - 4rem);object-fit:contain}
.planta__noplan{display:grid;justify-items:center;gap:1.25rem;text-align:center}
.planta__noplan .intro__icon{width:2rem;margin:0}
.planta__side{min-width:0;display:grid;grid-template-rows:auto 1fr;gap:var(--bw)}
.planta__card{background:var(--mineral);padding:clamp(1.25rem,2vw,1.75rem) clamp(1.25rem,2vw,1.75rem)}
.planta__head{display:grid;gap:.75rem;align-content:start}
.planta__floor{margin:0;opacity:.7}
.planta__name{font-size:var(--fs-h2);margin:0;line-height:1.1}
.planta__units{display:flex;gap:.4rem;flex-wrap:wrap}
.planta__units[hidden]{display:none}
.planta__unit{appearance:none;min-width:1.9rem;height:1.6rem;padding:0 .5rem;font:inherit;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label);border:1px solid var(--black);background:transparent;color:var(--black);cursor:pointer;transition:background .25s,color .25s}
.planta__unit:hover,.planta__unit:focus-visible{background:var(--ivory);outline:none}
.planta__unit[aria-selected="true"]{background:var(--violet)}
.planta__body{display:grid;gap:1.25rem;align-content:start}
.planta__specs{list-style:none;display:grid;margin:0;padding:0;font-size:var(--fs-small)}
.planta__specs li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.4rem 0;border-bottom:1px solid rgba(34,34,34,.2)}
.planta__specs li:first-child{border-top:1px solid rgba(34,34,34,.2)}
.planta__specs b{font-weight:400;white-space:nowrap}
.planta__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.25rem}
.planta__actions .arrow{font-size:var(--fs-label);letter-spacing:var(--tr-label)}
.planta__fig{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;align-items:stretch;margin-top:.5rem}
.planta__labels{list-style:none;margin:0;padding:1.25rem 0 0;min-width:5.5rem;display:flex;flex-direction:column;gap:.1rem}
.planta__labels li.planta__sep{margin-top:1.25rem}
.planta__labels li.planta__sep,.planta__labels li.planta__sep ~ li{flex:1;display:flex}
.planta__labels li.planta__sep ~ li .planta__lbl,.planta__labels li.planta__sep .planta__lbl{height:100%;display:flex;align-items:flex-end;padding-bottom:.3rem}
.planta__labels::after{content:"";flex:0 0 16%}
.planta__lbl{appearance:none;background:transparent;border:0;border-bottom:1px solid rgba(34,34,34,.25);width:100%;text-align:left;padding:.3rem 0;font:inherit;font-size:.5625rem;text-transform:uppercase;letter-spacing:var(--tr-label);color:var(--black);opacity:.55;cursor:pointer;transition:border-color .3s,opacity .3s}
.planta__lbl:hover,.planta__lbl:focus-visible,.planta__lbl.is-hover{opacity:1;outline:none}
.planta__lbl[aria-selected="true"]{opacity:1;border-bottom:1px solid var(--black)}   /* Figma: línea negra bajo la planta elegida */
.planta__img{position:relative;aspect-ratio:var(--fw)/var(--fh);width:100%;height:auto;align-self:end}
.planta__img img{display:block;width:100%;height:100%;object-fit:contain}
.planta__tint{position:absolute;inset:0;background:var(--violet);mix-blend-mode:multiply;-webkit-mask-image:url(/assets/img/fachada-alzado.png);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-image:url(/assets/img/fachada-alzado.png);mask-size:100% 100%;mask-repeat:no-repeat;clip-path:inset(var(--t,0%) 0 var(--b,100%) 0);transition:clip-path .55s var(--e-out);pointer-events:none}
.planta__hit{position:absolute;left:0;right:0;appearance:none;background:transparent;border:0;cursor:pointer;padding:0}
.planta__hit:focus-visible{outline:1px dashed var(--black);outline-offset:-1px}
.planta .disclaimer{font-size:.625rem;line-height:1.45;opacity:.7;margin:0}
@media (max-width:1000px){.planta__box{grid-template-columns:1fr}.planta__side{display:contents}.planta__head{order:-1}.planta__view{min-height:0;aspect-ratio:4/5}.planta__fig{grid-template-columns:auto minmax(0,12rem)}}
/* Localización · mapa sin marco: categorías a la izquierda (cuadros, sin contador ni distancia), mapa a la derecha */
.mapa{padding:clamp(3.5rem,9vh,5.5rem) clamp(1rem,1.75vw,1.5625rem) clamp(4rem,10vh,6rem)}
.mapa__grid{display:grid;grid-template-columns:minmax(12rem,15rem) minmax(0,1fr);gap:clamp(1.5rem,3vw,3rem);align-items:center}
.mapa__side{display:grid;gap:2rem;align-content:center}
.mapa .filters{display:grid;gap:.55rem}
.mapa .filter{appearance:none;display:flex;align-items:center;gap:.8rem;background:none;border:0;padding:.15rem 0;cursor:pointer;font-family:var(--display);font-weight:200;font-size:clamp(1.05rem,.85rem + .5vw,1.375rem);text-transform:uppercase;letter-spacing:.03em;line-height:1.2;color:var(--black);text-align:left;overflow:visible;transition:opacity .3s}
.mapa .filter::before{content:none}
.mapa .filter:hover,.mapa .filter:focus-visible{color:var(--black);opacity:1;outline:none}
.mapa .filter:focus-visible{text-decoration:underline;text-underline-offset:.2em}
.mapa .filter i{width:.8rem;height:.8rem;border-radius:0;border:1px solid var(--black);flex:0 0 auto}
.mapa .filter:hover i{border-color:var(--black)}
.mapa .filters.is-solo .filter[aria-pressed="true"]{color:var(--black)}
.mapa .filters.is-solo .filter[aria-pressed="true"] i{border-color:var(--black)}
.mapa .filters.is-solo .filter[aria-pressed="false"]{opacity:.35}
.mapa .map__note{margin:0}
.mapa .map__stage{width:100%;max-width:calc(var(--mw,1110) * 1px);justify-self:end}
.poi-tag{border-radius:0}   /* comentario #3: esquinas rectas */
.map__svg .home{stroke-width:1}
.map__svg .home-logo{fill:var(--black)}
@media (max-width:1000px){.mapa__grid{grid-template-columns:1fr}.mapa .filters{grid-template-columns:repeat(2,max-content);column-gap:2rem}.mapa .map__stage{overflow:auto;justify-self:stretch}.mapa .map__canvas{min-width:46rem}}
/* Contacto · banda Violet enmarcada: datos a la izquierda, formulario a la derecha */
.contact2{background:var(--violet);border-top:var(--bw) solid var(--black)}
.contact2__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.6fr);gap:clamp(2.5rem,6vw,7rem);padding-block:clamp(3.5rem,9vh,6rem)}
.contact2__info{list-style:none;display:grid;gap:1.4rem;align-content:start;padding-top:.35rem}
.contact2__info li{display:grid;gap:.3rem}
.contact2__info .eyebrow{opacity:.75}
.contact2__info a{font-size:var(--fs-small);line-height:1.45;text-decoration:none;border-bottom:1px solid transparent;justify-self:start;transition:border-color .25s}
.contact2__info a:hover,.contact2__info a:focus-visible{border-color:currentColor;outline:none}
.contact2__title{font-size:var(--fs-h2);text-align:center;margin:0 0 clamp(1.75rem,4vh,2.5rem)}
.contact2 .form{gap:1.4rem 2rem}
.contact2 .field label{font-size:var(--fs-label);letter-spacing:var(--tr-label)}
.contact2 .field input,.contact2 .field select,.contact2 .field textarea{font-size:var(--fs-body)}
.contact2 .field input::placeholder,.contact2 .field textarea::placeholder{color:rgba(34,34,34,.5)}
.contact2 .actions{justify-content:center}
.contact2 .btn:hover,.contact2 .btn:focus-visible{background:var(--black);color:var(--ivory)}
@media (max-width:900px){.contact2__grid{grid-template-columns:1fr}.contact2__info{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.contact2__info{grid-template-columns:1fr}}
/* Casa Ayala · equipo como en el pie (comentario #5): etiqueta + logotipo */
.logos{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem clamp(1.5rem,3vw,3rem);max-width:72rem;margin:0 auto;padding:clamp(2rem,4.5vh,2.75rem) 0 0;border-top:1px solid var(--black);text-align:center}
.logos li{display:grid;grid-template-rows:auto 3rem;justify-items:center;align-items:center;gap:1rem}
.logos a{display:inline-flex;color:var(--black);transition:opacity .25s}
.logos a:hover,.logos a:focus-visible{opacity:.6;outline:none}
.team2{padding:0 var(--gutter) clamp(4.5rem,11vh,7rem)}
@media (max-width:800px){.logos{grid-template-columns:1fr 1fr;gap:2.25rem 1.5rem}}
/* titulares al tamaño único del Figma */
.split__text h2,.panels__inner h2,.gheader__l h1,.sec__head h2,.aticos__head h2{font-size:var(--fs-h2)}
.gheader__l h1{font-size:var(--fs-h1)}
.split__media,.slides__media,.carousel__item,.fhero__media,.bleed{min-width:0}
/* ajustes tras la primera revisión (2026-09-24) */
.slide{max-width:36rem}
.slide h2,.slide h3{max-width:none}
.cifras__row b .u{font-size:inherit;letter-spacing:inherit;text-transform:inherit;line-height:inherit;opacity:1;padding:0;display:inline}
.closer p.display{max-width:20ch}
.fhero h1,.lede h2{max-width:44rem}
.lede p{max-width:29rem}
.planta__plan{position:absolute;inset:clamp(1.5rem,3vw,3rem);width:auto;height:auto}
.planta__plan img{max-height:none;mix-blend-mode:multiply}   /* el papel del plano se funde con el Mineral */
.page-casa-ayala .footer__partners{display:none}   /* el equipo ya aparece justo encima, con los mismos logotipos */
/* Home · slider fijado al hacer scroll (escritorio): el bloque se queda en pantalla y el scroll recorre 1 → 4 */
@media (min-width:1001px) and (min-height:600px){
  .slides-pin{height:calc(100svh + (var(--n,4) - 1) * 75svh)}
  .slides-pin > .slides{position:sticky;top:0;height:100svh;min-height:0}
  .slides-pin .slide{transition-duration:.55s}
  .slides-pin .slide.is-up{transform:translateY(-12px)}   /* la que sale sube; la que entra llega desde abajo */
}
.nav.is-up{box-shadow:none}
/* pie · mapa del sitio en una fila bajo el logotipo, con el mismo cuerpo y tracking que la barra */
.footer__nav{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem clamp(1.5rem,2.8vw,2.5rem);margin:0}
.footer__nav a{display:inline-block;position:relative;font-size:var(--fs-label);line-height:1.2;text-transform:uppercase;letter-spacing:var(--tr-label);text-decoration:none;padding:.35rem 0}
.footer__nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--e-out)}
.footer__nav a:hover::after,.footer__nav a:focus-visible::after,.footer__nav a[aria-current="page"]::after{transform:scaleX(1)}
.footer__grid > nav{margin-top:calc(-1 * clamp(.25rem,1vh,.75rem))}   /* bajo el email, algo más cerca del contacto que de la banda de logotipos */
@media (max-width:640px){.footer__nav{flex-direction:column;align-items:center;gap:.35rem}}
/* plano: la imagen se ajusta a la caja (con height:100% dentro de una rejilla crecía a su alto natural y se salía sobre el pie) */
.planta__view{overflow:hidden}
.planta__plan{display:block}
.planta__plan img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.fhero__media--whole{aspect-ratio:3/2;max-height:none}   /* imagen entera, sin recorte (Amenities) */
@media (max-width:800px){.fhero__media--whole{aspect-ratio:3/2;max-height:none}}
/* Viviendas · carrusel: cursor propio con la flor girada hacia la dirección (solo ratón) */
.carousel__cursor{position:fixed;left:0;top:0;z-index:70;pointer-events:none;transform:translate3d(var(--cx,-100px),var(--cy,-100px),0)}
.carousel__cursor span{display:grid;place-items:center;width:4.25rem;height:4.25rem;margin:-2.125rem 0 0 -2.125rem;border-radius:50%;background:var(--violet);border:1px solid var(--black);color:var(--black);opacity:0;transform:scale(.5);transition:opacity .3s var(--e-out),transform .45s var(--e-out)}
.carousel__cursor.is-on span{opacity:1;transform:none}
.carousel__cursor.is-off span{opacity:.4}
.carousel__cursor.is-down span{transform:scale(.88)}
.carousel__cursor .intro__icon{width:1.9rem;height:auto;margin:0;transform:rotate(90deg);transition:transform .45s var(--e-out)}   /* la flor mira a la derecha: siguiente */
.carousel__cursor.is-prev .intro__icon{transform:rotate(-90deg)}   /* a la izquierda: anterior */
@media (hover:hover) and (pointer:fine){.carousel__track,.carousel__track.is-dragging{cursor:none}}
@media (hover:none),(pointer:coarse){.carousel__cursor{display:none}}
.carousel__track.is-jump,.carousel__track.is-jump .carousel__item{transition:none!important;scroll-behavior:auto}   /* salto invisible del bucle */
/* planos (Miguel, 2026-09-24): sin velado violeta en el alzado (la planta elegida la marca la línea bajo su nombre) y el fondo del panel igual al papel del plano (Ivory), sin multiply */
.planta__tint{display:none}
.planta__view{background:var(--ivory)}
.planta__plan img{mix-blend-mode:normal}
/* Contacto (Miguel, 2026-09-24): todo el bloque centrado en la página; datos en dos columnas (2 × 2) centradas sobre el formulario */
.contact2__grid{grid-template-columns:1fr;max-width:58rem;margin:0 auto;gap:clamp(4rem,10vh,6rem)}   /* más aire entre los datos y el titular del formulario */
.contact2__info{grid-template-columns:repeat(2,minmax(0,1fr));max-width:40rem;width:100%;justify-self:center;gap:1.75rem clamp(1.5rem,3vw,3rem);text-align:center;justify-items:center;padding:0}   /* sin filete bajo los datos (Miguel, 2026-09-24) */
.contact2__info li{justify-items:center;gap:.35rem}
.contact2__info a{justify-self:center}
.contact2__form{min-width:0}
@media (max-width:640px){.contact2__info{grid-template-columns:1fr}}
/* Casa Ayala · foto de materiales bajo los logotipos del equipo (Miguel, 2026-09-24) */
.team2__media{max-width:72rem;margin:clamp(3rem,7vh,4.5rem) auto 0;aspect-ratio:1800/571}
@media (max-width:800px){.team2__media{aspect-ratio:3/2}}
/* Barra · el logotipo se vuelve a «escribir» letra a letra al acercar el ratón (misma coreografía que la precarga y el pie) */
.nav__logo svg{overflow:hidden}
@keyframes navLetter{0%{opacity:0;transform:translateY(105%)}100%{opacity:1;transform:none}}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .nav__logo:hover svg path,.nav__logo:focus-visible svg path{animation:navLetter .75s var(--e-power3) both;animation-delay:calc(var(--i,0) * 55ms)}
}
/* Puntero propio (referencia elicyon.com, 2026-09-25): solo con ratón; en campos de texto vuelve el cursor del sistema */
.ptr{position:fixed;left:0;top:0;z-index:9999;pointer-events:none;color:var(--violet);opacity:0;transition:opacity .2s,color .2s;will-change:transform}
.ptr.is-dark{color:var(--black)}   /* sobre fondos violetas (cifras, pie, formulario, botones) */
.ptr svg{display:block;width:14px;height:16px;transform:translate(-2px,-2px)}
.ptr.is-on{opacity:1}
@media (hover:hover) and (pointer:fine){
  html.has-ptr,html.has-ptr *{cursor:none!important}
  html.has-ptr input:not([type="checkbox"]):not([type="radio"]),html.has-ptr textarea{cursor:text!important}
  html.has-ptr select{cursor:default!important}
}
@media (hover:none),(pointer:coarse){.ptr{display:none}}
/* Home · fachada entera, sin recorte: la caja toma la proporción de la foto (1920×1165; en móvil la vertical 1400×1660) */
.fhero__media--home{aspect-ratio:1920/1165;max-height:none}
@media (max-width:800px){.fhero__media--home{aspect-ratio:1400/1660;max-height:none}}
/* Casa Ayala · fachada al atardecer a sangre, alto de pantalla en escritorio */
@media (min-width:801px){.bleed--screen{aspect-ratio:auto;height:calc(100svh - var(--nav-h));max-height:none;min-height:30rem}}
/* Casa Ayala · foto de materiales a sangre, de borde a borde (Miguel, 2026-09-25): sale del margen lateral de .team2 */
.team2__media{max-width:none;margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));aspect-ratio:2.4/1}
@media (max-width:800px){.team2__media{aspect-ratio:4/3}}
.team2{padding-bottom:0}   /* la foto toca el pie */
.carousel--sub{padding-top:clamp(3.5rem,9vh,6rem);padding-bottom:clamp(1rem,3vh,2rem)}   /* Casa Ayala: pegado a la foto a sangre de encima */
/* Casa Ayala · cabecera centrada con el grabado debajo, sobre el tono del papel del grabado */
.fhero--grabado{background:#ebe3d0}
.fhero--grabado .fhero__text{padding-bottom:clamp(1.5rem,4vh,2.5rem)}
.fhero__grabado{display:grid;justify-items:center;padding:0 var(--gutter) clamp(3rem,8vh,5rem)}
.fhero__grabado img{width:auto;height:min(78svh,52rem);max-width:100%;object-fit:contain}
@media (max-width:800px){.fhero__grabado img{height:auto;width:min(100%,26rem)}}
/* Mitades: foto a sangre en media página (borde a borde, alto completo) y texto centrado en la otra */
.halves{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-height:clamp(34rem,86svh,58rem)}
.halves__media{min-width:0;min-height:100%}
.halves__media img{width:100%;height:100%;object-fit:cover}
.halves__text{min-width:0;display:grid;align-content:center;justify-items:center;text-align:center;gap:clamp(1rem,2.5vh,1.5rem);padding:clamp(4rem,10vh,7rem) clamp(2rem,6vw,6rem)}
.halves__text h2{font-size:var(--fs-h2);max-width:24ch;margin:0;text-wrap:balance}
.halves__text p{max-width:30rem;margin:0;text-wrap:pretty}
@media (max-width:800px){.halves{grid-template-columns:1fr;min-height:0}.halves__media{aspect-ratio:4/5;min-height:0}.halves__text{padding:clamp(3rem,8vh,4rem) var(--gutter)}}
/* Casa Ayala · foto de materiales: al bajar, se abre un margen Ivory proporcional a los lados y hacia el pie (misma idea que el marco que crecía en la portada) */
[data-inset]{--m:0px;clip-path:inset(0 var(--m) var(--m) var(--m));will-change:clip-path}
[data-inset] img{transform:scale(calc(1.06 - var(--ip,0) * .06));transform-origin:50% 60%;will-change:transform}
@media (prefers-reduced-motion:reduce){[data-inset]{--m:clamp(1rem,2.5vw,2.5rem)}[data-inset] img{transform:none}}
/* Viviendas · planos (Miguel, 2026-09-25): el aviso legal ocupa todo el ancho de la tarjeta y el alzado algo más pequeño */
.planta .disclaimer{max-width:none}
.planta__img{width:min(100%,15rem);justify-self:end}
@media (max-width:1000px){.planta__img{width:min(100%,12rem)}}
/* aviso legal pegado al pie de la tarjeta (Miguel, 2026-09-25) */
.planta__body{display:flex;flex-direction:column;gap:1.25rem}
.planta .disclaimer{margin-top:auto;padding-top:1.5rem}
/* Módulo común de doble panel (pauta, 2026-09-25): texto centrado sobre Mineral + imagen enmarcada; sin icono. Listas con «·», sin filetes */
.dots{list-style:none;margin:.25rem 0 0;padding:0;display:grid;gap:.6rem;justify-items:center}
.dots li{font-size:var(--fs-body);line-height:1.45;text-wrap:balance}
.dots li::before{content:"·";margin-right:.45em}
/* Localización · mapa (Miguel, 2026-09-25): el bloque de categorías centrado en el hueco entre el margen y el mapa (alineado a la izquierda) y las categorías al tamaño del titular de la página */
@media (min-width:1001px){
  .mapa__grid{grid-template-columns:minmax(24.5rem,1fr) minmax(0,calc(var(--mw,990) * 1px));column-gap:0}   /* sin hueco entre columnas: el bloque queda centrado entre el margen y el mapa */
  .mapa__side{justify-self:center;width:max-content;max-width:100%}
}
.mapa .filter{font-size:var(--fs-h1);gap:.9rem}
.mapa .filter i{width:.9rem;height:.9rem}
.mapa__side .map__note{max-width:19rem}
@media (max-width:700px){.mapa .filters{grid-template-columns:1fr}}   /* a tamaño de titular no caben dos columnas en móvil */
/* doble panel invertido: la foto enmarcada a la izquierda (en móvil, la foto arriba) */
.panels--rev .panels__media{order:0}
/* Contacto · mensaje de envío (Miguel, 2026-09-25): sustituye al titular, con su misma tipografía, centrado y con aire */
.contact2.is-sent .contact2__title{display:none}
.contact2.is-sent .form{display:block}
.contact2.is-sent .form__msg{font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:var(--track);font-size:var(--fs-h2);line-height:1.25;text-align:center;max-width:34ch;margin:0 auto;padding:clamp(2.5rem,8vh,5rem) 0 clamp(1rem,3vh,2rem);text-wrap:balance}
.contact2.is-sent .contact2__grid{gap:clamp(3rem,8vh,5rem)}
.contact2.is-sent .form__msg span{display:block;text-wrap:balance}   /* cada frase se equilibra por separado (sin palabras sueltas al final) */
.carousel--head{padding-bottom:clamp(1rem,3vh,2rem)}   /* Localización: carrusel como cabecera, bajo el titular */
/* foto dentro de los márgenes de la barra, con el mismo aire arriba que a los lados (Casa Ayala · fachada al atardecer) */
.edge--framed{padding-top:clamp(1.25rem,2.5vw,2.75rem)}
.framed__img{aspect-ratio:3/2}
/* Feedback Notion (2026-09-28) · 1) el doble panel con marco negro a la misma proporción que los módulos animados: alto de pantalla completo e imagen del mismo tamaño que en el slider */
@media (min-width:801px){
  .panels{min-height:100svh}
  .panels__media{padding:clamp(2.5rem,7vh,5rem) clamp(2rem,6vw,6rem)}
  .panels__img{width:min(100%,24rem)}
}
/* 2) el mapa entero a la vista sin hacer scroll: el lienzo nunca es más alto que la pantalla */
@media (min-width:1001px){
  .mapa .map__stage{max-width:min(calc(var(--mw,990) * 1px),calc((100svh - 3rem) * var(--mw,990) / var(--mh,1080)))}
  .mapa{padding-top:1.5rem;padding-bottom:1.5rem;min-height:100svh;display:grid;align-content:center}
}
@media (min-width:1001px){.mapa .map__canvas{min-width:0}.mapa .map__stage{overflow:visible}}   /* la regla antigua ≤1300 px (min-width 50rem) impedía que el mapa encogiera para caber en pantalla */
@media (min-width:1001px){.mapa__grid{grid-template-columns:minmax(24.5rem,1fr) minmax(0,min(calc(var(--mw,990) * 1px),calc((100svh - 3rem) * var(--mw,990) / var(--mh,1080))))}}   /* la columna del mapa mide lo mismo que el mapa: el bloque de categorías sigue centrado en el hueco */
/* carrusel de fotos verticales (Casa Ayala): diapositivas 4:5, más estrechas; se ven la central y las vecinas enteras */
.carousel--tall .carousel__track{--cw:min(34vw,calc((100svh - var(--nav-h) - 8rem) * 4 / 5))}
.carousel--tall .carousel__item{aspect-ratio:4/5}
@media (max-width:800px){.carousel--tall .carousel__track{--cw:78vw}}
/* <picture> con WebP: no crea caja propia; el <img> sigue siendo el hijo directo a efectos de maquetación */
picture{display:contents}
/* ============ Móvil (2026-09-28): legibilidad y áreas táctiles ≥ 40–44 px, sin cambiar el diseño de escritorio ============ */
@media (max-width:800px){
  :root{--fs-label:.6875rem}   /* 10 → 11 px: las versalitas de 10 px se leen mal en pantalla pequeña */
  .nav__cta{min-height:2.5rem;padding:0 .9rem}
  .nav__toggle{width:2.75rem;height:2.75rem}
  .nav__logo{padding:.6rem 0}
  .slides__dots{gap:.25rem}
  .slides__dots button{min-width:2.75rem;height:2.75rem}
  .carousel__btn{width:2.75rem;height:2.75rem}
  .planta__unit{min-width:2.75rem;height:2.5rem}
  .planta__lbl{padding:.65rem 0;font-size:.625rem}
  .planta__actions .arrow{padding:.7rem 0}
  .footer__nav a,.footer__legal a{padding:.55rem .25rem}
  .footer__nav{gap:0}
  .footer__contact a{padding:.35rem 0}
  .footer__top{padding:.6rem 0}
  .contact2__info a{padding:.4rem 0}
  .consent{padding:.25rem 0}
  .consent input{width:1.25rem;height:1.25rem}
  .consent a{padding:.2rem 0}
  .mapa .filter{min-height:2.75rem}
  .btn{min-height:2.75rem}
}
/* Localización · el mapa ocupa la mitad derecha exacta: su borde izquierdo cae en el 50 %, donde termina el marco negro del módulo siguiente (Miguel, 2026-09-28) */
@media (min-width:1301px){
  .mapa{--pr:clamp(1rem,1.75vw,1.5625rem);padding-left:0;padding-right:var(--pr)}
  .mapa__grid{grid-template-columns:calc(50% + var(--pr) / 2) minmax(0,1fr);column-gap:0}
  .mapa .map__stage{width:100%;max-width:min(100%,calc((100svh - 1rem) * var(--mw,990) / var(--mh,1080)));justify-self:start}   /* arranca siempre en el 50 %; en pantallas muy apaisadas encoge por la derecha para caber en alto */
}
/* 1001–1300 px: media pantalla deja el mapa demasiado estrecho para las etiquetas; categorías arriba y mapa centrado debajo, a alto de pantalla */
@media (min-width:1001px) and (max-width:1300px){
  .mapa__grid{grid-template-columns:1fr;row-gap:2rem}
  .mapa__side{justify-self:center}
  .mapa .filters{grid-template-columns:repeat(2,max-content);column-gap:3rem}
  .mapa .map__stage{justify-self:center;width:min(100%,calc((100svh - 3rem) * var(--mw,990) / var(--mh,1080)));max-width:none}
}
.map__svg{overflow:hidden}   /* los anillos de 10/15 min se cortan en el borde del mapa (Miguel, 2026-09-28) */
@media (max-width:1300px){.mapa{padding-top:clamp(6rem,14vh,8.5rem)}}   /* más aire entre el carrusel de cabecera y el mapa cuando van apilados (Miguel, 2026-09-28) */
/* portada con la foto definitiva (persianas abiertas, 1536×1024; en móvil la vertical 1024×1536) */
.fhero__media--home{aspect-ratio:3/2}
@media (max-width:800px){.fhero__media--home{aspect-ratio:2/3}}
/* sliders: flechas a ambos lados de los números */
.slides__ctrl{display:flex;align-items:center;justify-content:center;gap:clamp(.75rem,1.5vw,1.25rem);margin-top:clamp(2rem,5vh,3rem)}
.slides__ctrl .slides__dots{margin-top:0}
.slides__arrow[disabled]{opacity:.3;pointer-events:none}
/* ============ Home (feedback del cliente, 2026-09-29) ============ */
/* portada: foto a casi toda la pantalla con el titular encima, abajo a la izquierda sobre un degradado */
.cover{position:relative;margin-top:var(--nav-h);height:calc(100svh - var(--nav-h));min-height:30rem;overflow:hidden;background:var(--black);color:var(--ivory);isolation:isolate}
.cover__media{position:absolute;inset:0;z-index:-2}
.cover__media img{width:100%;height:100%;object-fit:cover;object-position:50% 38%}
.cover__veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(34,34,34,0) 38%,rgba(34,34,34,.28) 62%,rgba(34,34,34,.66) 100%)}
.cover__text{position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(2.25rem,7vh,4.5rem);display:grid;gap:clamp(.75rem,2vh,1.1rem);max-width:44rem}
.cover__text h1{font-size:var(--fs-h1);margin:0;text-wrap:balance;text-shadow:0 1px 14px rgba(34,34,34,.25)}
.cover__lead{max-width:30rem;font-size:var(--fs-body);line-height:1.35;margin:0}
.cover__lead.reveal{opacity:0}.cover__lead.reveal.is-in{opacity:.95}
@media (max-width:800px){.cover{height:calc(88svh - var(--nav-h))}.cover__media img{object-position:50% 30%}.cover__veil{background:linear-gradient(180deg,rgba(34,34,34,0) 30%,rgba(34,34,34,.35) 58%,rgba(34,34,34,.72) 100%)}}
/* las cuatro secciones a la vista: 4 en fila en escritorio, 2×2 en móvil */
.cards4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.5rem,2.2vw,2.5rem) clamp(1rem,1.6vw,1.75rem);padding:clamp(4rem,10vh,6.5rem) clamp(1rem,1.75vw,1.5625rem)}
.card4{min-width:0;display:grid;gap:.75rem;align-content:start}
.card4__media{display:block;aspect-ratio:4/5;margin-bottom:.4rem}
.card4__media img{transition:transform 1.4s var(--e-out)}
.card4:hover .card4__media img{transform:scale(1.035)}
.card4 .eyebrow{opacity:.75}
.card4 h2{font-size:clamp(1.05rem,.85rem + .55vw,1.375rem);line-height:1.2;margin:0;text-wrap:balance}
.card4 .arrow{justify-self:start;margin-top:.25rem}
@media (max-width:1000px){.cards4{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:3rem}}
@media (max-width:420px){.cards4{column-gap:.75rem}.card4 h2{font-size:1rem}.card4 .arrow{font-size:.625rem;letter-spacing:.08em;gap:.5rem}}
.card4 .arrow{align-items:flex-end;max-width:100%;text-align:left}.card4 .arrow svg{flex:0 0 auto}
/* huecos de texto pendientes de copy (se ven en local para maquetar; no publicar con ellos) */
.pendiente{color:rgba(34,34,34,.45)!important;outline:1px dashed rgba(34,34,34,.35);outline-offset:3px;font-style:italic}
/* Casa Ayala · destacado de rehabilitación y entrega: número y significado con el mismo peso */
.proof{padding:clamp(4rem,10vh,6.5rem) var(--gutter)}
.proof__row{list-style:none;margin:0 auto;padding:0;max-width:78rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--black);border-bottom:1px solid var(--black)}
.proof__row li{display:grid;gap:.35rem;align-content:start;padding:clamp(1.75rem,4vh,2.5rem) clamp(1.25rem,2.5vw,2.5rem)}
.proof__row li+li{border-left:1px solid var(--black)}
.proof__row b,.proof__row span.display{font-weight:200;font-size:clamp(1.25rem,1rem + .8vw,1.75rem);line-height:1.2;letter-spacing:.03em;text-wrap:balance}
@media (max-width:800px){.proof__row{grid-template-columns:1fr}.proof__row li+li{border-left:0;border-top:1px solid var(--black)}}
/* Casa Ayala · equipo: logo, cargo y una línea por firma */
.logos li{grid-template-rows:auto 3rem auto}
.logos__line{font-size:var(--fs-small);line-height:1.45;max-width:17rem;margin:.25rem 0 0;text-wrap:balance}
.carousel--first{padding-top:clamp(1rem,3vh,2rem)}
/* Viviendas · datos clave en línea: número y significado en la misma tipografía y tamaño */
.keyline{padding:0 var(--gutter) clamp(3rem,8vh,5rem)}
.keyline__row{list-style:none;margin:0 auto;padding:clamp(1.25rem,3vh,1.75rem) 0;max-width:60rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem clamp(1.5rem,4vw,3.5rem);border-top:1px solid var(--black);border-bottom:1px solid var(--black);font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.03em;font-size:clamp(1.05rem,.9rem + .5vw,1.375rem);line-height:1.3;text-align:center}
.keyline__row b{font-weight:200}
.keyline__row .u{text-transform:none}
.keyline__row li+li::before{content:"·";margin-right:clamp(1.5rem,4vw,3.5rem);opacity:.6}
@media (max-width:640px){.keyline__row{flex-direction:column}.keyline__row li+li::before{display:none}}
/* Amenities · cada espacio con su nombre sobre la foto y una línea debajo (feedback del cliente, 2026-09-29) */
.space{margin:0;display:grid;gap:.75rem;align-content:start;min-width:0}
.space.estancias__wide{grid-column:1/-1}
.estancias--whole .space .media{aspect-ratio:1}
.estancias--whole .space.estancias__wide .media{aspect-ratio:3/2}
.space__tag{position:absolute;left:clamp(.75rem,1.5vw,1.25rem);top:clamp(.75rem,1.5vw,1.25rem);z-index:2;background:var(--ivory);color:var(--black);border:1px solid var(--black);padding:.4rem .75rem;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tr-label);line-height:1.2;pointer-events:none}
.space__line{font-size:var(--fs-small);line-height:1.45;max-width:36rem;margin:0}
.space__line--head{padding:.9rem var(--gutter) 0;max-width:none;text-align:center}
.fhero__media{position:relative}
@media (max-width:800px){.estancias--whole .space .media,.estancias--whole .space.estancias__wide .media{aspect-ratio:3/2}}
.estancias .space.estancias__wide{aspect-ratio:auto}
/* mapa · las etiquetas son texto fijo: sin cambio de color al pasar el ratón ni cursor de enlace */
.poi-tag,.poi-tag:hover,.poi-tag:focus-visible{cursor:default;pointer-events:none}
.poi-tag:hover{background:var(--ivory);color:var(--black)}
.poi-tag.poi--gastro:hover{background:#75756d;color:var(--ivory)}
.poi-tag.poi--moda:hover{background:#ccc5b0;color:var(--black)}
.poi-tag.poi--bienestar:hover{background:#3d3d3b;color:var(--ivory)}
.keyline{padding-top:clamp(3rem,8vh,5rem)}
/* portada: titular y entradilla centrados en la página (Miguel, 2026-09-29); velo uniforme para que se lean sobre la foto luminosa */
.cover__text{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(52rem,calc(100% - 2 * var(--gutter)));max-width:none;justify-items:center;text-align:center}
.cover__lead{margin:0 auto}
.cover__veil{background:radial-gradient(ellipse 70% 55% at 50% 50%,rgba(34,34,34,.42) 0%,rgba(34,34,34,.22) 60%,rgba(34,34,34,.1) 100%)}
@media (max-width:800px){.cover__veil{background:radial-gradient(ellipse 90% 45% at 50% 50%,rgba(34,34,34,.45) 0%,rgba(34,34,34,.25) 65%,rgba(34,34,34,.12) 100%)}}
.cover__veil{background:radial-gradient(ellipse 62% 48% at 50% 50%,rgba(34,34,34,.55) 0%,rgba(34,34,34,.3) 58%,rgba(34,34,34,.12) 100%)}
.cover__text h1{text-shadow:0 1px 18px rgba(34,34,34,.45)}
.cover__lead{text-shadow:0 1px 10px rgba(34,34,34,.55)}
@media (max-width:800px){.cover__veil{background:radial-gradient(ellipse 95% 42% at 50% 50%,rgba(34,34,34,.58) 0%,rgba(34,34,34,.32) 62%,rgba(34,34,34,.12) 100%)}}
/* portada · línea que se dibuja hacia abajo: indica que hay contenido debajo (Miguel, 2026-09-29) */
.cover__scroll{position:absolute;left:50%;bottom:0;transform:translateX(-50%);display:grid;justify-items:center;padding:0 1.25rem clamp(1.25rem,3vh,2rem);color:var(--ivory);opacity:.85;transition:opacity .3s}
.cover__scroll:hover,.cover__scroll:focus-visible{opacity:1;outline:none}
.cover__scroll .scroll__line{height:clamp(3.25rem,8vh,4.5rem);width:1px;background:currentColor;transform-origin:top;animation:line 2.6s ease-in-out infinite}
.cover__scroll.reveal{opacity:0}.cover__scroll.reveal.is-in{opacity:.85}
@media (prefers-reduced-motion:reduce){.cover__scroll .scroll__line{animation:none}}
.cover__scroll{left:0;right:0;margin:0 auto;width:max-content;transform:none}   /* centrado sin transform: .reveal lo sobrescribía */
/* Home · la tarjeta entera es el enlace: al pasar por la foto o el texto se activa el estado del botón */
a.card4{color:inherit;text-decoration:none;cursor:pointer}
a.card4:hover .arrow::after,a.card4:focus-visible .arrow::after{transform:scaleX(1)}
a.card4:hover .arrow svg,a.card4:focus-visible .arrow svg{transform:translateX(4px)}
a.card4:hover .card4__media img,a.card4:focus-visible .card4__media img{transform:scale(1.035)}
a.card4:focus-visible{outline:2px solid var(--black);outline-offset:6px}
.page-home .closer{background:var(--mineral)}   /* cierre de la Home sobre Ayala Mineral (Miguel, 2026-09-29) */
.card4 .arrow{display:inline;line-height:1.6;padding-bottom:.4rem}.card4 .arrow svg{display:inline-block;vertical-align:-.2em;margin-left:.6rem}   /* la flecha sigue al texto aunque parta en dos líneas */
.carousel--first{padding-top:clamp(4.5rem,11vh,7rem);padding-bottom:clamp(2.5rem,6vh,4rem)}   /* Casa Ayala · más aire alrededor del carrusel (Miguel, 2026-09-29) */
/* Amenities · el nombre de cada espacio encabeza su descripción, en la tipografía de titulares (Miguel, 2026-09-29) */
.space__cap{display:grid;gap:.35rem;margin:0;padding-top:.35rem}
.space__cap b{font-weight:200;font-size:clamp(1.15rem,.95rem + .6vw,1.5rem);line-height:1.2;letter-spacing:.03em}
.space__cap .space__line{padding:0;text-align:inherit}
.space__cap--head{justify-items:center;text-align:center;padding:clamp(1rem,2.5vh,1.5rem) var(--gutter) 0}
.space__cap{justify-items:center;text-align:center}.space__cap .space__line{margin:0 auto}   /* nombre y descripción centrados bajo cada foto (Miguel, 2026-09-29) */
/* Viviendas · datos clave en dos celdas con divisor (referencia de Miguel, 2026-09-29): cifra grande y significado debajo */
.keyline__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;padding:0;max-width:58rem;font-family:var(--text);text-transform:none;letter-spacing:0}
.keyline__row li{display:grid;justify-items:center;gap:.35rem;padding:clamp(1.75rem,4.5vh,2.75rem) 1.5rem;text-align:center}
.keyline__row li+li{border-left:1px solid var(--black)}
.keyline__row li+li::before{content:none}
.keyline__row b{font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(2.25rem,1.3rem + 2.6vw,3.75rem);line-height:1;white-space:nowrap}
.keyline__row span{font-size:var(--fs-small);line-height:1.4}
@media (max-width:640px){.keyline__row{grid-template-columns:1fr}.keyline__row li+li{border-left:0;border-top:1px solid var(--black)}.keyline__row b{font-size:clamp(2rem,9vw,2.75rem)}}
/* Home · texto descriptivo de cada tarjeta (textos definitivos, 2026-09-30) */
.card4 h2{font-size:clamp(1.2rem,.95rem + .6vw,1.5rem)}
.card4__text{font-size:var(--fs-small);line-height:1.5;margin:0;max-width:22rem;text-wrap:pretty}
.panels__strong strong{font-weight:700}
/* Viviendas · franja de datos con la línea del documento (2026-09-30): cada dato en su celda, separados por filetes, en la tipografía de titulares */
.keyline__row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));max-width:84rem}
.keyline__row li{display:grid;place-items:center;padding:clamp(1.25rem,3.5vh,2rem) clamp(.75rem,1.5vw,1.5rem);font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.03em;font-size:clamp(1rem,.8rem + .55vw,1.375rem);line-height:1.25;text-wrap:balance}
.keyline__row li+li{border-left:1px solid var(--black)}
@media (max-width:1000px){.keyline__row{grid-template-columns:repeat(2,minmax(0,1fr))}.keyline__row li+li{border-left:0}.keyline__row li{border-top:1px solid var(--black)}.keyline__row li:nth-child(-n+2){border-top:0}.keyline__row li:nth-child(even){border-left:1px solid var(--black)}.keyline__row li:last-child{grid-column:1/-1;border-left:0}}
.nowrap{white-space:nowrap}
@media (min-width:900px){.cover__lead{max-width:none}}   /* escritorio: «del Barrio de Salamanca» entero en la segunda línea */
/* Viviendas · franja de datos (2026-09-30): el texto del documento, con las cifras grandes y las palabras pequeñas (como el diseño anterior de Miguel). Fila 1: tres cifras · fila 2: semiático/ático y plantas */
.keyline__row--nums{grid-template-columns:repeat(6,minmax(0,1fr));max-width:72rem}
.keyline__row--nums li{grid-column:span 2;display:grid;justify-items:center;align-content:center;gap:.45rem;padding:clamp(1.75rem,4.5vh,2.75rem) clamp(1rem,2vw,2rem);font-family:var(--text);text-transform:none;letter-spacing:0;font-size:inherit}
.keyline__row--nums li:nth-child(n+4){grid-column:span 3;border-top:1px solid var(--black)}
.keyline__row--nums li:nth-child(4){border-left:0}
.keyline__row--nums b{font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(2.4rem,1.3rem + 2.8vw,4rem);line-height:1;white-space:nowrap}
.keyline__row--nums b i{font-style:normal;font-size:.36em;letter-spacing:.06em;vertical-align:.55em;margin:0 .18em}
.keyline__row--nums b i:last-child{margin-right:0}
.keyline__row--nums b i:first-child{margin-left:0}
.keyline__row--nums .keyline__mid{font-size:clamp(1.25rem,.9rem + 1vw,1.875rem);line-height:1.15;white-space:normal;text-wrap:balance;text-align:center}
.keyline__row--nums span{font-size:var(--fs-small);line-height:1.4;text-transform:uppercase;letter-spacing:var(--tr-label)}
@media (max-width:1000px){.keyline__row--nums li{border-left:0;border-top:0}.keyline__row--nums li:nth-child(n+2){border-left:1px solid var(--black)}.keyline__row--nums li:nth-child(4){border-left:0}}
@media (max-width:640px){.keyline__row--nums{grid-template-columns:1fr}.keyline__row--nums li,.keyline__row--nums li:nth-child(n+4){grid-column:auto;border-left:0!important}.keyline__row--nums li+li{border-top:1px solid var(--black)}.keyline__row--nums b{font-size:clamp(2.2rem,11vw,3rem)}}
/* franja v4: todas las cifras a la misma altura (cifra abajo, texto debajo), la 2ª fila cuadra con las columnas de la 1ª y la «ª» en volado */
.keyline__row--nums{max-width:76rem}
.keyline__row--nums li{grid-template-rows:1fr auto;align-content:stretch;gap:.7rem;padding:clamp(2rem,5vh,3rem) clamp(1rem,2vw,2rem)}
.keyline__row--nums li b{align-self:end}
.keyline__row--nums li span{align-self:start}
.keyline__row--nums li:nth-child(4){grid-column:span 4}
.keyline__row--nums li:nth-child(5){grid-column:span 2;border-left:1px solid var(--black)}
.keyline__row--nums .keyline__mid{font-size:clamp(1.5rem,1rem + 1.4vw,2.5rem);max-width:20ch}
.keyline__row--nums b sup{font-size:.42em;vertical-align:1.05em;margin-left:.04em;letter-spacing:0}
@media (max-width:640px){.keyline__row--nums li:nth-child(4),.keyline__row--nums li:nth-child(5){grid-column:auto}.keyline__row--nums li{padding:1.75rem 1rem}}
/* franja de datos · cifras algo más pequeñas (Miguel, 2026-09-30) */
.keyline__row--nums b{font-size:clamp(2rem,1.15rem + 2vw,3.1rem)}
.keyline__row--nums .keyline__mid{font-size:clamp(1.3rem,.95rem + 1vw,1.95rem)}
.keyline__row--nums li{padding:clamp(1.6rem,4vh,2.4rem) clamp(1rem,2vw,2rem)}
@media (max-width:640px){.keyline__row--nums b{font-size:clamp(1.9rem,9vw,2.5rem)}}
/* franja · «semiático y ático dúplex» al mismo cuerpo que las cifras (Miguel, 2026-09-30) */
.keyline__row--nums .keyline__mid{font-size:clamp(2rem,1.15rem + 2vw,3.1rem);line-height:1.05;max-width:none;white-space:normal;text-wrap:balance}
@media (max-width:640px){.keyline__row--nums .keyline__mid{font-size:clamp(1.9rem,9vw,2.5rem)}}
/* franja de datos en dos filas (cambios del cliente, 2026-09-30): 17 residencias · 1 y 2 dormitorios · 69 a 290 m² / 7 plantas · semiático y ático dúplex */
.keyline__row--nums li:nth-child(4){grid-column:span 3;border-left:0}
.keyline__row--nums li:nth-child(5){grid-column:span 3;border-left:1px solid var(--black)}
@media (max-width:1000px){.keyline__row--nums li:nth-child(4){border-left:0}}
@media (max-width:640px){.keyline__row--nums li:nth-child(4),.keyline__row--nums li:nth-child(5){grid-column:auto;border-left:0}}
/* Home · los cuatro enlaces a la misma altura aunque los textos tengan distinta longitud */
.card4{grid-template-rows:auto auto 1fr auto}
.card4 .arrow{align-self:end}
/* Cambios del cliente (2026-09-30) · módulos a una pantalla: menos scroll y la imagen entera a la vista */
@media (min-width:801px){
  /* Casa Ayala · 1907: titular, párrafo y grabado caben en una pantalla */
  .fhero--grabado{height:calc(100svh - var(--nav-h));min-height:36rem;display:flex;flex-direction:column}
  .fhero--grabado .fhero__text{flex:0 0 auto;padding-top:clamp(2.5rem,7vh,5rem);padding-bottom:clamp(1.25rem,3vh,2rem)}
  .fhero__grabado{flex:1 1 0;min-height:0;display:flex;justify-content:center;padding-bottom:clamp(1.5rem,4vh,2.5rem)}
  .fhero__grabado img{height:100%;width:auto;max-width:100%}
  /* fachada: media pantalla de foto, exactamente un alto de pantalla */
  .halves{min-height:0;height:calc(100svh - var(--nav-h));max-height:58rem}
  /* doble panel: la foto enmarcada más grande y el módulo a un alto de pantalla, sin huecos vacíos */
  .panels{min-height:0}
  .panels__media{padding:clamp(2rem,5vh,3.5rem) clamp(2rem,4vw,4rem)}
  .panels__img{width:min(100%,calc((100svh - var(--nav-h) - 7rem) * 4 / 5),38rem)}
}
/* doble panel solo con texto (Barrio de Salamanca · «Todo a unos pasos de casa») */
.panels--solo{grid-template-columns:1fr;min-height:0}
.panels--solo .panels__text{padding:clamp(5rem,14vh,9rem) var(--gutter)}
/* Amenities · una frase bajo cada nombre */
.space__cap .space__line{font-size:var(--fs-body);line-height:1.35;max-width:34rem;margin-top:.15rem}
/* Viviendas · «Una forma diferente…» centrado entre la franja de datos y el slider: mismo aire arriba que abajo */
#aticos .lede{padding-top:0;padding-bottom:clamp(3rem,8vh,5rem)}
/* Portada en pantallas grandes y panorámicas (Miguel, 2026-10-01): la foto se ancla arriba para que nunca se corten las cúpulas; lo que se recorta es la acera */
@media (min-width:801px){.cover__media img{object-position:50% 5%}}
/* Equipo sin la foto de debajo (cambios del cliente, 2026-09-30): aire bajo los logos para separarlos del pie */
.team2{padding-bottom:clamp(5rem,13vh,8.5rem)}
/* Barrio · más aire entre el carrusel y el mapa (Miguel, 2026-10-01) */
.mapa{padding-top:clamp(6.5rem,17vh,11rem)}
@media (min-width:1001px){.mapa{padding-top:clamp(5rem,13vh,9rem)}}
/* Renders · etiqueta «Render ilustrativo» en la esquina inferior derecha (petición de legal del cliente, 2026-10-01) */
.render-tag{position:absolute;right:.6rem;bottom:.6rem;z-index:3;pointer-events:none;padding:.3rem .55rem .28rem;background:rgba(34,34,34,.42);color:#fff;font-family:var(--text);font-size:.625rem;line-height:1;letter-spacing:.14em;text-transform:uppercase;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
@media (max-width:800px){.render-tag{right:.45rem;bottom:.45rem;font-size:.5625rem;letter-spacing:.12em}}
/* etiqueta de render más discreta (Miguel, 2026-10-01): sin caja, solo texto pequeño con una sombra suave para que se lea sobre fondos claros */
.render-tag{padding:0;right:.75rem;bottom:.6rem;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;color:rgba(255,255,255,.82);font-size:.5625rem;letter-spacing:.16em;text-shadow:0 0 5px rgba(34,34,34,.55),0 0 1px rgba(34,34,34,.4)}
@media (max-width:800px){.render-tag{right:.55rem;bottom:.45rem;font-size:.5rem;letter-spacing:.14em}}
/* etiqueta de render: blanco puro y sin sombra (Miguel, 2026-10-01) */
.render-tag{color:#fff;text-shadow:none}
/* etiqueta de render centrada abajo (Miguel, 2026-10-01) */
.render-tag{left:0;right:0;width:max-content;margin:0 auto;text-align:center}
@media (max-width:800px){.render-tag{left:0;right:0}}
/* sliders con renders: una sola nota bajo las flechas en lugar de la etiqueta en cada imagen (Miguel, 2026-10-01) */
.slider-note{margin:clamp(.75rem,2vh,1.1rem) auto 0;text-align:center;font-size:.625rem;line-height:1.4;letter-spacing:.16em;text-transform:uppercase;opacity:.55}
/* aviso «Email copiado» al pulsar un email */
.mail-toast{position:fixed;left:50%;bottom:clamp(1rem,4vh,2rem);z-index:9999;transform:translate(-50%,.5rem);opacity:0;pointer-events:none;padding:.7rem 1.1rem;background:var(--black);color:var(--ivory);font-size:.75rem;letter-spacing:.08em;transition:opacity .3s var(--e-out),transform .3s var(--e-out);max-width:calc(100vw - 2rem);text-align:center}
.mail-toast.is-on{opacity:1;transform:translate(-50%,0)}
/* etiqueta de render: vuelve abajo a la derecha (Miguel, 2026-10-01) */
.render-tag{left:auto;right:.75rem;margin:0;text-align:right}
@media (max-width:800px){.render-tag{left:auto;right:.55rem}}
/* logotipo definitivo de Mastra (2026-10-01) */
.footer__plogo--mastra{height:1.05rem}
.footer__plogo--mastra{height:1.1rem;overflow:visible}   /* el SVG lleva margen interior para que no se recorten las curvas de abajo */
/* Cambios del cliente (2026-10-02) */
/* menú del pie más visible: justo bajo el logotipo, en la tipografía de titulares y a buen tamaño */
.footer__menu{width:100%;max-width:72rem;margin-top:calc(-1 * clamp(.25rem,1vh,.75rem))}
.footer__menu .footer__nav{gap:.5rem clamp(1.75rem,3.5vw,3.25rem)}
.footer__menu .footer__nav a{font-family:var(--display);font-weight:200;font-size:clamp(1.25rem,.95rem + .9vw,1.875rem);letter-spacing:.03em;line-height:1.15;padding:.3rem 0}
@media (max-width:640px){.footer__menu .footer__nav{gap:.15rem}.footer__menu .footer__nav a{font-size:1.5rem;padding:.4rem .25rem}}
.footer__menu + .footer__contact{margin-top:clamp(.5rem,2vh,1.25rem)}
/* Viviendas · franja de datos: cada dato en una línea y todo al mismo cuerpo */
.keyline__row--flat li{display:grid;place-items:center;grid-template-rows:none;padding:clamp(1.5rem,4vh,2.25rem) clamp(1rem,2vw,2rem);font-family:var(--display);font-weight:200;text-transform:uppercase;letter-spacing:.03em;font-size:clamp(1.15rem,.85rem + .9vw,1.75rem);line-height:1.2;text-align:center;text-wrap:balance}
/* Viviendas · slider por plantas: renders en horizontal y enteros, más grandes dentro del marco (columna de imagen más ancha) */
@media (min-width:801px){
  .slides{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .slides__media{padding:clamp(1.75rem,4.5vh,3rem) clamp(1.75rem,3vw,3rem)}
  .slides__img{width:min(100%,calc((100svh - 7rem) * 3 / 2));aspect-ratio:3/2}
}
@media (max-width:800px){.slides__img{width:100%;aspect-ratio:3/2}}
/* Amenities · piscina y patio de nuevo a todo el ancho (Miguel, 2026-10-07: se deshace el límite al alto de pantalla del 02-10) */
/* slider por plantas fijado (el menú se oculta mientras está fijado): panel más compacto para que las flechas y la nota de renders quepan en pantalla */
@media (min-width:1001px) and (min-height:600px){
  .slides-pin .slides__panel{padding-top:clamp(1.5rem,4vh,3rem);padding-bottom:clamp(1.25rem,3vh,2rem)}
  .slides-pin .slides__img{width:min(100%,calc((100svh - 6rem) * 3 / 2))}
}
@media (min-width:1001px){.slides{grid-template-columns:minmax(0,4fr) minmax(0,8fr)}.slides__media{padding:clamp(1.5rem,3vh,2.25rem) clamp(1.5rem,2vw,2.25rem)}}
.footer__menu .footer__nav a{font-size:clamp(1.0625rem,.7rem + .75vw,1.5rem)}
.footer__menu .footer__nav{gap:.5rem clamp(1.5rem,3vw,2.75rem)}
@media (max-width:640px){.footer__menu .footer__nav a{font-size:1.375rem}}
/* Mapa · categoría Hoteles (cambios de Marta, 2026-10-02): violeta suave, de la familia del marcador de Casa Ayala */
.i-hoteles{background:#c4c3dd}
.poi-tag.poi--hoteles,.poi-tag.poi--hoteles:hover{background:#c4c3dd;color:var(--black)}
/* Pie (cambios del cliente, 2026-10-02) */
/* menú del pie con la misma tipografía que el menú principal (bajo el logotipo) */
.footer__menu .footer__nav{gap:.5rem clamp(1.5rem,2.8vw,2.5rem)}
.footer__menu .footer__nav a{font-family:var(--text);font-weight:400;font-size:var(--fs-label);line-height:1.2;letter-spacing:var(--tr-label);text-transform:uppercase;padding:.35rem 0}
@media (max-width:640px){.footer__menu .footer__nav{gap:0}.footer__menu .footer__nav a{font-size:var(--fs-label);padding:.55rem .25rem}}
/* «Volver arriba» en lo alto del pie, a la derecha (misma posición horizontal que antes) */
.footer{position:relative}
.footer > .footer__top{position:absolute;top:clamp(1.25rem,3vh,1.75rem);right:clamp(1.25rem,2.5vw,2.75rem);font-size:var(--fs-label);letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--black);z-index:2}
.footer__bottom{grid-template-columns:1fr auto 1fr}
.footer__bottom::after{content:""}
@media (max-width:800px){.footer > .footer__top{top:1rem;right:var(--gutter)}.footer__bottom{grid-template-columns:1fr}.footer__bottom::after{display:none}}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* Hoteles: la misma tonalidad violeta pero mucho más clara, para no confundirse con el violeta corporativo de Casa Ayala (Miguel, 2026-10-05) */
.i-hoteles{background:#e6e5f3}
.poi-tag.poi--hoteles,.poi-tag.poi--hoteles:hover{background:#e6e5f3;color:var(--black)}
.i-hoteles{background:#f2f1f9}
.poi-tag.poi--hoteles,.poi-tag.poi--hoteles:hover{background:#f2f1f9}
/* Selector de idioma ES | EN (versión inglesa, 2026-10-06): el idioma activo en negro, el otro atenuado y enlazado */
.nav__lang a{color:inherit;text-decoration:none;opacity:.45;transition:opacity .3s}
.nav__lang a:hover,.nav__lang a:focus-visible{opacity:1}
.nav__lang span:last-child{opacity:1}
.nav__lang b{font-weight:400}
/* Viviendas · rótulos de planta alineados con los pisos del alzado (Miguel, 2026-10-07: «no están ordenados los de las plantas 1 a 5»).
   La columna mide lo mismo que el dibujo y cada rótulo se centra en su piso (--c lo calcula site.js a partir de .planta__hit) */
.has-aligned-labels .planta__fig{align-items:end}
.has-aligned-labels .planta__labels{position:relative;display:block;padding:0;align-self:stretch}
.has-aligned-labels .planta__labels::after{content:none}
.has-aligned-labels .planta__labels li,.has-aligned-labels .planta__labels li.planta__sep{position:absolute;left:0;right:0;top:var(--c);transform:translateY(-50%);margin:0;display:block;flex:none}
.has-aligned-labels .planta__labels li .planta__lbl,.has-aligned-labels .planta__labels li.planta__sep .planta__lbl,.has-aligned-labels .planta__labels li.planta__sep ~ li .planta__lbl{height:auto;display:block;padding:.2rem 0 .25rem;line-height:1.2}
/* Selector de idioma en responsive (Miguel, 2026-10-07): fuera del menú; en el pie, los dos idiomas con el activo resaltado.
   En escritorio no hace falta: ya está ES | EN arriba a la derecha */
.footer__lang{display:none}
.langsw{display:inline-flex;align-items:center;gap:.45rem}
.langsw b{font-weight:400;opacity:1}
.langsw a{opacity:.45;transition:opacity .3s}
.langsw a::after{display:none}
.langsw a:hover,.langsw a:focus-visible{opacity:1}
.langsw span{opacity:.45}
@media (max-width:1100px){.footer__lang{display:list-item;list-style:none}}
/* Viviendas · alzado: zona de cada vivienda como en el PDF de planos (cliente, 2026-10-19). La elegida en violeta; las demás se pueden pulsar */
.planta__zones{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.planta__zones polygon{fill:var(--violet);fill-opacity:0;mix-blend-mode:multiply;cursor:pointer;transition:fill-opacity .35s var(--e-out)}
.planta__zones polygon.is-hover{fill-opacity:.35}
.planta__zones polygon.is-on{fill-opacity:.8}
.has-zones .planta__hit{display:none}
@media (hover:none){.planta__zones polygon.is-hover{fill-opacity:0}.planta__zones polygon.is-on{fill-opacity:.8}}
