/* Sang Spa Home: one bounded native-scroll paper stack. Campaign stays in
   flow; a measured visual dwell runway extends its sticky viewing interval.
   No global scroll controller, forced jumps or duplicate section renderers. */
.sangspa-stack-pair {
  position: relative;
  isolation: isolate;
  overflow: visible;
  min-width: 0;
}
/* Structural, non-interactive dwell: the old sheet remains fully visible
   behind this transparent runway before Sanctuary advances on top. */
.sangspa-stack-dwell { height: 0; pointer-events: none; }
.sangspa-stack-pair.has-campaign.is-stack-active > .sangspa-stack-dwell {
  height: clamp(280px, 46svh, 480px);
}
.sangspa-stack-pair.has-campaign.is-stack-active > #morning-serenity {
  position: sticky;
  top: var(--sangspa-stack-inset, 0px);
  z-index: 1;
  margin: 0;
  /* Sticky only transforms the document's existing layout, not the sheet. */
  transform: none;
}
/* Sanctuary is ONE opaque ivory paper surface. The only transparency is a
   short decorative overhang above its edge, never inside the section. */
.sangspa-stack-pair > #treatments {
  --sangspa-ornament-height: clamp(168px, 20svh, 248px);
  position: relative;
  z-index: 2;
  isolation: isolate;
  min-width: 0;
  overflow: visible;
  background: #fbf9f4;
  scroll-margin-top: 100px;
}
.sangspa-stack-pair.has-campaign.is-stack-active > #treatments::before {
  content: '';
  position: absolute;
  top: calc(-1 * var(--sangspa-ornament-height));
  left: 0;
  right: 0;
  height: var(--sangspa-ornament-height);
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(to bottom,
    rgba(251,249,244,0) 0%,
    rgba(251,249,244,.12) 24%,
    rgba(251,249,244,.48) 55%,
    rgba(251,249,244,.86) 83%,
    #fbf9f4 100%);
}
.sangspa-stack-pair > #morning-serenity {
  scroll-margin-top: 112px;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary {
  --sangspa-sanctuary-photo-y: 0px;
  --sangspa-stack-progress: 0;
  position: relative;
  z-index: 2;
  isolation: isolate;
  background: #fbf9f4;
  scroll-margin-top: 102px;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary .sang-split-wrapper {
  position: relative;
  z-index: 2;
  background: transparent;
  padding-block: clamp(100px, 9vw, 138px) clamp(80px, 8vw, 120px);
  overflow: clip;
  opacity: 1;
  transform: none;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary .sang-split-wrapper::before {
  content: none;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary .hero-bg-img {
  transform: translate3d(0, var(--sangspa-sanctuary-photo-y), 0) scale(1.045);
  will-change: auto;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary .branch-hero-card:hover .hero-bg-img {
  transform: translate3d(0, var(--sangspa-sanctuary-photo-y), 0) scale(1.065);
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-parallax-active .hero-bg-img {
  will-change: transform;
}
/* Reading content is always visible by default (no JS, no IntersectionObserver).
   Only the editorial inner elements prepare a subtle stagger before intersection. */
#treatments > #sang-spa-yoga.sangspa-sanctuary .sangspa-sanctuary-editorial,
#treatments > #sang-spa-yoga.sangspa-sanctuary .sangspa-sanctuary-gallery {
  opacity: 1;
  transform: translate3d(0,0,0);
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready .sangspa-sanctuary-editorial,
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready .sangspa-sanctuary-gallery {
  transition: opacity .82s ease, transform .9s cubic-bezier(.22,1,.36,1);
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready:not(.is-entered) .sangspa-sanctuary-editorial {
  opacity: .24;
  transform: translate3d(0, 24px, 0);
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready:not(.is-entered) .sangspa-sanctuary-gallery {
  opacity: .48;
  transform: translate3d(0, 28px, 0);
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready.is-entered .sangspa-sanctuary-editorial {
  transition-delay: .14s;
}
#treatments > #sang-spa-yoga.sangspa-sanctuary.is-motion-ready.is-entered .sangspa-sanctuary-gallery {
  transition-delay: .24s;
}
@media (max-width: 767px) {
  .sangspa-stack-pair > #morning-serenity { scroll-margin-top: 90px; }
  .sangspa-stack-pair > #treatments { scroll-margin-top: 82px; }
  .sangspa-stack-pair > #treatments {
    --sangspa-ornament-height: clamp(112px, 14svh, 156px);
  }
  #treatments > #sang-spa-yoga.sangspa-sanctuary {
    scroll-margin-top: 80px;
  }
  #treatments > #sang-spa-yoga.sangspa-sanctuary .sang-split-wrapper {
    padding-block: 98px 76px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sangspa-stack-pair.has-campaign.is-stack-active > .sangspa-stack-dwell { height: 0; }
  .sangspa-stack-pair.has-campaign.is-stack-active > #treatments::before { content: none; }
  .sangspa-stack-pair.has-campaign.is-stack-active > #morning-serenity {
    position: relative;
    top: auto;
  }
  #treatments > #sang-spa-yoga.sangspa-sanctuary .sang-split-wrapper,
  #treatments > #sang-spa-yoga.sangspa-sanctuary .sangspa-sanctuary-editorial,
  #treatments > #sang-spa-yoga.sangspa-sanctuary .sangspa-sanctuary-gallery,
  #treatments > #sang-spa-yoga.sangspa-sanctuary .hero-bg-img {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
}
