// cinematic-hero.jsx — Floema-inspired fullscreen editorial hero function CinematicHero() { const heroRef = React.useRef(null); React.useEffect(() => { if (typeof gsap === 'undefined') return; const ctx = gsap.context(() => { // Image: slow cinematic zoom-out from slightly enlarged gsap.fromTo('.ch-img', { scale: 1.07 }, { scale: 1, duration: 2.8, ease: 'power2.out' } ); // Main text — staggered upward reveal gsap.fromTo('.ch-anim', { autoAlpha: 0, y: 36 }, { autoAlpha: 1, y: 0, duration: 1.4, stagger: 0.16, ease: 'power4.out', delay: 0.6 } ); // Bottom bar gsap.fromTo('.ch-bottom-bar > *', { autoAlpha: 0 }, { autoAlpha: 1, duration: 1.2, stagger: 0.1, ease: 'power2.out', delay: 1.2 } ); }, heroRef); return () => ctx.revert(); }, []); return (
{/* Full-bleed image */}
{/* Layered overlays for depth */}
{/* Cinematic grain */}
); } Object.assign(window, { CinematicHero });