// LegalPage — Politique de confidentialité + Conditions d'utilisation
// Routes : #/confidentialite (par défaut) | #/conditions
//
// Couvre les obligations Loi 25 Québec (Loi modernisant des dispositions
// législatives en matière de protection des renseignements personnels) :
//   - identification du responsable
//   - finalités de collecte par catégorie
//   - tiers destinataires et lieux de traitement
//   - durée de conservation
//   - droits des personnes (accès, rectification, retrait du consentement)
//   - contact responsable de la protection
//
// Texte rédigé en français primaire (langue d'usage QC), version EN simplifiée.

const { useState: useLPS, useEffect: useLPE } = React;

function LegalPage({ lang, onBack, section }) {
  const FR = lang !== 'en';
  const initial = section === 'terms' ? 'terms' : 'privacy';
  const [tab, setTab] = useLPS(initial);

  useLPE(() => {
    if (typeof window !== 'undefined') {
      window.scrollTo(0, 0);
    }
  }, [tab]);

  const t = {
    backHome: FR ? '← Retour' : '← Back',
    privacyTab: FR ? 'Politique de confidentialité' : 'Privacy policy',
    termsTab: FR ? 'Conditions d’utilisation' : 'Terms of use',
    lastUpdate: FR ? 'Dernière mise à jour' : 'Last updated',
    today: '2026-05-18',
  };

  return (
    <div className="legal-page">
      <div className="legal-header">
        <button className="btn btn-ghost" onClick={onBack}>{t.backHome}</button>
        <div className="legal-tabs">
          <button
            className={'legal-tab ' + (tab === 'privacy' ? 'active' : '')}
            onClick={() => { setTab('privacy'); window.location.hash = '#/confidentialite'; }}
          >
            {t.privacyTab}
          </button>
          <button
            className={'legal-tab ' + (tab === 'terms' ? 'active' : '')}
            onClick={() => { setTab('terms'); window.location.hash = '#/conditions'; }}
          >
            {t.termsTab}
          </button>
        </div>
      </div>

      <div className="legal-content">
        {tab === 'privacy' ? <PrivacySection FR={FR} t={t} /> : <TermsSection FR={FR} t={t} />}
      </div>
    </div>
  );
}

