Sold-out races were folded into the red "closed / full" bucket, so there
was no way to tell a race that filled up from one whose entry window just
ended. Full is now its own status with its own colour, marker, filter chip
and counter, and every card/popup carries a plain-language line answering
"can I still get a spot?".
- statusOf() returns "full" for soldOut races; "closed" is relabelled
"Closed (deadline)" and says explicitly that fill state is unknown
- new availability() helper renders the headline answer per race
- grey ✕ markers, dimmed + struck-through cards for full races
- sidebar leads with "N / 30 races you can still enter"
- options: "Only races I can still enter", "Hide full (満員) races"
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Japan Half Marathon Map: interactive map of Oct-Nov 2026 half marathons