Star map: label level-of-detail so dense/mobile views don't overlap

Paul (mobile screenshot): names overlapping badly at default zoom; only legible zoomed all the way in. Root cause: the map renders anamorphically stretched to the viewport, and a ~430px-wide phone simply hasn't the horizontal pixels to show 178 readable names without overlap

• Fix: draw every STAR always, but a NAME only if its box clears the names already placed at the current zoom. Active (weighted) genres always win a slot; the rest fill greedily in a stable order.

Verified: desktop 1200×850 → all 178 labels, 0 overlaps, 42px gap, gate PASS; mobile 430×900 → 131 names shown, 0 drawn-label overlaps (was 180+).

▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=3308&path=1718.20504,1737.20537,1699.20537&xdur=13.122

1e0e2c3 https://github.com/aboard-io/stellate/commit/1e0e2c3c88e8059eb36b94a8dd0e8c2312fa889c