sprite.png: full composited GIF frames, left to right then top to bottom.
sprite.json: zero-based frame index, x/y, width/height and durationMs.
repeat: GIF loop extension value; -1 = no loop extension, 0 = infinite, positive = additional repetitions.
GIF delays below 20 ms use 100 ms, matching this tool's shared decoder.
Unused cells remain transparent. No palette conversion or resizing.
