:root {
  --font-display: 'Playfair Display', serif;
  --font-body: 'DM Sans', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --deep-wing: #0A0C1E;
  --dark-feather: #121428;
  --lifted-indigo: #1A1C38;
  --star-white: #F4F2FF;
  --violet-mist: #C8C4F8;
  --dim-indigo: #6A68A8;
  --dusk-mist: #9A96D8;
  --iris-light: #7A8AEE;
  --ancient-gold: #C8A030;
  --deep-forest: #0A6652;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { overflow-x: hidden; width: 100%; background-color: var(--deep-wing); }

body {
  font-family: var(--font-body);
  background-color: var(--deep-wing);
  color: var(--star-white);
  overflow-x: hidden;
  width: 100%;
  overscroll-behavior: none;
}

/* ── Scroll structure ── */
.scroll-container { position: relative; background-color: var(--deep-wing); }

.end-section {
  height: 100vh;
  position: relative;
  background-color: var(--deep-wing);
  display: flex;
  align-items: center;
  justify-content: center;
}

.fin {
  transform: rotate(90deg);
  position: sticky;
  top: 50vh;
  color: var(--dim-indigo);
  font-family: var(--font-mono);
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  opacity: 0.4;
}

/* ── Placeholder act sections ── */
.act-placeholder {
  min-height: 100vh;
  background-color: var(--deep-wing);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.act-placeholder-label {
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--dim-indigo);
  opacity: 0.3;
}

/* ── Fixed nav overlays ── */
.nav-overlay {
  position: fixed;
  z-index: 100;
  pointer-events: none;
}

.nav-overlay > * {
  pointer-events: auto;
}

#act-nav-left {
  left: 2rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  text-align: left;
}

#act-nav-right {
  right: 2rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  text-align: right;
}

#act-progress {
  bottom: 3vh;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.act-name,
.feeling-word {
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--dusk-mist);
  opacity: 0.4;
  cursor: pointer;
  transition: opacity 0.3s ease, transform 0.3s ease, color 0.3s ease;
  position: relative;
  padding: 0.15rem 0;
}

.act-name:hover,
.feeling-word:hover { opacity: 0.8; }

.act-name { padding-left: 0; }
.feeling-word { padding-right: 0; }

.act-name.active {
  opacity: 1;
  color: var(--star-white);
  transform: translateX(10px);
  padding-left: 15px;
}

.act-name.active::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 4px;
  background-color: var(--iris-light);
  border-radius: 50%;
}

.feeling-word.active {
  opacity: 1;
  color: var(--star-white);
  transform: translateX(-10px);
  padding-right: 15px;
}

.feeling-word.active::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 4px;
  background-color: var(--iris-light);
  border-radius: 50%;
}

/* ── Progress bar ── */
.progress-indicator {
  width: 160px;
  height: 1px;
  position: relative;
  background-color: rgba(154, 150, 216, 0.3);
}

.progress-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0%;
  background-color: var(--dusk-mist);
  transition: width 0.3s cubic-bezier(0.65, 0, 0.35, 1);
}

.progress-numbers {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  font-size: 0.7rem;
  color: var(--dusk-mist);
  font-family: var(--font-mono);
  letter-spacing: -0.02em;
  transform: translateY(-50%);
  margin: 0 -25px;
}

/* (Act 2 CRT handled by VFX-JS postEffect — no CSS approximation needed) */

/* ════════════════════════════════════════════
   ACT 6: THE INVITATION (expanded)
   ════════════════════════════════════════════ */

/* ── Sanskrit mantra divider ── */
.mantra-divider {
  height: 30vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--deep-wing);
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.65rem;
  color: var(--dusk-mist);
  opacity: 0.3;
  letter-spacing: 0.1em;
}

/* ── Zoom circle section ── */
.act6-zoom {
  height: 200vh;
  position: relative;
  background-color: var(--deep-wing);
}

