// FOOTPASS v2 · Coffre-fort · CORPS DE DOCUMENTS RÉALISTES (démo crédible, filigranée)
// Chaque catégorie a SON gabarit : contrat (juridique), compte rendu médical, rapport
// de performance, facture/attestation (administratif), épreuve presse (communication).
// Rendu comme une page A4 (voir .cf3-paper) ; {children} = zone de signature injectée.

const CF3_ORGS = ['AS Monaco', 'FC Nantes U19', 'FC Nantes', 'Manchester United', 'Real Madrid', 'FC Porto', 'Nike', 'Classico Sport', 'France Football'];
const cf3PartB = (doc) => CF3_ORGS.find((o) => (doc.title + ' ' + doc.meta + ' ' + ((doc.tags || []).join(' '))).includes(o)) || null;
const cf3PartBSafe = (doc) => cf3PartB(doc) || 'AS Monaco';
const CF3_ORG_INFO = {
  'AS Monaco': { rep: 'M. Laurent VASSEUR, Directeur général', addr: '7 avenue des Castelans, 98000 Monaco' },
  'FC Nantes': { rep: 'M. Karim BENATIA, Directeur sportif', addr: 'Centre sportif de la Jonelière, 44240 La Chapelle-sur-Erdre' },
  'FC Nantes U19': { rep: 'M. Karim BENATIA, Directeur sportif', addr: 'Centre sportif de la Jonelière, 44240 La Chapelle-sur-Erdre' },
  'Manchester United': { rep: 'M. Edward HARTLEY, Chief Executive Officer', addr: 'Sir Matt Busby Way, Old Trafford, Manchester M16 0RA' },
  'Real Madrid': { rep: 'M. David MARTINEZ, Direction sportive', addr: 'Av. de Concha Espina 1, 28036 Madrid' },
  'FC Porto': { rep: 'M. Marco SILVA, Entraîneur principal', addr: 'Estádio do Dragão, 4350-415 Porto' },
  'Nike': { rep: 'Mme Elena RUIZ, Direction des partenariats sportifs', addr: 'One Bowerman Drive, Beaverton, Oregon' },
  'Classico Sport': { rep: 'M. Amadou MBAYE, Agent associé', addr: 'Rue du Rhône 42, 1204 Genève (Suisse)' },
  'France Football': { rep: 'la Rédaction en chef', addr: '10 boulevard de Grenelle, 75015 Paris' },
};
const cf3PartyA = (doc) => doc.ent === 'lucas'
  ? { n: 'M. Lucas FERREIRA', d: 'joueur professionnel, né le 14 mars 2003, de nationalité franco-portugaise, domicilié à Monaco (98000)', short: 'Lucas FERREIRA', dob: '14/03/2003' }
  : doc.ent === 'mathis'
  ? { n: 'M. Mathis RENARD', d: 'joueur en formation, né le 2 septembre 2008, mineur représenté par ses représentants légaux, domicilié à Nantes (44000)', short: 'Mathis RENARD', dob: '02/09/2008' }
  : doc.ent === 'me'
  ? { n: 'CLASSICO SPORT SA', d: 'société de représentation sportive de droit suisse, dont le siège est Rue du Rhône 42, 1204 Genève, représentée par M. Alexandre DA COSTA', short: 'Classico Sport SA', dob: '·' }
  : { n: window.fpUpperLast((FP_PEERS[doc.ent] || {}).name || 'La partie'), d: (FP_PEERS[doc.ent] ? FP_PEERS[doc.ent].role + ', ' + FP_PEERS[doc.ent].org : 'partie aux présentes'), short: window.fpUpperLast((FP_PEERS[doc.ent] || {}).name || '·'), dob: '·' };

const CfV3PFoot = () => <div className="cf3-pfoot">MODÈLE · DÉMO · SANS VALIDITÉ LÉGALE · généré pour la maquette d’interface FOOTPASS. Page 1 sur 1.</div>;
// Filigrane de sécurité FOOTPASS · IDENTIQUE sur chaque document A4, comme un standard mondial :
// marque claire en haut, monogramme discret au centre (ne gêne pas la lecture),
// N° Pass sur le bord gauche, nom du titulaire en bas à droite.
const CfV3Wm = ({ doc }) => (
  <span className="cf3-secframe" aria-hidden="true">
    <span className="cf3-sec-top"><img src="assets/logomark_black.png" alt="" /> Document sécurisé · FOOTPASS® · DÉMO</span>
    <img className="cf3-sec-mark" src="assets/logomark_black.png" alt="" />
    <span className="cf3-sec-left">EMPREINTE {(doc && doc.hash) || ''}</span>
    <span className="cf3-sec-br">{window.fpUpperLast(FP_ME.name || 'Alexandre Da Costa')}</span>
  </span>
);

