/* Reveal-on-scroll base states (JS toggles .in-view) */
.reveal{opacity:0;transform:translateY(36px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal.in-view{opacity:1;transform:translateY(0);}
.reveal-left{opacity:0;transform:translateX(-46px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal-left.in-view{opacity:1;transform:translateX(0);}
.reveal-right{opacity:0;transform:translateX(46px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal-right.in-view{opacity:1;transform:translateX(0);}
.reveal-scale{opacity:0;transform:scale(.88);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.reveal-scale.in-view{opacity:1;transform:scale(1);}
.stagger .reveal:nth-child(1){transition-delay:.05s;}
.stagger .reveal:nth-child(2){transition-delay:.15s;}
.stagger .reveal:nth-child(3){transition-delay:.25s;}
.stagger .reveal:nth-child(4){transition-delay:.35s;}
.stagger .reveal:nth-child(5){transition-delay:.45s;}
.stagger .reveal:nth-child(6){transition-delay:.55s;}

@keyframes floatY{0%,100%{transform:translateY(0);}50%{transform:translateY(-16px);}}
.float{animation:floatY 5s ease-in-out infinite;}
.float-slow{animation:floatY 8s ease-in-out infinite;}
.float-delay{animation-delay:1.2s;}

@keyframes spinSlow{to{transform:rotate(360deg);}}
.spin-slow{animation:spinSlow 22s linear infinite;}

@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(242,101,34,.35);}50%{box-shadow:0 0 0 14px rgba(242,101,34,0);}}
.pulse{animation:pulseGlow 2.4s ease-out infinite;}

@keyframes gradientShift{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}
.grad-anim{background-size:200% 200%;animation:gradientShift 8s ease infinite;}

@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.marquee-track{display:flex;width:max-content;animation:marquee 28s linear infinite;}
.marquee-wrap:hover .marquee-track{animation-play-state:paused;}

.typing-cursor::after{content:'|';animation:blink 1s step-start infinite;color:var(--orange);}
@keyframes blink{50%{opacity:0;}}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
}
