/* ==========================================================================
   GD Stake — Animation Utilities
   ========================================================================== */

.fade-in-up {
  animation: gdFadeIn 0.5s ease both;
}
.stagger-1 {
  animation-delay: 0.05s;
}
.stagger-2 {
  animation-delay: 0.12s;
}
.stagger-3 {
  animation-delay: 0.19s;
}
.stagger-4 {
  animation-delay: 0.26s;
}
.stagger-5 {
  animation-delay: 0.33s;
}
.stagger-6 {
  animation-delay: 0.4s;
}

.float-anim {
  animation: gdFloat 4.5s ease-in-out infinite;
}

.spin-slow {
  animation: gdSpin 12s linear infinite;
}
@keyframes gdSpin {
  to {
    transform: rotate(360deg);
  }
}

/* splash orbit rings */
.orbit-ring {
  position: absolute;
  border: 1px solid rgba(124, 77, 255, 0.25);
  border-radius: 50%;
}
@keyframes gdTwinkle {
  0%,
  100% {
    opacity: 0.3;
  }
  50% {
    opacity: 1;
  }
}
.twinkle {
  animation: gdTwinkle 3s ease-in-out infinite;
}

/* page transition fade used by navigation.js */
.page-exit {
  animation: gdPageExit 0.28s ease forwards;
}
@keyframes gdPageExit {
  to {
    opacity: 0;
    transform: translateY(-8px);
  }
}

/* counter pop */
@keyframes gdPop {
  0% {
    transform: scale(0.9);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}
.counter-pop {
  animation: gdPop 0.4s ease both;
}

/* skeleton shimmer, reserved for future async states */
.shimmer {
  background: linear-gradient(
    90deg,
    var(--gd-surface-2) 25%,
    var(--gd-surface-3) 50%,
    var(--gd-surface-2) 75%
  );
  background-size: 200% 100%;
  animation: gdShimmer 1.6s ease-in-out infinite;
}
@keyframes gdShimmer {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
