/* ========================================
   Shared Animations & Keyframes
   ======================================== */

@keyframes fade-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes translatePulse {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 0.8; }
}

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

@keyframes slide-up {
  from {
    transform: translateY(20px);
  }
  to {
    transform: translateY(0);
  }
}

/* Utility classes */
.animate-fade-up {
  animation: fade-slide-up 0.8s ease-out forwards;
}

.animate-pulse {
  animation: translatePulse 1s ease-in-out infinite;
}

.skeleton {
  background: linear-gradient(90deg, var(--bg3) 25%, rgba(var(--bg-rgb), 0.5) 50%, var(--bg3) 75%);
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.5s ease-in-out infinite;
  border-radius: 8px;
}

/* Shared utility classes */
.is-translating {
  opacity: 0.5;
  animation: translatePulse 1s ease-in-out infinite;
}

.is-translated {
  opacity: 1;
}