// ═══ JURIDIQUE · acte type avocat ═══
function CfV3PaperJur({ doc, children }) {
  const partB = cf3PartBSafe(doc);
  const info = CF3_ORG_INFO[partB] || { rep: 'son représentant dûment habilité', addr: null };
  const pa = cf3PartyA(doc);
  return (
    <div className="cf3-paper real">
      <CfV3Wm doc={doc} />
      <div className="cf3-ph1">{partB.toUpperCase()} (DÉMO)</div>
      <div className="cf3-ph2">{doc.title.toUpperCase()}</div>
      <div className="cf3-ph3">Document de démonstration d’interface. Sans validité légale ni administrative.</div>
      <p className="cf3-pdate">À Genève, le 13 juillet 2026.</p>
      <div className="cf3-psec">Entre les soussignés</div>
      <p>D’une part, <b>{partB}</b>{info.addr ? ', dont le siège est ' + info.addr : ''}, représenté aux présentes par {info.rep}, ci-après «&nbsp;la Partie B&nbsp;»&nbsp;;</p>
      <p>Et d’autre part, <b>{pa.n}</b>, {pa.d}, ci-après «&nbsp;la Partie A&nbsp;»&nbsp;;</p>
      <p>En présence de <b>M. Alexandre DA COSTA</b>, agent sportif licencié (Classico Sport, Genève), intervenant au titre de son autorisation de représentation en vigueur, ci-après «&nbsp;le Représentant&nbsp;».</p>
      <div className="cf3-psec">Il est préalablement exposé</div>
      <p>1. Les parties entretiennent une relation contractuelle dans le domaine du football professionnel&nbsp;; les pièces y afférentes sont conservées au coffre-fort FOOTPASS et vérifiables par empreinte ({doc.hash}).</p>
      <p>2. Elles entendent formaliser «&nbsp;{doc.title}&nbsp;» dans le respect du Règlement FIFA sur les agents (FFAR) et de la législation applicable.</p>
      <div className="cf3-psec">Il a été convenu ce qui suit</div>
      <p><b>Article 1 · Objet.</b> Le présent acte régit les droits et obligations des parties au titre de «&nbsp;{doc.title}&nbsp;»&nbsp;; ses annexes en font partie intégrante.</p>
      <p><b>Article 2 · Durée.</b> Entrée en vigueur le 1ᵉʳ juillet 2026&nbsp;; échéance le 30 juin 2028, sauf résiliation anticipée dans les formes prévues. État au jour des présentes&nbsp;: {doc.meta}.</p>
      <p><b>Article 3 · Conditions financières.</b> Rémunérations fixes, primes et avantages figurent en Annexe I (confidentielle), déposée au même coffre et soumise aux mêmes droits d’accès.</p>
      <p><b>Article 4 · Confidentialité et traçabilité.</b> Toute consultation, partage ou export du présent acte est consigné au journal inviolable FOOTPASS&nbsp;; chaque export porte un filigrane nominatif.</p>
      {children}
      <CfV3PFoot />
    </div>
  );
}

