/* =============================================
   ANIMATIONS — Keyframes & Reveal classes
   ============================================= */

@keyframes up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes wup {
  from { opacity: 0; transform: translateY(110%); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes bfloat {
  0%, 100% { transform: translate(0, 0); }
  40%       { transform: translate(40px, -30px); }
  70%       { transform: translate(-30px, 40px); }
}

@keyframes slp {
  0%, 100% { transform: scaleY(0); transform-origin: top; opacity: 0; }
  50%       { transform: scaleY(1); opacity: 1; }
}

@keyframes mq {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* Scroll reveal */
.rv {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity   .85s cubic-bezier(.16, 1, .3, 1),
    transform .85s cubic-bezier(.16, 1, .3, 1);
}

.rv.vis {
  opacity: 1;
  transform: none;
}

.d1 { transition-delay: .1s; }
.d2 { transition-delay: .2s; }
.d3 { transition-delay: .3s; }
