// App — assembles the full single-page site + scroll reveal function App() { const { Header, Hero, SignatureDishes, SpiceGuide, Menu, Reviews, About, HoursLocation, Footer, MobileCallBar } = window; React.useEffect(() => { const els = document.querySelectorAll('[data-reveal]'); const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.setAttribute('data-shown', ''); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }); els.forEach((el) => io.observe(el)); return () => io.disconnect(); }, []); return (