Index: src/views/pages/admin-site-edit.ejs
===================================================================
--- src/views/pages/admin-site-edit.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/pages/admin-site-edit.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -14,5 +14,5 @@
         <span class="slug-url">
           <span class="slug-url-host" id="slug-host"
-                data-prefix="<%= (typeof tenancy !== 'undefined' && tenancy === 'hub') ? '/user/' : '/' %>">website.com/</span><input
+                data-prefix="/">website.com/</span><input
                 type="text" name="slug" id="slug-input" class="slug-url-input" value="<%= site.slug %>" required <% if (!isNew) { %>readonly<% } %>
                 pattern="[a-z0-9_-]{2,40}" placeholder="<%= t('asite.slug_placeholder') %>"
@@ -24,18 +24,4 @@
         <input type="text" name="title" value="<%= site.title || '' %>" required maxlength="200">
       </label>
-      <%# Assign (or reassign) owner — ONLY god AND only in hub mode. In hub this
-          gives each user their own self-managed Klonkt. In solo (one site,
-          one owner) this is pointless/confusing, so it's hidden. %>
-      <% if (user && user.role === 'god' && (typeof tenancy !== 'undefined' && tenancy === 'hub')) { %>
-      <label>
-        <span><%= t('asite.owner') %> <small class="form-hint-inline"><%= t('asite.owner_hint') %></small></span>
-        <% var _godSuffix = t('asite.owner_god_suffix'); %>
-        <select name="owner_id">
-          <% (typeof users !== 'undefined' ? users : []).forEach(function(u){ %>
-            <option value="<%= u.id %>" <%= (site.owner_id === u.id) ? 'selected' : '' %>><%= u.username %><%= u.role === 'god' ? _godSuffix : '' %></option>
-          <% }); %>
-        </select>
-      </label>
-      <% } %>
       <label>
         <span><%= t('asite.tagline') %> <small class="form-hint-inline"><%= t('asite.tagline_hint') %></small></span>
Index: src/views/pages/admin-users.ejs
===================================================================
--- src/views/pages/admin-users.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/pages/admin-users.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -71,10 +71,4 @@
 
           <div class="ax-user-controls">
-            <%# Hub: give this user their own self-managed Klonkt — opens the
-                new-site form with this user already pre-selected as owner. %>
-            <% if (typeof tenancy !== 'undefined' && tenancy === 'hub' && canMutate) { %>
-              <a href="/admin/sites/new?owner=<%= u.id %>" class="ax-icon-btn"
-                 aria-label="<%= t('ausr.new_klonkt_for', { name: u.username }) %>" title="<%= _u_newklonkt %>">＋🌐</a>
-            <% } %>
             <form method="post" action="/admin/users/<%= u.id %>/role" class="ax-role-form">
               <label class="ax-role">
Index: src/views/pages/admin.ejs
===================================================================
--- src/views/pages/admin.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/pages/admin.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -17,7 +17,5 @@
     .prem-badge:hover{filter:brightness(1.08)}
   </style>
