Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 6224462ba081c001ea5cbd496e2465f52fedf411)
+++ src/views/shell.ejs	(revision 03bfdceaccb6b6a383a19b046571885d0b1196ea)
@@ -267,8 +267,15 @@
     - auth-pagina's (on-auth): focus-schermen voor in-/uitloggen.
     Die chrome hoort bij een Klonkt-site en verschijnt dus op /user/-pagina's. %>
+<% var _isHub  = (typeof tenancy !== 'undefined' && tenancy === 'hub'); %>
+<% var _onAuth = (typeof bodyClass === 'string' && bodyClass.indexOf('on-auth') >= 0); %>
 <% var bareChrome = (typeof bodyClass === 'string' && (bodyClass.indexOf('on-hub') >= 0 || bodyClass.indexOf('on-auth') >= 0))
-     || ((typeof tenancy !== 'undefined' && tenancy === 'hub') && !siteUrlBase && !isAdminPage); %>
-
-<% if (!bareChrome) { %>
+     || (_isHub && !siteUrlBase && !isAdminPage); %>
+<%# In HUB-modus de chrome ALTIJD renderen (CSS verbergt 'm op de hub-landing via
+    body.on-hub) zodat htmx tussen hub-home en artiest-sites kan schakelen zónder
+    full-reload → de audioplayer blijft leven, geen verspringen. profile-header
+    self-hidet als er geen site is. Solo/circle: ongewijzigd (!bareChrome). %>
+<% var renderChrome = _isHub ? !_onAuth : !bareChrome; %>
+
+<% if (renderChrome) { %>
   <%- include('partials/topnav') %>
   <%- include('partials/profile-header') %>
@@ -279,5 +286,5 @@
     on non-feed pages (post, account, search, auth) it navigates to /
     in the chosen view. Click logic is in shell.ejs at the bottom. %>
-<% if (!isAdminPage && !bareChrome) { %>
+<% if (!isAdminPage && renderChrome) { %>
   <%- include('partials/view-switcher') %>
 <% } %>
@@ -353,4 +360,8 @@
     PAGE_CLASSES.forEach(function(c) { document.body.classList.remove(c); });
     document.body.classList.add(firstClass);
+    // 'on-hub' is een modifier náást de page-class: apart toggelen zodat de
+    // hub-chrome (topnav/view-switcher) via CSS mee-schakelt bij htmx-navigatie
+    // tussen hub-home (on-hub) en artiest-sites (geen on-hub).
+    document.body.classList.toggle('on-hub', /(^|\s)on-hub(\s|$)/.test(String(next)));
   });
 })();
