


@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('assets/fonts/Montserrat-normal-400-800.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url('assets/fonts/OpenSans-normal-400-700.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


:root {

  --ease: cubic-bezier(.22,.61,.36,1);
  --t-rapido: .16s;
  --t-medio: .26s;
  --t-lento: .38s;
  --t-carrusel: .32s;
  --pase: .72s;



  --blanco:       #FFFFFF;
  --crema:        #F6EBCF;
  --crema-suave:  #FBF6E9;
  --papel:        #FFFFFF;


  --verde-osc:    #2C4B9B;
  --verde:        #2C4B9B;
  --verde-oliva:  #5E6157;
  --verde-claro:  var(--azul-frio);


  --azul:         #2C4B9B;
  --azul-prof:    #273D8E;
  --azul-frio:    #E8EDF3;


  --mostaza:      #EEB834;
  --mostaza-osc:  #D69E1A;
  --mostaza-suave:#FAE7BC;

  --mostaza-hover:#F0C452;
  --amarillo:      var(--mostaza);
  --amarillo-osc:  var(--mostaza-osc);
  --amarillo-suave:var(--mostaza-suave);


  --texto:        #33352F;
  --texto-medio:  #4A4D45;
  --texto-suave:  #6B6555;
  --linea:        #E7E0D2;


  --azul-marino:  var(--verde-osc);
  --azul-claro:   var(--verde);
  --naranja:      var(--mostaza);
  --naranja-osc:  var(--mostaza-osc);
  --ambar:        var(--mostaza);
  --olivo:        var(--verde-oliva);
  --olivo-osc:    var(--verde-osc);
  --salvia:       var(--verde-claro);
  --menta:        var(--crema-suave);
  --gris-fondo:   var(--crema-suave);
  --gris-borde:   var(--linea);
  --gris:         #CFC9BC;

  --verde-fin:    #2D8171;
  --verde-plano:  var(--verde-fin);
  --error:        #B4402B;


  --whatsapp:     #25D366;
  --whatsapp-osc: #128C7E;
  --whatsapp-texto:#08351C;
  --exito:        #2D8171;


  --f-titulo:  "Montserrat", "Segoe UI", sans-serif;
  --f-display: "Open Sans", "Segoe UI", system-ui, sans-serif;
  --f-texto:   "Open Sans", "Segoe UI", system-ui, sans-serif;
  --peso-titulo:  700;
  --track-titulo: -.015em;


  --r-sm: 10px;
  --r:    16px;
  --r-lg: 24px;
  --r-full: 999px;

  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px;
  --s-5: 24px; --s-6: 34px; --s-7: 52px; --s-8: 76px; --s-9: 104px;
  --s-10: 136px;


  --sombra-sm: 0 1px 2px rgba(51,53,47,.04), 0 2px 8px rgba(51,53,47,.04);
  --sombra:    0 2px 8px rgba(51,53,47,.05), 0 14px 34px rgba(51,53,47,.06);
  --sombra-lg: 0 6px 18px rgba(51,53,47,.06), 0 30px 64px rgba(51,53,47,.10);

  --ancho: 1200px;
  --lectura: 700px;
}


*, *::before, *::after { box-sizing: border-box; }


[hidden] { display: none !important; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 96px;
  -webkit-text-size-adjust: 100%;
  overflow-x: clip;
}

body {
  margin: 0;
  font-family: var(--f-texto);
  font-size: 16.5px;
  line-height: 1.78;
  color: var(--texto);
  background: var(--papel);

  -webkit-font-smoothing: antialiased;
}


h1, h2, h3, h4 {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); line-height: 1.22;
  margin: 0; color: var(--verde-osc); letter-spacing: var(--track-titulo);
}
p  { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
figure, figcaption, blockquote { margin: 0; }
a  { color: inherit; text-decoration: none; }
img, svg, video { max-width: 100%; display: block; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; cursor: pointer; }

:focus-visible {
  outline: 3px solid var(--azul-claro);
  outline-offset: 2px;
  border-radius: 4px;
}

.container { width: min(100% - 40px, var(--ancho)); margin-inline: auto; }

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--azul-marino); color: #fff; padding: 12px 20px; border-radius: 0 0 var(--r-sm) 0;
}
.skip-link:focus { left: 0; }


.scroll-progress {
  position: fixed; inset: 0 auto auto 0; height: 2px; width: 100%;
  background: var(--mostaza);
  transform: scaleX(0); transform-origin: 0 50%; will-change: transform;
  z-index: 120; transition: transform var(--t-rapido) linear;
}


.section { padding: var(--s-10) 0; position: relative; }
.section + .section { padding-top: var(--s-10); }


.eyebrow {
  font-family: var(--f-display);
  font-size: .92rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--azul); margin: 0 0 var(--s-4);
}
.eyebrow.light { color: var(--azul); }

.section-title {
  font-size: clamp(1.9rem, 3.9vw, 3rem); line-height: 1.2; text-wrap: balance;
}
.section-title em { font-style: normal; color: var(--verde); }



.section-lead {
  font-size: 1.06rem; color: var(--texto); max-width: 64ch;
  margin-top: var(--s-5); line-height: 1.8;
}

.section-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: var(--s-6); margin-bottom: var(--s-8); flex-wrap: wrap;
}
.section-head > div:first-child { max-width: 820px; flex: 1 1 480px; }



.media {
  position: relative; overflow: hidden; border-radius: var(--r);
  background: linear-gradient(135deg, var(--verde-claro), var(--crema));
}
.media img { width: 100%; height: 100%; object-fit: cover; }

.media--plano img { padding: var(--s-4); }
.thumb--plano { padding: 3px; }


.deco { position: absolute; pointer-events: none; user-select: none; z-index: 0; }
.deco-blob   { top: -60px; right: -80px; width: min(38vw, 420px); opacity: .22; }
.deco-hoja   { width: min(20vw, 190px); opacity: .18; }
.deco-hoja--cta    { left: -30px; bottom: -20px; transform: rotate(18deg); opacity: .14; }
.deco-flor   { right: 1%; top: 40px; width: min(15vw, 150px); opacity: .16; }
.deco-flor--amenidades { right: auto; left: 1%; top: auto; bottom: 24px; transform: scaleX(-1); opacity: .13; }
.deco-hoja--modelos { right: 1.5%; top: 60px; transform: rotate(24deg); opacity: .12; }
.deco-bloque { left: -60px; bottom: -70px; width: min(14vw, 170px); opacity: .07; }
.deco-blob--ubicacion { top: auto; right: -110px; bottom: -90px; width: min(28vw, 320px); opacity: .12; }


.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  font-family: var(--f-display); font-weight: 600; font-size: .94rem;
  letter-spacing: 0; line-height: 1;
  padding: 0 30px; height: 52px;
  border: 1.5px solid transparent; border-radius: var(--r-sm);
  cursor: pointer; text-align: center; white-space: nowrap;
  box-shadow: none; text-decoration: none;
  transition: background-color var(--t-rapido) var(--ease), color var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease);
}
.btn svg { width: 18px; height: 18px; flex: none; }
.btn:active { transform: scale(.97); }
.btn:focus-visible { outline: 3px solid var(--azul); outline-offset: 2px; }


.btn-primary {
  background: var(--mostaza); border-color: var(--mostaza); color: var(--texto);
  font-size: 1rem; font-weight: 700;
}
.btn-primary:hover { background: var(--mostaza-hover); border-color: var(--mostaza-hover); color: var(--texto); }


.btn-secondary { background: var(--azul-prof); border-color: var(--azul-prof); color: #fff; }
.btn-secondary:hover { background: var(--azul); border-color: var(--azul); color: #fff; }


.btn-outline { background: transparent; border-color: var(--azul); color: var(--azul); }
.btn-outline:hover { background: var(--azul-frio); border-color: var(--azul-prof); color: var(--azul-prof); }


.btn-ghost { background: transparent; border-color: rgba(255,255,255,.7); color: #fff; }
.btn-ghost:hover { background: #fff; border-color: #fff; color: var(--azul-prof); }


.btn-wa { background: var(--whatsapp); border-color: var(--whatsapp); color: var(--whatsapp-texto); }
.btn-wa:hover { background: var(--whatsapp-osc); border-color: var(--whatsapp-osc); color: #fff; }


.btn-sm { height: 44px; padding: 0 22px; font-size: .88rem; }
.btn-lg { height: 58px; padding: 0 36px; font-size: 1rem; }
.btn-primary.btn-sm { font-size: .95rem; }
.btn-full { width: 100%; }

.wa-ico {
  width: 19px; height: 19px; flex: 0 0 19px; display: inline-block;
  background: currentColor;
  -webkit-mask: var(--wa-mask) center/contain no-repeat;
          mask: var(--wa-mask) center/contain no-repeat;
}
:root {
  --wa-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.75.46 3.45 1.32 4.95L2 22l5.25-1.38a9.9 9.9 0 004.79 1.22h.01c5.46 0 9.91-4.45 9.91-9.91C21.96 6.45 17.5 2 12.04 2zm5.8 14.14c-.24.68-1.42 1.31-1.95 1.35-.5.04-.98.22-3.3-.69-2.78-1.09-4.55-3.94-4.69-4.12-.14-.18-1.13-1.5-1.13-2.86s.72-2.03.97-2.31c.25-.28.55-.35.73-.35h.52c.17 0 .4-.06.62.48.24.57.8 1.96.87 2.1.07.14.12.31.02.49-.09.18-.14.29-.28.45l-.42.48c-.14.14-.28.29-.12.57.16.28.72 1.18 1.54 1.91 1.06.94 1.95 1.23 2.23 1.37.28.14.44.12.6-.07.17-.19.7-.81.88-1.09.19-.28.37-.23.62-.14.25.09 1.6.75 1.87.89.28.14.46.21.53.32.07.12.07.66-.17 1.34z'/%3E%3C/svg%3E");
}



.model-estado, .model-badge {
  font-family: var(--f-display); font-size: .95rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
}
.estado--verde { color: var(--verde-fin); }
.estado--rojo  { color: var(--error); }
.estado--azul  { color: var(--verde-oliva); }
.estado--ambar { color: var(--error); }
.model-badge   { color: var(--azul); }


.lead-form { display: grid; gap: var(--s-4); }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3); }
.field { display: grid; gap: 6px; }


.field label {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  color: var(--texto-medio); letter-spacing: .01em;
}
.field .req { color: var(--error); }

.field input, .field select, .field textarea {

  font: inherit; font-size: 1rem; color: var(--texto);
  padding: 14px 16px;
  border: 1.5px solid var(--linea); border-radius: var(--r-sm);
  background: #fff; width: 100%;
  transition: border-color var(--t-rapido) var(--ease), box-shadow var(--t-rapido) var(--ease);
}
.field select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath fill='none' stroke='%234A4D45' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M1 1l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center;
  padding-right: 38px;
}
.field input:focus, .field select:focus {
  outline: none; border-color: var(--verde);

  box-shadow: 0 0 0 4px rgba(44,75,155,.38);
}
.field input.invalid, .field select.invalid { border-color: var(--error); }

.field-help { font-size: 1rem; font-weight: 600; color: var(--texto-suave); margin: 0; }
.field-error { font-size: .92rem; font-weight: 700; color: var(--error); min-height: 0; }
.field-error:empty { display: none; }


.checkbox {
  display: grid; grid-template-columns: 20px 1fr; gap: 10px; align-items: start;
  font-size: .95rem; font-weight: 600; color: var(--texto); line-height: 1.55; cursor: pointer;
}
.checkbox input { width: 20px; height: 20px; margin: 0; accent-color: var(--verde); cursor: pointer; }

.form-title { font-size: 1.9rem; margin-bottom: 6px; }
.form-sub   { font-size: .9rem; font-weight: 600; color: var(--texto-medio); margin-bottom: var(--s-2); }

.hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

.form-ok {
  background: var(--verde-claro); border: 1.5px solid rgba(44,75,155,.35); color: var(--verde-osc);
  padding: var(--s-6); border-radius: var(--r); text-align: center;
  font-family: var(--f-display); font-weight: 600;
}


.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255,255,255,.97);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--gris-borde);
  transition: box-shadow var(--t-rapido) var(--ease);
}
.site-header.is-scrolled { box-shadow: var(--sombra-sm); }

.header-inner {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-5);
  min-height: 78px;
}
.brand { display: flex; align-items: center; flex: none; }
.brand-logo { height: 44px; width: auto; }

.header-center { display: flex; flex-direction: column; align-items: center; gap: 4px; }


.header-utility { display: flex; align-items: center; justify-content: center; gap: var(--s-3); flex-wrap: wrap; font-size: .88rem; font-weight: 600; }
.hu-item { display: inline-flex; align-items: center; gap: 6px; color: var(--texto-medio); }

.hu-item svg { width: 13px; height: 13px; flex: none; color: var(--azul-claro); stroke-width: 1.7; }
.hu-address:hover { color: var(--azul-marino); text-decoration: underline; }
.hu-sep { width: 1px; height: 12px; background: var(--gris-borde); }
.hu-horario-corto { display: none; }

.nav-desktop { display: flex; align-items: center; gap: var(--s-5); }
.nav-desktop a {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  color: var(--azul-marino); padding: 6px 0; position: relative;
}
.nav-desktop a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
  background: var(--naranja); transform: scaleX(0); transform-origin: left;
  transition: transform var(--t-rapido) var(--ease);
}
.nav-desktop a.is-active::after { transform: scaleX(1); }
@media (hover: hover) { .nav-desktop a:hover::after { transform: scaleX(1); } }

.header-actions { display: flex; align-items: center; gap: var(--s-3); flex: none; }

.menu-toggle {
  display: none; flex-direction: column; gap: 5px; justify-content: center;
  width: 44px; height: 44px; padding: 10px; background: none; border: 0;
}
.menu-toggle span { display: block; height: 2px; background: var(--azul-marino); border-radius: 2px; }


.mobile-menu {
  position: fixed; inset: 0; z-index: 130; background: #fff;
  transform: translateX(100%); transition: transform var(--t-medio) var(--ease);
  overflow-y: auto; padding-bottom: var(--s-8); visibility: hidden;
}
.mobile-menu.is-open { transform: translateX(0); visibility: visible; }
.mobile-menu-head { display: flex; align-items: center; justify-content: space-between; min-height: 76px; border-bottom: 1px solid var(--gris-borde); }
.mobile-menu-head .brand-logo { height: 42px; }
.menu-close { background: none; border: 0; font-size: 2.2rem; line-height: 1; color: var(--azul-marino); padding: 4px 10px; }
.mobile-menu-contact { display: grid; gap: 6px; padding-block: var(--s-4); border-bottom: 1px solid var(--gris-borde); }
.mm-line { font-size: .95rem; font-weight: 600; color: var(--texto-medio); }
.mm-address { color: var(--azul-marino); font-weight: 600; }
.mm-address:hover { text-decoration: underline; }
.mobile-menu-nav { display: grid; gap: var(--s-2); padding-top: var(--s-5); }
.mobile-menu-nav > a:not(.btn) {
  font-family: var(--f-display); font-weight: 600; font-size: 1.05rem;
  color: var(--azul-marino); padding: 14px 0; border-bottom: 1px solid var(--gris-borde);
}
.mobile-menu-nav .btn { margin-top: var(--s-3); }




.hero { position: relative; overflow: hidden; padding: var(--s-9) 0 var(--s-9); background: var(--crema); }
.hero-media {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transform: scale(1.04);
}


.hero-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(100deg, rgba(39,61,142,.74) 0%, rgba(39,61,142,.60) 40%, rgba(39,61,142,.16) 74%, rgba(39,61,142,.07) 100%);
}
.hero .deco-blob { z-index: 1; opacity: .30; }

.hero-grid {
  position: relative; z-index: 2;
  display: grid; grid-template-columns: 1.12fr .88fr; gap: var(--s-7); align-items: center;
}
.hero-copy { color: #fff; max-width: 48ch; }

.hero-eyebrow {
  font-family: var(--f-display); font-size: .875rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase; color: #fff; margin-bottom: var(--s-3);
}
.hero-title {
  color: #fff; font-size: clamp(2.3rem, 4.8vw, 3.7rem); font-weight: var(--peso-titulo);
  line-height: 1.18; margin-bottom: var(--s-5); text-wrap: balance;
}
.hero-lead {
  color: rgba(255,255,255,.92); font-size: 1.06rem; line-height: 1.8;
  margin-bottom: var(--s-6); max-width: 46ch;

  text-shadow: 0 1px 8px rgba(39,61,142,.9);
}
.hero-actions { display: flex; gap: var(--s-3); flex-wrap: wrap; margin-bottom: var(--s-6); }


.hero-form-card {
  background: #fff; border-radius: var(--r-lg); padding: var(--s-7);

  box-shadow: inset 0 3px 0 var(--mostaza), var(--sombra-lg);
}


.stats-strip { background: var(--crema); border-bottom: 1px solid rgba(39,61,142,.08); }
.stats-inner {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: var(--s-4); padding: var(--s-5) 0;
}
.stat { text-align: center; padding-inline: var(--s-3); }
.stat + .stat { border-left: 1px solid rgba(39,61,142,.14); }

.stat-num {
  font-family: var(--f-display); font-weight: 700; font-size: clamp(1rem, 2vw, 1.32rem);
  color: var(--azul-marino); line-height: 1.2; font-variant-numeric: tabular-nums;
}
.stat-label { font-size: .95rem; font-weight: 600; color: var(--texto-medio); margin-top: 3px; }


.pilares-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-5);
  margin-bottom: var(--s-8);
}
.pilar {

  border-top: 2px solid var(--amarillo); padding: var(--s-4) 0 0;
  display: grid; gap: var(--s-3); align-content: start;
}
.pilar-ico { color: var(--azul); display: grid; place-items: start; }
.pilar-ico svg { width: 30px; height: 30px; }
.pilar-nombre { font-size: 1.15rem; color: var(--verde-osc); }
.pilar-texto { font-size: .95rem; font-weight: 600; color: var(--texto-medio); line-height: 1.6; margin: 0; }