-  <% if (tenancy === 'hub') { %>
-    <p class="admin-tagline"><%= t('admin.tagline_hub') %></p>
-  <% } else if (typeof circlesOn !== 'undefined' && circlesOn) { %>
+  <% if (typeof circlesOn !== 'undefined' && circlesOn) { %>
     <p class="admin-tagline"><%= t('admin.tagline_cirkels') %></p>
   <% } else { %>
@@ -26,14 +24,4 @@
 
   <nav class="admin-quick-links" aria-label="<%= t('nav.admin') %>">
-    <% if (tenancy === 'hub') { %>
-      <a href="/admin/sites" class="btn"><%= t('admin.b_sites') %></a>
-      <a href="/admin/users" class="btn"><%= t('admin.b_users') %></a>
-      <a href="/admin/media" class="btn"><%= t('admin.b_media') %></a>
-      <% if (typeof audioEnabled === 'undefined' || audioEnabled) { %>
-      <a href="/admin/playlists" class="btn"><%= t('admin.b_playlists') %></a>
-      <% } %>
-      <% if (primarySite) { %><a href="/admin/seo" class="btn"><%= t('admin.b_seo') %></a><% } %>
-      <a href="/admin/settings" class="btn"><%= t('admin.b_settings') %></a>
-    <% } else { %>
       <a href="/posts/new" class="btn"><%= t('admin.b_newpost') %></a>
       <a href="/admin/media" class="btn"><%= t('admin.b_media') %></a>
@@ -45,12 +33,11 @@
       <% if (primarySite) { %><a href="/admin/seo" class="btn"><%= t('admin.b_seo') %></a><% } %>
       <a href="/admin/settings" class="btn"><%= t('admin.b_settings') %></a>
-    <% } %>
     <% if (typeof premiumUnlocked === 'undefined' || premiumUnlocked) { %>
       <a href="/admin/stats" class="btn"><%= t('admin.b_stats') %></a>
       <a href="/admin/paid" class="btn"><%= t('admin.b_paid') %></a>
       <a href="/admin/newsletter" class="btn"><%= t('admin.b_newsletter') %></a>
-      <% if (tenancy !== 'hub' && primarySite) { %><a href="/pers" class="btn" target="_blank"><%= t('admin.b_perskit') %></a><% } %>
-      <% if (tenancy !== 'hub' && primarySite) { %><a href="/downloads" class="btn" target="_blank"><%= t('admin.b_downloads') %></a><% } %>
-      <% if (tenancy !== 'hub' && primarySite) { %><a href="/links" class="btn" target="_blank"><%= t('admin.b_linkbio') %></a><% } %>
+      <% if (primarySite) { %><a href="/pers" class="btn" target="_blank"><%= t('admin.b_perskit') %></a><% } %>
+      <% if (primarySite) { %><a href="/downloads" class="btn" target="_blank"><%= t('admin.b_downloads') %></a><% } %>
+      <% if (primarySite) { %><a href="/links" class="btn" target="_blank"><%= t('admin.b_linkbio') %></a><% } %>
       <a href="/admin/shows" class="btn"><%= t('admin.b_agenda') %></a>
     <% } %>
@@ -63,8 +50,4 @@
 
   <div class="admin-stats">
-    <% if (tenancy === 'hub') { %>
-      <div class="stat-card"><div class="stat-num"><%= stats.users %></div><div class="stat-label"><%= t('admin.st_users') %></div></div>
-      <div class="stat-card"><div class="stat-num"><%= stats.sites %></div><div class="stat-label"><%= t('admin.st_sites') %></div></div>
-    <% } %>
     <div class="stat-card"><div class="stat-num"><%= stats.posts %></div><div class="stat-label"><%= t('admin.st_posts') %></div></div>
     <div class="stat-card"><div class="stat-num"><%= stats.published %></div><div class="stat-label"><%= t('admin.st_published') %></div></div>
@@ -90,42 +73,4 @@
   <% } %>
 
-  <% if (sites && sites.length) { %>
-    <h2><%= t('admin.sec_sites') %></h2>
-    <table class="admin-table">
-      <thead>
-        <tr><th><%= t('admin.th_slug') %></th><th><%= t('admin.th_title') %></th><th><%= t('admin.th_owner') %></th><th><%= t('admin.th_created') %></th></tr>
-      </thead>
-      <tbody>
-        <% sites.forEach(function(s) { %>
-          <tr>
-            <td><code><%= s.slug %></code></td>
-            <td><%= s.title %></td>
-            <td><%= s.owner_username || '—' %></td>
-            <td><%= formatDate(s.created_at) %></td>
-          </tr>
-        <% }); %>
-      </tbody>
-    </table>
-  <% } %>
-
-  <% if (users && users.length) { %>
-    <h2><%= t('admin.sec_users') %></h2>
-    <table class="admin-table">
-      <thead>
-        <tr><th><%= t('admin.th_username') %></th><th><%= t('admin.th_email') %></th><th><%= t('admin.th_role') %></th><th><%= t('admin.th_joined') %></th></tr>
-      </thead>
-      <tbody>
-        <% users.forEach(function(u) { %>
-          <tr>
-            <td><%= u.username %></td>
-            <td><%= u.email %></td>
-            <td><span class="role-pill role-<%= u.role %>"><%= u.role %></span></td>
-            <td><%= formatDate(u.created_at) %></td>
-          </tr>
-        <% }); %>
-      </tbody>
-    </table>
-  <% } %>
-
 </div>
 
Index: src/views/pages/guardian.ejs
===================================================================
--- src/views/pages/guardian.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/pages/guardian.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -26,7 +26,4 @@
     <span class="g-me" title="<%= t('guardian.acting_as') %>">@<%= state.site %></span>
     <% } %>
