Phase 3.3 of the Mobile Groomer Route Optimization work (groombook/web).
- Add "Open in Google Maps" / "Open in Apple Maps" export buttons that fetch
the route deep-link from /api/routes/:routeId/export/:platform and open it.
Device OS is detected (iOS/Android/desktop); the relevant app's button is
prominent and the other is offered as a secondary option.
- Pre-warm OSM map tiles for the route's bounding box (zooms 12-14, capped at
80 tiles) on every route load and after each optimize/reorder so the map is
viewable offline; add a Workbox CacheFirst rule (osm-tiles, 7d) alongside the
existing NetworkFirst /api/* rule (24h) that already caches route data.
- Responsive polish: single-column stacking, shorter map, and full-width export
buttons below 768px for phone use during the day.
- Tests for export button rendering + deep-link open; UAT_PLAYBOOK.md §5.30 added.
Co-Authored-By: Paperclip <noreply@paperclip.ing>