import Link from "next/link";
import { BadgeCheck, Cookie, Database, FileText, LockKeyhole, Mail, ShieldCheck } from "lucide-react";

const companyName = "ZIRA PLAY Entertainment Ltd.";
const licenceNumber = "G-273826477-EA-19";
const registeredOffice = "Suite 4, Avarua Business Centre, Ara Tapu, Avarua, Rarotonga, Cook Islands";
const privacyEmail = "privacy@zirabet.com";

const sections = [
  {
    title: "1. Responsable du traitement",
    body: [
      `La présente Politique de confidentialité explique comment ${companyName} traite les données personnelles liées à l'utilisation de ZiraBet.`,
      `ZiraBet est exploité sous la licence ${licenceNumber}. Le siège social est situé ${registeredOffice}.`,
      "Cette politique s'applique au site, au sportsbook, au casino, au wallet crypto, au programme VIP, aux bonus, au support, à l'affiliation et aux espaces administratifs nécessaires au fonctionnement de la plateforme."
    ]
  },
  {
    title: "2. Données collectées",
    body: [
      "Nous collectons les données nécessaires à la création et à la gestion du compte : email, nom d'utilisateur, mot de passe haché, prénom, nom, date de naissance, pays, devise, préférences et acceptations légales.",
      "Nous traitons les données de jeu et de transaction : dépôts, retraits, soldes, écritures ledger, tickets sportifs, rounds casino, bonus, wagering, VIP, cashback et historique des opérations.",
      "Nous pouvons traiter des documents KYC, justificatifs de domicile, preuves d'origine des fonds, messages support, tickets, conversations livechat, avis, logs techniques, adresses IP, identifiants de session et données de sécurité."
    ]
  },
  {
    title: "3. Finalités",
    body: [
      "Les données sont utilisées pour créer le compte, authentifier le joueur, gérer le wallet, exécuter les mises, régler les gains, administrer les bonus, calculer le VIP et fournir le support.",
      "Elles servent aussi à prévenir la fraude, sécuriser les retraits, effectuer les contrôles KYC/AML, détecter les abus, appliquer les limites, auditer les transactions et répondre aux obligations légales.",
      "Lorsque vous l'acceptez, certaines données peuvent être utilisées pour vous envoyer des communications liées aux promotions, bonus, nouveautés ou informations de compte."
    ]
  },
  {
    title: "4. Base légale",
    body: [
      "Le traitement repose sur l'exécution du contrat lorsque les données sont nécessaires à l'utilisation du compte et des services ZiraBet.",
      "Certains traitements reposent sur nos obligations légales ou réglementaires, notamment en matière de KYC, AML, prévention de la fraude, jeu responsable, litiges et conservation d'audit.",
      "D'autres traitements reposent sur notre intérêt légitime à sécuriser la plateforme, améliorer le service, prévenir les abus, analyser les incidents et répondre aux demandes support."
    ]
  },
  {
    title: "5. Données KYC et documents sensibles",
    body: [
      "Les documents KYC et justificatifs transmis sont considérés comme sensibles opérationnellement. Leur accès est limité aux personnes habilitées et aux besoins de vérification.",
      "Les fichiers peuvent être contrôlés sur leur type, leur taille, leur intégrité et leur lisibilité avant stockage.",
      "ZiraBet ne demande pas de document sans raison opérationnelle ou réglementaire. Le formulaire complémentaire reste disponible si le support vous demande un fichier additionnel."
    ]
  },
  {
    title: "6. Crypto, blockchain et transactions",
    body: [
      "Les opérations crypto peuvent impliquer des données publiques de blockchain, telles que les adresses, réseaux, montants, hashes de transaction et confirmations.",
      "Les blockchains publiques peuvent conserver certaines informations indépendamment de ZiraBet. Nous ne contrôlons pas l'effacement des données inscrites sur un registre public.",
      "Les conversions en euros, taux, frais, statuts et écritures internes sont conservés afin de justifier les soldes, les retraits, les audits et les éventuels litiges."
    ]
  },
  {
    title: "7. Cookies et sessions",
    body: [
      "ZiraBet utilise des cookies et technologies similaires nécessaires à l'authentification, à la sécurité, à la conservation de session, à la navigation et à certaines préférences.",
      "Des données techniques peuvent être utilisées pour protéger le compte, détecter les connexions anormales, limiter les abus, mesurer la stabilité du service et améliorer l'expérience mobile.",
      "Vous pouvez gérer certains cookies via votre navigateur, mais le blocage de cookies essentiels peut empêcher l'accès au compte ou au wallet."
    ]
  },
  {
    title: "8. Partage des données",
    body: [
      "Les données peuvent être partagées avec des prestataires techniques, hébergeurs, outils de sécurité, fournisseurs KYC, prestataires support, providers de jeu ou partenaires nécessaires au fonctionnement du service.",
      "Les données peuvent aussi être communiquées à une autorité compétente, un conseil juridique, un auditeur ou un organisme autorisé lorsque la loi, la conformité, la sécurité ou la défense des droits de ZiraBet l'exige.",
      "ZiraBet ne vend pas les données personnelles des joueurs."
    ]
  },
  {
    title: "9. Conservation",
    body: [
      "Les données sont conservées pendant la durée nécessaire à l'exploitation du compte, à la fourniture du service, à la sécurité, aux audits, à la gestion des litiges et aux obligations légales.",
      "Certaines données de jeu, transaction, ledger, KYC, fraude ou retrait peuvent être conservées après clôture du compte lorsque cela est nécessaire pour la conformité, la preuve ou la prévention des abus.",
      "Lorsque les données ne sont plus nécessaires, elles sont supprimées, anonymisées ou archivées selon leur nature et les contraintes applicables."
    ]
  },
  {
    title: "10. Sécurité",
    body: [
      "ZiraBet applique des mesures techniques et organisationnelles destinées à protéger les comptes, mots de passe, sessions, documents, transactions et journaux sensibles.",
      "Les mots de passe ne sont pas stockés en clair. Les accès internes sont limités selon les rôles et les opérations sensibles sont auditables.",
      "Aucune plateforme ne peut garantir une sécurité absolue. Le joueur doit protéger ses identifiants, utiliser un mot de passe unique et signaler toute activité suspecte."
    ]
  },
  {
    title: "11. Droits des joueurs",
    body: [
      "Selon les règles applicables, vous pouvez demander l'accès, la rectification, la limitation, l'effacement, la portabilité ou l'opposition à certains traitements.",
      "Certaines demandes peuvent être refusées ou différées lorsque la conservation est nécessaire à la conformité, à la lutte contre la fraude, à la sécurité, à l'audit des transactions ou à la défense de droits.",
      `Pour exercer vos droits, contactez ${privacyEmail} depuis l'adresse email liée à votre compte ou ouvrez un ticket support.`
    ]
  },
  {
    title: "12. Support et livechat",
    body: [
      "Les tickets, conversations livechat, avis, pièces jointes et échanges avec le support peuvent être conservés afin de traiter la demande, améliorer le service, assurer la sécurité et documenter les décisions.",
      "Lorsqu'une conversation est fermée, l'historique peut rester accessible au support habilité pendant la durée nécessaire à la qualité, la preuve, la conformité et la prévention des abus."
    ]
  },
  {
    title: "13. Modifications",
    body: [
      "Cette Politique de confidentialité peut être mise à jour pour refléter une évolution légale, technique, opérationnelle ou produit.",
      "La version publiée sur ZiraBet est la version applicable. Une notification peut être affichée lorsque la mise à jour est significative."
    ]
  }
] as const;