.subblock-title {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo);
  color: var(--verde-osc); font-size: clamp(1.3rem, 1.05rem + 1.1vw, 1.7rem); line-height: 1.25; margin: 0 0 10px;
}
.subblock-title em { font-style: normal; color: var(--verde); }
.subblock-text { color: var(--texto-medio); font-weight: 600; font-size: .96rem; line-height: 1.7; margin: 0; max-width: 52ch; }


.proyecto { background: var(--crema); border-top: 1px solid var(--linea); overflow: hidden; }


.proyecto-acceso { margin: var(--s-9) 0 0; }






.plan-maestro-wrap { position: relative; width: min(100% - 40px, 1560px); margin-inline: auto; margin-bottom: var(--s-6); }
.plan-maestro-wrap::before {
  content: ""; position: absolute; pointer-events: none; z-index: 0;
  left: -26px; bottom: -34px; width: min(15vw, 160px); aspect-ratio: 358/506;
  background: url("assets/deco/cs-deco-hoja.svg") center/contain no-repeat;
  opacity: .13; transform: rotate(-10deg);
}
@media (max-width: 640px) {
  .plan-maestro-wrap::before { display: none; }
}
.plan-maestro { margin: 0; }
.plan-maestro-media { position: relative; overflow: hidden; cursor: zoom-in; }
.plan-maestro-media img { display: block; width: 100%; height: auto; }
.plan-maestro-zoom {
  position: absolute; right: var(--s-4); bottom: var(--s-4);
  display: flex; align-items: center; gap: 8px;
  background: rgba(39,61,142,.88); color: #fff; border: 0; border-radius: var(--r-sm);
  padding: 10px 18px; font-family: var(--f-display); font-size: .92rem; font-weight: 600;
  box-shadow: 0 2px 8px rgba(0,0,0,.18);
}
.plan-maestro-zoom svg { width: 16px; height: 16px; }
.plan-maestro-pie:empty { display: none; }
.plan-maestro-pie {
  font-size: .92rem; font-weight: 600; color: var(--texto-medio); margin-top: var(--s-3); padding-inline: var(--s-2);
}
.proyecto-datos {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-5);
  margin-top: var(--s-6); border-top: 1px solid var(--gris-borde); padding-top: var(--s-5);
}
.proyecto-datos li { display: grid; gap: 2px; }
.proy-dato-val { font-family: var(--f-display); font-weight: 700; font-size: 1.05rem; color: var(--azul-marino); font-variant-numeric: tabular-nums; }
.proy-dato-lab { font-size: .92rem; font-weight: 700; color: var(--texto-medio); }


.acceso-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: var(--s-8); align-items: center; }
.acceso-media { aspect-ratio: 4/3; margin: 0; border-radius: var(--r); overflow: hidden; background: var(--crema-suave); }
.acceso-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.acceso-titulo { font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo); color: var(--verde-osc); font-size: clamp(1.3rem, 1.05rem + 1.1vw, 1.7rem); line-height: 1.25; margin: 0 0 10px; }
.acceso-texto { color: var(--texto-medio); font-weight: 600; font-size: .96rem; line-height: 1.7; margin: 0; max-width: 52ch; }
.acceso-copy { max-width: 46ch; }


.modelos { background: var(--blanco); padding-bottom: 0; overflow: hidden; }
.modelos .models-note { padding-block: var(--s-7) var(--s-9); margin-top: 0; }


.etapas-bloques { display: grid; }
.etapas-bloques > * { min-width: 0; }
.etapa-bloque { min-width: 0; padding: var(--s-8) 0; }
.etapa-bloque:nth-child(odd)  { background: var(--blanco); }
.etapa-bloque:nth-child(even) { background: var(--crema-suave); }
.etapa-bloque:nth-child(even) .model-gallery-main,
.etapa-bloque:nth-child(even) .model-thumbs button { background: var(--crema-suave); }
.etapa-bloque-head { margin-bottom: var(--s-5); }
.etapa-bloque-titulo {
  font-size: 2.1rem; letter-spacing: 0;
  padding-bottom: var(--s-3); border-bottom: 2px solid var(--mostaza);
  display: inline-block;
}
.etapa-bloque:nth-child(even) .etapa-bloque-titulo { border-bottom-color: var(--verde-oliva); }
.etapa-bloque:nth-child(even) .models-tabs { border-bottom-color: var(--linea); }
.etapa-bloque:nth-child(even) .model-specs,
.etapa-bloque:nth-child(even) .model-ambientes { border-color: var(--linea); }
.etapa-bloque-claim { font-family: var(--f-display); font-weight: 500; color: var(--verde); font-size: .97rem; margin: var(--s-3) 0 0; }


.models-tabs {
  display: flex; gap: var(--s-5); margin-bottom: var(--s-7);
  overflow-x: auto; overflow-y: hidden;
  border-bottom: 1px solid var(--gris-borde);
}

.models-tabs button {
  flex: none; font-family: var(--f-display); font-weight: 500; font-size: 1rem;
  padding: 0 0 16px; border: 0; background: transparent; color: var(--texto-suave);
  white-space: nowrap; border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease);
}
.models-tabs button:hover { color: var(--verde-osc); border-bottom-color: var(--linea); }
.models-tabs button[aria-selected="true"] {
  font-weight: 600; color: var(--verde-osc); border-bottom-color: var(--mostaza);
}
.models-tabs .tab-area { font-weight: 600; font-size: .92rem; color: var(--texto-medio); margin-left: 8px; }
.models-tabs button[aria-selected="true"] .tab-area { color: var(--azul); font-weight: 700; }



.model-panel { display: none; }

.model-panel.is-active { display: block; animation: fadeUp var(--t-rapido) var(--ease) both; }
.model-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--s-7); align-items: start; }
.model-grid > * { min-width: 0; }

.model-gallery { position: sticky; top: 148px; }
.model-gallery-main { position: relative; aspect-ratio: 16/9; overflow: hidden; background: var(--crema-suave); border-radius: var(--r); }
.model-gallery-main .media { width: 100%; height: 100%; background: transparent; }

.model-gallery-main .media img { object-fit: cover; }
.model-gallery-main .media--plano img { object-fit: contain; }


.gal-nav {
  position: absolute; bottom: 14px; width: 46px; height: 46px; border-radius: 50%;
  display: grid; place-items: center; border: 1px solid rgba(255,255,255,.6);
  background: rgba(255,255,255,.88); color: var(--verde-osc);
  backdrop-filter: blur(4px);
  transition: background-color var(--t-rapido) var(--ease), color var(--t-rapido) var(--ease);

  min-width: 44px; min-height: 44px;
}
.gal-nav:hover { background: var(--mostaza); color: var(--verde-osc); }
.gal-nav svg { width: 20px; height: 20px; }

.gal-prev { right: 68px; }
.gal-next { right: 14px; }

.model-gallery-bar {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: var(--s-4); margin-top: var(--s-3);
}
.model-gallery-caption {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--texto-medio);
  margin: 0;
}
.model-gallery-count {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  color: var(--texto-medio); margin: 0; white-space: nowrap;
}
.model-gallery-count span { color: var(--azul-marino); }
.model-thumbs { display: flex; gap: 8px; margin-top: var(--s-3); overflow-x: auto; overflow-y: hidden; padding-bottom: 4px; }
.model-thumbs button {
  flex: none; width: 96px; height: 66px; padding: 0; overflow: hidden;
  border: 0; border-bottom: 2px solid transparent; border-radius: var(--r-sm);
  background: var(--crema-suave);
  transition: border-color var(--t-rapido) var(--ease), opacity var(--t-rapido) var(--ease); opacity: .6;
}
.model-thumbs button img { width: 100%; height: 100%; object-fit: cover; }
.model-thumbs button img.thumb--plano { object-fit: contain; }
.model-thumbs button:hover { opacity: 1; }
.model-thumbs button[aria-selected="true"] { border-bottom-color: var(--mostaza); opacity: 1; }
@media (max-width: 640px) {
  .model-thumbs button { width: 76px; height: 54px; }
  .gal-nav { width: 42px; height: 42px; }
  .gal-prev { right: 42px; }
}

.model-info { display: grid; gap: var(--s-5); min-width: 0; }
.model-info-head { display: flex; align-items: center; gap: var(--s-4); flex-wrap: wrap; margin: 0 0 6px; }
.model-info h3 { font-size: clamp(1.7rem, 3vw, 2.2rem); text-wrap: balance; }
.model-etapa {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--texto-medio);
}
.model-plantas {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--texto-medio);
  margin: 6px 0 0;
}



.model-specs {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-4) var(--s-5);
  border-top: 1px solid var(--gris-borde); border-bottom: 1px solid var(--gris-borde);
  padding: var(--s-5) 0;
}
.spec { display: flex; align-items: center; gap: 10px; min-width: 0; }
.spec-ico { color: var(--verde); display: block; flex: none; }
.spec { flex-wrap: wrap; }
.spec-ico svg { width: 21px; height: 21px; }
.spec-val { font-family: var(--f-display); font-weight: 600; font-size: 1.02rem; color: var(--verde-osc); font-variant-numeric: tabular-nums; }
.spec-lab { font-size: .92rem; font-weight: 600; color: var(--texto-medio); }


.model-precio { display: grid; gap: 6px; justify-items: start; margin: 0; }
.model-precio-val { font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo); font-size: 3rem; color: var(--verde-osc); line-height: 1; font-variant-numeric: tabular-nums; }

.model-precio-lab {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase; color: var(--azul);
}

.model-precio--vendido .model-precio-val { text-decoration: line-through; }

.model-actions { display: flex; gap: var(--s-5); flex-wrap: wrap; align-items: center; }

.models-note { font-size: .8rem; font-weight: 600; color: var(--texto); letter-spacing: .01em; margin-top: var(--s-5); }

.etapa-empty { border-top: 1px solid var(--gris-borde); padding: var(--s-7) 0; color: var(--texto-medio); }
.etapa-empty .btn { margin-top: var(--s-4); }


.amenidades { background: var(--crema); }

.amen-tabs { margin-bottom: var(--s-6); }

.amen-hero { position: relative; margin: 0 0 var(--s-5); overflow: hidden; border-radius: var(--r-lg); }

.amen-hero .amen-hero-img { aspect-ratio: 21/9; border-radius: 0; }
.amen-hero-cap {
  position: absolute; inset: auto 0 0 0;
  padding: var(--s-7) var(--s-6) var(--s-6);
  background: linear-gradient(transparent, rgba(39,61,142,.84));
  color: #fff; display: grid; gap: 7px; max-width: 46ch;
}

.amen-hero-badge {
  font-family: var(--f-display); font-size: .875rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase; color: #fff;

  text-shadow: 0 1px 8px rgba(39,61,142,.9);
}
.amen-hero-nombre {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo);
  font-size: clamp(1.4rem, 1.05rem + 1.5vw, 2rem); line-height: 1.16; color: #fff;
}
.amen-hero-texto { font-family: var(--f-texto); font-size: 1rem; line-height: 1.55; color: #fff; }

.amen-teaser-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-4); }
.amen-mini { margin: 0; }
.amen-mini-img { aspect-ratio: 4/3; }

.media.amen-sinfoto, .sp-media.amen-sinfoto {
  display: flex; align-items: center; justify-content: center;
  background: var(--crema-suave);
}
.amen-sinfoto svg { width: 32%; height: 32%; color: var(--verde-osc); opacity: .85; }
.amen-mini-nombre {
  display: block; margin-top: var(--s-3);
  font-family: var(--f-display); font-weight: 600; font-size: .92rem; color: var(--verde-osc);
}


.amen-count-card {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
  aspect-ratio: 4/3; padding: var(--s-5); border-radius: var(--r);
  background: var(--azul-prof); color: var(--blanco); text-decoration: none;
  transition: background-color var(--t-rapido) var(--ease);
}
.amen-count-card:hover { background: var(--azul); }
.amen-count-num {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo);
  font-size: clamp(2.1rem, 1.6rem + 1.6vw, 2.8rem); line-height: 1; color: var(--mostaza);
}
.amen-count-lab { font-family: var(--f-texto); font-size: .92rem; font-weight: 600; line-height: 1.35; color: var(--blanco); margin-top: 4px; }
.amen-count-link {
  margin-top: auto; display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--f-display); font-weight: 700; font-size: .9rem; letter-spacing: .04em; color: var(--blanco);
}
.amen-count-link svg { width: 15px; height: 15px; }


.ubicacion { background: var(--blanco); overflow: hidden; }

.ubic-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-7); align-items: stretch; }
.ubic-map { overflow: hidden; background: transparent; }
.ubic-map-art { width: 100%; height: auto; }

.ubic-info { display: grid; grid-template-rows: auto 1fr auto; gap: var(--s-5); }
.ubic-info-head p {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--azul); margin: 0 0 4px;
}
.ubic-info-head strong { font-family: var(--f-display); font-size: 1.1rem; color: var(--azul-marino); line-height: 1.35; }
.ubic-points { display: grid; gap: var(--s-3); align-content: start; }
.ubic-points li { display: flex; align-items: center; gap: var(--s-3); padding-bottom: var(--s-3); border-bottom: 1px solid var(--gris-borde); }
.ubic-pt-ico { flex: none; color: var(--azul-claro); display: block; }
.ubic-pt-ico svg { width: 21px; height: 21px; }
.ubic-pt-txt { font-size: .93rem; color: var(--texto); }

.ubic-pt-time { font-family: var(--f-display); font-weight: 600; font-size: .92rem; color: var(--azul); margin-left: auto; white-space: nowrap; }
.ubic-actions { display: flex; gap: var(--s-6); flex-wrap: wrap; align-items: center; }
.btn-map svg { width: 18px; height: 18px; }




.tray-head { margin: 0; }

.tray-stats { display: flex; flex-wrap: wrap; gap: 36px; margin-top: 22px; }
.tray-stat { display: flex; flex-direction: column; }
.tray-stat-num {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo); line-height: 1;
  font-size: clamp(2rem, 1.4rem + 1.6vw, 2.8rem); color: var(--verde-osc); font-variant-numeric: tabular-nums;
}
.tray-stat-lbl { font-size: .86rem; color: var(--texto-medio); margin-top: 4px; }

.tray-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 32px; }
.tray-card { margin: 0; }
.tray-img {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; padding: 22px 12px; min-height: 132px; border-radius: var(--r-lg);
  background: transparent; border: 0; box-shadow: none; overflow: visible;
  transition: transform var(--t-medio) var(--ease);
}
.tray-card:hover .tray-img { transform: translateY(-4px); }
.tray-logo { position: static; width: 100%; max-width: 210px; height: auto; max-height: none; }
.tray-name {
  font-family: var(--f-display); font-size: .98rem; font-weight: 400;
  color: var(--texto); line-height: 1.3; text-align: center;
}
@media (max-width: 900px) { .tray-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
  .tray-grid { grid-template-columns: 1fr; max-width: 360px; margin-inline: auto; }
  .tray-stats { gap: 24px; }
}


.tray-enlace {
  display: block; cursor: pointer; text-decoration: none;
  transition: opacity var(--t-rapido) var(--ease);
}
.tray-enlace:hover { opacity: .78; }
.tray-enlace:focus-visible { outline: 2px solid var(--azul); outline-offset: 3px; border-radius: 2px; }
.tray-card.es-enlazada { cursor: pointer; }
@media (prefers-reduced-motion: reduce) {
  .tray-enlace { transition: none; }
  .tray-card:hover .tray-img { transform: none; }
}



.referidos-banner {
  background: var(--verde-claro); color: var(--verde-osc); padding: var(--s-7) 0;
  border-block: 1px solid rgba(44,75,155,.16);
}
.referidos-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--s-6); flex-wrap: wrap; }
.referidos-eyebrow { font-family: var(--f-display); font-size: .92rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--azul); margin: 0 0 6px; }
.referidos-title { color: var(--verde-osc); font-size: 2rem; margin-bottom: 6px; }
.referidos-sub { color: var(--texto); font-size: 1.03rem; margin: 0; }


.contacto-faq { margin-top: var(--s-9); padding-top: var(--s-8); border-top: 1px solid var(--linea); }
.faq-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: var(--s-8); align-items: start; }

.faq-intro { position: sticky; top: 160px; display: flex; flex-direction: column; justify-content: center; }
.faq-intro .btn { margin-top: var(--s-5); }
.faq-list { display: grid; }
.faq-item { border-bottom: 1px solid var(--gris-borde); }
.faq-item:first-child { border-top: 1px solid var(--gris-borde); }
.faq-q {
  width: 100%; text-align: left; background: none; border: 0;
  font-family: var(--f-display); font-weight: 500; font-size: 1.04rem; color: var(--verde-osc);
  padding: var(--s-5) 0; display: flex; align-items: center; justify-content: space-between; gap: var(--s-4);
}
.faq-q span:first-child { text-wrap: balance; }
.faq-q:hover { color: var(--verde); }
.faq-q .faq-ico { flex: none; width: 20px; height: 20px; position: relative; }

