Index: src/middleware/render.js
===================================================================
--- src/middleware/render.js	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/middleware/render.js	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -94,4 +94,5 @@
     hubTitle: getSetting('hub_title') || '',
     footerNewsletter: getSetting('footer_newsletter') === '1', // nieuwsbrief-aanmelding in footer (premium)
+    agendaEnabled: getSetting('agenda_enabled') === '1', // Agenda/evenementen tonen in de pill (premium, opt-in)
     platforms_catalog: PLATFORMS_CATALOG,
     permissions: PermissionsService,
Index: src/routes/admin-shows.js
===================================================================
--- src/routes/admin-shows.js	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/routes/admin-shows.js	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -18,4 +18,5 @@
 import { mailerConfigured, sendMail } from '../config/mailer.js';
 import { confirmedFor, counts } from '../services/SubscriberService.js';
+import { getSetting, setSetting } from '../services/SettingsService.js';
 
 const router = express.Router();
@@ -36,4 +37,5 @@
     pageTitle: 'Agenda', bodyClass: 'on-admin',
     shows, smtp: mailerConfigured(), notifyCount: confirmedFor(site.id, 'notify').length,
+    agendaEnabled: getSetting('agenda_enabled') === '1',
     ...extra,
   });
@@ -83,4 +85,10 @@
 });
 
+router.post('/toggle', requireSiteManager, premiumGate, (req, res) => {
+  // Agenda tonen op de site (Agenda-knop in de pill + /shows-pagina).
+  setSetting('agenda_enabled', req.body.enabled ? '1' : '0');
+  res.redirect((res.locals.siteUrlBase || '') + '/admin/shows');
+});
+
 router.post('/:id/delete', requireSiteManager, premiumGate, (req, res) => {
   const site = res.locals.site;
Index: src/routes/shows.js
===================================================================
--- src/routes/shows.js	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/routes/shows.js	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -16,6 +16,10 @@
 import { mailerConfigured, sendMail } from '../config/mailer.js';
 import { addSubscriber } from '../services/SubscriberService.js';
+import { getSetting } from '../services/SettingsService.js';
 
 const router = express.Router();
+
+// Agenda is opt-in: pas bereikbaar als de beheerder 'm heeft ingeschakeld.
+function agendaOn() { return getSetting('agenda_enabled') === '1'; }
 
 function esc(s) { return String(s || '').replace(/[&<>"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c])); }
@@ -30,5 +34,5 @@
 
 router.get('/shows', (req, res, next) => {
-  if (!premiumUnlocked()) return next();
+  if (!premiumUnlocked() || !agendaOn()) return next();
   const site = res.locals.site;
   if (!site) return next();
@@ -42,5 +46,5 @@
 
 router.post('/shows/notify', async (req, res, next) => {
-  if (!premiumUnlocked()) return next();
+  if (!premiumUnlocked() || !agendaOn()) return next();
   const site = res.locals.site;
   if (!site) return next();
Index: src/views/pages/admin-shows.ejs
===================================================================
--- src/views/pages/admin-shows.ejs	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/views/pages/admin-shows.ejs	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -10,4 +10,14 @@
 
   <% if (msg) { %><div class="ash-msg ash-<%= (typeof msgKind!=='undefined')?msgKind:'' %>"><%= msg %></div><% } %>
+
+  <% var agOn = (typeof agendaEnabled !== 'undefined') && agendaEnabled; %>
+  <form method="POST" action="<%= siteUrlBase %>/admin/shows/toggle" style="margin:0 0 14px">
+    <label style="display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600">
+      <input type="checkbox" name="enabled" value="1" <%= agOn ? 'checked' : '' %> onchange="this.form.submit()" style="width:18px;height:18px;accent-color:var(--accent)">
+      <span>Agenda tonen op de site <small style="font-weight:400;opacity:.7">(Agenda-knop in de balk + de agendapagina)</small></span>
+    </label>
+    <noscript><button type="submit" class="btn">Opslaan</button></noscript>
+  </form>
+  <% if (!agOn) { %><div class="ash-msg">De agenda staat nu <strong>uit</strong> — bezoekers zien geen Agenda-knop en de agendapagina is niet bereikbaar. Zet 'm aan om je evenementen te tonen.</div><% } %>
 
   <p class="ash-note"><strong><%= nc %></strong> abonnee(s) voor evenement-aankondigingen.
Index: src/views/partials/shared-styles.ejs
===================================================================
--- src/views/partials/shared-styles.ejs	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/views/partials/shared-styles.ejs	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -50,4 +50,5 @@
 }
 .vs-agenda:hover { color: var(--ink); }
+.vs-agenda.is-active { background: var(--paper); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
 
 .grid-cols-picker {
Index: src/views/partials/view-switcher.ejs
===================================================================
--- src/views/partials/view-switcher.ejs	(revision d7b5a6c3d57b88e1c215cffcda953fa5839c127c)
+++ src/views/partials/view-switcher.ejs	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
@@ -17,8 +17,9 @@
     <% } %>
     <div class="view-switcher" role="tablist" aria-label="Weergave">
-      <% if (typeof premiumUnlocked !== 'undefined' && premiumUnlocked) {
+      <% if (typeof premiumUnlocked !== 'undefined' && premiumUnlocked && typeof agendaEnabled !== 'undefined' && agendaEnabled) {
            var _sbA = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '';
+           var _agActive = (typeof bodyClass === 'string' && bodyClass.indexOf('on-shows') >= 0);
       %>
-      <a class="vs-agenda" href="<%= _sbA %>/shows" aria-label="Agenda — evenementen">
+      <a class="vs-agenda<%= _agActive ? ' is-active' : '' %>" href="<%= _sbA %>/shows" aria-label="Agenda — evenementen">
         <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>
         <span>Agenda</span>
