A tall, centred photo that scrolls or drags vertically through six "Drift Photo" component instances (photo, photoAlt, caption that hides when empty), built as a plain, fully editable Etch tree: section > container > header (eyebrow, h2, intro) > viewer (numeric counter on the left, the vertical photo stack in the centre over a soft ambient glow, a vertical progress rail on the right, and a "scroll or drag" hint at the bottom). Duplicate, reorder or delete photos in Layers. Every option is a data attribute on the viewer (edit it in Etch's attributes panel): data-theme (light|dark, default dark) re-themes the whole section and its ambient glow; data-wheel (true|false, default true) mouse-wheel scroll changes the active photo; data-drag (true|false, default true) vertical pointer drag / touch swipe changes the active photo; data-loop (true|false, default true) wraps past the last photo instead of stopping; data-hint (true|false, default true) shows the "scroll or drag" prompt until the first interaction; data-radius (s|m|l|xl, default l) card corner radius from the ACSS radius tokens. Inline JS sets a signed distance-from-active custom property on every card (CSS alone drives the stacked translate/scale/opacity/blur falloff), responds to mouse-wheel scroll, vertical pointer drag with a distance threshold, Up/Down/Home/End arrow keys, and a click on any visible card to jump straight to it; the ambient glow crossfades to a heavily blurred copy of the active photo (no @keyframes — CSS opacity transition) and the hint fades out after the first interaction and under prefers-reduced-motion. Works without JS as a static resting stack with the first photo active and the hint hidden. Labelled region, :focus-visible rings, AA contrast, forced-colors borders, pointer/drag effects no-op on touch beyond native swipe.