/* ==========================================================================
   MSUNK — animations.css
   Keyframes + reusable motion utility classes
   ========================================================================== */

@keyframes fadein{ from{ opacity:0; } to{ opacity:1; } }
@keyframes fadeInUp{ from{ opacity:0; transform:translateY(24px);} to{ opacity:1; transform:translateY(0);} }
@keyframes fadeInDown{ from{ opacity:0; transform:translateY(-24px);} to{ opacity:1; transform:translateY(0);} }
@keyframes slideInLeft{ from{ opacity:0; transform:translateX(-40px);} to{ opacity:1; transform:translateX(0);} }
@keyframes slideInRight{ from{ opacity:0; transform:translateX(40px);} to{ opacity:1; transform:translateX(0);} }
@keyframes zoomIn{ from{ opacity:0; transform:scale(.9);} to{ opacity:1; transform:scale(1);} }
@keyframes bounceIn{
  0%{ opacity:0; transform:scale(.5); }
  60%{ opacity:1; transform:scale(1.06); }
  80%{ transform:scale(.96); }
  100%{ transform:scale(1); }
}
@keyframes floaty{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-14px);} }
@keyframes pulseGlow{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,90,31,.4);} 50%{ box-shadow:0 0 0 14px rgba(255,90,31,0);} }
@keyframes spin{ to{ transform:rotate(360deg); } }
@keyframes countUp{ from{ opacity:0; transform:translateY(6px);} to{ opacity:1; transform:translateY(0);} }

/* AOS-like reveal-on-scroll utility (used alongside AOS lib for elements we hand-roll) */
.reveal{ opacity:0; transform:translateY(30px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in{ opacity:1; transform:translateY(0); }
.reveal.delay-1{ transition-delay:.08s; }
.reveal.delay-2{ transition-delay:.16s; }
.reveal.delay-3{ transition-delay:.24s; }
.reveal.delay-4{ transition-delay:.32s; }

.anim-fadeUp{ animation: fadeInUp .8s var(--ease) both; }
.anim-fadeDown{ animation: fadeInDown .8s var(--ease) both; }
.anim-slideLeft{ animation: slideInLeft .8s var(--ease) both; }
.anim-slideRight{ animation: slideInRight .8s var(--ease) both; }
.anim-zoom{ animation: zoomIn .6s var(--ease) both; }
.anim-bounce{ animation: bounceIn .7s var(--ease) both; }
.anim-float{ animation: floaty 4s ease-in-out infinite; }
.anim-pulse{ animation: pulseGlow 2.2s infinite; }

.spin{ animation: spin 1s linear infinite; }

/* staggered children helper: apply .stagger to a parent, items get incremental delay via inline style set by JS */
.stagger > *{ opacity:0; animation: fadeInUp .7s var(--ease) forwards; }

/* Parallax layers driven by JS transform on scroll */
.parallax-layer{ will-change: transform; }

/* Reduced motion respect */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}