.act6-zoom-inner {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.zoom-circle {
  position: absolute;
  inset: 0;
  background-color: var(--deep-forest);
  clip-path: circle(0% at 50% 50%);
  will-change: clip-path;
  will-change: transform;
}

.zoom-text {
  position: relative;
  z-index: 2;
  font-family: var(--font-display);
  font-weight: 700;
  font-style: italic;
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  color: var(--star-white);
  opacity: 0;
  text-align: center;
  max-width: 15ch;
  line-height: 1.3;
}

/* ── Two-column CTA ── */
.act6-cta {
  background-color: var(--deep-wing);
  padding: 10vh 4rem;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.act6-cta-inner {
  display: flex;
  max-width: 1100px;
  width: 100%;
  gap: 0;
  position: relative;
}

.cta-divider-line {
  width: 1px;
  background-color: rgba(106, 104, 168, 0.15);
  flex-shrink: 0;
}

.cta-path {
  flex: 1;
  padding: 3rem;
  transition: background-color 0.4s ease, opacity 0.4s ease;
  border-radius: 4px;
}

.cta-path h2 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.3rem, 2.5vw, 1.8rem);
  color: var(--star-white);
  line-height: 1.3;
  margin-bottom: 1.2rem;
}

.cta-path p {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: clamp(0.9rem, 1.2vw, 1.05rem);
  color: var(--violet-mist);
  line-height: 1.7;
  margin-bottom: 1.8rem;
  max-width: 38ch;
}

/* CTA buttons */
.cta-buttons {
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
}

.btn-gold {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.7rem 1.6rem;
  border-radius: 100px;
  background-color: var(--ancient-gold);
  color: var(--star-white);
  text-decoration: none;
  transition: all 0.3s ease;
  cursor: pointer;
}

.btn-gold:hover {
  background-color: #d4aa38;
  transform: translateY(-2px);
}

.btn-ghost {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.7rem 1.6rem;
  border-radius: 100px;
  background: transparent;
  color: var(--dusk-mist);
  border: 1px solid var(--dusk-mist);
  text-decoration: none;
  transition: all 0.3s ease;
  cursor: pointer;
}

.btn-ghost:hover {
  color: var(--star-white);
  border-color: var(--star-white);
  transform: translateY(-2px);
}

/* Interactive pills */
.pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 2rem;
}

.pill {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.75rem;
  color: var(--dim-indigo);
  padding: 0.4rem 1rem;
  border-radius: 100px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.23, 1, 0.32, 1);
}

.pill:hover {
  color: var(--star-white);
  background: rgba(255, 255, 255, 0.07);
  border-color: rgba(255, 255, 255, 0.12);
  transform: translateY(-2px);
}

/* Contact row */
.contact-row {
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.contact-row a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--iris-light);
  text-decoration: none;
  transition: all 0.3s ease;
}

.contact-row a:hover {
  color: var(--star-white);
  transform: translateY(-1px);
}

/* Column hover interaction */
.act6-cta-inner.hovering .cta-path { opacity: 0.7; }
.act6-cta-inner.hovering .cta-path.hovered {
  opacity: 1;
  background-color: rgba(255, 255, 255, 0.02);
}

/* ── 3D Fold Marquee ── */
.fold-marquee-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--deep-wing);
  overflow: visible;
  height: 100vh;
}

.wrapper-3d {
  position: relative;
  perspective: 20vw;
  transform-style: preserve-3d;
}

.fm-marquee {
  border-bottom: 1px solid rgba(154, 150, 216, 0.2);
  color: var(--dim-indigo);
  font-family: var(--font-display);
  font-size: clamp(4.50rem, 3.64rem + 4.29vw, 9.00rem);
  font-weight: 700;
  height: calc(170px + 4rem);
  overflow: hidden;
  position: relative;
  width: 100vw;
}

.fm-track {
  height: 100%;
  overflow: hidden;
  padding: 2rem 0;
  position: absolute;
  white-space: nowrap;
}

.fm-focus {
  color: var(--violet-mist);
  font-weight: 900;
}

.fold {
  overflow: hidden;
  width: 100vw;
  height: 80vh;
}

.fold-top {
  position: absolute;
  transform-origin: bottom center;
  left: 0;
  right: 0;
  bottom: 100%;
  transform: rotateX(-120deg);
}

.fold-center {
  width: 100vw;
}

.fold-bottom {
  position: absolute;
  transform-origin: top center;
  right: 0;
  left: 0;
  top: 100%;
  transform: rotateX(120deg);
}

.fold-align {
  width: 100%;
  height: 100%;
}

.fold-bottom .fold-align {
  transform: translateY(-100%);
}

.fold-top .fold-align {
  transform: translateY(100%);
}

/* ════════════════════════════════════════════
   ACT 1: ARRIVAL
   ════════════════════════════════════════════ */

.act1-section {
  height: 600vh;
  position: relative;
  background-color: var(--deep-wing);
}

.act1-inner {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  background-color: var(--deep-wing);
}