// ═══ MÉDICAL · compte rendu d'imagerie / bilan ═══
function CfV3PaperMed({ doc, children }) {
  const pa = cf3PartyA(doc);
  const irm = /irm|echo|radio|imagerie/.test(cfDeacc(doc.title));
  return (
    <div className="cf3-paper med">
      <CfV3Wm doc={doc} />
      <div className="cf3-mhead">
        <span>
          <b>CENTRE MÉDICO-SPORTIF INTERNATIONAL (DÉMO)</b>
          <em>Unité d’imagerie et de médecine du sport · 11 av. d’Ostende, Monaco</em>
        </span>
        <span className="cf3-mref">Réf. {doc.hash.split(' · ')[0]}-26<br />Le 13/07/2026</span>
      </div>
      <div className="cf3-mpat"><b>Patient</b> {pa.short} · né le {pa.dob} · <b>Prescripteur</b> Staff médical · <b>Dossier</b> FOOTPASS (empreinte {doc.hash})</div>
      <div className="cf3-mtitle">COMPTE RENDU · {doc.title.toUpperCase()}</div>
      <div className="cf3-psec">Indication</div>
      <p>Suivi du sportif professionnel. {irm ? 'Douleurs mécaniques récentes à l’effort, sans traumatisme aigu rapporté.' : 'Contrôle périodique dans le cadre du protocole de suivi longitudinal.'}</p>
      <div className="cf3-psec">Technique</div>
      <p>{irm ? 'Acquisitions sagittales, coronales et axiales pondérées T1 et DP FatSat. Examen conduit sans injection de produit de contraste.' : 'Prélèvements et mesures réalisés selon le protocole standardisé du centre, à jeun, matériel à usage unique.'}</p>
      <div className="cf3-psec">Résultats</div>
      <p>· Structures examinées d’aspect normal, sans anomalie de signal significative.</p>
      <p>· {irm ? 'Ménisques continus, sans fissure décelable ; cartilage fémoro-tibial conservé.' : 'Paramètres biologiques dans les normes du sportif de haut niveau.'}</p>
      <p>· Discrète surcharge fonctionnelle, aspécifique, à corréler à la clinique.</p>
      <div className="cf3-psec">Conclusion</div>
      <p><b>Examen sans lésion structurelle significative.</b> Reprise autorisée selon tolérance&nbsp;; réévaluation clinique conseillée à 10 jours.</p>
      {children}
      <div className="cf3-msig"><span>Dr H. MARTIN · Médecine du sport</span><i className="cf3-ink small">H. Martin</i></div>
      <CfV3PFoot />
    </div>
  );
}

// ═══ PERFORMANCE · rapport de données ═══
function CfV3PaperPerf({ doc, children }) {
  const pa = cf3PartyA(doc);
  return (
    <div className="cf3-paper med perf">
      <CfV3Wm doc={doc} />
      <div className="cf3-mhead">
        <span>
          <b>CELLULE PERFORMANCE · CLASSICO SPORT (DÉMO)</b>
          <em>Analyse physique & vidéo · données GPS 10 Hz</em>
        </span>
        <span className="cf3-mref">Période<br />Juin 2026</span>
      </div>
      <div className="cf3-mpat"><b>Athlète</b> {pa.short} · <b>Document</b> {doc.title} · empreinte {doc.hash}</div>
      <div className="cf3-mtitle">RAPPORT DE PERFORMANCE</div>
      <table className="cf3-tbl">
        <tbody>
          <tr><td>Distance totale moyenne / séance</td><td>10,8 km</td></tr>
          <tr><td>Vitesse maximale</td><td>34,2 km/h</td></tr>
          <tr><td>Sprints &gt; 25 km/h</td><td>24</td></tr>
          <tr><td>Charge hebdomadaire</td><td>412 UA</td></tr>
          <tr><td>RPE moyen</td><td>6,4 / 10</td></tr>
        </tbody>
      </table>
      <div className="cf3-psec">Analyse</div>
      <p>Volume et intensité en progression contrôlée sur la période. Le profil de sprint reste au-dessus de la médiane du poste&nbsp;; aucune alerte de charge détectée.</p>
      <div className="cf3-psec">Recommandations</div>
      <p>Maintenir deux exposit­ions hebdomadaires à la vitesse maximale. Renforcement excentrique des ischio-jambiers en prévention.</p>
      {children}
      <div className="cf3-msig"><span>J. COSTA · Préparateur physique</span><i className="cf3-ink small">J. Costa</i></div>
      <CfV3PFoot />
    </div>
  );
}

