/* Keep animation layout and paint inside the existing clipped preview viewports. */
.dashboard-preview,
.analysis-preview,
.guardrails-preview,
.live-preview{
  contain:layout paint;
}

/* Pause decorative motion without resetting its phase when its host is offscreen. */
h1 .g.motion-paused,
.hero h1.motion-paused .hero-title-dot,
.hero-stage.motion-paused::before,
.marquee.motion-paused .marquee-track,
.price-card.motion-paused,
.tag.motion-paused::before,
.cta-box.motion-paused i,
.guardrails-preview.motion-paused .guardrails-alert-dot,
html.landing-backgrounded h1 .g,
html.landing-backgrounded .hero-title-dot,
html.landing-backgrounded .hero-stage::before,
html.landing-backgrounded .marquee-track,
html.landing-backgrounded .price-card,
html.landing-backgrounded .tag::before,
html.landing-backgrounded .cta-box i,
html.landing-backgrounded .guardrails-alert-dot,
html.landing-backgrounded .btn-primary::before,
html.landing-backgrounded .ambient i{
  animation-play-state:paused;
}

/* Only the thin progress bar and visible pointer glows need persistent layers. */
.progress{will-change:transform;}
.cursor-glow.on{will-change:transform,opacity;}
