/* ============================================================
   MOTION — all animations, reveals, and reduced-motion handling.
   Transform + opacity only. No layout-triggering animation.
   ============================================================ */

/* Hero load reveals */
.reveal{
  opacity:0;transform:translateY(18px);
  animation:rise 1.1s var(--ease-out) forwards;
  animation-delay:var(--d,0ms);
}
@keyframes rise{to{opacity:1;transform:none}}

/* Hero rule draw */
.hero__rule{
  opacity:0;transform:scaleX(0);transform-origin:left center;
  animation:ruleDraw 1.3s var(--ease-out) .66s forwards;
}
@keyframes ruleDraw{to{opacity:1;transform:scaleX(1)}}

/* Gold-catch on "operator's" — light sweeps gold across the italic, settling to ivory */
.goldcatch{
  color:transparent;-webkit-text-fill-color:transparent;
  background:linear-gradient(100deg,var(--ivory) 0 38%,var(--gold-bright) 47%,var(--gold) 53%,var(--ivory) 62% 100%);
  background-size:280% 100%;background-position:100% 0;
  -webkit-background-clip:text;background-clip:text;
  animation:sweep 2.2s var(--ease) .9s forwards;
}
@keyframes sweep{to{background-position:0 0}}

/* Scroll-triggered section reveals (triggered by IntersectionObserver adding .in) */
.s-reveal{
  opacity:0;transform:translateY(20px);
  transition:opacity 1s var(--ease-out),transform 1s var(--ease-out);
  will-change:opacity,transform;
}
.s-reveal.in{opacity:1;transform:none}
.s-reveal[data-d="1"]{transition-delay:.08s}
.s-reveal[data-d="2"]{transition-delay:.16s}
.s-reveal[data-d="3"]{transition-delay:.24s}

/* prefers-reduced-motion — everything at rest, no motion */
@media(prefers-reduced-motion:reduce){
  .atmos::before{animation:none}
  .reveal,.goldcatch{animation:none!important;opacity:1!important;transform:none!important}
  .hero__rule{animation:none!important;opacity:1!important;transform:scaleX(1)!important}
  .goldcatch{background:none!important;color:var(--ivory)!important;-webkit-text-fill-color:var(--ivory)!important}
  .hero__ghost{transform:none!important}
  .s-reveal{transition:none!important;opacity:1!important;transform:none!important}
  .geo__arc,.geo__glow{transition:none!important;stroke-dashoffset:0!important}
  .gnode,.glabel,.gitem{transition:none!important;opacity:1!important;transform:none!important}
  .geo__list::before{transition:none!important;transform:scaleY(1)!important}
  .cue__bar::after{animation:none;display:none}
}
