// Main app — composes sections, manages tweaks (dark mode, palette, density).

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "dark": false,
  "palette": "gold",
  "density": "spacious"
}/*EDITMODE-END*/;

function App() {
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);

  // Apply mode to <html> so CSS variables flip
  useEffect(() => {
    const root = document.documentElement;
    root.setAttribute('data-dark', t.dark ? 'true' : 'false');
    root.setAttribute('data-palette', t.palette);
    root.setAttribute('data-density', t.density);
  }, [t.dark, t.palette, t.density]);

  // Trigger reveal animations on scroll
  useReveal();

  // Smooth in-page anchor scrolling
  useEffect(() => {
    const handler = (e) => {
      const a = e.target.closest('a');
      if (!a) return;
      const href = a.getAttribute('href');
      if (!href || !href.startsWith('#') || href.length < 2) return;
      const el = document.getElementById(href.slice(1));
      if (el) {
        e.preventDefault();
        window.scrollTo({ top: el.getBoundingClientRect().top + window.pageYOffset - 60, behavior: 'smooth' });
      }
    };
    document.addEventListener('click', handler);
    return () => document.removeEventListener('click', handler);
  }, []);

  return (
    <>
      <Nav dark={t.dark} onToggleDark={() => setTweak('dark', !t.dark)} />
      <main>
        <Hero />
        <Problem />
        <HowItWorks />
        <PatientView />
        <ROI />
        <Features />
        <Trust />
        <Pricing />
        <FinalCTA />
      </main>
      <Footer />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Theme" />
        <TweakToggle
          label="Dark mode"
          value={t.dark}
          onChange={(v) => setTweak('dark', v)}
        />
        <TweakRadio
          label="Density"
          value={t.density}
          options={['compact', 'regular', 'spacious']}
          onChange={(v) => setTweak('density', v)}
        />
        <TweakSection label="Palette" />
        <TweakSelect
          label="Warm tone"
          value={t.palette}
          options={[
            { value: 'gold', label: 'Gold (default)' },
            { value: 'copper', label: 'Copper' },
            { value: 'coral', label: 'Coral' },
            { value: 'amber', label: 'Amber' },
          ]}
          onChange={(v) => setTweak('palette', v)}
        />
      </TweaksPanel>
    </>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