.faq-q .faq-ico::before, .faq-q .faq-ico::after {
  content: ""; position: absolute; inset: 50% 0 auto 0; height: 2px; background: currentColor;
  transition: transform var(--t-rapido) var(--ease);
}
.faq-q .faq-ico::after { transform: rotate(90deg); }
.faq-q[aria-expanded="true"] .faq-ico::after { transform: rotate(0); }

.faq-a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--t-rapido) var(--ease); color: var(--texto); font-size: 1.05rem; max-width: 66ch; }
.faq-a-inner { overflow: hidden; min-height: 0; padding: 0; contain: layout paint; }
.faq-a-inner > :last-child { margin-bottom: var(--s-5); }
.faq-item.is-open .faq-a { grid-template-rows: 1fr; }
.faq-a[hidden] { display: none; }
.faq-a p + ul, .faq-a ul + p { margin-top: var(--s-3); }

.faq-lista { display: grid; gap: 6px; }
.faq-lista li { position: relative; padding-left: 18px; }
.faq-lista li::before {
  content: ""; position: absolute; left: 2px; top: .62em;
  width: 6px; height: 6px; border-radius: 50%; background: var(--mostaza);
}



.cta-final { background: var(--crema); color: var(--texto); position: relative; overflow: hidden; border-top: 1px solid var(--linea); }
.cta-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-8); align-items: start; }

.cta-copy { display: flex; flex-direction: column; }
.cta-title { color: var(--verde-osc); font-size: clamp(1.9rem, 3.9vw, 3rem); margin-bottom: var(--s-5); line-height: 1.2; text-wrap: balance; }
.cta-title em { font-style: normal; color: var(--verde); }

.cta-lead { color: var(--texto); margin-bottom: var(--s-6); font-size: 1.06rem; line-height: 1.8; max-width: 64ch; }
.cta-list { display: grid; gap: 10px; margin-bottom: var(--s-6); }
.cta-list li { font-size: 1.03rem; color: var(--texto); padding-left: 30px; position: relative; }
.cta-list li::before {
  content: ""; position: absolute; left: 0; top: 2px; width: 20px; height: 20px; border-radius: 50%;
  background: var(--ambar) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23273D8E' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round' d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/12px no-repeat;
}
.cta-connect { margin-top: auto; padding-top: var(--s-6); }
.cta-social { display: flex; gap: var(--s-2); }
.cta-social a {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  background: #fff; color: var(--verde-osc); border: 1px solid var(--linea);
  transition: background-color var(--t-rapido) var(--ease), color var(--t-rapido) var(--ease);
}
.cta-social a:hover { background: var(--mostaza); color: var(--verde-osc); }
.cta-social svg { width: 20px; height: 20px; }
.cta-form-card { background: #fff; border-radius: var(--r-lg); padding: var(--s-7); box-shadow: var(--sombra); }
.cta-form-card .form-title, .cta-form-card .form-sub { color: var(--verde-osc); }
.cta-form-card .form-sub { color: var(--texto-medio); }


.site-footer { background: var(--azul-prof); color: var(--blanco); border-top: 1px solid var(--linea); }
.footer-logo { height: 38px; width: auto; }
.footer-item strong { color: var(--blanco); font-weight: 700; }
.footer-item a:hover { text-decoration: underline; }
.footer-social { display: flex; gap: var(--s-2); }
.footer-social a { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--verde-osc); border: 1px solid var(--linea); transition: background-color var(--t-rapido) var(--ease); }
.footer-social a:hover { background: var(--mostaza); color: var(--verde-osc); }
.footer-social svg { width: 18px; height: 18px; }


.wa-float {
  position: fixed; right: 22px; bottom: 22px; z-index: 90;
  width: 58px; height: 58px; border-radius: 50%;
  background: var(--whatsapp); color: var(--whatsapp-texto);
  display: grid; place-items: center;
  box-shadow: 0 6px 20px rgba(37,211,102,.42);

  --wa-alza: 0px;
  --wa-escala: 1;
  transform: translateY(var(--wa-alza)) scale(var(--wa-escala));
  transition: transform var(--t-medio) var(--ease), opacity var(--t-rapido) var(--ease);
}
.wa-float:hover { --wa-escala: 1.07; }

.wa-float.wa-float--cede { opacity: 0; pointer-events: none; transform: translateY(var(--wa-alza)) scale(.86); }
.wa-float .wa-ico { width: 30px; height: 30px; }

.mobile-cta {
  display: none; position: fixed; inset: auto 0 0 0; z-index: 95;
  gap: var(--s-2); padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  background: rgba(255,255,255,.97); backdrop-filter: blur(10px);
  border-top: 1px solid var(--gris-borde);
  transition: bottom var(--t-medio) var(--ease);
}
.mobile-cta .btn { flex: 1; min-height: 48px; font-size: .88rem; padding-inline: 12px; }

.mobile-cta .btn-primary { font-size: 1rem; }

.modal { position: fixed; inset: 0; z-index: 150; display: none; }
.modal.is-open { display: grid; place-items: center; padding: var(--s-4); }

.modal-backdrop { position: absolute; inset: 0; background: rgba(39,61,142,.72); backdrop-filter: blur(3px); }
.modal-card {
  position: relative; background: #fff; border-radius: 4px;
  width: min(100%, 720px); max-height: 90vh; overflow-y: auto; box-shadow: var(--sombra-lg);
}
.modal-head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); padding: var(--s-5) var(--s-6); border-bottom: 1px solid var(--gris-borde); position: sticky; top: 0; background: #fff; z-index: 1; }
.modal-title { font-size: 1.15rem; }

.modal-close {
  background: none; border: 0; font-size: 2rem; line-height: 1; color: var(--texto-medio);
  min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center;
  padding: 0;
}
.modal-close:hover { color: var(--azul-marino); }
.modal-body { padding: var(--s-6); }
.modal-body img { width: 100%; height: auto; border-radius: var(--r-sm); }
.modal-foot { padding: 0 var(--s-6) var(--s-6); }


.modal-card--ancho { width: min(100%, 1500px); }
.modal-card--ancho .modal-body img { border-radius: var(--r-sm); }

.plan-mapa--modal { width: min(96vw, 1500px); max-width: 100%; margin: 0 auto; }
.plan-mapa--modal .plan-img { border-radius: var(--r-sm); }


.modal-card--tour { width: min(100%, 1240px); max-height: 94vh; }
.modal-card--tour .modal-body--tour { border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; }
.modal-body--tour { position: relative; padding: 0; height: 74vh; background: var(--azul-prof); overflow: hidden; }
.modal-body--tour iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }




.models-tabs, .model-thumbs { scrollbar-width: thin; scrollbar-color: var(--gris) transparent; }
.models-tabs::-webkit-scrollbar, .model-thumbs::-webkit-scrollbar { height: 3px; }
.models-tabs::-webkit-scrollbar-track, .model-thumbs::-webkit-scrollbar-track { background: transparent; }
.models-tabs::-webkit-scrollbar-thumb, .model-thumbs::-webkit-scrollbar-thumb { background: var(--gris-borde); }
.models-tabs::-webkit-scrollbar-button, .model-thumbs::-webkit-scrollbar-button { display: none; width: 0; height: 0; }

input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type="number"] { -moz-appearance: textfield; }


@keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

.reveal { opacity: 0; transform: translateY(22px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1; transform: none; }
}




@media (max-width: 1080px) {
  .nav-desktop { gap: var(--s-4); }
  .proyecto-datos { grid-template-columns: repeat(2, 1fr); }
  .pilares-grid { grid-template-columns: repeat(2, 1fr); }
}


@media (max-width: 900px) {
  :root { --s-9: 64px; }
  .header-utility { gap: var(--s-2); }
  .header-utility .hu-horario { display: none; }
  .header-utility .hu-horario-corto { display: inline-flex; }
  .header-center { align-items: flex-end; }
  .nav-desktop { display: none; }
  .menu-toggle { display: flex; }
  .header-actions .btn { display: none; }

  .hero { padding-top: var(--s-7); }
  .hero-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .hero-copy { max-width: none; }
  .hero-form-card { padding: var(--s-5); }

  .stats-inner { grid-template-columns: repeat(2, 1fr); gap: var(--s-4) 0; }
  .stat:nth-child(odd) { border-left: 0; }
  .stat:nth-child(3), .stat:nth-child(4) { padding-top: var(--s-4); border-top: 1px solid rgba(39,61,142,.14); }

  .acceso-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .acceso-media { aspect-ratio: 16/10; }

  .model-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .model-gallery { position: static; }
  .ubic-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .faq-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .faq-intro { position: static; }
  .cta-grid { grid-template-columns: 1fr; gap: var(--s-6); }
  .footer-main { grid-template-columns: 1fr 1fr; gap: var(--s-6); }

  .wa-float { bottom: calc(88px + env(safe-area-inset-bottom)); width: 52px; height: 52px; }
  .wa-float .wa-ico { width: 27px; height: 27px; }
  .mobile-cta { display: flex; }
  body { padding-bottom: calc(78px + env(safe-area-inset-bottom)); }
}


@media (max-width: 640px) {
  :root { --s-9: 52px; --s-8: 44px; }
  .container { width: min(100% - 28px, var(--ancho)); }
  .plan-maestro-wrap { width: min(100% - 28px, 1560px); }
  .plan-maestro { padding: var(--s-2); }
  .plan-maestro-zoom { right: var(--s-3); bottom: var(--s-3); padding: 8px 14px; font-size: .92rem; }

  .header-utility { display: none; }
  .brand-logo { height: 36px; }
  .header-inner { min-height: 60px; }
  .etapa-bloque { padding: var(--s-7) 0; }
  .etapa-bloque-titulo { font-size: 1.1rem; }

  .section-head { margin-bottom: var(--s-6); }

  .hero-title { font-size: clamp(1.75rem, 7.5vw, 2.3rem); }
  .hero-lead { font-size: .98rem; }
  .hero-actions .btn { width: 100%; }
  .hero-form-card { padding: var(--s-5) var(--s-4); }

  .field-row { grid-template-columns: 1fr; }

  .proyecto-datos { grid-template-columns: 1fr 1fr; gap: var(--s-4); }
  .pilares-grid { grid-template-columns: 1fr; gap: var(--s-4); }
  .proyecto-acceso { padding: var(--s-5) var(--s-4); margin-bottom: var(--s-6); }
  .proyecto-trayectoria { padding: var(--s-6) var(--s-4); margin-top: var(--s-6); }
  .footer-creditos { gap: var(--s-5); }
  .models-tabs { gap: var(--s-4); }
  .models-tabs button { font-size: .88rem; }

  .model-specs { gap: var(--s-3) var(--s-4); }
  .model-actions .btn { flex: 1 1 100%; white-space: normal; height: auto; min-height: 48px; padding: 12px 18px; line-height: 1.3; }
  .model-precio-val { font-size: 1.8rem; }

  .amen-hero .amen-hero-img { aspect-ratio: 4/3; }
  .amen-hero-cap { padding: var(--s-6) var(--s-4) var(--s-4); max-width: none; }

  .amenidades .amen-hero-texto { display: none; }
  .amen-teaser-grid { grid-template-columns: repeat(2, 1fr); }

  .referidos-inner { flex-direction: column; align-items: flex-start; }
  .referidos-cta { width: 100%; }

  .cta-form-card { padding: var(--s-5) var(--s-4); }
  .footer-main { grid-template-columns: 1fr; gap: var(--s-6); }
  .modal-body, .modal-head, .modal-foot { padding-inline: var(--s-4); }

  .deco-blob { width: 60vw; top: -30px; right: -60px; }
  .deco-flor, .deco-hoja { display: none; }


  .hero-media { background-position: 88% center; }

  #heroMedia {
    background-image: url('assets/img/cs_hero_malecon_movil.webp') !important;
    background-position: center;
  }
}




:root { --ck-h: 0px; }
.ck-modal{
  position:fixed; left:0; right:0; bottom:0; z-index:140;
  transform:translateY(110%); transition:transform var(--t-lento) var(--ease);
}
.ck-modal.is-in{ transform:none; }
.ck-back{ display:none; }
.ck-card{
  position:relative;
  background:var(--blanco); border-top:1px solid var(--linea);
  box-shadow:0 -8px 30px rgba(39,61,142,.14);
  max-width:var(--maxw); margin:0 auto;
  border-radius:var(--r-lg) var(--r-lg) 0 0;
  padding:12px 26px;
  display:grid; grid-template-columns:1fr auto auto; gap:2px 20px;
  align-items:center;
  max-height:80vh; overflow-y:auto;
}

.ck-txt{
  grid-column:1; grid-row:1; margin:0;
  font-size:.95rem; font-weight:600; line-height:1.45; color:var(--texto-suave); max-width:76ch;
}
.ck-txt strong{ color:var(--verde-osc); font-weight:700; }
.ck-link{ color:var(--verde-osc); text-decoration:underline; text-underline-offset:2px; white-space:nowrap; }
.ck-link:hover{ color:var(--verde); }


.ck-pop{
  position:fixed; inset:0; z-index:700;
  display:flex; align-items:center; justify-content:center; padding:20px;
  opacity:0; visibility:hidden; transition:opacity var(--t-medio) var(--ease), visibility var(--t-medio);
}
.ck-pop.is-in{ opacity:1; visibility:visible; }
.ck-pop-back{ position:absolute; inset:0; background:rgba(39,61,142,.42); backdrop-filter:blur(3px); }
.ck-pop-card{
  position:relative; z-index:1; width:100%; max-width:520px;
  background:var(--blanco); border-radius:var(--r-lg);
  box-shadow:0 24px 60px rgba(39,61,142,.3);
  padding:24px 26px 22px; max-height:88vh; overflow-y:auto;
  transform:translateY(12px) scale(.99); transition:transform var(--t-medio) var(--ease);
}
.ck-pop.is-in .ck-pop-card{ transform:none; }
.ck-pop-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:6px; }

.ck-pop-title{ margin:0; font-family:var(--f-titulo); font-weight:var(--peso-titulo); letter-spacing:var(--track-titulo); font-size:1.35rem; color:var(--verde-osc); }
.ck-pop-x{
  background:none; border:0; cursor:pointer; font-size:1.8rem; line-height:1;
  color:var(--texto-suave); width:40px; height:40px; border-radius:var(--r);
}
.ck-pop-x:hover{ color:var(--verde-osc); background:var(--crema); }
.ck-pop-acts{ display:flex; gap:12px; margin-top:20px; }
.ck-pop-acts .btn{ flex:1 1 0; min-height:46px; justify-content:center; font-size:1rem; }

.ck-pop-acts .ck-pop-save{
  background:var(--mostaza); border-color:var(--mostaza); color:var(--texto); font-weight:700;
  box-shadow:0 4px 14px rgba(238,184,52,.32);
}
.ck-pop-acts .ck-pop-save:hover{ background:var(--mostaza-hover); border-color:var(--mostaza-hover); color:var(--texto); }


.ck-cats{ margin:8px 0 0; border-top:1px solid var(--linea); }
.ck-cat{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:14px 0; cursor:pointer; border-bottom:1px solid var(--linea);
}
.ck-cat-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.ck-cat-txt strong{ font-size:.95rem; font-weight:700; color:var(--verde-osc); }
.ck-cat-txt small{ font-size:.95rem; font-weight:600; color:var(--texto-suave); line-height:1.4; }
.ck-cat input{ width:22px; height:22px; min-width:22px; accent-color:var(--verde); cursor:pointer; }
.ck-cat input:disabled{ opacity:.5; cursor:default; }
@media (max-width:560px){
  .ck-pop{ padding:14px; align-items:flex-end; }
  .ck-pop-card{ padding:20px 18px 18px; }
  .ck-pop-title{ font-size:1.2rem; }
  .ck-pop-acts{ flex-direction:column-reverse; }
}




.ck-acts{ grid-column:2 / -1; grid-row:1; display:flex; gap:10px; align-items:center; }
.ck-acts .btn{ min-height:42px; justify-content:center; white-space:nowrap; font-size:1rem; }

.ck-acts .ck-all{
  background:var(--mostaza); border-color:var(--mostaza); color:var(--texto); font-weight:700;
  box-shadow:0 4px 14px rgba(238,184,52,.32);
}
.ck-acts .ck-all:hover{ background:var(--mostaza-hover); border-color:var(--mostaza-hover); color:var(--texto); }


body:has(.ck-modal.is-in) .wa-float{ --wa-alza: calc(-1 * (var(--ck-h) + var(--s-3))); }
body:has(.ck-modal.is-in) .mobile-cta{ display: none; }
@media (max-width: 1080px) {

  body:has(.ck-modal.is-in) .wa-float{ --wa-alza: calc(-1 * var(--ck-h)); }
}

@media (max-width:900px){
  .ck-cats{ grid-template-columns:1fr; gap:0; }
}

@media (max-width:1000px){
  .ck-card{ grid-template-columns:1fr; padding:11px 20px; gap:7px; }
  .ck-txt{ grid-column:1; font-size:.92rem; }
  .ck-acts{ grid-column:1; grid-row:2; }

  .ck-acts .btn{ flex:1 1 0; min-height:38px; font-size:1rem; }
}

@media (max-width:480px){
  .ck-acts{ flex-wrap: wrap; }
  .ck-acts .btn{ flex: 1 1 100%; white-space: normal; }
}

@media (max-height:520px){
  .ck-card{ padding:9px 18px; gap:5px; }
  .ck-txt{ font-size:.92rem; line-height:1.35; }
  .ck-acts .btn{ min-height:34px; font-size:1rem; }
}

.ck-sm{ display:none; }





.sp-body { background: var(--crema); }
.sp-body main#sp { display: block; }


