Portrait reel carousel built as a plain, fully editable Etch tree: section > container > header (eyebrow, h2, intro) > reel wrapper > Swiper track > six "Reel Frame" component instances (alternating up/down on odd/even position) > controls (arrows, pagination, scrollbar, pause/play). Only the frame is a component, with typed props: poster (image), posterAlt, title, subtitle, badge (duration/label chip, empty hides it), tone (violet|amber|teal|coral tints the badge and progress fill). Every option is a data attribute on the Reel element (edit it in Etch's attributes panel): data-theme (light|dark) re-themes the whole section; data-stagger (true|false, default true) alternates neighbour cards up/down; false lines every card up flat; data-offset (px, default 34) how far the staggered cards shift vertically; data-caption (active|always|none) show the title/subtitle only on the centred card, on every card, or never; data-per-view-mobile / data-per-view-tablet / data-per-view-desktop (decimals give a peek, defaults 1.2 / 2.2 / 3.2; breakpoints are the reel's own width: tablet from 40em, desktop from 62em); data-gap (px between cards, default 20); data-autoplay (true|false), data-delay (ms, min 1500), data-speed (transition ms, default 650); data-loop (true|false; infinite loop, otherwise rewinds); data-pause-on-hover (true|false); data-drag (true|false; mouse drag + touch swipe) and data-mode (snap|free); data-arrows (true|false), data-arrows-position (top|bottom|sides), data-arrows-style (circle|square|pill|minimal); data-pagination (dots|progress|fraction|none), data-pagination-position (bottom-center|bottom-start|bottom-end|top-start|top-end); data-controls-layout (split|grouped) grouped puts arrows + pagination together in one bar; data-scrollbar (true|false) draggable progress scrollbar; data-autoplay-button (true|false) play/pause toggle; data-arrows-mobile (true|false) hide arrows below tablet width (swipe still works). Inlined JS waits for a global Swiper 11 (injects the jsDelivr build once if nothing provides it), is init-guarded, keeps loop/autoplay off inside the Etch builder, and wires keyboard arrows, the a11y module, pause on keyboard focus, a visible pause/play toggle and no autoplay/animated transitions under prefers-reduced-motion. Without JS the track is a native scroll-snap row (stagger and controls hidden), so browsing still works. Labelled section landmark, carousel region with aria-roledescription, per-frame group labels, :focus-visible rings, AA contrast in both themes.