Index: src/views/pages/account.ejs
===================================================================
--- src/views/pages/account.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/account.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -65,9 +65,34 @@
   </section>
 
-  <%# ── INLOG ─────────────────────────────────────────────── %>
+  <%# ── WACHTWOORD ────────────────────────────────────────── %>
+  <% if (hasPassword) { %>
+  <section class="ax-card">
+    <div class="ax-card-title">Wachtwoord wijzigen</div>
+    <form action="/account/password" method="post" class="ax-form">
+      <label class="ax-field">
+        <span>Huidig wachtwoord</span>
+        <input type="password" name="current" required autocomplete="current-password">
+      </label>
+      <div class="ax-row ax-row-2">
+        <label class="ax-field">
+          <span>Nieuw wachtwoord <small>(min 8 tekens)</small></span>
+          <input type="password" name="new_password" required minlength="8" autocomplete="new-password">
+        </label>
+        <label class="ax-field">
+          <span>Bevestig nieuw wachtwoord</span>
+          <input type="password" name="confirm" required minlength="8" autocomplete="new-password">
+        </label>
+      </div>
+      <div class="ax-form-actions">
+        <button type="submit" class="ax-btn ax-btn-primary">🔒 Wachtwoord wijzigen</button>
+      </div>
+    </form>
+  </section>
+  <% } else { %>
   <section class="ax-card">
     <div class="ax-card-title">Inloggen</div>
     <p class="ax-tagline" style="margin:0">Je bent ingelogd via Google (<%= account.email %>). Er is geen apart wachtwoord.</p>
   </section>
+  <% } %>
 
 </div>
Index: src/views/pages/auth-login.ejs
===================================================================
--- src/views/pages/auth-login.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/auth-login.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -1,21 +1,34 @@
 <div class="container auth-page">
   <h1>Inloggen</h1>
+  <% if (typeof success !== 'undefined' && success) { %><div class="alert alert-success"><%= success %></div><% } %>
   <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %>
 
-  <div class="auth-form auth-google">
-    <% if (googleReady) { %>
-      <p class="auth-intro">Log in met je Google-account om mee te praten.</p>
-      <a class="btn btn-google" href="/auth/google<%= (typeof next !== 'undefined' && next) ? '?next=' + encodeURIComponent(next) : '' %>">
-        <svg class="g-icon" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
-          <path fill="#4285F4" d="M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.48h4.84a4.14 4.14 0 0 1-1.8 2.72v2.26h2.92c1.7-1.57 2.68-3.88 2.68-6.62z"/>
-          <path fill="#34A853" d="M9 18c2.43 0 4.47-.8 5.96-2.18l-2.92-2.26c-.8.54-1.84.86-3.04.86-2.34 0-4.32-1.58-5.03-3.7H.96v2.33A9 9 0 0 0 9 18z"/>
-          <path fill="#FBBC05" d="M3.97 10.72a5.4 5.4 0 0 1 0-3.44V4.95H.96a9 9 0 0 0 0 8.1l3.01-2.33z"/>
-          <path fill="#EA4335" d="M9 3.58c1.32 0 2.5.45 3.44 1.35l2.58-2.58A9 9 0 0 0 .96 4.95l3.01 2.33C4.68 5.16 6.66 3.58 9 3.58z"/>
-        </svg>
-        <span>Inloggen met Google</span>
-      </a>
-    <% } else { %>
-      <p class="auth-intro">Inloggen via Google is op deze site nog niet ingesteld.</p>
+  <form method="post" action="/auth/login" class="auth-form">
+    <% if (typeof next !== 'undefined' && next) { %>
+      <input type="hidden" name="next" value="<%= next %>">
     <% } %>
-  </div>
+    <label>
+      <span>Gebruikersnaam of e-mail</span>
+      <input type="text" name="username" value="<%= username %>" required autofocus autocomplete="username">
+    </label>
+    <label>
+      <span>Wachtwoord</span>
+      <input type="password" name="password" required autocomplete="current-password">
+    </label>
+    <button type="submit" class="btn btn-primary">Inloggen</button>
+    <p class="auth-link auth-link-muted"><a href="/auth/reset-request">Wachtwoord vergeten?</a></p>
+  </form>
+
+  <% if (googleReady) { %>
+    <div class="auth-divider"><span>of als luisteraar</span></div>
+    <a class="btn btn-google" href="/auth/google<%= (typeof next !== 'undefined' && next) ? '?next=' + encodeURIComponent(next) : '' %>">
+      <svg class="g-icon" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
+        <path fill="#4285F4" d="M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.48h4.84a4.14 4.14 0 0 1-1.8 2.72v2.26h2.92c1.7-1.57 2.68-3.88 2.68-6.62z"/>
+        <path fill="#34A853" d="M9 18c2.43 0 4.47-.8 5.96-2.18l-2.92-2.26c-.8.54-1.84.86-3.04.86-2.34 0-4.32-1.58-5.03-3.7H.96v2.33A9 9 0 0 0 9 18z"/>
+        <path fill="#FBBC05" d="M3.97 10.72a5.4 5.4 0 0 1 0-3.44V4.95H.96a9 9 0 0 0 0 8.1l3.01-2.33z"/>
+        <path fill="#EA4335" d="M9 3.58c1.32 0 2.5.45 3.44 1.35l2.58-2.58A9 9 0 0 0 .96 4.95l3.01 2.33C4.68 5.16 6.66 3.58 9 3.58z"/>
+      </svg>
+      <span>Inloggen met Google</span>
+    </a>
+  <% } %>
 </div>
Index: src/views/pages/auth-register.ejs
===================================================================
--- src/views/pages/auth-register.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/auth-register.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -1,4 +1,5 @@
 <div class="container auth-page">
-  <h1>Register</h1>
+  <h1>Beheerder aanmaken</h1>
+  <p class="auth-intro">Eerste keer opzetten — maak je beheerdersaccount aan. Dit kan maar één keer.</p>
   <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %>
   <form method="post" action="/auth/register" class="auth-form">
@@ -7,19 +8,16 @@
     <% } %>
     <label>
