// App — wires everything together const App = () => { const defaults = JSON.parse(document.getElementById('tweak-defaults').textContent.replace(/\/\*EDITMODE-(BEGIN|END)\*\//g, '')); const [tweaks, setTweaks] = useState(defaults); const [tweaksActive, setTweaksActive] = useState(false); const [bookingOpen, setBookingOpen] = useState(false); const [bookingPrefill, setBookingPrefill] = useState('single'); const [showStickyBar, setShowStickyBar] = useState(false); const [activeSection, setActiveSection] = useState(''); const openBooking = (service = 'masazas60') => { setBookingPrefill(service); setBookingOpen(true); }; useEffect(() => { const onScroll = () => { const y = window.scrollY; setShowStickyBar(y > 900 && tweaks.showStickyBookBar && !bookingOpen); const sections = ['about','method','process','results','pricing','faq']; let current = ''; for (const id of sections) { const el = document.getElementById(id); if (el && el.offsetTop - 120 <= y) current = id; } setActiveSection(current); }; window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, [tweaks.showStickyBookBar, bookingOpen]); useEffect(() => { const listener = (e) => { if (e.data?.type === '__activate_edit_mode') setTweaksActive(true); if (e.data?.type === '__deactivate_edit_mode') setTweaksActive(false); }; window.addEventListener('message', listener); window.parent.postMessage({ type: '__edit_mode_available' }, '*'); return () => window.removeEventListener('message', listener); }, []); return ( <> {tweaks.showPromoBanner && }