// Main app — route state, Tweaks context, page wiring
const TweaksCtx = createContext({});
window.TweaksCtx = TweaksCtx;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"hero": "editorial",
"theme": "light",
"lang": "EN",
"showFab": true,
"accentMode": "bronze",
"displayFont": "Cormorant Garamond",
"bodyFont": "Inter"
}/*EDITMODE-END*/;
function App() {
const [route, setRoute] = useState({ page: 'home' });
const [tweaks, setTweaks] = useState(TWEAK_DEFAULTS);
const setTweak = (patch) => {
const next = typeof patch === 'function' ? patch(tweaks) : { ...tweaks, ...patch };
setTweaks(next);
window.parent.postMessage({ type: '__edit_mode_set_keys', edits: next }, '*');
};
const go = useCallback((next) => {
setRoute(next);
window.scrollTo({ top: 0, behavior: 'auto' });
}, []);
// Apply theme + dir
useEffect(() => {
document.documentElement.className = tweaks.theme === 'dark' ? 'theme-dark' : '';
document.documentElement.dir = tweaks.lang === 'AR' ? 'rtl' : 'ltr';
document.documentElement.lang = tweaks.lang.toLowerCase();
}, [tweaks.theme, tweaks.lang]);
// Apply accent palette
useEffect(() => {
const root = document.documentElement;
if (tweaks.accentMode === 'navy') {
root.style.setProperty('--bronze', '#3D6B8E');
root.style.setProperty('--bronze-deep', '#1E3A5F');
root.style.setProperty('--bronze-tint', '#EDF2F7');
} else if (tweaks.accentMode === 'sage') {
root.style.setProperty('--bronze', '#7A8B6F');
root.style.setProperty('--bronze-deep', '#4F5E47');
root.style.setProperty('--bronze-tint', '#EFF1EC');
} else {
root.style.setProperty('--bronze', '#B79360');
root.style.setProperty('--bronze-deep', '#8D6E40');
root.style.setProperty('--bronze-tint', '#F5EFE3');
}
}, [tweaks.accentMode]);
// Apply font choices
useEffect(() => {
document.documentElement.style.setProperty('--font-display', `"${tweaks.displayFont}", "Times New Roman", serif`);
document.documentElement.style.setProperty('--font-body', `"${tweaks.bodyFont}", -apple-system, BlinkMacSystemFont, sans-serif`);
}, [tweaks.displayFont, tweaks.bodyFont]);
const ctxValue = { ...tweaks, set: setTweak, hero: tweaks.hero, lang: tweaks.lang };
let page = null;
switch (route.page) {
case 'home': page =