/* global React, ReactDOM */ function App() { // global reveal observer useReveal(); // Single source of truth for tweaks const [t, setTweak] = useTweaks(window.TWEAK_DEFAULTS || { fontPair: 'editorial', accent: '#7D78A3', accent2: '#A29CBB', accent3: '#F1B2AC', tone: 'lavanda', }); // Apply theme CSS variables whenever tweaks change React.useEffect(() => { applyTheme(t); }, [t.fontPair, t.accent, t.accent2, t.accent3, t.tone]); const [showToast, setShowToast] = React.useState(true); React.useEffect(() => { const timer = setTimeout(() => setShowToast(false), 8000); return () => clearTimeout(timer); }, []); return (