// legal-modals.jsx - Privacy Policy and Terms of Use modals.
// Single component that renders both modals. Triggered by:
//   - footer links: <a data-legal="privacy"> / <a data-legal="terms">
//   - custom event: window.dispatchEvent(new CustomEvent('sncia:open-legal',
//                     { detail: { which: 'privacy' | 'terms' } }))
// Includes ESC-to-close, scrim click, focus trap, body scroll lock.

const { useState: useStateLM, useEffect: useEffectLM, useRef: useRefLM } = React;

const LEGAL_PT = {
  privacy: {
    title: 'Política de Privacidade',
    updated: 'Última atualização: maio de 2026',
    sections: [
      {
        h: '1. Quem somos',
        p: 'A Souza Nunes & Cia é uma boutique de estratégia competitiva e finanças corporativas. Esta Política descreve como coletamos, usamos e protegemos os dados pessoais dos visitantes do site souzanunesecia.com.br, em conformidade com a Lei Geral de Proteção de Dados (Lei nº 13.709/2018, LGPD).'
      },
      {
        h: '2. Dados que coletamos',
        p: 'Coletamos dados quando você preenche o formulário de contato (nome, empresa, cargo, e-mail, telefone, descrição do desafio) e dados de navegação automaticamente coletados (endereço IP, tipo de navegador, páginas visitadas, tempo de sessão), por meio de cookies e ferramentas analíticas.'
      },
      {
        h: '3. Finalidade do tratamento',
        p: 'Os dados pessoais são tratados para responder ao seu contato e prospectar relacionamento comercial, melhorar a experiência do usuário no site, cumprir obrigações legais e regulatórias e exercer regularmente direitos em processos administrativos ou judiciais. Não comercializamos dados pessoais com terceiros.'
      },
      {
        h: '4. Base legal',
        p: 'Tratamos seus dados com base no seu consentimento (art. 7º, I), na execução de contrato ou procedimentos preliminares (art. 7º, V) e no nosso legítimo interesse (art. 7º, IX), respeitados os direitos e liberdades fundamentais do titular.'
      },
      {
        h: '5. Compartilhamento',
        p: 'Eventualmente compartilhamos dados com prestadores de serviço estritamente necessários para o funcionamento do site (hospedagem, e-mail transacional, ferramentas analíticas), todos contratualmente obrigados a manter confidencialidade. Não há transferência internacional de dados sem garantias adequadas.'
      },
      {
        h: '6. Cookies',
        p: 'Utilizamos cookies essenciais (necessários ao funcionamento do site, sempre ativos) e cookies analíticos (opcionais, ativados somente após seu consentimento). Você pode revisar sua escolha a qualquer momento limpando o armazenamento local do seu navegador.'
      },
      {
        h: '7. Seus direitos',
        p: 'Você pode, a qualquer momento, solicitar: confirmação da existência de tratamento; acesso aos dados; correção de dados incompletos, inexatos ou desatualizados; anonimização, bloqueio ou eliminação; portabilidade; revogação do consentimento. Para exercer qualquer direito, escreva para contato@souzanunesecia.com.br.'
      },
      {
        h: '8. Retenção',
        p: 'Mantemos seus dados pelo tempo necessário ao atendimento das finalidades para as quais foram coletados, ou pelo prazo exigido por obrigação legal aplicável. Após esse período, os dados são eliminados ou anonimizados.'
      },
      {
        h: '9. Segurança',
        p: 'Adotamos medidas técnicas e administrativas razoáveis para proteger os dados contra acesso não autorizado, perda, alteração ou destruição. Em caso de incidente que possa acarretar risco aos titulares, comunicaremos a Autoridade Nacional de Proteção de Dados e os titulares afetados.'
      },
      {
        h: '10. Encarregado (DPO)',
        p: 'Para questões sobre proteção de dados, fale com nosso encarregado: contato@souzanunesecia.com.br.'
      },
      {
        h: '11. Alterações',
        p: 'Esta Política pode ser revisada periodicamente. A versão vigente está sempre disponível neste site. Recomendamos consulta regular.'
      }
    ]
  },
  terms: {
    title: 'Termos de Uso',
    updated: 'Última atualização: maio de 2026',
    sections: [
      {
        h: '1. Aceitação',
        p: 'Ao acessar e usar o site souzanunesecia.com.br, você concorda com estes Termos. Se não concorda, por favor não utilize o site.'
      },
      {
        h: '2. Conteúdo informativo',
        p: 'O conteúdo deste site é meramente informativo e não constitui aconselhamento jurídico, financeiro, fiscal, tributário ou de investimento. Decisões empresariais devem ser fundamentadas em parecer profissional específico, contratado por instrumento próprio.'
      },
      {
        h: '3. Propriedade intelectual',
        p: 'Todos os textos, marcas, logotipos, layout, código-fonte e demais elementos do site são de titularidade da Souza Nunes & Cia ou de seus licenciadores e estão protegidos pela legislação brasileira de direitos autorais e propriedade industrial. É vedada a reprodução, distribuição ou uso comercial sem autorização prévia e por escrito.'
      },
      {
        h: '4. Conduta do usuário',
        p: 'Você se compromete a não utilizar o site para fins ilícitos, a não interferir em sua segurança ou disponibilidade, a não tentar acesso não autorizado a sistemas, e a fornecer informações verdadeiras e atualizadas em formulários.'
      },
      {
        h: '5. Limitação de responsabilidade',
        p: 'O site é fornecido "como está". A Souza Nunes & Cia empenha-se na exatidão e atualização das informações, mas não garante disponibilidade ininterrupta nem ausência absoluta de erros. Em qualquer caso, sua responsabilidade fica limitada aos termos contratuais específicos firmados com clientes.'
      },
      {
        h: '6. Links externos',
        p: 'O site pode conter links para sites de terceiros. Não nos responsabilizamos por seu conteúdo, políticas ou práticas. Sua interação com sites externos é regida pelos respectivos termos.'
      },
      {
        h: '7. Foro e legislação aplicável',
        p: 'Estes Termos são regidos pelas leis brasileiras. Fica eleito o foro da Comarca de São Paulo/SP para dirimir quaisquer controvérsias, com renúncia a qualquer outro, por mais privilegiado que seja.'
      },
      {
        h: '8. Contato',
        p: 'Dúvidas, solicitações ou notificações relativas a estes Termos: contato@souzanunesecia.com.br.'
      }
    ]
  }
};

