@keyframes fadeUp {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes softScale {
  from { opacity: 0; transform: scale(0.96); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes progressFill {
  from { stroke-dashoffset: 100; }
}

@keyframes pulseSoft {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.04); opacity: 0.88; }
}

@keyframes slideInToast {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

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

.anim-fade-up {
  animation: fadeUp 0.55s ease both;
}

.anim-soft-scale {
  animation: softScale 0.6s ease both;
}

.anim-delay-1 { animation-delay: 0.08s; }
.anim-delay-2 { animation-delay: 0.16s; }
.anim-delay-3 { animation-delay: 0.24s; }
.anim-delay-4 { animation-delay: 0.32s; }

.toast-item {
  animation: slideInToast 0.35s ease both;
}

.current-step-pulse {
  animation: pulseSoft 2.4s ease-in-out infinite;
}

.skeleton {
  border-radius: 0.85rem;
  background: linear-gradient(90deg, #efe9dc 25%, #f7f3ea 37%, #efe9dc 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}

.check-pop {
  animation: softScale 0.35s ease;
}

@media (prefers-reduced-motion: reduce) {
  .current-step-pulse,
  .skeleton {
    animation: none;
  }
}
