/* =========================================================
   PixelArcade — Animations
   ========================================================= */

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

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

@keyframes spin{ to{ transform:rotate(360deg); } }

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

@keyframes pulseGlow{
  0%,100%{ box-shadow:0 0 0 0 rgba(37,99,235,.28); }
  50%{ box-shadow:0 0 0 14px rgba(37,99,235,0); }
}

@keyframes shimmer{
  0%{ background-position:-400px 0; }
  100%{ background-position:400px 0; }
}

.reveal{ opacity:0; transform:translateY(28px); transition:opacity .6s ease, transform .6s ease; }
.reveal.is-visible{ opacity:1; transform:translateY(0); animation:slideUp .6s ease; }

.hero-art svg{ animation:floaty 5s ease-in-out infinite; }

.pulse-cta{ animation:pulseGlow 2.4s ease-out infinite; }

.skeleton{
  background:linear-gradient(90deg,#eef1f5 25%,#f7f9fc 37%,#eef1f5 63%);
  background-size:400px 100%; animation:shimmer 1.4s infinite linear;
}

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