/* Seed of light */
/* Sanskrit mantra */
.act1-mantra {
  position: absolute;
  top: 38%;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.3em;
  color: var(--dusk-mist);
  opacity: 0;
  z-index: 4;
  white-space: nowrap;
}

/* Hero text moments */
.act1-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
  text-align: center;
  pointer-events: none;
  width: 90%;
}

.act1-moment {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.8);
  opacity: 0;
  font-family: var(--font-display);
  font-weight: 300;
  color: var(--star-white);
  white-space: nowrap;
  transition: opacity 0.8s ease, transform 0.8s ease, filter 0.6s ease;
}

.act1-moment.visible {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  filter: blur(0);
}

.act1-moment.exiting {
  opacity: 0;
  transform: translate(-50%, -50%) scale(1.3);
  filter: blur(8px);
  transition: opacity 0.6s ease, transform 0.6s ease, filter 0.6s ease;
}

.act1-m1 { font-size: clamp(1.5rem, 5vw, 3.5rem); }
.act1-m2 { font-size: clamp(2rem, 7vw, 5rem); }
.act1-m2 .act1-italic { font-style: italic; color: var(--iris-light); }

.act1-countdown {
  font-weight: 700;
  font-size: clamp(5rem, 20vw, 15rem);
  line-height: 1;
}

.act1-count-3 { color: var(--iris-light); text-shadow: 0 0 60px rgba(122, 138, 238, 0.5); }
.act1-count-2 { color: var(--ancient-gold); text-shadow: 0 0 60px rgba(200, 160, 48, 0.5); }
.act1-count-1 { color: #C4584A; text-shadow: 0 0 80px rgba(196, 88, 74, 0.6); }

/* Hero declaration (Phase 4) */
.act1-hero {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
  text-align: center;
  pointer-events: none;
  max-width: 700px;
  opacity: 0;
}

.act1-hero-headline {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(2.5rem, 7vw, 5.5rem);
  line-height: 1.05;
  letter-spacing: -0.04em;
  color: var(--star-white);
  margin-bottom: 1.5rem;
}

.act1-hero-headline .hw {
  display: inline-block;
  opacity: 0;
  transform: translateY(30px);
}

.act1-hero-headline .hw-red { color: #C4584A; }
.act1-hero-headline .hw-iris { font-style: italic; color: var(--iris-light); }

.act1-hero-sub {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--violet-mist);
  opacity: 0;
  transform: translateY(15px);
  max-width: 400px;
  margin: 0 auto;
}

/* ════════════════════════════════════════════
   ACT 2: THE WOUND
   ════════════════════════════════════════════ */

#act2-vfx-root {
  background: black;
  overflow-x: hidden;
  position: relative;
}

.act2-vignette {
  position: sticky;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  margin-bottom: -100vh;
  pointer-events: none;
  background: radial-gradient(
    ellipse 60% 75% at 50% 50%,
    transparent 0%,
    transparent 35%,
    rgba(0, 0, 0, 0.3) 55%,
    rgba(0, 0, 0, 0.7) 75%,
    rgba(0, 0, 0, 0.95) 100%
  );
  z-index: 5;
}

.act2-sec {
  margin: 40vh auto;
  max-width: 40vw;
  width: 40vw;
  color: white;
  position: relative;
  z-index: 6;
}

.act2-col {
  display: flex;
  flex-direction: row;
  gap: 1em;
  margin: 2em 0;
}

.act2-right { text-align: right; }

.act2-last {
  margin-bottom: 0;
  display: grid;
  place-items: center;
}

.act2-last > * { grid-area: 1 / 1; }
.act2-last h2 { color: black; }

#act2-vfx-root h1,
#act2-vfx-root p {
  text-shadow:
    0 0 8px rgba(0, 0, 0, 1),
    0 0 15px rgba(0, 0, 0, 1),
    0 0 30px rgba(0, 0, 0, 0.95),
    0 0 50px rgba(0, 0, 0, 0.85),
    0 0 80px rgba(0, 0, 0, 0.7);
}

#act2-vfx-root h2 {
  text-shadow: none;
}

#act2-vfx-root h1 {
  font-family: var(--font-display);
  font-size: 8vh;
  font-weight: 700;
  margin: 0;
  opacity: 0;
}

#act2-vfx-root h2 {
  font-family: var(--font-display);
  font-size: 6vh;
  font-weight: 700;
  margin: 47vh 0;
  opacity: 0.01; /* near-invisible but ensures VFX-JS picks it up */
}

