Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision c50f22e53d04caff6469a2980445514d70acaf79)
+++ src/views/shell.ejs	(revision 6a2abb1aa992cd6440164fde90a55dabfac2022c)
@@ -360,4 +360,33 @@
     matched.forEach(function(c) { document.body.classList.add(c); });
   });
+
+  // Back/forward: htmx herstelt alleen #pcms-main, maar NIET de OOB-chrome of de
+  // per-site accent/palette (die komen via de HX-Trigger-header, en een history-
+  // restore vuurt die niet). Zonder dit blijft de kleur van de vorige artiest
+  // hangen. We halen de partial opnieuw op en passen alleen die twee toe —
+  // #pcms-main is al hersteld, dus die laten we met rust.
+  document.body.addEventListener('htmx:historyRestore', function () {
+    var url = location.pathname + location.search;
+    var sep = url.indexOf('?') >= 0 ? '&' : '?';
+    fetch(url + sep + 'partial=1', { headers: { 'HX-Request': 'true' }, credentials: 'same-origin' })
+      .then(function (r) {
+        var trig = r.headers.get('HX-Trigger-After-Settle');
+        if (trig) {
+          try {
+            var nav = JSON.parse(trig).pcmsNav;
+            if (nav) document.body.dispatchEvent(new CustomEvent('pcmsNav', { detail: nav }));
+          } catch (e) { /* geen/ongeldige trigger */ }
+        }
+        return r.text();
+      })
+      .then(function (html) {
+        try {
+          var fresh = new DOMParser().parseFromString(html, 'text/html').querySelector('#pcms-chrome');
+          var cur = document.getElementById('pcms-chrome');
+          if (fresh && cur) cur.replaceWith(fresh);
+        } catch (e) { /* chrome-update overslaan */ }
+      })
+      .catch(function () { /* netwerkfout: laat staan */ });
+  });
 })();
 </script>
