- SHOP button now swaps the looping surface clip for the world's `shop`
video (e.g. terran-shop-01.mp4); pressing again swaps back. The slot
relabels between "Shop" and "Leave Shop" via a new ActionBar.setLabel.
- data/landing.json gains a per-frame `shop` entry; worlds without one get
a console note instead of a clip.
- SurfaceScene: toggleShop/leaveShop manage the shop video (pause/resume,
visibility), error handling falls back to the surface loop, and cleanup
on takeoff/shutdown disposes the new video and note glyphs.
- ActionBar: slots store their base fontSize so setLabel can shrink-to-fit
long labels; paintSlot re-asserts hover state after relabeling.