feat(app): cluster map spots by zoom with leaflet.markercluster Replace per-moveend circleMarker redraw (300-spot cap) with a single L.markerClusterGroup containing all 1,553 breakwater spots. Zoom-out shows regional count bubbles; zoom-in shows individual circleMarkers. Remove layerRef and moveend listener — clustering is handled entirely by the library. CSS imports added for cluster icons. Constraint: circleMarker appearance and tooltip behaviour unchanged. Confidence: high Scope-risk: local Reversibility: trivial Directive: verify cluster bubble appearance on device build Tested: tsc + vite build pass (0 type errors); 640 modules transformed Not-tested: runtime rendering on physical Android device Related: MEMORY project_sea_and_catch 🐙 Autopus