import Link from "next/link";
import { AlertTriangle, BadgeCheck, FileCheck2, FileText, ShieldCheck, UserCheck } 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 sections = [
  {
    title: "1. Objectif de la politique",
    body: [
      "Cette politique explique comment ZiraBet applique les contrôles Know Your Customer, la vérification d'identité, la lutte contre la fraude, la prévention du blanchiment d'argent et la sécurisation des retraits.",
      `ZiraBet est exploité par ${companyName}, titulaire de la licence ${licenceNumber}, dont le siège social est situé ${registeredOffice}.`,
      "Notre approche vise à protéger les joueurs, l'intégrité de la plateforme, les fonds déposés et les obligations applicables aux services de paris sportifs et casino crypto-only."
    ]
  },
  {
    title: "2. Approche fondée sur le risque",
    body: [
      "ZiraBet peut adapter le niveau de contrôle selon le profil du compte, le volume de jeu, les dépôts, les retraits, les méthodes crypto utilisées, la cohérence des informations transmises et les signaux de risque détectés.",
      "Une vérification peut être demandée à l'ouverture du compte, avant un retrait, après une activité inhabituelle, en cas de suspicion de fraude, lors d'un contrôle source de fonds ou lorsque le support estime qu'un document est nécessaire.",
      "Aucun pays n'est refusé automatiquement lors de l'inscription, mais certains comptes peuvent faire l'objet de contrôles renforcés selon les obligations de conformité et les risques observés."
    ]
  },
  {
    title: "3. Documents pouvant être demandés",
    body: [
      "ZiraBet peut demander une pièce d'identité officielle avec photo, recto et verso lorsque le document en possède un.",
      "Un justificatif de domicile récent peut être requis afin de confirmer l'adresse déclarée.",
      "Dans certains cas, une preuve d'origine des fonds, une preuve d'activité crypto, un document complémentaire ou une image additionnelle peut être demandée par le support."
    ]
  },
  {
    title: "4. Qualité et validité des documents",
    body: [
      "Les documents doivent être lisibles, non modifiés, non masqués, complets et appartenir au titulaire du compte ZiraBet.",
      "Le nom, la date de naissance et les informations principales doivent correspondre aux données du compte. Le joueur doit avoir au moins 18 ans.",
      "Un justificatif de domicile doit être récent, contenir le nom du joueur et permettre d'identifier clairement l'adresse."
    ]
  },
  {
    title: "5. Contrôles renforcés",
    body: [
      "ZiraBet peut appliquer une due diligence renforcée lorsque le compte présente un volume important, des transactions inhabituelles, des informations incohérentes, un risque AML, un comportement de contournement ou une demande de retrait sensible.",
      "Ces contrôles peuvent inclure des questions complémentaires, une revue manuelle par le support, une demande de documents additionnels ou une suspension temporaire de certaines opérations."
    ]
  },
  {
    title: "6. Effet sur les dépôts, retraits et bonus",
    body: [
      "Tant qu'une vérification requise n'est pas finalisée, ZiraBet peut suspendre un retrait, limiter un bonus, bloquer une fonctionnalité ou demander des informations supplémentaires.",
      "Une fois la vérification validée par le support, le compte client affiche que la vérification est terminée et que le compte est validé.",
      "Un document refusé peut être renvoyé depuis la page Vérification du compte ou via les échanges support."
    ]
  },
  {
    title: "7. Sécurité et conservation",
    body: [
      "Les documents KYC sont traités comme des fichiers sensibles. L'accès est réservé aux personnes habilitées et aux contrôles nécessaires.",
      "ZiraBet conserve les données uniquement pendant la durée nécessaire aux objectifs de conformité, de sécurité, de prévention de la fraude, de résolution des litiges et aux obligations applicables.",
      "Les fichiers transmis via le formulaire sont contrôlés sur leur type, leur taille et leur intégrité avant stockage."
    ]
  },
  {
    title: "8. Refus, fraude et clôture",
    body: [
      "ZiraBet peut refuser un document, demander un nouvel envoi, suspendre un compte ou refuser une opération lorsque les informations sont incomplètes, incohérentes, falsifiées, expirées ou insuffisantes.",
      "En cas de fraude, usurpation, manipulation documentaire, multi-compte abusif, contournement technique ou activité suspecte, ZiraBet peut clôturer le compte et conserver les éléments nécessaires à l'audit."
    ]
  }
] as const;

export default function AmlKycPolicyPage() {
  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">
            <UserCheck className="h-5 w-5" />
          </span>
          <div className="min-w-0">
            <p className="text-[11px] font-black uppercase tracking-[0.14em] text-felt">Conformité</p>
            <h1 className="mt-1 text-xl font-black text-white sm:text-2xl">Politique KYC</h1>
            <p className="mt-2 text-xs leading-5 text-slate-400 sm:text-sm">
              Dernière mise à jour : 09/07/2026. Cette politique complète les Conditions générales, la Politique de
              confidentialité et les règles de jeu responsable.
            </p>
          </div>
        </div>
      </section>

      <section className="grid gap-2 sm:grid-cols-3">
        <InfoCard icon={ShieldCheck} label="Opérateur" value={companyName} />
        <InfoCard icon={BadgeCheck} label="Licence" value={licenceNumber} />
        <InfoCard icon={FileText} label="Siège social" value={registeredOffice} />
      </section>

      <section className="rounded-lg border border-gold/20 bg-gold/10 p-3 text-xs leading-5 text-gold">
        <div className="flex gap-2">
          <AlertTriangle className="mt-0.5 h-4 w-4 shrink-0" />
          <p>
            L'inscription reste ouverte à tous les pays proposés dans le formulaire. Une vérification peut toutefois être
            demandée après inscription selon le niveau de risque ou les opérations demandées.
          </p>
        </div>
      </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">Transmettre un document</h2>
        <p className="mt-2 text-xs leading-5 text-slate-400 sm:text-sm">
          Si le support vous demande une pièce ou si vous souhaitez transmettre un document complémentaire, utilisez la page
          de vérification sécurisée.
        </p>
        <Link href="/kyc" className="mt-3 inline-flex h-9 items-center gap-2 rounded-lg bg-felt px-3 text-xs font-black text-ink-950">
          <FileCheck2 className="h-4 w-4" />
          Ouvrir la vérification
        </Link>
      </section>
    </div>
  );
}

function InfoCard({ icon: Icon, label, value }: { icon: typeof ShieldCheck; 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>
  );
}
