Index: src/views/partials/like-button.ejs
===================================================================
--- src/views/partials/like-button.ejs	(revision f33b24ac58be5fa1644afcf1cf2941d76df8feaa)
+++ src/views/partials/like-button.ejs	(revision f33b24ac58be5fa1644afcf1cf2941d76df8feaa)
@@ -0,0 +1,24 @@
+<%# Like-/favorietknop voor een post. Ingelogd → htmx-toggle (POST /posts/:id/like,
+    swap outerHTML met deze partial terug). Niet ingelogd → link naar login.
+    Verwacht: post (met .id), likedByMe, likeCount, loggedIn, loginNext. %>
+<%
+  var _liked = (typeof likedByMe !== 'undefined' && likedByMe);
+  var _cnt = (typeof likeCount !== 'undefined' && likeCount != null) ? likeCount : 0;
+  var _logged = (typeof loggedIn !== 'undefined' && loggedIn);
+%>
+<% if (_logged) { %>
+  <button type="button" class="like-btn<%= _liked ? ' is-liked' : '' %>"
+          hx-post="/posts/<%= post.id %>/like" hx-swap="outerHTML"
+          aria-pressed="<%= _liked ? 'true' : 'false' %>"
+          aria-label="<%= _liked ? 'Uit favorieten verwijderen' : 'Toevoegen aan favorieten' %>"
+          title="<%= _liked ? 'Uit favorieten verwijderen' : 'Toevoegen aan favorieten' %>">
+    <span class="like-heart" aria-hidden="true"><%= _liked ? '♥' : '♡' %></span>
+    <span class="like-count"><%= _cnt %></span>
+  </button>
+<% } else { %>
+  <a class="like-btn" href="/auth/login?next=<%= encodeURIComponent((typeof loginNext !== 'undefined' && loginNext) ? loginNext : '/') %>"
+     title="Log in om deze post te liken">
+    <span class="like-heart" aria-hidden="true">♡</span>
+    <span class="like-count"><%= _cnt %></span>
+  </a>
+<% } %>
Index: src/views/partials/profile-sheet.ejs
===================================================================
--- src/views/partials/profile-sheet.ejs	(revision 8cdb377943308d65de80427694f9692337081aa7)
+++ src/views/partials/profile-sheet.ejs	(revision f33b24ac58be5fa1644afcf1cf2941d76df8feaa)
@@ -53,4 +53,13 @@
           <svg class="psi-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
           <span class="psi-label">Account</span>
+          <svg class="psi-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>
+        </a>
+      </li>
+      <li role="none">
+        <a href="/favorieten" class="profile-sheet-item" role="menuitem" data-close-sheet
+           hx-get="/favorieten?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
+           hx-push-url="/favorieten" hx-indicator="#pcms-loading">
+          <svg class="psi-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
+          <span class="psi-label">Favorieten</span>
           <svg class="psi-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>
         </a>
Index: src/views/partials/topnav.ejs
===================================================================
--- src/views/partials/topnav.ejs	(revision 8cdb377943308d65de80427694f9692337081aa7)
+++ src/views/partials/topnav.ejs	(revision f33b24ac58be5fa1644afcf1cf2941d76df8feaa)
@@ -119,4 +119,10 @@
                 <svg class="udi-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
                 <span>Account</span>
+              </a>
+              <a href="/favorieten" role="menuitem" class="udi"
+                 hx-get="/favorieten?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
+                 hx-push-url="/favorieten" hx-indicator="#pcms-loading">
+                <svg class="udi-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
+                <span>Favorieten</span>
               </a>
               <% if (typeof canSeeBeheer !== 'undefined' && canSeeBeheer) { %>