.sp-eyebrow {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--azul);
  margin: 0 0 14px;
}
.sp-eyebrow a { color: inherit; text-decoration: none; border-bottom: 1px solid currentColor; }
.sp-eyebrow a:hover { opacity: .7; }
.sp-title {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo);
  font-size: clamp(2.1rem, 5vw, 3.4rem); line-height: 1.06; color: var(--verde-osc); margin: 0 0 18px;
  text-wrap: balance;
}
.sp-h2 {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo);
  font-size: clamp(1.5rem, 3vw, 2.1rem); line-height: 1.14; color: var(--verde-osc); margin: 0 0 14px;
  text-wrap: balance;
}
.sp-lead { font-family: var(--f-texto); font-size: 1.05rem; line-height: 1.62; color: var(--texto); margin: 0 0 22px; max-width: 56ch; }
.sp-lead--ancho { max-width: 68ch; }
.sp-lead--centro { margin-left: auto; margin-right: auto; text-align: center; }
.sp-link {
  display: inline-block; font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .06em; color: var(--verde-osc); border-bottom: 1.5px solid var(--mostaza);
  padding-bottom: 2px; text-decoration: none; transition: color var(--t-rapido);
}
.sp-link:hover { color: var(--azul-prof); }

.sp-link--btn {
  border: 0; background: none; padding: 0; cursor: pointer; align-self: center;
  padding-block: 10px; margin-block: -10px;
}
.sp-disclaimer { font-family: var(--f-texto); font-size: .74rem; font-weight: 400; color: var(--texto-suave); text-align: right; margin: 16px 0 0; }
.sp-vacio { padding: 120px 24px; text-align: center; font-family: var(--f-texto); color: var(--texto-medio); }

.sp-sec { padding: clamp(56px, 8vw, 104px) 0; }


.sp-hero { background: var(--crema); padding: clamp(40px, 6vw, 76px) 0 clamp(48px, 7vw, 88px); }

.sp-hero--am { background: var(--crema); padding-bottom: clamp(24px, 3vw, 40px); }
.sp-fondo-blanco { background: var(--blanco); }
.sp-fondo-crema { background: var(--crema); }
.sp-fondo-suave { background: var(--crema-suave); }
.sp-interiores { background: var(--blanco); }

.sp-planos { background: var(--blanco); }
.sp-interiores + .sp-planos { border-top: 1px solid var(--linea); }
.sp-am-cierre { background: var(--crema-suave); }


.sp-hero-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); gap: clamp(28px, 5vw, 64px); align-items: center; }
.sp-hero-img { margin: 0; aspect-ratio: 16/9; border-radius: var(--r); }


.sp-hero-thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.sp-hero-thumbs button { padding: 0; border: 2px solid transparent; border-radius: var(--r-sm); overflow: hidden; width: 64px; height: 48px; cursor: pointer; background: none; flex: none; }
.sp-hero-thumbs button[aria-selected="true"] { border-color: var(--mostaza); }
.sp-hero-thumbs img { width: 100%; height: 100%; object-fit: cover; display: block; }

.sp-claim {
  font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: clamp(1.1rem, 2.1vw, 1.4rem);
  line-height: 1.28; color: var(--verde); margin: 0 0 14px; max-width: 30ch;
}


.sp-datos { list-style: none; margin: 0 0 10px; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 30px; }
.sp-dato { display: flex; flex-direction: column; gap: 2px; }
.sp-dato-num { font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.28rem; color: var(--verde-osc); line-height: 1.1; font-variant-numeric: tabular-nums; }
.sp-dato-txt { font-family: var(--f-texto); font-size: .92rem; font-weight: 700; letter-spacing: .02em; color: var(--texto-medio); }
.sp-nota-ficha {
  font-family: var(--f-texto); font-size: .92rem; font-weight: 700; color: var(--verde-osc);
  background: var(--mostaza-suave); display: inline-block; padding: 5px 12px; border-radius: var(--r-full);
  margin: 0 0 20px;
}

.sp-precio { font-family: var(--f-texto); margin: 0 0 22px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.sp-precio-lbl { font-size: .92rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--texto-medio); }
.sp-precio strong { font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.9rem; color: var(--verde-osc); font-variant-numeric: tabular-nums; }
.sp-precio strong.is-tachado { text-decoration: line-through; opacity: .6; }
.sp-precio-res { font-size: .95rem; font-weight: 600; color: var(--texto-medio); }
.sp-vendida {
  font-family: var(--f-texto); font-size: .95rem; font-weight: 700; letter-spacing: .04em;
  color: var(--error); margin: -8px 0 18px;
}
.sp-acciones { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }


.sp-media { display: block; position: relative; overflow: hidden; border-radius: var(--r); background: linear-gradient(135deg, var(--crema-suave) 0%, var(--verde-claro) 100%); }
.sp-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sp-media.is-broken img { display: none; }


.sp-galeria { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 18px; margin-top: 28px; }

.sp-gal-item { margin: 0; aspect-ratio: 16/9; }

.sp-gal-item::before {
  content: ""; position: absolute; inset: auto 0 0 0; height: 55%;
  background: linear-gradient(transparent, rgba(39,61,142,.75));
  pointer-events: none;
}
.sp-gal-item figcaption {
  position: absolute; left: 14px; bottom: 12px; color: #fff;
  font-family: var(--f-texto); font-size: .92rem; font-weight: 700;
  letter-spacing: .04em; text-transform: uppercase; text-shadow: 0 1px 6px rgba(39,61,142,.6);
}


.sp-planos-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 26px; margin-bottom: 40px; }

.sp-plano { margin: 0; }
.sp-plano-tag { font-family: var(--f-texto); font-size: .92rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--verde-osc); margin: 0 0 10px; }

.sp-plano .sp-media { background: none; border-radius: var(--r-sm); aspect-ratio: 4/3; }
.sp-plano .sp-media img { height: auto; object-fit: contain; }
.sp-plano-zoom { display: block; width: 100%; border: 0; background: none; padding: 0; cursor: zoom-in; }

.sp-planos .sp-volver-wrap { margin: clamp(30px, 4vw, 48px) 0 0; text-align: center; }
.sp-volver { display: inline-flex; align-items: center; gap: 9px; }
.sp-volver svg { width: 16px; height: 16px; }

.sp-ambientes-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 28px; }
.sp-ambientes h3 { font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.1rem; color: var(--verde-osc); margin: 0 0 12px; }
.sp-ambientes ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sp-ambientes li { font-family: var(--f-texto); font-size: .92rem; font-weight: 600; color: var(--texto-medio); padding-left: 20px; position: relative; }
.sp-ambientes li::before { content: ""; position: absolute; left: 0; top: .55em; width: 8px; height: 8px; border-radius: 50%; background: var(--mostaza); }


.sp-puente-in { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.1fr); gap: clamp(24px, 5vw, 56px); align-items: center; }
.sp-puente-img { margin: 0; aspect-ratio: 4/3; border-radius: var(--r); }


.sp-otros { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 20px; }
.sp-otro { text-decoration: none; display: block; }
.sp-otro-img { aspect-ratio: 4/3; margin-bottom: 10px; }
.sp-otro-img img { transition: transform .5s var(--ease); }
.sp-otro:hover .sp-otro-img img { transform: scale(1.05); }
.sp-otro-nom { display: block; font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.12rem; color: var(--verde-osc); }
.sp-otro-dato { display: block; font-family: var(--f-texto); font-size: .95rem; font-weight: 600; color: var(--texto-medio); margin-top: 2px; }


.sp-am-etapa + .sp-am-etapa { margin-top: 64px; }
.sp-am-etapa-head { margin-bottom: 24px; }
.sp-am-etapa-titulo { font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.3rem; color: var(--verde-osc); margin: 0 0 4px; }
.sp-am-etapa-claim { font-family: var(--f-texto); font-size: .95rem; font-weight: 600; color: var(--texto-medio); margin: 0; }

.sp-am-etapa-cifra { font-family: var(--f-texto); font-size: .95rem; font-weight: 600; color: var(--texto-medio); margin: 8px 0 0; }
.sp-am-etapa-cifra strong { font-family: var(--f-titulo); font-weight: var(--peso-titulo); color: var(--verde-osc); font-size: 1.2rem; margin-right: 4px; }


.sp-am-etapa .amen-hero { margin-bottom: 22px; }


.sp-am-mosaic { display: grid; grid-template-columns: repeat(6, 1fr); gap: 20px; }
.sp-am-tile { margin: 0; background: var(--blanco); border-radius: var(--r-lg); padding: 8px; box-shadow: var(--sombra-sm); grid-column: span 2; }
.sp-am-tile--md { grid-column: span 3; }
.sp-am-tile-img { aspect-ratio: 4/3; margin-bottom: 8px; border-radius: var(--r-sm); }
.sp-am-tile-grupo {
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--azul);
  display: block; padding: 0 4px; margin-top: 2px;
}
.sp-am-tile-nombre { font-family: var(--f-texto); font-size: .94rem; font-weight: 700; color: var(--verde-osc); display: block; padding: 0 4px 6px; }


.sp-faq-list { display: grid; gap: 2px; max-width: var(--lectura); }
.sp-faq-item { border-bottom: 1px solid var(--linea); }
.sp-faq-item summary {
  font-family: var(--f-titulo); font-weight: 700; font-size: 1rem; color: var(--verde-osc);
  padding: 16px 28px 16px 0; cursor: pointer; list-style: none; position: relative;
}
.sp-faq-item summary::-webkit-details-marker { display: none; }
.sp-faq-item summary::after {
  content: "+"; position: absolute; right: 0; top: 14px; font-size: 1.4rem; color: var(--azul); font-weight: 400;
}
.sp-faq-item[open] summary::after { content: "–"; }
.sp-faq-item p { font-family: var(--f-texto); font-weight: 600; font-size: .96rem; line-height: 1.6; color: var(--texto-medio); margin: 0 0 18px; }
.sp-faq-item ul { margin: 0 0 18px; padding-left: 20px; font-family: var(--f-texto); font-weight: 600; font-size: .94rem; line-height: 1.6; color: var(--texto-medio); }
.sp-am-cierre .sp-lead { font-family: var(--f-titulo); font-weight: 700; font-size: 1.3rem; color: var(--verde-osc); max-width: 44ch; }


.sp-contacto-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.92fr); gap: clamp(28px, 5vw, 64px); align-items: start; }


.model-ficha-link {
  display: inline-block; margin: 2px 0 16px;
  font-family: var(--f-display); font-size: .92rem; font-weight: 700;
  color: var(--verde-osc); text-decoration: none; border-bottom: 1.5px solid var(--mostaza);
  padding-bottom: 2px; transition: color var(--t-rapido);
}
.model-ficha-link:hover { color: var(--azul-prof); }


.legal-page { background: var(--crema-suave); padding: clamp(48px, 7vw, 92px) 0 clamp(64px, 9vw, 120px); }
.legal-page h1 { font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo); font-size: clamp(1.9rem, 4vw, 2.6rem); color: var(--verde-osc); margin: 0 0 8px; }
.legal-page .legal-fecha { font-family: var(--f-texto); font-size: .95rem; font-weight: 700; color: var(--texto-suave); margin: 0 0 40px; }
.legal-page h2 { font-family: var(--f-titulo); font-weight: 700; font-size: 1.2rem; color: var(--verde-osc); margin: 34px 0 12px; }
.legal-page p, .legal-page li { font-family: var(--f-texto); font-weight: 600; font-size: .98rem; line-height: 1.7; color: var(--texto-medio); }
.legal-page ul { margin: 0 0 16px; padding-left: 22px; }
.legal-page .legal-body { max-width: 74ch; }
.legal-page .sp-link { margin-top: 30px; }

@media (max-width: 900px) {
  .sp-hero-grid, .sp-puente-in, .sp-contacto-grid { grid-template-columns: 1fr; }
  .sp-hero-grid .sp-hero-img { order: -1; }
  .sp-am-mosaic { grid-template-columns: repeat(4, 1fr); }
  .sp-am-tile--md { grid-column: span 4; }
}
@media (max-width: 700px) {
  .sp-datos { gap: 10px 22px; }
  .sp-acciones .btn, .sp-acciones .btn-outline { width: 100%; justify-content: center; }
  .sp-disclaimer { text-align: left; }

  .sp-am-mosaic { grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .sp-am-tile { grid-column: span 1; }
  .sp-am-tile--md { grid-column: span 2; }
}



.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

.model-claim { margin: .15rem 0 0; font-size: .92rem; color: var(--texto-medio); font-weight: 600; text-wrap: balance; }


@media (pointer: coarse), (max-width: 1024px) {
  .model-ficha-link, .sp-link, .hu-item, .sp-crumbs a, .sp-migas a, .breadcrumbs a,
  .footer-redes a, .footer-social a, .footer-rrss a {
    min-height: 44px; display: inline-flex; align-items: center;
    padding-top: .55rem; padding-bottom: .55rem; margin-top: -.35rem; margin-bottom: -.35rem;
  }
  .footer-redes a, .footer-social a, .footer-rrss a { min-width: 44px; justify-content: center; }
}

@media (pointer: coarse), (max-width: 1024px) {
  .footer-nav a, .footer-copy a { padding-top: .6rem; padding-bottom: .6rem; margin-top: -.4rem; margin-bottom: -.4rem; }
  .sp-eyebrow a, .legal-body a, .checkbox a { padding-top: .6rem; padding-bottom: .6rem; }

  .sp-eyebrow a { border-bottom: 0; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
}


.cta-social-label { margin: var(--s-4) 0 var(--s-2); font-size: .82rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: inherit; opacity: .78; }
.sp-sec + .sp-sec { padding-top: clamp(40px, 5.5vw, 72px); }





.proyecto-head { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--s-8); align-items: end; margin-bottom: var(--s-8); }
.proyecto-head .section-lead { margin-bottom: 0; }
.proyecto-acciones { display: flex; flex-wrap: wrap; gap: var(--s-3); justify-content: flex-end; }
.pilares-grid { margin-bottom: 0; }


.plan-maestro-bleed { margin: var(--s-9) 0 0; background: #fff; width: 100%; }
.plan-maestro-bleed .plan-maestro-media { width: 100%; }
.plan-maestro-bleed img { width: 100%; height: auto; display: block; }
.plan-maestro-bleed + .container .proyecto-datos { border-top: 0; margin-top: 0; padding-top: var(--s-8); }
.plan-maestro-zoom { right: max(var(--s-5), calc((100vw - 1200px) / 2)); bottom: var(--s-5); }


.cta-banda { background: var(--azul); color: #fff; padding: var(--s-8) 0; position: relative; }
.cta-banda-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--s-7); flex-wrap: wrap; }
.cta-banda .eyebrow { color: var(--amarillo); margin-bottom: 8px; }
.cta-banda-title { color: #fff; font-size: clamp(1.7rem, 1.2rem + 2vw, 2.4rem); margin: 0 0 8px; line-height: 1.15; text-wrap: balance; }
.cta-banda-sub { color: rgba(255,255,255,.86); margin: 0; max-width: 54ch; font-size: 1.03rem; line-height: 1.7; }
.cta-banda-acciones { display: flex; gap: var(--s-3); flex-wrap: wrap; }


.avance { background: var(--crema); border-top: 1px solid var(--linea); }
.avance-grid, .entregas-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-6) var(--s-6); }
.entregas { background: var(--crema); }
.entregas-grid { grid-template-columns: repeat(3, 1fr); }
.foto-item { margin: 0; min-width: 0; }
.foto-item img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; border-radius: var(--r); background: var(--crema-suave); }
.foto-item--destacado { grid-column: 1 / -1; }
.foto-item--destacado img { aspect-ratio: 21 / 9; }
.foto-item figcaption { margin-top: var(--s-3); }
.foto-etapa { font-family: var(--f-display); font-weight: 700; font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: var(--azul); }
.foto-pie { font-weight: 600; color: var(--texto-medio); font-size: .96rem; margin-top: 4px; line-height: 1.5; }
.proof-updated { margin-top: var(--s-5); font-size: .9rem; font-weight: 600; color: var(--texto-medio); }
.proof-updated[hidden] { display: none; }


.faq { background: var(--blanco); }
.faq .faq-intro .section-lead { margin-bottom: 0; }
.respaldo { background: var(--azul-frio); position: relative; overflow: hidden; }
.respaldo .tray-head { max-width: 72ch; }

.cta-final { border-top: 0; }


.sp-puente-img { background: none; border: 0; box-shadow: none; padding: 0; }

@media (max-width: 1024px) {
  .proyecto-head { grid-template-columns: 1fr; align-items: start; }
  .proyecto-acciones { justify-content: flex-start; }
  .entregas-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .avance-grid, .entregas-grid { grid-template-columns: 1fr; }
  .foto-item--destacado img { aspect-ratio: 16 / 9; }
  .cta-banda-inner { flex-direction: column; align-items: flex-start; }
  .cta-banda-acciones .btn { width: 100%; justify-content: center; }
  .plan-maestro-zoom { right: var(--s-3); bottom: var(--s-3); }
}


