/* Brief continuity between documents; scrolling stays under browser control. */
@view-transition { navigation: auto; }
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 160ms;
  animation-timing-function: ease-out;
}

/* Reading position is composited by the browser, without a scroll listener. */
@supports (animation-timeline: scroll()) {
  @media screen and (prefers-reduced-motion: no-preference) {
    body::before {
      content: "";
      position: fixed;
      inset: 0 0 auto;
      height: 2px;
      z-index: 40;
      pointer-events: none;
      background: #00ff66;
      transform-origin: left;
      animation: reading-position linear both;
      animation-timeline: scroll(root block);
    }
    @keyframes reading-position {
      from { transform: scaleX(0); }
      to { transform: scaleX(1); }
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  ::view-transition-old(root),
  ::view-transition-new(root) { animation: none; }
}
