Outiref

Code source de l'URL : http://www.aptevia.fr

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta name="robots" content="index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1">

  <title>Cabinet APTEVIA – Tests psychotechniques agréés pour le permis de conduire</title>
  <meta name="description" content="Cabinet agréé APTEVIA : tests psychotechniques obligatoires après suspension, annulation ou invalidation du permis de conduire.">
  <link rel="canonical" href="https://www.aptevia.fr/">

  <script>
    window.BASE_URL = "https://aptevia.fr/";
    window.RDV_ONLINE_ENABLED = true;
    window.APTEVIA_PAYMENT_ENABLED = true;
  </script>

  <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://aptevia.fr/#organization","name":"APTEVIA","url":"https://aptevia.fr","logo":"https://aptevia.fr/assets/img/logo.png","email":"contact@aptevia.fr","address":{"@type":"PostalAddress","streetAddress":"2 rue de Mérouville","postalCode":"28310","addressLocality":"Intréville","addressCountry":"FR"},"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"contact@aptevia.fr","availableLanguage":["fr-FR"]}],"sameAs":[]},{"@type":"LocalBusiness","@id":"https://aptevia.fr/#localbusiness","name":"APTEVIA","url":"https://aptevia.fr","image":"https://aptevia.fr/assets/img/logo.png","logo":"https://aptevia.fr/assets/img/logo.png","email":"contact@aptevia.fr","address":{"@type":"PostalAddress","streetAddress":"2 rue de Mérouville","postalCode":"28310","addressLocality":"Intréville","addressCountry":"FR"},"parentOrganization":{"@id":"https://aptevia.fr/#organization"},"areaServed":["Essonne (91)","Eure-et-Loir (28)","Loiret (45)","Étampes","Pithiviers","Angerville","Intréville"],"availableLanguage":["fr-FR"],"knowsAbout":["Test psychotechnique","Tests psychotechniques","Tests psychotechniques pour le permis de conduire","Évaluation psychotechnique","Aptitude à la conduite","Suspension du permis","Annulation du permis","Invalidation du permis","Lettre 3F","Lettre 44","Lettre 48SI"]},{"@type":"WebSite","@id":"https://aptevia.fr/#website","url":"https://aptevia.fr","name":"APTEVIA","publisher":{"@id":"https://aptevia.fr/#organization"}},{"@type":"WebPage","@id":"https://www.aptevia.fr/#webpage","url":"https://www.aptevia.fr/","name":"Cabinet APTEVIA – Tests psychotechniques agréés pour le permis de conduire","description":"Cabinet agréé APTEVIA : tests psychotechniques obligatoires après suspension, annulation ou invalidation du permis de conduire.","inLanguage":"fr-FR","isPartOf":{"@id":"https://aptevia.fr/#website"},"publisher":{"@id":"https://aptevia.fr/#organization"}}]}</script>

  <link rel="icon" href="https://aptevia.fr/favicon.ico" sizes="any">
  <link rel="icon" type="image/svg+xml" href="https://aptevia.fr/favicon.svg">
  <link rel="icon" type="image/png" href="https://aptevia.fr/favicon-96x96.png" sizes="96x96">
  <link rel="apple-touch-icon" href="https://aptevia.fr/apple-touch-icon.png">
  <link rel="manifest" href="https://aptevia.fr/site.webmanifest">
  <meta name="theme-color" content="#002F3F">

  <link rel="stylesheet" href="https://aptevia.fr/assets/css/theme_aptevia.css?v=1.11">
  <link rel="stylesheet" href="https://aptevia.fr/assets/css/style.css?v=1.11">
  <link rel="stylesheet" href="https://aptevia.fr/assets/css/aptevia.css?v=1.11">
  <link rel="stylesheet" href="https://aptevia.fr/assets/css/ia.css?v=1.11">
  <link rel="stylesheet" href="https://aptevia.fr/assets/css/ia_aptevia.css?v=1.11">

  <link rel="stylesheet" href="https://aptevia.fr/assets/css/rdv.css?v=1.11">

  <script src="https://aptevia.fr/assets/js/main.js?v=1.11" defer></script>
  <script src="https://aptevia.fr/admin/assets/js/popup_login.js?v=1.1" defer></script>




</head>
<body>

