diff --git a/apps/web/components/hero-video.tsx b/apps/web/components/hero-video.tsx index 2621aab..8649050 100644 --- a/apps/web/components/hero-video.tsx +++ b/apps/web/components/hero-video.tsx @@ -1,39 +1,81 @@ 'use client'; -import { Volume2, VolumeX } from 'lucide-react'; -import { useCallback, useRef, useState } from 'react'; +import { Play, Volume2, VolumeX } from 'lucide-react'; +import { useCallback, useEffect, useRef, useState } from 'react'; /** - * Hero video player with a frosted-glass mute toggle. + * Hero video player with two controls: * - * Why not the native `controls` attribute: it pulls in a chrome bar that - * fights the section's design vocabulary. We need exactly one control — - * mute / unmute — so we render just that, styled to match the rest of - * the brand (frosted indigo-bordered pill, bottom-right of the video). + * 1. Big PLAY overlay shown while the video is paused. Browsers + * block autoplay for users with `prefers-reduced-motion`, on data + * saver, or with strict autoplay policies — so the poster sits + * there forever and the visitor thinks the page is broken. The + * overlay gives them an explicit, unmissable affordance to start + * it. We also wire `onClick` on the + {/* Centre PLAY button — shown only while paused. Covers the + whole video so clicking anywhere starts playback; the inner + circle is the visual affordance. */} + {!playing && ( + + )} + + {/* Mute toggle — always visible, top of z-stack so it stays + clickable even when the play overlay is up. */}