#act2-vfx-root p {
  font-family: var(--font-body);
  font-size: 3vh;
  font-weight: 300;
  line-height: 1.85;
  margin: 0;
  opacity: 0;
}

#act2-vfx-root img {
  opacity: 0;
  margin: 2em 0;
  width: 100%;
}

.act2-col > img {
  max-width: 40%;
  margin: 0;
}

/* THE TURN — clean, unglitched, outside VFX */
.act2-turn {
  background: var(--deep-wing);
  padding: 8rem 2rem;
  text-align: center;
  min-height: 60vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.act2-turn p {
  font-family: var(--font-display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(1.4rem, 3vw, 2.2rem);
  color: var(--iris-light);
  line-height: 1.4;
  max-width: 700px;
  margin: 0 auto;
  text-wrap: balance;
}

/* Scroll highlight (used in Act 3) */
.scroll-hl {
  background-image: linear-gradient(to right, rgba(200, 160, 48, 0.15), rgba(200, 160, 48, 0.15));
  background-size: 0% 100%;
  background-repeat: no-repeat;
  background-position: 0 0;
  transition: background-size 0.6s cubic-bezier(0.23, 1, 0.32, 1);
}

.scroll-hl.highlighted {
  background-size: 100% 100%;
}

/* ════════════════════════════════════════════
   ACT 3: THE VISION
   ════════════════════════════════════════════ */

.act3-section {
  height: 650vh;
  position: relative;
  background-color: var(--deep-wing);
}

.act3-inner {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  touch-action: pan-y;
}

.act3-track {
  display: flex;
  height: 100%;
  width: 500vw; /* 5 panels */
}

.act3-panel {
  width: 100vw;
  height: 100%;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 2rem;
  position: relative;
}

/* Panel backgrounds */
.act3-panel-1 { background-color: var(--deep-wing); }
.act3-panel-2 { background-color: var(--dark-feather); }
.act3-panel-3 { background-color: var(--lifted-indigo); }
.act3-panel-4 { background-color: var(--dark-feather); }
.act3-panel-5 { background-color: var(--lifted-indigo); }

/* Panel text — base style (panels 3, 5) */
.act3-panel-text {
  max-width: 580px;
  font-family: var(--font-body);
  font-weight: 300;
  font-size: clamp(1.2rem, 2.5vw, 1.6rem);
  line-height: 1.85;
  color: var(--violet-mist);
}

/* Panel 1: Headline */
.act3-panel-text--headline {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  line-height: 1.1;
  max-width: 800px;
  color: var(--star-white);
}

/* Panel 2: Lead — italic Playfair */
.act3-panel-text--lead {
  max-width: 600px;
  font-family: var(--font-display);
  font-weight: 400;
  font-style: italic;
  font-size: clamp(1.2rem, 2.5vw, 1.6rem);
  line-height: 1.7;
}

.act3-punch {
  font-weight: 700;
  font-style: normal;
  color: var(--star-white);
}

/* Panel 4: Closer — bold Playfair */
.act3-panel-text--closer {
  max-width: 700px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.4rem, 3vw, 2rem);
  line-height: 1.3;
  color: var(--star-white);
}

/* Panel 5: Provenance — dimmer text with bright emphasis */
.act3-panel-text--provenance {
  max-width: 500px;
  line-height: 1.8;
  color: var(--dusk-mist);
}

.act3-bright {
  color: var(--violet-mist);
  font-weight: 400;
}

/* ── Text highlight marks (Splitting.js) ── */
.hx {
  background: none;
  color: var(--star-white);
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0 0.15em;
  position: relative;
}

.hx .word,
.hx .word > .char {
  display: inline-block;
}

/* Effect 12 (Panel 1): word clone cascade + color change */
.hx-12 {
  --color-highlight-start: rgba(200, 196, 248, 0.4);
  --color-highlight-end: #c9a84c;
  color: var(--color-highlight-start);
}

.hx-12 .word:nth-child(n+2) {
  position: absolute;
  top: 0;
  left: 0;
  --color-highlight-end: #c9a84c;
  color: var(--color-highlight-end);
}

/* Effect 5 (Panel 5): char scale + background pill */
.hx-5 {
  --after-scale: 0;
  --color-bg-highlight: #2d5a27;
}

.hx-5::after {
  content: '';
  left: -2.5%;
  top: 10%;
  bottom: -7.5%;
  position: absolute;
  z-index: -1;
  width: 105%;
  transform: scale3D(var(--after-scale), var(--after-scale), var(--after-scale));
  background: var(--color-bg-highlight);
  border-radius: 8px;
}

/* Effect 8 (Panel 2): word rotate in + color change */
.hx-8 {
  --color-highlight-end: #c9a84c;
}

/* Effect 3 (Panel 3): char flicker + glow + color change */
.hx-3 {
  --color-highlight-end: #c9a84c;
}

/* Effect 4 (Panel 4): char scale pop + color change */
.hx-4 {
  --color-highlight-end: #2d5a27;
  --color-highlight-end-alt: #c9a84c;
}

/* SVG curtain wipe */
.act3-curtain {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 10;
  pointer-events: none;
}

.act3-curtain svg {
  width: 100%;
  height: 100%;
}

/* ════════════════════════════════════════════
   ACT 4: THE PATH
   ════════════════════════════════════════════ */

.act4-intro {
  background-color: var(--deep-forest);
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 6rem 2rem;
}

.act4-intro-inner {
  max-width: 580px;
}

.act4-label {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #6abf8a;
  margin-bottom: 1.2rem;
  opacity: 0;
  transform: translateY(15px);
}

.act4-heading {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.8rem, 3.5vw, 2.5rem);
  color: var(--star-white);
  line-height: 1.2;
  margin-bottom: 1.5rem;
  opacity: 0;
  transform: translateY(20px);
}

