Index: src/assets/css/style.css
===================================================================
--- src/assets/css/style.css	(revision cd7d7d8c28728e9fc90c055e97ea1712b9aa8526)
+++ src/assets/css/style.css	(revision 9a22776edd793fd25b143973a722da5f5b5dfaab)
@@ -2548,18 +2548,4 @@
        2rem naar 4rem, dus deze ook. */
     scroll-margin-top: 4rem;
-    /* NOOIT OVER EEN GRENS HEEN VLIEGEN. Dit is de regel van 24-8 -- "ook al
-       zou het target voorbijgescrolld worden, alsnog op het target landen" --
-       maar dan als eigenschap in plaats van als JavaScript: de browser mag een
-       uitloop niet over dit snappunt heen laten gaan, hoe hard je ook veegt.
-       Een veeg komt daarmee altijd precies EEN bericht verder, nooit twee.
-       Dat overvliegen was de reden om Lenis op mobiel erbij te halen, en deze
-       eigenschap is toen nooit geprobeerd: hij stond op `normal`, en dan ook
-       nog op .read-post hierboven -- een element dat door scroll-snap-align:
-       none helemaal geen snappunt is, dus daar deed hij sowieso niets.
-       Zonder native snappen (de gewone stand op mobiel, en op desktop waar
-       Lenis het overneemt) verandert deze regel niets: er valt dan niets te
-       stoppen. Hij telt alleen mee tijdens de proef, zie nativeSnap() in
-       mod/read.js. */
-    scroll-snap-stop: always;
 }
 /* HET LAATSTE BERICHT SNAPT OOK (Robin, 20-8). Dat kon eerst niet: zijn
Index: src/assets/js/mod/read.js
===================================================================
--- src/assets/js/mod/read.js	(revision cd7d7d8c28728e9fc90c055e97ea1712b9aa8526)
+++ src/assets/js/mod/read.js	(revision 9a22776edd793fd25b143973a722da5f5b5dfaab)
@@ -252,39 +252,4 @@
 const RUST_MS = 120;
 
-/**
- * DE PROEF: op mobiel het NATIVE snappen terug (24-8).
- *
- * De vraag die deze vlag beantwoordt is er precies een: houdt de browser zich
- * aan `scroll-snap-stop: always`? Die eigenschap zegt dat een uitloop nooit
- * over een snappunt heen mag vliegen -- en dat is woord voor woord Robins regel
- * ("ook al zou het target voorbijgescrolld worden, alsnog op het target
- * landen"), maar dan uitgevoerd door het toestel met zijn eigen momentumcurve
- * in plaats van door onze nabootsing ervan in JavaScript.
- *
- * Dat overvliegen was destijds de reden om Lenis er op mobiel bij te halen. De
- * eigenschap is toen nooit geprobeerd: hij stond op `normal`, en dan ook nog op
- * .read-post -- een element dat door scroll-snap-align:none helemaal geen
- * snappunt is. Het ankertje dat het snappunt WEL is had hem niet.
- *
- * ACHTER EEN VLAG, want de Lenis-kant blijft staan tot deze proef gewonnen is.
- * Wint hij, dan kan Lenis van de telefoon af en verdwijnen daarmee ook de vier
- * routes waarlangs de native scroll het gebaar nu soms overneemt. Verliest hij,
- * dan hebben we dat geweten voordat er iets weg was.
- *
- * ?nativesnap=1 zet hem aan, ?nativesnap=0 weer uit. De keuze blijft staan
- * zolang het tabblad open is, want een htmx-navigatie gooit de queryreeks weg
- * en dan zou de proef na een klik voorbij zijn.
- */
-function nativeSnap() {
-  try {
-    const q = new URLSearchParams(location.search).get('nativesnap');
-    if (q === '1') sessionStorage.setItem('klonkt:native-snap', '1');
-    if (q === '0') sessionStorage.removeItem('klonkt:native-snap');
-    return sessionStorage.getItem('klonkt:native-snap') === '1';
-  } catch (e) {
-    return false;   // privémodus zonder opslag: gewoon de gewone weg
-  }
-}
-
 let bezig = false;          // loopt er een gebaar of een uitloop?
 let ooitGescrold = false;   // snappen begint UIT, zie zetSnappen()
@@ -340,7 +305,4 @@
   // zijn snap heeft zijn scroll-gebeurtenissen nodig om te kunnen timen.
   if (lenis || !(OP_DESKTOP.matches || OP_TOUCH.matches)) return;
-  // Staat de proef aan, dan blijft Lenis van de telefoon af en doet de browser
-  // het snappen zelf. Desktop merkt hier niets van: daar is OP_TOUCH onwaar.
-  if (OP_TOUCH.matches && nativeSnap()) return;
   const [L, S] = await Promise.all([
     import(`/assets/vendor/lenis.mjs?v=${VENDOR_V}`),
@@ -581,11 +543,5 @@
   // eerste gebaar naar beneden zet hem aan.
   const el = document.documentElement;
-  // EXPLICIET 'y proximity', geen lege waarde. Leeg betekent "val terug op de
-  // stylesheet", en die zet het snappen op mobiel juist UIT (de mediaquery bij
-  // .read-post, want twee snapsystemen op dezelfde scroller vechten). Zolang
-  // Lenis daar draaide klopte dat; zonder Lenis zou het snappen dan nooit meer
-  // aangaan en zou de proef niets kunnen bewijzen.
-  // Op desktop verandert er niets: dit is exact wat de stylesheet daar geeft.
-  const wil = aan ? 'y proximity' : 'none';
+  const wil = aan ? '' : 'none';
   if (el.style.scrollSnapType !== wil) el.style.scrollSnapType = wil;
 }
@@ -643,14 +599,4 @@
   document.querySelectorAll('[data-lenis-prevent].read-post')
     .forEach((a) => a.removeAttribute('data-lenis-prevent'));
-
-  // DE VLAG WORDT HIER GELEZEN, op elke pagina en in elke weergave, en niet pas
-  // in startLenis(). Anders zit er een val in: land je in Grid, dan draait
-  // startLenis() helemaal niet, wordt ?nativesnap=1 nergens opgeschreven, en is
-  // de queryreeks weg zodra je op Lezen tikt. De proef gaat dan stilzwijgend
-  // niet door en je beoordeelt Lenis terwijl je denkt dat je de browser
-  // beoordeelt. Gemeten op dev: weergave 'grid', vlag null.
-  // Dit mag boven de terugval hieronder staan omdat de module op elke pagina
-  // draait (data-js is "chrome read tape"), ook waar geen leesstroom is.
-  nativeSnap();
 
   const s = document.getElementById('read-stream');
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision cd7d7d8c28728e9fc90c055e97ea1712b9aa8526)
+++ src/views/shell.ejs	(revision 9a22776edd793fd25b143973a722da5f5b5dfaab)
@@ -222,5 +222,5 @@
 
 <!-- v9 stylesheet (full palette system) -->
-<link rel="stylesheet" href="/assets/css/style.css?v=109">
+<link rel="stylesheet" href="/assets/css/style.css?v=110">
 <script>
 /* iOS safe-area, built by hand. env(safe-area-inset-top) resolves to 0 on this iOS in
@@ -505,5 +505,5 @@
   // Eén nummer voor de hele map. Te vaak bumpen kost één download; te weinig
   // bumpen kost een bugfix die nooit aankomt.
-  var MOD_V = 61;
+  var MOD_V = 62;
 
   // name -> 1 (aan het laden) of de module-namespace (geladen). Een module
