diff --git a/web/chat.html b/web/chat.html
index 0285ab6..7cb772b 100644
--- a/web/chat.html
+++ b/web/chat.html
@@ -1652,9 +1652,9 @@ logLine('sys', 'chat content lives in encrypted SRTP audio. no IP packets carry
})();
diff --git a/web/host-your-own.html b/web/host-your-own.html
index 13b0cc3..5cd5496 100644
--- a/web/host-your-own.html
+++ b/web/host-your-own.html
@@ -440,9 +440,9 @@ handle /zebra-spaces-sfu* { reverse_proxy localhost:8092 { flush_interval -1
diff --git a/web/how-it-works.html b/web/how-it-works.html
index aa5d50b..5cd4aaa 100644
--- a/web/how-it-works.html
+++ b/web/how-it-works.html
@@ -274,9 +274,9 @@
diff --git a/web/zebra-audio.html b/web/zebra-audio.html
index a4f2c0e..212784c 100644
--- a/web/zebra-audio.html
+++ b/web/zebra-audio.html
@@ -659,9 +659,9 @@ else wirePuppet();
diff --git a/web/zebra-spaces.html b/web/zebra-spaces.html
index eb5d5da..e3bff2b 100644
--- a/web/zebra-spaces.html
+++ b/web/zebra-spaces.html
@@ -623,14 +623,31 @@ function renderScreenTile(pubHex, stream, opts){
if (!entry){
const tile = document.createElement('div'); tile.className = 'screen-tile';
const video = document.createElement('video');
- /* local preview must be muted — playing back our own captured audio
- * would feed back through the mic */
- video.autoplay = true; video.playsInline = true; video.muted = local;
+ /* mobile autoplay policy refuses an unmuted