/* Keep sticky positioning alive inside Elementor without flattening every widget on the page. */
.elementor-widget-cinematic_scroll_container,
.elementor-widget-cinematic_scroll_container > .elementor-widget-container,
.cinematic-scroll-elementor-parent,
.elementor-section:has(.cinematic-scroll-container),
.elementor-container:has(.cinematic-scroll-container),
.elementor-column:has(.cinematic-scroll-container),
.elementor-widget:has(.cinematic-scroll-container),
.elementor-widget-container:has(.cinematic-scroll-container),
.e-con:has(.cinematic-scroll-container),
.e-con-inner:has(.cinematic-scroll-container) {
    height: auto !important;
    overflow: visible !important;
}

.elementor-widget-cinematic_scroll_container,
.elementor-widget-cinematic_scroll_container > .elementor-widget-container {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    margin-block-end: 0 !important;
    padding: 0 !important;
}

.elementor-section:has(.cinematic-scroll-container),
.elementor-container:has(.cinematic-scroll-container),
.elementor-widget-wrap:has(.cinematic-scroll-container),
.e-con:has(.cinematic-scroll-container),
.e-con-inner:has(.cinematic-scroll-container),
.cinematic-scroll-elementor-parent {
    --gap: 0px !important;
    --widgets-spacing: 0px !important;
    gap: 0 !important;
    row-gap: 0 !important;
}

.cinematic-scroll-stage-parent {
    position: relative !important;
    overflow: visible !important;
}

/* 2. The outer track (Needs massive structural height to scroll through) */
.cinematic-scroll-container {
    position: relative !important;
    display: block !important;
    width: 100vw !important;
    height: 400vh !important; /* Matches the standalone test.html scroll track */
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box;
}

/* 3. The viewport lock. JS pins this explicitly because Elementor wrappers can break native sticky. */
.cinematic-scroll-container .sticky-content {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: var(--bg-height, 100vh) !important;
    overflow: hidden !important;
    display: block !important;
    z-index: 99;
    contain: paint;
    will-change: transform;
}

.cinematic-scroll-container .sticky-content.is-cinematic-fixed {
    position: fixed !important;
    top: 0 !important;
    bottom: auto !important;
}

.cinematic-scroll-container .sticky-content.is-cinematic-after {
    position: absolute !important;
    top: auto !important;
    bottom: 0 !important;
}

/* 4. Background handler */
.cinematic-scroll-container .bg-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: var(--bg-size, cover);
    z-index: 1;
    transform-origin: center center;
    will-change: transform;
}

/* 5. Custom positioning variables */
.cinematic-scroll-container .content-wrapper {
    position: absolute;
    z-index: 20;
    top: var(--text-top, auto);
    bottom: var(--text-bottom, auto);
    left: var(--text-left, auto);
    right: var(--text-right, auto);
    max-width: 800px;
}

.cinematic-scroll-container .section-header {
  font-size: 3rem;
  margin-bottom: 1rem;
  opacity: 0;
  will-change: transform, opacity;
}

.cinematic-scroll-container .section-text {
  font-size: 1.5rem;
  margin-bottom: 1.5rem;
  opacity: 0;
  transform: translateY(50px);
  will-change: transform, opacity;
}

/* Button & extra elements fade up at the same threshold as text */
.cinematic-scroll-container .section-btn-wrapper {
  opacity: 0;
  transform: translateY(50px);
  will-change: transform, opacity;
}

.cinematic-scroll-container .section-btn {
  display: inline-block;
  padding: 12px 28px;
  background-color: #ff0055;
  color: #fff;
  text-decoration: none;
  font-weight: bold;
  border-radius: 4px;
  transition: background 0.3s ease;
}
