Cover loop GIF
A finished newsletter or blog cover where only the one element you name moves — a beam sweeping a lighthouse lamp, a route line drawing itself on — the loop rotated so frame 1 is already the finished picture, then shipped as a silent GIF plus MP4 preview.
How it works
Author one sheet.json: still ops[] for the cover plus one motion entry (kind/element/coords) and loop.offset so frame 1 is the finished picture.
Build the HyperFrames page, render the silent MP4 preview, then run gif.mjs for the looping GIF.
Read the seam print: keep seam 0.0–0.3 and excursion 0.7–2.8 by shrinking spread/k/amp, not by lengthening the loop.