Index: src/views/pages/fan-gate.ejs
===================================================================
--- src/views/pages/fan-gate.ejs	(revision b9dc94c5d408760545edee96aed16a6a387b1847)
+++ src/views/pages/fan-gate.ejs	(revision b9dc94c5d408760545edee96aed16a6a387b1847)
@@ -0,0 +1,19 @@
+<section class="fg">
+  <div class="fg-card">
+    <div class="fg-lock">🔒</div>
+    <h1 class="fg-h1">Alleen voor fans</h1>
+    <% if (typeof fgTitle !== 'undefined' && fgTitle) { %><p class="fg-which">"<%= fgTitle %>"</p><% } %>
+    <p class="fg-sub">Dit is exclusief voor ingelogde fans. Log in om het te bekijken.</p>
+    <p><a class="fg-btn" href="/auth/login?next=<%= encodeURIComponent(fgNext || '/') %>">Inloggen / aanmelden</a></p>
+  </div>
+</section>
+
+<style>
+  .fg { max-width: 480px; margin: 0 auto; padding: 56px 18px; text-align: center; }
+  .fg-card { border: 1px solid rgba(128,128,128,.2); border-radius: 18px; padding: 36px 28px; }
+  .fg-lock { font-size: 40px; margin-bottom: 8px; }
+  .fg-h1 { font-size: 26px; margin: 0 0 6px; }
+  .fg-which { font-style: italic; opacity: .8; margin: 0 0 12px; }
+  .fg-sub { opacity: .85; line-height: 1.6; margin: 0 0 20px; }
+  .fg-btn { display: inline-block; padding: 12px 22px; border-radius: 10px; background: var(--accent,#6b8f71); color: #fff; text-decoration: none; font-weight: 600; }
+</style>
Index: src/views/pages/post-edit.ejs
===================================================================
--- src/views/pages/post-edit.ejs	(revision 6be57b4716118bcb1264cfea3f073b10963be2bf)
+++ src/views/pages/post-edit.ejs	(revision b9dc94c5d408760545edee96aed16a6a387b1847)
@@ -193,4 +193,15 @@
           <span>🚫 noindex (verberg voor zoekmachines)</span>
         </label>
+        <% if (typeof premiumUnlocked === 'undefined' || premiumUnlocked) { %>
+          <label class="pe-checkbox">
+            <input type="checkbox" name="fan_only" value="1" <%= post.fan_only ? 'checked' : '' %>>
+            <span>🔒 Alleen voor ingelogde fans</span>
+          </label>
+          <div style="margin-top:8px">
+            <label style="display:block;font-size:12.5px;opacity:.8;margin-bottom:4px">📅 Publiceren op (laat leeg = direct)</label>
+            <input type="datetime-local" name="publish_at" value="<%= post.publish_at ? String(post.publish_at).replace(' ','T').slice(0,16) : '' %>" style="padding:8px 10px;border-radius:8px;border:1px solid var(--rule,rgba(128,128,128,.4));background:transparent;color:inherit">
+            <% if (post.status === 'scheduled' && post.publish_at) { %><div style="font-size:12px;opacity:.7;margin-top:4px">⏳ Ingepland voor <%= post.publish_at %></div><% } %>
+          </div>
+        <% } %>
       </div>
     </section>
