diff --git a/public/videos/smoke-poster.jpg b/public/videos/smoke-poster.jpg index 1f941c8..0d5cf09 100644 Binary files a/public/videos/smoke-poster.jpg and b/public/videos/smoke-poster.jpg differ diff --git a/public/videos/smoke.mp4 b/public/videos/smoke.mp4 index f0cf9e1..1d4efde 100644 Binary files a/public/videos/smoke.mp4 and b/public/videos/smoke.mp4 differ diff --git a/src/components/UserHeader.tsx b/src/components/UserHeader.tsx index 7015601..51e9ac5 100644 --- a/src/components/UserHeader.tsx +++ b/src/components/UserHeader.tsx @@ -139,6 +139,12 @@ export function UserHeader({ user, preferences, onModalStateChange }: UserHeader // Force play background video useEffect(() => { if (videoRef.current) { + // Programmatic attributes for iOS Safari / PWA compatibility + videoRef.current.muted = true; + videoRef.current.defaultMuted = true; + videoRef.current.playsInline = true; + videoRef.current.loop = true; + // If already ready, set loaded immediately if (videoRef.current.readyState >= 3) { setIsVideoLoaded(true); @@ -258,6 +264,8 @@ export function UserHeader({ user, preferences, onModalStateChange }: UserHeader muted playsInline preload="auto" + controls={false} + onContextMenu={(e) => e.preventDefault()} poster="/videos/smoke-poster.jpg" onCanPlayThrough={() => setIsVideoLoaded(true)} className={cn(