.reveal-up {
  opacity: 0;
  translate: 0 40px;
  will-change: opacity, translate;
}

.reveal-up.revealed-block {
  animation:
    reveal-up-opacity 500ms cubic-bezier(0.6, 0, 0.6, 0.6) both,
    reveal-up-translate 500ms cubic-bezier(0.5, 0, 0.5, 0.8) both;
}

.reveal-up--delay-1.revealed-block {
  animation-delay: 0.500ms, 0.500ms;
}

.reveal-up--delay-2.revealed-block {
  animation-delay: 0.1s, 0.1s;
}

.reveal-up--delay-3.revealed-block {
  animation-delay: 0.2s, 0.2s;
}

.reveal-up--delay-4.revealed-block {
  animation-delay: 0.3s, 0.3s;
}

@keyframes reveal-up-opacity {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes reveal-up-translate {
  from {
    translate: 0 20px;
  }

  to {
    translate: 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal-up {
    opacity: 1;
    translate: none;
    will-change: auto;
  }

  .reveal-up.revealed-block {
    animation: none !important;
  }
}