.modal--visor, #visor, .visor-anim, .visor-anim-base {
  --paper: var(--blanco); --display: var(--f-display); --body: var(--f-texto);
  --ink: var(--texto); --ink-soft: var(--texto-medio); --line: var(--linea);
  --green: var(--azul); --green-soft: var(--azul-frio); --green-ink: var(--azul-prof);
  --pase: .32s;
}
.visor{
  position:relative; display:flex; align-items:center; justify-content:center;
  gap:clamp(8px, 2vw, 24px); padding:0 clamp(8px, 3vw, 28px);
}
.visor-hoja{
  display:flex; cursor:pointer; user-select:none;
  background:#fff; box-shadow:0 18px 46px rgba(18,32,25,.20);

  height:min(72vh, calc((100vw - 190px) / 2.83));
}
.visor-hoja.es-suelta{ height:min(72vh, calc((100vw - 190px) / 1.414)); }
.visor-pag{ display:block; height:100%; width:auto; }
.visor-hoja.es-pliego .visor-pag + .visor-pag{ border-left:1px solid rgba(0,0,0,.07); }
.visor-flecha{
  flex:none; width:52px; height:52px; border-radius:50%;
  border:1px solid var(--line); background:#fff; color:var(--ink);
  display:grid; place-items:center; cursor:pointer;
  box-shadow:0 6px 18px rgba(18,32,25,.10); transition:border-color var(--t-rapido), color var(--t-rapido), opacity var(--t-rapido);
}
.visor-flecha svg{ width:24px; height:24px; }
.visor-flecha:hover:not(:disabled){ border-color:var(--green); color:var(--green); }
.visor-flecha:disabled{ opacity:.28; cursor:default; }
.visor-barra{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  margin-top:18px; flex-wrap:wrap;
}
.visor-contador{
  font-family:var(--body); font-size:.78rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--ink-soft);
}
.visor-acciones{ display:flex; gap:10px; flex-wrap:wrap; }
.visor-boton{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--body); font-size:.72rem; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase; color:var(--green);
  background:none; border:1px solid var(--line); border-radius:2px;
  padding:9px 14px; cursor:pointer; text-decoration:none; transition:background var(--t-rapido), border-color var(--t-rapido);
}
.visor-boton svg{ width:17px; height:17px; }
.visor-boton:hover{ border-color:var(--green); background:var(--green-soft); }
.visor-tira{
  display:flex; gap:10px; overflow-x:auto; padding:20px clamp(12px, 3vw, 28px) 4px;
  scrollbar-width:thin;
}
.visor-mini{
  flex:none; width:92px; border:0; background:none; padding:0; cursor:pointer;
  opacity:.5; transition:opacity var(--t-rapido);
}
.visor-mini img{ display:block; width:100%; height:auto; border:1px solid var(--line); }
.visor-mini span{
  display:block; margin-top:5px; font-family:var(--body); font-size:.66rem;
  letter-spacing:.08em; color:var(--ink-soft);
}
.visor-mini:hover{ opacity:.85; }
.visor-mini.is-actual{ opacity:1; }
.visor-mini.is-actual img{ border-color:var(--green); box-shadow:0 0 0 1px var(--green); }
  .visor-hoja, .visor-hoja.es-suelta{ height:min(64vh, calc((100vw - 130px) / 1.414)); }
  .visor-flecha{ width:42px; height:42px; }
  .visor-flecha svg{ width:20px; height:20px; }
  .visor-barra{ justify-content:center; }
  .visor-mini{ width:64px; }
  .visor-flecha, .visor-boton, .visor-mini{ transition:none; }
.modal-card--visor{ width:min(1500px, 96vw); max-width:96vw; display:flex; flex-direction:column; max-height:94vh; }
.modal-body--visor{ padding:8px 0 0; overflow:hidden; display:flex; flex-direction:column; gap:0; }
.modal-body--visor .visor-hoja{ height:min(62vh, calc((96vw - 200px) / 2.83)); }
.modal-body--visor .visor-hoja.es-suelta{ height:min(62vh, calc((96vw - 200px) / 1.414)); }
.modal-body--visor .visor-tira{ padding:14px clamp(12px, 3vw, 26px) 6px; }
.modal-foot.visor-barra{ padding:12px 26px 20px; margin:0; }
.modal-body--visor:fullscreen{ background:var(--paper, #FAFAF8); justify-content:center; padding:0; }
.modal-body--visor:fullscreen .visor-hoja{ height:min(92vh, calc(100vw / 2.83)); }
.modal-body--visor:fullscreen .visor-hoja.es-suelta{ height:min(92vh, calc(100vw / 1.414)); }
.modal-body--visor:fullscreen .visor-tira{ display:none; }


.modal-card--visor:fullscreen .modal-head,
.modal-card--visor:fullscreen .modal-foot.visor-barra{
  display:flex; visibility:visible; opacity:1; position:relative; z-index:5;
}
.modal-card--visor:fullscreen .modal-close{
  display:grid; place-items:center; position:fixed;
  top:max(10px, env(safe-area-inset-top));
  right:max(10px, env(safe-area-inset-right));
  width:44px; height:44px; border-radius:50%; z-index:60;
  background:rgba(255,255,255,.94); color:var(--texto);
  box-shadow:0 2px 10px rgba(0,0,0,.2);
}
  .modal-card--visor{ width:96vw; max-height:96vh; }
  .modal-body--visor .visor-hoja.es-suelta{ height:min(58vh, calc((96vw - 120px) / 1.414)); }
  .modal-foot.visor-barra{ padding:10px 16px 16px; }
.modal-card--visor:fullscreen{
  width:100vw; max-width:100vw; max-height:100vh; height:100vh;
  border-radius:0; display:flex; flex-direction:column;
  background:var(--paper, #FAFAF8);
}
.modal-card--visor:fullscreen .modal-body--visor{ flex:1 1 auto; justify-content:center; }
.modal-card--visor:fullscreen .visor-hoja{
  height:min(72vh, calc((100vw - 210px) / 2.83));
}
.modal-card--visor:fullscreen .visor-hoja.es-suelta{
  height:min(72vh, calc((100vw - 210px) / 1.414));
}
.modal-card--visor:fullscreen .visor-tira{ padding-top:10px; }
  .modal-card--visor:fullscreen .visor-hoja.es-suelta{
    height:min(70vh, calc((100vw - 120px) / 1.414));
  }
.modal-card--visor{ display:flex; flex-direction:column; }
.modal-body--visor{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.modal-body--visor .visor{ flex:1 1 auto; min-height:0; }
.modal-card--visor:fullscreen .visor-hoja{
  height:auto; max-height:100%; max-width:100%; aspect-ratio:2.83;
}
.modal-card--visor:fullscreen .visor-hoja.es-suelta{ aspect-ratio:1.414; }
.modal-body--visor .visor-pag{ height:100%; width:auto; max-width:100%; object-fit:contain; }
.modal-body--visor .visor-tira{ flex:none; }
.modal-body--visor .visor{ overflow:hidden; align-items:center; }
.modal-card--visor:fullscreen .visor-hoja{
  height:100%; width:auto; max-width:100%; max-height:100%;
}
.modal-body--visor .visor{ position:relative; padding:0 74px; }
.modal-card--visor:fullscreen .visor-hoja{
  position:absolute; top:0; bottom:0; left:74px; right:74px;
  height:auto; width:auto; max-width:none; max-height:none;
  aspect-ratio:auto; background:none; box-shadow:none;
  align-items:center; justify-content:center;
}
.modal-body--visor .visor-pag{
  height:100%; width:auto; max-width:100%; object-fit:contain;
  background:#fff; box-shadow:0 14px 34px rgba(18,32,25,.18);
}
.modal-body--visor .visor-hoja.es-pliego .visor-pag{ max-width:50%; box-shadow:none; }
.modal-body--visor .visor-hoja.es-pliego{ box-shadow:none; }
.modal-body--visor .visor-hoja.es-pliego .visor-pag:first-child{ box-shadow:-14px 14px 34px rgba(18,32,25,.14); }
.modal-body--visor .visor-hoja.es-pliego .visor-pag:last-child{ box-shadow:14px 14px 34px rgba(18,32,25,.14); }
.modal-body--visor .visor-flecha{ position:relative; z-index:2; }
.modal-card--visor{ height:94vh; max-height:94vh; }
.modal-card--visor:fullscreen{ height:100vh; max-height:100vh; }
.modal-card--visor:fullscreen .visor-hoja.es-pliego{
  position:absolute; top:0; bottom:0; left:74px; right:74px;
  height:auto; width:auto; max-width:none; max-height:none; aspect-ratio:auto;
  background:none;
}
.modal-body--visor .visor{ justify-content:space-between; }
.modal-body--visor .visor-flecha{ flex:none; }
.modal-body--visor .visor-pag{
  width:auto; height:auto; max-width:100%; max-height:100%; object-fit:contain;
}
.modal-body--visor .visor-hoja.es-pliego .visor-pag{ max-width:50%; }
  .modal-body--visor .visor{ padding:0 46px; }
  .modal-body--visor .visor-hoja.es-pliego{ left:46px; right:46px; }
.modal-card--visor:fullscreen{

  width:100%; height:100%; max-width:none; max-height:none; margin:0;
  background:#0B1A16; border-radius:0; overflow:hidden; display:block;
}
.modal-card--visor:fullscreen::backdrop{ background:#0B1A16; }
.modal-card--visor:fullscreen .modal-body--visor{
  position:absolute; inset:0; padding:0; display:block; background:transparent;
}
.modal-card--visor:fullscreen .visor{
  position:absolute; inset:0; padding:0 clamp(56px, 6vw, 96px); display:flex;
}
.modal-card--visor:fullscreen .visor-hoja.es-pliego{
  position:absolute; top:14px; bottom:128px;
  left:clamp(56px, 6vw, 96px); right:clamp(56px, 6vw, 96px);
  width:auto; height:auto; max-width:none; max-height:none; aspect-ratio:auto;
  display:flex; align-items:center; justify-content:center;
}
.modal-card--visor:fullscreen .visor-tira{
  position:absolute; left:0; right:0; z-index:6; border:0; background:transparent;
}
.modal-card--visor:fullscreen .modal-head{
  top:0; padding:14px 22px;
  background:linear-gradient(to bottom, rgba(11,26,22,.72), rgba(11,26,22,0));
}
.modal-card--visor:fullscreen .modal-close{ color:#F3F1EA; }
.modal-card--visor:fullscreen .visor-tira{
  bottom:52px; padding:0 18px 6px; justify-content:center; background:transparent;
}
.modal-card--visor:fullscreen .modal-foot.visor-barra{
  bottom:0; padding:8px 22px 12px; justify-content:center; gap:18px;
  background:linear-gradient(to top, rgba(11,26,22,.78), rgba(11,26,22,0));
}
.modal-card--visor:fullscreen .visor-contador{ color:#F3F1EA; }
.modal-card--visor:fullscreen .visor-boton{
  color:#F3F1EA; border-color:rgba(243,241,234,.42); background:rgba(11,26,22,.35);
}
.modal-card--visor:fullscreen .visor-boton:hover{
  background:rgba(243,241,234,.14); border-color:#F3F1EA;
}
.modal-card--visor:fullscreen .visor-mini{ width:56px; }
.modal-card--visor:fullscreen .visor-mini span{ color:#F3F1EA; }
.modal-card--visor:fullscreen .visor-flecha{
  color:#F3F1EA; border-color:rgba(243,241,234,.40); background:rgba(11,26,22,.40);
}
.modal-card--visor:fullscreen .visor-flecha:hover:not(:disabled){
  border-color:#F3F1EA; color:#F3F1EA; background:rgba(243,241,234,.16);
}
  .modal-card--visor:fullscreen .visor-tira{ display:none; }
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ bottom:64px; }
  .modal-card--visor:fullscreen .visor{ padding:0 46px; }
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ left:46px; right:46px; }
.modal-card--visor:fullscreen .visor{ padding:0; }
.modal-card--visor:fullscreen .visor-hoja.es-pliego{ left:10px; right:10px; }
.modal-card--visor:fullscreen .visor-flecha{
  position:absolute; top:50%; transform:translateY(-50%); z-index:7;
  backdrop-filter:blur(3px);
}
.modal-card--visor:fullscreen .visor-flecha--prev{ left:16px; }
.modal-card--visor:fullscreen .visor-flecha--next{ right:16px; }
  .modal-card--visor:fullscreen .visor{ padding:0; }
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ left:8px; right:8px; }

.visor-anim{
  position:absolute; top:50%; left:50%; z-index:4;
  transform:translate(-50%, -50%);
  perspective:2600px; pointer-events:none;
}

.visor-anim-base{
  position:absolute; top:0; height:100%; width:50%; overflow:hidden;
  background:#fff; box-shadow:0 18px 46px rgba(18,32,25,.20);
}
.visor-anim-base.es-izq{ left:0; }
.visor-anim-base.es-der{ left:50%; }
.visor-anim-base.es-entera{ left:0; width:100%; }
.visor-anim img{ display:block; width:100%; height:100%; }


.visor-vuelta{
  position:absolute; top:0; height:100%; width:50%;
  transform-style:preserve-3d; will-change:transform;
}
.visor-vuelta.es-der{    left:50%; transform-origin:left center; }
.visor-vuelta.es-izq{    left:0;   transform-origin:right center; }
.visor-vuelta.es-entera{ left:0;   width:100%; transform-origin:left center; }

.visor-cara{
  position:absolute; inset:0; overflow:hidden; background:#fff;
  backface-visibility:hidden; -webkit-backface-visibility:hidden;
}

.visor-cara.es-dorso{ transform:rotateY(180deg); }


.visor-anim.esta-girando .visor-cara{
  box-shadow:0 22px 50px rgba(18,32,25,.34);
  transition:box-shadow var(--pase, .72s) ease;
}

@media (prefers-reduced-motion: reduce){

  .visor-anim{ display:none; }
}


.visor-anim.esta-girando .visor-cara{
  box-shadow:0 26px 54px rgba(18, 32, 25, .38);
}
.visor-cara::after{
  content:''; position:absolute; inset:0; pointer-events:none;
}
.visor-vuelta.es-der   .visor-cara.es-frente::after,
.visor-vuelta.es-entera .visor-cara.es-frente::after,
.visor-vuelta.es-izq   .visor-cara.es-dorso::after{
  background:linear-gradient(90deg, rgba(18,32,25,.20), rgba(18,32,25,0) 26%);
}
.visor-vuelta.es-izq   .visor-cara.es-frente::after,
.visor-vuelta.es-der   .visor-cara.es-dorso::after,
.visor-vuelta.es-entera .visor-cara.es-dorso::after{
  background:linear-gradient(270deg, rgba(18,32,25,.20), rgba(18,32,25,0) 26%);
}

.visor-anim-base.es-izq::after,
.visor-anim-base.es-der::after{
  content:''; position:absolute; inset:0; pointer-events:none;
}
.visor-anim-base.es-izq::after{ background:linear-gradient(270deg, rgba(18,32,25,.13), rgba(18,32,25,0) 18%); }
.visor-anim-base.es-der::after{ background:linear-gradient(90deg,  rgba(18,32,25,.13), rgba(18,32,25,0) 18%); }

.visor-girar{
  display:flex; align-items:center; justify-content:center; gap:9px;
  margin:12px auto 0; padding:9px 14px; max-width:34ch;
  background:var(--green-soft, #E5F1ED); color:var(--green-ink, #1C564C);
  font-size:.82rem; line-height:1.35; text-align:left; border-radius:2px;
}
.visor-girar svg{ width:17px; height:17px; flex:0 0 auto; }
.visor-girar[hidden]{ display:none; }
@media (max-width:900px){
  .visor-main{ padding-top:70px; }

  .visor-hoja, .visor-hoja.es-suelta{ height:min(64vh, calc((100vw - 130px) / 1.414)); }
  .visor-flecha{ width:42px; height:42px; }
  .visor-flecha svg{ width:20px; height:20px; }
  .visor-barra{ justify-content:center; }
  .visor-mini{ width:64px; }
}
@media (prefers-reduced-motion:reduce){
  .visor-flecha, .visor-boton, .visor-mini{ transition:none; }
}
@media (max-width:900px){
  .modal-card--visor{ width:96vw; max-height:96vh; }
  .modal-body--visor .visor-hoja,
  .modal-body--visor .visor-hoja.es-suelta{ height:min(58vh, calc((96vw - 120px) / 1.414)); }
  .modal-foot.visor-barra{ padding:10px 16px 16px; }
}
@media (max-width:900px){
  .modal-card--visor:fullscreen .visor-hoja,
  .modal-card--visor:fullscreen .visor-hoja.es-suelta{
    height:min(70vh, calc((100vw - 120px) / 1.414));
  }
}
@media (max-width:900px){ .modal-card--visor{ height:94vh; max-height:94vh; } }
@media (max-width:900px){

  .modal-body--visor .visor{ padding:0 46px; }
  .modal-body--visor .visor-hoja,
  .modal-body--visor .visor-hoja.es-suelta,
  .modal-body--visor .visor-hoja.es-pliego{ left:46px; right:46px; }
}
@media (max-height:620px){
  .modal-card--visor:fullscreen .visor-tira{ display:none; }
  .modal-card--visor:fullscreen .visor-hoja,
  .modal-card--visor:fullscreen .visor-hoja.es-suelta,
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ bottom:64px; }
}
@media (max-width:900px){
  .modal-card--visor:fullscreen .visor{ padding:0 46px; }
  .modal-card--visor:fullscreen .visor-hoja,
  .modal-card--visor:fullscreen .visor-hoja.es-suelta,
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ left:46px; right:46px; }
}
@media (max-width:900px){
  .modal-card--visor:fullscreen .visor{ padding:0; }
  .modal-card--visor:fullscreen .visor-hoja,
  .modal-card--visor:fullscreen .visor-hoja.es-suelta,
  .modal-card--visor:fullscreen .visor-hoja.es-pliego{ left:8px; right:8px; }
}
@media (prefers-reduced-motion: reduce){

  .visor-anim{ display:none; }
}
@media (max-width: 660px){
  #visorModal .modal-head{ position:sticky; top:0; z-index:3; }
  #visorModal .modal-close{ min-width:44px; min-height:44px; }
}
@media (max-width: 900px) and (orientation: landscape) and (max-height: 560px){
  #visorModal{ padding:0; }
  #visorModal .modal-card{ height:100dvh; max-height:100dvh; border-radius:0; }
  #visorModal .modal-head{ padding:6px 14px; }
  #visorModal .modal-title{ font-size:.95rem; }
  #visorModal .modal-body{ padding:0; }
  #visorModal .visor-tira{ display:none; }
  #visorModal .visor-barra{ padding:6px 14px; }
  #visorModal .visor-escenario{ padding:0; }
  #visorModal .visor{ padding:0 6px; gap:6px; }
  #visorModal .visor-flecha{ width:38px; height:38px; }


  #visorModal .visor-hoja{
    height:min(calc(100dvh - 104px), calc((100vw - 108px) / 2.83));
  }
  #visorModal .visor-hoja.es-suelta{
    height:min(calc(100dvh - 104px), calc((100vw - 108px) / 1.414));
  }
}
@media (max-width: 660px){
  #visorModal{ padding:0; align-items:stretch; }
  #visorModal .modal-card{
    width:100%; max-width:none; height:100dvh; max-height:100dvh;
    border-radius:0; display:flex; flex-direction:column;
  }
  #visorModal .modal-head{
    position:sticky; top:0; z-index:4; flex:0 0 auto;
    background:var(--paper); border-bottom:1px solid var(--line);
  }
  #visorModal .modal-body{ flex:1 1 auto; overflow:auto; }
  #visorModal .modal-close{ min-width:44px; min-height:44px; }



  #visorModal .visor{ padding:0 4px; gap:0; justify-content:center; }


  .visor-barra.con-flechas{ flex-wrap:wrap; gap:10px; }
  .visor-barra.con-flechas .visor-flecha{
    width:40px; height:40px; box-shadow:none; order:0;
  }
  .visor-barra.con-flechas .visor-contador{ order:0; min-width:64px; text-align:center; }
  .visor-barra.con-flechas .visor-acciones{ order:1; margin-left:auto; }
}
@media (max-width: 660px) and (orientation: portrait){

  #visorModal .visor-hoja,
  #visorModal .visor-hoja.es-suelta,
  #visorModal .visor-hoja.es-pliego{ left:10px; right:10px; }
}
@media (max-width: 900px){
  #visorModal.is-open .visor-salir{
    display:grid; place-items:center;
    position:fixed; z-index:30;
    top:calc(env(safe-area-inset-top, 0px) + 10px);
    right:calc(env(safe-area-inset-right, 0px) + 10px);
    width:44px; height:44px; border-radius:50%;
    border:1px solid var(--line); background:var(--paper); color:var(--ink);
    box-shadow:0 6px 20px rgba(18,32,25,.26); cursor:pointer;
  }
  #visorModal.is-open .visor-salir svg{ width:20px; height:20px; }

  #visorModal .modal-head .modal-close{ display:none; }

  #visorModal .modal-card{ overflow:hidden; }
}


