Index: src/assets/js/audio-player.js
===================================================================
--- src/assets/js/audio-player.js	(revision 8d43aa10cb5fe28cd9f948d4c43bed2f239153ca)
+++ src/assets/js/audio-player.js	(revision 8ab20b69298b549929cc22114fe7f484a0164bc8)
@@ -337,4 +337,7 @@
     if (s === 1) {
       isPlaying = true; root.classList.add('is-playing'); root.classList.remove('audio-needs-tap');
+      // We startten gedempt (autoplay-policy) → nu 't speelt het geluid terugzetten,
+      // tenzij de gebruiker zelf gedempt heeft.
+      try { if (!audio.muted) { ytPlayer.unMute(); ytPlayer.setVolume(Math.round(audio.volume * 100)); } } catch (e) {}
       mediaRegistry().setActive(registrySelf); startYTTick(); pullYTMeta();
     } else if (s === 2) {
@@ -417,4 +420,7 @@
         if (!p) { onLoadError(new Error('YT API niet beschikbaar'), loadSeq); return; }
         try {
+          // Gedempt starten = autoplay is ALTIJD toegestaan (YouTube blokkeert
+          // anders het geluid). onYTState ontdempt zodra 't echt speelt.
+          if (autoplay) { try { p.mute(); } catch (e) {} }
           if (t.ytList) {
             const idx = t.ytIndex || 0;
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 8d43aa10cb5fe28cd9f948d4c43bed2f239153ca)
+++ src/views/shell.ejs	(revision 8ab20b69298b549929cc22114fe7f484a0164bc8)
@@ -300,5 +300,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=26"></script>
+<script src="/assets/js/audio-player.js?v=27"></script>
 <!-- Eigen custom media-embeds (YouTube/SoundCloud/Spotify) via de echte
      player-API's + gedeelde mutual-exclusion registry met de site-speler. -->
