Index: src/views/pages/messages.ejs
===================================================================
--- src/views/pages/messages.ejs	(revision 0448e340f39233b65d38066dd72201ee7c8c1c80)
+++ src/views/pages/messages.ejs	(revision a78a0effb5cc4b65ec05ea1666c599f12c9262bc)
@@ -151,8 +151,17 @@
      in aparte chips zaten. */
   .msg-thread { display: block; }
-  .msg-thread-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: .5rem; }
-  .msg-thread-who { font-weight: 600; }
-  .msg-thread-count { font-size: .78em; padding: .05rem .4rem; border-radius: 999px;
-    background: color-mix(in srgb, var(--ink, #000) 10%, transparent); }
+  .msg-thread-head { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-bottom: .35rem; }
+  /* De tegenpartij is een labeltje bij het gesprek, geen kop erboven: een
+     kleine verzonken uitsparing, zodat de bubbels eronder de ruimte krijgen.
+     Het aantal zit in dezelfde uitsparing in plaats van ernaast. */
+  .msg-thread-who { display: inline-flex; align-items: center; gap: .3rem;
+    font-size: .78em; line-height: 1.5; font-weight: 500;
+    padding: .05rem .5rem; border-radius: 999px;
+    color: color-mix(in srgb, var(--ink, #000) 62%, transparent);
+    background: color-mix(in srgb, var(--ink, #000) 5%, transparent);
+    box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ink, #000) 9%, transparent);
+    max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+  .msg-thread-count { font-variant-numeric: tabular-nums; opacity: .75;
+    padding-inline-start: .3rem; border-inline-start: 1px solid color-mix(in srgb, var(--ink, #000) 14%, transparent); }
   .msg-thread-post { display: inline-flex; align-items: center; gap: .3rem; font-size: .85em;
     margin-inline-start: auto; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
Index: src/views/partials/msg-item.ejs
===================================================================
--- src/views/partials/msg-item.ejs	(revision 0448e340f39233b65d38066dd72201ee7c8c1c80)
+++ src/views/partials/msg-item.ejs	(revision a78a0effb5cc4b65ec05ea1666c599f12c9262bc)
@@ -14,6 +14,7 @@
         <li class="msg-item msg-thread<%= _tnew ? ' is-new' : '' %>" data-kind="conv" data-who="<%= (_tpeople.join(' ') + ' ' + (_tto || '')).toLowerCase() %>">
           <div class="msg-thread-head">
-            <span class="msg-thread-who"><%= _tlabel %></span>
-            <% if (n.count > 1) { %><span class="msg-thread-count"><%= n.count %></span><% } %>
+            <%# Tegenpartij en aantal in EEN uitsparing: het is een label bij het
+                gesprek, geen kop erboven. Zo houdt de inhoud de ruimte. %>
+            <span class="msg-thread-who"><%= _tlabel %><% if (n.count > 1) { %><span class="msg-thread-count"><%= n.count %></span><% } %></span>
             <% if (_tnew) { %><span class="msg-new" title="<%= t('msg.new') %>"></span><% } %>
             <%# De context bij de draad: waar gaat dit gesprek over? Zonder deze