img.hero-media { width: 100%; height: 100%; object-fit: cover; object-position: center; }
@media (max-width: 720px) { img.hero-media { object-position: 88% center; } }



.proyecto { padding: var(--s-9) 0 var(--s-8); }

.plan-pliego { display: grid; grid-template-columns: minmax(240px, 22%) 1fr; gap: var(--s-7); align-items: center; padding-left: clamp(20px, 3vw, 48px); }
.plan-texto .section-title { margin-bottom: var(--s-4); max-width: 16ch; font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.3rem); }
.plan-texto .section-lead { margin-bottom: var(--s-5); }
.plan-mapa { position: relative; container-type: inline-size; }
.plan-lienzo { position: relative; cursor: zoom-in; }
.plan-img { width: 100%; height: auto; display: block; }
.plan-capa { position: absolute; inset: 0; }
.plan-pin { position: absolute; transform: translate(-50%, -50%); width: clamp(22px, 2.2cqw, 34px); aspect-ratio: 1; border-radius: 50%; background: var(--verde-plano); border: 2px solid #fff; color: #fff; font-family: var(--f-display); font-weight: 700; font-size: clamp(10px, 1cqw, 15px); line-height: 1; display: grid; place-items: center; box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.plan-pin--grande { width: clamp(28px, 2.8cqw, 44px); font-size: clamp(12px, 1.3cqw, 19px); }
.plan-punto { position: absolute; transform: translate(-50%, -50%); width: clamp(8px, .9cqw, 14px); aspect-ratio: 1; border-radius: 50%; background: var(--verde-plano); }
.plan-guia { position: absolute; width: 3px; transform: translateX(-50%); background: var(--verde-plano); }
.plan-foto { position: absolute; transform: translate(-50%, -50%); margin: 0; width: clamp(64px, 9.5cqw, 150px); display: grid; justify-items: center; gap: clamp(3px, .5cqw, 8px); }
.plan-foto-aro { width: 100%; aspect-ratio: 1; border-radius: 50%; overflow: hidden; border: clamp(3px, .45cqw, 6px) solid #fff; box-shadow: 0 4px 14px rgba(0,0,0,.18); display: block; background: #fff; }
.plan-foto-aro img { width: 100%; height: 100%; object-fit: cover; display: block; }
.plan-rotulo { background: #fff; color: var(--azul); border-radius: 999px; padding: .3em .85em; font-family: var(--f-texto); font-weight: 700; font-size: clamp(9px, .85cqw, 13px); line-height: 1.2; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.plan-via { position: absolute; color: var(--azul); font-family: var(--f-display); font-weight: 700; font-size: clamp(12px, 1.5cqw, 22px); line-height: 1; white-space: nowrap; letter-spacing: .02em; }
.plan-mapa .plan-maestro-zoom { right: var(--s-4); bottom: var(--s-4); }
@media (max-width: 900px) {
  .plan-pliego { grid-template-columns: 1fr; gap: var(--s-6); padding-left: 0; }
  .plan-texto { padding: 0 var(--s-5); }
}


.amen-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-4); }
.amen-mini-etapa { display: block; font-size: .76rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--texto-medio); margin-top: 2px; }
@media (max-width: 720px) { .amen-grid { grid-template-columns: repeat(2, 1fr); } }





