A centred hero above two full-width photo streams gliding endlessly in opposite directions (Web Animations API, content duplicated once for a seamless loop, no @keyframes). Stream Photo component props: image, imageAlt, size (narrow|square|wide). Hovering or focusing a row eases it to a stop; one Pause button stops both via Element.getAnimations(). Off under prefers-reduced-motion, the rows render as a plain static strip. Section options: data-theme (light|dark) section surface; data-speed-1 / data-speed-2 (seconds per loop, default 34 / 40) row speed; data-pausable (true|false) show the global Pause button.