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

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.animate-fade-in-up { animation: fadeInUp 0.6s ease-out forwards; }
.animate-fade-in    { animation: fadeIn 0.8s ease-out forwards; }

.stagger-1  { animation-delay: 0.1s; opacity: 0; }
.stagger-2  { animation-delay: 0.2s; opacity: 0; }
.stagger-3  { animation-delay: 0.3s; opacity: 0; }
.stagger-4  { animation-delay: 0.4s; opacity: 0; }
.stagger-5  { animation-delay: 0.5s; opacity: 0; }
.stagger-6  { animation-delay: 0.6s; opacity: 0; }
.stagger-7  { animation-delay: 0.7s; opacity: 0; }
.stagger-8  { animation-delay: 0.8s; opacity: 0; }
.stagger-9  { animation-delay: 0.9s; opacity: 0; }
.stagger-10 { animation-delay: 1.0s; opacity: 0; }

section {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

section.visible { opacity: 1; transform: translateY(0); }

.fade-in-item {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.fade-in-item.visible { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  section, .fade-in-item { opacity: 1; transform: none; }
  .stagger-1, .stagger-2, .stagger-3, .stagger-4, .stagger-5,
  .stagger-6, .stagger-7, .stagger-8, .stagger-9, .stagger-10 { opacity: 1; }
}
