diff --git a/static/ambient/index.html b/static/ambient/index.html
index 1aa359b..a15cc00 100644
--- a/static/ambient/index.html
+++ b/static/ambient/index.html
@@ -21,7 +21,7 @@
.noise .m-music, .noise .meters { display:none !important; }
html:not(.noise) .m-noise { display:none; }
.noise:not(.rev) .m-hall { display:none; }
- main > * { pointer-events:auto; width:100%; max-width:900px; margin-inline:auto; } /* auf breiten Fenstern zentriert statt über die ganze Breite */
+ main > * { pointer-events:auto; width:100%; max-width:960px; margin-inline:auto; } /* auf breiten Fenstern zentriert statt über die ganze Breite */
h1 { margin:0; font-weight:300; letter-spacing:.35em; text-transform:uppercase; font-size:18px; }
.sub { color:var(--dim); font-size:13px; margin-top:4px; }
.state { font-size:13px; color:var(--dim); font-variant-numeric:tabular-nums; }
diff --git a/static/js/app.js b/static/js/app.js
index c0e06b5..c942dc8 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -1272,6 +1272,10 @@ function _ambientSize() {
f.style.height = Math.max(320, Math.floor(window.innerHeight - top - bar)) + 'px';
}
window.addEventListener('resize', () => requestAnimationFrame(_ambientSize));
+// The bar at the bottom grows or shrinks (the player appears, a second line …): its height
+// comes as --nui-dock-h / --dpw-bar-h on , set inline — measure again then.
+new MutationObserver(() => requestAnimationFrame(_ambientSize))
+ .observe(document.documentElement, {attributes: true, attributeFilter: ['style']});
// A command for Drift ('start' | 'stop'): the app's notification, the sleep timer.
window.__dioraAmbientCmd = function (cmd, value) {
diff --git a/static/js/sw.js b/static/js/sw.js
index 8c43d6f..72a343d 100644
--- a/static/js/sw.js
+++ b/static/js/sw.js
@@ -2,7 +2,7 @@
* diora service worker — caches the app shell for offline use.
*/
-const CACHE = 'diora-v77';
+const CACHE = 'diora-v78';
const SHELL = [
'/static/css/app.css',
'/static/js/app.js',