Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision b1d5f3fe649d958099ec7a8e2ff39b44708ad824)
+++ src/services/ActivityPubService.js	(revision b4aaaddef9ee9b6109381addc714faa320110e88)
@@ -20,4 +20,5 @@
 import path from 'path';
 import db, { NU_ISO, isoSql } from '../config/database.js';
+import ThemeService from './ThemeService.js';
 import HtmlSanitizerService from './HtmlSanitizerService.js';
 import AudioEmbedService from './AudioEmbedService.js';
@@ -385,4 +386,9 @@
     // (guardianship module owns these).
     ...Guardianship.guardianshipActorProps(id, site.slug),
+    // Het thema dat de beheerder koos (experimental/theme). Shaer haalt het hier
+    // op in plaats van er zelf een te kiezen: één keuze kleedt de site en de app.
+    // Alleen als er een gekozen is; zonder staat er niets en houdt elke client
+    // zijn eigen standaard.
+    ...ThemeService.layoutActorProp(base, site),
     // C2S clients (Shaer apps) discover auth + upload here — no hardcoded paths.
     // All four are ActivityPub-spec `endpoints` terms. Dynamic client registration
