/* Neverlan · efecto de scroll del prototipo Aura, aplicado al diseño publicado. */

@media (min-width: 761px) and (prefers-reduced-motion: no-preference) {
  html.nv-portal-motion-ready .portal.portal-motion-pinned {
    position: relative;
    display: block;
    height: 220svh;
    min-height: 220svh;
    padding: 0;
    overflow: visible;
  }

  html.nv-portal-motion-ready .portal.portal-motion-pinned--secondary {
    height: 180svh;
    min-height: 180svh;
  }

  html.nv-portal-motion-ready .portal-motion-stage {
    position: sticky;
    top: 0;
    isolation: isolate;
    display: flex;
    align-items: center;
    width: 100%;
    height: 100svh;
    min-height: 100svh;
    padding: 5rem 1.25rem;
    overflow: hidden;
    background: inherit;
  }

  html.nv-portal-motion-ready #contacto .portal-motion-stage {
    align-items: flex-end;
    padding-top: 7rem;
    padding-bottom: 5rem;
  }
}

/* En móvil la experiencia queda inmediata: sin pin, scrub, parallax ni espera. */
@media (max-width: 760px) {
  #experience-shell .portal .portal-motion-copy {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    will-change: auto !important;
  }

  #experience-shell .portal [data-portal-decor] {
    animation: none !important;
    transition: none !important;
    will-change: auto !important;
  }
}

html.nv-portal-motion-ready .portal-motion-pinned .portal-image {
  transform: scale(var(--portal-image-scale, 1.05)) !important;
  transform-origin: center;
  filter: var(--portal-image-filter) !important;
  will-change: transform, filter;
}

html.nv-portal-motion-ready .portal[data-portal-motion] .portal-motion-copy {
  opacity: var(--portal-copy-opacity, 0);
  transform: translate3d(
    var(--portal-copy-x, 0),
    var(--portal-copy-y, 0),
    0
  );
  transition: none;
  will-change: opacity, transform;
}

/* Cosmos: se anima la geometría original sin añadir masas luminosas. */
html.nv-portal-motion-ready #cosmos [data-portal-decor="orbit"] {
  opacity: var(--portal-orbit-opacity, 0);
  transform: translate3d(var(--portal-orbit-x, 0), 0, 0);
  will-change: opacity, transform;
}

html.nv-portal-motion-ready #cosmos [data-portal-decor^="star"] {
  opacity: var(--portal-data-opacity, 0);
  will-change: opacity;
}

/* Naturae: panel inferior del 48 % que descubre la fotografía. */
html.nv-portal-motion-ready .portal-motion-curtain {
  position: absolute;
  z-index: -5;
  right: 0;
  bottom: 0;
  left: 0;
  height: var(--portal-curtain-height, 48%);
  background: #c8c1ad;
  pointer-events: none;
  will-change: height;
}

html.nv-portal-motion-ready .portal-motion-curtain::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 1px;
  background: rgba(247, 241, 228, .92);
  box-shadow: 0 0 18px rgba(247, 241, 228, .32);
}

/* Instantes: línea vertical del 12 % al 72 %, como en el prototipo. */
html.nv-portal-motion-ready .portal-motion-strip {
  position: absolute;
  z-index: 0;
  top: 0;
  bottom: 0;
  left: var(--portal-strip-left, 12%);
  width: 1px;
  background: rgba(241, 235, 224, .70);
  pointer-events: none;
  will-change: left;
}

/* Sonus: línea, anillo, imagen y texto recorren una secuencia completa. */
html.nv-portal-motion-ready #sonus [data-portal-decor="line"] {
  transform: scaleX(var(--portal-line-scale, 0));
  transform-origin: left center;
  will-change: transform;
}

html.nv-portal-motion-ready #sonus [data-portal-decor="ring"] {
  opacity: var(--portal-ring-opacity, 0);
  transform: scale(var(--portal-ring-scale, .72));
  will-change: opacity, transform;
}

/* Acerca: el halo entra desde el borde, se posa y vuelve a alejarse. */
html.nv-portal-motion-ready #acerca [data-portal-decor="halo"] {
  opacity: var(--portal-halo-opacity, 0);
  transform:
    translate3d(var(--portal-halo-x, 80px), 0, 0)
    scale(var(--portal-halo-scale, .65));
  will-change: opacity, transform;
}

@media (min-width: 640px) {
  html.nv-portal-motion-ready .portal-motion-stage {
    padding-right: 2.25rem;
    padding-left: 2.25rem;
  }
}

@media (min-width: 1024px) {
  html.nv-portal-motion-ready .portal-motion-stage {
    padding-right: 3.5rem;
    padding-left: 3.5rem;
  }

}

@media (prefers-reduced-motion: reduce) {
  html.nv-portal-motion-ready .portal[data-portal-motion] .portal-motion-copy {
    opacity: 1;
    transform: none;
    will-change: auto;
  }

  html.nv-portal-motion-ready .portal-motion-pinned .portal-image {
    transform: scale(var(--nv-home-image-zoom, 1.05)) !important;
    filter: var(--portal-base-filter, none) !important;
    will-change: auto;
  }

  html.nv-portal-motion-ready .portal-motion-curtain,
  html.nv-portal-motion-ready .portal-motion-strip {
    display: none;
  }

  html.nv-portal-motion-ready #sonus [data-portal-decor="line"],
  html.nv-portal-motion-ready #sonus [data-portal-decor="ring"],
  html.nv-portal-motion-ready #acerca [data-portal-decor="halo"] {
    opacity: 1;
    transform: none;
    will-change: auto;
  }
}