export default function PrivacyPage() {
  return (
    <div className="mx-auto w-full max-w-[900px] space-y-3">
      <section className="surface rounded-lg p-4 sm:p-5">
        <div className="flex items-start gap-3">
          <span className="grid h-10 w-10 shrink-0 place-items-center rounded-lg bg-felt/10 text-felt">
            <LockKeyhole className="h-5 w-5" />
          </span>
          <div className="min-w-0">
            <p className="text-[11px] font-black uppercase tracking-[0.14em] text-felt">Données personnelles</p>
            <h1 className="mt-1 text-xl font-black text-white sm:text-2xl">Politique de confidentialité</h1>
            <p className="mt-2 text-xs leading-5 text-slate-400 sm:text-sm">
              Dernière mise à jour : 09/07/2026. Cette politique détaille les données traitées par ZiraBet et la manière dont
              elles sont protégées.
            </p>
          </div>
        </div>
      </section>

      <section className="grid gap-2 sm:grid-cols-3">
        <InfoCard icon={FileText} label="Opérateur" value={companyName} />
        <InfoCard icon={BadgeCheck} label="Licence" value={licenceNumber} />
        <InfoCard icon={ShieldCheck} label="Contact privacy" value={privacyEmail} />
      </section>

      <section className="grid gap-2 sm:grid-cols-3">
        <SmallCard icon={Database} title="Données compte" body="Inscription, profil, wallet, transactions, mises et historique." />
        <SmallCard icon={ShieldCheck} title="Données sensibles" body="KYC, sécurité, fraude, retraits et documents support." />
        <SmallCard icon={Cookie} title="Cookies" body="Session, sécurité, préférences et stabilité de l'expérience mobile." />
      </section>

      <div className="space-y-2.5">
        {sections.map((section) => (
          <section key={section.title} className="surface rounded-lg p-4">
            <h2 className="text-base font-black text-white">{section.title}</h2>
            <div className="mt-2 space-y-2">
              {section.body.map((paragraph) => (
                <p key={paragraph} className="text-xs leading-5 text-slate-400 sm:text-sm sm:leading-6">
                  {paragraph}
                </p>
              ))}
            </div>
          </section>
        ))}
      </div>

      <section className="surface rounded-lg p-4">
        <h2 className="text-base font-black text-white">Nous contacter</h2>
        <p className="mt-2 text-xs leading-5 text-slate-400 sm:text-sm">
          Pour toute demande liée à vos données personnelles, utilisez l'adresse privacy ou le centre d'aide ZiraBet.
        </p>
        <div className="mt-3 flex flex-wrap gap-2">
          <Link href={`mailto:${privacyEmail}`} className="inline-flex h-9 items-center gap-2 rounded-lg bg-felt px-3 text-xs font-black text-ink-950">
            <Mail className="h-4 w-4" />
            {privacyEmail}
          </Link>
          <Link href="/help" className="inline-flex h-9 items-center rounded-lg border border-white/10 bg-white/[0.05] px-3 text-xs font-black text-white">
            Centre d'aide
          </Link>
        </div>
      </section>
    </div>
  );
}

function InfoCard({ icon: Icon, label, value }: { icon: typeof FileText; label: string; value: string }) {
  return (
    <article className="surface rounded-lg p-3">
      <Icon className="h-4 w-4 text-felt" />
      <p className="mt-2 text-[10px] font-black uppercase tracking-[0.12em] text-slate-500">{label}</p>
      <p className="mt-1 text-xs font-bold leading-5 text-white">{value}</p>
    </article>
  );
}

function SmallCard({ icon: Icon, title, body }: { icon: typeof Database; title: string; body: string }) {
  return (
    <article className="rounded-lg border border-white/10 bg-white/[0.035] p-3">
      <Icon className="h-4 w-4 text-felt" />
      <h2 className="mt-2 text-sm font-black text-white">{title}</h2>
      <p className="mt-1 text-xs leading-5 text-slate-400">{body}</p>
    </article>
  );
}
