story-reel-auto-pager
A self-advancing story reel
One HorizontalPager holds every card; a single LaunchedEffect keyed on the current page runs the
timer for whichever card is showing. Nothing about the reel is per-card except the cards themselves —
the progress bar, the timer, the tap zones and the close button all live in the shell, so ten cards
can be ten different layouts without ten copies of that chrome drifting apart. The pager's own
currentPage is the only place "which card" is recorded; a second counter anywhere else is a second
answer waiting to disagree with it.
Traps
The timer counts frame deltas, not elapsed wall time, so a long hold cannot bank progress. Sampling a clock across a pause and using the raw difference lets whatever accumulated while paused land in one jump the instant it resumes. Take the delta from the previous frame every frame, paused or not, and only add it to the running total when nothing is holding the card back: