{"id":2932,"date":"2025-08-14T12:29:17","date_gmt":"2025-08-14T12:29:17","guid":{"rendered":"https:\/\/eliteservicesenegal.com\/?page_id=2932"},"modified":"2025-09-30T16:00:36","modified_gmt":"2025-09-30T16:00:36","slug":"suivi-de-vos-dossiers","status":"publish","type":"page","link":"https:\/\/eliteservicesenegal.com\/index.php\/suivi-de-vos-dossiers\/","title":{"rendered":"CONSULTER SON DOSSIER"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2932\" class=\"elementor elementor-2932\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d5c3937 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d5c3937\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6515e36\" data-id=\"6515e36\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-374de06 elementor-widget elementor-widget-heading\" data-id=\"374de06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Vos Exigences Font Notre Force<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6fe196a elementor-widget elementor-widget-heading\" data-id=\"6fe196a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">VOS DOSSIERS EN TEMPS R\u00c9EL<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-668bf68 elementor-widget elementor-widget-shortcode\" data-id=\"668bf68\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <style>\n      \/* Interface moderne et professionnelle *\/\n      .es-suivi-wrap { \n        max-width: 900px; \n        margin: 32px auto; \n        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; \n        color: #1a202c;\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        border-radius: 20px;\n        padding: 2px;\n        box-shadow: 0 20px 40px rgba(102, 126, 234, 0.1);\n      }\n      \n      .es-inner-wrap {\n        background: white;\n        border-radius: 18px;\n        padding: 40px;\n      }\n      \n      .es-header {\n        text-align: center;\n        margin-bottom: 40px;\n      }\n      \n      .es-title { \n        font-size: 32px; \n        font-weight: 700; \n        margin-bottom: 12px; \n        color: #2d3748;\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        -webkit-background-clip: text;\n        -webkit-text-fill-color: transparent;\n        background-clip: text;\n      }\n      \n      .es-subtitle {\n        font-size: 16px;\n        color: #718096;\n        margin-bottom: 0;\n      }\n      \n      .es-card { \n        background: #ffffff; \n        border: 2px solid #f7fafc; \n        border-radius: 16px; \n        padding: 32px; \n        box-shadow: 0 4px 20px rgba(0,0,0,.08);\n        transition: all 0.3s ease;\n      }\n      \n      .es-card:hover {\n        box-shadow: 0 8px 30px rgba(0,0,0,.12);\n        transform: translateY(-2px);\n      }\n      \n      .es-form { \n        display: grid; \n        gap: 24px; \n      }\n      \n      .es-form-grid {\n        display: grid;\n        grid-template-columns: 1fr;\n        gap: 20px;\n      }\n      \n      @media (min-width: 768px) {\n        .es-form-grid {\n          grid-template-columns: repeat(3, 1fr);\n        }\n      }\n      \n      .es-field { \n        position: relative;\n      }\n      \n      .es-label { \n        font-size: 14px; \n        font-weight: 600;\n        color: #4a5568; \n        margin-bottom: 8px;\n        display: block;\n      }\n      \n      .es-input { \n        width: 100%;\n        border: 2px solid #e2e8f0; \n        border-radius: 12px; \n        padding: 16px 20px; \n        font-size: 16px; \n        outline: none; \n        transition: all 0.2s ease;\n        background: #f8f9fa;\n      }\n      \n      .es-input:focus { \n        border-color: #667eea; \n        box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1);\n        background: white;\n        transform: translateY(-1px);\n      }\n      \n      .es-input:valid {\n        border-color: #10b981;\n      }\n      \n      .es-actions { \n        display: flex; \n        gap: 16px; \n        align-items: center; \n        justify-content: center;\n        margin-top: 8px;\n      }\n      \n      .es-btn { \n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        color: #fff; \n        border: none; \n        border-radius: 12px; \n        padding: 16px 32px; \n        font-weight: 600;\n        font-size: 16px;\n        cursor: pointer; \n        transition: all 0.2s ease;\n        box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n        position: relative;\n        overflow: hidden;\n      }\n      \n      .es-btn::before {\n        content: '';\n        position: absolute;\n        top: 0;\n        left: -100%;\n        width: 100%;\n        height: 100%;\n        background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);\n        transition: left 0.5s;\n      }\n      \n      .es-btn:hover::before {\n        left: 100%;\n      }\n      \n      .es-btn:hover { \n        transform: translateY(-2px);\n        box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);\n      }\n      \n      .es-btn:active { \n        transform: translateY(0px); \n      }\n      \n      .es-btn:disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n        transform: none;\n      }\n      \n      .es-help { \n        font-size: 14px; \n        color: #718096; \n        text-align: center; \n        margin-top: 16px;\n        padding: 16px;\n        background: #f7fafc;\n        border-radius: 8px;\n        border-left: 4px solid #667eea;\n      }\n      \n      .es-error { \n        color: #e53e3e; \n        background: #fed7d7; \n        border: 2px solid #fc8181; \n        padding: 16px 20px; \n        border-radius: 12px; \n        margin-top: 20px;\n        display: flex;\n        align-items: center;\n        gap: 12px;\n      }\n      \n      .es-error::before {\n        content: \"\u26a0\ufe0f\";\n        font-size: 20px;\n      }\n      \n      .es-info { \n        color: #2c5282; \n        background: #bee3f8; \n        border: 2px solid #63b3ed; \n        padding: 16px 20px; \n        border-radius: 12px; \n        margin-top: 20px;\n        display: flex;\n        align-items: center;\n        gap: 12px;\n      }\n      \n      .es-info::before {\n        content: \"\u2139\ufe0f\";\n        font-size: 20px;\n      }\n      \n      .es-loader { \n        display: none; \n        font-size: 16px; \n        color: #667eea;\n        font-weight: 500;\n      }\n      \n      .es-loader.on { \n        display: inline-flex; \n        align-items: center; \n        gap: 12px; \n      }\n      \n      .es-spinner { \n        width: 20px; \n        height: 20px; \n        border: 3px solid #e2e8f0; \n        border-top-color: #667eea; \n        border-radius: 50%; \n        animation: es-spin 1s linear infinite; \n      }\n      \n      @keyframes es-spin { \n        to { transform: rotate(360deg); } \n      }\n      \n      .es-results { \n        margin-top: 32px; \n        display: flex; \n        flex-direction: column; \n        gap: 20px; \n      }\n      \n      .es-results-header {\n        text-align: center;\n        padding-bottom: 16px;\n        border-bottom: 2px solid #e2e8f0;\n      }\n      \n      .es-count { \n        font-size: 18px; \n        color: #2d3748; \n        font-weight: 600;\n        margin: 0;\n      }\n      \n      .es-result-card { \n        display: flex; \n        justify-content: space-between; \n        align-items: center; \n        gap: 20px; \n        background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); \n        border: 2px solid #e2e8f0; \n        border-radius: 16px; \n        padding: 24px; \n        box-shadow: 0 4px 15px rgba(0,0,0,.06);\n        transition: all 0.3s ease;\n        position: relative;\n        overflow: hidden;\n      }\n      \n      .es-result-card::before {\n        content: '';\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 4px;\n        height: 100%;\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n      }\n      \n      .es-result-card:hover { \n        transform: translateY(-3px);\n        box-shadow: 0 8px 25px rgba(0,0,0,.1);\n        border-color: #667eea;\n      }\n      \n      .es-main { \n        display: flex; \n        flex-direction: column; \n        gap: 8px; \n        min-width: 0; \n        flex: 1;\n      }\n      \n      .es-line { \n        display: flex; \n        flex-wrap: wrap; \n        gap: 12px; \n        align-items: center; \n      }\n      \n      .es-cat { \n        font-weight: 700; \n        color: #2d3748; \n        font-size: 18px;\n      }\n      \n      .es-status { \n        font-size: 13px; \n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); \n        color: white; \n        border-radius: 20px; \n        padding: 6px 16px; \n        font-weight: 600;\n        box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);\n      }\n      \n      .es-date { \n        font-size: 14px; \n        color: #718096; \n        display: flex;\n        align-items: center;\n        gap: 6px;\n      }\n      \n      .es-date::before {\n        content: \"\ud83d\udd52\";\n      }\n      \n      .es-actions-right { \n        display: flex; \n        gap: 12px; \n        flex-shrink: 0; \n      }\n      \n      .es-link { \n        text-decoration: none; \n        background: linear-gradient(135deg, #10b981 0%, #059669 100%); \n        color: #fff; \n        border-radius: 12px; \n        padding: 12px 20px; \n        font-size: 14px; \n        font-weight: 600;\n        transition: all 0.2s ease;\n        box-shadow: 0 4px 15px rgba(16, 185, 129, 0.3);\n        display: flex;\n        align-items: center;\n        gap: 8px;\n      }\n      \n      .es-link:hover { \n        transform: translateY(-2px);\n        box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);\n      }\n      \n      .es-more-wrap { \n        display: flex; \n        justify-content: center; \n        margin-top: 16px; \n      }\n      \n      .es-more { \n        background: #f8f9fa; \n        border: 2px solid #e2e8f0; \n        color: #2d3748; \n        border-radius: 12px; \n        padding: 12px 24px; \n        font-weight: 600; \n        cursor: pointer;\n        transition: all 0.2s ease;\n      }\n      \n      .es-more:hover { \n        background: #e2e8f0;\n        border-color: #667eea;\n        transform: translateY(-1px);\n      }\n      \n      \/* Animations d'entr\u00e9e *\/\n      @keyframes slideInUp {\n        from {\n          opacity: 0;\n          transform: translateY(30px);\n        }\n        to {\n          opacity: 1;\n          transform: translateY(0);\n        }\n      }\n      \n      .es-result-card {\n        animation: slideInUp 0.5s ease-out;\n      }\n      \n      .es-result-card:nth-child(2) { animation-delay: 0.1s; }\n      .es-result-card:nth-child(3) { animation-delay: 0.2s; }\n      .es-result-card:nth-child(4) { animation-delay: 0.3s; }\n      .es-result-card:nth-child(5) { animation-delay: 0.4s; }\n      .es-result-card:nth-child(6) { animation-delay: 0.5s; }\n      \n      \/* Responsive design optimis\u00e9 pour mobile *\/\n      @media (max-width: 768px) {\n        .es-suivi-wrap {\n          margin: 8px;\n          border-radius: 16px;\n        }\n        \n        .es-inner-wrap {\n          padding: 20px 16px;\n        }\n        \n        .es-header {\n          margin-bottom: 24px;\n        }\n        \n        .es-title {\n          font-size: 24px;\n          line-height: 1.2;\n        }\n        \n        .es-subtitle {\n          font-size: 14px;\n        }\n        \n        .es-card {\n          padding: 20px 16px;\n          border-radius: 12px;\n        }\n        \n        .es-form-grid {\n          grid-template-columns: 1fr;\n          gap: 16px;\n        }\n        \n        .es-input {\n          padding: 12px 16px;\n          font-size: 16px; \/* \u00c9vite le zoom sur iOS *\/\n        }\n        \n        .es-btn {\n          width: 100%;\n          padding: 14px 24px;\n          font-size: 15px;\n        }\n        \n        .es-help {\n          font-size: 13px;\n          margin-top: 12px;\n          padding: 12px;\n        }\n        \n        \/* Cartes de r\u00e9sultats compactes pour mobile *\/\n        .es-result-card {\n          flex-direction: column;\n          align-items: stretch;\n          gap: 12px;\n          padding: 16px;\n          margin-bottom: 12px;\n        }\n        \n        .es-main {\n          gap: 6px;\n        }\n        \n        .es-line {\n          flex-direction: column;\n          align-items: flex-start;\n          gap: 8px;\n        }\n        \n        .es-cat {\n          font-size: 16px;\n          font-weight: 600;\n        }\n        \n        .es-status {\n          font-size: 12px;\n          padding: 4px 12px;\n          align-self: flex-start;\n        }\n        \n        .es-date {\n          font-size: 12px;\n          margin-top: 4px;\n        }\n        \n        .es-actions-right {\n          align-self: stretch;\n          justify-content: center;\n          margin-top: 8px;\n        }\n        \n        .es-link {\n          flex: 1;\n          justify-content: center;\n          padding: 10px 16px;\n          font-size: 13px;\n          text-align: center;\n        }\n        \n        .es-results {\n          margin-top: 20px;\n          gap: 8px;\n        }\n        \n        .es-results-header {\n          padding-bottom: 12px;\n        }\n        \n        .es-count {\n          font-size: 16px;\n        }\n        \n        .es-more {\n          padding: 10px 20px;\n          font-size: 14px;\n        }\n        \n        .es-error, .es-info {\n          padding: 12px 16px;\n          font-size: 14px;\n        }\n        \n        \/* R\u00e9duction des espacements pour mobile *\/\n        .es-loader {\n          font-size: 14px;\n        }\n        \n        .es-actions {\n          flex-direction: column;\n          gap: 12px;\n          margin-top: 16px;\n        }\n      }\n      \n      \/* Tr\u00e8s petits \u00e9crans (iPhone SE, etc.) *\/\n      @media (max-width: 375px) {\n        .es-inner-wrap {\n          padding: 16px 12px;\n        }\n        \n        .es-title {\n          font-size: 20px;\n        }\n        \n        .es-subtitle {\n          font-size: 13px;\n        }\n        \n        .es-card {\n          padding: 16px 12px;\n        }\n        \n        .es-result-card {\n          padding: 14px 12px;\n        }\n        \n        .es-cat {\n          font-size: 15px;\n        }\n        \n        .es-help {\n          font-size: 12px;\n          padding: 10px;\n        }\n      }\n      \n      \/* \u00c9tats de chargement avec skeleton *\/\n      .es-skeleton {\n        display: none;\n      }\n      \n      .es-skeleton.loading {\n        display: block;\n        animation: skeleton-loading 1.5s ease-in-out infinite alternate;\n      }\n      \n      @keyframes skeleton-loading {\n        0% { opacity: 1; }\n        100% { opacity: 0.4; }\n      }\n      \n      .es-skeleton-card {\n        background: #f8f9fa;\n        border-radius: 16px;\n        padding: 24px;\n        margin-bottom: 16px;\n      }\n      \n      .es-skeleton-line {\n        height: 20px;\n        background: #e2e8f0;\n        border-radius: 4px;\n        margin-bottom: 12px;\n      }\n      \n      .es-skeleton-line.short { width: 60%; }\n      .es-skeleton-line.medium { width: 40%; }\n    <\/style>\n\n    <div class=\"es-suivi-wrap\" id=\"es-suivi-root\"\n         data-ajax-url=\"https:\/\/eliteservicesenegal.com\/wp-admin\/admin-ajax.php\"\n         data-nonce=\"9514f7688c\">\n      \n      <div class=\"es-inner-wrap\">\n        <div class=\"es-header\">\n          <h1 class=\"es-title\">Consultation de Dossier<\/h1>\n          <p class=\"es-subtitle\">Suivez l'avancement de votre dossier en temps r\u00e9el<\/p>\n        <\/div>\n        \n        <div class=\"es-card\">\n          <form class=\"es-form\" id=\"es-suivi-form\" novalidate>\n            <div class=\"es-form-grid\">\n              <div class=\"es-field\">\n                <label class=\"es-label\" for=\"es-nom\">\ud83d\udc64 Nom<\/label>\n                <input class=\"es-input\" type=\"text\" id=\"es-nom\" name=\"nom\" required>\n              <\/div>\n              <div class=\"es-field\">\n                <label class=\"es-label\" for=\"es-prenom\">\ud83d\udc64 Pr\u00e9nom<\/label>\n                <input class=\"es-input\" type=\"text\" id=\"es-prenom\" name=\"prenom\" required>\n              <\/div>\n              <div class=\"es-field\">\n                <label class=\"es-label\" for=\"es-telephone\">\ud83d\udcf1 T\u00e9l\u00e9phone<\/label>\n                <input class=\"es-input\" type=\"tel\" id=\"es-telephone\" name=\"telephone\" required>\n              <\/div>\n            <\/div>\n            \n            <div class=\"es-actions\">\n              <span class=\"es-loader\" id=\"es-loader\">\n                <span class=\"es-spinner\"><\/span> \n                Recherche en cours\u2026\n              <\/span>\n              <button class=\"es-btn\" id=\"es-submit\" type=\"submit\">\n                \ud83d\udd0d Rechercher mon dossier\n              <\/button>\n            <\/div>\n            \n            <div class=\"es-help\">\n              \ud83d\udca1 Saisissez les m\u00eames informations que lors du d\u00e9p\u00f4t de votre dossier.\n            <\/div>\n            \n            <div class=\"es-error\" id=\"es-error\" style=\"display:none;\"><\/div>\n          <\/form>\n        <\/div>\n        \n        <!-- Skeleton loading -->\n        <div class=\"es-skeleton\" id=\"es-skeleton\">\n          <div class=\"es-skeleton-card\">\n            <div class=\"es-skeleton-line\"><\/div>\n            <div class=\"es-skeleton-line short\"><\/div>\n            <div class=\"es-skeleton-line medium\"><\/div>\n          <\/div>\n          <div class=\"es-skeleton-card\">\n            <div class=\"es-skeleton-line\"><\/div>\n            <div class=\"es-skeleton-line short\"><\/div>\n            <div class=\"es-skeleton-line medium\"><\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"es-results\" id=\"es-results\" style=\"display:none;\">\n          <div class=\"es-results-header\">\n            <h2 class=\"es-count\" id=\"es-count\"><\/h2>\n          <\/div>\n          <div id=\"es-list\"><\/div>\n          <div class=\"es-more-wrap\" id=\"es-more-wrap\" style=\"display:none;\">\n            <button class=\"es-more\" id=\"es-more\">\ud83d\udcc4 Voir plus<\/button>\n          <\/div>\n        <\/div>\n        \n        <div class=\"es-info\" id=\"es-empty\" style=\"display:none;\">\n          <strong>Aucun dossier trouv\u00e9<\/strong><br>\n          V\u00e9rifiez les informations saisies.\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <script>\n      (function(){\n        const root = document.getElementById('es-suivi-root');\n        const ajaxUrl = root.getAttribute('data-ajax-url');\n        const nonce = root.getAttribute('data-nonce');\n        const form   = document.getElementById('es-suivi-form');\n        const loader = document.getElementById('es-loader');\n        const skeleton = document.getElementById('es-skeleton');\n        const error  = document.getElementById('es-error');\n        const resultsWrap = document.getElementById('es-results');\n        const countEl = document.getElementById('es-count');\n        const listEl  = document.getElementById('es-list');\n        const emptyEl = document.getElementById('es-empty');\n        const moreWrap= document.getElementById('es-more-wrap');\n        const moreBtn = document.getElementById('es-more');\n        const submitBtn = document.getElementById('es-submit');\n\n        let allResults = [];\n        const PAGE_SIZE = 5;\n        let shown = 0;\n\n        function resetUI() {\n          error.style.display = 'none';\n          emptyEl.style.display = 'none';\n          resultsWrap.style.display = 'none';\n          moreWrap.style.display = 'none';\n          skeleton.classList.remove('loading');\n          listEl.innerHTML = '';\n          countEl.textContent = '';\n          shown = 0;\n          allResults = [];\n        }\n\n        function renderNext() {\n          const slice = allResults.slice(shown, shown+PAGE_SIZE);\n          slice.forEach((r, index) => {\n            const card = document.createElement('div');\n            card.className = 'es-result-card';\n            card.style.animationDelay = (index * 0.1) + 's';\n            \n            const statusIcon = getStatusIcon(r.statut);\n            const dateFormatted = formatDate(r.date_update);\n            \n            card.innerHTML = `\n              <div class=\"es-main\">\n                <div class=\"es-line\">\n                  <div class=\"es-cat\">\ud83d\udccb ${r.categorie}<\/div>\n                  <div class=\"es-status\">${statusIcon} ${r.statut}<\/div>\n                <\/div>\n                <div class=\"es-date\">Mis \u00e0 jour : ${dateFormatted}<\/div>\n              <\/div>\n              <div class=\"es-actions-right\">\n                ${r.lien_dropbox ? `<a class=\"es-link\" href=\"${r.lien_dropbox}\" target=\"_blank\">\ud83d\udcc2 Ouvrir<\/a>` : '<span style=\"color: #718096; font-size: 13px;\">Aucun document<\/span>'}\n              <\/div>`;\n            listEl.appendChild(card);\n          });\n          shown += slice.length;\n          moreWrap.style.display = (shown < allResults.length) ? 'flex' : 'none';\n        }\n\n        function getStatusIcon(statut) {\n          const status = statut.toLowerCase();\n          if (status.includes('en cours') || status.includes('traitement')) return '\u23f3';\n          if (status.includes('termin\u00e9') || status.includes('fini') || status.includes('valid\u00e9')) return '\u2705';\n          if (status.includes('attente') || status.includes('suspendu')) return '\u23f8\ufe0f';\n          if (status.includes('annul\u00e9') || status.includes('rejet\u00e9')) return '\u274c';\n          return '\ud83d\udccb';\n        }\n\n        function formatDate(dateStr) {\n          try {\n            const date = new Date(dateStr);\n            return date.toLocaleDateString('fr-FR', {\n              year: 'numeric',\n              month: 'long',\n              day: 'numeric',\n              hour: '2-digit',\n              minute: '2-digit'\n            });\n          } catch (e) {\n            return dateStr;\n          }\n        }\n\n        function validateForm() {\n          const nom = document.getElementById('es-nom').value.trim();\n          const prenom = document.getElementById('es-prenom').value.trim();\n          const tel = document.getElementById('es-telephone').value.trim();\n          \n          if (!nom || !prenom || !tel) {\n            error.textContent = \"\u26a0\ufe0f Tous les champs sont obligatoires pour effectuer la recherche.\";\n            error.style.display = 'block';\n            return false;\n          }\n          \n          if (tel.length < 8) {\n            error.textContent = \"\u26a0\ufe0f Le num\u00e9ro de t\u00e9l\u00e9phone semble trop court.\";\n            error.style.display = 'block';\n            return false;\n          }\n          \n          return { nom, prenom, tel };\n        }\n\n        form.addEventListener('submit', async (e) => {\n          e.preventDefault();\n          resetUI();\n          \n          const formData = validateForm();\n          if (!formData) return;\n\n          \/\/ Animation de chargement\n          loader.classList.add('on');\n          skeleton.classList.add('loading');\n          submitBtn.disabled = true;\n          submitBtn.textContent = '\ud83d\udd04 Recherche...';\n\n          try {\n            const body = new URLSearchParams();\n            body.append('action', 'es_rechercher_dossier');\n            body.append('_ajax_nonce', nonce);\n            body.append('nom', formData.nom);\n            body.append('prenom', formData.prenom);\n            body.append('telephone', formData.tel);\n\n            const resp = await fetch(ajaxUrl, { method: 'POST', body });\n            const data = await resp.json();\n\n            \/\/ D\u00e9lai minimum pour l'animation\n            await new Promise(resolve => setTimeout(resolve, 800));\n\n            if (data.success) {\n              if (!data.data || !data.data.length) {\n                emptyEl.style.display = 'block';\n              } else {\n                allResults = data.data;\n                resultsWrap.style.display = 'block';\n                countEl.textContent = `\ud83c\udf89 ${allResults.length} dossier${allResults.length > 1 ? 's' : ''} trouv\u00e9${allResults.length > 1 ? 's' : ''}`;\n                renderNext();\n              }\n            } else {\n              throw new Error(data.data || 'Erreur lors de la recherche de votre dossier.');\n            }\n          } catch (err) {\n            error.textContent = \"\u274c \" + err.message;\n            error.style.display = 'block';\n          } finally {\n            loader.classList.remove('on');\n            skeleton.classList.remove('loading');\n            submitBtn.disabled = false;\n            submitBtn.textContent = '\ud83d\udd0d Rechercher mon dossier';\n          }\n        });\n\n        moreBtn.addEventListener('click', (e) => {\n          e.preventDefault();\n          renderNext();\n        });\n\n        \/\/ Animation des champs au focus\n        const inputs = document.querySelectorAll('.es-input');\n        inputs.forEach(input => {\n          input.addEventListener('focus', () => {\n            input.parentElement.style.transform = 'scale(1.02)';\n          });\n          \n          input.addEventListener('blur', () => {\n            input.parentElement.style.transform = 'scale(1)';\n          });\n        });\n      })();\n    <\/script>\n    \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7c7837c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7c7837c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0bb6cd7\" data-id=\"0bb6cd7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Vos Exigences Font Notre Force VOS DOSSIERS EN TEMPS R\u00c9EL<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"class_list":["post-2932","page","type-page","status-publish","hentry"],"featured_image_urls":{},"_links":{"self":[{"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/pages\/2932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/comments?post=2932"}],"version-history":[{"count":47,"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/pages\/2932\/revisions"}],"predecessor-version":[{"id":3471,"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/pages\/2932\/revisions\/3471"}],"wp:attachment":[{"href":"https:\/\/eliteservicesenegal.com\/index.php\/wp-json\/wp\/v2\/media?parent=2932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}