.js.motion-ready .js-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 760ms ease, transform 840ms var(--ease-film);
}

.js.motion-ready .js-reveal.is-visible {
  opacity: 1;
  transform: none;
}

.story-card,
.video-card,
.content-card {
  transition: border-color 260ms ease, box-shadow 420ms ease, transform 500ms var(--ease-film);
}

.story-card:hover,
.video-card:hover,
.content-card:hover {
  border-color: var(--line-strong);
  box-shadow: 0 26px 70px rgb(0 0 0 / 32%);
  transform: translateY(-5px);
}

.front-hero__scroll::after {
  animation: shigeki-scroll-line 2.2s ease-in-out infinite;
  transform-origin: top;
}

.front-hero__curtain span:first-child {
  animation: shigeki-curtain-breathe 8s ease-in-out infinite alternate;
}

.front-hero__curtain span:last-child {
  animation: shigeki-curtain-breathe 8s ease-in-out 1.3s infinite alternate-reverse;
}

@keyframes shigeki-scroll-line {
  0%, 100% { opacity: .25; transform: scaleY(.28); }
  45% { opacity: 1; transform: scaleY(1); }
}

@keyframes shigeki-curtain-breathe {
  from { opacity: .55; filter: brightness(.75); }
  to { opacity: .95; filter: brightness(1.12); }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  [data-parallax],
  .front-hero__media,
  .story-hero__image,
  .story-scene__media,
  .home-manifesto__visual {
    transform: none !important;
  }

  .js.motion-ready .js-reveal {
    opacity: 1;
    transform: none;
  }

  .story-timeline__line span {
    height: 100%;
  }
}

@media print {
  .site-header,
  .site-footer,
  .button-row,
  .story-video,
  .front-hero__scroll,
  .story-progress,
  .story-chapter-index,
  .archive-filter {
    display: none !important;
  }

  body,
  .story-hero,
  .story-scene,
  .story-note,
  .story-sources,
  .archive-hero,
  .entry-hero {
    background: #fff !important;
    color: #111 !important;
  }

  body::before,
  .story-hero__image,
  .story-hero__overlay,
  .archive-hero::before,
  .entry-hero::before,
  .story-scene::before {
    display: none !important;
  }

  .story-hero {
    min-height: auto;
  }

  a,
  .entry-content a,
  .story-sources a {
    color: #111 !important;
  }

  .js.motion-ready .js-reveal {
    opacity: 1 !important;
    transform: none !important;
  }

  .evidence details:not([open]) > .evidence__body {
    display: block !important;
  }
}
