Design System

Portrait cinema hero

The full-viewport, scroll-pinned hero from the weight-loss page: a field of framed portraits scattered around a fixed statement, whooshing past it as the page scrolls — streaming up the axis of the scroll and swelling toward the camera, near frames first — until the field has emptied. Then the next section rolls up over the still-pinned stage like a sheet of paper (it wears hw-cinema-follower), the stage unpins beneath it, and the page continues with no seam and no dead screen.

Every portrait is the shared PhotoFrame — the signature cream mat — in a slot of a fixed arrangement (position, size, tilt, depth, in front of the copy or behind it, and a phone position or none). Portraits are assigned to slots in order, so the composition is a design decision rather than a function of which images are passed.

Motion is written imperatively from useScrollProgress — one inline transform per slot per frame, no React re-render per scroll event. The slot carries the whoosh, its child the idle float, and the frame the entrance fade, so the three transforms never contend. Portraits are pointer-events: none, so a front frame crossing the CTA can never intercept a click. Reduced motion collapses the track to one viewport: no pin, no whoosh, no overlap.

Scroll this page to run the sequence; the demo tiles are the real component at full size.

import from @halwel/ui/components/marketing/PortraitCinemaHero

Variants

Default — 12 portraits, 160vh travel, 38vh overlap
Drawn portrait of a woman with red curls, grinning
Drawn portrait of a man with a salt-and-pepper beard, smiling
Drawn portrait of a woman in a limestone hijab, smiling warmly
Drawn portrait of an older woman with short gray coils, smiling broadly
Drawn portrait of a man in glasses, laughing
Drawn portrait of a woman with silver-streaked dark hair, laughing
Drawn portrait of a man with long dark hair, smiling
Drawn portrait of a woman with a gray pixie cut, smiling quietly
Drawn portrait of a woman with voluminous dark curls, laughing
Drawn portrait of an older man with a white beard, smiling gently
Drawn portrait of a woman with a chin-length dark bob, smiling
Drawn portrait of a man with a salt-and-pepper beard, grinning

Weight loss with GLP-1 therapies

Over 30 million Americans have taken control of their health with GLP-1s.

Source: KFF Health Tracking Poll, Nov 2025

… the section that follows, rolling up over the stage.
Six portraits, shorter travel (100vh), no overlap
Drawn portrait of a woman with red curls, grinning
Drawn portrait of a man with a salt-and-pepper beard, smiling
Drawn portrait of a woman in a limestone hijab, smiling warmly
Drawn portrait of an older woman with short gray coils, smiling broadly
Drawn portrait of a man in glasses, laughing
Drawn portrait of a woman with silver-streaked dark hair, laughing

Weight loss with GLP-1 therapies

Over 30 million Americans have taken control of their health with GLP-1s.

Source: KFF Health Tracking Poll, Nov 2025

… a follower with no overlap: the stage simply unpins.