Plain editable section (eyebrow, heading, intro) holding a single vertical rail of "Progress Step" component instances — duplicate, reorder or delete steps in Layers. Typed props per step: step (the number label, e.g. "01"), title, caption (the short line overlaid on the photo), image, imageAlt and url (empty hides the card's link). A background spine runs the length of the rail with a coloured overlay that fills downward as the rail scrolls through the viewport (a single rAF scroll listener drives a –progress custom property, no per-frame layout thrash); each numbered node lights up — filled, ringed and slightly larger — the moment the fill reaches it, using IntersectionObserver against the viewport's vertical centre, and returns to its resting state when scrolled back past. Every photo has a soft gradient with its caption readable over it. Options are data attributes on the Rail element (edit in Etch's attributes panel): data-theme (light|dark) re-themes the section; data-image-ratio (portrait|classic|square); data-radius (none|s|m|l); data-connector (solid|dashed) spine style; per step: step (e.g. 01), title, caption (overlay line on the photo), image, imageAlt, url (empty hides the link). Without JavaScript the spine renders fully filled and every node in its resting state — still a complete, readable list. Guarded by prefers-reduced-motion (the fill jumps instead of easing); the rail is a labelled ordered list, each node's number is decorative (aria-hidden) with the step title carrying the accessible name, and :focus-visible rings mark focused links.