.act4-heading em {
  font-style: italic;
  color: #7ecfa0;
}

.act4-body {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 1rem;
  color: var(--violet-mist);
  opacity: 0;
  line-height: 1.8;
  transform: translateY(20px);
}

/* Split curtain reveal sections */
.act4-pillar {
  background-color: var(--deep-forest);
  position: relative;
  min-height: 100vh;
}

.act4-pillar-header {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--deep-wing);
  z-index: 1;
  will-change: clip-path;
}

.act4-split {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  position: relative;
}

.act4-split-half {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  width: 100%;
}

.act4-split-half:nth-child(1) {
  clip-path: inset(0 0 calc(50% - 1px) 0);
}

.act4-split-half:nth-child(2) {
  clip-path: inset(calc(50% - 1px) 0 0 0);
  position: absolute;
  top: 0;
  left: 0;
}

.act4-split-word {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(4rem, 10vw, 8rem);
  color: var(--star-white);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

/* Pillar content (revealed behind split) */
.act4-pillar-content {
  position: relative;
  display: flex;
  justify-content: center;
  padding: 0 1.5rem;
  margin-top: -60vh;
  z-index: 0;
}

.act4-card {
  background: rgba(0, 0, 0, 0.3);
  border-radius: 12px;
  padding: 2.5rem;
  max-width: 500px;
  width: 100%;
  position: relative;
}

.act4-card-number {
  position: absolute;
  top: -1rem;
  right: 1.5rem;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(4rem, 8vw, 6rem);
  color: var(--star-white);
  opacity: 0.06;
  line-height: 1;
}

.act4-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.1rem;
  color: var(--star-white);
  margin-bottom: 0.8rem;
}

.act4-card p {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 0.9rem;
  color: var(--violet-mist);
  opacity: 0.55;
  line-height: 1.75;
  margin-bottom: 1rem;
}

.act4-tag {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 0.3rem 0.8rem;
  border-radius: 100px;
}

.act4-tag-green { background: rgba(10, 102, 82, 0.6); color: #6abf8a; }
.act4-tag-amber { background: rgba(200, 160, 48, 0.2); color: var(--ancient-gold); }
.act4-tag-rose  { background: rgba(196, 88, 74, 0.2); color: #e07a6a; }

/* ════════════════════════════════════════════
   ACT 5: THE PEOPLE
   ════════════════════════════════════════════ */

.act5-section {
  background-color: var(--lifted-indigo);
  padding: 10vh 2rem 8vh;
  text-align: center;
}

.act5-label {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--iris-light);
  margin-bottom: 1.2rem;
}

.act5-heading {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  color: var(--star-white);
  line-height: 1.3;
  max-width: 700px;
  margin: 0 auto 4rem;
}

.act5-heading em { font-style: italic; color: var(--iris-light); }

/* 3D name rotate */
.act5-name-rotate {
  perspective: 600px;
  height: 3.5rem;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 3rem;
}

.act5-name-rotate-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
}

.act5-name-face {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  backface-visibility: hidden;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  color: var(--star-white);
}

/* Avatar row */
.act5-avatars {
  display: flex;
  justify-content: center;
  gap: 2.5rem;
  flex-wrap: wrap;
  margin-bottom: 4rem;
}

.act5-person {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.6rem;
  opacity: 0;
  transform: scale(0.8);
  transition: transform 0.3s ease;
}

.act5-person:hover { transform: translateY(-4px) scale(1); }

.act5-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--star-white);
}

.act5-person-name {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.85rem;
  color: var(--star-white);
}

.act5-person-ig {
  font-family: var(--font-body);
  font-size: 0.7rem;
  color: var(--iris-light);
  text-decoration: none;
  opacity: 0.6;
  transition: opacity 0.3s ease;
}

.act5-person:hover .act5-person-ig { opacity: 1; }

/* Closing paragraph */
.act5-closing {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 1rem;
  color: var(--violet-mist);
  line-height: 1.75;
  max-width: 650px;
  margin: 0 auto 3rem;
  opacity: 0;
  transform: translateY(20px);
}

/* Instagram CTA */
.act5-ig-follow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.8rem;
  color: var(--iris-light);
  text-decoration: none;
  border: 1px solid rgba(122, 138, 238, 0.3);
  padding: 0.6rem 1.4rem;
  border-radius: 100px;
  transition: all 0.3s ease;
}

.act5-ig-follow:hover {
  border-color: var(--iris-light);
  transform: translateY(-2px);
  color: var(--star-white);
}

/* ════════════════════════════════════════════
   DOUBLE CIRCLE FOOTER (mobile only)
   ════════════════════════════════════════════ */

.footer-double-circle {
  display: none;
}

.circle__wrapper {
  width: 100%;
  height: 100svh;
  position: relative;
}

.circle__wrapper ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.circle__text__wrapper__left {
  position: absolute;
  width: 100vw;
  height: 100%;
  left: 15%;
  transform: translate(-100%);
}

.circle__text__wrapper__right {
  position: absolute;
  width: 100vw;
  height: 100%;
  left: 85%;
  text-align: right;
}

.circle__text__left__item,
.circle__text__right__item {
  position: absolute;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.5rem, 4vw, 4.5rem);
  text-transform: uppercase;
  white-space: nowrap;
  will-change: transform;
  top: 0;
  left: 0;
  transform: translate(-50%, -50%);
  width: 25rem;
}

@media screen and (max-width: 768px) {
  .circle__text__left__item,
  .circle__text__right__item { width: 15rem; }
}

@media screen and (max-width: 425px) {
  .circle__text__left__item,
  .circle__text__right__item { width: 10rem; }
}

