/* Scroll fade-up animations */
:root {
  --fade-up-duration: 1.5s;
  --fade-up-distance: 36px;
  --fade-up-blur: 10px;
  --fade-up-ease: cubic-bezier(0.19, 1, 0.22, 1);
  --fade-up-card-step: 260ms;
  --fade-up-card-max: 1300ms;
}

.fade-up {
  opacity: 0;
  transform: translate3d(0, var(--fade-up-distance), 0);
  filter: blur(var(--fade-up-blur));
  transition: none;
}

.fade-up.is-inview {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
  transition:
    opacity var(--fade-up-duration) var(--fade-up-ease),
    transform var(--fade-up-duration) var(--fade-up-ease),
    filter var(--fade-up-duration) var(--fade-up-ease);
  transition-delay: var(--fade-delay, 0ms);
}

.fade-up--card {
  --fade-up-duration: 1.65s;
  --fade-up-blur: 12px;
}

.fade-up--header {
  --fade-up-duration: 1.3s;
  --fade-up-distance: 24px;
  --fade-up-blur: 8px;
}

.fade-up--hero {
  --fade-up-duration: 1.55s;
  --fade-up-distance: 40px;
  --fade-up-blur: 12px;
}

@media (prefers-reduced-motion: reduce) {
  .fade-up {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}
