/* Animations */
/* Keyframe animations */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes fade-in {
  0% {
    opacity: 0;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes modal-slide-in {
  0% {
    opacity: 0;
    transform: translateY(-30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes toast-slide-in {
  0% {
    opacity: 0;
    transform: translateX(100%);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes toast-slide-out {
  0% {
    opacity: 1;
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    transform: translateX(100%);
  }
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

/* Animation classes */
.fade-in {
  animation: fade-in var(--transition-normal) ease;
}

.pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* Transitions */
.transition-opacity {
  transition: opacity var(--transition-normal) ease;
}

.transition-transform {
  transition: transform var(--transition-normal) ease;
}

.hover-scale {
  transition: transform var(--transition-normal) ease;
}

.hover-scale:hover {
  transform: scale(1.05);
}

/* Hover effects */
.hover-card {
  transition: transform var(--transition-normal) ease, box-shadow var(--transition-normal) ease;
}

.hover-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-md);
}
