Index: src/routes/auth.js
===================================================================
--- src/routes/auth.js	(revision 90259da618fae54c487ea9a4998162d68c8cb3a0)
+++ src/routes/auth.js	(revision f4b7b6a930558498ae023cb97614353f0e9a89ef)
@@ -44,5 +44,9 @@
 }
 
-// ==================== LOGIN (beheerder = wachtwoord) ====================
+// ==================== LOGIN ====================
+// Publieke loginpagina: voor BEZOEKERS alleen Google-login (luisteraars/fans).
+// De beheerders-login (wachtwoord) staat hier bewust NIET — die zit verborgen op
+// /auth/admin (zie hieronder), zodat de admin-login niet zichtbaar is op de plek
+// waar bezoekers heen worden gestuurd.
 router.get('/login', (req, res) => {
   const next = safeNext(req.query.next) || '';
@@ -56,5 +60,25 @@
     success: req.query.success || null,
     username: '',
+    adminLogin: false,
     googleReady: fanLoginReady(),
+    next,
+  });
+});
+
+// Verborgen beheerders-login (gebruikersnaam + wachtwoord). Nergens in de UI
+// gelinkt — de beheerder navigeert hier rechtstreeks naartoe (/auth/admin).
+router.get('/admin', (req, res) => {
+  const next = safeNext(req.query.next) || '';
+  if (req.session.user) return res.redirect(next || '/');
+  if (isSetupMode()) return res.redirect('/auth/register' + (next ? '?next=' + encodeURIComponent(next) : ''));
+  renderPage(req, res, 'pages/auth-login', {
+    pageTitle: 'Beheerder inloggen',
+    bodyClass: 'on-special on-auth',
+    error: req.query.error || null,
+    gerr: null,
+    success: req.query.success || null,
+    username: '',
+    adminLogin: true,
+    googleReady: false,
     next,
   });
@@ -65,9 +89,12 @@
   const next = safeNext(req.body.next) || '';
 
+  // Foutweergave op de (verborgen) beheerders-loginpagina: toon het wachtwoord-
+  // formulier opnieuw (adminLogin:true), niet de Google-only publieke pagina.
   const renderErr = (error, status = 400) => {
     res.status(status);
     return renderPage(req, res, 'pages/auth-login', {
-      pageTitle: 'Inloggen', bodyClass: 'on-special',
-      error, success: null, username: username || '', googleReady: fanLoginReady(), next,
+      pageTitle: 'Beheerder inloggen', bodyClass: 'on-special on-auth',
+      error, gerr: null, success: null, username: username || '',
+      adminLogin: true, googleReady: false, next,
     });
   };
@@ -229,5 +256,5 @@
       updated_at = CURRENT_TIMESTAMP WHERE id = ?
   `).run(hash, row.id);
-  res.redirect('/auth/login?success=' + encodeURIComponent('Wachtwoord gereset — log nu in.'));
+  res.redirect('/auth/admin?success=' + encodeURIComponent('Wachtwoord gereset — log nu in.'));
 });
 
