{"id":35545,"date":"2026-09-27T18:39:52","date_gmt":"2026-09-27T22:39:52","guid":{"rendered":"https:\/\/allianceenjesus.com\/?page_id=35545"},"modified":"2026-10-04T09:34:33","modified_gmt":"2026-10-04T13:34:33","slug":"alerte-eeg","status":"publish","type":"page","link":"https:\/\/allianceenjesus.com\/?page_id=35545","title":{"rendered":"Alerte EEG"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"35545\" class=\"elementor elementor-35545\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8c39fce elementor-section-content-middle elementor-section-height-full ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-items-middle wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"8c39fce\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b1952b1 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"b1952b1\" 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-03b93f0 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-heading\" data-id=\"03b93f0\" 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\">inFos &amp; Alertes<\/h1>\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-363c7d4 ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"363c7d4\" 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-442ed20 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"442ed20\" 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-cdd096d elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"cdd096d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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-6e7d65d ang-section-padding-no elementor-section-full_width elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"6e7d65d\" 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-077f6cb elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"077f6cb\" 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-1be1e0c elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-shortcode\" data-id=\"1be1e0c\" 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\"><div class=\"eap-pwa\" data-eap-pwa data-app=\"depot\" data-manifeste=\"https:\/\/allianceenjesus.com\/?eap_manifest=depot\" data-portee=\"https:\/\/allianceenjesus.com\/wp-content\/plugins\/eglise-alerte-plugin\/app-depot\/\" data-sw=\"1\" style=\"border:1px solid #C9C2AD;border-radius:10px;padding:14px 18px;margin:12px 0;background:#F0F4FA;max-width:620px;\"><h2 style=\"margin:0 0 6px;font-size:1.3em;\">Installer l\u2019application \u00ab Infos et Alertes \u00bb<\/h2><p style=\"margin:0 0 10px;\">Ajoutez-la \u00e0 l\u2019\u00e9cran d\u2019accueil de votre t\u00e9l\u00e9phone pour l\u2019ouvrir d\u2019un geste, comme une application.<\/p><p data-eap-deja hidden><strong>\u2713 L\u2019application est d\u00e9j\u00e0 install\u00e9e sur cet appareil.<\/strong><\/p><p data-eap-bouton hidden><button type=\"button\" class=\"eap-btn eap-btn-primary\" data-eap-installer>Installer l\u2019application<\/button><\/p><div data-eap-ios hidden><p style=\"margin:0;\"><strong>iPhone \/ iPad :<\/strong> ouvrez cette page dans <strong>Safari<\/strong>, touchez le bouton <strong>Partager<\/strong> (le carr\u00e9 avec une fl\u00e8che), puis <strong>\u00ab Sur l\u2019\u00e9cran d\u2019accueil \u00bb<\/strong>.<\/p><\/div><div data-eap-manuel hidden><p style=\"margin:0 0 6px;\"><strong>Android :<\/strong> touchez le menu <strong>\u22ee<\/strong> du navigateur, puis <strong>\u00ab Installer l\u2019application \u00bb<\/strong>.<\/p><p style=\"margin:0 0 6px;\">Si ce choix n\u2019existe pas : <strong>\u00ab Ajouter \u00e0 l\u2019\u00e9cran d\u2019accueil \u00bb<\/strong>, puis <strong>\u00ab Cr\u00e9er un raccourci \u00bb<\/strong> ; gardez le nom propos\u00e9, Infos et Alertes.<\/p><p style=\"margin:0;font-size:.92em;color:#716C5E;\"><strong>Si le navigateur r\u00e9pond \u00ab d\u00e9j\u00e0 install\u00e9e \u00bb<\/strong> (une autre application du site couvre cette adresse) : d\u00e9sinstallez provisoirement l\u2019autre application du t\u00e9l\u00e9phone, installez celle-ci avec ce lien, puis r\u00e9installez l\u2019autre application depuis sa page. Les deux ic\u00f4nes coexisteront ensuite.<\/p><\/div><details data-eap-verif style=\"margin-top:10px;\"><summary style=\"cursor:pointer;\">V\u00e9rifier sur ce t\u00e9l\u00e9phone<\/summary><ul data-eap-verif-liste style=\"margin:6px 0 0;padding-left:20px;font-size:.92em;\"><\/ul><\/details><script>(function(){var r=document.currentScript.parentNode,evt=null;function $(s){return r.querySelector(s);}var standalone=(window.matchMedia&&window.matchMedia(\"(display-mode: standalone)\").matches)||window.navigator.standalone===true;var ios=\/iphone|ipad|ipod\/i.test(navigator.userAgent)||(navigator.platform===\"MacIntel\"&&navigator.maxTouchPoints>1);var liste=$(\"[data-eap-verif-liste]\");function ligne(ok,txt){var li=document.createElement(\"li\");li.textContent=(ok===true?\"\u2713 \":ok===false?\"\u2717 \":\"\u2139 \")+txt;liste.appendChild(li);}ligne(null,standalone?\"Ouverte en mode application (install\u00e9e).\":\"Ouverte dans le navigateur.\");if(window.fetch&&r.dataset.manifeste){fetch(r.dataset.manifeste,{credentials:\"same-origin\"}).then(function(x){return x.json();}).then(function(m){ligne(true,\"Manifeste lu : \u00ab \"+m.name+\" \u00bb ; port\u00e9e : \"+m.scope);}).catch(function(){ligne(false,\"Le manifeste ne se lit pas.\");});}if(r.dataset.sw){if(\"serviceWorker\" in navigator&&navigator.serviceWorker.getRegistration){navigator.serviceWorker.getRegistration(r.dataset.portee).then(function(g){ligne(!!(g&&(g.active||g.waiting||g.installing)),g?\"Service worker de l\u2019application enregistr\u00e9.\":\"Service worker de l\u2019application pas encore enregistr\u00e9 (ouvrez la page d\u2019application une fois).\");}).catch(function(){});}else{ligne(false,\"Ce navigateur n\u2019utilise pas de service worker.\");}}if(standalone){$(\"[data-eap-deja]\").hidden=false;return;}if(ios){$(\"[data-eap-ios]\").hidden=false;ligne(null,\"iPhone : Safari ne propose jamais d\u2019installation automatique, utilisez \u00ab Partager \u00bb.\" );return;}window.addEventListener(\"beforeinstallprompt\",function(e){e.preventDefault();evt=e;$(\"[data-eap-bouton]\").hidden=false;$(\"[data-eap-manuel]\").hidden=true;ligne(true,\"Le navigateur propose l\u2019installation.\");});window.addEventListener(\"appinstalled\",function(){r.querySelector(\"[data-eap-bouton]\").hidden=true;$(\"[data-eap-deja]\").hidden=false;});$(\"[data-eap-installer]\").addEventListener(\"click\",function(){if(!evt)return;evt.prompt();evt.userChoice.then(function(){evt=null;$(\"[data-eap-bouton]\").hidden=true;});});setTimeout(function(){if(!evt){$(\"[data-eap-manuel]\").hidden=false;ligne(false,\"Le navigateur ne propose pas l\u2019installation : l\u2019application est d\u00e9j\u00e0 install\u00e9e, ou une autre application du site couvre cette adresse.\");}},1500);})();<\/script><\/div><\/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-84d41ce elementor-section-full_width ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"84d41ce\" 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-f5a9a44 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"f5a9a44\" 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\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-025db8f elementor-section-full_width ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"025db8f\" 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-33 elementor-top-column elementor-element elementor-element-4d12a46 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"4d12a46\" 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<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-c8f8f54 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"c8f8f54\" 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-e156846 elementor-widget__width-initial elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-shortcode\" data-id=\"e156846\" 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\"><div class=\"gtranslate_wrapper\" id=\"gt-wrapper-88796059\"><\/div><\/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<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-ca81012 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"ca81012\" 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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4532ac3 ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"4532ac3\" 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-43981ba elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"43981ba\" 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-fe6eb79 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-heading\" data-id=\"fe6eb79\" 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<h2 class=\"elementor-heading-title elementor-size-default\">Parler, c'est se lib\u00e9rer ...<\/h2>\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<div class=\"elementor-element elementor-element-b4a20bc e-flex e-con-boxed elementor-repeater-item-default_padding elementor-repeater-item-none elementor-repeater-item-none_hover wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"b4a20bc\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ang_container_spacing_size&quot;:&quot;default_padding&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90db254 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"90db254\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0c4be4e elementor-section-full_width ang-section-padding-no elementor-section-stretched elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"0c4be4e\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\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-28144a3 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"28144a3\" 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-311baa6 elementor-widget__width-initial elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-shortcode\" data-id=\"311baa6\" 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\"><div id=\"eap-form\" class=\"eap-form eap-c-fond eap-c-btn-texte eap-c-titre eap-c-texte eap-c-q eap-titre-gras eap-st-gras\" style=\"--eap-fond:#ffffff;--eap-btn-texte:#f5f5f5;--eap-titre:#9144cf;--eap-texte:#000000;--eap-question:#2e91b2;\" data-ajax=\"https:\/\/allianceenjesus.com\/wp-admin\/admin-ajax.php\" data-nonce=\"c481531259\" data-initial=\"accueil\" data-sans-coordonnees=\"0\" data-plein-ecran=\"bouton\" data-balayage=\"1\">\n    <!-- Protection anti-robots : champ jamais rempli par une personne, invisible mais pr\u00e9sent dans la page (pas display:none, plus facilement contourn\u00e9). -->\n    <div style=\"position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden;\" aria-hidden=\"true\">\n        <label>Laissez ce champ vide<input type=\"text\" name=\"eap_ne_pas_remplir\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n    <\/div>\n    <input type=\"hidden\" data-el=\"horodatage\" name=\"eap_horodatage\" value=\"\">\n\n        <!-- Mode plein \u00e9cran (r\u00e9glage \u00ab Options du formulaire \u00bb) -->\n    <div class=\"eap-plein-barre\">\n        <button type=\"button\" class=\"eap-btn eap-btn-ghost eap-accueil-bouton\" data-el=\"accueil-lien\" data-retour=\"accueil\" aria-label=\"Retour \u00e0 l&#039;accueil\" title=\"Retour \u00e0 l&#039;accueil\" style=\"display:none;\">\n            <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1.5 7 8 1.5 14.5 7M3 6v8h4v-4.5h2V14h4V6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n        <\/button>\n        <button type=\"button\" class=\"eap-btn eap-btn-ghost eap-plein-bouton\" data-el=\"plein-ecran\" aria-pressed=\"false\">\n            <svg class=\"eap-plein-ico eap-plein-ico-entrer\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M1 6V1h5M10 1h5v5M15 10v5h-5M6 15H1v-5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <svg class=\"eap-plein-ico eap-plein-ico-sortir\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M6 1v5H1M10 1v5h5M15 10h-5v5M1 10h5v5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <span data-el=\"plein-libelle\">Plein \u00e9cran<\/span>\n        <\/button>\n    <\/div>\n    \n    <!-- \u00c9cran d'accueil -->\n    <section class=\"eap-ecran\" data-ecran=\"accueil\">\n        <h2>Vous pouvez en parler.<\/h2><p>Vous vivez une situation difficile au sein de votre \u00e9glise, vous avez \u00e9t\u00e9 t\u00e9moin d&#039;une situation pr\u00e9occupante, ou quelque chose vous met mal \u00e0 l&#039;aise ?<\/p><p>Vous pouvez nous en parler.<\/p><p>Cet espace vous permet de partager ce que vous vivez, ce que vous avez v\u00e9cu ou ce dont vous avez \u00e9t\u00e9 t\u00e9moin, par \u00e9crit ou par message vocal. Vous n&#039;avez pas besoin de savoir comment qualifier la situation, ni d&#039;utiliser des termes juridiques. Racontez simplement les faits avec vos propres mots.<\/p><p>Votre parole compte.<\/p>                <label class=\"eap-case-ligne eap-option-guidee\">\n            <input type=\"checkbox\" data-el=\"lecture-guidee\">\n            <span><strong>\ud83d\udd0e Lecture guid\u00e9e<\/strong><br><span class=\"eap-aide\">Les questions s&#039;affichent une par une, bien visibles, avec toutes les r\u00e9ponses possibles d\u00e9j\u00e0 ouvertes.<\/span><\/span>\n        <\/label>\n                <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-aller=\"mode\">Parler d&#039;une situation<\/button>\n        <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-aller=\"suivi\">Suivre mon t\u00e9moignage<\/button>\n        <p class=\"eap-urgence\">\u26a0 En cas de danger imm\u00e9diat, contactez les services d&#039;urgence comp\u00e9tents.<\/p>\n    <\/section>\n\n    <!-- Choix du mode -->\n    <section class=\"eap-ecran\" data-ecran=\"mode\" style=\"display:none;\">\n        <h2>Comment souhaitez-vous nous parler ?<\/h2><p>Choisissez la mani\u00e8re qui vous convient le mieux.<\/p>        <div class=\"eap-choix-mode\">\n            <div class=\"eap-carte-choix\">\n                <h3>\u270d\ufe0f \u00c9crire mon t\u00e9moignage<\/h3>\n                <p>Prenez le temps de d\u00e9crire la situation avec vos propres mots.<\/p>\n                <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-mode=\"ecrit\" data-aller=\"temoignage\">Commencer \u00e0 \u00e9crire<\/button>\n            <\/div>\n            <div class=\"eap-carte-choix\">\n                <h3>\ud83c\udf99\ufe0f Enregistrer mon t\u00e9moignage<\/h3>\n                <p>Parlez librement et \u00e0 votre rythme. Vous pourrez \u00e9couter votre enregistrement avant de l&#039;envoyer.<\/p>\n                <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-mode=\"vocal\" data-aller=\"temoignage\">Commencer un enregistrement<\/button>\n            <\/div>\n        <\/div>\n        <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"accueil\">\u2039 Retour<\/button>\n    <\/section>\n\n    <!-- T\u00e9moignage -->\n    <section class=\"eap-ecran\" data-ecran=\"temoignage\" style=\"display:none;\">\n        <div class=\"eap-q\" data-q=\"texte\"><h2>Que souhaitez-vous nous dire ?<\/h2><p>Racontez-nous ce que vous vivez, ce que vous avez v\u00e9cu ou ce dont vous avez \u00e9t\u00e9 t\u00e9moin, avec vos propres mots.<\/p>        <div data-bloc=\"ecrit\">\n            <label class=\"eap-label eap-question\">Votre t\u00e9moignage<\/label>\n            <textarea data-el=\"contenu-texte\" rows=\"8\" placeholder=\"\u00c9crivez votre t\u00e9moignage ici\u2026\"><\/textarea>\n            <button type=\"button\" class=\"eap-lien-bouton\" data-basculer-mode=\"vocal\">\ud83c\udf99\ufe0f Vous pr\u00e9f\u00e9rez parler ? Enregistrer un message vocal<\/button>\n        <\/div>\n\n        <div data-bloc=\"vocal\" style=\"display:none;\">\n            <div class=\"eap-enregistreur\">\n                <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-el=\"rec-demarrer\">\ud83c\udf99\ufe0f D\u00e9marrer l&#039;enregistrement<\/button>\n                <button type=\"button\" class=\"eap-btn eap-btn-danger\" data-el=\"rec-arreter\" style=\"display:none;\">\u23f9 Arr\u00eater<\/button>\n                <span class=\"eap-rec-temps\" data-el=\"rec-temps\"><\/span>\n            <\/div>\n            <div data-el=\"rec-lecture\" style=\"display:none;\">\n                <audio controls data-el=\"rec-audio\"><\/audio>\n                <button type=\"button\" class=\"eap-lien-bouton\" data-el=\"rec-refaire\">\u21bb Recommencer l&#039;enregistrement<\/button>\n            <\/div>\n            <p class=\"eap-aide\">Vous pouvez arr\u00eater, reprendre ou recommencer votre t\u00e9moignage \u00e0 tout moment.<\/p>\n            <button type=\"button\" class=\"eap-lien-bouton\" data-basculer-mode=\"ecrit\">\u270d\ufe0f Vous pr\u00e9f\u00e9rez \u00e9crire ? \u00c9crire mon t\u00e9moignage<\/button>\n        <\/div>\n        \n<\/div><div class=\"eap-q\" data-q=\"depot\">        <h3 class=\"eap-souscription-titre eap-question\">Souhaitez-vous joindre un fichier ? <span class=\"eap-optionnel\">(facultatif)<\/span><\/h3>        <p class=\"eap-aide\">Un enregistrement audio d\u00e9j\u00e0 fait (MP3, WAV, ou un autre format courant), un document texte, Word ou PDF. Jusqu&#039;\u00e0 5 fichiers, 25 Mo chacun.<\/p>        <div class=\"eap-depot\" data-el=\"depot-zone\" tabindex=\"0\" role=\"button\" aria-label=\"Glissez un fichier ici, ou appuyez pour parcourir vos fichiers\">\n            <p>Glissez-d\u00e9posez un fichier ici, ou<\/p>\n            <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-el=\"depot-parcourir\">Parcourir vos fichiers<\/button>\n            <input type=\"file\" data-el=\"depot-fichiers\" multiple accept=\".mp3,.wav,.ogg,.oga,.weba,.webm,.m4a,.mp4,.aac,.flac,.txt,.rtf,.csv,.odt,.doc,.docx,.pdf\" style=\"display:none;\">\n        <\/div>\n        <ul data-el=\"depot-liste\" style=\"margin:8px 0 0 18px;\"><\/ul>\n        <p class=\"eap-erreur\" data-el=\"erreur-depot\" role=\"alert\"><\/p>\n        \n<\/div><div class=\"eap-q\" data-q=\"type\" data-requis=\"1\">        <h3 class=\"eap-souscription-titre eap-question\">De quel type de situation s&#039;agit-il ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <p class=\"eap-aide\">Si vous ne savez pas, vous pouvez simplement continuer.<\/p>        <div class=\"eap-cases\" data-el=\"cases-types\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-type\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-type\" data-libre=\"type\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-type\" role=\"alert\"><\/p><\/div><div class=\"eap-q\" data-q=\"quand\" data-requis=\"1\">        <h3 class=\"eap-souscription-titre eap-question\">Quand cette situation s&#039;est-elle produite ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <div class=\"eap-radios\" data-el=\"radios-moment\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-quand\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-quand\" data-libre=\"quand\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-quand\" role=\"alert\"><\/p><\/div><div class=\"eap-q\" data-q=\"encours\" data-requis=\"1\">        <h3 class=\"eap-souscription-titre eap-question\">La situation est-elle toujours en cours ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <div class=\"eap-radios\" data-el=\"radios-en-cours\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-encours\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-encours\" data-libre=\"encours\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-encours\" role=\"alert\"><\/p><\/div><div class=\"eap-q\" data-q=\"danger\" data-requis=\"1\">        <h3 class=\"eap-souscription-titre eap-question\" id=\"eap-lbl-danger\">\u00cates-vous actuellement en danger, ou pensez-vous qu&#039;une autre personne est actuellement en danger ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <div class=\"eap-radios\" data-el=\"radios-danger\" role=\"radiogroup\" aria-labelledby=\"eap-lbl-danger\"><\/div>\n        <div class=\"eap-urgence\" data-el=\"message-danger\" role=\"alert\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-danger\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-danger\" data-libre=\"danger\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-danger\" role=\"alert\"><\/p><\/div>\n        <p class=\"eap-erreur\" data-el=\"erreur-temoignage\"><\/p>\n        <div class=\"eap-nav-etape\">\n            <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"mode\">\u2039 Retour<\/button>\n            <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-aller=\"precisions\" data-valider=\"temoignage\">Continuer<\/button>\n        <\/div>\n    <\/section>\n\n    <!-- Pr\u00e9cisions -->\n    <section class=\"eap-ecran\" data-ecran=\"precisions\" style=\"display:none;\">\n        <div class=\"eap-q\" data-q=\"concernes\" data-requis=\"1\"><h2>Quelques pr\u00e9cisions<\/h2><p>Ces informations nous aident \u00e0 mieux comprendre la situation. Elles sont toutes facultatives : vous pouvez passer cette \u00e9tape.<\/p>        <h3 class=\"eap-souscription-titre eap-question\" id=\"eap-lbl-concernes\">Qui est concern\u00e9 par cette situation ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <p class=\"eap-aide\">Vous pouvez choisir plusieurs r\u00e9ponses.<\/p>        <div class=\"eap-ms\" data-ms=\"concernes\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-concernes\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-concernes\" data-libre=\"concernes\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-concernes\" role=\"alert\"><\/p><\/div><div class=\"eap-q\" data-q=\"lieux\" data-requis=\"1\">        <h3 class=\"eap-souscription-titre eap-question\" id=\"eap-lbl-lieux\">O\u00f9 la situation s&#039;est-elle produite ? <span class=\"eap-optionnel\">(obligatoire)<\/span><\/h3>        <p class=\"eap-aide\">Vous pouvez choisir plusieurs r\u00e9ponses.<\/p>        <div class=\"eap-ms\" data-ms=\"lieux\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-lieux\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-lieux\" data-libre=\"lieux\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-lieux\" role=\"alert\"><\/p><\/div><div class=\"eap-q\" data-q=\"elements\">        <h3 class=\"eap-souscription-titre eap-question\" id=\"eap-lbl-elements\">Disposez-vous d&#039;\u00e9l\u00e9ments compl\u00e9mentaires ? <span class=\"eap-optionnel\">(facultatif)<\/span><\/h3>        <p class=\"eap-aide\">Aucune preuve n&#039;est demand\u00e9e : indiquer ce qui existe nous aide simplement \u00e0 mieux comprendre la situation. Vous pouvez choisir plusieurs r\u00e9ponses.<\/p>        <div class=\"eap-ms\" data-ms=\"elements\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-elements\">Plus de pr\u00e9cisions <span class=\"eap-optionnel\">(facultatif)<\/span><\/label><textarea id=\"eap-libre-elements\" data-libre=\"elements\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><\/div>\n        <div class=\"eap-nav-etape\">\n            <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"temoignage\">\u2039 Retour<\/button>\n            <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-aller=\"besoins\">Continuer<\/button>\n        <\/div>\n    <\/section>\n\n    <!-- Besoins -->\n    <section class=\"eap-ecran\" data-ecran=\"besoins\" style=\"display:none;\">\n        <div class=\"eap-q\" data-q=\"besoins\" data-requis=\"1\"><h2>Que souhaitez-vous maintenant ?<\/h2><p>Vous pouvez choisir ce qui correspond le mieux \u00e0 votre situation. Vous pourrez modifier votre choix avant l&#039;envoi.<\/p>        <p class=\"eap-aide\"><span class=\"eap-optionnel\">(obligatoire)<\/span><\/p>        <div class=\"eap-cases\" data-el=\"cases-besoins\"><\/div>\n        \n<div class=\"eap-libre\"><label class=\"eap-libre-label\" for=\"eap-libre-besoins\">Plus de pr\u00e9cisions<\/label><textarea id=\"eap-libre-besoins\" data-libre=\"besoins\" rows=\"3\" placeholder=\"\u00c9crivez ici tout ce que vous souhaitez ajouter, sans limite de longueur.\"><\/textarea><\/div><p class=\"eap-erreur\" data-el=\"erreur-q-besoins\" role=\"alert\"><\/p><\/div>\n        <div class=\"eap-nav-etape\">\n            <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"precisions\">\u2039 Retour<\/button>\n            <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-aller=\"identite\">Continuer<\/button>\n        <\/div>\n    <\/section>\n\n    <!-- Coordonn\u00e9es et consentements -->\n    <section class=\"eap-ecran\" data-ecran=\"identite\" style=\"display:none;\">\n        <div class=\"eap-q\" data-q=\"coordonnees\"><h2>Comment souhaitez-vous \u00eatre contact\u00e9(e) ?<\/h2>                <!-- Case \u00ab sans coordonn\u00e9es \u00bb d\u00e9sactiv\u00e9e dans \u00ab Options du formulaire \u00bb : case masqu\u00e9e et jamais coch\u00e9e. -->\n        <input type=\"checkbox\" data-el=\"anonyme\" style=\"display:none;\" tabindex=\"-1\" aria-hidden=\"true\">\n                <p class=\"eap-aide\">Vous pourrez tout de m\u00eame suivre l&#039;avancement de votre t\u00e9moignage gr\u00e2ce \u00e0 une r\u00e9f\u00e9rence et un code de suivi, qui vous seront donn\u00e9s apr\u00e8s l&#039;envoi.<\/p>\n        <p class=\"eap-aide\" data-el=\"note-voix\" style=\"display:none;\">Un enregistrement vocal peut permettre de reconna\u00eetre votre voix, m\u00eame sans coordonn\u00e9es.<\/p>\n        <p class=\"eap-note\" data-el=\"note-recontact\" role=\"status\" style=\"display:none;\">Vous avez indiqu\u00e9 souhaiter \u00eatre \u00e9cout\u00e9(e), accompagn\u00e9(e) ou recontact\u00e9(e). Sans coordonn\u00e9es, nous ne pourrons vous r\u00e9pondre que par la page \u00ab Suivre mon t\u00e9moignage \u00bb. Vous pouvez aussi d\u00e9cocher la case ci-dessus pour nous laisser un moyen de vous joindre.<\/p>\n\n        <div data-el=\"bloc-contact\">\n            <h3 class=\"eap-souscription-titre\">Je m&#039;identifie<\/h3>\n            <p class=\"eap-aide\">Non obligatoire, mais tr\u00e8s important pour clarifier la situation et \u00e9changer sur le sujet.<\/p>\n            <label class=\"eap-label\" for=\"eap-eglise\">\u00c9glise<\/label>\n            <input type=\"text\" inputmode=\"text\" autocomplete=\"off\" id=\"eap-eglise\" data-el=\"eglise\">\n            <div class=\"eap-identification-grille\">\n                <div>\n                    <label class=\"eap-label\" for=\"eap-nom\">Nom<\/label>\n                    <input type=\"text\" inputmode=\"text\" autocomplete=\"family-name\" id=\"eap-nom\" data-el=\"nom\">\n                <\/div>\n                <div>\n                    <label class=\"eap-label\" for=\"eap-prenom\">Pr\u00e9nom<\/label>\n                    <input type=\"text\" inputmode=\"text\" autocomplete=\"given-name\" id=\"eap-prenom\" data-el=\"prenom\">\n                <\/div>\n                <div>\n                    <label class=\"eap-label\" for=\"eap-telephone\">T\u00e9l<\/label>\n                    <input type=\"tel\" inputmode=\"tel\" autocomplete=\"tel\" id=\"eap-telephone\" data-el=\"telephone\">\n                <\/div>\n                <div>\n                    <label class=\"eap-label\" for=\"eap-email\">Mail<\/label>\n                    <input type=\"email\" inputmode=\"email\" autocomplete=\"email\" id=\"eap-email\" data-el=\"email\">\n                <\/div>\n            <\/div>\n        <\/div>\n        \n<\/div><div class=\"eap-q\" data-q=\"envoi\">        <h3 class=\"eap-souscription-titre\">Avant d&#039;envoyer votre t\u00e9moignage<\/h3>\n        <p>Prenez quelques instants pour v\u00e9rifier les informations que vous souhaitez partager. Vous \u00eates libre de ne communiquer que les \u00e9l\u00e9ments que vous souhaitez transmettre.<\/p>\n\n        <div class=\"eap-consentement\">\n            <h4>Information sur le traitement du t\u00e9moignage<\/h4>\n            <label class=\"eap-case-ligne\"><input type=\"checkbox\" data-consent=\"traitement\"> J&#039;ai compris que les informations transmises seront utilis\u00e9es pour recevoir, examiner et, lorsque cela est n\u00e9cessaire, orienter ou traiter mon t\u00e9moignage.<\/label>\n        <\/div>\n        <div class=\"eap-consentement\" data-el=\"bloc-consent-contact\" style=\"display:none;\">\n            <h4>Utilisation de mes coordonn\u00e9es<\/h4>\n            <label class=\"eap-case-ligne\"><input type=\"checkbox\" data-consent=\"contact\"> J&#039;accepte que les coordonn\u00e9es indiqu\u00e9es ci-dessus soient utilis\u00e9es uniquement pour me recontacter au sujet de mon t\u00e9moignage.<\/label>\n        <\/div>\n        \n<\/div>\n        <p class=\"eap-erreur\" data-el=\"erreur-identite\" role=\"alert\"><\/p>\n        <div class=\"eap-nav-etape\">\n            <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"besoins\">\u2039 Retour<\/button>\n            <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-el=\"envoyer\">Envoyer mon t\u00e9moignage<\/button>\n        <\/div>\n    <\/section>\n\n    <!-- Suivi -->\n    <section class=\"eap-ecran\" data-ecran=\"suivi\" style=\"display:none;\">\n        <h2>Suivre mon t\u00e9moignage<\/h2><p>Saisissez la r\u00e9f\u00e9rence et le code de suivi qui vous ont \u00e9t\u00e9 donn\u00e9s apr\u00e8s l&#039;envoi de votre t\u00e9moignage. Aucun compte n&#039;est n\u00e9cessaire.<\/p>\n        <div data-el=\"suivi-saisie\">\n            <label class=\"eap-label\" for=\"eap-suivi-ref\">R\u00e9f\u00e9rence du t\u00e9moignage<\/label>\n            <input type=\"text\" id=\"eap-suivi-ref\" data-el=\"suivi-ref\" placeholder=\"Ex. A8F4-X2KP\" autocomplete=\"off\" autocapitalize=\"characters\" spellcheck=\"false\">\n            <label class=\"eap-label\" for=\"eap-suivi-code\" style=\"margin-top:12px;\">Code de suivi<\/label>\n            <input type=\"text\" id=\"eap-suivi-code\" data-el=\"suivi-code\" placeholder=\"Ex. K7P2-QX9M\" autocomplete=\"off\" autocapitalize=\"characters\" spellcheck=\"false\">\n            <p class=\"eap-erreur\" data-el=\"erreur-suivi\" role=\"alert\"><\/p>\n            <div class=\"eap-nav-etape\">\n                <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-retour=\"accueil\" data-el=\"suivi-retour\">\u2039 Retour<\/button>\n                <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-el=\"suivi-consulter\">Consulter<\/button>\n            <\/div>\n        <\/div>\n\n        <div data-el=\"suivi-resultat\" style=\"display:none;\">\n            <p class=\"eap-aide\">R\u00e9f\u00e9rence <strong data-el=\"suivi-ref-affichee\"><\/strong> \u00b7 re\u00e7u le <span data-el=\"suivi-recu\"><\/span><\/p>\n            <ol class=\"eap-timeline\" data-el=\"suivi-etapes\"><\/ol>\n            <p class=\"eap-note\" data-el=\"suivi-clos\" style=\"display:none;\">Le traitement est termin\u00e9. Si vous \u00e9crivez un message ci-dessous, votre dossier sera rouvert.<\/p>\n\n            <h3 class=\"eap-souscription-titre\">\u00c9changes<\/h3>\n            <div data-el=\"suivi-echanges\"><\/div>\n            <label class=\"eap-label\" for=\"eap-suivi-message\">\u00c9crire un message ou ajouter une information<\/label>\n            <textarea id=\"eap-suivi-message\" data-el=\"suivi-message\" rows=\"4\" placeholder=\"Votre message\u2026\"><\/textarea>\n            <p class=\"eap-erreur\" data-el=\"erreur-suivi-message\" role=\"alert\"><\/p>\n            <div class=\"eap-nav-etape\">\n                <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-el=\"suivi-quitter\">Quitter le suivi<\/button>\n                <span>\n                    <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-el=\"suivi-actualiser\">Actualiser<\/button>\n                    <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-el=\"suivi-envoyer\">Envoyer le message<\/button>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Confirmation -->\n    <section class=\"eap-ecran\" data-ecran=\"confirmation\" style=\"display:none;\">\n        <h2>Votre t\u00e9moignage a bien \u00e9t\u00e9 re\u00e7u.<\/h2><p>Merci d&#039;avoir pris le temps de nous parler. Votre t\u00e9moignage a \u00e9t\u00e9 transmis de mani\u00e8re s\u00e9curis\u00e9e.<\/p>        <p data-el=\"texte-anonyme\">Vous avez choisi d&#039;envoyer votre t\u00e9moignage sans coordonn\u00e9es : aucune information de contact ne sera utilis\u00e9e pour vous joindre. Vous pourrez suivre l&#039;avancement de votre dossier, et \u00e9changer avec nous, gr\u00e2ce \u00e0 la r\u00e9f\u00e9rence et au code ci-dessous.<\/p>\n        <p data-el=\"texte-contact\" style=\"display:none;\">Une personne habilit\u00e9e pourra revenir vers vous gr\u00e2ce aux coordonn\u00e9es que vous avez indiqu\u00e9es, ou via la page de suivi.<\/p>\n        <div class=\"eap-urgence\" data-el=\"rappel-danger\" role=\"alert\"><\/div>\n        <p>Vous n&#039;\u00eates pas oblig\u00e9(e) de tout r\u00e9soudre aujourd&#039;hui.<\/p>\n        <div class=\"eap-reference\">\n            <span>R\u00e9f\u00e9rence de votre t\u00e9moignage<\/span>\n            <strong data-el=\"reference\"><\/strong>\n            <span style=\"margin-top:14px;\">Code de suivi<\/span>\n            <strong data-el=\"code-suivi\"><\/strong>\n            <div class=\"eap-reference-actions\">\n                <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-el=\"copier-codes\">Copier la r\u00e9f\u00e9rence et le code<\/button>\n                <span class=\"eap-aide\" data-el=\"copie-confirmation\" role=\"status\"><\/span>\n            <\/div>\n            <small>Notez ces deux \u00e9l\u00e9ments d\u00e8s maintenant : le code de suivi ne pourra pas vous \u00eatre redonn\u00e9. Ils vous permettent de suivre votre t\u00e9moignage sans cr\u00e9er de compte. Si une information vous est demand\u00e9e, elle appara\u00eetra sur la page de suivi.<\/small>\n        <\/div>\n        <button type=\"button\" class=\"eap-btn eap-btn-primary\" data-el=\"aller-suivi\">Suivre mon t\u00e9moignage<\/button>\n        <button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-recommencer>Retour \u00e0 l&#039;accueil<\/button>\n    <\/section>\n<\/div>\n\n<style>\n.eap-form { max-width: 720px; margin: 0 auto; font-family: -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif; color: #26241E; line-height: 1.55; }\n.eap-form h2 { margin-top: 0; }\n.eap-form .eap-accroche { font-weight: 700; font-size: 1.1em; }\n.eap-form .eap-urgence { margin-top: 24px; padding: 10px 14px; background: #FBEDEA; border-left: 4px solid #B4483A; border-radius: 4px; font-size: 0.92em; }\n.eap-btn { display: inline-block; padding: 11px 20px; border-radius: 8px; border: none; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; }\n.eap-btn-primary { background: #1B2340; color: #fff; }\n.eap-btn-ghost { background: transparent; color: #1B2340; border: 1px solid #ccc; }\n.eap-btn-danger { background: #B4483A; color: #fff; }\n.eap-lien-bouton { background: none; border: none; color: #3B6DC7; text-decoration: underline; cursor: pointer; font: inherit; padding: 6px 0; display: block; }\n.eap-choix-mode { display: flex; gap: 16px; flex-wrap: wrap; margin: 20px 0; }\n.eap-carte-choix { flex: 1; min-width: 240px; border: 1px solid #E4E0D6; border-radius: 10px; padding: 18px; }\n.eap-form textarea, .eap-form input[type=text], .eap-form input[type=tel], .eap-form input[type=email] { width: 100%; padding: 10px 12px; border: 1px solid #ccc; border-radius: 8px; font-family: inherit; font-size: 15px; box-sizing: border-box; }\n.eap-souscription-titre { margin-top: 26px; margin-bottom: 6px; }\n.eap-optionnel { font-weight: 400; color: #716C5E; font-size: 0.85em; }\n.eap-aide { color: #716C5E; font-size: 0.9em; }\n.eap-cases, .eap-radios { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }\n.eap-cases label, .eap-radios label, .eap-case-ligne, .eap-ms-option { pointer-events: auto; }\n.eap-cases label, .eap-radios label, .eap-case-ligne { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; }\n.eap-nav-etape { display: flex; justify-content: space-between; margin-top: 24px; }\n.eap-erreur { color: #B4483A; font-weight: 600; }\n.eap-enregistreur { display: flex; align-items: center; gap: 12px; margin: 14px 0; }\n.eap-rec-temps { font-variant-numeric: tabular-nums; color: #716C5E; }\n\/* Consentements, notes, suivi *\/\n.eap-label { display: block; font-weight: 600; margin: 14px 0 6px; }\n.eap-identification-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }\n@media (max-width: 480px) { .eap-identification-grille { grid-template-columns: 1fr; } }\n.eap-depot { border: 2px dashed #C9C2AD; border-radius: 10px; padding: 22px; text-align: center; margin: 8px 0; }\n.eap-espace { height: 24px; }\n.eap-depot.is-survole { border-color: #1B2340; background: #F6F5F0; }\n.eap-depot p { margin: 0 0 10px; color: #716C5E; }\n[data-retirer-fichier] { font-size: 0.85em; }\n.eap-note { margin: 12px 0; padding: 10px 14px; background: #FFF8E6; border-left: 4px solid #B8892B; border-radius: 4px; font-size: 0.92em; }\n.eap-consentement { margin: 16px 0; padding: 12px 14px; border: 1px solid #E4E0D6; border-radius: 10px; }\n.eap-consentement h4 { margin: 0 0 8px; font-size: 1em; }\n.eap-sr { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\n.eap-timeline { list-style: none; margin: 18px 0; padding: 0; }\n.eap-timeline li { position: relative; padding: 0 0 18px 34px; color: #716C5E; }\n.eap-timeline li::before { content: ''; position: absolute; left: 0; top: 2px; width: 18px; height: 18px; border-radius: 50%; border: 2px solid #ccc; background: #fff; box-sizing: border-box; }\n.eap-timeline li::after { content: ''; position: absolute; left: 8px; top: 22px; bottom: 0; width: 2px; background: #E4E0D6; }\n.eap-timeline li:last-child::after { display: none; }\n.eap-timeline li.is-done { color: #26241E; }\n.eap-timeline li.is-done::before { background: #1B2340; border-color: #1B2340; }\n.eap-timeline li.is-done::after { background: #1B2340; }\n.eap-timeline li.is-current { color: #1B2340; font-weight: 700; }\n.eap-timeline li.is-current::before { border-color: #1B2340; box-shadow: 0 0 0 4px rgba(27, 35, 64, 0.15); }\n.eap-timeline small { font-weight: 400; color: #716C5E; }\n.eap-msg { margin: 8px 0; padding: 10px 14px; border-radius: 10px; white-space: pre-wrap; }\n.eap-msg-equipe { background: #F0F4FA; border: 1px solid #D5DEEE; }\n.eap-msg-personne { background: #FFF8E6; border: 1px solid #F0E2B8; margin-left: 24px; }\n.eap-msg-meta { font-size: 0.8em; color: #716C5E; margin-bottom: 4px; white-space: normal; }\n.eap-reference-actions { margin-top: 12px; }\n\/* Zone d'alerte vide = invisible (elle est remplie seulement quand il y a un message \u00e0 afficher). *\/\n.eap-form .eap-urgence:empty { display: none; }\n\n\/* Barre de s\u00e9lection \u00e0 choix multiples *\/\n.eap-ms { position: relative; margin: 10px 0; }\n.eap-ms .eap-ms-bar { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 46px; padding: 10px 12px; box-sizing: border-box; text-align: left; text-transform: none; letter-spacing: normal; font: inherit; font-size: 15px; line-height: 1.3; color: #26241E; background: #fff; border: 1px solid #ccc; border-radius: 8px; box-shadow: none; cursor: pointer; }\n.eap-ms .eap-ms-bar:hover, .eap-ms .eap-ms-bar:focus { background: #fff; color: #26241E; }\n.eap-ms .eap-ms-bar:focus-visible { outline: 2px solid #3B6DC7; outline-offset: 2px; }\n.eap-ms .eap-ms-bar[aria-expanded=\"true\"] { border-color: #1B2340; }\n.eap-ms-valeur { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.eap-ms-valeur.is-placeholder { color: #716C5E; }\n.eap-ms-nb { flex: none; min-width: 22px; padding: 1px 7px; border-radius: 12px; background: #1B2340; color: #fff; font-size: 12px; font-weight: 700; text-align: center; }\n.eap-ms-nb[hidden] { display: none; }\n.eap-ms-fleche { flex: none; color: #716C5E; }\n.eap-ms-panel { position: absolute; left: 0; right: 0; top: 100%; z-index: 30; margin-top: 4px; max-height: 60vh; overflow-y: auto; background: #fff; border: 1px solid #ccc; border-radius: 8px; box-shadow: 0 8px 24px rgba(20, 20, 30, 0.16); }\n.eap-ms-panel[hidden] { display: none; }\n.eap-ms-option { display: flex; align-items: flex-start; gap: 10px; padding: 11px 14px; cursor: pointer; border-bottom: 1px solid #F0EDE3; }\n.eap-ms-option:hover { background: #F6F4EF; }\n.eap-ms-option input { flex: none; width: 18px; height: 18px; margin-top: 2px; }\n.eap-ms-pied { padding: 10px 14px; text-align: right; }\n.eap-reference { margin: 20px 0; padding: 16px; background: #F6F4EF; border-radius: 10px; text-align: center; }\n.eap-reference span { display: block; font-size: 0.85em; color: #716C5E; }\n.eap-reference strong { display: block; font-size: 1.5em; letter-spacing: 2px; margin: 6px 0; }\n.eap-reference small { color: #716C5E; }\n\n\/* Option \u00ab lecture guid\u00e9e \u00bb (\u00e9cran d'accueil) *\/\n.eap-option-guidee { margin: 18px 0 8px; padding: 12px 14px; border: 1px solid #E4E0D6; border-radius: 10px; background: #F6F4EF; }\n.eap-option-guidee input { flex: none; width: 20px; height: 20px; margin-top: 2px; }\n\n\/* Lecture guid\u00e9e : une question \u00e0 la fois, en grand, r\u00e9ponses d\u00e9pli\u00e9es *\/\n.eap-progression { display: none; margin: 0 0 18px; font-weight: 600; color: #1B2340; }\n.eap-barre { height: 6px; margin-top: 8px; background: #E4E0D6; border-radius: 3px; overflow: hidden; }\n.eap-barre span { display: block; height: 100%; width: 0; background: #1B2340; transition: width .25s ease; }\n.eap-nav-guide { display: flex; justify-content: space-between; gap: 12px; margin-top: 24px; }\n.eap-nav-guide .eap-btn { padding: 14px 22px; font-size: 16px; }\n.eap-q:focus { outline: none; }\n.eap-ecran-guide > .eap-nav-etape { display: none; }\n.eap-guidee .eap-ecran-guide > .eap-progression { display: block; }\n.eap-guidee .eap-q .eap-souscription-titre { margin-top: 4px; font-size: 1.5em; line-height: 1.3; }\n.eap-guidee .eap-q .eap-aide { font-size: 1em; }\n.eap-guidee .eap-q .eap-label { font-size: 1.3em; }\n.eap-guidee .eap-q textarea { font-size: 17px; min-height: 220px; }\n.eap-guidee .eap-cases, .eap-guidee .eap-radios { gap: 10px; }\n.eap-guidee .eap-cases label, .eap-guidee .eap-radios label, .eap-guidee .eap-ms-option { align-items: center; padding: 14px 16px; border: 1px solid #DAD5C6; border-radius: 10px; background: #fff; font-size: 1.08em; }\n.eap-guidee .eap-cases label:has(input:checked), .eap-guidee .eap-radios label:has(input:checked), .eap-guidee .eap-ms-option:has(input:checked) { border-color: #1B2340; background: #F0F4FA; }\n.eap-guidee .eap-cases input, .eap-guidee .eap-radios input, .eap-guidee .eap-ms-option input { flex: none; width: 22px; height: 22px; margin: 0; }\n\/* Les menus \u00e0 choix multiples sont toujours d\u00e9pli\u00e9s en lecture guid\u00e9e *\/\n.eap-guidee .eap-ms .eap-ms-bar { display: none !important; }\n.eap-guidee .eap-ms .eap-ms-panel, .eap-guidee .eap-ms .eap-ms-panel[hidden] { display: block !important; position: static; max-height: none; margin: 10px 0 0; border: 0; box-shadow: none; background: transparent; overflow: visible; }\n.eap-guidee .eap-ms-option { margin-bottom: 10px; }\n.eap-guidee .eap-ms-pied { display: none; }\n\n.eap-form p:empty, .eap-form h3:empty, .eap-form h4:empty { display: none; }\n\n\/* Champ libre \u00ab Plus de pr\u00e9cisions \u00bb (sous chaque question \u00e0 choix) *\/\n.eap-libre { margin-top: 16px; }\n.eap-libre-label { display: block; font-weight: 600; margin-bottom: 6px; }\n.eap-libre textarea { min-height: 84px; resize: vertical; }\n.eap-guidee .eap-libre-label { font-size: 1.1em; }\n.eap-guidee .eap-libre textarea { min-height: 120px; font-size: 17px; }\n\n\/* Images ins\u00e9r\u00e9es depuis \u00ab Mise en page \u00bb *\/\n.eap-image { margin: 16px 0; }\n.eap-image img { display: block; max-width: 100%; height: auto; border-radius: 8px; }\n.eap-image-centre img { margin-left: auto; margin-right: auto; }\n.eap-image-droite img { margin-left: auto; }\n\n\/* Mode plein \u00e9cran : le formulaire recouvre toute la fen\u00eatre (menus et bandeaux du site masqu\u00e9s) *\/\n.eap-plein-barre { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin: 0 0 8px; }\n.eap-accueil-bouton { display: inline-flex; align-items: center; padding: 8px 10px; }\n.eap-plein-bouton { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: 14px; }\n.eap-plein-ico-sortir { display: none; }\n#eap-form.eap-plein .eap-plein-ico-entrer { display: none; }\n#eap-form.eap-plein .eap-plein-ico-sortir { display: inline; }\nhtml.eap-plein-actif, html.eap-plein-actif body { overflow: hidden !important; }\n#eap-form.eap-plein { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 2147483000; max-width: none; margin: 0; border-radius: 0; box-sizing: border-box; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scroll-behavior: auto; -webkit-overflow-scrolling: touch; background: var(--eap-fond, #fff); padding: 0 16px 56px; padding: 0 max(16px, calc((100% - 720px) \/ 2)) 56px; }\n#eap-form.eap-plein .eap-plein-barre { position: sticky; top: 0; z-index: 40; background: var(--eap-fond, #fff); padding: 12px 0 8px; margin: 0 0 8px; }\n<\/style>\n<style>\/* Couleurs et gras (r\u00e9glages \u00ab Couleurs et gras \u00bb) *\/\n.eap-form.eap-c-fond { background: var(--eap-fond); padding: 24px; border-radius: 12px; }\n.eap-form.eap-c-btn-fond .eap-btn-primary { background: var(--eap-btn-fond); }\n.eap-form.eap-c-btn-texte .eap-btn-primary { color: var(--eap-btn-texte); }\n.eap-form.eap-c-btn-fond .eap-btn-ghost { color: var(--eap-btn-fond); border-color: var(--eap-btn-fond); }\n.eap-form.eap-c-btn-fond .eap-barre span, .eap-form.eap-c-btn-fond .eap-ms-nb { background: var(--eap-btn-fond); }\n.eap-form.eap-c-btn-texte .eap-ms-nb { color: var(--eap-btn-texte); }\n.eap-form.eap-c-btn-fond .eap-timeline li.is-done::before, .eap-form.eap-c-btn-fond .eap-timeline li.is-done::after { background: var(--eap-btn-fond); }\n.eap-form.eap-c-btn-fond .eap-timeline li.is-done::before, .eap-form.eap-c-btn-fond .eap-timeline li.is-current::before { border-color: var(--eap-btn-fond); }\n.eap-form.eap-c-titre h2 { color: var(--eap-titre); }\n.eap-form.eap-titre-gras h2 { font-weight: 700; }\n.eap-form.eap-titre-normal h2 { font-weight: 400; }\n.eap-form.eap-c-st .eap-souscription-titre:not(.eap-question), .eap-form.eap-c-st .eap-consentement h4 { color: var(--eap-soustitre); }\n.eap-form.eap-st-gras .eap-souscription-titre:not(.eap-question), .eap-form.eap-st-gras .eap-consentement h4 { font-weight: 700; }\n.eap-form.eap-st-normal .eap-souscription-titre:not(.eap-question), .eap-form.eap-st-normal .eap-consentement h4 { font-weight: 400; }\n.eap-form.eap-c-texte, .eap-form.eap-c-texte p, .eap-form.eap-c-texte label, .eap-form.eap-c-texte li,\n.eap-form.eap-c-texte .eap-timeline li.is-done, .eap-form.eap-c-texte .eap-timeline li.is-current { color: var(--eap-texte); }\n.eap-form.eap-c-texte .eap-aide, .eap-form.eap-c-texte .eap-optionnel, .eap-form.eap-c-texte .eap-rec-temps,\n.eap-form.eap-c-texte .eap-depot p, .eap-form.eap-c-texte .eap-timeline li, .eap-form.eap-c-texte .eap-timeline small { color: var(--eap-texte); }\n.eap-form.eap-c-texte .eap-aide, .eap-form.eap-c-texte .eap-optionnel { opacity: .8; }\n.eap-form.eap-c-q .eap-question { color: var(--eap-question); }\n\/* Zones \u00e0 fond clair : le texte y reste fonc\u00e9, pour rester lisible quel que soit le fond choisi. *\/\n.eap-form.eap-c-texte .eap-ms-panel label, .eap-form.eap-c-texte .eap-ms-panel span,\n.eap-form.eap-guidee.eap-c-texte .eap-cases label, .eap-form.eap-guidee.eap-c-texte .eap-radios label { color: #26241E; }\n.eap-form.eap-c-texte .eap-urgence, .eap-form.eap-c-texte .eap-note, .eap-form.eap-c-texte .eap-msg, .eap-form.eap-c-texte .eap-msg *,\n.eap-form.eap-c-texte .eap-reference, .eap-form.eap-c-texte .eap-reference *,\n.eap-form.eap-c-texte .eap-option-guidee, .eap-form.eap-c-texte .eap-option-guidee * { color: #26241E; opacity: 1; }<\/style>\n\n<script>\n(function () {\n    var root = document.getElementById('eap-form');\n    if (!root) return;\n    var ajaxUrl = root.dataset.ajax, nonce = root.dataset.nonce;\n\n    \/\/ ---------- Mode plein \u00e9cran (r\u00e9glage \u00ab Options du formulaire \u00bb : non \/ bouton \/ auto) ----------\n    \/\/ Le formulaire est d\u00e9plac\u00e9 sous <body> pour recouvrir toute la fen\u00eatre, quel que soit le th\u00e8me (un parent\n    \/\/ transform\u00e9 ou masqu\u00e9 l'emp\u00eacherait sinon), puis remis exactement \u00e0 sa place \u00e0 la sortie. Sur les navigateurs\n    \/\/ qui le permettent, le bouton demande aussi le plein \u00e9cran du navigateur lui-m\u00eame.\n    var PLEIN = root.dataset.pleinEcran || 'non';\n    var TEXTES_PLEIN = {\"ouvrir\":\"Plein \\u00e9cran\",\"quitter\":\"Quitter le plein \\u00e9cran\",\"titre\":\"Vous pouvez en parler.\"};\n    var elPlein = root.querySelector('[data-el=plein-ecran]');\n    var pleinActif = false, pleinApi = false, marqueurPlein = null;\n    function elementApi() { return document.fullscreenElement || document.webkitFullscreenElement || null; }\n    function majBoutonPlein() {\n        if (!elPlein) return;\n        elPlein.setAttribute('aria-pressed', pleinActif ? 'true' : 'false');\n        elPlein.querySelector('[data-el=plein-libelle]').textContent = pleinActif ? TEXTES_PLEIN.quitter : TEXTES_PLEIN.ouvrir;\n    }\n    function entrerPlein(avecApi) {\n        if (pleinActif || PLEIN === 'non') return;\n        pleinActif = true;\n        marqueurPlein = document.createElement('span');\n        marqueurPlein.hidden = true;\n        root.parentNode.insertBefore(marqueurPlein, root);\n        document.body.appendChild(root);\n        root.classList.add('eap-plein');\n        document.documentElement.classList.add('eap-plein-actif');\n        root.setAttribute('role', 'dialog');\n        root.setAttribute('aria-modal', 'true');\n        root.setAttribute('aria-label', TEXTES_PLEIN.titre || 'Formulaire');\n        root.scrollTop = 0;\n        majBoutonPlein();\n        var demande = root.requestFullscreen || root.webkitRequestFullscreen;\n        if (avecApi && demande) {\n            try { var p = demande.call(root); if (p && p.catch) p.catch(function () {}); } catch (e) {}\n        }\n        if (elPlein) elPlein.focus({ preventScroll: true });\n    }\n    function quitterPlein() {\n        if (!pleinActif) return;\n        pleinActif = false;\n        var etaitApi = pleinApi; pleinApi = false;\n        if (elementApi()) {\n            var sortie = document.exitFullscreen || document.webkitExitFullscreen;\n            try { var p = sortie && sortie.call(document); if (p && p.catch) p.catch(function () {}); } catch (e) {}\n        }\n        root.classList.remove('eap-plein');\n        document.documentElement.classList.remove('eap-plein-actif');\n        root.removeAttribute('role'); root.removeAttribute('aria-modal'); root.removeAttribute('aria-label');\n        if (marqueurPlein && marqueurPlein.parentNode) { marqueurPlein.parentNode.insertBefore(root, marqueurPlein); marqueurPlein.parentNode.removeChild(marqueurPlein); }\n        marqueurPlein = null;\n        majBoutonPlein();\n        if (elPlein) elPlein.focus({ preventScroll: true });\n        root.scrollIntoView({ block: 'start' });\n    }\n    if (elPlein) elPlein.addEventListener('click', function () { if (pleinActif) quitterPlein(); else entrerPlein(true); });\n    \/\/ \u00c9chap quitte le plein \u00e9cran (sauf s'il sert d'abord \u00e0 refermer un menu de choix ouvert).\n    document.addEventListener('keydown', function (e) {\n        if (e.key !== 'Escape' || !pleinActif) return;\n        if (!barresDepliees && root.querySelector('.eap-ms-bar[aria-expanded=\"true\"]')) return;\n        quitterPlein();\n    }, true);\n    \/\/ Sortie du plein \u00e9cran par le navigateur (touche \u00c9chap, geste\u2026) : le formulaire reprend sa place aussi.\n    function changementApi() {\n        if (elementApi() === root) pleinApi = true;\n        else if (pleinApi) { pleinApi = false; quitterPlein(); }\n    }\n    document.addEventListener('fullscreenchange', changementApi);\n    document.addEventListener('webkitfullscreenchange', changementApi);\n\n    \/\/ R\u00e9ponses propos\u00e9es par chaque question : ordre et suppressions r\u00e9gl\u00e9s dans \u00ab Mise en page \u00bb.\n    var TYPES = {\"ne_sait_pas\":\"Je ne sais pas \\\/ je pr\\u00e9f\\u00e8re simplement raconter\",\"difficulte_personnelle\":\"Une difficult\\u00e9 personnelle\",\"conflit_relationnel\":\"Un conflit ou une difficult\\u00e9 relationnelle\",\"harcelement\":\"Du harc\\u00e8lement\",\"propos_inappropries\":\"Des propos ou comportements inappropri\\u00e9s\",\"manipulation_emprise\":\"Une situation de manipulation ou d'emprise\",\"violences\":\"Des violences\",\"abus\":\"Des abus\",\"discrimination\":\"Une discrimination\",\"enfant_vulnerable\":\"Une situation concernant un enfant ou une personne vuln\\u00e9rable\",\"autre\":\"Autre\"};\n    var MOMENTS = {\"recent\":\"Aujourd'hui ou r\\u00e9cemment\",\"semaines_mois\":\"Il y a plusieurs semaines ou mois\",\"annees\":\"Il y a plusieurs ann\\u00e9es\",\"repetition\":\"\\u00c0 plusieurs reprises\",\"ne_sait_pas\":\"Je ne sais pas \\\/ je pr\\u00e9f\\u00e8re ne pas pr\\u00e9ciser\"};\n    var EN_COURS = {\"oui\":\"Oui\",\"non\":\"Non\",\"ne_sait_pas\":\"Je ne sais pas\",\"refus\":\"Je pr\\u00e9f\\u00e8re ne pas r\\u00e9pondre\"};\n    var DANGER = {\"oui\":\"Oui\",\"non\":\"Non\",\"ne_sait_pas\":\"Je ne sais pas\",\"refus\":\"Je pr\\u00e9f\\u00e8re ne pas r\\u00e9pondre\"};\n    var BESOINS = {\"recu\":\"Je souhaite simplement que mon t\\u00e9moignage soit re\\u00e7u.\",\"ecoute\":\"Je souhaite \\u00eatre \\u00e9cout\\u00e9(e) ou accompagn\\u00e9(e).\",\"recontacte\":\"Je souhaite \\u00eatre recontact\\u00e9(e).\",\"signalement_collectif\":\"Je souhaite signaler une situation qui concerne \\u00e9galement d'autres personnes.\",\"ne_sait_pas\":\"Je ne sais pas encore ce dont j'ai besoin.\"};\n    var CONCERNES = {\"moi_meme\":\"Moi-m\\u00eame\",\"mon_enfant\":\"Mon enfant\",\"autre_enfant\":\"Un autre enfant\",\"personne_majeure\":\"Une personne majeure\",\"personne_vulnerable\":\"Une personne vuln\\u00e9rable\",\"plusieurs\":\"Plusieurs personnes\",\"prefere_ne_pas_preciser\":\"Je pr\\u00e9f\\u00e8re ne pas pr\\u00e9ciser\"};\n    var LIEUX = {\"eglise\":\"Dans l'\\u00e9glise\",\"activite\":\"Lors d'une activit\\u00e9 de l'\\u00e9glise\",\"evenement\":\"Lors d'un \\u00e9v\\u00e9nement \\\/ s\\u00e9jour \\\/ d\\u00e9placement\",\"en_ligne\":\"En ligne \\\/ sur les r\\u00e9seaux sociaux\",\"domicile\":\"Au domicile\",\"autre_lieu\":\"Dans un autre lieu\",\"plusieurs\":\"\\u00c0 plusieurs endroits\",\"prefere_ne_pas_preciser\":\"Je pr\\u00e9f\\u00e8re ne pas pr\\u00e9ciser\"};\n    var ELEMENTS = {\"messages\":\"Messages \\\/ \\u00e9changes \\u00e9crits\",\"medias\":\"Photos ou vid\\u00e9os\",\"documents\":\"Documents\",\"temoins\":\"T\\u00e9moins\",\"autres\":\"Autres \\u00e9l\\u00e9ments\",\"aucun\":\"Aucun\",\"refus\":\"Je pr\\u00e9f\\u00e8re ne pas r\\u00e9pondre\"};\n    var MESSAGE_DANGER = {\"titre\":\"Si vous \\u00eates actuellement en danger, ne vous limitez pas \\u00e0 ce formulaire.\",\"texte\":\"Contactez imm\\u00e9diatement les services d'urgence comp\\u00e9tents ou une personne de confiance pouvant vous prot\\u00e9ger.\"};\n    var TEXTE_TERMINE = \"Termin\\u00e9\";\n    var TEXTE_RETIRER = \"Retirer\";\n    var ERREURS = {\"temoignage_texte_manquant\":\"Merci de d\\u00e9crire la situation avant de continuer, ou de d\\u00e9poser un fichier.\",\"temoignage_audio_manquant\":\"Merci d'enregistrer votre t\\u00e9moignage avant de continuer (ou basculez sur \\u00ab \\u00e9crire \\u00bb, ou d\\u00e9posez un fichier).\",\"depot_trop_de_fichiers\":\"Vous ne pouvez pas joindre plus de 5 fichiers.\",\"depot_format_refuse\":\"Ce fichier ne peut pas \\u00eatre envoy\\u00e9 (format non autoris\\u00e9).\",\"depot_trop_gros\":\"Ce fichier ne peut pas \\u00eatre envoy\\u00e9 (plus de 25 Mo).\",\"micro_refuse\":\"Impossible d'acc\\u00e9der au micro. V\\u00e9rifiez les autorisations de votre navigateur, ou \\u00e9crivez votre t\\u00e9moignage.\",\"telephone_invalide\":\"Le num\\u00e9ro de t\\u00e9l\\u00e9phone indiqu\\u00e9 ne semble pas valide.\",\"email_invalide\":\"L'adresse e-mail indiqu\\u00e9e ne semble pas valide.\",\"champ_numerique\":\"Le champ \\u00ab {champ} \\u00bb n'accepte que des chiffres.\",\"champ_alphanum\":\"Le champ \\u00ab {champ} \\u00bb n'accepte que des lettres et des chiffres.\",\"contact_requis\":\"Pour \\u00eatre recontact\\u00e9(e), merci d'indiquer au minimum un num\\u00e9ro de t\\u00e9l\\u00e9phone ou une adresse e-mail.\",\"question_obligatoire\":\"Cette question est obligatoire : merci de cocher au moins une r\\u00e9ponse.\",\"question_obligatoire_libre\":\"Cette question est obligatoire : merci de cocher au moins une r\\u00e9ponse ou d'\\u00e9crire votre r\\u00e9ponse dans \\u00ab Plus de pr\\u00e9cisions \\u00bb.\",\"consentements_manquants\":\"Merci de cocher chaque case de consentement avant l'envoi.\",\"suivi_champs_vides\":\"Merci de saisir la r\\u00e9f\\u00e9rence et le code de suivi.\",\"suivi_message_vide\":\"Merci d'\\u00e9crire votre message.\",\"envoi_echec\":\"L'envoi a \\u00e9chou\\u00e9, v\\u00e9rifiez votre connexion et r\\u00e9essayez.\"};\n\n    function remplirCases(el, dict, name) {\n        if (!el) return; \/\/ question supprim\u00e9e dans \u00ab Mise en page \u00bb\n        el.innerHTML = Object.keys(dict).map(function (k) {\n            return '<label><input type=\"checkbox\" name=\"' + name + '\" value=\"' + k + '\"> ' + dict[k] + '<\/label>';\n        }).join('');\n    }\n    function remplirRadios(el, dict, name) {\n        if (!el) return;\n        el.innerHTML = Object.keys(dict).map(function (k) {\n            return '<label><input type=\"radio\" name=\"' + name + '\" value=\"' + k + '\"> ' + dict[k] + '<\/label>';\n        }).join('');\n    }\n    remplirCases(root.querySelector('[data-el=cases-types]'), TYPES, 'eap-type');\n    remplirRadios(root.querySelector('[data-el=radios-moment]'), MOMENTS, 'eap-moment');\n    remplirRadios(root.querySelector('[data-el=radios-en-cours]'), EN_COURS, 'eap-en-cours');\n    remplirCases(root.querySelector('[data-el=cases-besoins]'), BESOINS, 'eap-besoin');\n    remplirRadios(root.querySelector('[data-el=radios-danger]'), DANGER, 'eap-danger');\n\n    \/\/ ---------- Clic sur le texte d'une r\u00e9ponse : coche (ou d\u00e9coche) la case, comme le clic sur le petit carr\u00e9 ----------\n    \/\/ Sur certains sites, le th\u00e8me ou une extension modifie les cases et leurs intitul\u00e9s (cases masqu\u00e9es et redessin\u00e9es, clic intercept\u00e9 ou\n    \/\/ compt\u00e9 deux fois\u2026) et un clic sur la phrase ne coche plus rien. On ne s'en remet donc plus au comportement natif : le clic sur le texte est\n    \/\/ pris en charge ici, et l'\u00e9tat final est fix\u00e9 une fois que les autres scripts ont fini (case : inverse de l'\u00e9tat d'avant le clic ; bouton\n    \/\/ radio : s\u00e9lectionn\u00e9). Le clic sur la case elle-m\u00eame, et le clavier, gardent leur comportement normal. Les m\u00eames \u00e9v\u00e9nements \u00ab input \u00bb et\n    \/\/ \u00ab change \u00bb sont \u00e9mis : les r\u00e8gles qui en d\u00e9pendent (r\u00e9ponses exclusives, message de danger, erreurs effac\u00e9es) fonctionnent comme avant.\n    root.addEventListener('click', function (e) {\n        var cible = e.target;\n        if (!cible || !cible.closest) return;\n        var etiquette = cible.closest('label');\n        if (!etiquette || !root.contains(etiquette)) return;\n        var champ = etiquette.querySelector('input[type=checkbox], input[type=radio]');\n        if (!champ || champ.disabled || cible === champ || cible.closest('a, button, select, textarea, input')) return;\n        e.preventDefault(); \/\/ le comportement natif de l'\u00e9tiquette est remplac\u00e9 par le n\u00f4tre : jamais de double bascule\n        var avant = champ.checked;\n        setTimeout(function () {\n            var voulu = champ.type === 'radio' ? true : !avant;\n            if (champ.checked !== voulu) champ.checked = voulu;\n            if (voulu !== avant) {\n                champ.dispatchEvent(new Event('input', { bubbles: true }));\n                champ.dispatchEvent(new Event('change', { bubbles: true }));\n            }\n        }, 0);\n    }, true);\n\n    \/\/ ---------- Champs libres \u00ab Plus de pr\u00e9cisions \u00bb : sans limite de longueur, la zone s'agrandit avec le texte ----------\n    root.querySelectorAll('[data-libre]').forEach(function (t) {\n        t.addEventListener('input', function () {\n            t.style.height = 'auto';\n            t.style.height = (t.scrollHeight + (t.offsetHeight - t.clientHeight)) + 'px';\n        });\n    });\n\n    \/\/ ---------- Message si danger actuel ----------\n    var messageDangerHtml = '<strong>' + MESSAGE_DANGER.titre + '<\/strong> ' + MESSAGE_DANGER.texte;\n    root.querySelectorAll('input[name=eap-danger]').forEach(function (r) {\n        r.addEventListener('change', function () {\n            var zoneDanger = root.querySelector('[data-el=message-danger]');\n            if (zoneDanger) zoneDanger.innerHTML = this.value === 'oui' ? messageDangerHtml : '';\n        });\n    });\n\n    \/\/ ---------- Barres de s\u00e9lection \u00e0 choix multiples ----------\n    var barres = [], barresDepliees = false; \/\/ barresDepliees : lecture guid\u00e9e, o\u00f9 les r\u00e9ponses sont toujours visibles\n    function fermerBarres(sauf) { barres.forEach(function (b) { if (b !== sauf) b.fermer(); }); }\n    document.addEventListener('click', function (e) { barres.forEach(function (b) { if (!b.el.contains(e.target)) b.fermer(); }); });\n    document.addEventListener('focusin', function (e) { barres.forEach(function (b) { if (!b.el.contains(e.target)) b.fermer(); }); });\n\n    \/\/ opts : name, labelId (titre associ\u00e9), exclusifs (valeurs qui ne se combinent avec aucune autre)\n    function creerBarre(el, dict, opts) {\n        var id = 'eap-ms-' + opts.name;\n        var exclusifs = opts.exclusifs || [];\n        var html = '<button type=\"button\" class=\"eap-ms-bar\" id=\"' + id + '-bar\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-controls=\"' + id + '-panel\" aria-labelledby=\"' + opts.labelId + ' ' + id + '-bar\">'\n            + '<span class=\"eap-ms-valeur is-placeholder\"><\/span><span class=\"eap-ms-nb\" hidden><\/span><span class=\"eap-ms-fleche\" aria-hidden=\"true\">\u25be<\/span><\/button>'\n            + '<div class=\"eap-ms-panel\" id=\"' + id + '-panel\" role=\"group\" aria-labelledby=\"' + opts.labelId + '\" hidden>';\n        Object.keys(dict).forEach(function (k) {\n            html += '<label class=\"eap-ms-option\"><input type=\"checkbox\" name=\"eap-' + opts.name + '\" value=\"' + k + '\"><span>' + dict[k] + '<\/span><\/label>';\n        });\n        html += '<div class=\"eap-ms-pied\"><button type=\"button\" class=\"eap-btn eap-btn-ghost eap-ms-ok\">' + TEXTE_TERMINE + '<\/button><\/div><\/div>';\n        el.innerHTML = html;\n\n        var bar = el.querySelector('.eap-ms-bar'), panel = el.querySelector('.eap-ms-panel');\n        var elValeur = el.querySelector('.eap-ms-valeur'), elNb = el.querySelector('.eap-ms-nb');\n        var api = { el: el, fermer: fermer, deplier: deplier };\n        barres.push(api);\n\n        function ouvrir() { fermerBarres(api); panel.hidden = false; bar.setAttribute('aria-expanded', 'true'); }\n        function fermer() { if (barresDepliees) return; panel.hidden = true; bar.setAttribute('aria-expanded', 'false'); }\n        \/\/ Lecture guid\u00e9e : r\u00e9ponses toujours d\u00e9pli\u00e9es et cliquables. Les r\u00e9glages sont pos\u00e9s directement sur les\n        \/\/ \u00e9l\u00e9ments (avec \u00ab important \u00bb) pour qu'aucune feuille de style du th\u00e8me ne puisse les replier.\n        var STYLES_DEPLIES = { display: 'block', position: 'static', 'max-height': 'none', overflow: 'visible', border: '0', 'box-shadow': 'none', background: 'transparent', margin: '10px 0 0' };\n        function deplier(oui) {\n            panel.hidden = !oui;\n            bar.hidden = !!oui;\n            bar.setAttribute('aria-expanded', oui ? 'true' : 'false');\n            Object.keys(STYLES_DEPLIES).forEach(function (p) {\n                if (oui) panel.style.setProperty(p, STYLES_DEPLIES[p], 'important'); else panel.style.removeProperty(p);\n            });\n            if (oui) bar.style.setProperty('display', 'none', 'important'); else bar.style.removeProperty('display');\n        }\n        function majResume() {\n            var coches = panel.querySelectorAll('input:checked');\n            if (!coches.length) {\n                elValeur.textContent = 'S\u00e9lectionner\u2026';\n                elValeur.classList.add('is-placeholder');\n                elNb.hidden = true;\n                return;\n            }\n            elValeur.textContent = Array.prototype.map.call(coches, function (c) { return dict[c.value]; }).join(', ');\n            elValeur.classList.remove('is-placeholder');\n            elNb.textContent = coches.length;\n            elNb.hidden = coches.length < 2;\n        }\n\n        bar.addEventListener('click', function () { if (panel.hidden) ouvrir(); else fermer(); });\n        el.querySelector('.eap-ms-ok').addEventListener('click', function () { fermer(); bar.focus(); });\n        el.addEventListener('keydown', function (e) { if (e.key === 'Escape' && !panel.hidden) { fermer(); bar.focus(); } });\n        panel.addEventListener('change', function (e) {\n            var input = e.target;\n            if (input.type !== 'checkbox' || !input.checked) { majResume(); return; }\n            \/\/ \u00ab Aucun \u00bb \/ \u00ab Je pr\u00e9f\u00e8re ne pas pr\u00e9ciser \u00bb\u2026 ne se combinent avec aucun autre choix.\n            panel.querySelectorAll('input[type=checkbox]').forEach(function (autre) {\n                if (autre === input) return;\n                var exclusif = exclusifs.indexOf(input.value) !== -1 || exclusifs.indexOf(autre.value) !== -1;\n                if (exclusif) autre.checked = false;\n            });\n            majResume();\n        });\n        majResume();\n    }\n    if (root.querySelector('[data-ms=concernes]')) creerBarre(root.querySelector('[data-ms=concernes]'), CONCERNES, { name: 'concernes', labelId: 'eap-lbl-concernes', exclusifs: ['prefere_ne_pas_preciser'] });\n    if (root.querySelector('[data-ms=lieux]')) creerBarre(root.querySelector('[data-ms=lieux]'), LIEUX, { name: 'lieux', labelId: 'eap-lbl-lieux', exclusifs: ['prefere_ne_pas_preciser'] });\n    if (root.querySelector('[data-ms=elements]')) creerBarre(root.querySelector('[data-ms=elements]'), ELEMENTS, { name: 'elements', labelId: 'eap-lbl-elements', exclusifs: ['aucun', 'refus'] });\n\n    var mode = 'ecrit';\n    var audioBlob = null;\n    var mediaRecorder = null, chunks = [], timerInterval = null, secondes = 0;\n\n    \/\/ Horodatage pos\u00e9 au chargement : un envoi trop rapide, ou sans cet horodatage (requ\u00eate envoy\u00e9e\n    \/\/ sans passer par ce script), est trait\u00e9 comme un robot \u2014 voir eap_ajax_envoyer_temoignage().\n    var elHorodatage = root.querySelector('[data-el=horodatage]');\n    if (elHorodatage) elHorodatage.value = Date.now();\n\n    \/\/ indexEtape : en lecture guid\u00e9e, num\u00e9ro de la question \u00e0 afficher (par d\u00e9faut, la premi\u00e8re de l'\u00e9cran).\n    function ecranVisible() {\n        var visible = null;\n        root.querySelectorAll('.eap-ecran').forEach(function (e) { if (e.style.display !== 'none') visible = e.dataset.ecran; });\n        return visible;\n    }\n    \/\/ D\u00e9filement sans animation (m\u00eame si le th\u00e8me force \u00ab scroll-behavior: smooth \u00bb).\n    function sauterA(y) {\n        try { window.scrollTo({ top: y, behavior: 'instant' }); } catch (e) { window.scrollTo(0, y); }\n    }\n    \/\/ Lecture guid\u00e9e, d'une question \u00e0 l'autre : la page ne bouge pas. On ne d\u00e9file que si le haut de la\n    \/\/ question a disparu de l'\u00e9cran (par exemple apr\u00e8s une longue liste de r\u00e9ponses), et alors sans animation.\n    function garderPosition(nom, avant) {\n        if (pleinActif) { \/\/ plein \u00e9cran : c'est le formulaire qui d\u00e9file, pas la page\n            var barre = root.querySelector('.eap-plein-barre');\n            var ecart = ecransGuides[nom].progression.getBoundingClientRect().top - root.getBoundingClientRect().top - (barre ? barre.offsetHeight : 0);\n            if (ecart < 0 || ecart > root.clientHeight * 0.6) root.scrollTop += ecart - 12;\n            return;\n        }\n        var apres = root.getBoundingClientRect().top;\n        if (Math.abs(apres - avant) > 0.5) sauterA(window.pageYOffset + (apres - avant)); \/\/ le navigateur a d\u00e9plac\u00e9 la page : on la remet o\u00f9 elle \u00e9tait\n        var haut = ecransGuides[nom].progression.getBoundingClientRect().top;\n        if (haut < 0 || haut > window.innerHeight * 0.6) sauterA(window.pageYOffset + haut - 12);\n    }\n    function afficherEcran(nom, indexEtape) {\n        var etaitGuide = guide && ECRANS_GUIDES.indexOf(ecranVisible()) !== -1;\n        var avant = root.getBoundingClientRect().top;\n        root.querySelectorAll('.eap-ecran').forEach(function (e) { e.style.display = e.dataset.ecran === nom ? '' : 'none'; });\n        if (nom === 'identite') majIdentite();\n        var boutonAccueil = root.querySelector('[data-el=accueil-lien]');\n        if (boutonAccueil) boutonAccueil.style.display = (nom === 'accueil' || root.dataset.initial === 'suivi') ? 'none' : '';\n        majGuide(nom, indexEtape);\n        if (guide && etaitGuide && ECRANS_GUIDES.indexOf(nom) !== -1) { garderPosition(nom, avant); return; }\n        if (pleinActif) { try { root.scrollTo({ top: 0, behavior: 'smooth' }); } catch (e) { root.scrollTop = 0; } return; }\n        root.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n    root.querySelectorAll('[data-aller]').forEach(function (b) {\n        b.addEventListener('click', function () {\n            if (b.dataset.mode) basculerMode(b.dataset.mode);\n            if (b.dataset.valider === 'temoignage' && !validerTemoignage()) return;\n            \/\/ \u00ab Continuer \u00bb depuis un \u00e9cran de questions : les questions obligatoires de cet \u00e9cran doivent avoir une r\u00e9ponse.\n            var ecranSource = b.closest('.eap-ecran');\n            if (ecranSource && ['temoignage', 'precisions', 'besoins'].indexOf(ecranSource.dataset.ecran) !== -1) {\n                var sansReponse = premiereQuestionSansReponse(ecranSource.dataset.ecran);\n                if (sansReponse) { sansReponse.scrollIntoView({ block: 'center' }); return; }\n            }\n            afficherEcran(b.dataset.aller);\n        });\n    });\n    root.querySelectorAll('[data-retour]').forEach(function (b) {\n        b.addEventListener('click', function () { afficherEcran(b.dataset.retour); });\n    });\n    root.querySelectorAll('[data-recommencer]').forEach(function (b) {\n        b.addEventListener('click', function () { location.reload(); });\n    });\n\n    function basculerMode(m) {\n        mode = m;\n        root.querySelector('[data-bloc=ecrit]').style.display = m === 'ecrit' ? '' : 'none';\n        root.querySelector('[data-bloc=vocal]').style.display = m === 'vocal' ? '' : 'none';\n    }\n    root.querySelectorAll('[data-basculer-mode]').forEach(function (b) {\n        b.addEventListener('click', function () { basculerMode(b.dataset.basculerMode); });\n    });\n\n    function validerTemoignage() {\n        var err = root.querySelector('[data-el=erreur-temoignage]');\n        var texte = root.querySelector('[data-el=contenu-texte]').value.trim();\n        if (mode === 'ecrit' && !texte && !fichiersDeposes.length) { err.textContent = ERREURS.temoignage_texte_manquant; return false; }\n        if (mode === 'vocal' && !audioBlob && !fichiersDeposes.length) { err.textContent = ERREURS.temoignage_audio_manquant; return false; }\n        err.textContent = '';\n        return true;\n    }\n\n    \/\/ ---------- Questions obligatoires (back office \u2192 \u00ab Facultatifs \u00bb) ----------\n    \/\/ Une question obligatoire (data-requis) exige au moins une r\u00e9ponse : une case coch\u00e9e, ou un texte dans son champ libre.\n    var SELECTEURS_REPONSE = {\n        type: 'input[name=eap-type]:checked', quand: 'input[name=eap-moment]:checked', encours: 'input[name=eap-en-cours]:checked',\n        danger: 'input[name=eap-danger]:checked', concernes: 'input[name=eap-concernes]:checked', lieux: 'input[name=eap-lieux]:checked',\n        elements: 'input[name=eap-elements]:checked', besoins: 'input[name=eap-besoin]:checked'\n    };\n    function questionRepondue(q) {\n        var sel = SELECTEURS_REPONSE[q.dataset.q];\n        if (sel && q.querySelector(sel)) return true;\n        var libre = q.querySelector('[data-libre]');\n        return !!(libre && libre.value.trim() !== '');\n    }\n    \/\/ Contr\u00f4le une question obligatoire et affiche (ou efface) son message ; renvoie true si elle est en r\u00e8gle ou facultative.\n    function verifierQuestion(q) {\n        if (q.dataset.requis !== '1') return true;\n        var ok = questionRepondue(q);\n        var err = q.querySelector('[data-el^=\"erreur-q-\"]');\n        if (err) err.textContent = ok ? '' : (q.querySelector('[data-libre]') ? ERREURS.question_obligatoire_libre : ERREURS.question_obligatoire);\n        return ok;\n    }\n    \/\/ Contr\u00f4le toutes les questions obligatoires d'un \u00e9cran (ou du formulaire entier si nom est vide) ; renvoie la premi\u00e8re sans r\u00e9ponse, ou null.\n    function premiereQuestionSansReponse(nom) {\n        var premiere = null;\n        var portee = nom ? '.eap-ecran[data-ecran=' + nom + '] ' : '';\n        root.querySelectorAll(portee + '.eap-q[data-requis=\"1\"]').forEach(function (q) {\n            if (!verifierQuestion(q) && !premiere) premiere = q;\n        });\n        return premiere;\n    }\n    \/\/ Un message d'erreur dispara\u00eet d\u00e8s que la question re\u00e7oit une r\u00e9ponse.\n    function effacerErreurQuestion(e) {\n        var q = e.target && e.target.closest ? e.target.closest('.eap-q[data-requis=\"1\"]') : null;\n        if (q && questionRepondue(q)) { var err = q.querySelector('[data-el^=\"erreur-q-\"]'); if (err) err.textContent = ''; }\n    }\n    root.addEventListener('change', effacerErreurQuestion);\n    root.addEventListener('input', effacerErreurQuestion);\n\n    \/\/ ---------- Fichiers d\u00e9pos\u00e9s (audio d\u00e9j\u00e0 enregistr\u00e9, texte, Word, PDF\u2026) ----------\n    function echapper(s) {\n        var d = document.createElement('div');\n        d.textContent = s === null || s === undefined ? '' : String(s);\n        return d.innerHTML;\n    }\n    var DEPOT_MAX = 5, DEPOT_TAILLE_MAX = 26214400;\n    var DEPOT_EXTENSIONS = ['mp3', 'wav', 'ogg', 'oga', 'weba', 'webm', 'm4a', 'mp4', 'aac', 'flac', 'txt', 'rtf', 'csv', 'odt', 'doc', 'docx', 'pdf'];\n    var fichiersDeposes = [];\n    var elDepotZone = root.querySelector('[data-el=depot-zone]');\n    var elDepotFichiers = root.querySelector('[data-el=depot-fichiers]');\n    var elDepotListe = root.querySelector('[data-el=depot-liste]');\n    var elErreurDepot = root.querySelector('[data-el=erreur-depot]');\n\n    function majListeDepot() {\n        if (!elDepotListe) return;\n        elDepotListe.innerHTML = fichiersDeposes.map(function (f, i) {\n            return '<li>' + echapper(f.name) + ' (' + Math.round(f.size \/ 1024) + ' Ko) '\n                + '<button type=\"button\" class=\"eap-lien-bouton\" data-retirer-fichier=\"' + i + '\">' + TEXTE_RETIRER + '<\/button><\/li>';\n        }).join('');\n        elDepotListe.querySelectorAll('[data-retirer-fichier]').forEach(function (b) {\n            b.addEventListener('click', function () { fichiersDeposes.splice(parseInt(this.dataset.retirerFichier, 10), 1); majListeDepot(); });\n        });\n    }\n    function ajouterFichiers(liste) {\n        var err = '';\n        Array.prototype.forEach.call(liste, function (f) {\n            var ext = (f.name.split('.').pop() || '').toLowerCase();\n            if (fichiersDeposes.length >= DEPOT_MAX) { err = ERREURS.depot_trop_de_fichiers; return; }\n            if (DEPOT_EXTENSIONS.indexOf(ext) === -1) { err = ERREURS.depot_format_refuse; return; }\n            if (f.size > DEPOT_TAILLE_MAX) { err = ERREURS.depot_trop_gros; return; }\n            fichiersDeposes.push(f);\n        });\n        if (elErreurDepot) elErreurDepot.textContent = err;\n        majListeDepot();\n    }\n    if (elDepotZone) { \/\/ la question \u00ab Joindre un fichier \u00bb peut \u00eatre supprim\u00e9e dans \u00ab Mise en page \u00bb\n        elDepotZone.addEventListener('click', function () { elDepotFichiers.click(); });\n        root.querySelector('[data-el=depot-parcourir]').addEventListener('click', function (e) { e.stopPropagation(); elDepotFichiers.click(); });\n        elDepotZone.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); elDepotFichiers.click(); } });\n        elDepotFichiers.addEventListener('change', function () { ajouterFichiers(elDepotFichiers.files); elDepotFichiers.value = ''; });\n        ['dragenter', 'dragover'].forEach(function (evt) {\n            elDepotZone.addEventListener(evt, function (e) { e.preventDefault(); elDepotZone.classList.add('is-survole'); });\n        });\n        ['dragleave', 'drop'].forEach(function (evt) {\n            elDepotZone.addEventListener(evt, function (e) { e.preventDefault(); elDepotZone.classList.remove('is-survole'); });\n        });\n        elDepotZone.addEventListener('drop', function (e) {\n            if (e.dataTransfer && e.dataTransfer.files) ajouterFichiers(e.dataTransfer.files);\n        });\n    }\n\n    \/\/ ---------- Enregistrement vocal ----------\n    var btnDemarrer = root.querySelector('[data-el=rec-demarrer]');\n    var btnArreter = root.querySelector('[data-el=rec-arreter]');\n    var elTemps = root.querySelector('[data-el=rec-temps]');\n    var elLecture = root.querySelector('[data-el=rec-lecture]');\n    var elAudio = root.querySelector('[data-el=rec-audio]');\n\n    btnDemarrer.addEventListener('click', function () {\n        navigator.mediaDevices.getUserMedia({ audio: true }).then(function (stream) {\n            chunks = [];\n            mediaRecorder = new MediaRecorder(stream);\n            mediaRecorder.ondataavailable = function (e) { if (e.data.size > 0) chunks.push(e.data); };\n            mediaRecorder.onstop = function () {\n                audioBlob = new Blob(chunks, { type: mediaRecorder.mimeType || 'audio\/webm' });\n                elAudio.src = URL.createObjectURL(audioBlob);\n                elLecture.style.display = '';\n                stream.getTracks().forEach(function (t) { t.stop(); });\n            };\n            mediaRecorder.start();\n            secondes = 0;\n            elTemps.textContent = '0:00';\n            timerInterval = setInterval(function () {\n                secondes++;\n                elTemps.textContent = Math.floor(secondes \/ 60) + ':' + String(secondes % 60).padStart(2, '0');\n            }, 1000);\n            btnDemarrer.style.display = 'none';\n            btnArreter.style.display = '';\n            elLecture.style.display = 'none';\n        }).catch(function () {\n            root.querySelector('[data-el=erreur-temoignage]').textContent = ERREURS.micro_refuse;\n        });\n    });\n    btnArreter.addEventListener('click', function () {\n        if (mediaRecorder && mediaRecorder.state !== 'inactive') mediaRecorder.stop();\n        clearInterval(timerInterval);\n        btnDemarrer.style.display = '';\n        btnArreter.style.display = 'none';\n    });\n    root.querySelector('[data-el=rec-refaire]').addEventListener('click', function () {\n        audioBlob = null;\n        elLecture.style.display = 'none';\n        elTemps.textContent = '';\n    });\n\n    \/\/ ---------- Coordonn\u00e9es \/ consentements ----------\n    \/\/ R\u00e9glage \u00ab Options du formulaire \u00bb : la case \u00ab sans coordonn\u00e9es \u00bb est-elle propos\u00e9e ?\n    var SANS_COORD_ACTIF = root.dataset.sansCoordonnees === '1';\n    var BESOINS_CONTACT = [\"recontacte\",\"ecoute\"]; \/\/ besoins qui exigent un t\u00e9l\u00e9phone ou un e-mail si la case n'est pas propos\u00e9e\n    var CHAMPS_COORD = ['eglise', 'nom', 'prenom', 'telephone', 'email'];\n    \/\/ Types r\u00e9gl\u00e9s dans \u00ab Options du formulaire \u00bb (texte, alphanum\u00e9rique, num\u00e9rique, e-mail) et \u00e9tiquettes des champs : m\u00eames r\u00e8gles que le serveur (includes\/champs.php).\n    var CONFIG_CHAMPS = {\"types\":{\"eglise\":\"texte\",\"nom\":\"texte\",\"prenom\":\"texte\",\"telephone\":\"numerique\",\"email\":\"email\"},\"libelles\":{\"eglise\":\"\\u00c9glise\",\"nom\":\"Nom\",\"prenom\":\"Pr\\u00e9nom\",\"telephone\":\"T\\u00e9l\",\"email\":\"Mail\"}};\n    function messageChamp(k, v) {\n        var type = CONFIG_CHAMPS.types[k], nom = CONFIG_CHAMPS.libelles[k];\n        if (!v) return '';\n        if (type === 'alphanum') return \/^[\\p{L}\\p{N} '\u2019.\\-]+$\/u.test(v) ? '' : ERREURS.champ_alphanum.replace('{champ}', nom);\n        if (type === 'numerique') {\n            if (!\/^[0-9 +().\\-]+$\/.test(v) || !\/\\d\/.test(v)) return k === 'telephone' ? ERREURS.telephone_invalide : ERREURS.champ_numerique.replace('{champ}', nom);\n            if (k === 'telephone' && v.replace(\/\\D\/g, '').length < 6) return ERREURS.telephone_invalide;\n            return '';\n        }\n        if (type === 'email') return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v) ? '' : ERREURS.email_invalide;\n        return '';\n    }\n    var elAnonyme = root.querySelector('[data-el=anonyme]'); \/\/ = \u00ab t\u00e9moignage sans coordonn\u00e9es \u00bb (toujours d\u00e9coch\u00e9e et masqu\u00e9e si le r\u00e9glage est d\u00e9sactiv\u00e9)\n    var elBlocContact = root.querySelector('[data-el=bloc-contact]');\n    var elBlocConsentContact = root.querySelector('[data-el=bloc-consent-contact]');\n\n    function valeurChamp(k) { return root.querySelector('[data-el=' + k + ']').value.trim(); }\n    function coordonneesRemplies() { return CHAMPS_COORD.some(function (k) { return valeurChamp(k) !== ''; }); }\n    \/\/ Sans coordonn\u00e9es : la case coch\u00e9e (si elle est propos\u00e9e), sinon aucun champ renseign\u00e9.\n    function estSansCoordonnees() { return SANS_COORD_ACTIF ? elAnonyme.checked : !coordonneesRemplies(); }\n    function veutEtreRecontacte() {\n        return BESOINS_CONTACT.some(function (b) { return !!root.querySelector('input[name=eap-besoin][value=' + b + ']:checked'); });\n    }\n\n    \/\/ Ces messages d\u00e9pendent de choix faits sur d'autres \u00e9crans : on les recalcule \u00e0 chaque affichage utile.\n    function majIdentite() {\n        var sansCoordonnees = estSansCoordonnees();\n        elBlocContact.style.display = (SANS_COORD_ACTIF && elAnonyme.checked) ? 'none' : '';\n        elBlocConsentContact.style.display = sansCoordonnees ? 'none' : '';\n        root.querySelector('[data-el=note-voix]').style.display = (sansCoordonnees && mode === 'vocal') ? '' : 'none';\n        root.querySelector('[data-el=note-recontact]').style.display = (SANS_COORD_ACTIF && sansCoordonnees && veutEtreRecontacte()) ? '' : 'none';\n    }\n    elAnonyme.addEventListener('change', majIdentite);\n    CHAMPS_COORD.forEach(function (k) { root.querySelector('[data-el=' + k + ']').addEventListener('input', majIdentite); });\n\n    \/\/ V\u00e9rifie les coordonn\u00e9es (facultatives, mais valides si renseign\u00e9es) et les consentements ;\n    \/\/ renvoie les consentements donn\u00e9s, ou null.\n    function validerIdentite() {\n        var err = root.querySelector('[data-el=erreur-identite]');\n        if (!(SANS_COORD_ACTIF && elAnonyme.checked)) {\n            var telephone = valeurChamp('telephone'), email = valeurChamp('email');\n            for (var i = 0; i < CHAMPS_COORD.length; i++) {\n                var msg = messageChamp(CHAMPS_COORD[i], valeurChamp(CHAMPS_COORD[i]));\n                if (msg) { err.textContent = msg; allerEtapeGuide('coordonnees'); return null; }\n            }\n            \/\/ Sans la case \u00ab sans coordonn\u00e9es \u00bb : qui veut \u00eatre recontact\u00e9(e) laisse au minimum un t\u00e9l\u00e9phone ou un e-mail.\n            if (!SANS_COORD_ACTIF && veutEtreRecontacte() && !telephone && !email) { err.textContent = ERREURS.contact_requis; allerEtapeGuide('coordonnees'); return null; }\n        }\n        var requis = estSansCoordonnees() ? ['traitement'] : ['traitement', 'contact'];\n        var manquant = requis.some(function (k) { return !root.querySelector('[data-consent=' + k + ']').checked; });\n        if (manquant) { err.textContent = ERREURS.consentements_manquants; return null; }\n        err.textContent = '';\n        return requis;\n    }\n\n    \/\/ ---------- Lecture guid\u00e9e ----------\n    \/\/ Les questions des \u00e9crans T\u00e9moignage, Pr\u00e9cisions, Besoins et Coordonn\u00e9es sont des \u00ab \u00e9tapes \u00bb (.eap-q).\n    \/\/ Case coch\u00e9e sur l'accueil : une seule \u00e9tape s'affiche \u00e0 la fois, en grand, avec toutes ses r\u00e9ponses d\u00e9pli\u00e9es.\n    \/\/ Les r\u00e9ponses envoy\u00e9es sont exactement les m\u00eames qu'en lecture normale.\n    var GUIDE = {\"precedent\":\"\\u2039 Question pr\\u00e9c\\u00e9dente\",\"suivant\":\"Question suivante \\u203a\",\"progression\":\"Question {n} sur {total}\",\"envoyer\":\"Envoyer mon t\\u00e9moignage\"};\n    var ECRANS_GUIDES = ['temoignage', 'precisions', 'besoins', 'identite'];\n    var guide = false, indexGuide = 0, etapesGuide = [], ecransGuides = {};\n    var elGuidee = root.querySelector('[data-el=lecture-guidee]');\n    var boutonEnvoyer = root.querySelector('[data-el=envoyer]');\n    var texteBoutonEnvoyer = boutonEnvoyer.textContent;\n\n    function premierIndexGuide(nom) {\n        for (var i = 0; i < etapesGuide.length; i++) if (etapesGuide[i].ecran === nom) return i;\n        return 0;\n    }\n    function allerEtapeGuide(nomQuestion) {\n        if (!guide) return;\n        for (var i = 0; i < etapesGuide.length; i++) {\n            if (etapesGuide[i].q.dataset.q === nomQuestion) { afficherEcran(etapesGuide[i].ecran, i); return; }\n        }\n    }\n    function libelleSuivant() { return indexGuide === etapesGuide.length - 1 ? GUIDE.envoyer : GUIDE.suivant; }\n    \/\/ Bouton d'envoi (normal et guid\u00e9) : \u00e9tat \u00ab envoi en cours \u00bb ou \u00e9tat normal.\n    function etatEnvoi(enCours) {\n        boutonEnvoyer.disabled = enCours;\n        boutonEnvoyer.textContent = enCours ? 'Envoi en cours\u2026' : texteBoutonEnvoyer;\n        var suivant = ecransGuides.identite.nav.querySelector('[data-guide=suivant]');\n        suivant.disabled = enCours;\n        suivant.textContent = enCours ? 'Envoi en cours\u2026' : libelleSuivant();\n    }\n\n    ECRANS_GUIDES.forEach(function (nom) {\n        var ecran = root.querySelector('.eap-ecran[data-ecran=' + nom + ']');\n        var refs = { ecran: ecran, intro: ecran.querySelector('[data-intro]') };\n        Array.prototype.forEach.call(ecran.children, function (c) {\n            if (c.classList.contains('eap-q')) { c.setAttribute('tabindex', '-1'); etapesGuide.push({ ecran: nom, q: c }); }\n        });\n        \/\/ Progression (en haut de l'\u00e9cran) et navigation (en bas), visibles seulement en lecture guid\u00e9e.\n        refs.progression = document.createElement('div');\n        refs.progression.className = 'eap-progression';\n        refs.progression.setAttribute('role', 'status');\n        refs.progression.innerHTML = '<span data-el=\"guide-texte\"><\/span><div class=\"eap-barre\" aria-hidden=\"true\"><span data-el=\"guide-barre\"><\/span><\/div>';\n        ecran.insertBefore(refs.progression, ecran.firstChild);\n        refs.nav = document.createElement('div');\n        refs.nav.className = 'eap-nav-guide';\n        refs.nav.style.display = 'none';\n        refs.nav.innerHTML = '<button type=\"button\" class=\"eap-btn eap-btn-ghost\" data-guide=\"precedent\"><\/button><button type=\"button\" class=\"eap-btn eap-btn-primary\" data-guide=\"suivant\"><\/button>';\n        ecran.appendChild(refs.nav);\n        ecransGuides[nom] = refs;\n\n        refs.nav.querySelector('[data-guide=precedent]').addEventListener('click', function () {\n            if (indexGuide > 0) afficherEcran(etapesGuide[indexGuide - 1].ecran, indexGuide - 1);\n            else afficherEcran('mode');\n        });\n        refs.nav.querySelector('[data-guide=suivant]').addEventListener('click', function () {\n            if (etapesGuide[indexGuide].q.dataset.q === 'texte' && !validerTemoignage()) return;\n            if (!verifierQuestion(etapesGuide[indexGuide].q)) return; \/\/ question obligatoire sans r\u00e9ponse : on reste sur cette \u00e9tape\n            if (indexGuide < etapesGuide.length - 1) afficherEcran(etapesGuide[indexGuide + 1].ecran, indexGuide + 1);\n            else boutonEnvoyer.click(); \/\/ derni\u00e8re question : m\u00eames v\u00e9rifications et m\u00eame envoi qu'en lecture normale\n        });\n    });\n\n    function majGuide(nom, indexEtape) {\n        var enGuide = guide && ECRANS_GUIDES.indexOf(nom) !== -1 && etapesGuide.some(function (e) { return e.ecran === nom; });\n        if (enGuide) indexGuide = indexEtape !== undefined ? indexEtape : premierIndexGuide(nom);\n        etapesGuide.forEach(function (e, i) {\n            e.q.style.display = (enGuide && e.ecran === nom && i !== indexGuide) ? 'none' : '';\n        });\n        ECRANS_GUIDES.forEach(function (n) {\n            var r = ecransGuides[n], ici = enGuide && n === nom;\n            r.ecran.classList.toggle('eap-ecran-guide', ici);\n            r.nav.style.display = ici ? '' : 'none';\n            if (r.intro) r.intro.style.display = (ici && indexGuide !== premierIndexGuide(n)) ? 'none' : ''; \/\/ l'introduction n'accompagne que la 1re question de l'\u00e9cran\n        });\n        if (!enGuide) return;\n        var r = ecransGuides[nom];\n        r.progression.querySelector('[data-el=guide-texte]').textContent = GUIDE.progression.replace('{n}', indexGuide + 1).replace('{total}', etapesGuide.length);\n        r.progression.querySelector('[data-el=guide-barre]').style.width = Math.round((indexGuide + 1) \/ etapesGuide.length * 100) + '%';\n        r.nav.querySelector('[data-guide=precedent]').textContent = GUIDE.precedent;\n        r.nav.querySelector('[data-guide=suivant]').textContent = libelleSuivant();\n        etapesGuide[indexGuide].q.focus({ preventScroll: true });\n    }\n    if (elGuidee) elGuidee.addEventListener('change', function () {\n        guide = this.checked;\n        root.classList.toggle('eap-guidee', guide);\n        barresDepliees = guide;\n        barres.forEach(function (b) { b.deplier(guide); });\n    });\n\n    \/\/ ---------- Navigation au clavier : fl\u00e8che gauche = page pr\u00e9c\u00e9dente, fl\u00e8che droite = page suivante ----------\n    \/\/ On laisse le navigateur g\u00e9rer les fl\u00e8ches l\u00e0 o\u00f9 elles ont d\u00e9j\u00e0 un r\u00f4le : d\u00e9placement du curseur dans\n    \/\/ un champ de texte, choix dans un groupe de boutons radio ou dans une liste d\u00e9roulante.\n    function eapFlechesGeneesParLeChamp() {\n        var a = document.activeElement;\n        if (!a) return false;\n        var tag = (a.tagName || '').toLowerCase();\n        if (tag === 'textarea' || tag === 'select' || a.isContentEditable) return true;\n        return tag === 'input' && ['radio', 'range', 'text', 'tel', 'email', 'search', 'number', 'password', 'url'].indexOf(a.type) !== -1;\n    }\n    \/\/ Change de page : sens 'suivant' ou 'precedent'. Passe toujours par les boutons de la page (\u00ab Continuer \u00bb, \u00ab Retour \u00bb,\n    \/\/ \u00ab Question suivante \u00bb\u2026), donc avec les m\u00eames v\u00e9rifications, notamment les questions obligatoires.\n    \/\/ Renvoie true si la page a chang\u00e9 (ou si un bouton a \u00e9t\u00e9 actionn\u00e9). tactile : le balayage ne d\u00e9clenche jamais l'envoi du\n    \/\/ formulaire (derni\u00e8re question de la lecture guid\u00e9e) : envoyer reste un geste volontaire sur le bouton.\n    function changerPage(sens, tactile) {\n        var nom = ecranVisible();\n        if (!nom || !root.isConnected || root.getClientRects().length === 0) return false; \/\/ formulaire cach\u00e9 (ex. apr\u00e8s envoi) : rien \u00e0 faire\n\n        if (guide && ECRANS_GUIDES.indexOf(nom) !== -1) {\n            if (tactile && sens === 'suivant' && indexGuide === etapesGuide.length - 1) return false;\n            var bouton = ecransGuides[nom].nav.querySelector('[data-guide=' + sens + ']');\n            if (bouton && !bouton.disabled) { bouton.click(); return true; }\n            return false;\n        }\n\n        var ecran = root.querySelector('.eap-ecran[data-ecran=' + nom + ']');\n        if (!ecran) return false;\n        if (sens === 'suivant') {\n            \/\/ N'avance que si l'\u00e9cran propose une seule suite possible (l'accueil et le choix du mode\n            \/\/ pr\u00e9sentent plusieurs boutons \u00ab aller \u00bb \u00e0 la fois : la fl\u00e8che ou le balayage ne choisit pas \u00e0 la place de la personne).\n            var suivants = ecran.querySelectorAll('[data-aller]');\n            if (suivants.length === 1 && !suivants[0].disabled && suivants[0].offsetParent) { suivants[0].click(); return true; }\n        } else {\n            var precedent = ecran.querySelector('[data-retour]');\n            if (precedent && !precedent.disabled && precedent.offsetParent) { precedent.click(); return true; }\n        }\n        return false;\n    }\n    document.addEventListener('keydown', function (e) {\n        if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;\n        if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) return;\n        if (eapFlechesGeneesParLeChamp()) return;\n        var sens = e.key === 'ArrowRight' ? 'suivant' : 'precedent';\n        \/\/ La fl\u00e8che n'est \u00ab prise \u00bb (preventDefault) que si un bouton a r\u00e9ellement \u00e9t\u00e9 actionn\u00e9.\n        if (changerPage(sens, false)) e.preventDefault();\n    });\n\n    \/\/ ---------- Balayage au doigt (t\u00e9l\u00e9phone, tablette) : vers la gauche = page suivante, vers la droite = page pr\u00e9c\u00e9dente ----------\n    \/\/ R\u00e9glage \u00ab Options du formulaire \u2192 Balayage tactile \u00bb. Le d\u00e9filement vertical de la page n'est jamais g\u00ean\u00e9 : les \u00e9couteurs\n    \/\/ sont passifs et seul un geste nettement horizontal, assez long et rapide, compte. Les zones o\u00f9 le glissement a d\u00e9j\u00e0 un r\u00f4le\n    \/\/ (champs de texte, listes de choix, lecteur audio, contenu qui d\u00e9file horizontalement) sont ignor\u00e9es.\n    if (root.dataset.balayage === '1') {\n        var DISTANCE_MIN = 70, DUREE_MAX = 900, RATIO_HORIZONTAL = 0.5;\n        var toucheDebut = null;\n        function glissementReserve(el) {\n            for (var n = el; n && n !== root; n = n.parentElement) {\n                var tag = (n.tagName || '').toLowerCase();\n                if (['input', 'textarea', 'select', 'audio', 'video', 'button', 'a'].indexOf(tag) !== -1 || n.isContentEditable) return true;\n                if (n.classList && (n.classList.contains('eap-ms') || n.classList.contains('eap-depot'))) return true;\n                if (n.scrollWidth > n.clientWidth + 1) {\n                    var ox = window.getComputedStyle(n).overflowX;\n                    if (ox === 'auto' || ox === 'scroll') return true;\n                }\n            }\n            return false;\n        }\n        root.addEventListener('touchstart', function (e) {\n            if (e.touches.length !== 1 || glissementReserve(e.target)) { toucheDebut = null; return; }\n            var t0 = e.touches[0];\n            toucheDebut = { x: t0.clientX, y: t0.clientY, t: Date.now() };\n        }, { passive: true });\n        root.addEventListener('touchcancel', function () { toucheDebut = null; }, { passive: true });\n        root.addEventListener('touchend', function (e) {\n            var d = toucheDebut;\n            toucheDebut = null;\n            if (!d || !e.changedTouches.length) return;\n            var t1 = e.changedTouches[0];\n            var dx = t1.clientX - d.x, dy = t1.clientY - d.y;\n            if (Date.now() - d.t > DUREE_MAX) return;\n            if (Math.abs(dx) < DISTANCE_MIN || Math.abs(dy) > Math.abs(dx) * RATIO_HORIZONTAL) return; \/\/ trop court, ou plut\u00f4t vertical\n            var selection = window.getSelection && window.getSelection();\n            if (selection && String(selection).length > 0) return; \/\/ s\u00e9lection de texte en cours : ce n'est pas un balayage\n            changerPage(dx < 0 ? 'suivant' : 'precedent', true);\n        }, { passive: true });\n    }\n\n    \/\/ ---------- R\u00e9f\u00e9rences et codes ----------\n    function formaterCode(c) {\n        c = String(c || '').replace(\/[^A-Za-z0-9]\/g, '').toUpperCase();\n        return c.length === 8 ? c.slice(0, 4) + '-' + c.slice(4) : c;\n    }\n    function extensionAudio(type) {\n        type = String(type || '').toLowerCase();\n        if (type.indexOf('mp4') !== -1 || type.indexOf('aac') !== -1) return 'm4a'; \/\/ Safari \/ iPhone\n        if (type.indexOf('ogg') !== -1) return 'ogg';\n        if (type.indexOf('mpeg') !== -1) return 'mp3';\n        if (type.indexOf('wav') !== -1) return 'wav';\n        return 'webm';\n    }\n    var dernierEnvoi = null; \/\/ { ref, code } de l'envoi qui vient d'avoir lieu\n\n    \/\/ ---------- Envoi ----------\n    root.querySelector('[data-el=envoyer]').addEventListener('click', function () {\n        var err = root.querySelector('[data-el=erreur-identite]');\n        \/\/ Dernier filet : toute question obligatoire sans r\u00e9ponse ram\u00e8ne la personne \u00e0 cette question (lecture normale ou guid\u00e9e).\n        var manquante = premiereQuestionSansReponse('');\n        if (manquante) {\n            var ecranManquant = manquante.closest('.eap-ecran').dataset.ecran;\n            if (guide) allerEtapeGuide(manquante.dataset.q); else afficherEcran(ecranManquant);\n            err.textContent = '';\n            return;\n        }\n        var consentements = validerIdentite();\n        if (!consentements) return;\n\n        etatEnvoi(true);\n\n        var data = new FormData();\n        data.append('action', 'eap_envoyer_temoignage');\n        data.append('nonce', nonce);\n        data.append('contenu_texte', mode === 'ecrit' ? root.querySelector('[data-el=contenu-texte]').value : '');\n        root.querySelectorAll('input[name=eap-type]:checked').forEach(function (c) { data.append('type_situation[]', c.value); });\n        var moment = root.querySelector('input[name=eap-moment]:checked');\n        if (moment) data.append('moment', moment.value);\n        var enCours = root.querySelector('input[name=eap-en-cours]:checked');\n        if (enCours) data.append('en_cours', enCours.value);\n        root.querySelectorAll('input[name=eap-besoin]:checked').forEach(function (c) { data.append('besoins[]', c.value); });\n        var danger = root.querySelector('input[name=eap-danger]:checked');\n        if (danger) data.append('danger_actuel', danger.value);\n        root.querySelectorAll('input[name=eap-concernes]:checked').forEach(function (c) { data.append('personnes_concernees[]', c.value); });\n        root.querySelectorAll('input[name=eap-lieux]:checked').forEach(function (c) { data.append('lieux[]', c.value); });\n        root.querySelectorAll('input[name=eap-elements]:checked').forEach(function (c) { data.append('elements[]', c.value); });\n\n        root.querySelectorAll('[data-libre]').forEach(function (t) { if (t.value.trim() !== '') data.append('libre[' + t.dataset.libre + ']', t.value); });\n        var sansCoordonnees = estSansCoordonnees();\n        data.append('anonyme', sansCoordonnees ? '1' : '');\n        if (!sansCoordonnees) {\n            data.append('eglise', root.querySelector('[data-el=eglise]').value.trim());\n            data.append('nom', root.querySelector('[data-el=nom]').value.trim());\n            data.append('prenom', root.querySelector('[data-el=prenom]').value.trim());\n            data.append('telephone', root.querySelector('[data-el=telephone]').value.trim());\n            data.append('email', root.querySelector('[data-el=email]').value.trim());\n        }\n        consentements.forEach(function (k) { data.append('consentements[]', k); });\n        data.append('eap_ne_pas_remplir', root.querySelector('[name=eap_ne_pas_remplir]').value);\n        data.append('eap_horodatage', elHorodatage ? elHorodatage.value : '');\n        if (mode === 'vocal' && audioBlob) data.append('audio', audioBlob, 'temoignage.' + extensionAudio(audioBlob.type));\n        fichiersDeposes.forEach(function (f) { data.append('attachments[]', f, f.name); });\n\n        fetch(ajaxUrl, { method: 'POST', credentials: 'same-origin', body: data })\n            .then(function (r) { return r.json(); })\n            .then(function (res) {\n                etatEnvoi(false);\n                if (!res.success) { err.textContent = res.data.message || \"L'envoi a \u00e9chou\u00e9, r\u00e9essayez.\"; return; }\n                dernierEnvoi = { ref: res.data.reference, code: res.data.code_suivi };\n                root.querySelector('[data-el=reference]').textContent = formaterCode(dernierEnvoi.ref);\n                root.querySelector('[data-el=code-suivi]').textContent = formaterCode(dernierEnvoi.code);\n                root.querySelector('[data-el=rappel-danger]').innerHTML = (danger && danger.value === 'oui') ? messageDangerHtml : '';\n                root.querySelector('[data-el=texte-anonyme]').style.display = sansCoordonnees ? '' : 'none';\n                root.querySelector('[data-el=texte-contact]').style.display = sansCoordonnees ? 'none' : '';\n                afficherEcran('confirmation');\n            })\n            .catch(function () {\n                etatEnvoi(false);\n                err.textContent = ERREURS.envoi_echec;\n            });\n    });\n\n    \/\/ Copie de la r\u00e9f\u00e9rence et du code (si le navigateur ne l'autorise pas, on invite \u00e0 les noter).\n    root.querySelector('[data-el=copier-codes]').addEventListener('click', function () {\n        var conf = root.querySelector('[data-el=copie-confirmation]');\n        var texte = 'R\u00e9f\u00e9rence : ' + formaterCode(dernierEnvoi.ref) + '\\nCode de suivi : ' + formaterCode(dernierEnvoi.code);\n        var copie = (navigator.clipboard && navigator.clipboard.writeText) ? navigator.clipboard.writeText(texte).then(function () { return true; }, function () { return false; }) : Promise.resolve(false);\n        copie.then(function (ok) { conf.textContent = ok ? 'Copi\u00e9.' : 'Copie impossible : notez-les \u00e0 la main.'; });\n    });\n\n    \/\/ ---------- Suivi ----------\n    var elSuiviRef = root.querySelector('[data-el=suivi-ref]');\n    var elSuiviCode = root.querySelector('[data-el=suivi-code]');\n    var elSuiviMessage = root.querySelector('[data-el=suivi-message]');\n    var suivi = { ref: '', code: '' };\n\n    function suiviAppel(action, extra) {\n        var data = new FormData();\n        data.append('action', action);\n        data.append('nonce', nonce);\n        data.append('reference', suivi.ref);\n        data.append('code', suivi.code);\n        Object.keys(extra || {}).forEach(function (k) { data.append(k, extra[k]); });\n        return fetch(ajaxUrl, { method: 'POST', credentials: 'same-origin', body: data }).then(function (r) { return r.json(); });\n    }\n\n    function ligne(tag, classe, texte) {\n        var el = document.createElement(tag);\n        if (classe) el.className = classe;\n        if (texte) el.textContent = texte; \/\/ textContent : le contenu des messages n'est jamais interpr\u00e9t\u00e9 comme du HTML\n        return el;\n    }\n\n    function afficherSuivi(d) {\n        root.querySelector('[data-el=suivi-saisie]').style.display = 'none';\n        root.querySelector('[data-el=suivi-resultat]').style.display = '';\n        root.querySelector('[data-el=suivi-ref-affichee]').textContent = formaterCode(d.reference);\n        root.querySelector('[data-el=suivi-recu]').textContent = d.recu_le;\n        root.querySelector('[data-el=suivi-clos]').style.display = d.clos ? '' : 'none';\n\n        var ol = root.querySelector('[data-el=suivi-etapes]');\n        ol.innerHTML = '';\n        d.etapes.forEach(function (libelle, i) {\n            var n = i + 1;\n            var li = ligne('li', n < d.etape ? 'is-done' : (n === d.etape ? 'is-current' : 'is-todo'));\n            if (n === d.etape) li.setAttribute('aria-current', 'step');\n            li.appendChild(ligne('span', '', libelle));\n            \/\/ \u00ab (si n\u00e9cessaire) \u00bb fait maintenant partie du libell\u00e9 lui-m\u00eame (envoy\u00e9 par le serveur),\n            \/\/ pour rester identique au mot pr\u00e8s \u00e0 ce que l'\u00e9quipe voit dans le dossier.\n            li.appendChild(ligne('span', 'eap-sr', n < d.etape ? ' \u2014 \u00e9tape pass\u00e9e' : (n === d.etape ? ' \u2014 \u00e9tape actuelle' : ' \u2014 \u00e0 venir')));\n            ol.appendChild(li);\n        });\n\n        var zone = root.querySelector('[data-el=suivi-echanges]');\n        zone.innerHTML = '';\n        if (!d.echanges.length) zone.appendChild(ligne('p', 'eap-aide', 'Aucun \u00e9change pour le moment.'));\n        d.echanges.forEach(function (e) {\n            var bloc = ligne('div', 'eap-msg ' + (e.auteur === 'equipe' ? 'eap-msg-equipe' : 'eap-msg-personne'));\n            bloc.appendChild(ligne('div', 'eap-msg-meta', (e.auteur === 'equipe' ? '\u00c9quipe' : 'Vous') + ' \u00b7 ' + e.date));\n            bloc.appendChild(ligne('div', '', e.contenu));\n            zone.appendChild(bloc);\n        });\n    }\n\n    function consulterSuivi() {\n        var err = root.querySelector('[data-el=erreur-suivi]');\n        suivi.ref = elSuiviRef.value;\n        suivi.code = elSuiviCode.value;\n        if (!suivi.ref.trim() || !suivi.code.trim()) { err.textContent = ERREURS.suivi_champs_vides; return; }\n        var bouton = root.querySelector('[data-el=suivi-consulter]');\n        bouton.disabled = true;\n        suiviAppel('eap_suivi_consulter').then(function (res) {\n            bouton.disabled = false;\n            if (!res.success) { err.textContent = res.data.message || 'Consultation impossible.'; return; }\n            err.textContent = '';\n            afficherSuivi(res.data);\n        }).catch(function () {\n            bouton.disabled = false;\n            err.textContent = ERREURS.envoi_echec;\n        });\n    }\n    root.querySelector('[data-el=suivi-consulter]').addEventListener('click', consulterSuivi);\n    [elSuiviRef, elSuiviCode].forEach(function (champ) {\n        champ.addEventListener('keydown', function (e) { if (e.key === 'Enter') { e.preventDefault(); consulterSuivi(); } });\n    });\n\n    root.querySelector('[data-el=suivi-actualiser]').addEventListener('click', function () {\n        suiviAppel('eap_suivi_consulter').then(function (res) {\n            if (res.success) afficherSuivi(res.data);\n            else root.querySelector('[data-el=erreur-suivi-message]').textContent = res.data.message || 'Actualisation impossible.';\n        });\n    });\n\n    root.querySelector('[data-el=suivi-envoyer]').addEventListener('click', function () {\n        var err = root.querySelector('[data-el=erreur-suivi-message]');\n        var message = elSuiviMessage.value.trim();\n        if (!message) { err.textContent = ERREURS.suivi_message_vide; return; }\n        var bouton = this;\n        bouton.disabled = true;\n        suiviAppel('eap_suivi_repondre', { message: message }).then(function (res) {\n            bouton.disabled = false;\n            if (!res.success) { err.textContent = res.data.message || \"L'envoi a \u00e9chou\u00e9, r\u00e9essayez.\"; return; }\n            err.textContent = '';\n            elSuiviMessage.value = '';\n            afficherSuivi(res.data);\n        }).catch(function () {\n            bouton.disabled = false;\n            err.textContent = ERREURS.envoi_echec;\n        });\n    });\n\n    \/\/ Quitter le suivi : on efface le code de la m\u00e9moire et de l'\u00e9cran (utile sur un appareil partag\u00e9).\n    root.querySelector('[data-el=suivi-quitter]').addEventListener('click', function () {\n        suivi = { ref: '', code: '' };\n        elSuiviRef.value = '';\n        elSuiviCode.value = '';\n        elSuiviMessage.value = '';\n        root.querySelector('[data-el=suivi-resultat]').style.display = 'none';\n        root.querySelector('[data-el=suivi-saisie]').style.display = '';\n    });\n\n    \/\/ Depuis la confirmation : on pr\u00e9remplit et on ouvre directement le suivi.\n    root.querySelector('[data-el=aller-suivi]').addEventListener('click', function () {\n        elSuiviRef.value = formaterCode(dernierEnvoi.ref);\n        elSuiviCode.value = formaterCode(dernierEnvoi.code);\n        afficherEcran('suivi');\n        consulterSuivi();\n    });\n\n    \/\/ Sur une page d\u00e9di\u00e9e au suivi ([alerte_suivi]), il n'y a pas d'accueil vers lequel revenir.\n    if (root.dataset.initial === 'suivi') root.querySelector('[data-el=suivi-retour]').style.display = 'none';\n\n    \/\/ R\u00e9glage \u00ab ouverture directe en plein \u00e9cran \u00bb : le navigateur exige un geste pour son propre plein \u00e9cran,\n    \/\/ donc ici le formulaire recouvre la fen\u00eatre ; le bouton permet de quitter, puis de repasser en vrai plein \u00e9cran.\n    if (PLEIN === 'auto') entrerPlein(false);\n})();\n<\/script>\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-cc66042 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"cc66042\" 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-77921b4 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"77921b4\" 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-f99375f elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"f99375f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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-e6a0a7d ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"e6a0a7d\" 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-825196e elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"825196e\" 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-9ac86e5 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"9ac86e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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-9227a73 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"9227a73\" 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-5f7d810 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"5f7d810\" 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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bbe2293 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"bbe2293\" 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-963305f elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"963305f\" 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-cfc4db2 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"cfc4db2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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-01919f7 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"01919f7\" 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-7daccdb elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"7daccdb\" 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-7903bf9 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"7903bf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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-350eb96 ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-column-slider-no wpr-equal-height-no\" data-id=\"350eb96\" 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-217bf43 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"217bf43\" 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-8a4b0e2 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"8a4b0e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>inFos &amp; Alertes Parler, c&rsquo;est se lib\u00e9rer &#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-35545","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/35545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35545"}],"version-history":[{"count":37,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/35545\/revisions"}],"predecessor-version":[{"id":35833,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/35545\/revisions\/35833"}],"wp:attachment":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}