Index: src/services/i18n.js
===================================================================
--- src/services/i18n.js	(revision 837fc9c1dc50db6b6a042e84da63ed9989edf2fa)
+++ src/services/i18n.js	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
@@ -191,5 +191,5 @@
     'aset.fediverse': 'Fediverse (ActivityPub)',
     'aset.fediverse_help': 'Laat je site meedoen met de fediverse: mensen op Mastodon (of een andere Klonkt) kunnen je volgen, liken en reageren — en die reacties verschijnen onder je posts. Zet je dit uit, dan federeert je site niet en zijn er geen reacties (een rustige, op zichzelf staande blog).',
-    'aset.fediverse_toggle': 'Fediverse aan (volgen, liken, reageren)', 'aset.mode': 'Modus', 'aset.mode_help': 'Kies hoe je site werkt.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'Een op zichzelf staande blog — geen fediverse, geen reacties. Rustig en privé.', 'aset.mode_cirkels': 'Cirkels', 'aset.mode_cirkels_help': 'Doe mee met de fediverse (ActivityPub): mensen op Mastodon of een andere Klonkt kunnen je volgen, liken en reageren, en je kunt een cirkel van sites volgen.',
+    'aset.fediverse_toggle': 'Fediverse aan (volgen, liken, reageren)', 'aset.mode': 'Modus', 'aset.mode_help': 'Kies hoe je site werkt.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'Een op zichzelf staande blog — geen fediverse, geen reacties. Rustig en privé.', 'aset.mode_cirkels': 'Cirkels', 'aset.mode_18plus': 'De fediverse is een open netwerk dat ook volwassen (18+) inhoud kan bevatten — je moet volwassen genoeg zijn om mee te doen.', 'aset.mode_18plus_confirm': 'Cirkels verbindt je site met de fediverse, een open netwerk met ook 18+-inhoud. Bevestig dat je volwassen genoeg bent om dit te activeren.', 'aset.mode_cirkels_help': 'Doe mee met de fediverse (ActivityPub): mensen op Mastodon of een andere Klonkt kunnen je volgen, liken en reageren, en je kunt een cirkel van sites volgen.',
     'aset.email_smtp': 'E-mail (SMTP)',
     'aset.smtp_help_1': 'Nodig om de',
@@ -1203,5 +1203,5 @@
     'aset.fediverse': 'Fediverse (ActivityPub)',
     'aset.fediverse_help': 'Let your site join the fediverse: people on Mastodon (or another Klonkt) can follow, like and reply — and those replies show up under your posts. Turn this off and your site does not federate and has no comments (a quiet, standalone blog).',
-    'aset.fediverse_toggle': 'Fediverse on (follow, like, comment)', 'aset.mode': 'Mode', 'aset.mode_help': 'Choose how your site works.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'A standalone blog — no fediverse, no comments. Quiet and self-contained.', 'aset.mode_cirkels': 'Circles', 'aset.mode_cirkels_help': 'Join the fediverse (ActivityPub): people on Mastodon or another Klonkt can follow, like and reply, and you can follow a circle of sites.',
+    'aset.fediverse_toggle': 'Fediverse on (follow, like, comment)', 'aset.mode': 'Mode', 'aset.mode_help': 'Choose how your site works.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'A standalone blog — no fediverse, no comments. Quiet and self-contained.', 'aset.mode_cirkels': 'Circles', 'aset.mode_18plus': 'The fediverse is an open network that can also contain adult (18+) content — you must be old enough to take part.', 'aset.mode_18plus_confirm': 'Circles connects your site to the fediverse, an open network that also contains 18+ content. Confirm that you are old enough to enable this.', 'aset.mode_cirkels_help': 'Join the fediverse (ActivityPub): people on Mastodon or another Klonkt can follow, like and reply, and you can follow a circle of sites.',
     'aset.email_smtp': 'Email (SMTP)',
     'aset.smtp_help_1': 'Needed to',
