/* =========================================================
   Bit Bison · Animations
   Scroll-reveal classes (toggled by JS) + global keyframes
   ========================================================= */

.reveal, .reveal-l, .reveal-r{
  opacity:0;
  transform: translate3d(0, 30px, 0);
  transition: opacity .8s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1);
  will-change: transform, opacity;
}
.reveal-l{ transform: translate3d(-40px, 0, 0) }
.reveal-r{ transform: translate3d( 40px, 0, 0) }

.reveal.in, .reveal-l.in, .reveal-r.in{
  opacity:1;
  transform: translate3d(0,0,0);
}

.stagger > *{
  opacity:0;
  transform: translate3d(0, 24px, 0);
  transition: opacity .7s ease, transform .7s ease;
}
.stagger.in > *{ opacity:1; transform: translate3d(0,0,0) }
.stagger.in > *:nth-child(1){ transition-delay:.05s }
.stagger.in > *:nth-child(2){ transition-delay:.12s }
.stagger.in > *:nth-child(3){ transition-delay:.19s }
.stagger.in > *:nth-child(4){ transition-delay:.26s }
.stagger.in > *:nth-child(5){ transition-delay:.33s }
.stagger.in > *:nth-child(6){ transition-delay:.40s }
.stagger.in > *:nth-child(7){ transition-delay:.47s }
.stagger.in > *:nth-child(8){ transition-delay:.54s }

.split .word{
  display:inline-block;
  opacity:0;
  transform: translate3d(0, 40px, 0);
  transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1);
}
.split.in .word{ opacity:1; transform: translate3d(0,0,0) }

@keyframes float-y{
  0%, 100%{ transform: translateY(0) }
  50%    { transform: translateY(-12px) }
}
@keyframes pulse-ring{
  0%  { box-shadow:0 0 0 0 rgba(0,191,166,.45) }
  70% { box-shadow:0 0 0 18px rgba(0,191,166,0) }
  100%{ box-shadow:0 0 0 0 rgba(0,191,166,0) }
}
@keyframes spin-slow{
  to { transform: rotate(360deg) }
}

.float-y{ animation: float-y 4s ease-in-out infinite }
.pulse-ring{ animation: pulse-ring 2.2s ease-out infinite }
.spin-slow{ animation: spin-slow 24s linear infinite }
