const { useEffect, useRef, useState } = React;
const TURNSTILE_SITE_KEY = window.APP_CONFIG?.turnstileSiteKey || "0x4AAAAAADFIcr5KUyY5R-51";

// ============ NAV ============
function Nav() {
  return (
    <nav className="nav">
      <div className="nav-inner container">
        <a href="#top" className="nav-logo">
          <img src="assets/logo-nav-white.png" alt="Bhay e Mota Advogados" className="nav-logo-img"/>
        </a>
        <div className="nav-links">
          <a href="#como-funciona">Como funciona</a>
          <a href="#beneficios">Benefícios</a>
          <a href="#depoimentos">Depoimentos</a>
          <a href="#faq">Dúvidas</a>
        </div>
        <a href="#indicar" className="btn btn-gold btn-nav">Indicar agora</a>
      </div>
    </nav>
  );
}

// ============ HERO ============
function Hero() {
  const [form, setForm] = useState({ seu_nome: "", seu_tel: "", nome_ind: "", tel_ind: "" });
  const [turnstileToken, setTurnstileToken] = useState("");
  const [status, setStatus] = useState("idle");
  const [message, setMessage] = useState("");
  const turnstileRef = useRef(null);
  const widgetIdRef = useRef(null);
  const onChange = (k) => (e) => setForm(s => ({ ...s, [k]: e.target.value }));
  const resetTurnstile = () => {
    setTurnstileToken("");
    if (window.turnstile && widgetIdRef.current !== null) {
      window.turnstile.reset(widgetIdRef.current);
    }
  };

  useEffect(() => {
    if (!turnstileRef.current || !TURNSTILE_SITE_KEY) return undefined;

    let attempts = 0;
    let cancelled = false;
    const renderTurnstile = () => {
      if (cancelled || !turnstileRef.current) return;

      if (!window.turnstile) {
        attempts += 1;
        if (attempts < 50) {
          window.setTimeout(renderTurnstile, 100);
        }
        return;
      }

      if (widgetIdRef.current !== null) return;

      widgetIdRef.current = window.turnstile.render(turnstileRef.current, {
        sitekey: TURNSTILE_SITE_KEY,
        theme: "dark",
        callback: (token) => {
          setTurnstileToken(token);
          setMessage("");
        },
        "expired-callback": () => {
          setTurnstileToken("");
          setStatus("error");
          setMessage("A validação expirou. Confirme o Turnstile novamente.");
        },
        "error-callback": () => {
          setTurnstileToken("");
          setStatus("error");
          setMessage("Não foi possível validar o Turnstile. Tente novamente.");
        },
      });
    };

    renderTurnstile();

    return () => {
      cancelled = true;
      if (window.turnstile && widgetIdRef.current !== null) {
        window.turnstile.remove(widgetIdRef.current);
        widgetIdRef.current = null;
      }
    };
  }, []);

  const submit = async (e) => {
    e.preventDefault();
    if (!turnstileToken) {
      setStatus("error");
      setMessage("Confirme o Turnstile antes de enviar.");
      return;
    }

    setStatus("loading");
    setMessage("");

    try {
      const response = await fetch("/api/contacts", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ ...form, turnstileToken }),
      });
      const data = await response.json();

      if (!response.ok) {
        throw new Error(data.error || "Não foi possível enviar sua indicação.");
      }

      setStatus("success");
      setMessage("Indicação enviada com sucesso. Nosso time fará a validação.");
      setForm({ seu_nome: "", seu_tel: "", nome_ind: "", tel_ind: "" });
      resetTurnstile();
      setTimeout(() => {
        setStatus("idle");
        setMessage("");
      }, 4000);
    } catch (error) {
      setStatus("error");
      setMessage(error.message || "Erro ao enviar indicação. Tente novamente.");
      resetTurnstile();
    }
  };

  return (
    <header id="top" className="hero">
      <div className="hero-bg">
        <FlowField color="#E8B859" trailOpacity={0.07} particleCount={550} speed={0.65} />
        <div className="hero-vignette" />
      </div>

      <Nav />

      <div className="hero-content container">
        <div className="hero-left">
          <div className="eyebrow eyebrow-on-dark">
            <span className="eyebrow-dot" /> Programa exclusivo para clientes
          </div>
          <h1 className="hero-title">
            Indique clientes e<br/>desbloqueie<br/><span className="gold-word">benefícios<br/>exclusivos.</span>
          </h1>
          <p className="hero-sub">
            Quando sua indicação fecha contrato com o escritório Bhay e Mota,
            você acumula categoria e conquista recompensas pensadas para quem confia no nosso trabalho.
            Simples, transparente e sem custo.
          </p>

          <div className="hero-stats">
            <div className="stat">
              <div className="stat-num">4</div>
              <div className="stat-label">Categorias</div>
            </div>
            <div className="stat-divider" />
            <div className="stat">
              <div className="stat-num">12+</div>
              <div className="stat-label">Benefícios</div>
            </div>
            <div className="stat-divider" />
            <div className="stat">
              <div className="stat-num">100%</div>
              <div className="stat-label">Gratuito</div>
            </div>
          </div>

          <div className="hero-trust">
            <div className="trust-avatars">
              <span /><span /><span /><span />
            </div>
            <div className="trust-text">Clientes ativos do escritório participam do programa</div>
          </div>
        </div>

        <div className="hero-right" id="indicar">
          <form className="ref-form" onSubmit={submit}>
            <div className="ref-form-head">
              <div className="ref-form-title">Envie sua indicação</div>
              <div className="ref-form-sub">Preencha os dados abaixo para indicar um novo cliente.</div>
            </div>
            <div className="ref-grid">
              <div className="field">
                <label>Seu nome *</label>
                <input required value={form.seu_nome} onChange={onChange("seu_nome")} placeholder="Nome completo"/>
              </div>
              <div className="field">
                <label>Seu telefone *</label>
                <input required value={form.seu_tel} onChange={onChange("seu_tel")} placeholder="(00) 00000-0000"/>
              </div>
              <div className="field">
                <label>Nome do indicado *</label>
                <input required value={form.nome_ind} onChange={onChange("nome_ind")} placeholder="Nome completo"/>
              </div>
              <div className="field">
                <label>Telefone do indicado *</label>
                <input required value={form.tel_ind} onChange={onChange("tel_ind")} placeholder="(00) 00000-0000"/>
              </div>
            </div>
            <div className="turnstile-field" ref={turnstileRef} />
            <button type="submit" className="btn btn-gold btn-block" disabled={status === "loading"}>
              {status === "loading" ? "Enviando..." : status === "success" ? "Indicação enviada" : "Enviar indicação"}
            </button>
            {message && (
              <div className={"ref-form-feedback is-" + status}>
                {message}
              </div>
            )}
            <div className="ref-form-note">
              Seus dados são tratados com sigilo. Validaremos antes do primeiro contato.
            </div>
          </form>
        </div>
      </div>

    </header>
  );
}

