.anim-ready {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 0.45s ease,
    transform 0.45s ease;
}
.anim-visible {
  opacity: 1;
  transform: translateY(0);
}
@keyframes spin-in {
  from {
    transform: rotate(-10deg) scale(0.92);
    opacity: 0;
  }
  to {
    transform: rotate(0) scale(1);
    opacity: 1;
  }
}
@keyframes shimmer {
  0% {
    background-position: -400px 0;
  }
  100% {
    background-position: 400px 0;
  }
}
.shimmer {
  background: linear-gradient(90deg, #232323 25%, #2c2c2e 50%, #232323 75%);
  background-size: 800px 100%;
  animation: shimmer 1.6s infinite;
}
@keyframes glow-pulse {
  0%,
  100% {
    box-shadow: 0 0 8px rgba(235, 136, 12, 0.3);
  }
  50% {
    box-shadow: 0 0 20px rgba(235, 136, 12, 0.65);
  }
}
.glow-pulse {
  animation: glow-pulse 2.5s ease-in-out infinite;
}
.fade-in {
  animation: fadeIn 0.4s ease both;
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.slide-up {
  animation: slideUp 0.45s ease both;
}
@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
