@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
@keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } }
@keyframes scaleIn { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } }

.animate-fadeIn { animation: fadeIn 0.3s ease-out; }
.animate-slideIn { animation: slideIn 0.3s ease-out; }
.animate-slideOut { animation: slideOut 0.3s ease-out forwards; }
.animate-scaleIn { animation: scaleIn 0.3s ease-out; }

@keyframes importProgressShift { from { background-position: 0 0; } to { background-position: 32px 0; } }
@keyframes importSpinnerSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

.import-progress-spinner {
  width: 0.875rem;
  height: 0.875rem;
  border-radius: 9999px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  animation: importSpinnerSpin 0.8s linear infinite;
  flex: 0 0 auto;
}

.import-progress-bar {
  height: 100%;
  border-radius: 9999px;
  transition: width 0.35s ease, opacity 0.25s ease;
}

.import-progress-bar-info { --import-progress-base: linear-gradient(90deg, #60a5fa 0%, #2563eb 100%); background-image: var(--import-progress-base); }
.import-progress-bar-success { --import-progress-base: linear-gradient(90deg, #6ee7b7 0%, #10b981 100%); background-image: var(--import-progress-base); }
.import-progress-bar-warning { --import-progress-base: linear-gradient(90deg, #fcd34d 0%, #f59e0b 100%); background-image: var(--import-progress-base); }
.import-progress-bar-error { --import-progress-base: linear-gradient(90deg, #fda4af 0%, #ef4444 100%); background-image: var(--import-progress-base); }

.import-progress-bar-animated {
  background-size: 32px 32px, 100% 100%;
  background-image:
    linear-gradient(135deg, rgba(255, 255, 255, 0.28) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.28) 50%, rgba(255, 255, 255, 0.28) 75%, transparent 75%, transparent),
    var(--import-progress-base);
  animation: importProgressShift 0.9s linear infinite;
}

.import-progress-bar-indeterminate { box-shadow: 0 0 0.75rem rgba(37, 99, 235, 0.18); }