// ═══ ADMINISTRATIF · facture OU attestation ═══
function CfV3PaperAdm({ doc, children }) {
  const pa = cf3PartyA(doc);
  const partB = cf3PartBSafe(doc);
  const invoice = /facture|note de frais|honoraires|commission/.test(cfDeacc(doc.title));
  if (invoice) {
    return (
      <div className="cf3-paper med adm">
        <CfV3Wm doc={doc} />
        <div className="cf3-mhead">
          <span>
            <b>CLASSICO SPORT SA (DÉMO)</b>
            <em>Rue du Rhône 42, 1204 Genève · IDE CHE-000.000.000</em>
          </span>
          <span className="cf3-mref">Facture N° 2026-118<br />Le 13/07/2026</span>
        </div>
        <div className="cf3-mpat"><b>Adressée à</b> {partB}{CF3_ORG_INFO[partB] && CF3_ORG_INFO[partB].addr ? ' · ' + CF3_ORG_INFO[partB].addr : ''}</div>
        <div className="cf3-mtitle">{doc.title.toUpperCase()}</div>
        <table className="cf3-tbl inv">
          <tbody>
            <tr><td>Honoraires de représentation · saison 2025/26</td><td>12 500,00 €</td></tr>
            <tr><td>Frais administratifs et de dossier</td><td>250,00 €</td></tr>
            <tr><td>TVA (prestation intracommunautaire · 0 %)</td><td>0,00 €</td></tr>
            <tr className="tot"><td>TOTAL DÛ (TTC)</td><td>12 750,00 €</td></tr>
          </tbody>
        </table>
        <div className="cf3-psec">Règlement</div>
        <p>Par virement sous 30 jours · IBAN CH00 0000 0000 0000 0000 0 (DÉMO). Escompte néant&nbsp;; pénalités de retard au taux légal. Pièce conservée au coffre FOOTPASS, empreinte {doc.hash}.</p>
        {children}
        <CfV3PFoot />
      </div>
    );
  }
  return (
    <div className="cf3-paper med adm">
      <CfV3Wm doc={doc} />
      <div className="cf3-mhead">
        <span>
          <b>SERVICE ADMINISTRATIF · CLASSICO SPORT (DÉMO)</b>
          <em>Gestion des titres, voyages et pièces officielles</em>
        </span>
        <span className="cf3-mref">Réf. {doc.hash.split(' · ')[0]}<br />Le 13/07/2026</span>
      </div>
      <div className="cf3-mtitle">ATTESTATION · {doc.title.toUpperCase()}</div>
      <p>Le service soussigné atteste que la pièce «&nbsp;{doc.title}&nbsp;» concernant <b>{pa.short}</b> a été contrôlée, numérisée en haute définition et déposée au coffre-fort FOOTPASS.</p>
      <div className="cf3-psec">Détails</div>
      <p>· Titulaire&nbsp;: {pa.n}.</p>
      <p>· Statut&nbsp;: {doc.meta}.</p>
      <p>· Empreinte d’intégrité&nbsp;: {doc.hash} (vérifiable à tout moment).</p>
      <div className="cf3-psec">Validité</div>
      <p>La présente attestation vaut pour toute démarche auprès des clubs, fédérations et autorités compétentes, dans la limite de la validité de la pièce d’origine.</p>
      {children}
      <div className="cf3-msig"><span>Pour le service · S. KEÏTA</span><i className="cf3-ink small">S. Keïta</i></div>
      <CfV3PFoot />
    </div>
  );
}

// ═══ COMMUNICATION · épreuve avant publication ═══
function CfV3PaperCom({ doc, children }) {
  const pa = cf3PartyA(doc);
  const partB = cf3PartBSafe(doc);
  return (
    <div className="cf3-paper med com">
      <CfV3Wm doc={doc} />
      <div className="cf3-mhead">
        <span>
          <b>{(partB === 'AS Monaco' ? 'SERVICE COMMUNICATION' : partB.toUpperCase())} (DÉMO)</b>
          <em>Épreuve soumise à validation avant publication</em>
        </span>
        <span className="cf3-mref">BAT N° 26-042<br />Le 13/07/2026</span>
      </div>
      <div className="cf3-mtitle com">{doc.title}</div>
      <p className="cf3-chapo">{pa.short}&nbsp;: une trajectoire qui s’accélère. Entre exigence quotidienne et échéances qui comptent, retour sur une saison charnière · et sur ce qui vient.</p>
      <p>«&nbsp;Je veux progresser là où ça se voit moins&nbsp;: les courses sans ballon, la constance. Le reste suit&nbsp;», confie l’intéressé, entouré d’un staff qui pèse chaque étape.</p>
      <p>Le document présent constitue une épreuve de travail&nbsp;: citations, visuels et légendes restent soumis à validation écrite avant toute diffusion. Toute reproduction est interdite avant le bon à tirer.</p>
      <div className="cf3-batbox"><b>BON À TIRER</b><span>La signature ci-dessous vaut validation définitive du contenu pour publication.</span></div>
      {children}
      <CfV3PFoot />
    </div>
  );
}

function CfV3PaperBody({ doc, children }) {
  if (doc.cat === 'med') return <CfV3PaperMed doc={doc}>{children}</CfV3PaperMed>;
  if (doc.cat === 'perf') return <CfV3PaperPerf doc={doc}>{children}</CfV3PaperPerf>;
  if (doc.cat === 'adm') return <CfV3PaperAdm doc={doc}>{children}</CfV3PaperAdm>;
  if (doc.cat === 'com') return <CfV3PaperCom doc={doc}>{children}</CfV3PaperCom>;
  return <CfV3PaperJur doc={doc}>{children}</CfV3PaperJur>;
}

Object.assign(window, { CfV3PaperBody, cf3PartB, cf3PartBSafe, cf3PartyA });