-      <span>Username (3-32 chars, letters/numbers/_-)</span>
+      <span>Gebruikersnaam (3-32 tekens, letters/cijfers/_-)</span>
       <input type="text" name="username" value="<%= username %>" required autofocus autocomplete="username" pattern="[a-zA-Z0-9_-]{3,32}">
     </label>
     <label>
-      <span>Email</span>
+      <span>E-mail</span>
       <input type="email" name="email" value="<%= email %>" required autocomplete="email">
     </label>
     <label>
-      <span>Password (min 8 chars)</span>
+      <span>Wachtwoord (min 8 tekens)</span>
       <input type="password" name="password" required minlength="8" autocomplete="new-password">
     </label>
-    <button type="submit" class="btn btn-primary">Create account</button>
-    <p class="auth-link">Already registered?
-      <a href="/auth/login<%= (typeof next !== 'undefined' && next) ? '?next=' + encodeURIComponent(next) : '' %>">Login</a>
-    </p>
+    <button type="submit" class="btn btn-primary">Beheerder aanmaken</button>
   </form>
 </div>
Index: src/views/pages/auth-reset-request.ejs
===================================================================
--- src/views/pages/auth-reset-request.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/auth-reset-request.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -1,12 +1,12 @@
 <div class="container auth-page">
-  <h1>Reset password</h1>
+  <h1>Wachtwoord resetten</h1>
 
   <% if (sent) { %>
     <div class="alert alert-success">
-      If an account exists for that email, a reset link has been sent.
+      Als er een account bestaat voor dat e-mailadres, is er een reset-link verstuurd.
     </div>
     <% if (devResetUrl) { %>
       <div class="alert alert-info">
-        <strong>Dev mode:</strong> reset link below (no email server configured).
+        <strong>Geen e-mailserver ingesteld</strong> — reset-link hieronder.
         <p style="margin: 0.5rem 0 0; word-break: break-all;">
           <a href="<%= devResetUrl %>"><%= devResetUrl %></a>
@@ -14,7 +14,10 @@
       </div>
     <% } %>
-    <p class="auth-link"><a href="/auth/login">&larr; Back to login</a></p>
+    <% if (typeof mailer !== 'undefined' && !mailer) { %>
+      <p class="auth-link-muted">Geen e-mail ingesteld? De beheerder kan ook <code>npm run reset-admin</code> draaien op de server.</p>
+    <% } %>
+    <p class="auth-link"><a href="/auth/login">&larr; Terug naar inloggen</a></p>
   <% } else { %>
-    <p class="auth-tagline">Enter your email and we'll send a reset link.</p>
+    <p class="auth-tagline">Vul je e-mail in; we sturen een reset-link.</p>
 
     <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %>
@@ -22,9 +25,9 @@
     <form method="post" action="/auth/reset-request" class="auth-form">
       <label>
-        <span>Email</span>
+        <span>E-mail</span>
         <input type="email" name="email" required autofocus autocomplete="email">
       </label>
-      <button type="submit" class="btn btn-primary">Send reset link</button>
-      <p class="auth-link"><a href="/auth/login">&larr; Back to login</a></p>
+      <button type="submit" class="btn btn-primary">Stuur reset-link</button>
+      <p class="auth-link"><a href="/auth/login">&larr; Terug naar inloggen</a></p>
     </form>
   <% } %>
