Index: src/views/pages/admin-comments.ejs
===================================================================
--- src/views/pages/admin-comments.ejs	(revision 075185aec7ff8542aa40c1e84a7a70cb05f7599f)
+++ 	(revision )
@@ -1,128 +1,0 @@
-<div class="container admin-comments-page">
-  <p><a href="/admin" class="btn">&larr; <%= t('acom.back') %></a></p>
-  <h1><%= t('acom.title') %></h1>
-
-  <p class="muted">
-    <%= t('acom.mode_for_site') %> <strong><%= moderationMode %></strong>
-    <% if (moderationMode === 'trust') { %>
-      &mdash; <%= t('acom.mode_trust_a') %> <em><%= t('acom.mode_moderate_word') %></em>
-      <a href="/admin/sites/<%= site.slug %>/edit"><%= t('acom.site_settings') %></a> <%= t('acom.mode_trust_b') %>
-    <% } else { %>
-      &mdash; <%= t('acom.mode_moderate_hint') %>
-    <% } %>
-  </p>
-
-  <% if (success) { %><div class="audio-flash audio-flash--ok"><%= success %></div><% } %>
-  <% if (error)   { %><div class="audio-flash audio-flash--err"><%= error %></div><% } %>
-
-  <h2><%= t('acom.pending', { n: pending.length }) %></h2>
-  <% if (!pending.length) { %>
-    <p class="muted"><%= t('acom.nothing_waiting') %></p>
-  <% } else { %>
-    <%
-      var _c_reply    = t('acom.reply');
-      var _c_on       = t('acom.on');
-      var _c_approve  = t('acom.approve');
-      var _c_reject   = t('acom.reject');
-    %>
-    <ol class="moderation-list">
-      <% pending.forEach(function(c) { %>
-        <li class="moderation-item">
-          <div class="moderation-meta">
-            <strong><%= c.author_username %></strong>
-            <% if (c.parent_comment_id) { %><span class="muted">(<%= _c_reply %>)</span><% } %>
-            <%= _c_on %> <a href="<%= siteUrlBase %>/<%= c.post_slug %>"><%= c.post_title || c.post_slug %></a>
-            <span class="muted">&middot; <%= formatDateTime(c.created_at) %></span>
-          </div>
-          <blockquote class="moderation-content"><%= c.content %></blockquote>
-          <div class="moderation-actions">
-            <form method="post" action="<%= siteUrlBase %>/admin/comments/<%= c.id %>/approve" style="display:inline">
-              <button type="submit" class="btn btn-primary"><%= _c_approve %></button>
-            </form>
-            <form method="post" action="<%= siteUrlBase %>/admin/comments/<%= c.id %>/reject" style="display:inline">
-              <button type="submit" class="btn btn-danger"><%= _c_reject %></button>
-            </form>
-          </div>
-        </li>
-      <% }); %>
-    </ol>
-  <% } %>
-
-  <h2><%= t('acom.recent') %></h2>
-  <% if (!recent.length) { %>
-    <p class="muted"><%= t('acom.nothing_yet') %></p>
-  <% } else { %>
-    <ul class="decision-list">
-      <% recent.forEach(function(c) { %>
-        <li class="decision-card decision-card--<%= c.status %>">
-          <span class="status-pill status-pill--<%= c.status %>"><%= c.status %></span>
-          <div class="decision-main">
-            <span class="decision-author"><%= c.author_username %></span>
-            <a class="decision-post" href="<%= siteUrlBase %>/<%= c.post_slug %>"><%= c.post_title || c.post_slug %></a>
-          </div>
-          <span class="decision-date"><%= formatDateTime(c.created_at) %></span>
-        </li>
-      <% }); %>
-    </ul>
-  <% } %>
-</div>
-
-<style>
-.admin-comments-page { max-width: 900px; margin: 3rem auto; padding: 0 1rem; }
-.admin-comments-page h1 { font-family: var(--font-display, serif); font-size: 2rem; margin: 0 0 1rem; }
-.admin-comments-page h2 { font-family: var(--font-display, serif); font-size: 1.25rem; margin: 1.5rem 0 0.75rem; }
-.muted { color: var(--ink-muted, var(--ink-soft)); }
-.muted a { color: var(--accent); }
-
-.moderation-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1rem; }
-.moderation-item {
-  background: var(--paper-2);
-  border: 1px solid var(--rule);
-  border-radius: 8px;
-  padding: 1rem;
-}
-.moderation-meta { font-size: 0.85rem; margin-bottom: 0.5rem; color: var(--ink-soft); }
-.moderation-meta a { color: var(--accent); }
-.moderation-content {
-  margin: 0 0 0.75rem;
-  padding: 0.5rem 0.75rem;
-  border-left: 3px solid var(--accent);
-  background: var(--paper);
-  white-space: pre-wrap;
-  word-wrap: break-word;
-  color: var(--ink);
-}
-.moderation-actions { display: flex; gap: 0.5rem; }
-
-.status-pill {
-  display: inline-block; padding: 0.1rem 0.5rem; border-radius: 10px;
-  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em;
-}
-.status-pill--approved { background: rgba(40, 160, 90, 0.15); color: #2a9d5e; }
-.status-pill--rejected { background: rgba(200, 60, 60, 0.15); color: #c33; }
-.status-pill--pending  { background: var(--paper); color: var(--ink-muted, var(--ink-soft)); }
-
-/* Recent decisions als cards (i.p.v. een platte tabel) */
-.decision-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.6rem; }
-.decision-card {
-  display: flex; align-items: center; gap: 0.85rem;
-  padding: 0.7rem 0.9rem;
-  background: var(--paper-2); border: 1px solid var(--rule);
-  border-left: 3px solid var(--rule); border-radius: 10px;
-}
-.decision-card--approved { border-left-color: #2a9d5e; }
-.decision-card--rejected { border-left-color: #c33; }
-.decision-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
-.decision-author { font-weight: 600; }
-.decision-post { color: var(--accent); text-decoration: none; font-size: 0.88rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
-.decision-post:hover { text-decoration: underline; }
-.decision-date { flex: 0 0 auto; color: var(--ink-muted, var(--ink-soft)); font-size: 0.8rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
-@media (max-width: 520px) {
-  .decision-card { flex-wrap: wrap; }
-  .decision-date { width: 100%; }
-}
-
-.audio-flash { padding: 0.75rem 1rem; border-radius: 6px; margin: 1rem 0; font-size: 0.9rem; }
-.audio-flash--ok { background: rgba(40, 160, 90, 0.15); color: #2a9d5e; border: 1px solid rgba(40, 160, 90, 0.3); }
-.audio-flash--err { background: rgba(200, 60, 60, 0.15); color: #c33; border: 1px solid rgba(200, 60, 60, 0.3); }
-</style>
Index: src/views/pages/admin-site-edit.ejs
===================================================================
--- src/views/pages/admin-site-edit.ejs	(revision 075185aec7ff8542aa40c1e84a7a70cb05f7599f)
+++ src/views/pages/admin-site-edit.ejs	(revision dc8e9bda703d78ef43df97ab8ad71d9a93d94316)
@@ -147,15 +147,4 @@
         <input type="checkbox" name="robots_index" value="1" <%= site.robots_index ? 'checked' : '' %>>
         <span><%= t('asite.robots_index') %></span>
-      </label>
-      <label class="cb">
-        <input type="checkbox" name="require_login_to_comment" value="1" <%= site.require_login_to_comment ? 'checked' : '' %>>
-        <span><%= t('asite.require_login_comment') %></span>
-      </label>
-      <label>
-        <span><%= t('asite.comment_moderation') %></span>
-        <select name="comments_moderation_mode">
-          <option value="trust"    <%= (site.comments_moderation_mode || 'trust') === 'trust'    ? 'selected' : '' %>><%= t('asite.moderation_trust') %></option>
-          <option value="moderate" <%= site.comments_moderation_mode === 'moderate' ? 'selected' : '' %>><%= t('asite.moderation_moderate') %></option>
-        </select>
       </label>
       <% if (typeof audioEnabled === 'undefined' || audioEnabled) { %>
Index: src/views/pages/admin.ejs
===================================================================
--- src/views/pages/admin.ejs	(revision 075185aec7ff8542aa40c1e84a7a70cb05f7599f)
+++ src/views/pages/admin.ejs	(revision dc8e9bda703d78ef43df97ab8ad71d9a93d94316)
@@ -31,5 +31,4 @@
       <a href="/admin/playlists" class="btn"><%= t('admin.b_playlists') %></a>
       <% } %>
-      <a href="/admin/comments" class="btn"><%= t('admin.b_comments') %></a>
       <% if (primarySite) { %><a href="/admin/seo" class="btn"><%= t('admin.b_seo') %></a><% } %>
       <a href="/admin/settings" class="btn"><%= t('admin.b_settings') %></a>
@@ -39,5 +38,4 @@
       <a href="/admin/audio" class="btn"><%= t('admin.b_audio') %></a>
       <% } %>
-      <a href="/admin/comments" class="btn"><%= t('admin.b_comments') %></a>
       <% if (primarySite) { %>
         <a href="/admin/sites/<%= primarySite.slug %>/edit" class="btn"><%= t('admin.b_look') %></a>
Index: src/views/pages/my-site.ejs
===================================================================
--- src/views/pages/my-site.ejs	(revision 075185aec7ff8542aa40c1e84a7a70cb05f7599f)
+++ src/views/pages/my-site.ejs	(revision dc8e9bda703d78ef43df97ab8ad71d9a93d94316)
@@ -7,5 +7,4 @@
     <a href="/user/<%= mySite.slug %>/posts/new" class="btn">✍️ <%= t('myst.new_post') %></a>
     <a href="/admin/sites/<%= mySite.slug %>/edit" class="btn">🎨 <%= t('myst.appearance') %></a>
-    <a href="/user/<%= mySite.slug %>/admin/comments" class="btn">💬 <%= t('myst.comments') %></a>
     <a href="/user/<%= mySite.slug %>" class="btn">👁️ <%= t('myst.view_site') %></a>
     <a href="/account" class="btn">👤 <%= t('myst.account') %></a>
Index: src/views/pages/post.ejs
===================================================================
--- src/views/pages/post.ejs	(revision 075185aec7ff8542aa40c1e84a7a70cb05f7599f)
+++ src/views/pages/post.ejs	(revision dc8e9bda703d78ef43df97ab8ad71d9a93d94316)
@@ -112,159 +112,4 @@
   </script>
 
-  <!-- Comments -->
-  <section class="post-comments" id="comments">
-    <h2 class="comments-heading">
-      <%= t(totalComments === 1 ? 'comments.heading_one' : 'comments.heading_other', { n: totalComments }) %>
-    </h2>
-
-    <% if (typeof currentPath === 'string' && currentPath && currentPath.indexOf('/' + post.slug) === 0) { %>
-      <% /* If the URL has ?pending=1, the previous submit landed in the moderation queue */ %>
-    <% } %>
-    <script>
-      (function() {
-        if (location.search.indexOf('pending=1') !== -1) {
-          var s = document.createElement('div');
-          s.className = 'comments-pending-flash';
-          s.textContent = <%- JSON.stringify(t('comments.pending')) %>;
-          document.currentScript.parentNode.insertBefore(s, document.currentScript);
-        }
-      })();
-    </script>
-
-    <% if (!comments || !comments.length) { %>
-      <p class="comments-empty"><%= t('comments.empty') %><% if (!user) { %> <a href="/auth/login?next=<%= encodeURIComponent(_base + '/' + post.slug + '#comments') %>"><%= t('nav.login') %></a> <%= t('comments.to_start') %><% } %></p>
-    <% } else { %>
-      <ol class="comments-list">
-        <% comments.forEach(function(c) { %>
-          <li class="comment" id="comment-<%= c.id %>">
-            <div class="comment-avatar">
-              <% if (c.author_avatar) { %>
-                <img src="<%= c.author_avatar %>" alt="">
-              <% } else { %>
-                <span><%= c.author_username.charAt(0).toUpperCase() %></span>
-              <% } %>
-            </div>
-            <div class="comment-body">
-              <div class="comment-meta">
-                <a class="comment-author" href="/users/<%= encodeURIComponent(c.author_username) %>"><%= c.author_username %></a>
-                <span class="comment-time" title="<%= c.created_at %>"><%= formatDateTime(c.created_at) %></span>
-              </div>
-              <div class="comment-content"><%= c.content %></div>
-              <div class="comment-actions">
-                <% if (user && canMutate) { %>
-                  <button type="button" class="comment-reply-btn" data-reply-to="<%= c.id %>"><%= t('comments.reply') %></button>
-                <% } %>
-                <% if (user && permissions.canDeleteComment(user, c, site)) { %>
-                  <form method="post" action="<%= _base %>/comments/<%= c.id %>/delete" onsubmit="return confirm('<%= t('comments.delete_confirm') %>')">
-                    <button type="submit" class="comment-delete-btn"><%= t('comments.delete') %></button>
-                  </form>
-                <% } %>
-              </div>
-
-              <!-- Inline reply form (hidden by default) -->
-              <% if (user && canMutate) { %>
-                <form method="post" action="<%= _base %>/comments" class="comment-reply-form" hidden data-reply-form-for="<%= c.id %>">
-                  <input type="hidden" name="post_slug" value="<%= post.slug %>">
-                  <input type="hidden" name="parent_comment_id" value="<%= c.id %>">
-                  <textarea name="content" rows="3" maxlength="4000" placeholder="<%= t('comments.reply_to', { name: c.author_username }) %>" required></textarea>
-                  <div class="comment-reply-form-actions">
-                    <button type="submit" class="btn btn-primary"><%= t('comments.reply') %></button>
-                    <button type="button" class="btn comment-cancel-reply"><%= t('comments.cancel') %></button>
-                  </div>
-                </form>
-              <% } %>
-
-              <!-- Replies (1 level deep) -->
-              <% if (c.replies && c.replies.length) { %>
-                <ol class="comment-replies">
-                  <% c.replies.forEach(function(r) { %>
-                    <li class="comment comment-reply" id="comment-<%= r.id %>">
-                      <div class="comment-avatar">
-                        <% if (r.author_avatar) { %>
-                          <img src="<%= r.author_avatar %>" alt="">
-                        <% } else { %>
-                          <span><%= r.author_username.charAt(0).toUpperCase() %></span>
-                        <% } %>
-                      </div>
-                      <div class="comment-body">
-                        <div class="comment-meta">
-                          <a class="comment-author" href="/users/<%= encodeURIComponent(r.author_username) %>"><%= r.author_username %></a>
-                          <span class="comment-time"><%= formatDateTime(r.created_at) %></span>
-                        </div>
-                        <div class="comment-content"><%= r.content %></div>
-                        <div class="comment-actions">
-                          <% if (user && canMutate) { %>
-                            <button type="button" class="comment-reply-btn" data-reply-to="<%= r.id %>"><%= t('comments.reply') %></button>
-                          <% } %>
-                          <% if (user && permissions.canDeleteComment(user, r, site)) { %>
-                            <form method="post" action="<%= _base %>/comments/<%= r.id %>/delete" onsubmit="return confirm('<%= t('comments.delete_confirm') %>')">
-                              <button type="submit" class="comment-delete-btn"><%= t('comments.delete') %></button>
-                            </form>
-                          <% } %>
-                        </div>
-
-                        <%# Replying to a reply — lands (via resolvedParent on the
-                            server) in the same thread, so the 1-level depth is preserved. %>
-                        <% if (user && canMutate) { %>
-                          <form method="post" action="<%= _base %>/comments" class="comment-reply-form" hidden data-reply-form-for="<%= r.id %>">
-                            <input type="hidden" name="post_slug" value="<%= post.slug %>">
-                            <input type="hidden" name="parent_comment_id" value="<%= r.id %>">
-                            <textarea name="content" rows="3" maxlength="4000" placeholder="<%= t('comments.reply_to', { name: r.author_username }) %>" required></textarea>
-                            <div class="comment-reply-form-actions">
-                              <button type="submit" class="btn btn-primary"><%= t('comments.reply') %></button>
-                              <button type="button" class="btn comment-cancel-reply"><%= t('comments.cancel') %></button>
-                            </div>
-                          </form>
-                        <% } %>
-                      </div>
-                    </li>
-                  <% }); %>
-                </ol>
-              <% } %>
-            </div>
-          </li>
-        <% }); %>
-      </ol>
-    <% } %>
-
-    <!-- Top-level comment form (only for logged-in users for now) -->
-    <% if (user && canMutate) { %>
-      <form method="post" action="<%= _base %>/comments" class="comment-form">
-        <input type="hidden" name="post_slug" value="<%= post.slug %>">
-        <label class="comment-form-label">
-          <span><%= t('comments.add_as') %> <strong><%= user.username %></strong></span>
-          <textarea name="content" rows="3" maxlength="4000" placeholder="<%= t('comments.placeholder') %>" required></textarea>
-        </label>
-        <button type="submit" class="btn btn-primary"><%= t('comments.post') %></button>
-      </form>
-    <% } else if (!user) { %>
-      <p class="comments-login-cta">
-        <a href="/auth/login?next=<%= encodeURIComponent(_base + '/' + post.slug + '#comments') %>" class="btn"><%= t('comments.login_to_comment') %></a>
-      </p>
-    <% } else { %>
-      <p class="comments-login-cta" style="color:var(--ink-muted)">👁️ Kijker-modus — reageren is uitgeschakeld.</p>
-    <% } %>
-  </section>
-
-  <!-- Reply form toggle -->
-  <script>
-  (function() {
-    document.querySelectorAll('.comment-reply-btn').forEach(function(btn) {
-      btn.addEventListener('click', function() {
-        var id = btn.dataset.replyTo;
-        var form = document.querySelector('[data-reply-form-for="' + id + '"]');
-        if (form) {
-          form.hidden = !form.hidden;
-          if (!form.hidden) form.querySelector('textarea').focus();
-        }
-      });
-    });
-    document.querySelectorAll('.comment-cancel-reply').forEach(function(btn) {
-      btn.addEventListener('click', function() {
-        btn.closest('.comment-reply-form').hidden = true;
-      });
-    });
-  })();
-  </script>
 
   <%# ── Related posts (3-card grid) ─────────────────────────────
