diff --git a/server/player/index.html b/server/player/index.html index afc3652..6da4291 100644 --- a/server/player/index.html +++ b/server/player/index.html @@ -34,11 +34,17 @@ /* Player */ #playerContainer { position: fixed; inset: 0; background: #000; } - /* Fullscreen single-zone playback: YouTube's IFrame API replaces our placeholder - with an iframe whose width/height attributes don't always survive layout. Pin - any direct iframe child to the container so YT/widget embeds fill the screen. */ + /* Fullscreen single-zone playback: YouTube's IFrame API measures the placeholder + at construction time. If that happens before layout settles, YT bakes in a + 300x150 fallback as inline pixel dimensions on the iframe, which our %-based + rules can't override. Force fullscreen via absolute positioning + !important. */ #playerContainer > iframe, - #playerContainer > div > iframe { width: 100%; height: 100%; border: none; display: block; } + #playerContainer > div > iframe { + position: absolute !important; + top: 0 !important; left: 0 !important; + width: 100% !important; height: 100% !important; + border: none !important; display: block !important; + } .zone { position: absolute; overflow: hidden; } .zone video { width: 100%; height: 100%; object-fit: cover; } .zone img { width: 100%; height: 100%; object-fit: cover; } diff --git a/server/player/sw.js b/server/player/sw.js index 4413a0a..ef51f89 100644 --- a/server/player/sw.js +++ b/server/player/sw.js @@ -1,4 +1,4 @@ -const CACHE_NAME = 'rd-player-v5'; +const CACHE_NAME = 'rd-player-v6'; // Install: skip waiting to activate immediately self.addEventListener('install', (event) => {