// _chrome.jsx — Shared chrome for module pages (Nav + Footer + CTA + OtherModules)
// Paths are relative to /prodotto/* (use "../" prefix)

const { useState: useStateCh, useEffect: useEffectCh } = React;

const BASE = "../";

const MODULES = [
  { id: "cashflow", num: "01", name: "Cashflow Monitor", nameKey: "modules.cashflow", taglineKey: "mod.cf.tag", tagline: "Salute finanziaria 0–100, alert proattivi, digest finanziario.", href: "cashflow.html" },
  { id: "commerce", num: "02", name: "Commerce", nameKey: "modules.commerce", taglineKey: "mod.commerce.tag", tagline: "Storefront pubblico, 7 tipi di prodotto, Stripe Connect.", href: "commerce.html" },
  { id: "crm",      num: "03", name: "Customer Intelligence", nameKey: "modules.crm", taglineKey: "mod.crm.tag", tagline: "7 segmenti automatici, LTV, marketing GDPR.", href: "customer-intelligence.html" },
  { id: "ai",       num: "04", name: "Analista AI", nameKey: "modules.analyst", taglineKey: "mod.ai.tag", tagline: "21 strumenti deterministici, risposte fondate sui tuoi dati.", href: "analista-finanziario.html" },
];

function ModuleNav() {
  const [scrolled, setScrolled] = useStateCh(false);
  const [menuOpen, setMenuOpen] = useStateCh(false);
  useEffectCh(() => {
    let ticking = false;
    let last = false;
    const onScroll = () => {
      if (ticking) return;
      ticking = true;
      requestAnimationFrame(() => {
        const next = window.scrollY > 8;
        if (next !== last) { last = next; setScrolled(next); }
        ticking = false;
      });
    };
    window.addEventListener("scroll", onScroll, { passive: true });
    return () => window.removeEventListener("scroll", onScroll);
  }, []);
  useEffectCh(() => {
    document.body.style.overflow = menuOpen ? "hidden" : "";
    return () => { document.body.style.overflow = ""; };
  }, [menuOpen]);
  const closeMenu = () => setMenuOpen(false);
  return (
    <div className={`nav-wrap ${scrolled ? "scrolled" : ""}`}>
      <div className="container nav">
        <a href={BASE} className="nav-logo" aria-label="AFianco" onClick={closeMenu}>
          <img src={BASE + "logo.svg"} alt="" className="mark" width="54" height="54" /><img src={BASE + "wordmark.svg"} alt="AFianco" className="wordmark" />
        </a>
        <nav className="nav-links">
          <a href={BASE} className="desktop-only" data-i18n="nav.product">Home</a>
          <a href={BASE + "#moduli"} className="desktop-only" data-i18n="nav.modules">Moduli</a>
          <a href={BASE + "#verticali"} className="desktop-only" data-i18n="nav.verticals">Per chi</a>
          <a href={BASE + "#prezzi"} className="desktop-only" data-i18n="nav.pricing">Prezzi</a>
          <a href="https://afianco.app/" className="btn btn-ghost btn-sm desktop-only" data-i18n="nav.login">Accedi</a>
          <a href="https://afianco.app/signup" className="btn btn-primary btn-sm desktop-only"><span data-i18n="nav.signup">Inizia gratis</span> <span className="arrow">→</span></a>
          <button
            className={`hamburger ${menuOpen ? "open" : ""}`}
            aria-label="Menu"
            aria-expanded={menuOpen}
            onClick={() => setMenuOpen(o => !o)}
            type="button"
          >
            <span></span><span></span><span></span>
          </button>
        </nav>
      </div>
      <div className={`mobile-menu ${menuOpen ? "open" : ""}`} onClick={closeMenu}>
        <div className="mobile-menu-inner" onClick={e => e.stopPropagation()}>
          <a href={BASE} onClick={closeMenu} data-i18n="nav.product">Home</a>
          <a href={BASE + "#moduli"} onClick={closeMenu} data-i18n="nav.modules">Moduli</a>
          <a href={BASE + "#verticali"} onClick={closeMenu} data-i18n="nav.verticals">Per chi</a>
          <a href={BASE + "#prezzi"} onClick={closeMenu} data-i18n="nav.pricing">Prezzi</a>
          <div className="mobile-menu-actions">
            <a href="https://afianco.app/" className="btn btn-ghost" onClick={closeMenu} data-i18n="nav.login">Accedi</a>
            <a href="https://afianco.app/signup" className="btn btn-primary" onClick={closeMenu}><span data-i18n="nav.signup">Inizia gratis</span> <span className="arrow">→</span></a>
          </div>
        </div>
      </div>
    </div>
  );
}

// Eyebrow showing which module + breadcrumb
function ModuleEyebrow({ num, label, accent }) {
  return (
    <div style={{ display: "flex", justifyContent: "center" }}>
      <span className="eyebrow" style={accent ? {
        background: "color-mix(in oklab, " + accent + " 12%, transparent)",
        color: accent,
        borderColor: "color-mix(in oklab, " + accent + " 22%, transparent)",
      } : undefined}>
        <span className="dot" style={accent ? { background: accent, boxShadow: "0 0 0 3px color-mix(in oklab, " + accent + " 18%, transparent)" } : undefined} />
        Modulo {num} di 04 · {label}
      </span>
    </div>
  );
}

