// Blink Experience — main app
const { useState: useS, useEffect: useE, useCallback: useCB } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "#faed21",
"density": "regular",
"scrollMarquee": true
}/*EDITMODE-END*/;
function App() {
const [route, setRoute] = useS({ page: "home" });
const [locale, setLocale] = useS("en");
const [briefOpen, setBriefOpen] = useS(false);
const [briefCategory, setBriefCategory] = useS(null);
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// expose go() globally so deep links from inline content work
useE(() => {
window.go = (r) => { setRoute(r); window.scrollTo({ top: 0, behavior: "instant" }); };
window.openBrief = (cat) => { setBriefCategory(cat || null); setBriefOpen(true); };
}, []);
// RTL toggle
useE(() => {
const html = document.documentElement;
if (locale === "ar") { html.setAttribute("dir", "rtl"); html.setAttribute("lang", "ar"); }
else { html.setAttribute("dir", "ltr"); html.setAttribute("lang", "en"); }
}, [locale]);
// Apply tweaks to CSS vars
useE(() => {
document.documentElement.style.setProperty("--accent", t.accent);
// pick contrast — light accents get black text, dark accents get white
const dark = ["#0a0a0c", "#16161a"].includes((t.accent || "").toLowerCase());
document.documentElement.style.setProperty("--accent-ink", dark ? "#f6f5ef" : "#0a0a0c");
document.documentElement.style.setProperty("--focus", t.accent);
if (t.density === "compact") document.documentElement.style.setProperty("--pad", "clamp(16px, 3vw, 36px)");
else if (t.density === "comfy") document.documentElement.style.setProperty("--pad", "clamp(24px, 5vw, 72px)");
else document.documentElement.style.setProperty("--pad", "clamp(20px, 4vw, 56px)");
}, [t.accent, t.density]);
const go = useCB((r) => { setRoute(r); window.scrollTo({ top: 0, behavior: "instant" }); }, []);
const page = (() => {
switch (route.page) {
case "home": return