/* ============================================================
   ANIMATIONS
   ============================================================ */

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

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

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

@keyframes glitch1 {
  0%, 90%, 100% { transform: translate(0); }
  92% { transform: translate(-4px,  1px); }
  94% { transform: translate( 4px, -1px); }
  96% { transform: translate(-2px,  0);   }
  98% { transform: translate( 2px,  1px); }
}

@keyframes glitch2 {
  0%, 90%, 100% { transform: translate(0); }
  93% { transform: translate( 3px, -1px); }
  95% { transform: translate(-3px,  1px); }
  97% { transform: translate( 2px,  0);   }
  99% { transform: translate(-2px, -1px); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1);   opacity: .5; }
  50%       { transform: scale(1.2); opacity: .8; }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-10px); }
}

@keyframes scanline {
  0%   { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}