// Cross-links to other 3 modules
function OtherModules({ currentId }) {
  const others = MODULES.filter(m => m.id !== currentId);
  return (
    <section className="section-pad" style={{ background: "var(--surface)", borderTop: "1px solid var(--line)" }}>
      <div className="container">
        <div style={{ textAlign: "center", maxWidth: 720, margin: "0 auto 48px" }} className="stack-lg">
          <div style={{ display: "flex", justifyContent: "center" }}>
            <span className="eyebrow subtle"><span className="dot"></span><span data-i18n="chrome.other.eyebrow">Esplora gli altri moduli</span></span>
          </div>
          <h2 className="h2"><span data-i18n="chrome.other.h2.1">Tutti e quattro</span> <span style={{ color: "var(--brand)" }} data-i18n="chrome.other.h2.2">integrati dal giorno zero.</span></h2>
        </div>
        <div className="other-modules-grid">
          {others.map(m => (
            <a key={m.id} href={m.href} className="other-mod-card">
              <div className="om-num">{m.num}</div>
              <div className="stack-sm" style={{ flex: 1 }}>
                <h3 className="h4" data-i18n={m.nameKey}>{m.name}</h3>
                <p className="body-sm" style={{ color: "var(--ink-3)" }} data-i18n={m.taglineKey}>{m.tagline}</p>
              </div>
              <span className="om-arrow">→</span>
            </a>
          ))}
        </div>
      </div>
      <style>{`
        .other-modules-grid {
          display: grid;
          grid-template-columns: repeat(3, 1fr);
          gap: 12px;
        }
        .other-mod-card {
          display: flex;
          gap: 18px;
          padding: 24px 22px;
          background: var(--bg);
          border: 1px solid var(--line);
          border-radius: var(--r-xl);
          align-items: flex-start;
          transition: all .2s ease;
          color: var(--ink);
        }
        .other-mod-card:hover {
          transform: translateY(-2px);
          border-color: var(--brand);
          box-shadow: 0 8px 24px -10px var(--brand-glow);
        }
        .om-num {
          font-family: var(--font-mono);
          font-size: 12px;
          color: var(--brand);
          padding: 3px 8px;
          background: var(--brand-soft);
          border-radius: var(--r-full);
          flex-shrink: 0;
        }
        .om-arrow {
          color: var(--ink-4);
          font-size: 18px;
          align-self: center;
          transition: transform .15s ease;
        }
        .other-mod-card:hover .om-arrow {
          color: var(--brand);
          transform: translateX(3px);
        }
        @media (max-width: 900px) {
          .other-modules-grid { grid-template-columns: 1fr; }
        }
      `}</style>
    </section>
  );
}