function PrivacySection({ FR, t }) {
  if (!FR) {
    return (
      <article>
        <h1>Privacy Policy</h1>
        <p className="legal-meta">{t.lastUpdate}: {t.today}</p>
        <p>
          Vestora is a real estate investment analysis tool operating from Quebec, Canada,
          and is subject to Quebec's Act respecting the protection of personal information
          in the private sector (Law 25). This page summarizes the data we collect, why,
          and what rights you have. For the legally binding version, refer to the French text.
        </p>
        <h2>1. Data controller</h2>
        <p>
          Vestora — operated by Maëlle Ratheau (Quebec, Canada).<br />
          Contact for privacy matters: <a href="mailto:contact@vestora.ca">contact@vestora.ca</a>
        </p>
        <h2>2. What we collect</h2>
        <ul>
          <li><strong>Account data</strong> (email, password hash via Supabase) when you sign up.</li>
          <li><strong>Profile preferences</strong> (selected investor profile, saved filters) — stored in your browser and synced to Supabase if you have an account.</li>
          <li><strong>Payment data</strong> handled exclusively by Stripe (we never see card numbers).</li>
          <li><strong>Behavioral data</strong> (page views, button clicks) via Meta Pixel — <em>only with your explicit consent</em>.</li>
          <li><strong>Server logs</strong> (IP, user agent, request path) retained 30 days for security.</li>
        </ul>
        <h2>3. Third-party recipients</h2>
        <ul>
          <li><strong>Supabase</strong> (data hosted in Montreal, Canada) — authentication and database.</li>
          <li><strong>Stripe</strong> (Canada) — payment processing.</li>
          <li><strong>Meta Platforms Inc.</strong> — Meta Pixel and Conversions API (only with consent).</li>
          <li><strong>Resend</strong> — transactional emails (welcome, trial expiry).</li>
          <li><strong>Cloudflare</strong> — website hosting and protection.</li>
        </ul>
        <h2>4. Your rights</h2>
        <p>
          Under Law 25 you may at any time: access the data we hold about you, request
          correction, request deletion (right to erasure), receive your data in portable
          form, and withdraw your consent. Write to <a href="mailto:contact@vestora.ca">contact@vestora.ca</a>;
          we will respond within 30 days.
        </p>
        <h2>5. Cookies and consent</h2>
        <p>
          The banner shown on your first visit lets you choose what's enabled. Essential
          cookies (authentication, payment) cannot be disabled because the site cannot
          function without them. You can revisit your choices anytime via "Manage cookies"
          in the footer.
        </p>
        <h2>6. Data retention</h2>
        <ul>
          <li>Account data: as long as your account exists, then 90 days after deletion request.</li>
          <li>Server logs: 30 days.</li>
          <li>Marketing/analytics events: 14 months (Meta default).</li>
          <li>Stripe billing records: 7 years (Canadian tax law).</li>
        </ul>
        <h2>7. Security</h2>
        <p>
          We use HTTPS everywhere, hash passwords (bcrypt via Supabase), apply rate-limiting,
          and follow the CSP / DOMPurify hardening shipped in our codebase.
        </p>
        <h2>8. Changes</h2>
        <p>
          We may update this policy. Material changes will be announced via in-app notice
          at least 7 days before taking effect.
        </p>
      </article>
    );
  }

  return (
    <article>
      <h1>Politique de confidentialité</h1>
      <p className="legal-meta">{t.lastUpdate} : {t.today}</p>

      <p>
        Vestora est un outil d’analyse d’investissement immobilier exploité depuis le Québec,
        Canada. Nous sommes soumis à la <em>Loi sur la protection des renseignements
        personnels dans le secteur privé</em> du Québec, modernisée par la <em>Loi 25</em>.
        La présente politique décrit les renseignements personnels que nous recueillons,
        pourquoi, et les droits dont vous disposez.
      </p>

      <h2>1. Responsable du traitement</h2>
      <p>
        Vestora — entreprise individuelle exploitée par Maëlle Ratheau (Québec, Canada).<br />
        Responsable de la protection des renseignements personnels :
        Maëlle Ratheau — <a href="mailto:contact@vestora.ca">contact@vestora.ca</a>
      </p>

      <h2>2. Renseignements collectés et finalités</h2>
      <table className="legal-table">
        <thead>
          <tr>
            <th>Catégorie</th>
            <th>Finalité</th>
            <th>Base légale</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Adresse courriel, mot de passe haché</td>
            <td>Création et gestion du compte, authentification</td>
            <td>Exécution du contrat (CGU)</td>
          </tr>
          <tr>
            <td>Profil d’investisseur, filtres et listes sauvegardées</td>
            <td>Personnaliser l’expérience et les scores affichés</td>
            <td>Exécution du contrat</td>
          </tr>
          <tr>
            <td>Données de paiement (carte)</td>
            <td>Facturation des abonnements — traitées par Stripe, jamais stockées chez nous</td>
            <td>Exécution du contrat</td>
          </tr>
          <tr>
            <td>Pages vues, clics, parcours (Meta Pixel)</td>
            <td>Mesure d’audience anonyme</td>
            <td>Consentement (opt-in)</td>
          </tr>
          <tr>
            <td>Adresse courriel transmise à Meta (Conversions API)</td>
            <td>Mesure de la performance publicitaire</td>
            <td>Consentement (opt-in)</td>
          </tr>
          <tr>
            <td>Adresse IP, agent utilisateur, journaux serveur</td>
            <td>Sécurité, prévention de la fraude, débogage</td>
            <td>Intérêt légitime, durée 30 jours</td>
          </tr>
        </tbody>
      </table>

      <h2>3. Tiers destinataires et lieux de traitement</h2>
      <ul>
        <li><strong>Supabase</strong> — hébergement de la base de données et de l’authentification, région Montréal (Canada).</li>
        <li><strong>Stripe Canada</strong> — traitement des paiements.</li>
        <li><strong>Meta Platforms Inc.</strong> (États-Unis / Irlande) — Meta Pixel et Conversions API, <em>uniquement si vous y avez consenti</em>. Un transfert hors Canada peut donc se produire dans ce cas.</li>
        <li><strong>Resend</strong> (États-Unis) — envoi de courriels transactionnels (bienvenue, fin d’essai).</li>
        <li><strong>Cloudflare</strong> — hébergement du site et protection contre les attaques.</li>
        <li><strong>Walk Score, Statistique Canada, MAMH, SCHL/CMHC</strong> — sources de données sur les quartiers et les immeubles. Ces services <em>ne reçoivent aucune donnée personnelle vous concernant</em>.</li>
      </ul>

      <h2>4. Vos droits (Loi 25)</h2>
      <p>Vous pouvez à tout moment :</p>
      <ul>
        <li>accéder aux renseignements personnels que nous détenons sur vous ;</li>
        <li>en demander la rectification ou la suppression ;</li>
        <li>en demander la portabilité dans un format structuré ;</li>
        <li>retirer votre consentement (pour le suivi publicitaire ou la mesure d’audience) ;</li>
        <li>déposer une plainte à la Commission d’accès à l’information du Québec si vous estimez que vos droits ne sont pas respectés.</li>
      </ul>
      <p>
        Envoyez votre demande à <a href="mailto:contact@vestora.ca">contact@vestora.ca</a>.
        Nous répondons dans un délai maximal de 30 jours.
      </p>

      <h2>5. Témoins (cookies) et consentement</h2>
      <p>
        Le bandeau affiché à votre première visite vous permet de choisir les cookies
        non essentiels que vous acceptez (mesure d’audience, marketing). Les cookies
        essentiels (authentification, paiement, sécurité) ne peuvent pas être désactivés
        car le site ne pourrait pas fonctionner sans eux. Vous pouvez modifier vos
        choix à tout moment via le lien « Gérer mes cookies » en pied de page.
      </p>

      <h2>6. Durée de conservation</h2>
      <ul>
        <li>Données de compte : tant que votre compte est actif, puis 90 jours après votre demande de suppression.</li>
        <li>Journaux serveur : 30 jours.</li>
        <li>Événements de mesure d’audience et marketing : 14 mois (paramètre Meta par défaut).</li>
        <li>Pièces justificatives Stripe : 7 ans (obligations fiscales canadiennes).</li>
      </ul>

      <h2>7. Sécurité</h2>
      <p>
        HTTPS partout, mots de passe hachés via Supabase (bcrypt), limitation de débit
        sur les endpoints sensibles, en-tête CSP et sanitisation DOMPurify pour limiter
        les attaques XSS. Aucun système n’est infaillible ; nous nous engageons à
        notifier les personnes concernées en cas d’incident de confidentialité ayant
        un risque sérieux.
      </p>

      <h2>8. Mineurs</h2>
      <p>
        Vestora s’adresse aux personnes majeures. Nous ne ciblons pas les enfants et
        ne collectons sciemment aucun renseignement personnel d’une personne de moins
        de 14 ans.
      </p>

      <h2>9. Modifications de la politique</h2>
      <p>
        Nous pouvons mettre à jour la présente politique. Toute modification
        substantielle sera annoncée dans l’application au moins 7 jours avant son
        entrée en vigueur.
      </p>
    </article>
  );
}