// ============ HOW IT WORKS ============
function HowItWorks() {
  const steps = [
    { n: "01", t: "Você indica", d: "Preencha o formulário com os dados de quem você quer indicar. Leva menos de um minuto." },
    { n: "02", t: "Nós validamos", d: "Nossa equipe entra em contato com total profissionalismo e discrição." },
    { n: "03", t: "Você é recompensado", d: "Contrato fechado? Você avança de categoria e escolhe seu benefício." },
  ];
  return (
    <section id="como-funciona" className="section how-section">
      <div className="container">
        <div className="section-header">
          <div className="eyebrow">Passo a passo</div>
          <h2 className="section-title">Como <span className="gold-word">funciona</span></h2>
          <p className="section-sub">Três passos, sem burocracia. Você indica e nós cuidamos do resto.</p>
        </div>
        <div className="how-grid">
          {steps.map((s, i) => (
            <div key={s.n} className="how-card">
              <div className="how-num">{s.n}</div>
              <div className="how-line" />
              <div className="how-title">{s.t}</div>
              <div className="how-desc">{s.d}</div>
              {i < steps.length - 1 && <div className="how-arrow">→</div>}
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

// ============ TESTIMONIALS ============
function Testimonials() {
  const items = [
    { years: "Cliente há 3 anos", q: "Já trabalhei com outros escritórios antes, mas com vocês foi a primeira vez que senti segurança de verdade durante todo o processo. Hoje, quando alguém me pede indicação, eu não penso duas vezes." },
    { years: "Cliente há 5 anos", q: "O que mais me marcou foi a consistência. Não foi só no começo, do início ao fim o atendimento foi muito bem conduzido. Isso é raro, e por isso continuo recomendando." },
    { years: "Cliente há 4 anos", q: "Depois que comecei a trabalhar com vocês, ficou difícil confiar em outro escritório no mesmo nível. É um padrão de organização e clareza que eu ainda não vi em outros lugares." },
  ];
  return (
    <section id="depoimentos" className="section testi-section">
      <div className="container">
        <div className="section-header">
          <div className="eyebrow">Quem já participa</div>
          <h2 className="section-title">Confiança que <span className="gold-word">circula</span></h2>
        </div>
        <div className="testi-grid">
          {items.map((t, i) => (
            <figure key={i} className="testi-card">
              <svg className="quote-mark" width="28" height="24" viewBox="0 0 28 24" fill="none">
                <path d="M0 24V14C0 6.27 3.64 1.55 11 0l1.64 3.64C8.73 5 6.55 7.09 6 10h5v14H0Zm16 0V14C16 6.27 19.64 1.55 27 0l1.64 3.64C24.73 5 22.55 7.09 22 10h5v14H16Z" fill="currentColor" opacity="0.3"/>
              </svg>
              <blockquote>{t.q}</blockquote>
              <figcaption>
                <div className="testi-years">{t.years}</div>
              </figcaption>
            </figure>
          ))}
        </div>
      </div>
    </section>
  );
}

// ============ FAQ ============
function FAQ() {
  const [open, setOpen] = useState(0);
  const items = [
    { q: "Quando recebo o benefício?", a: "Após a assinatura do contrato pelo indicado e o cumprimento do período mínimo de relacionamento contratual, entramos em contato para que você escolha o benefício da categoria conquistada." },
    { q: "O que significa \"contrato fechado\"?", a: "Significa que a pessoa indicada por você efetivamente contratou um serviço jurídico do escritório Bhay e Mota Advogados, com contrato assinado e honorários iniciais quitados." },
    { q: "Posso indicar mais de uma pessoa?", a: "Sim — e é exatamente isso que destrava categorias superiores. A cada nova indicação que fecha contrato, você avança no programa e acessa recompensas mais exclusivas." },
    { q: "Como sei em qual categoria estou?", a: "Você recebe um e-mail de confirmação a cada avanço e pode acompanhar seu progresso com o nosso time de relacionamento, que fica à sua disposição." },
    { q: "E se duas pessoas indicarem a mesma pessoa?", a: "Consideramos a primeira indicação registrada no nosso sistema. Por isso, se você tem alguém em mente, indique logo para garantir sua recompensa." },
    { q: "Existe prazo de validade do programa?", a: "O programa é contínuo. Eventuais ajustes nas categorias ou benefícios serão comunicados com antecedência e nunca retroativamente." },
  ];
  return (
    <section id="faq" className="section faq-section">
      <div className="container container-narrow">
        <div className="section-header">
          <div className="eyebrow">Perguntas frequentes</div>
          <h2 className="section-title">Dúvidas mais <span className="gold-word">frequentes</span></h2>
        </div>
        <div className="faq-list">
          {items.map((it, i) => (
            <div key={i} className={"faq-item " + (open === i ? "is-open" : "")}>
              <button className="faq-q" onClick={() => setOpen(open === i ? -1 : i)}>
                <span>{it.q}</span>
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.6">
                  <path d="M4 6l4 4 4-4"/>
                </svg>
              </button>
              <div className="faq-a"><div className="faq-a-inner">{it.a}</div></div>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

// ============ CTA FINAL ============
function FinalCTA() {
  return (
    <section className="section cta-section">
      <div className="cta-bg"><FlowField color="#2E5A4A" trailOpacity={0.06} particleCount={300} speed={0.5} /></div>
      <div className="container">
        <div className="cta-inner">
          <div className="eyebrow eyebrow-on-dark">Comece agora</div>
          <h2 className="cta-title">Pronto para participar do<br/><span className="gold-word">Clube de Indicações?</span></h2>
          <p className="cta-sub">Indicar é simples, rápido e todo o processo é validado pelo nosso escritório.<br/>Comece agora a indicar e a acumular benefícios.</p>
          <a href="#indicar" className="btn btn-gold btn-lg">Indicar agora →</a>
        </div>
      </div>
    </section>
  );
}

// ============ FOOTER ============
function Footer() {
  return (
    <footer className="footer">
      <div className="container">
        <div className="footer-grid">
          <div className="footer-brand">
            <img src="assets/logo-nav-white.png" alt="Bhay e Mota" className="footer-logo"/>
            <p></p>
          </div>
          <div className="footer-col">
            <div className="footer-h">Programa</div>
            <a href="#como-funciona">Como funciona</a>
            <a href="#beneficios">Benefícios</a>
            <a href="#depoimentos">Depoimentos</a>
            <a href="#faq">Dúvidas</a>
          </div>
          <div className="footer-col">
            <div className="footer-h">Contato</div>
            <a href="mailto:atendimento@bhayemota.com.br">atendimento@bhayemota.com.br</a>
          </div>
        </div>
        <div className="footer-bottom">
          <div>© 2026 Bhay e Mota Advogados. Todos os direitos reservados.</div>
          <div>Este programa é exclusivo e validado pelo nosso time jurídico.</div>
        </div>
      </div>
    </footer>
  );
}

Object.assign(window, { Nav, Hero, HowItWorks, Testimonials, RewardsSection_wrapper: null, FAQ, FinalCTA, Footer });
