Nothing broke in the render itself — the checker reported 0 errors on the first full build. The near-miss class from the parallax entry was designed out up front: every caption rides a solid chip and the title rides a 78% panel, because text over bright photographs failed contrast checks twice before.
Accepted check warnings: the caption day-labels are 15px furniture type, and several elements are intentionally short-lived (per-slide captions) — the checker counts 22 timing warnings across the four slides.
Banned list —Beat grid —Build method —Self-review —
<direction>
Build a 1280x720, 12-second photo slideshow montage in HyperFrames + GSAP: a four-photo journey (one trip, four stops) where every photo gets a slow Ken Burns move — alternating push-in and pull-out so the rhythm breathes — a caption chip naming the stop, and a four-segment progress bar that fills in the accent colour as the story advances; the film ends on a single end card showing all four photos in a grid with the trip's stats. House style: background #0a0a0a, white type, ONE orange accent #ff5c1a, Arial/Helvetica bold, NO webfonts, no gradients, no glows, no 3D. The photos are samples and the footer says so the whole film: "SAMPLE PHOTOS (AI) — SWAP IN YOUR OWN PHOTOS + CAPTIONS".
Trip title: The Long Way Home
Stops (day — place, four of them): Day 1 — Mirror Lake, Day 2 — The Coast, Day 3 — Red Canyon, Day 4 — The City
Banned: video footage, hard cuts (crossfades only), captions sitting on raw photo without a solid chip behind them, Ken Burns moves so fast they feel like zooms.
</direction>
<structure>
0.0-1.2s: photo 1 fills the frame; a flat dark panel carries the orange kicker "PHOTO SLIDESHOW MONTAGE — SAMPLE RUN" and the trip title; the first caption chip lands.
0.3-3.0s: SLIDE 1 — slow push-in (scale to 1.07); progress segment 1 fills; title block and caption retire.
2.9-5.6s: SLIDE 2 — crossfade in, slow pull-out with a slight drift; caption "DAY 2"; segment 2 fills.
5.5-8.2s: SLIDE 3 — crossfade in, push-in drifting the other way; caption "DAY 3"; segment 3 fills.
8.1-10.4s: SLIDE 4 — crossfade in, slow pull-out; caption "DAY 4"; segment 4 fills.
10.3-12.0s: END CARD — the four photos return as a captioned grid under "FOUR STOPS · ONE ROAD", three stat chips land (photos / runtime / video clips: 0), and the closing caption "FOUR PHOTOS · ONE STORY · NO VIDEO FOOTAGE" holds over the completed progress bar.
</structure>
<build>
Slides are stacked full-bleed divs, each image overscanned (1344x756 in a 1280x720 frame) so its Ken Burns move never exposes an edge. The move direction ALTERNATES per slide and each burn runs slightly longer than the slide's window so motion never freezes mid-slide. Crossfades are 0.55s opacity tweens; the incoming slide's burn starts on the same timestamp as its fade. Caption chips are solid #0d0d0d — over bright sky or water, raw text fails contrast. The progress segments are four fixed bars whose orange fills tween scaleX linearly across exactly their slide's window. The end card is a separate full-frame layer faded in over the last slide; the strip, segments and footer live above everything and persist into the card. One paused GSAP timeline registered as window.__timelines["main"].
</build>
Alternate the Ken Burns direction — push, pull, push, pull — or four slides in a row all zooming in starts to feel like falling into the photos. And end on the grid: the end card is what turns a slideshow into a story, because the viewer finally sees the whole trip at once and the progress bar completes underneath it.