/* ── Mobile (< 901px) ── */
@media (max-width: 900px) {
  .act1-section { height: 400vh; }
  .act1-m1 { font-size: clamp(2.5rem, 12vw, 5rem); }
  .act1-m2 { font-size: clamp(2.2rem, 10vw, 4.5rem); }
  .act1-countdown { font-size: clamp(6rem, 30vw, 12rem); }
  .act1-hero { left: 0; right: 0; transform: translate(0, -50%); text-align: center; padding: 0 1.5rem; max-width: 100%; }
  .act1-hero-headline { font-size: clamp(2.5rem, 11vw, 5rem); }
  .act1-moment { white-space: normal; }
  .act1-hero-sub { max-width: 100%; font-size: clamp(0.95rem, 4vw, 1.3rem); }

  /* Act 2 mobile: narrow content to barrel distortion safe zone */
  .act2-sec { width: 45%; max-width: 45vw; margin: 20vh auto; text-align: center; }
  .act2-right { text-align: center; }
  .act2-vignette { display: none !important; }
  .act2-col { flex-direction: column; }
  .act2-col > img { max-width: 100%; }
  #act2-vfx-root h1 { font-size: clamp(1rem, 4.5vw, 1.6rem); }
  #act2-vfx-root h2 { font-size: clamp(0.9rem, 4.2vw, 1.5rem); margin: 20vh 0; }
  #act2-vfx-root p { font-size: clamp(0.65rem, 2.4vw, 0.8rem); line-height: 1.7; }
  #act2-vfx-root img { width: 100%; }

  /* Act 3 mobile: keep horizontal scroll, adjust text */
  .act3-panel { padding: 0 1.5rem; }
  .act3-panel-text { max-width: 100%; }

  /* Act 4 mobile */
  .act4-intro { min-height: unset !important; height: calc(var(--vh, 1vh) * 100); max-height: calc(var(--vh, 1vh) * 100); padding: 2rem 1.5rem; box-sizing: border-box; overflow: hidden; }
  .act4-split-word { font-size: clamp(2rem, 9vw, 3.5rem); letter-spacing: 0.05em; }
  .act4-pillar-content { margin-top: -100vh; align-items: center; }

  /* Act 5 mobile: tighten spacing */
  .act5-section { padding: 6vh 1.5rem 4vh; }
  .act5-heading { margin-bottom: 1.5rem; font-size: clamp(1.3rem, 5vw, 1.8rem); }
  .act5-name-rotate { margin-bottom: 1.5rem; height: 2.8rem; }
  .act5-name-face { font-size: clamp(1.2rem, 4vw, 1.8rem); }
  .act5-avatars { gap: 1.2rem; margin-bottom: 2rem; }
  .act5-avatar { width: 56px; height: 56px; font-size: 1.2rem; }
  .act5-closing { margin-bottom: 1.5rem; max-width: 100%; padding: 0 0.5rem; }
  .act5-ig-follow { margin-bottom: 0; }
  .act5-person-ig { opacity: 1; }

  .act6-zoom { height: 150vh; }

  .act6-cta {
    padding: 4vh 1.5rem;
    min-height: auto;
  }

  .act6-cta-inner {
    flex-direction: column;
    gap: 0;
  }

  .cta-divider-line {
    width: 100%;
    height: 1px;
    margin: 1rem 0;
  }

  .cta-path {
    padding: 1.2rem;
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 8px;
  }

  .cta-path h2 { margin-bottom: 0.8rem; }
  .cta-path p { margin-bottom: 1rem; }

  .act6-cta-inner.hovering .cta-path { opacity: 1; }
  .act6-cta-inner.hovering .cta-path.hovered { background-color: transparent; }

  .pills { gap: 0.4rem; margin-bottom: 1rem; }
  .pill { padding: 0.3rem 0.8rem; }

  /* Footer swap: hide fold marquee, show double circle on mobile */
  .fold-marquee-wrap { display: none; }
  .footer-double-circle { display: block; }

  /* Sacred geometry: radial mask fades edges so clipping looks intentional */
  #sacredGeoContainer,
  #sacredGeoGlow {
    -webkit-mask-image: radial-gradient(circle at center, black 25%, transparent 65%);
    mask-image: radial-gradient(circle at center, black 25%, transparent 65%);
  }

  /* Hide side nav overlays on mobile */
  #act-nav-left,
  #act-nav-right { display: none; }

  .act3-scroll-cue { display: none; }
}

/* ════════════════════════════════════════════
   SCROLL UX INDICATORS
   ════════════════════════════════════════════ */

/* Idle scroll nudge */
.scroll-nudge {
  position: fixed;
  bottom: 48px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(244, 242, 255, 0.5);
  opacity: 0;
  transition: opacity 0.6s ease;
  pointer-events: none;
  z-index: 900;
}

.scroll-nudge.visible {
  opacity: 1;
  animation: nudgeBounce 2s ease-in-out infinite;
}

@keyframes nudgeBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(6px); }
}

/* Hero scroll cue (Act 1) */
.hero-scroll-cue {
  position: absolute;
  bottom: 80px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  color: rgba(244, 242, 255, 0.4);
  opacity: 0;
  transition: opacity 1s ease;
  pointer-events: none;
}

.hero-scroll-cue.visible {
  opacity: 1;
}

.hero-scroll-cue.visible svg {
  animation: nudgeBounce 2s ease-in-out infinite;
}

