:root {
  --a-reveal-translate: var(--motion-distance-m);
  --a-hover-translate: var(--motion-distance-xs);
  --a-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

[data-reveal] {
  opacity: 0;
  transform: translate3d(0, var(--a-reveal-translate), 0);
  transition:
    opacity var(--dur-slow) var(--a-ease),
    transform var(--dur-slow) var(--a-ease);
  will-change: opacity, transform;
}

.is-revealed {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.can-hover .btn:hover,
.can-hover .card:hover,
.can-hover .step:hover,
.can-hover .price:hover,
.can-hover .note:hover,
.can-hover .banner:hover {
  transform: translate3d(0, calc(var(--a-hover-translate) * -1), 0);
  box-shadow: var(--shadow-l);
}

.motion-off [data-reveal] {
  opacity: 1;
  transform: none;
  transition: none;
}

.motion-off .btn,
.motion-off .card,
.motion-off .step,
.motion-off .price,
.motion-off .note,
.motion-off .banner {
  transition: none;
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .btn,
  .card,
  .step,
  .price,
  .note,
  .banner {
    transition: none;
  }
}