/* ==========================================================================
   Article page — entrance animation on load
   ========================================================================== */

.page-article {
  --article-enter-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --article-enter-duration: 0.9s;
  --article-item-step: 50ms;
  --article-item-duration: 0.4s;
}

.page-article.is-article-animating .hero__title,
.page-article.is-article-animating .hero__media,
.page-article.is-article-animating .home-screen--article::before,
.page-article.is-article-animating .hero__meta > *,
.page-article.is-article-animating .article-breadcrumbs > *,
.page-article.is-article-animating .article-section__inner {
  will-change: transform, opacity;
}

.page-article.is-article-animating .hero__title,
.page-article.is-article-animating .hero__media,
.page-article.is-article-animating .home-screen--article::before {
  opacity: 0;
  transition:
    opacity var(--article-enter-duration) var(--article-enter-ease),
    transform var(--article-enter-duration) var(--article-enter-ease);
}

.page-article.is-article-animating .hero__title {
  transform: translateY(28px);
}

.page-article.is-article-animating .hero__meta > *,
.page-article.is-article-animating .article-breadcrumbs > *,
.page-article.is-article-animating .article-section__inner {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity var(--article-item-duration) var(--article-enter-ease),
    transform var(--article-item-duration) var(--article-enter-ease);
}

.page-article.is-article-animating .article-section__inner {
  transform: translateY(24px);
}

/* Step 1 — title + media + background */
.page-article.is-article-animating.is-article-entered--hero .hero__title {
  opacity: 1;
  transform: translateY(0);
}

.page-article.is-article-animating.is-article-entered--hero .hero__media,
.page-article.is-article-animating.is-article-entered--hero .home-screen--article::before {
  opacity: 1;
}

/* Step 2 — meta items */
.page-article.is-article-animating.is-article-entered--meta .hero__meta > * {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--meta-index, 0) * var(--article-item-step));
}

/* Step 3 — breadcrumbs */
.page-article.is-article-animating.is-article-entered--breadcrumbs .article-breadcrumbs > * {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--crumb-index, 0) * var(--article-item-step));
}

/* Step 4 — article sections (on scroll) */
.page-article.is-article-animating.is-article-entered--sections .article-section__inner {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--section-index, 0) * var(--article-item-step));
}

@media (max-width: 767px) {
  .page-article.is-article-animating.is-article-entered--hero .home-screen--article::before {
    opacity: 0.1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-article.is-article-animating .hero__title,
  .page-article.is-article-animating .hero__media,
  .page-article.is-article-animating .home-screen--article::before,
  .page-article.is-article-animating .hero__meta > *,
  .page-article.is-article-animating .article-breadcrumbs > *,
  .page-article.is-article-animating .article-section__inner {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