Index: src/views/pages/auth-reset.ejs
===================================================================
--- src/views/pages/auth-reset.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/auth-reset.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -1,14 +1,14 @@
 <div class="container auth-page">
-  <h1>Reset password</h1>
+  <h1>Wachtwoord resetten</h1>
 
   <% if (!token) { %>
     <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %>
     <p class="auth-link">
-      <a href="/auth/reset-request">Request a new reset link</a>
+      <a href="/auth/reset-request">Vraag een nieuwe reset-link aan</a>
       &middot;
-      <a href="/auth/login">Back to login</a>
+      <a href="/auth/login">Terug naar inloggen</a>
     </p>
   <% } else { %>
-    <p class="auth-tagline">Set a new password for <strong><%= username %></strong>.</p>
+    <p class="auth-tagline">Stel een nieuw wachtwoord in voor <strong><%= username %></strong>.</p>
 
     <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %>
@@ -16,12 +16,12 @@
     <form method="post" action="/auth/reset/<%= token %>" class="auth-form">
       <label>
-        <span>New password (min 8 chars)</span>
+        <span>Nieuw wachtwoord (min 8 tekens)</span>
         <input type="password" name="new_password" required minlength="8" autofocus autocomplete="new-password">
       </label>
       <label>
-        <span>Confirm new password</span>
+        <span>Bevestig nieuw wachtwoord</span>
         <input type="password" name="confirm" required minlength="8" autocomplete="new-password">
       </label>
-      <button type="submit" class="btn btn-primary">Set password</button>
+      <button type="submit" class="btn btn-primary">Wachtwoord instellen</button>
     </form>
   <% } %>
Index: src/views/pages/welcome.ejs
===================================================================
--- src/views/pages/welcome.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/pages/welcome.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -5,7 +5,8 @@
   <% if (!user) { %>
     <div class="welcome-actions">
-      <a href="/auth/login" class="btn btn-primary">Inloggen met Google</a>
+      <a href="/auth/register" class="btn btn-primary">Beheerder aanmaken</a>
+      <a href="/auth/login" class="btn">Al een account? Inloggen</a>
     </div>
-    <p class="welcome-note">De eerste gebruiker die inlogt wordt <strong>god</strong> en krijgt automatisch een eigen site.</p>
+    <p class="welcome-note">Maak je beheerdersaccount aan om te beginnen — daarna is registratie gesloten.</p>
   <% } else { %>
     <p>Hi <%= user.username %>! No site is configured yet.</p>
Index: src/views/partials/shared-styles.ejs
===================================================================
--- src/views/partials/shared-styles.ejs	(revision c80e78bc18fad68fd4deed4bd94cd0b89ca32b1d)
+++ src/views/partials/shared-styles.ejs	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
@@ -125,4 +125,6 @@
 .btn-google:hover { background: #f7f8f8; border-color: #dadce0; }
 .btn-google .g-icon { flex-shrink: 0; }
+.auth-divider { display: flex; align-items: center; gap: 0.75rem; margin: 1.25rem 0; color: var(--ink-muted); font-size: 0.85rem; }
+.auth-divider::before, .auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--rule); }
 
 /* HTMX loading indicator */
