Index: src/assets/js/audio-player.js
===================================================================
--- src/assets/js/audio-player.js	(revision 942028f9b430046c81feaea51547fb055a973d29)
+++ src/assets/js/audio-player.js	(revision 2b52bfb9a70d7d71bdf403ce2c00440cea3bae06)
@@ -496,10 +496,20 @@
   // 7. Sheet expand/close + drag-down-to-close
   // ============================================================
+  // Back-knop sluit de sheet op mobiel: bij openen pushen we een history-entry,
+  // zodat de telefoon-terugknop (popstate) eerst de sheet sluit i.p.v. de pagina
+  // te verlaten. We balanceren 'm bij een UI-sluiting via history.back().
+  let sheetHistoryPushed = false;
+
   function openSheet() {
+    if (sheet.classList.contains('is-open')) return;
     sheet.classList.add('is-open');
     sheet.setAttribute('aria-hidden', 'false');
     document.body.classList.add('audio-sheet-locked');
-  }
-  function closeSheet() {
+    if (isMobileView()) {
+      try { history.pushState({ pcmsSheet: true }, ''); sheetHistoryPushed = true; } catch (e) {}
+    }
+  }
+  function closeSheet(fromPopstate) {
+    if (!sheet.classList.contains('is-open')) return;
     sheet.classList.remove('is-open');
     sheet.setAttribute('aria-hidden', 'true');
@@ -507,8 +517,17 @@
     sheetPanel.style.removeProperty('--pcms-drag-y');
     sheetBackdrop.style.removeProperty('--pcms-sheet-progress');
-  }
+    // UI-sluiting (X / swipe / backdrop / Esc): pop onze eigen history-entry zodat
+    // de volgende terug-knop weer normaal navigeert. Bij een popstate-sluiting
+    // (de terug-knop zelf) is de entry al gepopt.
+    const wasPushed = sheetHistoryPushed;
+    sheetHistoryPushed = false;
+    if (wasPushed && !fromPopstate) { try { history.back(); } catch (e) {} }
+  }
+  window.addEventListener('popstate', () => {
+    if (sheet.classList.contains('is-open')) closeSheet(true);
+  });
   expandTrigger.addEventListener('click', openSheet);
-  sheetClose.addEventListener('click', closeSheet);
-  sheetBackdrop.addEventListener('click', closeSheet);
+  sheetClose.addEventListener('click', () => closeSheet());
+  sheetBackdrop.addEventListener('click', () => closeSheet());
   document.addEventListener('keydown', (e) => {
     if (e.key === 'Escape' && sheet.classList.contains('is-open')) closeSheet();
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 942028f9b430046c81feaea51547fb055a973d29)
+++ src/views/shell.ejs	(revision 2b52bfb9a70d7d71bdf403ce2c00440cea3bae06)
@@ -277,5 +277,5 @@
      ?v=N — cache-buster: bump bij elke audio-player.js wijziging zodat
      Cloudflare (max-age=1y) niet de oude versie blijft serveren. -->
-<script src="/assets/js/audio-player.js?v=7"></script>
+<script src="/assets/js/audio-player.js?v=8"></script>
 <% if (site && site.enable_audio_player && audioTracks && audioTracks.length > 0) { %>
   <script>window.PCMS_SITE_TRACKS = <%- JSON.stringify(audioTracks) %>;</script>
