/* ============================================================
   Trace Origin entry — starfield collapse → void → origin line
   ============================================================ */

body.is-trace-origin-entry {
  --star-collapse-p: 0;
  --trace-void-p: 0;
  --origin-glow-p: 0;
  --line-draw-p: 0;
}

#traceOriginVoid {
  position: fixed;
  inset: 0;
  z-index: 9996;
  pointer-events: none;
  opacity: 0;
  will-change: opacity;
  background:
    radial-gradient(
      ellipse 22% 16% at 50% 11%,
      rgba(220, 240, 255, calc(var(--origin-glow-p, 0) * 0.42)) 0%,
      rgba(180, 210, 255, calc(var(--origin-glow-p, 0) * 0.12)) 32%,
      transparent 68%
    ),
    #000000;
}

/* Starfield collapses toward the origin point at top-center */
body.is-trace-origin-entry #page2-starfield,
body.is-trace-origin-entry #page2-starfield.is-active {
  transition: none;
  transform:
    scale(calc(1 - var(--star-collapse-p) * 0.22))
    translateY(calc(var(--star-collapse-p) * -10vh));
  transform-origin: 50% 18%;
  filter:
    blur(calc(var(--star-collapse-p) * 14px))
    brightness(calc(1 - var(--star-collapse-p) * 0.72));
  opacity: calc(1 - var(--star-collapse-p) * 0.98);
}

body.is-trace-origin-entry #floatyFrame {
  transition: none;
  opacity: calc(1 - var(--star-collapse-p) * 0.88);
  filter: blur(calc(var(--star-collapse-p) * 6px));
}

body.is-trace-origin-entry #page2-starfield::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(
    ellipse 90% 70% at 50% 14%,
    rgba(255, 255, 255, calc(var(--star-collapse-p) * 0.08)) 0%,
    transparent 55%
  );
}

/* Intro scroll-line — origin star + first curve segment on pure black */
#scroll-line.is-intro {
  opacity: 1;
  z-index: 9997;
  transition: opacity 0.2s ease;
}

#scroll-line.is-intro .scroll-line__waypoint,
#scroll-line.is-intro .scroll-line__tree-ring,
#scroll-line.is-intro .scroll-line__layer--vines {
  opacity: 0 !important;
}

#scroll-line.is-intro .scroll-line__head {
  opacity: calc(var(--line-draw-p, 0));
}

#scroll-line.is-intro .scroll-line__head-halo {
  opacity: calc(var(--line-draw-p, 0) * 0.72);
}

#scroll-line.is-intro .scroll-line__head.is-drawing {
  animation: trace-origin-pulse 2.4s ease-in-out infinite;
}

#scroll-line.is-intro .scroll-line__head.is-drawing + .scroll-line__head-halo {
  animation: trace-origin-halo 2.4s ease-in-out infinite;
}

@keyframes trace-origin-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.35); }
}

@keyframes trace-origin-halo {
  0%, 100% { opacity: 0.5; transform: scale(1); }
  50% { opacity: 0.85; transform: scale(1.2); }
}

@media (prefers-reduced-motion: reduce) {
  body.is-trace-origin-entry #page2-starfield,
  body.is-trace-origin-entry #floatyFrame {
    filter: none;
    transform: none;
    transition: opacity 0.2s ease;
  }

  #scroll-line.is-intro .scroll-line__head.is-drawing,
  #scroll-line.is-intro .scroll-line__head.is-drawing + .scroll-line__head-halo {
    animation: none;
  }
}