@@ -2214,5 +2214,5 @@
     'aset.fediverse': 'Fediverse (ActivityPub)',
     'aset.fediverse_help': 'Lass deine Seite am Fediverse teilnehmen: Leute auf Mastodon (oder einem anderen Klonkt) können dir folgen, liken und antworten — und diese Antworten erscheinen unter deinen Beiträgen. Schaltest du das aus, föderiert deine Seite nicht und hat keine Kommentare (ein ruhiger, eigenständiger Blog).',
-    'aset.fediverse_toggle': 'Fediverse an (Folgen, Liken, Kommentieren)', 'aset.mode': 'Modus', 'aset.mode_help': 'Wähle, wie deine Site funktioniert.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'Ein eigenständiger Blog — kein Fediverse, keine Kommentare. Ruhig und in sich geschlossen.', 'aset.mode_cirkels': 'Kreise', 'aset.mode_cirkels_help': 'Mach beim Fediverse mit (ActivityPub): Leute auf Mastodon oder einem anderen Klonkt können dir folgen, liken und antworten, und du kannst einem Kreis von Sites folgen.',
+    'aset.fediverse_toggle': 'Fediverse an (Folgen, Liken, Kommentieren)', 'aset.mode': 'Modus', 'aset.mode_help': 'Wähle, wie deine Site funktioniert.', 'aset.mode_solo': 'Solo', 'aset.mode_solo_help': 'Ein eigenständiger Blog — kein Fediverse, keine Kommentare. Ruhig und in sich geschlossen.', 'aset.mode_cirkels': 'Kreise', 'aset.mode_18plus': 'Das Fediverse ist ein offenes Netzwerk, das auch Inhalte für Erwachsene (18+) enthalten kann — du musst alt genug sein, um teilzunehmen.', 'aset.mode_18plus_confirm': 'Kreise verbindet deine Seite mit dem Fediverse, einem offenen Netzwerk mit auch 18+-Inhalten. Bestätige, dass du alt genug bist, um dies zu aktivieren.', 'aset.mode_cirkels_help': 'Mach beim Fediverse mit (ActivityPub): Leute auf Mastodon oder einem anderen Klonkt können dir folgen, liken und antworten, und du kannst einem Kreis von Sites folgen.',
     'aset.email_smtp': 'E-Mail (SMTP)',
     'aset.smtp_help_1': 'Erforderlich, um den',
Index: src/views/pages/admin-settings.ejs
===================================================================
--- src/views/pages/admin-settings.ejs	(revision 837fc9c1dc50db6b6a042e84da63ed9989edf2fa)
+++ src/views/pages/admin-settings.ejs	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
@@ -10,5 +10,7 @@
     <h2><%= t('aset.mode') %></h2>
     <p class="set-help"><%= t('aset.mode_help') %></p>
-    <form method="post" action="/admin/settings/ap" class="set-form">
+    <form method="post" action="/admin/settings/ap" class="set-form" id="mode-form"
+          data-was-cirkels="<%= (typeof apEnabledSetting === 'undefined' || apEnabledSetting) ? '1' : '0' %>"
+          data-confirm="<%= t('aset.mode_18plus_confirm') %>">
       <label class="set-opt">
         <input type="radio" name="mode" value="solo" <%= (typeof apEnabledSetting !== 'undefined' && !apEnabledSetting) ? 'checked' : '' %>>
@@ -19,6 +21,19 @@
         <span><strong><%= t('aset.mode_cirkels') %></strong><small><%= t('aset.mode_cirkels_help') %></small></span>
       </label>
+      <p class="set-help" style="margin:.2rem 0 0;color:var(--accent);font-weight:600">🔞 <%= t('aset.mode_18plus') %></p>
       <div class="set-actions"><button type="submit" class="btn btn-primary"><%= t('aset.save') %></button></div>
     </form>
+    <script>
+    (function () {
+      var f = document.getElementById('mode-form');
+      if (!f || f.__age18wired) return; f.__age18wired = true;
+      f.addEventListener('submit', function (e) {
+        var sel = f.querySelector('input[name=mode]:checked');
+        if (sel && sel.value === 'cirkels' && f.getAttribute('data-was-cirkels') === '0') {
+          if (!window.confirm(f.getAttribute('data-confirm'))) e.preventDefault();
+        }
+      });
+    })();
+    </script>
   </section>
 
