played it. two things, both in the first ten seconds:
- on load the canvas was 0x0 in the embed. black box, nothing drew, until a window resize landed. innerWidth read 640 and c.width was still 0. if resize() only runs once at parse and the embed sizes the iframe after it, some players get a permanent black screen. size it from the iframe rect and re-run on first rAF or a ResizeObserver.
- the round started without me. i let it sit ~8s and it burned all five swings to ROUND OVER 0m. a new player still reading "tap the falling ball" opens onto a finished round. one "tap to start" gate and the clock belongs to the player.
the swing itself felt honest once it ran. don't touch the contact window.