.hero-scroll-label {
  font-family: 'DM Sans', sans-serif;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

/* Act 3 horizontal scroll cue */
.act3-scroll-cue {
  position: absolute;
  bottom: 80px;
  right: 40px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(244, 242, 255, 0.45);
  opacity: 0;
  transition: opacity 0.8s ease;
  pointer-events: none;
  z-index: 50;
}

.act3-scroll-cue.visible {
  opacity: 1;
}

.act3-scroll-cue span {
  font-family: 'DM Sans', sans-serif;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.act3-scroll-cue svg {
  animation: horizontalNudge 1.5s ease-in-out infinite;
}

@keyframes horizontalNudge {
  0%, 100% { transform: rotate(-90deg) translateY(0); }
  50% { transform: rotate(-90deg) translateY(5px); }
}

/* Progress bar act markers */
.progress-marker {
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(244, 242, 255, 0.2);
  transition: background 0.3s ease, width 0.15s ease, height 0.15s ease;
}

.progress-marker.passed {
  background: rgba(244, 242, 255, 0.7);
}

.progress-marker.current {
  width: 6px;
  height: 6px;
  background: rgba(244, 242, 255, 0.9);
}

@media (max-width: 900px) {
  .progress-indicator { width: 75vw; }
  .progress-marker::after {
    content: '';
    position: absolute;
    top: -15px;
    left: -15px;
    right: -15px;
    bottom: -15px;
  }
}

/* ── Act name flash (mobile only) ── */
.act-name-flash {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  text-align: center;
  padding: 1.2rem 1rem;
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--violet-mist);
  opacity: 0;
  pointer-events: none;
  z-index: 100;
}

@media (min-width: 901px) {
  .act-name-flash { display: none; }
}

/* ════════════════════════════════════════════
   ACT 2B: WORD CYCLER
   (from test-word-cycler.html — verbatim)
   ════════════════════════════════════════════ */

/* Outer section: tall, provides scroll distance */
/* Section: 100vh viewport, pinned by GSAP */
.wc-section {
  height: 100vh;
  position: relative;
  background-color: var(--deep-wing);
  overflow: hidden;
}

/* Inner layout: phrase left, words right, first word at viewport center */
.wc-inner {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0.5em;
  width: 100%;
  padding-top: calc(50vh - 1em);
}

/* Phrase: static, stays centered */
.wc-phrase {
  font-family: var(--font-display);
  font-size: clamp(2.1rem, 4.2vw, 3.5rem);
  font-weight: 400;
  white-space: nowrap;
  color: #B8C4E0;
  margin: 0;
  flex-shrink: 0;
}

/* Word list: moves upward via GSAP */
.wc-words {
  --wc-start: 280;
  --wc-end: 340;
  --wc-lightness: 75%;
  --wc-chroma: 0.3;
  --wc-step: calc((var(--wc-end) - var(--wc-start)) / (var(--wc-count) - 1));
  font-weight: 400;
  font-style: italic;
  font-family: var(--font-display);
  font-size: clamp(2.1rem, 4.2vw, 3.5rem);
  padding: 0;
  margin: 0;
  list-style-type: none;
}

.wc-words li {
  line-height: 2;
}

.wc-words li:not(:last-of-type) {
  color: oklch(
    var(--wc-lightness) var(--wc-chroma)
    calc(var(--wc-start) + (var(--wc-step) * var(--i)))
  );
}

.wc-words li:last-of-type {
  background: linear-gradient(
    #B8C4E0 50%,
    color-mix(in oklch, #0A0C1E, #B8C4E0 25%)
  );
  background-clip: text;
  color: #0000;
}

/* Mobile */
@media (max-width: 900px) {
  .wc-inner {
    flex-direction: column;
    padding: 15vh 1.5rem 0;
    align-items: flex-start;
  }
  .wc-phrase {
    position: relative;
    z-index: 5;
    background-color: var(--deep-wing);
    padding-bottom: 0.5rem;
    padding-right: 1rem;
    width: 100%;
  }
  .wc-phrase::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    background-color: var(--deep-wing);
    z-index: -1;
  }
}

/* ════════════════════════════════════════════
   SACRED GEOMETRY — persistent scroll-driven layer
   (adapted from reference/sacred-geometry-scroll.html)
   ════════════════════════════════════════════ */

/* SVG layer: full viewport, fixed, behind content */
#sacredGeoContainer {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  z-index: 1;
  pointer-events: none;
}

#sacredGeoContainer svg {
  width: 100%;
  height: 100%;
}

/* Circle styles — from source .circle-outline / .circle-filled (lines 99-100) */
.sg-outline {
  fill: none;
  stroke: rgba(244, 242, 255, 1);
  stroke-width: 0.5;
}

.sg-filled {
  fill: rgba(244, 242, 255, 0.05);
}

/* Center glow — from source .glowing-circle (lines 113-117) */
#sacredGeoGlow {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
  pointer-events: none;
}

#sacredGeoGlow .glow-orb {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: radial-gradient(
    circle,
    rgba(255, 255, 255, 0.9) 0%,
    rgba(255, 255, 255, 0.6) 15%,
    rgba(244, 242, 255, 0.3) 35%,
    rgba(122, 138, 238, 0.12) 55%,
    transparent 80%
  );
}

