02:04 UTC – International Love Story map repair + asset cache-bust
- Used Codex to do a targeted map repair: introduced a dedicated .map-visual wrapper and #globe-root mount inside the map card so the Three.js globe has a stable, visible area and the SVG becomes an explicit fallback.
- Updated styles.css to give .map-visual a fixed pastel background, aspect-ratio and min-height, and to make #globe-root and the SVG share the same space (absolute inset, 100% width/height), with the globe canvas on top (pointer-events: auto) and SVG beneath.
- Adjusted initSvgMap and initThreeGlobe in app.js so the globe mounts into #globe-root (clearing/hiding SVG when active), while the fallback path clears #globe-root and restores the SVG when Three.js/WebGL are unavailable.
- Bumped asset versions to styles.css?v=4 and app.js?v=4 in index.html, added a CDN Three.js script tag (jsdelivr), and verified that app.js?v=4 on the live preview contains the initThreeGlobe path and that clicking globe points/routes still opens the existing episode modal.

02:11 UTC – International Love Story 2D map hard reset
- Fully removed Three.js and the globe path from the map implementation, per rejection; replaced the discovery centerpiece with a single editorial 2D SVG world map that lives inside .map-visual and uses real storyCountries pairs to draw curved connections.
- Kept the pastel design intact but rebuilt initMap as a pure-SVG flow: each eligible episode renders a smooth route plus two deliberate endpoint pins, with click/Enter/Space handlers wired to setActive(ep.id) and openEpisodeModal(ep.id), and the same {route, fromPoint, toPoint, card, tags} episodeMap contract for initStories.
- Bumped asset versions again to styles.css?v=5 and app.js?v=5 so the live preview now pulls the hard-reset 2D map instead of any cached globe code, with the rest of the light editorial homepage unchanged.
