// Tweaks panel — live design knobs synced to <html data-*> attrs
function Tweaks() {
  const TWEAK_DEFAULS = /*EDITMODE-BEGIN*/{
    "theme": "dark",
    "accent": "navy",
    "density": "default",
    "typeface": "condensed",
    "mapStyle": "blueprint",
    "heroAnim": true
  }/*EDITMODE-END*/;

  const [open, setOpen] = useState(false);
  const [active, setActive] = useState(false);
  const [tweaks, setTweaks] = useState(TWEAK_DEFAULS);

  // Apply tweaks to html
  useEffect(() => {
    const root = document.documentElement;
    root.setAttribute("data-theme", tweaks.theme);
    root.setAttribute("data-accent", tweaks.accent);
    root.setAttribute("data-density", tweaks.density);
    root.setAttribute("data-typeface", tweaks.typeface);
    root.setAttribute("data-map-style", tweaks.mapStyle);
    window.__heroAnim = tweaks.heroAnim;
  }, [tweaks]);

  // Host handshake
  useEffect(() => {
    const onMsg = (e) => {
      if (e.data?.type === "__activate_edit_mode") { setActive(true); setOpen(true); }
      if (e.data?.type === "__deactivate_edit_mode") { setActive(false); setOpen(false); }
    };
    window.addEventListener("message", onMsg);
    window.parent.postMessage({ type: "__edit_mode_available" }, "*");
    return () => window.removeEventListener("message", onMsg);
  }, []);

  const update = (key, value) => {
    setTweaks(prev => {
      const next = { ...prev, [key]: value };
      window.parent.postMessage({ type: "__edit_mode_set_keys", edits: { [key]: value } }, "*");
      return next;
    });
  };

  if (!active) return null;

  const Row = ({ label, val, options, onChange, render }) => (
    <div className="tweak-row">
      <div className="tweak-label">{label}</div>
      <div className="tweak-options">
        {options.map(opt => (
          render ? render(opt, val === opt, () => onChange(opt))
          : <button key={opt} className={"tweak-btn" + (val === opt ? " active" : "")}
              onClick={() => onChange(opt)}>{opt}</button>
        ))}
      </div>
    </div>
  );

  const swatches = {
    amber: "#e0a84a", od: "#8a9a5b", navy: "#4a7ac9", crimson: "#b84a3a", bone: "#e8e0ce"
  };

  return (
    <div className={"tweaks-panel" + (open ? " open" : "")}>
      <div className="tweaks-head">
        <span>◆ TWEAKS · DESIGN OPS</span>
        <button onClick={() => setOpen(false)} style={{background:"none",border:"none",color:"var(--fg-dim)",cursor:"pointer",fontFamily:"var(--font-mono)",fontSize:12}}>−</button>
      </div>
      <div className="tweaks-body">
        <Row label="Theme" val={tweaks.theme} options={["dark","light"]}
          onChange={v => update("theme", v)} />
        <Row label="Accent" val={tweaks.accent} options={Object.keys(swatches)}
          onChange={v => update("accent", v)}
          render={(opt, isActive, onClick) => (
            <button key={opt} className={"tweak-swatch" + (isActive ? " active" : "")}
              style={{background: swatches[opt]}} onClick={onClick} title={opt} />
          )} />
        <Row label="Density" val={tweaks.density} options={["compact","default","spacious"]}
          onChange={v => update("density", v)} />
        <Row label="Typeface" val={tweaks.typeface} options={["condensed","stencil","wide","serif"]}
          onChange={v => update("typeface", v)} />
        <Row label="Map Style" val={tweaks.mapStyle} options={["default","topo","blueprint"]}
          onChange={v => update("mapStyle", v)} />
        <Row label="Hero Radar" val={tweaks.heroAnim ? "on" : "off"} options={["on","off"]}
          onChange={v => update("heroAnim", v === "on")} />
      </div>
    </div>
  );
}

// ==================== APP ====================
function App() {
  const [heroAnim, setHeroAnim] = useState(true);
  useEffect(() => {
    const check = () => {
      const root = document.documentElement;
      setHeroAnim(window.__heroAnim !== false);
    };
    check();
    const i = setInterval(check, 200);
    return () => clearInterval(i);
  }, []);

  return (
    <>
      <Nav />
      <Hero heroAnimated={heroAnim} />
      <Capabilities />
      <PastPerformance />
      <Certifications />
      <About />
      <Origin />
      <Leadership />
      <Careers />
      <Contact />
      <Footer />
      <Tweaks />
    </>
  );
}

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