/* Se anima la geometría del SVG original, sin modificar el diseño. */
.logo-drawing {overflow:visible;animation:none;}
.logo-drawing.is-drawing path {fill-opacity:0;stroke:#DBDBCE;stroke-width:.9px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:logo-outline 1.35s cubic-bezier(.45,0,.2,1) var(--draw-delay,0s) forwards,logo-fill .65s ease calc(var(--draw-delay,0s) + 1.1s) forwards;}
.logo-drawing.is-drawing text {opacity:0;animation:logo-text .65s ease 1.55s forwards;}
@keyframes logo-outline {to {stroke-dashoffset:0;}}
@keyframes logo-fill {to {fill-opacity:1;stroke-opacity:0;}}
@keyframes logo-text {to {opacity:1;}}
@media(prefers-reduced-motion:reduce) {.logo-drawing.is-drawing path {fill-opacity:1;stroke:none;stroke-dashoffset:0;}.logo-drawing.is-drawing text {opacity:1;}}

/* Cada fotografía tiene sus propios trazos y proporciones. */
.construction-lines {pointer-events:none;opacity:0;transform:scale(1.045);}
.construction-lines svg {display:block;width:100%;height:100%;overflow:hidden;}
.construction-lines path {fill:none;stroke:#DBDBCE;stroke-width:1.1;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;}
.construction-lines.is-drawing {animation:construction-visibility 4.15s linear both,hero-drift var(--hero-drift,5500ms) linear both;}
.construction-lines.is-drawing path {animation:construction-draw 1.35s cubic-bezier(.3,.1,.2,1) var(--line-delay) forwards;}
@keyframes construction-draw {to {stroke-dashoffset:0;}}
@keyframes construction-visibility {0%,16% {opacity:0;}28%,72% {opacity:.85;}100% {opacity:0;}}
.hero.is-page-hidden .is-drawing,.hero.is-page-hidden .is-drawing * {animation-play-state:paused!important;}
@media(prefers-reduced-motion:reduce) {.construction-lines {display:none;}}

/* Inversión — coreografía arquitectónica. El hero anterior permanece intacto. */
:root {
  --investment-ease: cubic-bezier(.16, 1, .3, 1);
  --investment-ease-draw: cubic-bezier(.65, 0, .35, 1);
}

/* Estructura auxiliar para máscaras, dibujo y parallax. */
.investment-motion-line,
.investment-copy-line {
  overflow: hidden;
}

.investment-motion-line {
  padding-bottom: .12em;
  margin-bottom: -.12em;
}

.investment-motion-line__inner,
.investment-copy-line > span {
  display: block;
}

.investment-section__title-second {
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  gap: .12em;
  white-space: nowrap;
}

.investment-section__title-con {
  position: relative;
  align-self: flex-start;
  margin-top: .035em;
  text-decoration: none;
}

.investment-section__title-con::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -.09em;
  height: 1px;
  background: currentColor;
  transform-origin: left center;
}

.investment-section__media {
  overflow: visible;
  isolation: isolate;
}

.investment-section__media-reveal {
  position: relative;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 1.64 / 1;
  background: #c8c8bd;
}

.investment-section__media-reveal img {
  position: absolute;
  inset: -4% 0;
  width: 100%;
  height: 108%;
  aspect-ratio: auto;
  object-fit: cover;
  object-position: center 43%;
  transform: translate3d(0, var(--investment-parallax, 0px), 0) scale(1);
}

.investment-section__media-line {
  position: absolute;
  z-index: 3;
  display: block;
  background: #91722b;
  pointer-events: none;
}

.investment-section__media-line--top,
.investment-section__media-line--bottom {
  left: -1.1rem;
  width: calc(100% + 2.2rem);
  height: 1px;
  transform-origin: left center;
}

.investment-section__media-line--top { top: -1.1rem; }
.investment-section__media-line--bottom { bottom: -1.1rem; transform-origin: right center; }

.investment-section__media-line--left,
.investment-section__media-line--right {
  top: -1.1rem;
  height: calc(100% + 2.2rem);
  width: 1px;
  transform-origin: center top;
}

.investment-section__media-line--left { left: -1.1rem; transform-origin: center bottom; }
.investment-section__media-line--right { right: -1.1rem; }

.investment-section__features {
  list-style: none;
  padding-left: 0;
}

.investment-section__features li {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: .48em;
  overflow: hidden;
}

.investment-section__features li::before {
  content: "";
  flex: 0 0 auto;
  width: .28em;
  height: .28em;
  border-radius: 50%;
  background: currentColor;
  transform-origin: center;
}

.investment-section__features li > span {
  display: block;
}

.investment-reasons__title-part {
  display: inline-block;
}

.investment-reasons__card {
  position: relative;
  border-left: 0 !important;
}

.investment-reasons__card:not(:first-child)::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 1px;
  background: rgb(10 4 10 / .44);
  transform-origin: top center;
}

.investment-reasons__number {
  position: relative;
  overflow: hidden;
  background: transparent;
  isolation: isolate;
}

.investment-reasons__number::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--section-gold);
  transform-origin: center bottom;
}

.investment-reasons__number-text {
  display: block;
}

/* El estado inicial solo existe cuando JS confirma que hay movimiento disponible. */
html.has-investment-motion [data-investment-scene="statement"] .investment-motion-line__inner {
  transform: translate3d(0, 112%, 0) rotate(.35deg);
}

html.has-investment-motion [data-investment-scene="statement"] .investment-section__title-con::after {
  transform: scaleX(0);
}

html.has-investment-motion [data-investment-scene="statement"] .investment-section__title-con-word {
  display: inline-block;
  opacity: 0;
  transform: translate3d(0, .42em, 0);
}