const LEGAL_EN = {
  privacy: {
    title: 'Privacy Policy',
    updated: 'Last updated: May 2026',
    sections: [
      { h: '1. Who we are', p: 'Souza Nunes & Cia is a competitive strategy and corporate finance boutique. This Policy describes how we collect, use and protect personal data of visitors to souzanunesecia.com.br, in compliance with Brazilian General Data Protection Law (LGPD, Law 13.709/2018).' },
      { h: '2. Data we collect', p: 'We collect data you provide via the contact form (name, company, role, email, phone, challenge description) and navigation data automatically collected (IP address, browser type, pages visited, session duration) through cookies and analytics tools.' },
      { h: '3. Purpose', p: 'We process your data to respond to your contact and explore commercial relationships, improve user experience, comply with legal and regulatory obligations, and exercise rights in administrative or judicial proceedings. We do not sell personal data to third parties.' },
      { h: '4. Legal basis', p: 'Processing is based on your consent (Art. 7, I), contract performance or pre-contract procedures (Art. 7, V), and our legitimate interest (Art. 7, IX), respecting the holder’s fundamental rights and freedoms.' },
      { h: '5. Sharing', p: 'We may share data with service providers strictly necessary to operate the site (hosting, transactional email, analytics), all contractually bound to confidentiality. No international data transfer occurs without adequate safeguards.' },
      { h: '6. Cookies', p: 'We use essential cookies (always on) and analytics cookies (optional, only after your consent). You may review your choice at any time by clearing local storage.' },
      { h: '7. Your rights', p: 'You may at any time request: confirmation of processing; access; correction of incomplete/inaccurate/outdated data; anonymization, blocking or deletion; portability; revocation of consent. Contact: contato@souzanunesecia.com.br.' },
      { h: '8. Retention', p: 'We keep data for the time required to fulfill the purposes for which it was collected, or as required by applicable law. After that, data is deleted or anonymized.' },
      { h: '9. Security', p: 'We take reasonable technical and administrative measures to protect data against unauthorized access, loss, alteration or destruction. In case of incident posing risk to data subjects, we notify the National Data Protection Authority and affected subjects.' },
      { h: '10. Data Protection Officer', p: 'For data protection inquiries: contato@souzanunesecia.com.br.' },
      { h: '11. Changes', p: 'This Policy may be revised periodically. The current version is always available on this site.' }
    ]
  },
  terms: {
    title: 'Terms of Use',
    updated: 'Last updated: May 2026',
    sections: [
      { h: '1. Acceptance', p: 'By accessing and using souzanunesecia.com.br, you agree to these Terms. If you do not agree, please do not use the site.' },
      { h: '2. Informational content', p: 'Site content is informational and does not constitute legal, financial, tax or investment advice. Business decisions must rely on specific professional opinion contracted via proper instrument.' },
      { h: '3. Intellectual property', p: 'All texts, brands, logos, layout, source code and other site elements are owned by Souza Nunes & Cia or its licensors and are protected by Brazilian copyright and industrial property laws. Reproduction, distribution or commercial use without prior written authorization is prohibited.' },
      { h: '4. User conduct', p: 'You agree not to use the site for unlawful purposes, not to interfere with its security or availability, not to attempt unauthorized access, and to provide truthful and updated information in forms.' },
      { h: '5. Limitation of liability', p: 'The site is provided "as is". We strive for accuracy and timeliness but do not guarantee uninterrupted availability or absolute absence of errors. Liability is limited to specific contractual terms with clients.' },
      { h: '6. External links', p: 'The site may contain links to third-party sites. We are not responsible for their content, policies or practices. Your interaction with external sites is governed by their respective terms.' },
      { h: '7. Jurisdiction and applicable law', p: 'These Terms are governed by Brazilian law. The Court of São Paulo/SP is elected to resolve any controversies, waiving any other.' },
      { h: '8. Contact', p: 'Questions, requests or notices: contato@souzanunesecia.com.br.' }
    ]
  }
};

