Index: src/middleware/render.js
===================================================================
--- src/middleware/render.js	(revision 52ea6df4abea1a346a912f9f11d8e52a474df932)
+++ src/middleware/render.js	(revision 82079add2859eb42986c97e651ed5be8d0bec7d1)
@@ -73,4 +73,10 @@
     const _fresh = db.prepare('SELECT avatar_url, role, lang FROM users WHERE id = ?').get(_u.id);
     if (_fresh) _u = { ..._u, avatar_url: _fresh.avatar_url, role: _fresh.role, lang: _fresh.lang };
+    // One identity: no own account avatar → fall back to the user's site photo,
+    // so the same picture shows everywhere (nav, account, comments).
+    if (_u && !_u.avatar_url) {
+      const _sp = db.prepare("SELECT profile_photo FROM sites WHERE owner_id = ? AND profile_photo IS NOT NULL ORDER BY is_primary DESC, created_at ASC LIMIT 1").get(_u.id);
+      if (_sp && _sp.profile_photo) _u = { ..._u, avatar_url: _sp.profile_photo };
+    }
   }
   const userOwnsSite = !!(_u && _u.role !== 'god' &&
Index: src/routes/account.js
===================================================================
--- src/routes/account.js	(revision 52ea6df4abea1a346a912f9f11d8e52a474df932)
+++ src/routes/account.js	(revision 82079add2859eb42986c97e651ed5be8d0bec7d1)
@@ -68,4 +68,5 @@
   if (account) { delete account.password_hash; delete account.google_sub; } // don't leak to the view
 
+  const editableSite = ownedSite(req.session.user);
   renderPage(req, res, 'pages/account', {
     pageTitle: 'Account',
@@ -75,5 +76,7 @@
     googleLinked,
     googleAvailable: googleConfigured(),
-    editableSite: ownedSite(req.session.user),
+    editableSite,
+    // Display fallback: when you have no own account avatar, show your site's photo.
+    siteAvatar: editableSite ? editableSite.profile_photo : null,
     success: req.query.success || null,
     error: req.query.error || null,
@@ -98,5 +101,5 @@
 function ownedSite(user) {
   if (!user) return null;
-  let site = db.prepare('SELECT id, title, tagline, slug, owner_id FROM sites WHERE owner_id = ? ORDER BY created_at LIMIT 1').get(user.id);
+  let site = db.prepare('SELECT id, title, tagline, slug, owner_id, profile_photo FROM sites WHERE owner_id = ? ORDER BY created_at LIMIT 1').get(user.id);
   if (!site && user.role === 'god') {
     site = getPrimarySite(); // primary/main site as fallback
Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 52ea6df4abea1a346a912f9f11d8e52a474df932)
+++ src/routes/posts.js	(revision 82079add2859eb42986c97e651ed5be8d0bec7d1)
@@ -661,5 +661,6 @@
   const commentRows = db.prepare(`
     SELECT c.id, c.parent_comment_id, c.content, c.status, c.created_at,
-           c.author_id, u.username AS author_username, u.avatar_url AS author_avatar
+           c.author_id, u.username AS author_username,
+           COALESCE(u.avatar_url, (SELECT profile_photo FROM sites WHERE owner_id = u.id AND profile_photo IS NOT NULL ORDER BY is_primary DESC, created_at ASC LIMIT 1)) AS author_avatar
     FROM comments c JOIN users u ON u.id = c.author_id
     WHERE c.post_id = ? AND c.status = 'approved'
Index: src/views/pages/account.ejs
===================================================================
--- src/views/pages/account.ejs	(revision 52ea6df4abea1a346a912f9f11d8e52a474df932)
+++ src/views/pages/account.ejs	(revision 82079add2859eb42986c97e651ed5be8d0bec7d1)
@@ -31,6 +31,7 @@
           <label class="ax-avatar-wrap" title="<%= t('acct.avatar_change') %>">
             <span class="ax-profile-avatar">
-              <% if (account.avatar_url) { %>
-                <img src="<%= account.avatar_url %>" alt="">
+              <% var _av = account.avatar_url || (typeof siteAvatar !== 'undefined' ? siteAvatar : null); %>
+              <% if (_av) { %>
+                <img src="<%= _av %>" alt="">
               <% } else { %>
                 <span><%= account.username.charAt(0).toUpperCase() %></span>
@@ -45,6 +46,7 @@
       <% } else { %>
         <span class="ax-profile-avatar ax-profile-avatar-static">
-          <% if (account.avatar_url) { %>
-            <img src="<%= account.avatar_url %>" alt="">
+          <% var _av2 = account.avatar_url || (typeof siteAvatar !== 'undefined' ? siteAvatar : null); %>
+          <% if (_av2) { %>
+            <img src="<%= _av2 %>" alt="">
           <% } else { %>
             <span><%= account.username.charAt(0).toUpperCase() %></span>