<header class="site-header">
  <div class="header-container">

    <!-- Logo -->
    <div class="logo">
      <a href="https://aptevia.fr/index_site.php">
        <img src="https://aptevia.fr/assets/img/logo.png" alt="Cabinet APTEVIA">
      </a>
    </div>

    <!-- Nav desktop -->
    <nav class="main-nav" id="mainNav">
      <ul>
        <li><a href="https://aptevia.fr/index_site.php">Accueil</a></li>
        <li><a href="https://aptevia.fr/pages/a-propos.php">À propos</a></li>
        <li><a href="https://aptevia.fr/pages/devis_pro.php">Offre Entreprises</a></li>
        <li><a href="https://aptevia.fr/pages/methode_evaluation.php">Méthode d'évaluation</a></li>
        <li><a href="https://aptevia.fr/pages/contact.php">Contact</a></li>
        <li><a href="https://aptevia.fr/centres/">Centres</a></li>
       <!-- <li><a href="https://aptevia.fr/pages/blog/">Blog</a></li>-->
      </ul>
    </nav>

    <!-- Séparateur vertical -->
    <div class="header-sep"></div>

    <!-- Actions desktop -->
    <div class="header-right">
              <a href="https://aptevia.fr/pages/rendezvous/compte/connexion_client.php" class="btn-header client">
          Connexion
        </a>
      
      <a href="https://aptevia.fr/admin/login.php" class="btn-header pro" id="btnEspacePro">
        Espace Pro
      </a>

      <a href="https://aptevia.fr/pages/rendezvous/prendre_rdv.php" class="btn-header rdv">
        Prendre rendez-vous
      </a>
    </div>

    <!-- Bouton hamburger mobile -->
    <button class="header-burger" id="headerBurger" aria-label="Menu" aria-expanded="false" aria-controls="mobileMenu">
      <span></span>
      <span></span>
      <span></span>
    </button>

  </div>

  <!-- Menu mobile -->
  <div class="mobile-menu" id="mobileMenu" aria-hidden="true" style="display:none;">
    <nav class="mobile-menu__nav">
      <a href="https://aptevia.fr/index_site.php">Accueil</a>
      <a href="https://aptevia.fr/pages/a-propos.php">À propos</a>
      <a href="https://aptevia.fr/pages/devis_pro.php">Offre Entreprises</a>
      <a href="https://aptevia.fr/pages/methode_evaluation.php">Méthode d'évaluation</a>
      <a href="https://aptevia.fr/pages/contact.php">Contact</a>
      <a href="https://aptevia.fr/centres/">Centres</a>
      <a href="https://aptevia.fr/pages/blog/">Blog</a>
    </nav>
    <div class="mobile-menu__actions">
      <a href="https://aptevia.fr/pages/rendezvous/prendre_rdv.php" class="mob-btn mob-btn--rdv">
        Prendre rendez-vous
      </a>
              <a href="https://aptevia.fr/pages/rendezvous/compte/connexion_client.php" class="mob-btn mob-btn--ghost">
          Connexion
        </a>
            <a href="https://aptevia.fr/admin/login.php" class="mob-btn mob-btn--dark">
        Espace Pro
      </a>
    </div>
  </div>

</header>

<script>
(function() {
  var burger = document.getElementById('headerBurger');
  var menu   = document.getElementById('mobileMenu');
  if (!burger || !menu) return;
  burger.addEventListener('click', function() {
    var open = menu.style.display === 'block';
    menu.style.display = open ? 'none' : 'block';
    burger.classList.toggle('is-open', !open);
    burger.setAttribute('aria-expanded', !open);
    menu.setAttribute('aria-hidden', open);
  });
})();
</script>