html.has-investment-motion [data-investment-scene="statement"] .investment-section__rule {
  opacity: .35;
  transform: scaleX(0);
  transform-origin: center center;
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__media-line--top,
html.has-investment-motion [data-investment-scene="project"] .investment-section__media-line--bottom {
  transform: scaleX(0);
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__media-line--left,
html.has-investment-motion [data-investment-scene="project"] .investment-section__media-line--right {
  transform: scaleY(0);
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__media-reveal {
  clip-path: inset(0 100% 0 0);
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__media-reveal img {
  transform: translate3d(0, var(--investment-parallax, 0px), 0) scale(1.085);
  filter: saturate(.82) contrast(.94);
}

html.has-investment-motion [data-investment-scene="project"] .investment-copy-line > span {
  transform: translate3d(-1.25em, 112%, 0);
  opacity: 0;
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__features li::before {
  transform: scale(0);
  opacity: 0;
}

html.has-investment-motion [data-investment-scene="project"] .investment-section__features li > span {
  clip-path: inset(0 100% 0 0);
  transform: translateX(-.7em);
}

html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__title-part {
  opacity: 0;
  clip-path: inset(0 0 100% 0);
  transform: translateY(.7em);
}

html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__card:not(:first-child)::before {
  transform: scaleY(0);
}

html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__number::before {
  transform: scaleY(0);
}

html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__number-text {
  opacity: 0;
  transform: translateY(75%);
}

html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__heading,
html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__text {
  opacity: 0;
  clip-path: inset(0 0 100% 0);
  transform: translateY(1.1rem);
}

/* ESCENA 1 — declaración: texto, subrayado y eje horizontal. */
html.has-investment-motion [data-investment-scene="statement"].is-active .investment-motion-line:nth-child(1) .investment-motion-line__inner {
  animation: investment-type-rise 1.02s var(--investment-ease) .05s both;
}

html.has-investment-motion [data-investment-scene="statement"].is-active .investment-motion-line:nth-child(2) .investment-motion-line__inner {
  animation: investment-type-rise 1.08s var(--investment-ease) .22s both;
}

html.has-investment-motion [data-investment-scene="statement"].is-active .investment-section__title-con::after {
  animation: investment-line-draw .72s var(--investment-ease-draw) .78s both;
}

html.has-investment-motion [data-investment-scene="statement"].is-active .investment-section__title-con-word {
  animation: investment-con-rise .66s var(--investment-ease) 1.03s both;
}

html.has-investment-motion [data-investment-scene="statement"].is-active .investment-section__rule {
  animation: investment-axis-open 1.12s var(--investment-ease) 1.18s both;
}

/* ESCENA 2 — el plano dibuja el marco y descubre el proyecto. */
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-line--top {
  animation: investment-frame-x .7s var(--investment-ease-draw) .04s both,
             investment-guide-away .55s ease 1.52s forwards;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-line--right {
  animation: investment-frame-y .58s var(--investment-ease-draw) .38s both,
             investment-guide-away .55s ease 1.52s forwards;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-line--bottom {
  animation: investment-frame-x .7s var(--investment-ease-draw) .63s both,
             investment-guide-away .55s ease 1.52s forwards;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-line--left {
  animation: investment-frame-y .58s var(--investment-ease-draw) .9s both,
             investment-guide-away .55s ease 1.52s forwards;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-reveal {
  animation: investment-image-open 1.28s var(--investment-ease) .42s both;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__media-reveal img {
  animation: investment-image-settle 1.65s var(--investment-ease) .42s both;
}

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__eyebrow .investment-copy-line:nth-child(1) > span { animation: investment-copy-rise .78s var(--investment-ease) .64s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__eyebrow .investment-copy-line:nth-child(2) > span { animation: investment-copy-rise .78s var(--investment-ease) .75s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__eyebrow .investment-copy-line:nth-child(3) > span { animation: investment-copy-rise .78s var(--investment-ease) .86s both; }

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__lead .investment-copy-line:nth-child(1) > span { animation: investment-copy-rise .7s var(--investment-ease) 1.03s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__lead .investment-copy-line:nth-child(2) > span { animation: investment-copy-rise .7s var(--investment-ease) 1.11s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__lead .investment-copy-line:nth-child(3) > span { animation: investment-copy-rise .7s var(--investment-ease) 1.19s both; }

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(1)::before { animation: investment-dot-pop .48s var(--investment-ease) 1.30s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(2)::before { animation: investment-dot-pop .48s var(--investment-ease) 1.38s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(3)::before { animation: investment-dot-pop .48s var(--investment-ease) 1.46s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(4)::before { animation: investment-dot-pop .48s var(--investment-ease) 1.54s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(5)::before { animation: investment-dot-pop .48s var(--investment-ease) 1.62s both; }

html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(1) > span { animation: investment-feature-open .7s var(--investment-ease) 1.34s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(2) > span { animation: investment-feature-open .7s var(--investment-ease) 1.42s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(3) > span { animation: investment-feature-open .7s var(--investment-ease) 1.50s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(4) > span { animation: investment-feature-open .7s var(--investment-ease) 1.58s both; }
html.has-investment-motion [data-investment-scene="project"].is-active .investment-section__features li:nth-child(5) > span { animation: investment-feature-open .7s var(--investment-ease) 1.66s both; }

/* ESCENA 3 — razones: título, estructura vertical, numeración y contenido. */
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__title-part:nth-child(1) {
  animation: investment-reason-title .9s var(--investment-ease) .02s both;
}

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__title-part:nth-child(2) {
  animation: investment-reason-title .9s var(--investment-ease) .14s both;
}

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2)::before { animation: investment-divider-drop .9s var(--investment-ease) .40s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3)::before { animation: investment-divider-drop .9s var(--investment-ease) .49s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4)::before { animation: investment-divider-drop .9s var(--investment-ease) .58s both; }

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(1) .investment-reasons__number::before { animation: investment-number-fill .58s var(--investment-ease) .64s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2) .investment-reasons__number::before { animation: investment-number-fill .58s var(--investment-ease) .75s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3) .investment-reasons__number::before { animation: investment-number-fill .58s var(--investment-ease) .86s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4) .investment-reasons__number::before { animation: investment-number-fill .58s var(--investment-ease) .97s both; }

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(1) .investment-reasons__number-text { animation: investment-number-rise .54s var(--investment-ease) .78s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2) .investment-reasons__number-text { animation: investment-number-rise .54s var(--investment-ease) .89s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3) .investment-reasons__number-text { animation: investment-number-rise .54s var(--investment-ease) 1.00s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4) .investment-reasons__number-text { animation: investment-number-rise .54s var(--investment-ease) 1.11s both; }

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(1) .investment-reasons__heading { animation: investment-card-copy .72s var(--investment-ease) .90s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2) .investment-reasons__heading { animation: investment-card-copy .72s var(--investment-ease) 1.01s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3) .investment-reasons__heading { animation: investment-card-copy .72s var(--investment-ease) 1.12s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4) .investment-reasons__heading { animation: investment-card-copy .72s var(--investment-ease) 1.23s both; }

html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(1) .investment-reasons__text { animation: investment-card-copy .72s var(--investment-ease) 1.08s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2) .investment-reasons__text { animation: investment-card-copy .72s var(--investment-ease) 1.19s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3) .investment-reasons__text { animation: investment-card-copy .72s var(--investment-ease) 1.30s both; }
html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4) .investment-reasons__text { animation: investment-card-copy .72s var(--investment-ease) 1.41s both; }

@keyframes investment-type-rise {
  0% { transform: translate3d(0,112%,0) rotate(.35deg); }
  100% { transform: translate3d(0,0,0) rotate(0); }
}

@keyframes investment-line-draw { to { transform: scaleX(1); } }

@keyframes investment-con-rise {
  0% { opacity:0; transform:translate3d(0,.42em,0); }
  100% { opacity:1; transform:translate3d(0,0,0); }
}

@keyframes investment-axis-open {
  0% { opacity:.35; transform:scaleX(0); }
  100% { opacity:1; transform:scaleX(1); }
}

@keyframes investment-frame-x { to { transform:scaleX(1); } }
@keyframes investment-frame-y { to { transform:scaleY(1); } }
@keyframes investment-guide-away { to { opacity:0; } }

@keyframes investment-image-open {
  0% { clip-path:inset(0 100% 0 0); }
  100% { clip-path:inset(0 0 0 0); }
}

@keyframes investment-image-settle {
  0% { transform:translate3d(0,var(--investment-parallax,0px),0) scale(1.085); filter:saturate(.82) contrast(.94); }
  100% { transform:translate3d(0,var(--investment-parallax,0px),0) scale(1); filter:saturate(1) contrast(1); }
}

@keyframes investment-copy-rise {
  0% { opacity:0; transform:translate3d(-1.25em,112%,0); }
  100% { opacity:1; transform:translate3d(0,0,0); }
}

@keyframes investment-dot-pop {
  0% { opacity:0; transform:scale(0); }
  65% { opacity:1; transform:scale(1.35); }
  100% { opacity:1; transform:scale(1); }
}

@keyframes investment-feature-open {
  0% { clip-path:inset(0 100% 0 0); transform:translateX(-.7em); }
  100% { clip-path:inset(0 0 0 0); transform:translateX(0); }
}

@keyframes investment-reason-title {
  0% { opacity:0; clip-path:inset(0 0 100% 0); transform:translateY(.7em); }
  100% { opacity:1; clip-path:inset(0 0 0 0); transform:translateY(0); }
}

@keyframes investment-divider-drop { to { transform:scaleY(1); } }
@keyframes investment-number-fill { to { transform:scaleY(1); } }

@keyframes investment-number-rise {
  0% { opacity:0; transform:translateY(75%); }
  100% { opacity:1; transform:translateY(0); }
}

@keyframes investment-card-copy {
  0% { opacity:0; clip-path:inset(0 0 100% 0); transform:translateY(1.1rem); }
  100% { opacity:1; clip-path:inset(0 0 0 0); transform:translateY(0); }
}

@media (max-width:1040px) {
  .investment-section__title-second { white-space: normal; flex-wrap: wrap; row-gap: 0; }
  .investment-copy-line { overflow: visible; }
  .investment-copy-line > span { display: inline; }
}

@media (max-width:760px) {
  .investment-section__media-line--top,
  .investment-section__media-line--bottom { left:-.55rem; width:calc(100% + 1.1rem); }
  .investment-section__media-line--top { top:-.55rem; }
  .investment-section__media-line--bottom { bottom:-.55rem; }
  .investment-section__media-line--left,
  .investment-section__media-line--right { top:-.55rem; height:calc(100% + 1.1rem); }
  .investment-section__media-line--left { left:-.55rem; }
  .investment-section__media-line--right { right:-.55rem; }
  .investment-reasons__title-part { display:inline; }
}

@media (max-width:480px) {
  .investment-reasons__card:not(:first-child)::before {
    top:0;
    left:12%;
    right:12%;
    bottom:auto;
    width:auto;
    height:1px;
    transform-origin:left center;
  }
  html.has-investment-motion [data-investment-scene="reasons"] .investment-reasons__card:not(:first-child)::before { transform:scaleX(0); }
  html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(2)::before,
  html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(3)::before,
  html.has-investment-motion [data-investment-scene="reasons"].is-active .investment-reasons__card:nth-child(4)::before { animation:investment-frame-x .9s var(--investment-ease) both; }
}

@media (prefers-reduced-motion:reduce) {
  .investment-section__media-line { display:none; }
  .investment-section__media-reveal,
  .investment-section__media-reveal img,
  .investment-motion-line__inner,
  .investment-section__title-con::after,
  .investment-section__title-con-word,
  .investment-copy-line > span,
  .investment-section__features li::before,
  .investment-section__features li > span,
  .investment-reasons__title-part,
  .investment-reasons__card:not(:first-child)::before,
  .investment-reasons__number::before,
  .investment-reasons__number-text,
  .investment-reasons__heading,
  .investment-reasons__text {
    animation:none!important;
    opacity:1!important;
    transform:none!important;
    clip-path:none!important;
    filter:none!important;
  }
}

/* ---------------------------------------------------------------
   03. UBICACIÓN — conexión urbana / mapa
   El contenido solo se oculta si JS activa .has-location-motion.
   --------------------------------------------------------------- */
:root {
  --location-ease: cubic-bezier(.16, 1, .3, 1);
}

html.has-location-motion [data-location-scene="title"] .location-motion-line > span {
  transform: translateY(118%);
  will-change: transform;
}

html.has-location-motion [data-location-scene="info"] .location-section__intro,
html.has-location-motion [data-location-scene="info"] .location-section__list li {
  opacity: 0;
  transform: translateY(1.1rem);
  will-change: opacity, transform;
}

html.has-location-motion [data-location-scene="info"] .location-section__callout-line {
  transform: scaleX(0);
  will-change: transform;
}

html.has-location-motion [data-location-scene="info"] .location-section__callout p {
  opacity: 0;
  clip-path: inset(0 0 100% 0);
  transform: translateY(1rem);
  will-change: opacity, clip-path, transform;
}

html.has-location-motion [data-location-scene="map"] .location-map__reveal {
  clip-path: inset(50% 0 50% 0);
  will-change: clip-path;
}

html.has-location-motion [data-location-scene="map"] .location-map__frame {
  transform: scale(1.09);
  filter: saturate(.65) contrast(1.08) brightness(.74);
  will-change: transform, filter;
}

html.has-location-motion [data-location-scene="map"] .location-map__scan--top,
html.has-location-motion [data-location-scene="map"] .location-map__scan--bottom {
  transform: scaleX(0);
}

html.has-location-motion [data-location-scene="map"] .location-map__scan--left,
html.has-location-motion [data-location-scene="map"] .location-map__scan--right {
  transform: scaleY(0);
}

html.has-location-motion [data-location-scene="map"] .location-map__pin {
  opacity: 0;
  transform: translate(-50%, -150%) scale(.84);
  will-change: opacity, transform;
}

html.has-location-motion [data-location-scene="map"] .location-map__pin-ring {
  opacity: 0;
  transform: translateX(-50%) scale(.45);
}

html.has-location-motion [data-location-scene="title"].is-active .location-motion-line:nth-child(1) > span {
  animation: location-title-rise 1.05s var(--location-ease) .02s both;
}

html.has-location-motion [data-location-scene="title"].is-active .location-motion-line:nth-child(2) > span {
  animation: location-title-rise 1.08s var(--location-ease) .17s both;
}

html.has-location-motion [data-location-scene="title"].is-active .location-section__connector {
  animation: location-connector-focus .9s var(--location-ease) .62s both;
}

html.has-location-motion [data-location-scene="info"].is-active .location-section__intro {
  animation: location-copy-rise .8s var(--location-ease) .04s both;
}

html.has-location-motion [data-location-scene="info"].is-active .location-section__list li:nth-child(1) {
  animation: location-copy-rise .72s var(--location-ease) .24s both;
}
html.has-location-motion [data-location-scene="info"].is-active .location-section__list li:nth-child(2) {
  animation: location-copy-rise .72s var(--location-ease) .32s both;
}
html.has-location-motion [data-location-scene="info"].is-active .location-section__list li:nth-child(3) {
  animation: location-copy-rise .72s var(--location-ease) .40s both;
}
html.has-location-motion [data-location-scene="info"].is-active .location-section__list li:nth-child(4) {
  animation: location-copy-rise .72s var(--location-ease) .48s both;
}

html.has-location-motion [data-location-scene="info"].is-active .location-section__callout-line--top {
  animation: location-line-open .92s var(--location-ease) .18s both;
}

html.has-location-motion [data-location-scene="info"].is-active .location-section__callout p {
  animation: location-callout-reveal .95s var(--location-ease) .44s both;
}

html.has-location-motion [data-location-scene="info"].is-active .location-section__callout-line--bottom {
  animation: location-line-open .92s var(--location-ease) .68s both;
}

html.has-location-motion [data-location-scene="map"].is-active .location-map__scan--top {
  animation: location-horizontal-draw .72s var(--location-ease) .02s both;
}
html.has-location-motion [data-location-scene="map"].is-active .location-map__scan--right {
  animation: location-vertical-draw .72s var(--location-ease) .20s both;
}
html.has-location-motion [data-location-scene="map"].is-active .location-map__scan--bottom {
  animation: location-horizontal-draw .72s var(--location-ease) .38s both;
}
html.has-location-motion [data-location-scene="map"].is-active .location-map__scan--left {
  animation: location-vertical-draw .72s var(--location-ease) .56s both;
}

html.has-location-motion [data-location-scene="map"].is-active .location-map__reveal {
  animation: location-map-open 1.2s var(--location-ease) .36s both;
}

html.has-location-motion [data-location-scene="map"].is-active .location-map__frame {
  animation: location-map-settle 1.65s var(--location-ease) .36s both;
}

html.has-location-motion [data-location-scene="map"].is-active .location-map__pin {
  animation: location-pin-drop .95s cubic-bezier(.18,1.35,.32,1) 1.15s both;
}

html.has-location-motion [data-location-scene="map"].is-active .location-map__pin-ring {
  animation: location-ring-pulse 1.55s var(--location-ease) 1.52s both;
}

@keyframes location-title-rise {
  0% { transform: translateY(118%); }
  100% { transform: translateY(0); }
}

@keyframes location-connector-focus {
  0% { opacity: 0; transform: translateY(.28em) scale(.74); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes location-copy-rise {
  0% { opacity: 0; transform: translateY(1.1rem); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes location-line-open {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes location-callout-reveal {
  0% { opacity: 0; clip-path: inset(0 0 100% 0); transform: translateY(1rem); }
  100% { opacity: 1; clip-path: inset(0 0 0 0); transform: translateY(0); }
}

@keyframes location-horizontal-draw {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes location-vertical-draw {
  0% { transform: scaleY(0); }
  100% { transform: scaleY(1); }
}

@keyframes location-map-open {
  0% { clip-path: inset(50% 0 50% 0); }
  100% { clip-path: inset(0 0 0 0); }
}

@keyframes location-map-settle {
  0% { transform: scale(1.09); filter: saturate(.65) contrast(1.08) brightness(.74); }
  100% { transform: scale(1.025); filter: saturate(.9) contrast(1.02) brightness(1); }
}

@keyframes location-pin-drop {
  0% { opacity: 0; transform: translate(-50%, -150%) scale(.84); }
  65% { opacity: 1; transform: translate(-50%, -96%) scale(1.035); }
  100% { opacity: 1; transform: translate(-50%, -100%) scale(1); }
}

@keyframes location-ring-pulse {
  0% { opacity: 0; transform: translateX(-50%) scale(.45); }
  45% { opacity: 1; transform: translateX(-50%) scale(1.16); }
  100% { opacity: 1; transform: translateX(-50%) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .location-motion-line > span,
  .location-section__intro,
  .location-section__list li,
  .location-section__callout-line,
  .location-section__callout p,
  .location-map__reveal,
  .location-map__frame,
  .location-map__pin,
  .location-map__pin-ring,
  .location-map__scan {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }

  .location-map__pin { transform: translate(-50%, -100%) !important; }
  .location-map__pin-ring { transform: translateX(-50%) !important; }
}

/* ---------------------------------------------------------------
   04. SUITES — dibujo de líneas / tipologías
   Las líneas construyen cada ficha antes de revelar la información.
   --------------------------------------------------------------- */
:root {
  --suites-ease: cubic-bezier(.16, 1, .3, 1);
}

html.has-suites-motion [data-suites-scene="header"] .suites-section__kicker > span,
html.has-suites-motion [data-suites-scene="header"] .suites-motion-line > span,
html.has-suites-motion [data-suites-scene="header"] .suites-copy-line > span {
  transform: translateY(118%);
  will-change: transform;
}

html.has-suites-motion [data-suites-scene="header"] .suites-section__kicker > span {
  opacity: 0;
}

html.has-suites-motion [data-suites-scene="header"] .suites-section__rule {
  transform: scaleX(0);
  will-change: transform;
}

html.has-suites-motion [data-suites-scene="header"] .suites-section__connector {
  opacity: 0;
  transform: translateY(.28em) scale(.76);
  will-change: opacity, transform;
}

html.has-suites-motion [data-suites-scene="options"] .suite-option__rail,
html.has-suites-motion [data-suites-scene="options"] .suite-option__frame--bottom,
html.has-suites-motion [data-suites-scene="options"] .suite-option__area i {
  transform: scaleX(0);
  will-change: transform;
}

html.has-suites-motion [data-suites-scene="options"] .suite-option__frame--left,
html.has-suites-motion [data-suites-scene="options"] .suite-option__frame--right {
  transform: scaleY(0);
  will-change: transform;
}

html.has-suites-motion [data-suites-scene="options"] .suite-option__node {
  opacity: 0;
  transform: scale(0);
  will-change: opacity, transform;
}

html.has-suites-motion [data-suites-scene="options"] .suite-option__type > span,
html.has-suites-motion [data-suites-scene="options"] .suite-option__area > span {
  opacity: 0;
  transform: translateY(115%);
  will-change: opacity, transform;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-section__kicker > span {
  animation: suites-kicker-rise .82s var(--suites-ease) .02s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-motion-line:nth-of-type(1) > span {
  animation: suites-title-rise 1.02s var(--suites-ease) .16s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-motion-line:nth-of-type(2) > span {
  animation: suites-title-rise 1.02s var(--suites-ease) .29s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-section__connector {
  animation: suites-connector-focus .85s var(--suites-ease) .58s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-section__rule {
  animation: suites-rule-open .94s var(--suites-ease) .66s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-copy-line:nth-child(1) > span {
  animation: suites-copy-rise .78s var(--suites-ease) .78s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-copy-line:nth-child(2) > span {
  animation: suites-copy-rise .78s var(--suites-ease) .86s both;
}

html.has-suites-motion [data-suites-scene="header"].is-active .suites-copy-line:nth-child(3) > span {
  animation: suites-copy-rise .78s var(--suites-ease) .94s both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__rail {
  animation: suites-rail-draw .92s var(--suites-ease) var(--suite-delay) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__frame--left,
html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__frame--right {
  animation: suites-frame-drop .58s var(--suites-ease) calc(var(--suite-delay) + .38s) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__frame--bottom {
  animation: suites-frame-close .62s var(--suites-ease) calc(var(--suite-delay) + .55s) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__node {
  animation: suites-node-pulse .78s var(--suites-ease) calc(var(--suite-delay) + .37s) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__type > span {
  animation: suites-label-rise .74s var(--suites-ease) calc(var(--suite-delay) + .63s) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__area > span {
  animation: suites-label-rise .74s var(--suites-ease) calc(var(--suite-delay) + .72s) both;
}

html.has-suites-motion [data-suites-scene="options"].is-active .suite-option__area i {
  animation: suites-area-underline .66s var(--suites-ease) calc(var(--suite-delay) + .86s) both;
}

@keyframes suites-kicker-rise {
  0% { opacity: 0; transform: translateY(118%); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes suites-title-rise {
  0% { transform: translateY(118%); }
  100% { transform: translateY(0); }
}

@keyframes suites-connector-focus {
  0% { opacity: 0; transform: translateY(.28em) scale(.76); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes suites-rule-open {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suites-copy-rise {
  0% { transform: translateY(118%); }
  100% { transform: translateY(0); }
}

@keyframes suites-rail-draw {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suites-frame-drop {
  0% { transform: scaleY(0); }
  100% { transform: scaleY(1); }
}

@keyframes suites-frame-close {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suites-label-rise {
  0% { opacity: 0; transform: translateY(115%); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes suites-area-underline {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suites-node-pulse {
  0% { opacity: 0; transform: scale(0); box-shadow: 0 0 0 0 rgb(7 52 75 / .38); }
  38% { opacity: 1; transform: scale(1); box-shadow: 0 0 0 .65rem rgb(7 52 75 / 0); }
  100% { opacity: 1; transform: scale(1); box-shadow: 0 0 0 0 rgb(7 52 75 / 0); }
}

@media (prefers-reduced-motion: reduce) {
  .suites-section__kicker > span,
  .suites-motion-line > span,
  .suites-copy-line > span,
  .suites-section__connector,
  .suites-section__rule,
  .suite-option__rail,
  .suite-option__frame,
  .suite-option__node,
  .suite-option__type > span,
  .suite-option__area > span,
  .suite-option__area i {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ---------------------------------------------------------
   Cierre / contacto: escena de revelado final
   --------------------------------------------------------- */
:root {
  --final-ease: cubic-bezier(.16, 1, .3, 1);
}

html.has-final-motion [data-final-scene="contact"] .final-contact__heading,
html.has-final-motion [data-final-scene="contact"] .final-contact__phone {
  overflow: hidden;
}

html.has-final-motion [data-final-scene="contact"] .final-contact__heading > span,
html.has-final-motion [data-final-scene="contact"] .final-contact__phone > span {
  opacity: 0;
  transform: translateY(115%);
  will-change: transform, opacity;
}

html.has-final-motion [data-final-scene="brand"] .final-contact__brand-logo {
  opacity: 0;
  clip-path: inset(0 50% 0 50%);
  transform: scale(.96);
  will-change: opacity, clip-path, transform;
}

html.has-final-motion [data-final-scene="brand"] .final-contact__rule {
  transform: scaleX(0);
  will-change: transform;
}

html.has-final-motion [data-final-scene="brand"] .final-contact__address {
  opacity: 0;
  transform: translateY(1.2rem);
  will-change: opacity, transform;
}

html.has-final-motion [data-final-scene="partners"] .final-contact__partner {
  opacity: 0;
  transform: translateY(1.75rem) scale(.96);
  will-change: opacity, transform;
}

html.has-final-motion [data-final-scene="contact"].is-active .final-contact__heading > span {
  animation: final-rise .95s var(--final-ease) .05s both;
}

html.has-final-motion [data-final-scene="contact"].is-active .final-contact__phone > span {
  animation: final-rise .92s var(--final-ease) .2s both;
}

html.has-final-motion [data-final-scene="brand"].is-active .final-contact__brand-logo {
  animation: final-logo-open 1.18s var(--final-ease) .02s both;
}

html.has-final-motion [data-final-scene="brand"].is-active .final-contact__rule {
  animation: final-rule-open 1.05s var(--final-ease) .42s both;
}

html.has-final-motion [data-final-scene="brand"].is-active .final-contact__address {
  animation: final-address-rise .85s var(--final-ease) .68s both;
}

html.has-final-motion [data-final-scene="partners"].is-active .final-contact__partner--left {
  animation: final-partner-rise .82s var(--final-ease) .02s both;
}

html.has-final-motion [data-final-scene="partners"].is-active .final-contact__partner--center {
  animation: final-partner-rise .82s var(--final-ease) .14s both;
}

html.has-final-motion [data-final-scene="partners"].is-active .final-contact__partner--right {
  animation: final-partner-rise .82s var(--final-ease) .26s both;
}

@keyframes final-rise {
  0% { opacity: 0; transform: translateY(115%); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes final-logo-open {
  0% { opacity: 0; clip-path: inset(0 50% 0 50%); transform: scale(.96); }
  100% { opacity: 1; clip-path: inset(0 0 0 0); transform: scale(1); }
}

@keyframes final-rule-open {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes final-address-rise {
  0% { opacity: 0; transform: translateY(1.2rem); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes final-partner-rise {
  0% { opacity: 0; transform: translateY(1.75rem) scale(.96); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .final-contact__heading > span,
  .final-contact__phone > span,
  .final-contact__brand-logo,
  .final-contact__rule,
  .final-contact__address,
  .final-contact__partner {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}

/* ==========================================================
   06. SUITES INTERNA — revelado arquitectónico de tipologías
   ========================================================== */
:root {
  --suite-detail-ease: cubic-bezier(.16, 1, .3, 1);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__badge::before {
  transform: scaleX(0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__type > span,
html.has-suite-detail-motion [data-suite-detail] .suite-detail__area > span {
  opacity: 0;
  transform: translate3d(0, 108%, 0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__area i {
  transform: scaleX(0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__features li {
  opacity: 0;
  transform: translate3d(0, .8em, 0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__guide--top,
html.has-suite-detail-motion [data-suite-detail] .suite-detail__guide--bottom {
  transform: scaleX(0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__guide--left,
html.has-suite-detail-motion [data-suite-detail] .suite-detail__guide--right {
  transform: scaleY(0);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__plan-reveal {
  opacity: 0;
}

html.has-suite-detail-motion [data-suite-detail].suite-detail--left .suite-detail__plan-reveal {
  clip-path: inset(0 100% 0 0);
}

html.has-suite-detail-motion [data-suite-detail].suite-detail--right .suite-detail__plan-reveal {
  clip-path: inset(0 0 0 100%);
}

html.has-suite-detail-motion [data-suite-detail] .suite-detail__plan img {
  transform: scale(1.035);
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__badge::before {
  animation: suite-detail-bar-open .9s var(--suite-detail-ease) .02s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__type > span {
  animation: suite-detail-label-rise .76s var(--suite-detail-ease) .31s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__area > span {
  animation: suite-detail-label-rise .76s var(--suite-detail-ease) .40s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__area i {
  animation: suite-detail-underline .68s var(--suite-detail-ease) .59s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__features li:nth-child(1) {
  animation: suite-detail-feature-rise .62s var(--suite-detail-ease) .61s both;
}
html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__features li:nth-child(2) {
  animation: suite-detail-feature-rise .62s var(--suite-detail-ease) .69s both;
}
html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__features li:nth-child(3) {
  animation: suite-detail-feature-rise .62s var(--suite-detail-ease) .77s both;
}
html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__features li:nth-child(4) {
  animation: suite-detail-feature-rise .62s var(--suite-detail-ease) .85s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__guide--top,
html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__guide--bottom {
  animation: suite-detail-guide-x .72s var(--suite-detail-ease) .14s both,
             suite-detail-guide-away .52s ease 1.44s forwards;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__guide--left,
html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__guide--right {
  animation: suite-detail-guide-y .58s var(--suite-detail-ease) .42s both,
             suite-detail-guide-away .52s ease 1.44s forwards;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__plan-reveal {
  animation: suite-detail-plan-open 1.22s var(--suite-detail-ease) .36s both;
}

html.has-suite-detail-motion [data-suite-detail].is-active .suite-detail__plan img {
  animation: suite-detail-plan-settle 1.55s var(--suite-detail-ease) .36s both;
}

@keyframes suite-detail-bar-open {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suite-detail-label-rise {
  0% { opacity: 0; transform: translate3d(0, 108%, 0); }
  100% { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes suite-detail-underline {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes suite-detail-feature-rise {
  0% { opacity: 0; transform: translate3d(0, .8em, 0); }
  100% { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes suite-detail-guide-x {
  0% { opacity: .25; transform: scaleX(0); }
  100% { opacity: .72; transform: scaleX(1); }
}

@keyframes suite-detail-guide-y {
  0% { opacity: .25; transform: scaleY(0); }
  100% { opacity: .72; transform: scaleY(1); }
}

@keyframes suite-detail-guide-away {
  to { opacity: 0; }
}

@keyframes suite-detail-plan-open {
  0% { opacity: 0; }
  8% { opacity: 1; }
  100% { opacity: 1; clip-path: inset(0 0 0 0); }
}

@keyframes suite-detail-plan-settle {
  0% { transform: scale(1.035); filter: saturate(.84) contrast(.96); }
  100% { transform: scale(1); filter: saturate(1) contrast(1); }
}

@media (prefers-reduced-motion: reduce) {
  [data-suite-detail] .suite-detail__badge::before,
  [data-suite-detail] .suite-detail__type > span,
  [data-suite-detail] .suite-detail__area > span,
  [data-suite-detail] .suite-detail__area i,
  [data-suite-detail] .suite-detail__features li,
  [data-suite-detail] .suite-detail__plan-reveal,
  [data-suite-detail] .suite-detail__plan img {
    animation: none !important;
    transform: none !important;
    clip-path: none !important;
    opacity: 1 !important;
  }
}

/* ==========================================================
   07. CONTACTO INTERNA — revelado editorial del formulario
   ========================================================== */
:root {
  --contact-motion-ease: cubic-bezier(.16, 1, .3, 1);
}

html.has-contact-page-motion [data-contact-scene="headline"] .contact-page__title-piece > span,
html.has-contact-page-motion [data-contact-scene="headline"] .contact-page__connector > span {
  opacity: 0;
  transform: translateY(115%);
  will-change: opacity, transform;
}

html.has-contact-page-motion [data-contact-scene="headline"] .contact-page__connector i {
  transform: scaleX(0);
  will-change: transform;
}

html.has-contact-page-motion [data-contact-scene="identity"] .contact-card__logo {
  opacity: 0;
  clip-path: inset(0 48% 0 48%);
  transform: scale(.965);
  will-change: opacity, clip-path, transform;
}

html.has-contact-page-motion [data-contact-scene="identity"] .contact-card__label > span,
html.has-contact-page-motion [data-contact-scene="identity"] .contact-card__phone > span {
  opacity: 0;
  transform: translateY(112%);
  will-change: opacity, transform;
}

html.has-contact-page-motion [data-contact-scene="form"] .contact-form__label {
  opacity: 0;
  transform: translateY(.8em);
  will-change: opacity, transform;
}

html.has-contact-page-motion [data-contact-scene="form"] .contact-form__line {
  transform: scaleX(0);
  will-change: transform;
}

html.has-contact-page-motion [data-contact-scene="form"] .contact-form__submit {
  opacity: 0;
  clip-path: inset(0 100% 0 0);
  transform: translateY(.7rem);
  will-change: opacity, clip-path, transform;
}

html.has-contact-page-motion [data-contact-scene="form"] .contact-form__submit span {
  opacity: 0;
  transform: translateY(105%);
  will-change: opacity, transform;
}

html.has-contact-page-motion [data-contact-scene="headline"].is-active .contact-page__title-piece--first > span {
  animation: contact-title-rise 1.02s var(--contact-motion-ease) .02s both;
}

html.has-contact-page-motion [data-contact-scene="headline"].is-active .contact-page__connector > span {
  animation: contact-title-rise .88s var(--contact-motion-ease) .20s both;
}

html.has-contact-page-motion [data-contact-scene="headline"].is-active .contact-page__connector i {
  animation: contact-connector-line .72s var(--contact-motion-ease) .52s both;
}

html.has-contact-page-motion [data-contact-scene="headline"].is-active .contact-page__title-piece--last > span {
  animation: contact-title-rise 1.04s var(--contact-motion-ease) .30s both;
}

html.has-contact-page-motion [data-contact-scene="identity"].is-active .contact-card__logo {
  animation: contact-logo-open 1.18s var(--contact-motion-ease) .03s both;
}

html.has-contact-page-motion [data-contact-scene="identity"].is-active .contact-card__label > span {
  animation: contact-detail-rise .78s var(--contact-motion-ease) .45s both;
}

html.has-contact-page-motion [data-contact-scene="identity"].is-active .contact-card__phone > span {
  animation: contact-detail-rise .82s var(--contact-motion-ease) .58s both;
}

html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__row--split .contact-form__field:nth-child(1) .contact-form__label {
  animation: contact-field-rise .68s var(--contact-motion-ease) .06s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__row--split .contact-form__field:nth-child(1) .contact-form__line {
  animation: contact-line-open .82s var(--contact-motion-ease) .17s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__row--split .contact-form__field:nth-child(2) .contact-form__label {
  animation: contact-field-rise .68s var(--contact-motion-ease) .16s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__row--split .contact-form__field:nth-child(2) .contact-form__line {
  animation: contact-line-open .82s var(--contact-motion-ease) .27s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active > .contact-form__field:nth-of-type(1) .contact-form__label {
  animation: contact-field-rise .68s var(--contact-motion-ease) .29s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active > .contact-form__field:nth-of-type(1) .contact-form__line {
  animation: contact-line-open .88s var(--contact-motion-ease) .40s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active > .contact-form__field:nth-of-type(2) .contact-form__label {
  animation: contact-field-rise .68s var(--contact-motion-ease) .43s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active > .contact-form__field:nth-of-type(2) .contact-form__line {
  animation: contact-line-open .94s var(--contact-motion-ease) .54s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__submit {
  animation: contact-button-open .88s var(--contact-motion-ease) .68s both;
}
html.has-contact-page-motion [data-contact-scene="form"].is-active .contact-form__submit span {
  animation: contact-button-text .64s var(--contact-motion-ease) .90s both;
}

@keyframes contact-title-rise {
  0% { opacity: 0; transform: translateY(115%); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes contact-connector-line {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes contact-logo-open {
  0% { opacity: 0; clip-path: inset(0 48% 0 48%); transform: scale(.965); }
  100% { opacity: 1; clip-path: inset(0 0 0 0); transform: scale(1); }
}

@keyframes contact-detail-rise {
  0% { opacity: 0; transform: translateY(112%); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes contact-field-rise {
  0% { opacity: 0; transform: translateY(.8em); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes contact-line-open {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

@keyframes contact-button-open {
  0% { opacity: 0; clip-path: inset(0 100% 0 0); transform: translateY(.7rem); }
  100% { opacity: 1; clip-path: inset(0 0 0 0); transform: translateY(0); }
}

@keyframes contact-button-text {
  0% { opacity: 0; transform: translateY(105%); }
  100% { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  [data-contact-scene] .contact-page__title-piece > span,
  [data-contact-scene] .contact-page__connector > span,
  [data-contact-scene] .contact-page__connector i,
  [data-contact-scene] .contact-card__logo,
  [data-contact-scene] .contact-card__label > span,
  [data-contact-scene] .contact-card__phone > span,
  [data-contact-scene] .contact-form__label,
  [data-contact-scene] .contact-form__line,
  [data-contact-scene] .contact-form__submit,
  [data-contact-scene] .contact-form__submit span {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}

/* CONTACTO — segunda escena: banner "Escríbenos hoy" */
html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__media img {
  clip-path: inset(0 50% 0 50%);
  transform: scale(1.055);
  filter: saturate(.88) brightness(.92);
  will-change: clip-path, transform, filter;
}

html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__line--one > span,
html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__investment > span,
html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__line--three > span,
html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__tu > span {
  opacity: 0;
  transform: translateY(108%);
  will-change: transform, opacity;
}

html.has-contact-page-motion [data-contact-scene="investment"] .contact-investment__tu i {
  transform: scaleX(0);
  will-change: transform;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__media img {
  animation: contact-investment-image 1.52s cubic-bezier(.16, 1, .3, 1) both;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__line--one > span {
  animation: contact-investment-type 1.02s cubic-bezier(.16, 1, .3, 1) .34s both;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__tu > span {
  animation: contact-investment-type .86s cubic-bezier(.16, 1, .3, 1) .52s both;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__tu i {
  animation: contact-investment-underline .74s cubic-bezier(.16, 1, .3, 1) .84s both;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__investment > span {
  animation: contact-investment-type 1.04s cubic-bezier(.16, 1, .3, 1) .62s both;
}

html.has-contact-page-motion [data-contact-scene="investment"].is-active .contact-investment__line--three > span {
  animation: contact-investment-type 1.06s cubic-bezier(.16, 1, .3, 1) .80s both;
}

@keyframes contact-investment-image {
  0% {clip-path: inset(0 50% 0 50%);transform: scale(1.055);filter: saturate(.82) brightness(.82)}
  58% {clip-path: inset(0 0 0 0)}
  100% {clip-path: inset(0 0 0 0);transform: scale(1);filter: saturate(1) brightness(1)}
}

@keyframes contact-investment-type {
  0% {opacity:0;transform:translateY(108%)}
  100% {opacity:1;transform:translateY(0)}
}

@keyframes contact-investment-underline {
  0% {transform:scaleX(0)}
  100% {transform:scaleX(1)}
}

@media (prefers-reduced-motion: reduce) {
  [data-contact-scene="investment"] .contact-investment__media img,
  [data-contact-scene="investment"] .contact-investment__line--one > span,
  [data-contact-scene="investment"] .contact-investment__investment > span,
  [data-contact-scene="investment"] .contact-investment__line--three > span,
  [data-contact-scene="investment"] .contact-investment__tu > span,
  [data-contact-scene="investment"] .contact-investment__tu i {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    filter: none !important;
  }
}

/* CONTACTO — footer de aliados */
html.has-contact-footer-motion [data-contact-footer] .contact-partners__logo {
  opacity: 0;
  transform: translateY(18px) scale(.975);
  will-change: transform, opacity;
}

html.has-contact-footer-motion [data-contact-footer] .contact-partners__divider {
  transform: scaleY(0);
  will-change: transform;
}

html.has-contact-footer-motion [data-contact-footer].is-active .contact-partners__divider {
  animation: contact-footer-divider .92s cubic-bezier(.16, 1, .3, 1) .12s both;
}

html.has-contact-footer-motion [data-contact-footer].is-active .contact-partners__logo--soteco {
  animation: contact-footer-logo .92s cubic-bezier(.16, 1, .3, 1) .24s both;
}

html.has-contact-footer-motion [data-contact-footer].is-active .contact-partners__logo--mgi {
  animation: contact-footer-logo .98s cubic-bezier(.16, 1, .3, 1) .38s both;
}

html.has-contact-footer-motion [data-contact-footer].is-active .contact-partners__logo--urbano {
  animation: contact-footer-logo .92s cubic-bezier(.16, 1, .3, 1) .52s both;
}

@keyframes contact-footer-divider {
  from { transform: scaleY(0); }
  to { transform: scaleY(1); }
}

@keyframes contact-footer-logo {
  from { opacity: 0; transform: translateY(18px) scale(.975); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 760px) {
  html.has-contact-footer-motion [data-contact-footer] .contact-partners__divider {
    transform: translateX(-50%) scaleX(0);
  }

  html.has-contact-footer-motion [data-contact-footer].is-active .contact-partners__divider {
    animation-name: contact-footer-divider-mobile;
  }

  @keyframes contact-footer-divider-mobile {
    from { transform: translateX(-50%) scaleX(0); }
    to { transform: translateX(-50%) scaleX(1); }
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-contact-footer] .contact-partners__logo,
  [data-contact-footer] .contact-partners__divider {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }

  @media (max-width: 760px) {
    [data-contact-footer] .contact-partners__divider {
      transform: translateX(-50%) !important;
    }
  }
}
