/* =========================================
   REVEAL & SCROLL ANIMATIONS
   ========================================= */

.reveal{
  opacity:0;
  transform:translateY(50px);
  transition:opacity .9s var(--ease), transform .9s var(--ease);
  will-change:transform,opacity;
}
.reveal[data-reveal="left"]{transform:translateX(-60px)}
.reveal[data-reveal="right"]{transform:translateX(60px)}
.reveal[data-reveal="scale"]{transform:scale(.9)}

.reveal.in-view{
  opacity:1;
  transform:translate(0,0) scale(1);
}

/* stagger children automatically */
.reveal-stagger > *{
  opacity:0;transform:translateY(30px);
  transition:.7s var(--ease);
}
.reveal-stagger.in-view > *{opacity:1;transform:translateY(0)}
.reveal-stagger.in-view > *:nth-child(1){transition-delay:.05s}
.reveal-stagger.in-view > *:nth-child(2){transition-delay:.15s}
.reveal-stagger.in-view > *:nth-child(3){transition-delay:.25s}
.reveal-stagger.in-view > *:nth-child(4){transition-delay:.35s}
.reveal-stagger.in-view > *:nth-child(5){transition-delay:.45s}
.reveal-stagger.in-view > *:nth-child(6){transition-delay:.55s}

/* floating animation for badges */
@keyframes float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-12px)}
}
.about__badge{animation:float 6s ease-in-out infinite}

/* pulse */
@keyframes pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(245,197,24,.4)}
  50%{box-shadow:0 0 0 16px rgba(245,197,24,0)}
}
.timeline__num{animation:pulse 2.5s ease-in-out infinite}

/* button shimmer */
.btn--primary{position:relative}
.btn--primary::after{
  content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);
  transition:left .8s;pointer-events:none;
}
.btn--primary:hover::after{left:100%}

/* link hover underline anim */
.service-card__link i{transition:transform .4s var(--ease)}
.service-card__link:hover i{transform:translate(4px,-4px)}

/* logo hover */
.logo:hover .logo__mark{transform:rotate(90deg);transition:transform .6s var(--ease)}
.logo__mark{transition:transform .6s var(--ease)}

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