// Final pricing + CTA reminder
function ModuleCta({ accent }) {
  return (
    <section className="section-pad">
      <div className="container">
        <div style={{
          background: "linear-gradient(135deg, var(--ink) 0%, oklch(0.2 0.04 280) 100%)",
          color: "white",
          borderRadius: "var(--r-2xl)",
          padding: "clamp(48px, 7vw, 80px) clamp(32px, 5vw, 64px)",
          position: "relative", overflow: "hidden",
        }}>
          <div className="glow" style={{
            width: 540, height: 360,
            background: accent ? "color-mix(in oklab, " + accent + " 35%, transparent)" : "var(--brand-glow)",
            top: -100, right: -100, opacity: 0.5,
          }} />
          <div style={{ position: "relative", maxWidth: 760 }}>
            <div className="stack-lg">
              <span style={{
                display: "inline-flex", alignItems: "center", gap: 8,
                padding: "5px 12px",
                borderRadius: "var(--r-full)",
                background: "color-mix(in oklab, white 10%, transparent)",
                color: "oklch(0.85 0.012 270)",
                fontFamily: "var(--font-mono)",
                fontSize: 11.5,
                alignSelf: "flex-start",
                border: "1px solid color-mix(in oklab, white 18%, transparent)",
                whiteSpace: "nowrap",
              }}>
                <span style={{ width: 5, height: 5, borderRadius: 50, background: "var(--success)" }} />
                <span data-i18n="chrome.cta.eyebrow">14 giorni, nessuna carta</span>
              </span>
              <h2 className="h1" style={{ color: "white", fontSize: "clamp(36px, 5.5vw, 64px)" }}>
                <span data-i18n="chrome.cta.h2.1">Pronto a metterlo</span><br/>
                <span style={{
                  background: "linear-gradient(135deg, var(--brand-2) 0%, var(--brand-2) 100%)",
                  WebkitBackgroundClip: "text",
                  backgroundClip: "text",
                  WebkitTextFillColor: "transparent",
                }} data-i18n="chrome.cta.h2.2">al tuo fianco?</span>
              </h2>
              <p className="lede" style={{ color: "oklch(0.78 0.012 270)" }}>
                <span data-i18n="chrome.cta.lede">Apri un account demo. Trovi tutti e quattro i moduli attivi, popolati con dati realistici di un coach, un centro benessere o un e-commerce. Esplora senza inserire un dato vero.</span>
              </p>
              <div className="flex wrap" style={{ gap: 12, paddingTop: 16 }}>
                <a href="https://afianco.app/signup" className="btn btn-brand btn-lg">
                  <span data-i18n="chrome.cta.primary">Comincia gratis</span> <span className="arrow">→</span>
                </a>
                <a href={"mailto:davide@afianco.ch"} className="btn btn-lg" style={{
                  background: "color-mix(in oklab, white 8%, transparent)",
                  color: "white",
                  border: "1px solid color-mix(in oklab, white 18%, transparent)",
                }}>
                  <span data-i18n="chrome.cta.secondary">Parla con un umano</span>
                </a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}

function ModuleFooter() {
  return (
    <footer style={{ background: "var(--surface)", borderTop: "1px solid var(--line)", padding: "48px 0 24px" }}>
      <div className="container">
        <div style={{ display: "grid", gridTemplateColumns: "2fr 1fr 1fr 1fr", gap: 32 }} className="footer-grid">
          <div className="stack-md" style={{ maxWidth: 320 }}>
            <a href={BASE} className="nav-logo" aria-label="AFianco">
              <img src={BASE + "logo.svg"} alt="" className="mark" width="54" height="54" /><img src={BASE + "wordmark.svg"} alt="AFianco" className="wordmark" style={{ height: 41 }} />
            </a>
            <p className="body-sm" data-i18n="footer.tagline">Business Operating System per attività che vogliono capire davvero come stanno andando. Cashflow, vendite, clienti e AI in un'unica esperienza: meno strumenti sparsi, più controllo sulle decisioni.</p>
          </div>
          <FtCol titleKey="footer.modules" title="Moduli" links={MODULES.map(m => ({ label: m.name, labelKey: m.nameKey, href: m.href }))} />
          <FtCol titleKey="footer.product" title="Prodotto" links={[
            { label: "Per chi", labelKey: "nav.verticals", href: BASE + "#verticali" },
            { label: "Prezzi", labelKey: "nav.pricing", href: BASE + "#prezzi" },
          ]} />
          <FtCol titleKey="footer.contacts" title="Contatti" links={[            { label: "Accedi", labelKey: "nav.login", href: "https://afianco.app/" },
            { label: "davide@afianco.ch", href: "mailto:davide@afianco.ch" },
          ]} />
        </div>
        <hr style={{ border: 0, height: 1, background: "var(--line)", margin: "28px 0 16px" }} />
        <div style={{ display: "flex", justifyContent: "space-between", alignItems: "center", flexWrap: "wrap", gap: 16 }}>
          <div className="mono" style={{ fontSize: 11, color: "var(--ink-4)" }}>© Afianco, 2026</div>
          <ModuleLangSwitch />
        </div>
      </div>
      <style>{`
        @media (max-width: 900px) {
          .footer-grid { grid-template-columns: 1fr 1fr !important; gap: 28px; }
          .footer-grid > div:first-child { grid-column: 1 / -1; }
        }
      `}</style>
    </footer>
  );
}

function ModuleLangSwitch() {
  const [lang, setLang] = useStateCh(() => (window.I18N ? window.I18N.getLang() : "it"));
  function pick(l) {
    setLang(l);
    if (window.I18N) window.I18N.setLang(l);
  }
  return (
    <div style={{ display: "flex", gap: 6 }}>
      {["IT","EN","DE","FR"].map(l => {
        const c = l.toLowerCase();
        const active = lang === c;
        return (
          <button key={l} onClick={() => pick(c)} className="chip"
            style={{
              fontSize: 10, padding: "3px 8px",
              background: active ? "var(--brand-soft)" : undefined,
              color: active ? "var(--brand-deep)" : undefined,
              borderColor: active ? "color-mix(in oklab, var(--brand) 22%, transparent)" : undefined,
              cursor: "pointer",
              fontWeight: active ? 600 : 400,
            }}
          >{l}</button>
        );
      })}
    </div>
  );
}

function FtCol({ titleKey, title, links }) {
  return (
    <div className="stack-sm">
      <div className="mono" style={{ fontSize: 11, color: "var(--ink-4)", letterSpacing: "0.08em", textTransform: "uppercase", marginBottom: 4 }} data-i18n={titleKey}>{title}</div>
      <div style={{ display: "flex", flexDirection: "column", gap: 8 }}>
        {links.map((l, i) => (
          <a key={i} href={l.href} style={{ fontSize: 13.5, color: "var(--ink-3)" }} data-i18n={l.labelKey}>{l.label}</a>
        ))}
      </div>
    </div>
  );
}

Object.assign(window, { ModuleNav, ModuleEyebrow, OtherModules, ModuleCta, ModuleFooter, MODULES });
