// app.jsx — main App composes everything + tweaks panel const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "heroVariant": "console", "plansVariant": "cards", "palette": "cyan", "showTicker": true, "showAttackMap": true }/*EDITMODE-END*/; const PALETTES = { cyan: { primary: '#1E9CFF', primary2: '#57b9ff', glow: 'rgba(30, 156, 255, 0.45)', name: 'Cyan · plataforma' }, threat: { primary: '#ff4d4d', primary2: '#ff7a7a', glow: 'rgba(255, 77, 77, 0.45)', name: 'Threat red' }, emerald: { primary: '#22e7a3', primary2: '#5ff0bf', glow: 'rgba(34, 231, 163, 0.45)', name: 'Emerald · ok' }, violet: { primary: '#8b7bff', primary2: '#ada0ff', glow: 'rgba(139, 123, 255, 0.45)', name: 'Violet · ops' }, }; function Nav() { const [open, setOpen] = React.useState(false); React.useEffect(() => { document.body.style.overflow = open ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [open]); const close = () => setOpen(false); return ( ); } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // Apply palette by setting CSS custom properties on :root React.useEffect(() => { const p = PALETTES[t.palette] || PALETTES.cyan; const root = document.documentElement; root.style.setProperty('--primary', p.primary); root.style.setProperty('--primary-2', p.primary2); root.style.setProperty('--primary-glow', p.glow); }, [t.palette]); return ( <>