// Milfers · App root — scroll reveal observer function App() { React.useEffect(() => { const obs = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('is-in'); }); }, { threshold: 0.15, rootMargin: '0px 0px -50px 0px' }); document.querySelectorAll('.reveal').forEach(el => obs.observe(el)); return () => obs.disconnect(); }, []); return ( <>
{/* ticker traducido por idioma (sin tildes — tipografía display) */}