.form-legal{
  display:flex; align-items:flex-start; gap:8px; margin:12px 0 0;

  font-size:.78rem; line-height:1.5; color:var(--texto-medio);
}
.form-legal-txt a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }
.form-legal-txt a:hover{ color:var(--azul); }
.form-legal-ico{
  flex:none; width:26px; height:26px; margin-top:-2px; padding:0;
  border:0; border-radius:50%; background:none; color:var(--azul);
  cursor:pointer; display:grid; place-items:center; transition:background var(--t-rapido);
}
.form-legal-ico:hover{ background:rgba(44,126,110,.12); }
.form-legal-ico svg{ width:19px; height:19px; }
.form-legal-ico:focus-visible{ outline:2px solid var(--azul); outline-offset:2px; }
.modal-card--consent{
  width:min(680px, 94vw); max-height:92vh; max-height:92dvh;
  display:flex; flex-direction:column; overflow:hidden;
}
.modal-card--consent > .modal-head{ flex:none; z-index:2; }
.modal-body--consent{
  flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden;
  overscroll-behavior:contain; -webkit-overflow-scrolling:touch;
  padding:18px 22px 6px;
}
.consent-intro{ margin:0 0 16px; font-size:.82rem; line-height:1.5; color:var(--texto-medio); }
.consent-item{
  display:flex; align-items:flex-start; gap:12px; cursor:pointer;
  padding:14px 0; border-top:1px solid var(--linea);
}
.consent-item:first-of-type{ border-top:0; padding-top:0; }
.consent-item input{ flex:none; width:19px; height:19px; margin-top:2px; accent-color:var(--azul); cursor:pointer; }
.consent-cuerpo{ display:block; min-width:0; }
.consent-titulo{
  display:flex; align-items:center; gap:9px; flex-wrap:wrap;
  font-family:var(--f-texto); font-weight:600; font-size:.9rem; color:var(--texto);
  margin-bottom:5px;
}
.consent-oblig, .consent-opc{
  font-style:normal; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase;
  font-weight:600; padding:2px 0; border-bottom:1.5px solid currentColor;
}
.consent-oblig{ color:var(--coral-btn, #C4623A); }
.consent-opc{ color:var(--texto-medio); }
.consent-texto{ display:block; font-size:.78rem; line-height:1.55; color:var(--texto-medio); }
.consent-foot{
  flex:none; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:14px 22px 18px; border-top:1px solid var(--linea);
}
.consent-terminos{
  font-family:var(--f-texto); font-size:.75rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; color:var(--azul);
  text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:2px;
}
.consent-terminos:hover{ opacity:.65; }
  .modal-body--consent{ padding:16px 16px 4px; }
  .consent-foot{ padding:12px 16px 16px; flex-direction:column; align-items:stretch; gap:12px; }
  .consent-foot .btn{ width:100%; }
  .consent-terminos{ text-align:center; }
  .consent-texto{ font-size:.76rem; }
.form-legal-txt{ text-align:justify; }
.consent-req{
  font-style:normal; font-weight:700; font-size:1rem; line-height:1;
  color:var(--coral-btn, #C4623A);
}
.consent-intro{ display:none; }
.form-legal-ico{ position:relative; }
.form-legal-ico::after{
  content:""; position:absolute; left:50%; top:50%;
  width:44px; height:44px; transform:translate(-50%,-50%);
}
.consent-aviso{ margin-right:auto; max-width:60%; line-height:1.35; }
.consent-aviso:empty{ display:none; }
#consentModal{ z-index:520; }
#consentModal .modal-backdrop{ background:rgba(16,28,22,.72); }

#leadModal .form-legal, #brochureModal .form-legal { font-size:.75rem; line-height:1.45; }
.doc-body{ background:var(--paper, #FAFAF8); color:var(--texto); }
.doc-wrap{ width:100%; max-width:760px; margin:0 auto; padding-inline:clamp(20px, 5vw, 32px); }
.doc-eyebrow{
  margin:44px 0 10px; font-family:var(--f-texto); font-size:.7rem; font-weight:600;
  letter-spacing:.18em; text-transform:uppercase; color:var(--azul);
}
.doc-title{ margin:0 0 18px; font-size:clamp(1.7rem, 1.2rem + 2vw, 2.5rem); line-height:1.15; }
.doc-lead{ margin:0 0 34px; font-size:1rem; line-height:1.65; color:var(--texto-medio); }
.doc-sec{ margin:0 0 38px; scroll-margin-top:24px; }
.doc-sec h2{
  margin:0 0 14px; font-size:1.12rem; line-height:1.3; color:var(--azul-prof);
  font-family:var(--f-texto); font-weight:600;
}
.doc-sec p{ margin:0 0 14px; font-size:.94rem; line-height:1.7; color:var(--texto-medio); text-align:justify; }
.doc-sec ul{ margin:0 0 14px; padding-left:1.3em; }
.doc-sec li{ margin:7px 0; font-size:.94rem; line-height:1.65; color:var(--texto-medio); }
.doc-destacado{ color:var(--texto) !important; }
.doc-canales{ list-style:none; padding:0; }
.doc-canales li{ display:flex; flex-wrap:wrap; gap:6px 12px; padding:11px 0; border-bottom:1px solid var(--linea); }
.doc-canales li:last-child{ border-bottom:0; }
.doc-canal-et{
  flex:0 0 148px; font-family:var(--f-texto); font-size:.72rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; color:var(--texto-medio);
}
.doc-canales a{ color:var(--azul); }
.doc-pendiente{ color:var(--coral-btn, #C4623A); font-style:italic; }
.doc-autorizaciones{ padding-left:1.2em; }
.doc-autorizaciones li{ margin:0 0 22px; }
.doc-aut-tit{
  margin:0 0 7px; display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  font-family:var(--f-texto); font-size:.95rem; font-weight:600; color:var(--texto);
}
.doc-aut-et{
  font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; font-weight:600;
  color:var(--texto-medio); border-bottom:1.5px solid currentColor; padding-bottom:1px;
}
.doc-autorizaciones p{ margin:0; font-size:.9rem; line-height:1.65; color:var(--texto-medio); text-align:justify; }
.doc-pie-nota{
  margin:0 0 56px; padding-top:22px; border-top:1px solid var(--linea);
  font-size:.82rem; line-height:1.6; color:var(--texto-medio);
}
  .doc-canal-et{ flex-basis:100%; }
  .doc-sec p, .doc-autorizaciones p{ text-align:left; }
.doc-sec ul{ list-style:disc; }
.doc-autorizaciones{ list-style:decimal; }
.doc-body main.doc-wrap{ padding-top:104px; }
.legal-page { background: var(--crema-suave); padding: clamp(40px, 6vw, 80px) 0; }
.legal-page .doc-wrap { max-width: 78ch; }
.form-legal { font-family: var(--f-texto); }
.consent-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.consent-aviso { flex-basis: 100%; }



.avance-meses{ display:flex; gap:4px; overflow-x:auto; overflow-y:hidden; flex-wrap:nowrap; margin-bottom:22px; border-bottom:1px solid var(--linea); scrollbar-width:none; }
.avance-meses::-webkit-scrollbar{ height:0; display:none; }
.avance-mes{ position:relative; flex:0 0 auto; padding:12px 18px; border:0; border-radius:0; background:transparent; color:var(--texto-medio); font-weight:600; font-size:.92rem; white-space:nowrap; transition:color var(--t-rapido); }
.avance-mes:hover{ color:var(--azul-prof); }
.avance-mes.is-active{ color:var(--azul-prof); }
.avance-mes.is-active::after{ content:""; position:absolute; left:16px; right:16px; bottom:0; height:2.5px; border-radius:3px 3px 0 0; background:var(--azul); }
.avance-aerea{ position:relative; margin:0; border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--linea); }
.avance-aerea .media{ width:100%; aspect-ratio:16/9; }
.avance-pct-box{ position:absolute; right:16px; bottom:16px; z-index:2; display:flex; align-items:baseline; gap:2px; background:rgba(11,66,60,.92); color:#fff; padding:12px 18px; border-radius:var(--r); box-shadow:0 6px 20px rgba(0,0,0,.3); }
.avance-pct-num{ font-family:var(--f-display); font-weight:700; font-size:2.4rem; line-height:1; }
.avance-pct-sym{ font-family:var(--f-display); font-weight:700; font-size:1.3rem; }
.avance-pct-lbl{ font-size:.72rem; color:rgba(255,255,255,.8); margin-left:6px; align-self:flex-end; max-width:7ch; line-height:1.05; }
.avance-mes-tag{ position:absolute; left:16px; top:16px; z-index:2; background:rgba(11,66,60,.92); color:#fff; padding:7px 15px; border-radius:var(--r-full); font-weight:600; font-size:.85rem; box-shadow:0 4px 14px rgba(0,0,0,.25); }
.avance-aerea{ border:0; }
.avance-pct-num, .proyecto-figure-num{ font-variant-numeric: lining-nums tabular-nums; }
.avance { background: var(--crema); }
.avance-aerea { position: relative; margin: 0; border-radius: var(--r-lg); overflow: hidden; }
.avance-aerea img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.avance-mes-tag { position: absolute; left: 18px; top: 18px; background: rgba(255,255,255,.92); color: var(--azul-prof); font-family: var(--f-display); font-weight: 700; font-size: .85rem; padding: 6px 12px; border-radius: var(--r-sm); }
.avance-pct-box { position: absolute; right: 18px; bottom: 18px; background: var(--azul-prof); color: #fff; padding: 12px 18px; border-radius: var(--r-sm); display: grid; text-align: center; }
.avance-pct-num { font-family: var(--f-display); font-weight: 700; font-size: 1.6rem; line-height: 1; }
.avance-pct-lab { font-size: .78rem; opacity: .85; }
.avance-meses { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: var(--s-4); }
.avance-mes { border: 1.5px solid var(--linea); background: transparent; color: var(--texto); font-family: var(--f-display); font-weight: 600; font-size: .9rem; padding: 9px 16px; border-radius: var(--r-sm); cursor: pointer; }
.avance-mes.is-active { background: var(--azul); border-color: var(--azul); color: #fff; }


.site-footer { padding: var(--s-5) 0 var(--s-4); font-size: .92rem; }
.footer-main { display: flex; flex-direction: column; align-items: stretch; gap: var(--s-4); padding-bottom: var(--s-4); border-bottom: 1px solid rgba(255,255,255,.16); }
.footer-line { display: flex; align-items: center; gap: var(--s-4); flex-wrap: wrap; }
.footer-org .footer-logo { height: 46px; width: auto; display: block; margin: 0; }
.footer-pipe { width: 1px; height: 22px; background: rgba(255,255,255,.22); flex: none; }
.footer-item { display: inline-flex; align-items: center; gap: 8px; color: rgba(255,255,255,.85); margin: 0; }
.footer-ico { display: inline-flex; width: 16px; height: 16px; color: rgba(255,255,255,.6); flex: none; }
.footer-ico svg { width: 16px; height: 16px; }
.footer-mail-txt { color: inherit; text-decoration: none; transition: color var(--t-rapido) var(--ease); }
.footer-mail-txt:hover { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.footer-line-info .footer-social { margin: 0 0 0 auto; gap: 8px; }
.footer-line-info .footer-social a { width: 34px; height: 34px; background: transparent; border: 1px solid rgba(255,255,255,.28); color: #fff; }
.footer-line-info .footer-social a:hover { background: var(--mostaza); border-color: var(--mostaza); color: var(--texto); }
.footer-line-info .footer-social svg { width: 16px; height: 16px; }

.footer-credits { display: flex; align-items: stretch; gap: 24px; flex-wrap: wrap; margin: 0; }
.footer-credit { display: flex; flex-direction: column; align-items: center; gap: 7px; }
.footer-credit-label { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.6); margin: 0; }
.footer-credit-logo { height: 24px; width: auto; display: block; object-fit: contain; }
.footer-credit-logo--fop { height: 34px; }
.footer-credit-sep { width: 1px; align-self: stretch; background: rgba(255,255,255,.16); }
.footer-credit-enlace { display: inline-flex; transition: opacity var(--t-rapido) var(--ease); }
.footer-credit-enlace:hover { opacity: .8; }
.footer-bottom { padding: var(--s-3) 0 0; display: flex; flex-direction: column; gap: 7px; }


@media (max-width: 760px) {
  .footer-copy { padding-bottom: 68px; }
}
.footer-legal { font-size: .8rem; line-height: 1.55; color: rgba(255,255,255,.62); margin: 0; max-width: 110ch; }
.footer-copy { font-size: .8rem; margin: 0; display: flex; gap: var(--s-3); flex-wrap: wrap; color: rgba(255,255,255,.85); }
.footer-copy a { color: rgba(255,255,255,.7); text-decoration: underline; }
.footer-copy a:hover { color: #fff; }
@media (max-width: 720px) {
  .footer-line { gap: var(--s-3); }
  .footer-pipe { display: none; }
  .footer-line-info .footer-social { margin-left: 0; }
}


.plan-foto { --pf: clamp(64px, 9.5cqw, 150px); width: var(--pf); transform: translate(-50%, calc(-.5 * var(--pf))); }
@media (max-width: 900px) { .plan-mapa .plan-maestro-zoom { left: var(--s-3); right: auto; } }


.legal-page .doc-wrap { max-width: 78ch; margin-inline: auto; padding-inline: clamp(20px, 5vw, 32px); }
.legal-page .doc-volver { margin-top: var(--s-6); }
@media (max-width: 720px) {
  .site-footer { padding: var(--s-4) 0 var(--s-3); }
  .footer-org .footer-logo { height: 38px; }
  .footer-main { gap: var(--s-3); padding-bottom: var(--s-3); }
  .footer-line-info { gap: var(--s-2) var(--s-3); }
  .footer-credits { display: grid; grid-template-columns: repeat(2, auto); justify-content: start; gap: var(--s-2) var(--s-5); }
  .footer-credit-sep { display: none; }
  .footer-bottom { padding-top: var(--s-3); }
}



.am-viewport{ position:relative; border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--linea); background:var(--azul-prof); }
.am-slide{ margin:0; position:absolute; inset:0; opacity:0; visibility:hidden; transition:opacity var(--t-lento) var(--ease); }
.am-slide.is-active{ position:relative; opacity:1; visibility:visible; }
.am-name{ position:absolute; top:0; left:0; right:0; z-index:2; padding:22px 26px; background:linear-gradient(to bottom, rgba(11,66,60,.82), transparent); color:#fff; }
.am-group{ display:block; font-size:.7rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--azul-frio); margin-bottom:4px; }
.am-title{ font-family:var(--f-display); font-size:clamp(1.4rem,1rem+1.4vw,2rem); font-weight:400; }
.am-slide .media{ width:100%; aspect-ratio:16/9; }
.am-desc{ position:absolute; left:0; right:0; bottom:0; z-index:2; margin:0; padding:24px 26px; color:rgba(255,255,255,.92); font-size:.95rem; background:linear-gradient(to top, rgba(8,46,40,.86), transparent); }
.am-nav{ position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,.9); border:1px solid var(--linea); color:var(--texto); display:flex; align-items:center; justify-content:center; box-shadow:var(--sombra-sm); }
.am-nav:hover{ background:#fff; }
.am-nav svg{ width:22px; height:22px; }
.am-prev{ left:14px; }
.am-dots{ display:flex; gap:8px; justify-content:center; margin-top:16px; flex-wrap:wrap; }
.am-dot{ width:9px; height:9px; border-radius:50%; background:var(--gris-borde); border:0; padding:0; transition:var(--t-rapido); }
.am-dot.is-active{ background:var(--azul); width:24px; border-radius:5px; }
  .am-title{ font-size:1.3rem; }
  .am-desc{ font-size:.86rem; padding:18px 20px; }
  .am-name{ padding:18px 20px; }
.amenities-carousel{ position:relative; }
.am-window{ overflow:hidden; }
.am-track{ display:flex; gap:22px; will-change:transform; }
.am-card{ flex:0 0 calc((100% - 44px)/3.25); margin:0; }
.am-card-img{ border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--linea); box-shadow:var(--sombra-sm); }
.am-card-img .media{ width:100%; aspect-ratio:4/3; }
.am-card-name{ margin-top:14px; text-align:center; font-family:var(--f-display); font-weight:400; font-size:1.18rem; color:var(--texto); }
.amenities-carousel .am-nav{ top:42%; }
.am-prev{ left:-10px; }
.am-card-img{ border:0; box-shadow:none; }
.am-viewport, .gallery-item, .avance-foto, .ubic-map{ border:0; }
.mc-nav, .am-nav{ border:0; }
.proyecto-info .section-title, .am-title, .model-info .model-name, .unday-card h3{
  text-wrap: balance;
}
.am-disclaimer{ margin:14px 2px 0; font-size:.72rem; font-weight:400; color:var(--texto-suave); letter-spacing:.01em; text-align:right; }
.mc-nav, .am-nav{ transition:background var(--t-rapido) var(--ease), color var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease); }
.mc-nav:hover, .am-nav:hover{ transform:scale(1.08); }
.am-nav:hover{ transform:translateY(-50%) scale(1.08); }
.am-card{ transition:transform var(--t-medio) var(--ease), box-shadow var(--t-medio) var(--ease); }
.am-card:hover{ transform:translateY(-4px); box-shadow:var(--sombra); }

.am-card .media img{ transition:transform var(--t-medio) var(--ease); }
.am-card:hover .media img{ transform:scale(1.05); }
  .am-card:hover, .tray-card:hover .tray-img, .btn-brochure-dl:hover{ transform:none; }
  .am-card:hover .media img{ transform:none; }
.am-card:hover, .tray-card:hover{ transform:translateY(-3px); }
.am-card .media{ box-shadow:none; border:1px solid var(--linea); }
.am-card{ position:relative; }
.am-card::after{

  content:""; position:absolute; top:0; left:0; width:100%; height:2px;

  background:var(--azul); transform:scaleX(0); transform-origin:left; transition:transform var(--t-rapido) linear;
}
.am-card:hover::after{ transform:scaleX(1); }
.am-card:hover, .tray-card:hover{ transform:none; }
.am-card:hover .media img{ transform:scale(1.03); }
  .am-card::after{ transition:none; }
.am-card{ flex:0 0 calc((100% - 66px)/4.35); display:flex; flex-direction:column; align-items:center; }
.am-card-img{
  width:100%; aspect-ratio:1/1; border-radius:50%; overflow:hidden;
  border:1px solid var(--linea); box-shadow:none;
}
.am-card-img .media{ width:100%; height:100%; aspect-ratio:1/1; }
.am-card-img .media img{ width:100%; height:100%; object-fit:cover; display:block; }
.am-card::after{ display:none; }
.am-card:hover .media img{ transform:scale(1.06); }
.am-window{ overflow:visible; }
.am-track{
  display:grid;
  grid-template-columns:repeat(12, minmax(0,1fr));
  grid-auto-rows:14rem;
  gap:14px;

  transition:none;
  width:100%;
}
.am-card{
  flex:none; display:block;
  position:relative;
  grid-column:span 4;
  grid-row:span 1;
  border-radius:var(--r-lg);
  overflow:hidden;
}
.am-card:nth-child(1){ grid-column:span 7; grid-row:span 2; }
.am-card:nth-child(3){ grid-column:span 5; grid-row:span 1; }
.am-card:nth-child(n+4){ display:none; }
.am-card-img{
  width:100%; height:100%; aspect-ratio:auto; border-radius:0;
  border:0; box-shadow:none;
}
.am-card-img .media{ width:100%; height:100%; aspect-ratio:auto; }
.am-card-img .media img{ width:100%; height:100%; object-fit:cover; display:block; }
.am-card::after{
  content:""; display:block; position:absolute; inset:auto 0 0 0; z-index:1;
  height:65%;
  background:linear-gradient(to top, rgba(10,20,40,.82), rgba(10,20,40,0));
  pointer-events:none;
}
.am-card:hover .media img{ transform:scale(1.045); }
.am-card-name{
  position:absolute; z-index:2; left:18px; right:18px; bottom:16px;
  margin-top:0; text-align:left;
  font-family:var(--f-texto); font-weight:600; text-transform:uppercase;
  letter-spacing:.05em; font-size:.98rem; color:#fff;
  text-shadow:0 1px 3px rgba(0,0,0,.25);
}
.am-card:nth-child(1) .am-card-name{ font-size:1.2rem; }
.amenities-carousel{
  display:flex; flex-wrap:wrap; align-items:flex-start; gap:12px;
  margin-bottom:8px;
}
.amenities-carousel .am-window{ order:1; flex:1 1 100%; }
.amenities-carousel .am-prev{ order:2; }
.amenities-carousel .am-next{ order:3; }
.amenities-carousel .am-nav{
  position:static; transform:none; width:auto; height:auto;
  padding:10px 18px; border-radius:var(--r-lg);
  background:#fff; border:1px solid var(--linea); box-shadow:var(--sombra-sm);
}
.amenities-carousel .am-nav:hover{ transform:none; background:var(--azul-frio); }
  .am-track{ grid-auto-rows:11.5rem; }
  .am-track{ grid-template-columns:repeat(2, minmax(0,1fr)); grid-auto-rows:13rem; gap:10px; }
  .am-card{ grid-column:span 1 !important; grid-row:span 1 !important; }
  .am-card:nth-child(1){ grid-column:span 2 !important; grid-row:span 1 !important; height:15rem; }
  .am-card-name{ font-size:.86rem; left:12px; right:12px; bottom:12px; }
  .am-card:nth-child(1) .am-card-name{ font-size:1rem; }
.am-card{ transition:opacity var(--t-rapido) var(--ease), transform var(--t-medio) var(--ease); }
.am-card.am-out{ opacity:0; }
.am-card.am-swap{ opacity:0; transform:translateY(10px); transition:none; }
  .am-card, .am-card.am-out, .am-card.am-swap{ transition:none; opacity:1; transform:none; }
.am-card:first-child{ border-radius:4px 4px 4px 42px; overflow:hidden; }
.am-card{ counter-increment:am-n; }
.am-carousel{ counter-reset:am-n; }
.am-card::before{
  content:counter(am-n, decimal-leading-zero);
  position:absolute; top:14px; left:18px; z-index:2;
  font-family:var(--f-texto); font-size:1.15rem; font-weight:300;
  color:rgba(255,255,255,.85); letter-spacing:.05em;
  text-shadow:0 1px 6px rgba(0,0,0,.35);
}
.amenidades .am-card{ box-shadow:0 18px 40px -14px rgba(4,10,28,.6); }
.amenidades .am-card::after{ background:linear-gradient(to top, rgba(6,12,32,.92), rgba(6,12,32,0)); }
.amenidades .amenities-carousel .am-nav{
  background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.28); color:#fff;
  backdrop-filter:blur(6px);
}
.amenidades .amenities-carousel .am-nav:hover{ background:rgba(255,255,255,.2); }
.amenidades .am-card::before{ color:rgba(255,255,255,.92); }
  .am-card:first-child{ margin-left:clamp(-48px,-4vw,-24px); }
.am-card{ transition:opacity var(--t-rapido) var(--ease), transform var(--t-lento) var(--ease), box-shadow var(--t-medio) var(--ease); }
.am-card:hover{ box-shadow:0 24px 50px -16px rgba(4,10,28,.7); }
  .am-track{ grid-auto-rows:minmax(13rem,auto); }
  .am-card:nth-child(1){ height:15rem; }
  .am-card:nth-child(2), .am-card:nth-child(3){ height:13rem; }
.amenidades .am-disclaimer{
  color:rgba(255,255,255,.62); opacity:1; text-align:center; margin:16px 0 0;
}
  .amenidades .am-disclaimer{ margin-top:12px; }

.amenidades .am-window{ overflow:hidden; width:100%; }
.amenidades .am-track{
  display:flex !important;
  grid-template-columns:none !important;
  grid-auto-rows:auto !important;
  width:max-content;
  gap:18px;
  will-change:transform;
}
.amenidades .am-card{
  grid-column:auto !important; grid-row:auto !important;
  height:auto !important;
  flex:0 0 clamp(220px, 23vw, 310px);
  margin-left:0 !important;
  border-radius:3px !important;
  opacity:1 !important;

}
.amenidades .am-card .am-card-img{ aspect-ratio:4 / 3; }
.amenidades .am-card .media{ height:100%; }
.amenidades .am-card::before{ display:none !important; content:none !important; }
.amenidades .amenities-carousel .am-nav{ display:none !important; }
.amenidades .amenities-carousel{ display:block; }
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(190px, 58vw, 240px); }
}
@media (prefers-reduced-motion: reduce){
  .amenidades .am-track{ animation:none; width:auto; overflow-x:auto; }
  .amenidades .am-window{ overflow-x:auto; }
}
.amenidades .am-track{
  flex-wrap:nowrap !important;
  width:max-content !important;
  max-width:none !important;
  align-items:stretch;
}
.amenidades .am-card:nth-child(n+4){ display:block !important; }
.amenidades .am-card{ flex:0 0 clamp(260px, 27vw, 380px); }
.amenidades .am-card .am-card-img{ aspect-ratio:3 / 2; }
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(210px, 62vw, 280px); }
}
.amenidades .am-window{ margin-right:calc(50% - 50vw); }
.amenidades .am-disclaimer{ margin-top:14px; }
.amenidades .am-window{ width:auto; }

.amenidades .am-track{ animation:none !important; }
.amenidades .am-card{

  transform-origin:center center;
}
.amenidades .am-card.is-mid{ z-index:2; }
.amenidades .am-track{ align-items:center; padding-block:26px; }
@media (prefers-reduced-motion: reduce){
  .amenidades .am-card{ transition:none; transform:none !important; }
}
.amenidades .am-card,
.amenidades .am-card:hover,
.amenidades .am-card.is-mid{ box-shadow:none !important; }
.amenidades .am-track{ padding-block:clamp(46px,6vw,74px); gap:22px; }
.amenidades .am-window{ overflow:hidden; }
.amenidades .amenities-carousel{ position:relative; display:block; }
.amenidades .amenities-carousel .am-nav{
  display:flex !important;
  position:absolute; top:50%; transform:translateY(-50%); z-index:5;
  width:46px; height:46px; border-radius:50%;
  align-items:center; justify-content:center;

  background:rgba(255,255,255,.9);
  border:1px solid var(--linea);
  color:var(--texto); cursor:pointer;
  box-shadow:var(--sombra-sm);
  transition:background var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease);
}
.amenidades .amenities-carousel .am-nav:hover{ background:var(--azul-frio); border-color:var(--azul); }
.amenidades .amenities-carousel .am-nav:active{ transform:translateY(-50%) scale(.94); }
.amenidades .amenities-carousel .am-prev{ left:8px; }
.amenidades .amenities-carousel .am-next{ right:8px; }
.amenidades .amenities-carousel .am-nav svg{ width:20px; height:20px; }
@media (max-width:900px){
  .amenidades .am-track{ padding-block:clamp(34px,7vw,52px); gap:16px; }
  .amenidades .amenities-carousel .am-nav{ width:40px; height:40px; }
  .amenidades .amenities-carousel .am-prev{ left:4px; }
  .amenidades .amenities-carousel .am-next{ right:4px; }
}
.amenidades .am-track{
  gap:26px;
  padding-block:clamp(30px,4vw,48px);
  align-items:center;
  transform-origin:left center;
}
.amenidades .am-card{
  flex:0 0 clamp(300px, 44vw, 620px);
  transform:scale(.76);
  opacity:.5;

  transition:transform var(--t-carrusel) var(--ease), opacity var(--t-carrusel) var(--ease);
  transform-origin:center center;
}
.amenidades .am-card.is-mid{
  transform:scale(1);
  opacity:1;
  z-index:3;
}
.amenidades .am-card .am-card-img{ aspect-ratio:16 / 10; }
.amenidades .am-card .am-card-name{ font-size:1rem; }
.amenidades .am-card.is-mid .am-card-name{ font-size:1.24rem; }
@media (max-width:900px){
  .amenidades .am-track{ gap:16px; padding-block:26px; }
  .amenidades .am-card{ flex:0 0 clamp(240px, 76vw, 420px); transform:scale(.82); }
  .amenidades .am-card .am-card-name{ font-size:.9rem; }
  .amenidades .am-card.is-mid .am-card-name{ font-size:1.05rem; }
}
@media (prefers-reduced-motion: reduce){
  .amenidades .am-card{ transition:none; }
}
.amenidades .am-card{ opacity:.45 !important; }
.amenidades .am-card.is-mid{ opacity:1 !important; }
.amenidades .am-card{
  flex:0 0 clamp(260px, 34vw, 460px) !important;
  transform:scale(.94);
  opacity:.42 !important;
}
.amenidades .am-card.is-mid{
  transform:scale(1.06);
  opacity:1 !important;
}
.amenidades .am-card .am-card-img{ aspect-ratio:16 / 10 !important; }
.amenidades .am-card .media{ height:100% !important; }
.amenidades .am-card .media img{ width:100%; height:100%; object-fit:cover; }
.amenidades .am-track{ gap:18px; }
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(230px, 70vw, 340px) !important; }
  .amenidades .am-track{ gap:12px; }
}
.amenidades .am-window{
  margin-left:calc(50% - 50vw) !important;
  margin-right:calc(50% - 50vw) !important;
  width:100vw !important;
  max-width:100vw !important;
  overflow:hidden;
}
.amenidades .am-card{
  flex:0 0 clamp(280px, 41vw, 580px) !important;
  transform:scale(.88);
}
.amenidades .am-card.is-mid{ transform:scale(1.1); }
.amenidades .am-track{ gap:26px; padding-block:clamp(52px,6vw,84px); }
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(240px, 74vw, 380px) !important; transform:scale(.9); }
  .amenidades .am-card.is-mid{ transform:scale(1.06); }
  .amenidades .am-track{ gap:16px; padding-block:34px; }
}
.amenidades .am-nav{
  width:44px;
  height:44px;
}
@media (max-width:560px){
  .model-panel{ padding:18px; }
  .model-panel .model-ctas{ flex-direction:column; align-items:stretch; gap:14px; }
  .model-panel .model-ctas .btn{ width:100%; text-align:center; }
  .model-tour-link{ justify-content:center; }
  .am-title{ font-size:1.3rem; }
  .am-desc{ font-size:.86rem; padding:18px 20px; }
  .am-name{ padding:18px 20px; }
}
@media (max-width:900px){ .am-card{ flex-basis:calc((100% - 22px)/2.2); } }
@media (max-width:560px){ .am-card{ flex-basis:84%; } .am-track{ gap:16px; } .amenities-carousel .am-nav{ top:40%; } .am-prev{ left:-4px; } .am-next{ right:-4px; } }
@media (prefers-reduced-motion: reduce){
  .scroll-progress{ display:none; }
  .rv, .reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
  .hero-media img{ animation:none; }
  .tn-pulse{ animation:none; opacity:.4; }
  .btn:hover, .btn:active,
  .model-tab:hover, .mc-nav:hover, .am-nav:hover,
  .am-card:hover, .tray-card:hover .tray-img, .btn-brochure-dl:hover{ transform:none; }
  .model-carousel:hover .mc-slide.is-active .media img,
  .am-card:hover .media img{ transform:none; }
}
@media (prefers-reduced-motion: reduce){
  .am-card::after{ transition:none; }
}
@media (max-width:900px){ .am-card{ flex-basis:calc((100% - 44px)/3.3); } }
@media (max-width:560px){ .am-card{ flex-basis:calc((100% - 16px)/2.35); } .am-track{ gap:16px; } }
@media (max-width:900px){
  .am-track{ grid-auto-rows:11.5rem; }
}
@media (max-width:560px){
  .am-track{ grid-template-columns:repeat(2, minmax(0,1fr)); grid-auto-rows:13rem; gap:10px; }
  .am-card{ grid-column:span 1 !important; grid-row:span 1 !important; }
  .am-card:nth-child(1){ grid-column:span 2 !important; grid-row:span 1 !important; height:15rem; }
  .am-card-name{ font-size:.86rem; left:12px; right:12px; bottom:12px; }
  .am-card:nth-child(1) .am-card-name{ font-size:1rem; }
}
@media (prefers-reduced-motion: reduce){
  .am-card, .am-card.am-out, .am-card.am-swap{ transition:none; opacity:1; transform:none; }
}
@media (min-width:1180px){
  .amenidades .container{ overflow:visible; }
  .am-card:first-child{ margin-left:clamp(-48px,-4vw,-24px); }
}
@media (max-width:560px){
  .am-track{ grid-auto-rows:minmax(13rem,auto); }
  .am-card:nth-child(1){ height:15rem; }

  .am-card:nth-child(2), .am-card:nth-child(3){ height:13rem; }
}
@media (max-width:760px){
  .amenidades{ padding-bottom:44px; }
  .amenidades .am-disclaimer{ margin-top:12px; }
}
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(190px, 58vw, 240px); }
}
@media (prefers-reduced-motion: reduce){
  .amenidades .am-track{ animation:none; width:auto; overflow-x:auto; }
  .amenidades .am-window{ overflow-x:auto; }
}
@media (max-width:900px){
  .mrow{ grid-template-columns:1fr; }
  .mrow .mc-viewport{ aspect-ratio:16 / 10; }
  .amenidades .am-card{ flex:0 0 clamp(210px, 62vw, 280px); }
}
@media (max-width:900px)`). La
   segunda anula a la primera y, fuera de ese breakpoint, la animación se queda
   SIN fotogramas: `animation-name` y `duration` se ven correctos pero el
   `transform` computa `none` y nada se mueve.
   Ahora el desplazamiento lo lleva `app.js` (bucle infinito real + escala de la
   tarjeta central), así que aquí se desactiva la animación CSS.            */
.amenidades .am-track{ animation:none !important; will-change:transform; }
@media (prefers-reduced-motion: reduce){
  .amenidades .am-card{ transition:none; transform:none !important; }
}
@media (max-width:900px){
  .amenidades .am-track{ padding-block:clamp(34px,7vw,52px); gap:16px; }
  .amenidades .amenities-carousel .am-nav{ width:40px; height:40px; }
  .amenidades .amenities-carousel .am-prev{ left:4px; }
  .amenidades .amenities-carousel .am-next{ right:4px; }
}
@media (max-width:900px){
  .amenidades .am-track{ gap:16px; padding-block:26px; }
  .amenidades .am-card{ flex:0 0 clamp(240px, 76vw, 420px); transform:scale(.82); }
  .amenidades .am-card .am-card-name{ font-size:.9rem; }
  .amenidades .am-card.is-mid .am-card-name{ font-size:1.05rem; }
}
@media (prefers-reduced-motion: reduce){
  .amenidades .am-card{ transition:none; }
}
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(230px, 70vw, 340px) !important; }
  .amenidades .am-track{ gap:12px; }
}
@media (max-width:900px){
  .amenidades .am-card{ flex:0 0 clamp(240px, 74vw, 380px) !important; transform:scale(.9); }
  .amenidades .am-card.is-mid{ transform:scale(1.06); }
  .amenidades .am-track{ gap:16px; padding-block:34px; }
}


.form-success { text-align: center; padding: var(--s-6) var(--s-4); }
.form-success-title { font-family: var(--f-titulo); font-weight: var(--peso-titulo); font-size: 1.5rem; color: var(--verde-osc); margin-bottom: var(--s-3); }
.form-success p { color: var(--texto-medio); font-weight: 600; margin: 0; }
.brochure-dl-link { color: var(--azul); text-decoration: underline; }
.proyecto-brochure svg { width: 18px; height: 18px; }



.sp-plantas{ display:flex; flex-direction:column; gap:clamp(34px, 5vw, 62px); }
.sp-planta{
  display:grid; grid-template-columns:minmax(0, 2fr) minmax(230px, 1fr);
  gap:clamp(22px, 3.4vw, 46px); align-items:center;
}
.sp-planta-plano{ margin:0; }
.sp-planta-plano .sp-media{ background:none; }
.sp-planta-plano .sp-media img{ width:100%; height:auto; object-fit:contain; }
.sp-planta-tit{
  font-family:var(--f-display); font-weight:400;
  font-size:clamp(1.25rem, 2.2vw, 1.7rem); line-height:1.15;
  margin:0 0 14px; color:var(--texto);
}
.sp-planta-lista{ list-style:none; margin:0; padding:0; }
.sp-planta-lista li{
  position:relative; padding:9px 0 9px 20px;
  font-size:.92rem; line-height:1.4; color:var(--texto-medio);
  border-bottom:1px solid var(--linea);
}
.sp-planta-lista li:last-child{ border-bottom:0; }
.sp-planta-lista li::before{
  content:""; position:absolute; left:2px; top:16px;
  width:6px; height:6px; border-radius:50%; background:var(--amarillo-osc);
}
  .sp-planta{ grid-template-columns:1fr; gap:18px; align-items:start; }
  .sp-planta-tit{ font-size:1.2rem; margin-bottom:10px; }
  .sp-plantas{ gap:38px; }
  .sp-planta-lista li{ padding:8px 0 8px 18px; font-size:.88rem; }
@media (max-width:900px){
  .sp-planta{ grid-template-columns:1fr; gap:18px; align-items:start; }
  .sp-planta-tit{ font-size:1.2rem; margin-bottom:10px; }
  .sp-plantas{ gap:38px; }
}
@media (max-width:520px){
  .sp-planta-lista li{ padding:8px 0 8px 18px; font-size:.88rem; }
}
.sp-planta-tit { font-family: var(--f-titulo); font-weight: var(--peso-titulo); letter-spacing: var(--track-titulo); color: var(--verde-osc); }
.sp-planta-lista li { font-weight: 600; }
.sp-planta-plano .sp-plano-zoom { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.sp-planta-plano .sp-media img { width: 100%; height: auto; object-fit: contain; display: block; }
.sp-planta--sin-plano { grid-template-columns: 1fr; }




@media (max-width: 900px) {
  .plan-mapa .plan-maestro-zoom { position: static; display: inline-flex; margin: 12px 0 0 var(--s-5); left: auto; right: auto; bottom: auto; }
}

@media (min-width: 901px) and (max-width: 1400px) and (max-height: 820px) {
  .hero { padding: var(--s-7) 0; }
}

.deco-blob--ubicacion { opacity: .12; }
@media (max-width: 900px) { .deco-blob--ubicacion { display: none; } }

.footer-credit-logo { height: 24px; width: auto; aspect-ratio: auto 600 / 442; }


.amenidades .am-disclaimer { color: var(--texto-suave); opacity: 1; }
@media (min-width: 901px) and (max-width: 1400px) and (max-height: 820px) {
  .hero { padding: var(--s-5) 0 var(--s-6); }
  .hero-form-card { padding: var(--s-5) var(--s-6); }
  .hero-form-card .form-title { margin-bottom: var(--s-2); }
  .hero-title { font-size: clamp(2rem, 3.6vw, 3rem); margin-bottom: var(--s-4); }
}


@media (max-width: 640px) {
  .gal-nav { top: 50%; bottom: auto; transform: translateY(-50%); width: 40px; height: 40px; }
  .gal-prev { left: 10px; right: auto; }
  .gal-next { right: 10px; }
}


.model-vendido-nota { font-size: .9rem; color: var(--texto-medio); }
.model-actions .btn-full { width: 100%; }


.form-ok { display: grid; gap: 12px; justify-items: start; padding: var(--s-5) 0; }
.form-ok-title { font-family: var(--f-display); font-weight: 700; font-size: 1.35rem; color: var(--azul); }
.form-ok p { margin: 0; color: var(--texto-medio); }


@media (max-width: 640px) {
  .plan-foto { --pf: clamp(42px, 12cqw, 150px); width: var(--pf); }
  .plan-foto .plan-foto-aro { border-width: 2px; }
  .plan-foto figcaption, .plan-foto-rotulo { font-size: 8px; padding: 2px 5px; }
  .plan-via { display: none; }
}


.etapa-bloque[id] { scroll-margin-top: 84px; }
@media (max-width: 900px) { .etapa-bloque[id] { scroll-margin-top: 70px; } }


@media (max-width: 640px) { .plan-foto[data-foto="garita"] { margin-left: 7cqw; margin-top: 5cqw; } }


@media (max-width: 640px) {
  .model-specs { grid-template-columns: 1fr; }
}




.rv { opacity: 0; transform: translateY(14px); transition: opacity var(--t-lento) var(--ease) var(--rvd, 0ms), transform var(--t-lento) var(--ease) var(--rvd, 0ms); }
.rv-in { opacity: 1; transform: none; }


img.hero-media {
  animation: kenburns 26s ease-in-out infinite alternate;
  transform-origin: center;
  will-change: transform;
  backface-visibility: hidden;
}
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.06); } }

@keyframes modalIn { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

@keyframes modalOut { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(6px) scale(.99); } }
@keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } }
.modal.is-cerrando { display: flex; pointer-events: none; }
.modal.is-cerrando .modal-card { animation: modalOut var(--t-rapido) var(--ease) both; }
.modal.is-cerrando .modal-backdrop { animation: fadeOut var(--t-rapido) var(--ease) both; }
.modal.is-open .modal-card { animation: modalIn .26s var(--ease) both; }
.modal.is-open .modal-backdrop { animation: fadeIn .22s var(--ease) both; }

@keyframes galIn { from { opacity: 0; } to { opacity: 1; } }
.model-gallery-main .media { animation: galIn .35s var(--ease) both; }

.btn-primary:hover, .btn-outline:hover, .btn-wa:hover { transform: translateY(-1px); }
.btn:active { transform: scale(.97); }
.tray-card .tray-logo, .footer-credit-logo { transition: transform var(--t-medio) var(--ease); }
.tray-card:hover .tray-logo { transform: translateY(-3px); }
.faq-q { transition: color var(--t-rapido) var(--ease); }
.nav-desktop a { transition: color var(--t-rapido) var(--ease); }
@media (prefers-reduced-motion: reduce) {
  .rv, .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  img.hero-media, .modal.is-open .modal-card, .modal.is-open .modal-backdrop,
  .modal.is-cerrando .modal-card, .modal.is-cerrando .modal-backdrop,
  .model-gallery-main .media { animation: none !important; }
  .faq-a { transition: none; }
}


.media--plano, .media--plano img { background: transparent; }
.model-gallery-main:has(.media--plano), .etapa-bloque:nth-child(even) .model-gallery-main:has(.media--plano) { background: transparent; }
.model-thumbs button:has(img[src*="cs_plano"]) { background: transparent; }
.sp-plano .sp-media, .sp-plano .sp-media img, #planoModal .modal-body, #planoModal .media { background: transparent; }

@media (max-width: 640px) {
  .model-gallery-main { overflow: visible; }
  .model-gallery-main .media { border-radius: var(--r); overflow: hidden; }
  .model-gallery-bar { min-height: 44px; align-items: center; padding-right: 104px; position: relative; }
  .gal-nav { top: calc(100% + var(--s-3)); bottom: auto; transform: none; z-index: 5; width: 44px; height: 44px; border-color: var(--linea); background: var(--blanco); }
  .gal-prev { right: 52px; left: auto; }
  .gal-next { right: 0; left: auto; }
}

.section.tono-blanco { background: var(--blanco); }
.section.tono-crema { background: var(--crema); }


.modal-body--visor .visor-hoja,
.modal-body--visor .visor-hoja.es-suelta,
.modal-body--visor .visor-hoja.es-pliego {
  position: absolute; top: 0; bottom: 0; left: 74px; right: 74px;
  height: auto; width: auto; max-width: none; max-height: none;
  aspect-ratio: auto; background: none; box-shadow: none;
  align-items: center; justify-content: center;
}
@media (max-width: 900px) { .modal-body--visor .visor-hoja, .modal-body--visor .visor-hoja.es-suelta, .modal-body--visor .visor-hoja.es-pliego { left: 46px; right: 46px; } }
@media (max-width: 660px) and (orientation: portrait) { .modal-body--visor .visor-hoja, .modal-body--visor .visor-hoja.es-suelta, .modal-body--visor .visor-hoja.es-pliego { left: 10px; right: 10px; } }


.plan-texto .proyecto-acciones { justify-content: flex-start; }

.deco-hoja, .deco-flor { opacity: .72; }
.deco-hoja--modelos { opacity: .55; }
.deco-flor--amenidades { opacity: .6; }
.deco-hoja--cta { opacity: .35; }
.proyecto, .faq, .contacto, .cta-final, .referidos-banner { position: relative; overflow: hidden; }
.deco-flor--proyecto { left: 2%; right: auto; top: auto; bottom: 18px; width: min(13vw, 170px); transform: none; }
.deco-hoja--ubicacion { right: 1.5%; bottom: 40px; width: min(15vw, 170px); transform: rotate(-12deg); }
.deco-flor--faq { right: 2%; top: 36px; width: min(12vw, 140px); transform: scaleX(-1); }
.deco-hoja--respaldo { left: 1%; bottom: -10px; width: min(14vw, 160px); transform: rotate(16deg); }
.deco-flor--contacto { left: 2%; bottom: 24px; top: auto; right: auto; width: min(12vw, 150px); }
@media (max-width: 900px) {
  .deco-hoja--modelos, .deco-flor--amenidades, .deco-hoja--ubicacion, .deco-flor--faq, .deco-hoja--respaldo, .deco-flor--contacto, .deco-hoja--cta { display: none; }
  .deco-flor--proyecto { width: 90px; bottom: 8px; left: 12px; opacity: .55; }
}


.footer-credits .footer-credit-logo--fop { height: 46px; }
@media (max-width: 640px) { .footer-credits .footer-credit-logo--fop { height: 40px; } }


.proyecto { padding-bottom: calc(var(--s-8) + 70px); }
.deco-flor--proyecto { width: 100px; bottom: 0; left: 2.5%; }
.deco-hoja--respaldo { left: auto; right: 3%; bottom: 10px; width: min(13vw, 150px); transform: rotate(10deg); }
.deco-flor--faq { top: auto; bottom: 24px; right: 2%; }
.deco-hoja--ubicacion { right: auto; left: 1%; bottom: -30px; width: min(12vw, 150px); transform: rotate(-8deg); }
.deco-hoja--cta { opacity: .5; }
.footer-credits .footer-credit-logo { height: 30px; }
@media (max-width: 900px) {
  .proyecto { padding-bottom: var(--s-8); }
  .deco-flor--proyecto { left: auto; right: 12px; bottom: 6px; width: 64px; opacity: .6; }
}
