Index: src/views/pages/news.ejs
===================================================================
--- src/views/pages/news.ejs	(revision 3597763ebd5304800443a7a6c9ae0473d1e00272)
+++ src/views/pages/news.ejs	(revision ef1853cad6f220d1c174ec46d96a43d9e5596693)
@@ -137,9 +137,4 @@
   .tl-readmore:hover { text-decoration: underline; }
 
-  /* FEP-9098 custom emojis: small inline images, never treated as media. */
-  img.emoji { height: 1.35em; width: auto; margin: 0 .04em; vertical-align: -0.22em;
-    display: inline-block; border-radius: 0; background: none; box-shadow: none; }
-  .tl-content img.emoji, .tl-quote-body img.emoji { max-width: none; }
-
   /* FEP-044f embedded quote card (mirror of the Shaer QuoteCard). */
   .tl-quote { margin: .75rem 0 0; padding: .6rem .7rem; border-radius: 12px;
Index: src/views/partials/fedi-node.ejs
===================================================================
--- src/views/partials/fedi-node.ejs	(revision 3597763ebd5304800443a7a6c9ae0473d1e00272)
+++ src/views/partials/fedi-node.ejs	(revision ef1853cad6f220d1c174ec46d96a43d9e5596693)
@@ -6,10 +6,10 @@
 <div class="comment-body">
   <div class="comment-meta">
-    <% if (n.actor_url) { %><a class="comment-author" href="<%= n.actor_url %>" rel="nofollow noopener" target="_blank"><%= n.actor_name %></a>
-    <% } else { %><span class="comment-author"><%= n.actor_name %></span><% } %>
+    <% if (n.actor_url) { %><a class="comment-author" href="<%= n.actor_url %>" rel="nofollow noopener" target="_blank"><%- emojiName(n.actor_name, n.actor_emoji_json) %></a>
+    <% } else { %><span class="comment-author"><%- emojiName(n.actor_name, n.actor_emoji_json) %></span><% } %>
     <% if (n.actor_handle) { %><span class="fedi-handle"><%= n.actor_handle %></span><% } %>
     <% if (n.created_at) { %><span class="comment-time"><%= formatDateTime(n.created_at) %></span><% } %>
   </div>
-  <div class="comment-content"><%- n.content %></div>
+  <div class="comment-content"><%- emojiHtml(n.content, n.emoji_json) %></div>
   <%# Rich replies: media on our own sent replies (attachments on the Note).
       Visitors see these too, and the reply editor (owner-only) may not render,
Index: src/views/partials/msg-item.ejs
===================================================================
--- src/views/partials/msg-item.ejs	(revision 3597763ebd5304800443a7a6c9ae0473d1e00272)
+++ src/views/partials/msg-item.ejs	(revision ef1853cad6f220d1c174ec46d96a43d9e5596693)
@@ -40,5 +40,5 @@
                 <% if (n.to_handle) { %><span class="msg-handle">→ <%= n.to_handle %></span><% } %>
               <% } else { %>
-                <a class="msg-who" href="<%= n.url %>" target="_blank" rel="nofollow noopener"><%= _who %></a>
+                <a class="msg-who" href="<%= n.url %>" target="_blank" rel="nofollow noopener"><%- emojiName(_who, n.actor_emoji_json) %></a>
                 <% if (n.handle && n.name) { %><span class="msg-handle"><%= n.handle %></span><% } %>
               <% } %>
@@ -67,5 +67,5 @@
 
             <% if (_t === 'report' && n.content) { %><div class="msg-content"><%= n.content %></div>
-            <% } else if ((_t === 'reply' || _t === 'mention' || _t === 'sent') && n.content) { %><div class="msg-content"><%- n.content %></div>
+            <% } else if ((_t === 'reply' || _t === 'mention' || _t === 'sent') && n.content) { %><div class="msg-content"><%- emojiHtml(n.content, n.emoji_json) %></div>
               <% if (_t === 'mention' && n.wave && n.actorUri && canMutate) { %>
                 <form class="msg-quickreply" method="post" action="<%= (typeof siteUrlBase !== 'undefined' ? siteUrlBase : '') %>/messages/quick-reply" style="display:flex;gap:6px;flex-wrap:wrap;margin-top:6px">
Index: src/views/partials/shared-styles.ejs
===================================================================
--- src/views/partials/shared-styles.ejs	(revision 3597763ebd5304800443a7a6c9ae0473d1e00272)
+++ src/views/partials/shared-styles.ejs	(revision ef1853cad6f220d1c174ec46d96a43d9e5596693)
@@ -193,3 +193,12 @@
 .load-more-btn:hover { background: color-mix(in srgb, var(--ink, #000) 9%, transparent); }
 .load-more-btn.htmx-request { opacity: .6; pointer-events: none; }
+
+/* FEP-9098 custom emojis: small inline images (Shaer parity), rendered in note
+   content and display names across the timeline, messages and threads. Never
+   styled as media (no rounding/background), and never blown up to media width. */
+img.emoji { height: 1.3em; width: auto; margin: 0 .05em; vertical-align: -0.2em;
+  display: inline-block; border-radius: 0; background: none; box-shadow: none; }
+.tl-content img.emoji, .tl-quote-body img.emoji, .msg-content img.emoji, .comment-content img.emoji,
+.tl-author img.emoji, .tl-boost-by img.emoji, .tl-quote-name img.emoji, .msg-who img.emoji, .comment-author img.emoji {
+  max-width: none; height: 1.3em; border-radius: 0; background: none; box-shadow: none; vertical-align: -0.2em; }
 </style>
