The end-of-run image, generated live on a canvas — no server, no image assets. Change any value and it redraws. The starfield is seeded from the run seed, so the same run always produces the same sky. On a phone, Share opens the native share sheet.
Rendered by src/launchCard.js — renderLaunchCard(run) returns the canvas, shareLaunchCard(run) handles the share sheet with a download fallback. Output is 1200×630 at 2× so it survives being reposted.