Index: src/assets/css/style.css
===================================================================
--- src/assets/css/style.css	(revision 70dbef43beafe898ca5760598d85495b3f1fb3a2)
+++ src/assets/css/style.css	(revision 3a3a88292d6219f0e396972813875179f0cfba37)
@@ -2371,4 +2371,13 @@
     color: var(--ink);
     border-color: var(--ink-muted);
+}
+/* Uitgeschakeld (Lezen in de cirkel) wint van :hover -- anders licht een knop
+   op die je niet kunt indrukken, en dat is precies de verkeerde belofte. */
+.view-switch-btn[disabled],
+.view-switch-btn[disabled]:hover {
+    opacity: .38;
+    cursor: not-allowed;
+    color: var(--ink-muted);
+    border-color: var(--rule);
 }
 /* Actieve state: puur afgeleid van body[data-feed-view]. Geen .is-active class meer.
Index: src/services/i18n.js
===================================================================
--- src/services/i18n.js	(revision 70dbef43beafe898ca5760598d85495b3f1fb3a2)
+++ src/services/i18n.js	(revision 3a3a88292d6219f0e396972813875179f0cfba37)
@@ -34,4 +34,5 @@
     'switch.circle': 'Cirkels',
     'switch.grid': 'Grid', 'switch.reader': 'Lezen',
+    'switch.reader_solo_only': 'Lezen kan alleen in Solo — in de cirkel staan berichten van anderen',
     'postnav.newer': 'Nieuwer',
     'postnav.older': 'Ouder',
@@ -1048,4 +1049,5 @@
     'switch.circle': 'Circles',
     'switch.grid': 'Grid', 'switch.reader': 'Reader',
+    'switch.reader_solo_only': 'Reader is Solo only — a circle shows other people\u2019s posts',
     'postnav.newer': 'Newer',
     'postnav.older': 'Older',
@@ -2053,4 +2055,5 @@
     'switch.circle': 'Zirkel',
     'switch.grid': 'Raster', 'switch.reader': 'Lesen',
+    'switch.reader_solo_only': 'Lesen gibt es nur in Solo — im Zirkel stehen Beitr\u00e4ge anderer',
     'postnav.newer': 'Neuer',
     'postnav.older': 'Älter',
Index: src/views/partials/shared-styles.ejs
===================================================================
--- src/views/partials/shared-styles.ejs	(revision 70dbef43beafe898ca5760598d85495b3f1fb3a2)
+++ src/views/partials/shared-styles.ejs	(revision 3a3a88292d6219f0e396972813875179f0cfba37)
@@ -40,4 +40,9 @@
    feed pages syncAria sets aria-selected=false → both grey. */
 .view-switch-btn[aria-selected="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
+/* Lezen in de cirkel: zichtbaar maar dood. Niet weggelaten, want dan springt de
+   pil van breedte tussen Solo en Cirkel, en juist DAT verbergt dat er een
+   tweede weergave bestaat. Grijs + not-allowed zegt "bestaat, kan hier niet". */
+.view-switch-btn[disabled] { opacity: .38; cursor: not-allowed; }
+.view-switch-btn[disabled]:hover { color: var(--ink-muted, var(--ink-soft)); background: transparent; }
 
 /* Agenda = its OWN pill (separate from Timeline/Grid, so the feed-toggle is never
Index: src/views/partials/view-switcher.ejs
===================================================================
--- src/views/partials/view-switcher.ejs	(revision 70dbef43beafe898ca5760598d85495b3f1fb3a2)
+++ src/views/partials/view-switcher.ejs	(revision 3a3a88292d6219f0e396972813875179f0cfba37)
@@ -12,7 +12,15 @@
   // Lezen bestaat alleen waar een leessectie is, en dat is de eigen feed. De
   // cirkel toont berichten van ANDEREN, opgehaald van hun servers -- daar is
-  // "het hele stuk" niet iets wat wij in handen hebben. Dus daar geen knop:
-  // een knop die niets doet is erger dan een knop die er niet is.
-  var _leesbaar = _bc.indexOf('on-cirkel') < 0;
+  // "het hele stuk" niet iets wat wij in handen hebben.
+  //
+  // De knop verdween daar eerst helemaal, met het argument dat een knop die
+  // niets doet erger is dan geen knop. In de praktijk pakte dat andersom uit:
+  // de pil werd smaller op de cirkel en breder op solo, en die sprong leest als
+  // "er is hier iets weg" -- terwijl juist NIET duidelijk werd dat Lezen
+  // bestaat en hier alleen niet kan. Hij staat er nu dood bij: zichtbaar, grijs
+  // en niet aan te klikken. Dan is er maar een mogelijkheid, Grid, en je ziet
+  // meteen dat dat geen toeval is maar de enige.
+  var _leesUit = _bc.indexOf('on-cirkel') >= 0;
+  var _gridStandaard = (typeof site !== 'undefined' && site && site.feed_view_default === 'grid');
 %>
 <div class="view-switcher-wrap">
@@ -40,5 +48,5 @@
     <% } %>
     <div class="view-switcher" role="tablist" aria-label="Weergave">
-      <% if (_leesbaar) { %>
+
       <%# Lezen is de standaardweergave sinds Tijdlijn weg is: hele berichten,
           één per scherm. De chronologische lijst bestaat nog wel als opmaak
@@ -46,11 +54,11 @@
           meer -- daar was Lezen de betere vorm van. %>
       <button type="button" class="view-switch-btn" data-view="reader" role="tab"
-              aria-selected="<%= (!_neutral && !(typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
+              <%- _leesUit ? 'disabled aria-disabled="true" tabindex="-1" title="' + t('switch.reader_solo_only') + '"' : '' %>
+              aria-selected="<%= (!_leesUit && !_neutral && !_gridStandaard) ? 'true' : 'false' %>">
         <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
         <span><%= t('switch.reader') %></span>
       </button>
-      <% } %>
       <button type="button" class="view-switch-btn" data-view="grid" role="tab"
-              aria-selected="<%= (!_neutral && (typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
+              aria-selected="<%= (!_neutral && (_leesUit || _gridStandaard)) ? 'true' : 'false' %>">
         <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
         <span><%= t('switch.grid') %></span>
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 70dbef43beafe898ca5760598d85495b3f1fb3a2)
+++ src/views/shell.ejs	(revision 3a3a88292d6219f0e396972813875179f0cfba37)
@@ -548,12 +548,15 @@
   var body = document.body;
 
-  // DE CIRKEL HEEFT EEN EIGEN KEUZE, met een eigen standaard: Grid.
+  // DE CIRKEL HEEFT MAAR EEN WEERGAVE: Grid.
   //
-  // Twee redenen om die apart te houden van de gewone voorkeur. Ten eerste is
-  // Lezen daar geen optie (dat zijn berichten van anderen, van hun servers), dus
-  // "reader" betekent er iets anders dan hier: de gewone lijst. Ten tweede zou
-  // een tuimeling op de cirkel anders je SOLO-weergave veranderen -- je zet daar
-  // Grid uit en komt thuis in een andere feed terug dan je achterliet.
-  var CIRKEL_SLEUTEL = 'pcms-cirkel-view';
+  // Lezen is daar geen optie -- dat zijn berichten van ANDEREN, van hun servers,
+  // en "het hele stuk" hebben wij daar niet in handen. De knop staat er wel,
+  // maar dood (zie view-switcher.ejs). Er valt dus niets te kiezen en dus ook
+  // niets te onthouden: de eigen cirkel-voorkeur die hier stond
+  // ('pcms-cirkel-view') is vervallen, want hij kon nog maar een waarde hebben.
+  //
+  // Wat WEL blijft: de cirkel raakt je solo-keuze niet aan. Die staat in
+  // 'pcms-feed-view' en wordt hier nergens geschreven, zodat je thuiskomt in de
+  // weergave die je achterliet.
   function opCirkel() { return body.classList.contains('on-cirkel'); }
 
@@ -562,6 +565,5 @@
     try {
       if (opCirkel()) {
-        // Alles behalve een uitdrukkelijke 'list' is grid: dat is de standaard.
-        body.dataset.feedView = (localStorage.getItem(CIRKEL_SLEUTEL) === 'list') ? 'reader' : 'grid';
+        body.dataset.feedView = 'grid';   // de enige mogelijkheid daar
         return;
       }
@@ -588,15 +590,15 @@
     var _feedC = ['on-home','on-tag','on-type','on-user','on-cirkel'];
     var _onFeed = _feedC.some(function(c){ return body.classList.contains(c); });
-    // Een weergave die op DEZE pagina niet bestaat, kan ook niet actief zijn.
-    // Lezen ontbreekt in de cirkel (daar staan berichten van anderen), en wie
-    // op de eigen feed Lezen koos houdt die voorkeur in localStorage. Zonder
-    // terugval staat de hele pil dan grijs terwijl de tijdlijn gewoon te zien
-    // is -- de lezer ziet nergens meer waar hij is. De VOORKEUR blijft staan:
-    // terug op de eigen feed is Lezen weer actief.
+    // Een weergave die op DEZE pagina niet KAN, kan ook niet actief zijn. In de
+    // cirkel staat Lezen er wel maar uitgeschakeld; pasWeergaveToe() heeft
+    // feedView daar al op 'grid' gezet, dus de terugval hieronder vuurt er niet.
+    // Hij blijft staan voor het geval een pagina een knop mist: zonder terugval
+    // staat de hele pil grijs terwijl er wel degelijk iets te zien is, en dan
+    // ziet de lezer nergens meer waar hij is. De solo-VOORKEUR blijft intact.
     var _view = String(body.dataset.feedView || 'reader');
     if (!/^[a-z]+$/.test(_view)) _view = 'reader';
     if (!document.querySelector('.view-switch-btn[data-view="' + _view + '"]')) _view = 'reader';
     document.querySelectorAll('.view-switch-btn').forEach(function(b) {
-      b.setAttribute('aria-selected', (_onFeed && b.dataset.view === _view) ? 'true' : 'false');
+      b.setAttribute('aria-selected', (_onFeed && !b.disabled && b.dataset.view === _view) ? 'true' : 'false');
     });
     document.querySelectorAll('.grid-cols-btn').forEach(function(b) {
@@ -635,20 +637,15 @@
     var sw = e.target.closest('.view-switch-btn');
     if (sw) {
+      // Een dode knop doet niets. Een <button disabled> vuurt in de meeste
+      // browsers geen click, maar deze listener hangt op document en vangt ook
+      // wat er langs de randen komt -- dus expliciet, niet op goed vertrouwen.
+      if (sw.disabled) return;
       var view = sw.dataset.view;
-      // EEN KEUZE MOET TERUG KUNNEN. Op de cirkel is Grid de enige knop (Lezen
-      // bestaat daar niet, want dat zijn berichten van anderen), en een knop die
-      // al actief is doet normaal niets -- dan zit je in Grid zonder weg terug.
-      // Is dit de enige knop op deze pagina en staat hij al aan, dan brengt hij
-      // je terug naar de standaard, en dat is daar de gewone lijst.
-      if (document.querySelectorAll('.view-switch-btn').length === 1
-          && sw.getAttribute('aria-selected') === 'true') {
-        view = 'reader';
-      }
       body.dataset.feedView = view;
-      // Op de cirkel onthouden we los, want daar betekent 'reader' de gewone
-      // lijst en hoort het je thuisweergave niet aan te raken.
+      // Op de cirkel schrijven we NIETS. Daar is Grid de enige mogelijkheid, dus
+      // er valt niets te onthouden -- en je solo-keuze mag er zeker niet door
+      // veranderen: die moet je terugvinden zoals je hem achterliet.
       try {
-        if (opCirkel()) localStorage.setItem(CIRKEL_SLEUTEL, view === 'grid' ? 'grid' : 'list');
-        else localStorage.setItem('pcms-feed-view', view);
+        if (!opCirkel()) localStorage.setItem('pcms-feed-view', view);
       } catch(_) {}
       syncAria();
