/* App — lean conversion path: Hero → trust → how it works → why us → carriers → pricing → faq → cta */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "lang": "ar", "accent": "brand", "density": "comfortable" }/*EDITMODE-END*/; const ACCENTS = { brand: { '--primary': '#2b68de', '--primary-strong': '#333062', '--lamha-500': '#2b68de', '--lamha-400': '#31d5e1' }, navy: { '--primary': '#333062', '--primary-strong': '#252350', '--lamha-500': '#333062', '--lamha-400': '#2b68de' }, aqua: { '--primary': '#1a94a8', '--primary-strong': '#2b68de', '--lamha-500': '#1a94a8', '--lamha-400': '#31d5e1' }, }; function App() { const tweaks = window.useTweaks ? window.useTweaks(TWEAK_DEFAULTS) : [TWEAK_DEFAULTS, () => {}, false]; const [tw, setTweak, isTweaking] = tweaks; const lang = tw.lang || 'ar'; const dir = lang === 'ar' ? 'rtl' : 'ltr'; const t = window.I18N_STRINGS[lang]; React.useEffect(() => { document.documentElement.lang = lang; document.documentElement.dir = dir; document.body.setAttribute('data-lang', lang); }, [lang, dir]); React.useEffect(() => { const palette = ACCENTS[tw.accent] || ACCENTS.brand; Object.entries(palette).forEach(([k, v]) => document.documentElement.style.setProperty(k, v)); }, [tw.accent]); React.useEffect(() => { document.documentElement.style.setProperty('--container', tw.density === 'compact' ? '1180px' : '1320px'); }, [tw.density]); React.useEffect(() => { document.body.classList.toggle('is-tweaking', !!isTweaking); }, [isTweaking]); // Reveal once and latch — never re-hide on scroll-out. A timeout safety net // force-shows every element if IntersectionObserver never delivers (some // embedded/sandboxed webviews never fire IO callbacks), so content can // never render permanently blank. React.useEffect(() => { const els = document.querySelectorAll('.reveal, .reveal-stagger'); const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (!e.isIntersecting) return; e.target.classList.add('is-in'); io.unobserve(e.target); }); }, { threshold: 0.08, rootMargin: '0px 0px -6% 0px' }); els.forEach((el) => io.observe(el)); const fallback = setTimeout(() => { els.forEach((el) => el.classList.add('is-in', 'reveal-shown')); }, 1200); return () => { io.disconnect(); clearTimeout(fallback); }; }); const setLang = (l) => setTweak('lang', l); return ( <>