function TermsSection({ FR, t }) {
  if (!FR) {
    return (
      <article>
        <h1>Terms of use</h1>
        <p className="legal-meta">{t.lastUpdate}: {t.today}</p>
        <p>
          By using Vestora you agree to the following. The French version is the legally
          binding text; this English version is for convenience.
        </p>
        <h2>1. Service</h2>
        <p>
          Vestora provides automated analysis of Quebec real estate listings, with scores,
          metrics, and educational content. It is a decision-support tool — not a financial,
          tax, legal, or investment advisory service.
        </p>
        <h2>2. No financial advice</h2>
        <p>
          The scores, verdicts, and analyses shown do not constitute personalized advice.
          You remain solely responsible for any purchase decision. Always consult a licensed
          professional (mortgage broker, accountant, real estate broker, notary) before
          buying property.
        </p>
        <h2>3. Account and billing</h2>
        <p>
          Paid tiers are billed via Stripe. Cancellation takes effect at the end of the
          current period. Refunds are at our discretion, except as required by law.
        </p>
        <h2>4. Data accuracy</h2>
        <p>
          Data comes from public sources (MAMH, Statistique Canada, SCHL, Walk Score) and
          listings published by third parties. We make no warranty of accuracy or completeness.
        </p>
        <h2>5. Liability</h2>
        <p>
          To the maximum extent permitted by Quebec law, Vestora's liability is limited to
          the amount you paid us in the 12 months before the claim.
        </p>
        <h2>6. Governing law</h2>
        <p>
          These terms are governed by the laws of Quebec and the federal laws of Canada
          applicable therein. Disputes go before the courts of the judicial district of Quebec.
        </p>
      </article>
    );
  }

  return (
    <article>
      <h1>Conditions d’utilisation</h1>
      <p className="legal-meta">{t.lastUpdate} : {t.today}</p>

      <p>
        En utilisant Vestora vous acceptez les présentes conditions. Si vous n’êtes
        pas d’accord, n’utilisez pas le service.
      </p>

      <h2>1. Description du service</h2>
      <p>
        Vestora est un outil d’aide à la décision pour l’investissement immobilier
        au Québec. Il agrège des annonces et leurs caractéristiques, produit des
        scores et analyses automatisés, et fournit du contenu éducatif.
      </p>

      <h2>2. Pas de conseil financier, fiscal ou juridique</h2>
      <p>
        Les scores, verdicts et analyses affichés sont fournis à titre informatif
        uniquement. <strong>Ils ne constituent pas un conseil financier, fiscal,
        juridique ou d’investissement personnalisé.</strong> Vous demeurez seul
        responsable de vos décisions d’achat. Nous vous recommandons fortement de
        consulter un professionnel qualifié (courtier hypothécaire, comptable,
        courtier immobilier, notaire) avant tout engagement.
      </p>

      <h2>3. Compte utilisateur et facturation</h2>
      <p>
        Les forfaits payants sont facturés via Stripe selon le tarif affiché sur la
        page Tarifs. La résiliation prend effet à la fin de la période en cours.
        Les remboursements sont à notre discrétion, sauf disposition contraire de la loi.
      </p>

      <h2>4. Exactitude des données</h2>
      <p>
        Les données proviennent de sources publiques (MAMH, Statistique Canada,
        SCHL/CMHC, Walk Score) et d’annonces publiées par des tiers (courtiers
        immobiliers, vendeurs). Nous ne garantissons ni l’exactitude, ni l’exhaustivité,
        ni la fraîcheur de ces données. Toute décision financière doit être validée
        directement auprès des sources primaires.
      </p>

      <h2>5. Utilisation autorisée</h2>
      <p>
        Vous vous engagez à n’utiliser Vestora qu’à des fins légales et à ne pas
        tenter de contourner les limites techniques (extraction automatisée massive,
        contournement de l’authentification, etc.). Toute revente ou redistribution
        non autorisée du contenu est interdite.
      </p>

      <h2>6. Propriété intellectuelle</h2>
      <p>
        Le code, le design, les algorithmes de scoring et la marque « Vestora »
        demeurent notre propriété. Vous obtenez une licence personnelle, non
        exclusive et révocable d’utiliser le service selon le forfait souscrit.
      </p>

      <h2>7. Limitation de responsabilité</h2>
      <p>
        Dans la mesure permise par le droit québécois, notre responsabilité totale
        envers vous, toutes causes confondues, est limitée au montant que vous nous
        avez payé au cours des 12 mois précédant la réclamation. Nous ne sommes
        pas responsables des pertes indirectes (occasion manquée, perte de profit,
        dépréciation d’un immeuble, etc.).
      </p>

      <h2>8. Résiliation</h2>
      <p>
        Vous pouvez fermer votre compte à tout moment. Nous pouvons suspendre ou
        résilier votre accès en cas de violation des présentes conditions, après
        un avis préalable lorsque cela est raisonnablement possible.
      </p>

      <h2>9. Droit applicable et juridiction</h2>
      <p>
        Les présentes conditions sont régies par les lois du Québec et les lois
        fédérales du Canada qui y sont applicables. Tout litige sera soumis aux
        tribunaux du district judiciaire de Québec.
      </p>

      <h2>10. Contact</h2>
      <p>
        Pour toute question : <a href="mailto:contact@vestora.ca">contact@vestora.ca</a>.
      </p>
    </article>
  );
}

window.LegalPage = LegalPage;