-    <form method="post" action="/guardian/invite" style="display:inline">
-    <button class="quiet small" type="submit">Invite a guardian</button>
-  </form>
 </header>
 
Index: src/views/partials/bottom-tab.ejs
===================================================================
--- src/views/partials/bottom-tab.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/partials/bottom-tab.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -13,8 +13,5 @@
                         && permissions && permissions.canCreatePost && permissions.canCreatePost(user, site));
 const _ownProfile  = user ? ('/users/' + user.username) : null;
-const _isHub       = (typeof tenancy !== 'undefined' && tenancy === 'hub');
-// Home in hub mode ALWAYS goes to the hub root (/), not to an artist's sub-home.
-// In solo/circle _siteUrlBase is empty, so it stays '/'.
-const _homeHref    = (_isHub ? '' : _siteUrlBase) + '/';
+const _homeHref    = _siteUrlBase + '/';
 
 // Strip site prefix for cleaner matching
@@ -26,6 +23,5 @@
 
 let _active = null;
-// In hub, Home is only active on the real hub root, not on an artist sub-home.
-if (_isHub ? (_path === '/') : (_p === '/' || _p === '')) _active = 'home';
+if (_p === '/' || _p === '') _active = 'home';
 else if (_p.indexOf('/search') === 0 || _p.indexOf('/tag/') === 0 || _p.indexOf('/type/') === 0) _active = 'search';
 else if (_p === '/posts/new' || /^\/posts\/[^/]+\/edit$/.test(_p)) _active = 'create';
Index: src/views/partials/chrome.ejs
===================================================================
--- src/views/partials/chrome.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/partials/chrome.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -17,6 +17,5 @@
 var _isAuth    = typeof bodyClass === 'string' && bodyClass.indexOf('on-auth') >= 0;
 var _isChat    = typeof bodyClass === 'string' && bodyClass.indexOf('on-chat') >= 0;
-var hubLanding = (typeof bodyClass === 'string' && bodyClass.indexOf('on-hub') >= 0)
-   || ((typeof tenancy !== 'undefined' && tenancy === 'hub') && !siteUrlBase && !_isAdmin);
+var hubLanding = (typeof bodyClass === 'string' && bodyClass.indexOf('on-hub') >= 0);
 // Zelfstandige premium-feature-pagina's hebben hun eigen kop → geen profielkop/
 // switcher, wél de topnav (Robin 2026-06-18: "bovenste weg, behoud de nav").
Index: src/views/partials/topnav.ejs
===================================================================
--- src/views/partials/topnav.ejs	(revision bfa6fa1e058aa9b3c2821d56a16842937aeed22a)
+++ src/views/partials/topnav.ejs	(revision 17546afbe88ae2f5e44da391ca5d632030be956e)
@@ -28,16 +28,4 @@
       <% if (_isAdmin || _isSpecial) { %>
         <a href="<%= _siteUrlBase %>/" class="nav-link nav-link-admin"><%= t('nav.back_to_site') %></a>
-      <% } else if (typeof tenancy !== 'undefined' && tenancy === 'hub') { %>
-        <%# Hub: the brand navigates to the hub home via HTMX. The chrome is always
-            rendered in hub mode and hidden on the landing via body.on-hub (CSS), so htmx
-            can switch without a full reload → the audio player stays alive. %>
-        <a class="nav-hub-home" href="/" aria-label="Home" title="Home"
-           hx-get="/?partial=1" hx-target="#pcms-main" hx-swap="innerHTML" hx-push-url="/" hx-indicator="#pcms-loading">
-          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
-        </a>
-      <% } else if (site) { %>
-        <a class="site-title" href="<%= _siteUrlBase %>/"
-           hx-get="<%= _siteUrlBase %>/?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
-           hx-push-url="<%= _siteUrlBase %>/" hx-indicator="#pcms-loading"><%= site.title %></a>
       <% } else { %>
         <a class="site-title" href="/">Klonkt</a>
