.has-motion .js-reveal {
  transition: opacity 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) var(--reveal-delay, 0ms),
    translate 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) var(--reveal-delay, 0ms);
}

.has-motion .js-reveal:not(.is-visible) {
  opacity: 0;
  translate: 0 24px;
}

@keyframes hero-card-in {
  from {
    opacity: 0;
    translate: 0 28px;
  }
}

@keyframes hero-text-in {
  from {
    opacity: 0;
    translate: 0 14px;
  }
}

.has-motion .hero__card {
  animation: hero-card-in 0.9s cubic-bezier(0.2, 0.7, 0.2, 1) both;
  animation-delay: calc(var(--order, 0) * 70ms);
  will-change: transform;
}

.has-motion .hero__eyebrow,
.has-motion .hero__title,
.has-motion .hero__text,
.has-motion .hero__button {
  animation: hero-text-in 0.8s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.has-motion .hero__title {
  animation-delay: 80ms;
}

.has-motion .hero__text {
  animation-delay: 160ms;
}

.has-motion .hero__button {
  animation-delay: 240ms;
}

@supports (interpolate-size: allow-keywords) {
  .faq__details {
    interpolate-size: allow-keywords;
  }

  .faq__details::details-content {
    height: 0;
    overflow: clip;
    transition: height 0.3s ease, content-visibility 0.3s allow-discrete;
  }

  .faq__details[open]::details-content {
    height: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq__details::details-content {
    transition: none;
  }
}
