@keyframes slide-down {
  from { opacity: 0; transform: translateY(-0.5rem); }
  to   { opacity: 1; transform: translateY(0); }
}

.animate-slide-down {
  animation: slide-down 0.25s ease-out;
}

@keyframes rainbow-spin {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

.rarity-rainbow {
  background: linear-gradient(135deg, #ef4444, #f59e0b, #22c55e, #3b82f6, #8b5cf6, #ec4899);
  background-size: 300% 300%;
  animation: rainbow-spin 3s ease infinite;
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }

  100% {
    background-position: 200% 0;
  }
}

.skeleton {
  background: linear-gradient(90deg,
      #f0f0f0 25%,
      #e0e0e0 37%,
      #f0f0f0 63%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease-in-out infinite;
  border-radius: 0.5rem;
}

.skeleton-text {
  height: 0.75rem;
  border-radius: 0.25rem;
}

.skeleton-text-lg {
  height: 1rem;
  border-radius: 0.25rem;
}

.skeleton-card {
  background: white;
  border: 1px solid #e5e7eb;
  border-radius: 0.75rem;
  overflow: hidden;
}

.skeleton-card .skeleton-image {
  aspect-ratio: 1;
  width: 100%;
}

.skeleton-card .skeleton-body {
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}