diff --git a/frontend-nuxt/assets/css/leaflet-overrides.css b/frontend-nuxt/assets/css/leaflet-overrides.css
index bf2023a..05348f8 100644
--- a/frontend-nuxt/assets/css/leaflet-overrides.css
+++ b/frontend-nuxt/assets/css/leaflet-overrides.css
@@ -8,3 +8,18 @@
.leaflet-tile {
visibility: visible !important;
}
+
+/* Brief highlight when a tile is updated via SSE (tile freshness indicator). */
+@keyframes tile-fresh-glow {
+ 0% {
+ filter: brightness(1.15);
+ box-shadow: 0 0 0 0 oklch(0.6 0.2 264 / 0.4);
+ }
+ 100% {
+ filter: brightness(1);
+ box-shadow: none;
+ }
+}
+.leaflet-tile.tile-fresh {
+ animation: tile-fresh-glow 0.6s ease-out;
+}
diff --git a/frontend-nuxt/components/MapErrorBoundary.vue b/frontend-nuxt/components/MapErrorBoundary.vue
new file mode 100644
index 0000000..1e7471e
--- /dev/null
+++ b/frontend-nuxt/components/MapErrorBoundary.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
Map failed to load
+
+ Something went wrong while loading the map. You can try reloading the page.
+
+
+
+
+
+
+
diff --git a/frontend-nuxt/components/MapView.vue b/frontend-nuxt/components/MapView.vue
index 9cb891e..3398d09 100644
--- a/frontend-nuxt/components/MapView.vue
+++ b/frontend-nuxt/components/MapView.vue
@@ -32,6 +32,17 @@
:mapid="mapLogic.state.mapid.value"
:display-coords="mapLogic.state.displayCoords.value"
/>
+
+
+
+ Reconnecting…
+
+