<style>
/* ── Popup ── */
#pro-login-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:9999;align-items:center;justify-content:center}
.pro-popup{background:#f7f4ef;border-radius:10px;max-width:480px;width:90%;padding:25px;position:relative;box-shadow:0 10px 30px rgba(0,0,0,0.25)}
.pro-login-title{color:#002f3f;text-align:center;margin-bottom:15px}
.pro-form-group{margin-bottom:15px}
.pro-input{width:100%;padding:12px;border-radius:8px;border:1px solid #ccc;background:#fff}
.btn-container{display:flex;gap:15px;justify-content:center;margin-top:15px}
.btn-pro-main{flex:1;background:#002f3f;color:white;padding:12px;border:none;border-radius:999px;cursor:pointer}
.btn-pro-secondary{flex:1;background:#c0b8ae;color:#002f3f;padding:12px;border:none;border-radius:999px;cursor:pointer}
#pro-login-close{position:absolute;top:8px;right:12px;border:none;background:transparent;font-size:26px;cursor:pointer}

/* ── Centres ── */
.ap-centres-home{padding:60px 20px;background:#ffffff}
.ap-centres-wrap{max-width:1100px;margin:0 auto;border:1px solid #e6e2db;border-radius:18px;background:#fff;box-shadow:0 10px 25px rgba(0,0,0,0.05);padding:26px}
.ap-centres-title{color:#002f3f;font-size:1.8rem;margin:0 0 8px;text-align:center}
.ap-centres-subtitle{max-width:900px;margin:0 auto;text-align:center;color:#333;font-size:1.05rem;line-height:1.5}
.ap-centres-grid{margin-top:22px;display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:900px){.ap-centres-grid{grid-template-columns:1fr 1fr}}
.ap-centre-card{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid #eee;border-radius:14px;padding:16px;text-decoration:none;background:#f7f4ef;transition:all .15s ease}
.ap-centre-card:hover{border-color:#d8d2c8;transform:translateY(-1px);box-shadow:0 10px 20px rgba(0,0,0,0.06)}
.ap-centre-card h3{margin:0;color:#002f3f;font-size:1.1rem;line-height:1.35}
.ap-centre-card p{margin:6px 0 0;color:#333;font-size:0.95rem;opacity:0.9}
.ap-centre-arrow{color:#002f3f;opacity:0.5;font-size:1.3rem;margin-top:2px;flex:0 0 auto}
.ap-centres-bottom{margin-top:18px;display:flex;gap:14px;flex-direction:column;align-items:center;text-align:center}
.ap-centres-bottom p{margin:0;max-width:950px;color:#333;font-size:.95rem;line-height:1.5}
.ap-centres-btn{display:inline-block;padding:12px 18px;border-radius:999px;background:#002f3f;color:#fff;text-decoration:none;font-weight:600;transition:all .15s ease}
.ap-centres-btn:hover{background:#013a4f;transform:translateY(-1px)}

/* ── 4 cartes situations ── */
.ap-situations{padding:60px 20px;background:#ffffff}
.ap-situations-title{text-align:center;color:#002f3f;font-size:1.7rem;margin:0 0 10px}
.ap-situations-intro{text-align:center;color:#555;font-size:1rem;max-width:700px;margin:0 auto 36px;line-height:1.6}
.ap-situations-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;max-width:1100px;margin:0 auto}
.ap-sit-card{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.07);transition:transform .18s ease,box-shadow .18s ease;background:#fff;border:1px solid #e8e4de}
.ap-sit-card:hover{transform:translateY(-4px);box-shadow:0 10px 28px rgba(0,0,0,.12)}
.ap-sit-card-top{padding:20px 20px 16px;display:flex;align-items:center;gap:12px}
.ap-sit-card--suspension .ap-sit-card-top{background:#fde8e8}
.ap-sit-card--annulation .ap-sit-card-top{background:#e8edf5}
.ap-sit-card--invalidation .ap-sit-card-top{background:#fef3e2}
.ap-sit-card--lucie .ap-sit-card-top{background:#e6f0ee}
.ap-sit-icon{font-size:1.8rem;line-height:1;flex-shrink:0}
.ap-sit-card-label{font-size:1.1rem;font-weight:700;color:#002f3f;line-height:1.2}
.ap-sit-card-label small{display:block;font-size:.78rem;font-weight:400;color:#666;margin-top:2px}
.ap-sit-card-body{padding:16px 20px;flex:1;display:flex;flex-direction:column;gap:10px}
.ap-sit-card-body p{margin:0;color:#444;font-size:.92rem;line-height:1.6}
.ap-sit-card-body ul{margin:0;padding-left:18px;color:#444;font-size:.92rem;line-height:1.7}
.ap-sit-more{font-size:.85rem;color:#002f3f;font-style:italic;opacity:.85}
.ap-sit-card-footer{padding:0 20px 20px}
.ap-sit-btn{display:block;text-align:center;padding:11px 16px;border-radius:999px;font-weight:700;font-size:.88rem;text-decoration:none;transition:all .15s ease;width:100%;box-sizing:border-box}
.ap-sit-btn--rdv{background:#002f3f;color:#fff}
.ap-sit-btn--rdv:hover{background:#013a4f;color:#fff;text-decoration:none}
.ap-sit-btn--lucie{background:#1d9e75;color:#fff}
.ap-sit-btn--lucie:hover{background:#167a5b;color:#fff;text-decoration:none}
@media(max-width:600px){.ap-situations-grid{grid-template-columns:1fr}}

/* ── Avis ── */
.ap-avis-home{padding:48px 20px;background:#ffffff}
.ap-avis-wrap{max-width:960px;margin:0 auto;display:flex;align-items:center;gap:40px;flex-wrap:wrap}
.ap-avis-image{flex:0 0 auto}
.ap-avis-image img{width:200px;border-radius:16px;box-shadow:0 6px 18px rgba(0,0,0,.10);transition:transform .2s ease;display:block}
.ap-avis-image img:hover{transform:scale(1.03)}
.ap-avis-content{flex:1;min-width:240px}
.ap-avis-title{margin:0 0 8px;font-size:1.35rem;color:#002f3f}
.ap-avis-sub{margin:0 0 12px;color:#666;font-size:.95rem;line-height:1.55}
.ap-avis-stars{font-size:1.5rem;color:#f5a623;margin-bottom:10px;letter-spacing:2px}
.ap-avis-tags{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.ap-avis-tags span{background:#f0f9e0;color:#3a5c00;padding:4px 12px;border-radius:999px;font-size:.85rem;font-weight:600;border:1px solid #c8e89a}
.ap-avis-btn{display:inline-block;padding:11px 26px;background:#002f3f;color:#fff;border-radius:999px;font-weight:700;font-size:.95rem;text-decoration:none;transition:background .15s}
.ap-avis-btn:hover{background:#001e29;text-decoration:none}
@media(max-width:640px){.ap-avis-wrap{flex-direction:column;align-items:center;text-align:center}.ap-avis-tags{justify-content:center}.ap-avis-image img{width:160px}}
</style>

<main class="page">

<!-- HERO -->
<section style="text-align:center;padding:80px 20px;background:#f7f4ef;">
    <h1 style="color:#002f3f;font-size:2.2rem;">
        Retrouvez votre capacité à conduire avec <span style="color:#A89E8F;">APTEVIA</span>
    </h1>
    <p style="max-width:800px;margin:20px auto;font-size:1.1rem;color:#333;">
        Cabinet agréé pour les <strong>tests psychotechniques</strong> obligatoires
        après suspension, annulation ou invalidation du permis de conduire.
    </p>
    <a href="https://aptevia.fr/pages/rendezvous/prendre_rdv.php" class="btn-header rdv">Prendre rendez-vous</a>
</section>

<!-- =========================================================
     4 CARTES SITUATIONS — NOUVEAU V4.5
============================================================= -->
<section class="ap-situations">
    <h2 class="ap-situations-title">Quelle est votre situation ?</h2>
    <p class="ap-situations-intro">
        Votre permis a été suspendu, annulé ou invalidé ?<br>
        Sélectionnez votre situation pour connaître les étapes à suivre.
    </p>
    <div class="ap-situations-grid">

        <!-- Suspension -->
        <div class="ap-sit-card ap-sit-card--suspension">
            <div class="ap-sit-card-top">
                <span class="ap-sit-icon">🔴</span>
                <div class="ap-sit-card-label">Suspension<small>Retrait temporaire du permis</small></div>
            </div>
            <div class="ap-sit-card-body">
                <p>Votre permis a été suspendu suite à une infraction :</p>
                <ul>
                    <li><strong>Par la préfecture</strong> — décision administrative</li>
                    <li><strong>Par le tribunal</strong> — décision judiciaire</li>
                </ul>
                <span class="ap-sit-more">Découvrez les différentes étapes pour récupérer votre permis de conduire.</span>
            </div>
            <div class="ap-sit-card-footer">
                <a href="https://aptevia.fr/pages/situations/suspension.php" class="ap-sit-btn ap-sit-btn--rdv">En savoir plus →</a>
            </div>
        </div>

        <!-- Annulation -->
        <div class="ap-sit-card ap-sit-card--annulation">
            <div class="ap-sit-card-top">
                <span class="ap-sit-icon">⚫</span>
                <div class="ap-sit-card-label">Annulation<small>Décision judiciaire</small></div>
            </div>
            <div class="ap-sit-card-body">
                <p>Votre permis a été annulé par décision judiciaire.</p>
                <span class="ap-sit-more">Découvrez les différentes étapes pour récupérer votre permis de conduire.</span>
            </div>
            <div class="ap-sit-card-footer">
                <a href="https://aptevia.fr/pages/situations/annulation.php" class="ap-sit-btn ap-sit-btn--rdv">En savoir plus →</a>
            </div>
        </div>

        <!-- Invalidation -->
        <div class="ap-sit-card ap-sit-card--invalidation">
            <div class="ap-sit-card-top">
                <span class="ap-sit-icon">🟠</span>
                <div class="ap-sit-card-label">Invalidation<small>Perte totale de points</small></div>
            </div>
            <div class="ap-sit-card-body">
                <p>Votre permis a été invalidé par perte totale de points.</p>
                <span class="ap-sit-more">Comment retrouver la possibilité de conduire.</span>
            </div>
            <div class="ap-sit-card-footer">
                <a href="https://aptevia.fr/pages/situations/invalidation.php" class="ap-sit-btn ap-sit-btn--rdv">En savoir plus →</a>
            </div>
        </div>

        <!-- Lucie -->
        <div class="ap-sit-card ap-sit-card--lucie">
            <div class="ap-sit-card-top">
                <span class="ap-sit-icon">🤖</span>
                <div class="ap-sit-card-label">Je ne sais pas où j'en suis<small>Laissez Lucie vous guider</small></div>
            </div>
            <div class="ap-sit-card-body">
                <p>Vous avez reçu un courrier mais vous ne comprenez pas votre situation ?</p>
                <p><strong>Lucie</strong>, notre assistante IA, analyse votre cas et vous oriente vers les bonnes démarches en quelques minutes.</p>
            </div>
            <div class="ap-sit-card-footer">
                <a href="https://aptevia.fr/pages/auto-evaluation.php" class="ap-sit-btn ap-sit-btn--lucie">Parler à Lucie →</a>
            </div>
        </div>

    </div>
</section>



<!-- CENTRES -->
<section class="ap-centres-home">
    <div class="ap-centres-wrap">
        <h2 class="ap-centres-title">Nos centres agréés</h2>
        <p class="ap-centres-subtitle">Choisissez votre ville pour consulter les informations du centre et accéder aux créneaux disponibles. APTEVIA intervient actuellement à <strong>Étampes</strong>, <strong>Angerville</strong>, <strong>Intréville</strong> et <strong>Pithiviers</strong>.</p>
        <div class="ap-centres-grid">
            <a class="ap-centre-card" href="https://aptevia.fr//centres/etampes/"><div><h3>Centre de test psychotechnique à Étampes</h3><p>Centre agréé • Accès simple • Créneaux réguliers</p></div><div class="ap-centre-arrow">→</div></a>
            <a class="ap-centre-card" href="https://aptevia.fr//centres/angerville/"><div><h3>Centre de test psychotechnique à Angerville</h3><p>Centre agréé • RDV rapides • Parcours clair</p></div><div class="ap-centre-arrow">→</div></a>
            <a class="ap-centre-card" href="https://aptevia.fr//centres/intreville/"><div><h3>Centre de test psychotechnique à Intréville</h3><p>Proche de vous • Informations pratiques • Accueil sur place</p></div><div class="ap-centre-arrow">→</div></a>
            <a class="ap-centre-card" href="https://aptevia.fr//centres/pithiviers/"><div><h3>Centre de test psychotechnique à Pithiviers</h3><p>Centre-ville • Facile d'accès • Créneaux disponibles</p></div><div class="ap-centre-arrow">→</div></a>
        </div>
        <div class="ap-centres-bottom">
            <p>Chaque centre APTEVIA est agréé et permet de passer le test psychotechnique requis dans le cadre d'une <strong>suspension</strong>, d'une <strong>annulation</strong> ou d'une <strong>invalidation</strong> du permis, avant la visite médicale.</p>
            <a class="ap-centres-btn" href="https://aptevia.fr//centres/">Voir tous les centres</a>
        </div>
    </div>
</section>

<!-- PROCESSUS -->
<section style="padding:60px 20px;background:#f7f4ef;">
    <div style="max-width:1100px;margin:0 auto;text-align:center;">
        <h2 style="color:#002f3f;">Comment se déroule votre démarche ?</h2>
        <div class="processus-row">
            <div class="consultant-card"><h3>1. Prise de rendez-vous</h3><p>Choisissez la ville, la date et l'heure selon les créneaux disponibles.</p></div>
            <div class="consultant-card"><h3>2. Tests psychotechniques</h3><p>Effectués dans un centre agréé, par un psychologue habilité.</p></div>
            <div class="consultant-card"><h3>3. Attestation immédiate</h3><p>Remise de l'attestation pour votre visite médicale en préfecture.</p></div>
        </div>
    </div>
</section>

<!-- AVIS -->
<section class="ap-avis-home">
    <div class="ap-avis-wrap">
        <div class="ap-avis-image">
            <a href="https://aptevia.fr/pages/avis.php"><img src="https://aptevia.fr/assets/img/avis-clients.png" alt="Avis clients APTEVIA" width="220" loading="lazy"></a>
        </div>
        <div class="ap-avis-content">
            <h2 class="ap-avis-title">Ce que disent nos clients</h2>
            <p class="ap-avis-sub">Transparence et qualité de service sont au cœur de notre engagement.</p>
            <div class="ap-avis-stars" aria-label="Note moyenne">★★★★★</div>
            <div class="ap-avis-tags"><span>✔ Accueil</span><span>✔ Réactivité</span><span>✔ Conseils</span></div>
            <a href="https://aptevia.fr/pages/avis.php" class="ap-avis-btn">Donner mon avis</a>
        </div>
    </div>
</section>

<!-- FAQ IA
<section class="faq-section">
    <div class="faq-container">
        <h2>FAQ - Vos questions fréquentes</h2>
        <p class="faq-subtitle">Posez une question sur votre situation (ex : « J'ai reçu une lettre 3F, que faire ? »)</p>
        <div id="faq-box">
            <input type="text" id="faq-input" placeholder="Saisissez votre question...">
            <button id="faq-send">Envoyer</button>
            <div id="faq-status"></div>
            <div id="psy-loader"><div class="psy-circle"><span>PSY</span></div></div>
            <div id="faq-response"></div>
            <div id="faq-progress"><div id="faq-progress-bar"></div></div>
            <div id="faq-share">
                <button data-type="copy">📋 Copier</button>
                <button data-type="email">📧 Email</button>
                <button data-type="facebook">📘 Facebook</button>
                <button data-type="whatsapp">💬 WhatsApp</button>
            </div>
        </div>
    </div>-->
</section>

</main>

<!-- <script defer src="https://aptevia.fr/assets/js/ia_aptevia_v23.js"></script> -->

<!-- POPUP PRO -->
<div id="pro-login-overlay">
    <div class="pro-popup">
        <button type="button" id="pro-login-close">&times;</button>
        <div class="pro-login-box">
            <h2 class="pro-login-title">Connexion espace pro</h2>
            <div class="pro-login-sub">Accès réservé aux centres agréés et administrateurs APTEVIA.</div>
            <div id="login-step">
                <form id="pro-login-form" method="POST">
                    <input type="hidden" name="from_popup" value="1">
                    <div class="pro-form-group"><label for="pro-login-email">Adresse e-mail</label><input type="email" id="pro-login-email" name="email" class="pro-input" required></div>
                    <div class="pro-form-group"><label for="pro-login-password">Mot de passe</label><input type="password" id="pro-login-password" name="password" class="pro-input" required></div>
                    <p class="otp-info">Après validation, un code à usage unique (OTP) vous sera envoyé par e-mail.</p>
                    <div class="btn-container">
                        <button type="submit" class="btn-pro-main">Continuer</button>
                        <button type="button" class="btn-pro-secondary" id="pro-login-cancel">Annuler</button>
                    </div>
                    <div style="text-align:center;margin-top:12px;"><a href="#" id="pro-forgot-open" style="color:#002f3f;text-decoration:none;">Mot de passe oublié ?</a></div>
                </form>
            </div>
            <div id="otp-step" style="display:none;">
                <h3 class="pro-login-title">Vérification du code</h3>
                <p id="otp-info-message">Un code à 6 chiffres vous a été envoyé.</p>
                <input type="text" id="otp-code" maxlength="6" class="pro-input" style="font-size:28px;text-align:center;letter-spacing:8px;">
                <div class="btn-container">
                    <button class="btn-pro-main" type="button" id="btnValidateOTP">Valider le code</button>
                    <button class="btn-pro-secondary" type="button" id="cancel-otp">Annuler</button>
                </div>
            </div>
            <div id="forgot-step" style="display:none;">
                <h3 class="pro-login-title">Réinitialisation du mot de passe</h3>
                <p id="forgot-info-message">Saisissez votre adresse email.<br>Vous recevrez un lien de réinitialisation.</p>
                <input type="email" id="forgot-email" class="pro-input" placeholder="Votre adresse e-mail">
                <div class="btn-container">
                    <button class="btn-pro-main" type="button" id="btnSendForgot">Envoyer</button>
                    <button class="btn-pro-secondary" type="button" id="cancel-forgot">Annuler</button>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener("DOMContentLoaded",function(){
    const overlay=document.getElementById('pro-login-overlay'),btnOpen=document.getElementById('btnEspacePro'),btnClose=document.getElementById('pro-login-close'),btnCancel=document.getElementById('pro-login-cancel'),loginForm=document.getElementById('pro-login-form'),loginStep=document.getElementById('login-step'),otpStep=document.getElementById('otp-step'),forgotStep=document.getElementById('forgot-step'),otpInput=document.getElementById('otp-code'),otpBtn=document.getElementById('btnValidateOTP'),otpCancelBtn=document.getElementById('cancel-otp'),forgotOpen=document.getElementById('pro-forgot-open'),forgotInput=document.getElementById('forgot-email'),forgotSend=document.getElementById('btnSendForgot'),forgotCancel=document.getElementById('cancel-forgot');
    function openPopup(){overlay.style.display="flex"}
    function closePopup(){overlay.style.display="none";loginStep.style.display="block";otpStep.style.display="none";forgotStep.style.display="none"}
    if(btnOpen)btnOpen.addEventListener("click",(e)=>{e.preventDefault();openPopup()});
    if(btnClose)btnClose.addEventListener("click",closePopup);
    if(btnCancel)btnCancel.addEventListener("click",closePopup);
    overlay.addEventListener("click",(e)=>{if(e.target===overlay)closePopup()});
    loginForm.addEventListener("submit",(e)=>{
        e.preventDefault();const fd=new FormData(loginForm);fd.set("from_popup","1");
        fetch("https://aptevia.fr/admin/auth/login_process.php",{method:"POST",body:fd}).then(r=>r.json()).then(data=>{if(!data.ok){alert(data.message||"Identifiants incorrects.");return}loginStep.style.display="none";otpStep.style.display="block";otpInput.value="";otpInput.focus()}).catch(err=>alert("Erreur : "+err));
    });
    if(forgotOpen)forgotOpen.addEventListener("click",(e)=>{e.preventDefault();loginStep.style.display="none";forgotStep.style.display="block";forgotInput.focus()});
    forgotCancel.addEventListener("click",()=>{forgotStep.style.display="none";loginStep.style.display="block"});
    forgotSend.addEventListener("click",()=>{
        const email=forgotInput.value.trim();if(!email){alert("Veuillez indiquer votre email.");return}
        const fd=new FormData();fd.append("email",email);fd.append("from_popup","1");
        fetch("https://aptevia.fr/admin/auth/forgot_process.php",{method:"POST",body:fd}).then(r=>r.text()).then(txt=>{let data;try{data=JSON.parse(txt)}catch(e){alert("Réponse inattendue :\n\n"+txt);return}if(!data.ok){alert(data.message||"Erreur.");return}alert(data.message||"E-mail envoyé.");forgotStep.style.display="none";loginStep.style.display="block"}).catch(err=>alert("Erreur : "+err));
    });
    otpBtn.addEventListener("click",()=>{
        const code=otpInput.value.trim();if(code.length!==6){alert("Code à 6 chiffres requis.");return}
        const fd=new FormData();fd.append("otp",code);fd.append("from_popup","1");
        fetch("https://aptevia.fr/admin/auth/otp_process.php",{method:"POST",body:fd}).then(r=>r.json()).then(data=>{if(!data.ok){alert(data.message||"Code incorrect.");return}window.location.href=data.redirect_url||"https://aptevia.fr/admin/index.php"}).catch(err=>alert("Erreur serveur : "+err));
    });
    otpCancelBtn.addEventListener("click",()=>{otpStep.style.display="none";loginStep.style.display="block"});
});
</script>

<script>
document.addEventListener("DOMContentLoaded",function(){
    const url=new URL(window.location.href);
    if(url.searchParams.get("reset_ok")==="1"){
        const overlay=document.getElementById("pro-login-overlay");
        if(overlay)overlay.style.display="flex";
        setTimeout(()=>{alert("Votre mot de passe a été réinitialisé avec succès.\nVous pouvez maintenant vous connecter.")},300);
    }
});
</script>

<footer>
    <div class="footer-container">
        <p>&copy; 2026 APTEVIA — Tests psychotechniques agréés.</p>
        <ul class="footer-links">
            <li><a href="https://aptevia.fr/pages/mentions-legales.php">Mentions légales</a></li>
            <li><a href="https://aptevia.fr/pages/politique-confidentialite.php">Confidentialité</a></li>
            <li><a href="https://aptevia.fr/pages/cgv.php">CGV</a></li>
            <li><a href="https://aptevia.fr/pages/cgu.php">CGU</a></li>
            <li><a href="https://aptevia.fr/pages/contact.php">Contact</a></li>
            <li><a href="https://aptevia.fr/pages/bareme-points.php">Bar&egrave;me des points</a></li>
        </ul>

        <!-- Widget statut système -->
        <div class="footer-status">
            <a href="/pages/statut.php" target="_blank" rel="noopener" id="status-badge">
                <span id="status-indicator" class="status-dot"></span>
                <span id="status-label">Statut des services</span>
            </a>
        </div>
    </div>
</footer>

<style>
.footer-status {
    margin-top: 10px;
    font-size: .82rem;
}
.footer-status a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: inherit;
    text-decoration: none;
    opacity: .75;
    transition: opacity .2s;
}
.footer-status a:hover { opacity: 1; }
.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #aaa;
    flex-shrink: 0;
    display: inline-block;
}
.status-dot.operational   { background: #2ecc71; }
.status-dot.degraded      { background: #f39c12; }
.status-dot.partial       { background: #e67e22; }
.status-dot.major         { background: #e74c3c; }
.status-dot.maintenance   { background: #3498db; }
</style>

<!-- ============================================================
     SCRIPTS JAVASCRIPT (communs)
============================================================ -->
<script src="https://aptevia.fr/assets/js/faq_ai.js?v=1.11" defer></script>

<!-- Widget Statuspage : récupère le statut en temps réel -->
<script>
(function() {
    fetch('https://aptevia.statuspage.io/api/v2/status.json')
        .then(function(r) { return r.json(); })
        .then(function(data) {
            var indicator = data.status && data.status.indicator ? data.status.indicator : 'unknown';
            var description = data.status && data.status.description ? data.status.description : 'Statut des services';

            var dot   = document.getElementById('status-indicator');
            var label = document.getElementById('status-label');

            if (!dot || !label) return;

            label.textContent = description;

            var cssClass = 'status-dot ';
            switch (indicator) {
                case 'none':         cssClass += 'operational';  break;
                case 'minor':        cssClass += 'degraded';     break;
                case 'major':        cssClass += 'partial';      break;
                case 'critical':     cssClass += 'major';        break;
                case 'maintenance':  cssClass += 'maintenance';  break;
                default:             cssClass += '';
            }
            dot.className = cssClass;
        })
        .catch(function() {
            // Silencieux si l'API est inaccessible
        });
})();
</script>


<!-- #########################################################
     POPUP CONNEXION ESPACE PRO (injectée globalement)
########################################################## -->
<div id="pro-login-overlay" aria-hidden="true">
  <div class="pro-popup" role="dialog" aria-modal="true" aria-labelledby="pro-login-title">

    <button type="button" id="pro-login-close" aria-label="Fermer">&times;</button>

    <div class="pro-login-box">
      <h2 class="pro-login-title" id="pro-login-title">Connexion espace pro</h2>
      <div class="pro-login-sub">Accès réservé aux centres agréés et administrateurs APTEVIA.</div>

      <!-- =======================
           ÉTAPE 1 : LOGIN
      ======================== -->
      <div id="login-step">
        <form id="pro-login-form" method="POST" autocomplete="on">
          <input type="hidden" name="from_popup" value="1">

          <div class="pro-form-group">
            <label for="pro-login-email">Adresse e-mail</label>
            <input type="email" id="pro-login-email" name="email" class="pro-input" required autocomplete="username">
          </div>

          <div class="pro-form-group">
            <label for="pro-login-password">Mot de passe</label>
            <input type="password" id="pro-login-password" name="password" class="pro-input" required autocomplete="current-password">
          </div>

          <p class="otp-info">
            Après validation, un code à usage unique (OTP) vous sera envoyé par e-mail.
          </p>

          <div class="btn-container">
            <button type="submit" class="btn-pro-main">Continuer</button>
            <button type="button" class="btn-pro-secondary" id="pro-login-cancel">Annuler</button>
          </div>

          <div style="text-align:center; margin-top:12px;">
            <a href="#" id="pro-forgot-open" style="color:#002f3f; text-decoration:none;">Mot de passe oublié ?</a>
          </div>
        </form>
      </div>

      <!-- =======================
           ÉTAPE 2 : OTP
      ======================== -->
      <div id="otp-step" style="display:none;">
        <h3 class="pro-login-title">Vérification du code</h3>
        <p id="otp-info-message">Un code à 6 chiffres vous a été envoyé.</p>

        <input type="text" id="otp-code" maxlength="6" inputmode="numeric"
               class="pro-input" style="font-size:28px; text-align:center; letter-spacing:8px;">

        <div class="btn-container">
          <button class="btn-pro-main" type="button" id="btnValidateOTP">Valider le code</button>
          <button class="btn-pro-secondary" type="button" id="cancel-otp">Annuler</button>
        </div>
      </div>

      <!-- =======================
           ÉTAPE 3 : MOT DE PASSE OUBLIÉ
      ======================== -->
      <div id="forgot-step" style="display:none;">
        <h3 class="pro-login-title">Réinitialisation du mot de passe</h3>

        <p id="forgot-info-message">
          Saisissez votre adresse email.<br>
          Vous recevrez un lien de réinitialisation.
        </p>

        <input type="email" id="forgot-email" class="pro-input" placeholder="Votre adresse e-mail" autocomplete="email">

        <div class="btn-container">
          <button class="btn-pro-main" type="button" id="btnSendForgot">Envoyer</button>
          <button class="btn-pro-secondary" type="button" id="cancel-forgot">Annuler</button>
        </div>
      </div>

    </div>
  </div>
</div>

<!-- Styles (isolés) -->
<style>
  #pro-login-overlay{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.45);
    z-index:9999;
    align-items:center;
    justify-content:center;
  }
  #pro-login-overlay.is-open{ display:flex; }

  .pro-popup{
    background:#f7f4ef;
    border-radius:12px;
    max-width:520px;
    width:min(520px, calc(100vw - 24px));
    padding:22px;
    position:relative;
    box-shadow:0 10px 30px rgba(0,0,0,0.25);
  }
  .pro-login-title{ color:#002f3f; text-align:center; margin:0 0 10px 0; }
  .pro-login-sub{ text-align:center; color:#4e4e4e; font-size:14px; margin-bottom:14px; }

  .pro-form-group{ margin-bottom:14px; }
  .pro-form-group label{ display:block; font-weight:700; margin-bottom:6px; color:#002f3f; }

  .pro-input{
    width:100%;
    padding:12px;
    border-radius:10px;
    border:1px solid #cfd6da;
    background:#fff;
    box-sizing:border-box;
  }

  .otp-info{ color:#4e4e4e; font-size:13px; line-height:1.5; margin:8px 0 0 0; }

  .btn-container{
    display:flex;
    gap:12px;
    justify-content:center;
    margin-top:14px;
    flex-wrap:wrap;
  }
  .btn-pro-main{
    flex:1;
    min-width:160px;
    background:#002f3f;
    color:#fff;
    padding:12px 14px;
    border:none;
    border-radius:999px;
    cursor:pointer;
    font-weight:800;
  }
  .btn-pro-secondary{
    flex:1;
    min-width:160px;
    background:#c0b8ae;
    color:#002f3f;
    padding:12px 14px;
    border:none;
    border-radius:999px;
    cursor:pointer;
    font-weight:800;
  }
  #pro-login-close{
    position:absolute;
    top:8px;
    right:12px;
    border:none;
    background:transparent;
    font-size:26px;
    cursor:pointer;
    color:#002f3f;
  }
</style>

<script>
document.addEventListener("DOMContentLoaded", function () {
  const overlay      = document.getElementById('pro-login-overlay');
  const btnOpen      = document.getElementById('btnEspacePro');
  const btnClose     = document.getElementById('pro-login-close');
  const btnCancel    = document.getElementById('pro-login-cancel');
  const loginForm    = document.getElementById('pro-login-form');

  const loginStep    = document.getElementById('login-step');
  const otpStep      = document.getElementById('otp-step');
  const forgotStep   = document.getElementById('forgot-step');

  const otpInput     = document.getElementById('otp-code');
  const otpBtn       = document.getElementById('btnValidateOTP');
  const otpCancelBtn = document.getElementById('cancel-otp');

  const forgotOpen   = document.getElementById('pro-forgot-open');
  const forgotInput  = document.getElementById('forgot-email');
  const forgotSend   = document.getElementById('btnSendForgot');
  const forgotCancel = document.getElementById('cancel-forgot');

  if (!overlay) return;

  function openPopup(){
    overlay.classList.add('is-open');
    overlay.setAttribute('aria-hidden','false');
    // focus email
    const email = document.getElementById('pro-login-email');
    if (email) setTimeout(()=>email.focus(), 50);
  }

  function closePopup(){
    overlay.classList.remove('is-open');
    overlay.setAttribute('aria-hidden','true');

    // reset steps
    loginStep.style.display  = "block";
    otpStep.style.display    = "none";
    forgotStep.style.display = "none";

    if (otpInput) otpInput.value = "";
    if (forgotInput) forgotInput.value = "";
  }

  // Ouvrir depuis le bouton du header
  if (btnOpen) {
    btnOpen.addEventListener("click", (e) => {
      // IMPORTANT : empêcher navigation vers /admin/login.php
      e.preventDefault();
      openPopup();
    });
  }

  if (btnClose)  btnClose.addEventListener("click", closePopup);
  if (btnCancel) btnCancel.addEventListener("click", closePopup);

  overlay.addEventListener("click", (e) => {
    if (e.target === overlay) closePopup();
  });

  // LOGIN → OTP
  if (loginForm) {
    loginForm.addEventListener("submit", (e) => {
      e.preventDefault();

      const fd = new FormData(loginForm);
      fd.set("from_popup", "1");

      fetch("https://aptevia.fr/admin/auth/login_process.php", {
        method: "POST",
        body: fd
      })
      .then(r => r.json())
      .then(data => {
        if (!data || !data.ok) {
          alert((data && data.message) ? data.message : "Identifiants incorrects.");
          return;
        }
        loginStep.style.display = "none";
        otpStep.style.display   = "block";
        if (otpInput) { otpInput.value=""; otpInput.focus(); }
      })
      .catch(err => alert("Erreur : " + err));
    });
  }

  // MOT DE PASSE OUBLIÉ
  if (forgotOpen) {
    forgotOpen.addEventListener("click", (e) => {
      e.preventDefault();
      loginStep.style.display  = "none";
      otpStep.style.display    = "none";
      forgotStep.style.display = "block";
      if (forgotInput) forgotInput.focus();
    });
  }

  if (forgotCancel) {
    forgotCancel.addEventListener("click", () => {
      forgotStep.style.display = "none";
      loginStep.style.display  = "block";
    });
  }

  if (forgotSend) {
    forgotSend.addEventListener("click", () => {
      const email = (forgotInput ? forgotInput.value.trim() : "");
      if (!email) { alert("Veuillez indiquer votre email."); return; }

      const fd = new FormData();
      fd.append("email", email);
      fd.append("from_popup", "1");

      fetch("https://aptevia.fr/admin/auth/forgot_process.php", {
        method: "POST",
        body: fd
      })
      .then(r => r.text())
      .then(txt => {
        let data;
        try { data = JSON.parse(txt); } catch(e){
          alert("Réponse inattendue du serveur :\n\n" + txt);
          return;
        }
        if (!data.ok) { alert(data.message || "Erreur lors de la demande."); return; }

        alert(data.message || "Un e-mail de réinitialisation vient d'être envoyé.");
        forgotStep.style.display = "none";
        loginStep.style.display  = "block";
      })
      .catch(err => alert("Erreur : " + err));
    });
  }

  // VALIDATION OTP
  if (otpBtn) {
    otpBtn.addEventListener("click", () => {
      const code = (otpInput ? otpInput.value.trim() : "");
      if (code.length !== 6) { alert("Veuillez saisir un code à 6 chiffres."); return; }

      const fd = new FormData();
      fd.append("otp", code);
      fd.append("from_popup", "1");

      fetch("https://aptevia.fr/admin/auth/otp_process.php", {
        method: "POST",
        body: fd
      })
      .then(r => r.json())
      .then(data => {
        if (!data || !data.ok) { alert((data && data.message) ? data.message : "Code incorrect."); return; }
        window.location.href = data.redirect_url ? data.redirect_url : "https://aptevia.fr/admin/index.php";
      })
      .catch(err => alert("Erreur serveur : " + err));
    });
  }

  if (otpCancelBtn) {
    otpCancelBtn.addEventListener("click", () => {
      otpStep.style.display = "none";
      loginStep.style.display = "block";
    });
  }

  // ESC pour fermer
  document.addEventListener('keydown', (e) => {
    if (e.key === 'Escape' && overlay.classList.contains('is-open')) closePopup();
  });
});
</script>

<!-- Matomo (stats.aptevia.net) - RGPD friendly (sans cookies) -->
<script>
  var _paq = window._paq = window._paq || [];
  _paq.push(["disableCookies"]);
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);
  (function () {
    var u = "https://stats.aptevia.net/";
    _paq.push(["setTrackerUrl", u + "matomo.php"]);
    _paq.push(["setSiteId", "1"]);
    var d = document, g = d.createElement("script"), s = d.getElementsByTagName("script")[0];
    g.async = true; g.src = u + "matomo.js";
    s.parentNode.insertBefore(g, s);
  })();
</script>

<script>console.log("FOOTER APTEVIA LOADED V1.5");</script>
</body>
</html>