const LegalModals = () => {
  const { lang } = useLang();
  const [open, setOpen] = useStateLM(null); // null | 'privacy' | 'terms'
  const dialogRef = useRefLM(null);

  // Listen for triggers (footer links + custom event from cookie banner)
  useEffectLM(() => {
    const onClick = (e) => {
      const target = e.target.closest('[data-legal]');
      if (target) {
        e.preventDefault();
        setOpen(target.dataset.legal);
      }
    };
    const onCustom = (e) => {
      if (e.detail?.which) setOpen(e.detail.which);
    };
    document.addEventListener('click', onClick);
    window.addEventListener('sncia:open-legal', onCustom);
    return () => {
      document.removeEventListener('click', onClick);
      window.removeEventListener('sncia:open-legal', onCustom);
    };
  }, []);

  // Lock scroll, ESC to close, focus trap
  useEffectLM(() => {
    if (!open) return;
    const prevOverflow = document.body.style.overflow;
    document.body.style.overflow = 'hidden';
    const onKey = (e) => { if (e.key === 'Escape') setOpen(null); };
    document.addEventListener('keydown', onKey);
    setTimeout(() => { dialogRef.current?.focus(); }, 50);
    return () => {
      document.body.style.overflow = prevOverflow;
      document.removeEventListener('keydown', onKey);
    };
  }, [open]);

  if (!open) return null;
  const data = (lang === 'en' ? LEGAL_EN : LEGAL_PT)[open];
  const closeLabel = lang === 'pt' ? 'Fechar' : 'Close';

  return (
    <div className="legal-overlay" onClick={() => setOpen(null)} aria-hidden="true">
      <div
        ref={dialogRef}
        tabIndex="-1"
        className="legal-dialog"
        role="dialog"
        aria-modal="true"
        aria-labelledby="legal-title"
        onClick={(e) => e.stopPropagation()}>
        <div className="legal-head">
          <div>
            <h2 id="legal-title">{data.title}</h2>
            <p className="legal-updated">{data.updated}</p>
          </div>
          <button
            type="button"
            className="legal-close"
            aria-label={closeLabel}
            onClick={() => setOpen(null)}>
            <svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" aria-hidden="true">
              <path d="M5 5 L15 15 M15 5 L5 15"/>
            </svg>
          </button>
        </div>
        <div className="legal-body">
          {data.sections.map((s, i) => (
            <section key={i}>
              <h3>{s.h}</h3>
              <p>{s.p}</p>
            </section>
          ))}
        </div>
      </div>
    </div>
  );
};

window.LegalModals = LegalModals;
