{"id":23566,"date":"2026-06-03T06:35:37","date_gmt":"2026-06-03T06:35:37","guid":{"rendered":"https:\/\/www.transports-express-caraibes.fr\/blog\/securite-covoiturage-longue-distance\/"},"modified":"2026-06-03T06:35:37","modified_gmt":"2026-06-03T06:35:37","slug":"securite-covoiturage-longue-distance","status":"publish","type":"post","link":"https:\/\/www.transports-express-caraibes.fr\/blog\/securite-covoiturage-longue-distance\/","title":{"rendered":"Conseils essentiels pour assurer votre s\u00e9curit\u00e9 lors d\u2019un covoiturage longue distance"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>En bref :<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li><strong>V\u00e9rifiez le profil du conducteur<\/strong> (anciennet\u00e9, avis, permis) avant de r\u00e9server.<\/li><li><strong>Contr\u00f4lez l\u2019\u00e9tat du v\u00e9hicule<\/strong> : contr\u00f4le technique, pneus, niveaux et assurance.<\/li><li><strong>Pr\u00e9parez votre itin\u00e9raire<\/strong> et partagez-le avec un proche ; gardez un t\u00e9l\u00e9phone charg\u00e9.<\/li><li><strong>Respectez les pauses<\/strong> toutes les deux heures et la ceinture pour tous les passagers.<\/li><li><strong>Sachez r\u00e9agir en cas d\u2019urgence<\/strong> : s\u00e9curiser la zone, appeler les secours, pr\u00e9venir la plateforme et les assurances.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Conseils essentiels pour assurer votre s\u00e9curit\u00e9 lors d\u2019un covoiturage longue distance<\/strong><\/p>\n\n<p class=\"wp-block-paragraph\">Le covoiturage longue distance est \u00e9conomique, convivial et souvent plus rapide qu\u2019on ne l\u2019imagine. Pour que le trajet reste agr\u00e9able, il faut toutefois appliquer quelques pr\u00e9cautions simples avant et pendant le voyage : choisir un conducteur fiable, v\u00e9rifier l\u2019\u00e9tat du v\u00e9hicule, planifier l\u2019itin\u00e9raire et les arr\u00eats, et se pr\u00e9parer aux impr\u00e9vus. Ce texte distille des conseils pratiques et faciles \u00e0 appliquer pour les conducteurs et les passagers, avec des exemples concrets (fr\u00e9quence des pauses, v\u00e9rifications techniques, d\u00e9marches apr\u00e8s un accident) et des ressources pour approfondir.<\/p>\n\n<p class=\"wp-block-paragraph\">Un fil conducteur accompagne les exemples : Claire, enseignante de Lyon, pr\u00e9pare un covoiturage vers la c\u00f4te atlantique. Ses choix \u2014 v\u00e9rifier la note du conducteur, demander la copie de l\u2019attestation d\u2019assurance et planifier des arr\u00eats toutes les deux heures \u2014 illustrent des gestes simples qui r\u00e9duisent nettement les risques. \u00c0 la fin de chaque section figure une phrase-cl\u00e9 pour retenir l\u2019essentiel et agir imm\u00e9diatement.<\/p>\n\n<h2 class=\"wp-block-heading\">S\u00e9curit\u00e9 avant le d\u00e9part : v\u00e9rifier le conducteur, le v\u00e9hicule et l\u2019itin\u00e9raire<\/h2>\n\n<p class=\"wp-block-paragraph\">Avant de r\u00e9server, contr\u00f4lez le profil du conducteur. Privil\u00e9giez un conducteur pr\u00e9sent sur la plateforme depuis plus de six mois, avec une note moyenne proche de 4\/5 ou plus. Lisez plusieurs avis r\u00e9cents : ils renseignent sur le respect des horaires, la qualit\u00e9 de la conduite et la ponctualit\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\">Demandez confirmation que le permis a \u00e9t\u00e9 v\u00e9rifi\u00e9, que l\u2019identit\u00e9 et le t\u00e9l\u00e9phone sont valid\u00e9s par la plateforme, et que la photo de profil est coh\u00e9rente avec le trajet propos\u00e9. Cette v\u00e9rification rapide prend moins de cinq minutes mais change tout.<\/p>\n\n<h3 class=\"wp-block-heading\">Contr\u00f4le du v\u00e9hicule : checklist pratique<\/h3>\n\n<p class=\"wp-block-paragraph\">Ne partez pas sans avoir v\u00e9rifi\u00e9 quelques points essentiels sur le v\u00e9hicule. Demandez au conducteur si le contr\u00f4le technique est \u00e0 jour (id\u00e9alement moins de deux ans), et si l\u2019assurance couvre l\u2019usage en covoiturage.<\/p>\n\n<ul class=\"wp-block-list\"><li>Pression et \u00e9tat des pneus.<\/li><li>Niveaux : huile, liquide de frein, liquide lave-glace.<\/li><li>Feux, clignotants et essuie-glaces op\u00e9rationnels.<\/li><li>Pr\u00e9sence d\u2019un triangle et de gilets r\u00e9fl\u00e9chissants.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Garder ces points en t\u00eate r\u00e9duit fortement le risque de panne \u00e9vitable.<\/p>\n\n<h2 class=\"wp-block-heading\">Pendant le trajet : r\u00e8gles d\u2019or pour conducteur et passagers<\/h2>\n\n<p class=\"wp-block-paragraph\">Sur la route, la s\u00e9curit\u00e9 repose sur des comportements simples et partag\u00e9s. Le conducteur doit respecter le code de la route et adapter sa vitesse aux conditions m\u00e9t\u00e9o et au trafic. Les passagers ont un r\u00f4le actif : porter la ceinture, veiller \u00e0 ne pas distraire le conducteur et annoncer clairement leurs attentes avant le d\u00e9part.<\/p>\n\n<p class=\"wp-block-paragraph\">Planifiez des pauses toutes les deux heures au minimum : se d\u00e9gourdir, boire de l\u2019eau et v\u00e9rifier la fatigue permet d\u2019\u00e9viter les accidents li\u00e9s \u00e0 l\u2019endormissement.<\/p>\n\n<h3 class=\"wp-block-heading\">Si vous ne vous sentez pas en s\u00e9curit\u00e9<\/h3>\n\n<p class=\"wp-block-paragraph\">Exprimez vos inqui\u00e9tudes calmement et demandez un arr\u00eat au prochain lieu s\u00fbr. Gardez votre t\u00e9l\u00e9phone charg\u00e9 et accessible, partagez votre position avec un contact et pr\u00e9parez une strat\u00e9gie de sortie si la situation l\u2019exige (rep\u00e9rer les aires, les stations-service ou zones \u00e9clair\u00e9es).<\/p>\n\n<p class=\"wp-block-paragraph\">La s\u00e9curit\u00e9 prime sur la politesse : quittez le v\u00e9hicule si vous avez un r\u00e9el sentiment de danger. Fin de phrase-cl\u00e9 : pr\u00e9server sa s\u00e9curit\u00e9 imm\u00e9diate est la priorit\u00e9 absolue.<\/p>\n\n<!-- Infographie interactive (bloc \u00e0 copier\/coller dans votre page)\n     - Bas\u00e9e uniquement sur HTML + JavaScript + Tailwind CSS (CDN)\n     - Hauteur maximale de l'outil : 1800px\n     - Toutes les cha\u00eenes en fran\u00e7ais (modifiables via la constante STRINGS)\n     - Pas d'API externe utilis\u00e9e (outil autonome). Si vous souhaitez connecter une API publique gratuite,\n       je peux l'ajouter et fournir l'URL + exemple de r\u00e9ponse JSON en commentaire.\n-->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<div id=\"covoiturage-infographie\" class=\"mx-auto my-6 max-w-4xl p-4 rounded-lg shadow-lg bg-gradient-to-br from-white to-slate-50 overflow-hidden\"\n     style=\"max-height:1800px;\" aria-labelledby=\"titre-infographie\">\n  <div class=\"flex flex-col md:flex-row gap-4\">\n    <!-- Colonne principale -->\n    <section class=\"flex-1 bg-white\/80 p-4 rounded-lg ring-1 ring-slate-200\" aria-labelledby=\"titre-infographie\">\n      <h2 id=\"titre-infographie\" class=\"text-2xl font-semibold text-slate-800\">Conseils essentiels : s\u00e9curit\u00e9 pour covoiturage longue distance<\/h2>\n      <p class=\"mt-2 text-slate-600\">Checklist interactive pour pr\u00e9parer un trajet serein et s\u00e9curis\u00e9. Cochez les \u00e9l\u00e9ments au fur et \u00e0 mesure \u2014 l&rsquo;outil calcule un niveau de risque et des recommandations.<\/p>\n\n      <!-- Indicateurs sup\u00e9rieurs -->\n      <div class=\"mt-4 flex flex-col sm:flex-row items-stretch sm:items-center gap-3\">\n        <!-- Progression -->\n        <div class=\"flex-1 bg-slate-50 p-3 rounded-md border border-slate-100\">\n          <div class=\"flex items-center gap-3\">\n            <svg class=\"w-16 h-16\" viewBox=\"0 0 36 36\" aria-hidden>\n              <defs><linearGradient id=\"g\" x1=\"0\" x2=\"1\"><stop offset=\"0%\" stop-color=\"#3b82f6\"\/><stop offset=\"100%\" stop-color=\"#06b6d4\"\/><\/linearGradient><\/defs>\n              <path class=\"text-slate-200\" d=\"M18 2.0845a15.9155 15.9155 0 1 0 0 31.831A15.9155 15.9155 0 1 0 18 2.0845\" fill=\"none\" stroke=\"#e6eefc\" stroke-width=\"3.5\"\/>\n              <path id=\"progressPath\" d=\"M18 2.0845a15.9155 15.9155 0 1 0 0 31.831A15.9155 15.9155 0 1 0 18 2.0845\"\n                    fill=\"none\" stroke=\"url(#g)\" stroke-width=\"3.5\" stroke-dasharray=\"0 100\" stroke-linecap=\"round\"\/>\n              <text x=\"18\" y=\"20\" text-anchor=\"middle\" font-size=\"5\" fill=\"#0f172a\" font-weight=\"700\" id=\"progressText\">0%<\/text>\n            <\/svg>\n            <div>\n              <div class=\"text-sm text-slate-500\">Checklist compl\u00e9t\u00e9e<\/div>\n              <div class=\"mt-1 font-medium text-slate-700\" id=\"completedCount\">0 \/ 0 \u00e9l\u00e9ments coch\u00e9s<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Niveau de risque -->\n        <div class=\"w-full sm:w-48 p-3 rounded-md flex items-center justify-center bg-gradient-to-tr from-white to-slate-50 border border-slate-100\">\n          <div class=\"text-center\">\n            <div class=\"text-sm text-slate-500\">Niveau de risque<\/div>\n            <div id=\"riskBadge\" class=\"mt-2 inline-flex items-center gap-2 px-3 py-1.5 rounded-full font-semibold text-sm\">\n              <svg id=\"riskIcon\" class=\"w-4 h-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden><\/svg>\n              <span id=\"riskText\">\u00c9valuation<\/span>\n            <\/div>\n            <div class=\"mt-1 text-xs text-slate-400\">Bas \/ Mod\u00e9r\u00e9 \/ \u00c9lev\u00e9<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Checklist -->\n      <div class=\"mt-4\" id=\"checklistArea\" role=\"list\" aria-label=\"Checklist s\u00e9curit\u00e9 covoiturage\">\n        <h3 class=\"text-lg font-semibold text-slate-700\">Checklist<\/h3>\n        <p class=\"text-sm text-slate-500\">Cliquez sur chaque \u00e9l\u00e9ment lorsque vous l&rsquo;avez v\u00e9rifi\u00e9. Les articles recommand\u00e9s sont mis en \u00e9vidence.<\/p>\n\n        <ul id=\"checklist\" class=\"mt-3 space-y-2\">\n          <!-- items dynamiques -->\n        <\/ul>\n\n        <!-- Actions -->\n        <div class=\"mt-4 flex flex-wrap gap-2\">\n          <button id=\"autoEvalBtn\" class=\"px-3 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 focus:outline-none focus:ring focus:ring-blue-300\" aria-pressed=\"false\">Auto-\u00e9valuer<\/button>\n          <button id=\"resetBtn\" class=\"px-3 py-2 bg-gray-100 text-slate-700 rounded hover:bg-gray-200 focus:outline-none focus:ring focus:ring-gray-200\">R\u00e9initialiser<\/button>\n          <button id=\"exportBtn\" class=\"px-3 py-2 bg-emerald-600 text-white rounded hover:bg-emerald-700 focus:outline-none focus:ring focus:ring-emerald-300\">Exporter JSON<\/button>\n          <button id=\"printBtn\" class=\"px-3 py-2 bg-slate-50 text-slate-800 rounded border border-slate-200 hover:bg-white focus:outline-none focus:ring\">Imprimer<\/button>\n          <button id=\"tipsToggle\" class=\"px-3 py-2 ml-auto bg-yellow-100 text-yellow-800 rounded hover:bg-yellow-200 focus:outline-none focus:ring\">Conseils rapides<\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- Colonne lat\u00e9rale : Param\u00e8tres \/ Conseils -->\n    <aside class=\"w-full md:w-72 bg-slate-50\/80 p-4 rounded-lg ring-1 ring-slate-200 flex flex-col gap-3\" aria-labelledby=\"sidebarTitle\">\n      <h4 id=\"sidebarTitle\" class=\"text-sm font-semibold text-slate-700\">Param\u00e8tres d&rsquo;auto-\u00e9valuation<\/h4>\n\n      <form id=\"autoForm\" class=\"space-y-2 text-sm text-slate-700\">\n        <!-- Inputs pour simuler une auto-\u00e9valuation -->\n        <label class=\"flex flex-col\">\n          <span>Anciennet\u00e9 conducteur (mois)<\/span>\n          <input type=\"number\" id=\"anciennete\" class=\"mt-1 p-2 rounded border border-slate-200\" min=\"0\" value=\"12\" aria-label=\"Anciennet\u00e9 conducteur en mois\"\/>\n        <\/label>\n\n        <label class=\"flex flex-col\">\n          <span>Note conducteur (1\u20135)<\/span>\n          <input type=\"number\" id=\"note\" class=\"mt-1 p-2 rounded border border-slate-200\" min=\"1\" max=\"5\" step=\"0.1\" value=\"4.5\" aria-label=\"Note du conducteur\"\/>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"number\" id=\"controleAge\" class=\"p-2 rounded border border-slate-200 w-20\" min=\"0\" value=\"1\" aria-label=\"\u00c2ge du contr\u00f4le technique en ann\u00e9es\"\/>\n          <span class=\"text-slate-500 text-sm\">ans depuis contr\u00f4le technique<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"checkbox\" id=\"assuranceOk\" checked aria-label=\"Assurance valide\"\/>\n          <span class=\"text-slate-600 text-sm\">Assurance OK<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"number\" id=\"pauseHeures\" class=\"p-2 rounded border border-slate-200 w-20\" min=\"0\" value=\"2\" aria-label=\"Intervalle de pause en heures\"\/>\n          <span class=\"text-slate-500 text-sm\">pause recommand\u00e9e toutes les X h<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"number\" id=\"phonePct\" class=\"p-2 rounded border border-slate-200 w-20\" min=\"0\" max=\"100\" value=\"80\" aria-label=\"Pourcentage de batterie du t\u00e9l\u00e9phone\"\/>\n          <span class=\"text-slate-500 text-sm\">batterie t\u00e9l\u00e9phone (%)<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"checkbox\" id=\"rdvFrequent\" checked aria-label=\"Point de rendez-vous fr\u00e9quent\u00e9\"\/>\n          <span class=\"text-slate-600 text-sm\">Rendez-vous fr\u00e9quent\u00e9<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"checkbox\" id=\"sacBattery\" checked aria-label=\"Batterie externe pr\u00e9sente\"\/>\n          <span class=\"text-slate-600 text-sm\">Sac d&rsquo;urgence : batterie externe<\/span>\n        <\/label>\n\n        <label class=\"flex items-center gap-2\">\n          <input type=\"checkbox\" id=\"sacDocs\" checked aria-label=\"Documents pr\u00e9sents\"\/>\n          <span class=\"text-slate-600 text-sm\">Sac d&rsquo;urgence : documents (ID, assurance)<\/span>\n        <\/label>\n      <\/form>\n\n      <div id=\"quickTips\" class=\"mt-2 hidden\">\n        <h5 class=\"text-sm font-semibold text-slate-700\">Conseils rapides<\/h5>\n        <ul class=\"mt-2 text-sm text-slate-600 space-y-2\">\n          <li>&#8211; Communiquez l&rsquo;itin\u00e9raire et heures de pause au moins \u00e0 une personne de confiance.<\/li>\n          <li>&#8211; Privil\u00e9giez un point de rendez-vous fr\u00e9quent\u00e9 et bien \u00e9clair\u00e9.<\/li>\n          <li>&#8211; Gardez un chargeur et une batterie externe accessible.<\/li>\n          <li>&#8211; V\u00e9rifiez la visibilit\u00e9 des plaques et l&rsquo;\u00e9tat g\u00e9n\u00e9ral du v\u00e9hicule.<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"mt-auto text-xs text-slate-400\">Accessible au clavier \u00b7 Cochez \/ d\u00e9cocher avec Espace<\/div>\n    <\/aside>\n  <\/div>\n<\/div>\n\n<style>\n  \/* Styles suppl\u00e9mentaires pour l'infographie *\/\n  #covoiturage-infographie *:focus { outline: 3px solid rgba(99,102,241,0.15); outline-offset: 2px; }\n  \/* animation discrette pour le badge de risque *\/\n  @keyframes pulseSoft { 0% { transform: scale(1); } 50% { transform: scale(1.02);} 100% { transform: scale(1); } }\n  #riskBadge.low { background: linear-gradient(90deg,#d1fae5,#ecfccb); color:#065f46; }\n  #riskBadge.medium { background: linear-gradient(90deg,#fff7ed,#ffedd5); color:#92400e; animation: pulseSoft 2.5s infinite; }\n  #riskBadge.high { background: linear-gradient(90deg,#fee2e2,#ffe4e6); color:#881337; animation: pulseSoft 1.6s infinite; }\n  \/* custom scroll pour container si n\u00e9cessaire *\/\n  #covoiturage-infographie { scrollbar-width: thin; scrollbar-color: rgba(99,102,241,0.2) transparent; }\n<\/style>\n\n<script>\n\/*\n  Script JavaScript de l'infographie interactive (comment\u00e9 en fran\u00e7ais)\n  - Toutes les cha\u00eenes de texte g\u00e9r\u00e9es par STRINGS (pour faciliter la traduction\/\u00e9dition)\n  - Accessible et l\u00e9ger : pas de d\u00e9pendances JS externes\n  - Fonctionnalit\u00e9s :\n      * Liste interactive (cocher\/d\u00e9cocher)\n      * Auto-\u00e9valuation \u00e0 partir des param\u00e8tres (anc., note, etc.)\n      * Calcul du niveau de risque\n      * Export JSON \/ Impression\n*\/\n\n(() => {\n  \/\/ Textes \u00e9ditables pour internationalisation\n  const STRINGS = {\n    checklistTitle: 'Checklist pour covoiturage longue distance',\n    items: [\n      {\n        id: 'conducteur_profile',\n        label: 'V\u00e9rifier profil conducteur (anciennet\u00e9 \u22656 mois, note \u22654\/5)',\n        details: 'Confirmer anciennet\u00e9 et note du conducteur sur la plateforme.',\n        recommended: true\n      },\n      {\n        id: 'controle_technique',\n        label: 'Contr\u00f4le technique < 2 ans',\n        details: 'V\u00e9rifier date du dernier contr\u00f4le technique (moins de 2 ans).',\n        recommended: true\n      },\n      {\n        id: 'assurance',\n        label: 'Assurance OK',\n        details: 'Confirmer que l\u2019assurance est valide pour covoiturage.',\n        recommended: true\n      },\n      {\n        id: 'pauses',\n        label: 'Pauses toutes les 2h',\n        details: 'Planifier arr\u00eats r\u00e9guliers : toutes les ~2 heures.',\n        recommended: true\n      },\n      {\n        id: 'telephone',\n        label: 'T\u00e9l\u00e9phone charg\u00e9',\n        details: 'Batterie suffisante (> 20%) et chargeur accessible.',\n        recommended: true\n      },\n      {\n        id: 'rendez_vous',\n        label: 'Point de rendez-vous fr\u00e9quent\u00e9',\n        details: 'Choisir un lieu public, \u00e9clair\u00e9 et connu.',\n        recommended: true\n      },\n      {\n        id: 'sac_urgence',\n        label: 'Sac d\u2019urgence avec batterie externe et documents',\n        details: 'Inclure batterie externe, pi\u00e8ces d\u2019identit\u00e9, assurance, et m\u00e9dicaments si besoin.',\n        recommended: true\n      }\n    ],\n    buttons: {\n      autoEval: 'Auto-\u00e9valuer',\n      reset: 'R\u00e9initialiser',\n      export: 'Exporter JSON',\n      print: 'Imprimer',\n      tipsToggle: 'Conseils rapides'\n    },\n    riskLabels: {\n      low: 'Faible',\n      medium: 'Mod\u00e9r\u00e9',\n      high: '\u00c9lev\u00e9'\n    }\n  };\n\n  \/\/ Etat local de la checklist\n  let state = {\n    items: {}, \/\/ id -> boolean\n  };\n\n  \/\/ Initialisation : tous d\u00e9coch\u00e9s\n  STRINGS.items.forEach(it => state.items[it.id] = false);\n\n  \/\/ R\u00e9f\u00e9rences DOM\n  const checklistEl = document.getElementById('checklist');\n  const completedCountEl = document.getElementById('completedCount');\n  const progressPath = document.getElementById('progressPath');\n  const progressText = document.getElementById('progressText');\n  const riskBadge = document.getElementById('riskBadge');\n  const riskText = document.getElementById('riskText');\n  const riskIcon = document.getElementById('riskIcon');\n  const autoEvalBtn = document.getElementById('autoEvalBtn');\n  const resetBtn = document.getElementById('resetBtn');\n  const exportBtn = document.getElementById('exportBtn');\n  const printBtn = document.getElementById('printBtn');\n  const tipsToggle = document.getElementById('tipsToggle');\n  const quickTips = document.getElementById('quickTips');\n\n  \/\/ Form inputs pour auto-\u00e9valuation\n  const inputAnciennete = document.getElementById('anciennete');\n  const inputNote = document.getElementById('note');\n  const inputControleAge = document.getElementById('controleAge');\n  const inputAssurance = document.getElementById('assuranceOk');\n  const inputPause = document.getElementById('pauseHeures');\n  const inputPhone = document.getElementById('phonePct');\n  const inputRdv = document.getElementById('rdvFrequent');\n  const inputSacBattery = document.getElementById('sacBattery');\n  const inputSacDocs = document.getElementById('sacDocs');\n\n  \/\/ Utilitaires d'accessibilit\u00e9\n  function makeCheckboxKeyboardAccessible(cb, li) {\n    li.addEventListener('keydown', (e) => {\n      if (e.key === ' ' || e.key === 'Enter') {\n        e.preventDefault();\n        cb.click();\n      }\n    });\n  }\n\n  \/\/ Rendu initial de la checklist\n  function renderChecklist() {\n    checklistEl.innerHTML = '';\n    STRINGS.items.forEach(item => {\n      const li = document.createElement('li');\n      li.setAttribute('role', 'listitem');\n      li.className = 'flex items-start gap-3 p-2 rounded-md hover:bg-slate-50 focus-visible:ring focus-visible:ring-blue-200';\n      li.tabIndex = 0;\n\n      const cb = document.createElement('input');\n      cb.type = 'checkbox';\n      cb.id = 'cb-' + item.id;\n      cb.checked = state.items[item.id];\n      cb.className = 'mt-1 h-4 w-4 text-blue-600 focus:ring-blue-400';\n      cb.setAttribute('aria-label', item.label);\n\n      const content = document.createElement('div');\n      content.className = 'flex-1';\n\n      const label = document.createElement('label');\n      label.htmlFor = cb.id;\n      label.className = 'font-medium text-slate-700';\n      label.textContent = item.label;\n\n      const details = document.createElement('div');\n      details.className = 'text-sm text-slate-500';\n      details.textContent = item.details;\n\n      \/\/ Badge \"recommand\u00e9\"\n      const recommendedBadge = document.createElement('span');\n      if (item.recommended) {\n        recommendedBadge.className = 'ml-2 inline-block text-xs px-2 py-0.5 rounded-full bg-green-100 text-green-800';\n        recommendedBadge.textContent = 'Recommand\u00e9';\n        label.appendChild(recommendedBadge);\n      }\n\n      content.appendChild(label);\n      content.appendChild(details);\n\n      li.appendChild(cb);\n      li.appendChild(content);\n\n      \/\/ Gestion du clic\/entr\u00e9e\n      cb.addEventListener('change', () => {\n        state.items[item.id] = cb.checked;\n        updateSummary();\n      });\n\n      \/\/ Permettre clic sur l'ensemble du li pour cocher (meilleure cible pour mobile)\n      li.addEventListener('click', (e) => {\n        \/\/ \u00e9viter double toggle si clic sur la checkbox elle-m\u00eame (g\u00e9r\u00e9 par change)\n        if (e.target === cb) return;\n        cb.checked = !cb.checked;\n        state.items[item.id] = cb.checked;\n        cb.dispatchEvent(new Event('change', { bubbles: true }));\n      });\n\n      makeCheckboxKeyboardAccessible(cb, li);\n\n      checklistEl.appendChild(li);\n    });\n\n    updateSummary();\n  }\n\n  \/\/ Met \u00e0 jour le compteur, la progression et le badge de risque\n  function updateSummary() {\n    const total = STRINGS.items.length;\n    const done = Object.values(state.items).filter(Boolean).length;\n    completedCountEl.textContent = `${done} \/ ${total} \u00e9l\u00e9ments coch\u00e9s`;\n\n    const percent = Math.round((done \/ total) * 100);\n    progressText.textContent = `${percent}%`;\n\n    \/\/ Mise \u00e0 jour du stroke-dasharray pour l'anneau (360 * percent\/100) approximation via viewBox 36 -> use percent for dasharray\n    const dash = (percent \/ 100 * 100).toFixed(1);\n    progressPath.setAttribute('stroke-dasharray', `${dash} ${100 - dash}`);\n\n    \/\/ Calcul simple du niveau de risque\n    \/\/ - Si toutes les recommandations sont coch\u00e9es -> faible\n    \/\/ - Si >=75% coch\u00e9s -> mod\u00e9r\u00e9\n    \/\/ - Sinon \u00e9lev\u00e9\n    let riskLevel = 'high';\n    if (Object.values(state.items).every(Boolean)) riskLevel = 'low';\n    else if (percent >= 75) riskLevel = 'medium';\n    else riskLevel = 'high';\n\n    applyRiskBadge(riskLevel);\n  }\n\n  function applyRiskBadge(level) {\n    riskBadge.className = 'mt-2 inline-flex items-center gap-2 px-3 py-1.5 rounded-full font-semibold text-sm';\n    if (level === 'low') {\n      riskBadge.classList.add('low');\n      riskText.textContent = STRINGS.riskLabels.low;\n      riskIcon.innerHTML = '<path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.707a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414L9 13.414l4.707-4.707z\" clip-rule=\"evenodd\"\/>';\n    } else if (level === 'medium') {\n      riskBadge.classList.add('medium');\n      riskText.textContent = STRINGS.riskLabels.medium;\n      riskIcon.innerHTML = '<path d=\"M10 2a8 8 0 100 16 8 8 0 000-16zM9 6h2v6H9V6zM9 14h2v2H9v-2z\"\/>';\n    } else {\n      riskBadge.classList.add('high');\n      riskText.textContent = STRINGS.riskLabels.high;\n      riskIcon.innerHTML = '<path d=\"M8.257 3.099c.765-1.36 2.72-1.36 3.485 0l6.518 11.595c.75 1.334-.213 2.991-1.742 2.991H3.481c-1.529 0-2.492-1.657-1.742-2.991L8.257 3.1zM10 13a1 1 0 100-2 1 1 0 000 2zm0-4a1 1 0 00-.993.883L9 10v1a1 1 0 002 0v-1a1 1 0 00-1-1z\"\/>';\n    }\n  }\n\n  \/\/ R\u00e9initialiser la checklist\n  function resetChecklist() {\n    STRINGS.items.forEach(it => state.items[it.id] = false);\n    renderChecklist();\n  }\n\n  \/\/ Auto-\u00e9valuation : lit les param\u00e8tres et coche les items qui passent les r\u00e8gles simples\n  function autoEvaluateFromForm() {\n    \/\/ Lire valeurs du formulaire\n    const anciennete = Number(inputAnciennete.value || 0);\n    const note = Number(inputNote.value || 0);\n    const controleAge = Number(inputControleAge.value || 999);\n    const assurance = inputAssurance.checked;\n    const pauseHeures = Number(inputPause.value || 99);\n    const phonePct = Number(inputPhone.value || 0);\n    const rdvFrequent = inputRdv.checked;\n    const sacBattery = inputSacBattery.checked;\n    const sacDocs = inputSacDocs.checked;\n\n    \/\/ Appliquer r\u00e8gles basiques (bas\u00e9es sur la checklist fournie)\n    \/\/ 1. Profil conducteur : anciennet\u00e9 >=6 mois et note >=4\n    state.items['conducteur_profile'] = (anciennete >= 6 && note >= 4);\n\n    \/\/ 2. Contr\u00f4le technique < 2 ans\n    state.items['controle_technique'] = (controleAge < 2);\n\n    \/\/ 3. Assurance OK\n    state.items['assurance'] = assurance === true;\n\n    \/\/ 4. Pauses toutes les ~2h (si pauseHeures <=2)\n    state.items['pauses'] = (pauseHeures <= 2);\n\n    \/\/ 5. T\u00e9l\u00e9phone charg\u00e9 : threshold 20% m\u00ednimos\n    state.items['telephone'] = (phonePct >= 20);\n\n    \/\/ 6. Rendez-vous fr\u00e9quent\u00e9\n    state.items['rendez_vous'] = rdvFrequent === true;\n\n    \/\/ 7. Sac d'urgence : n\u00e9cessite battery et documents\n    state.items['sac_urgence'] = (sacBattery && sacDocs);\n\n    \/\/ Recalculer et rafra\u00eechir l'UI\n    renderChecklist();\n  }\n\n  \/\/ Exporter l'\u00e9tat courant au format JSON (t\u00e9l\u00e9chargement)\n  function exportJSON() {\n    const payload = {\n      generatedAt: new Date().toISOString(),\n      checklist: STRINGS.items.map(it => ({ id: it.id, label: it.label, checked: !!state.items[it.id] }))\n    };\n    const blob = new Blob([JSON.stringify(payload, null, 2)], { type: 'application\/json' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'checklist_covoiturage.json';\n    document.body.appendChild(a);\n    a.click();\n    a.remove();\n    URL.revokeObjectURL(url);\n  }\n\n  \/\/ Impression (utilise la fonction window.print())\n  function printInfographic() {\n    \/\/ Imprimer uniquement le conteneur (#covoiturage-infographie)\n    \/\/ On ouvre une nouvelle fen\u00eatre minimale et copie le HTML pour un rendu propre\n    const content = document.getElementById('covoiturage-infographie').outerHTML;\n    const win = window.open('', '_blank', 'width=800,height=900,scrollbars=yes');\n    if (!win) {\n      alert('Impossible d\u2019ouvrir la fen\u00eatre d\u2019impression (bloqueur de pop-ups?).');\n      return;\n    }\n    win.document.write(`\n      <html lang=\"fr\">\n        <head>\n          <meta charset=\"utf-8\">\n          <title>Checklist covoiturage - Impression<\/title>\n          <style>\n            body{font-family:system-ui,-apple-system,Segoe UI,Roboto,'Helvetica Neue',Arial;margin:20px}\n            .hidden-print{display:none}\n          <\/style>\n        <\/head>\n        <body>\n          ${content}\n          <script>window.onload = function(){ setTimeout(()=>{window.print();},250); };<\/script>\n        <\/body>\n      <\/html>\n    `);\n    win.document.close();\n  }\n\n  \/\/ \u00c9v\u00e9nements boutons\n  autoEvalBtn.addEventListener('click', () => {\n    autoEvaluateFromForm();\n    autoEvalBtn.setAttribute('aria-pressed', 'true');\n  });\n  resetBtn.addEventListener('click', () => {\n    resetChecklist();\n    autoEvalBtn.setAttribute('aria-pressed', 'false');\n  });\n  exportBtn.addEventListener('click', () => exportJSON());\n  printBtn.addEventListener('click', () => printInfographic());\n  tipsToggle.addEventListener('click', () => {\n    const visible = quickTips.classList.toggle('hidden');\n    tipsToggle.textContent = visible ? STRINGS.buttons.tipsToggle : 'Fermer conseils';\n  });\n\n  \/\/ Raccourcis clavier globaux pour accessibilit\u00e9 (E pour exporter, R pour r\u00e9initialiser)\n  document.addEventListener('keydown', (e) => {\n    if (e.altKey || e.ctrlKey || e.metaKey) return;\n    if (e.key === 'e' || e.key === 'E') { exportJSON(); }\n    if (e.key === 'r' || e.key === 'R') { resetChecklist(); }\n  });\n\n  \/\/ Initial render\n  renderChecklist();\n\n})();\n<\/script>\n\n<h2 class=\"wp-block-heading\">Assurance, responsabilit\u00e9s et d\u00e9marches en cas d\u2019accident<\/h2>\n\n<p class=\"wp-block-paragraph\">Toute assurance automobile comprend la responsabilit\u00e9 civile obligatoire, mais le covoiturage implique parfois des subtilit\u00e9s contractuelles. V\u00e9rifiez si votre assurance personnelle inclut la garantie individuelle accident et renseignez-vous sur la couverture fournie par la plateforme utilis\u00e9e.<\/p>\n\n<p class=\"wp-block-paragraph\">En cas d\u2019accident, s\u00e9curisez la zone avec le triangle et les gilets, appelez les secours si n\u00e9cessaire (15 ou 112), remplissez un constat amiable pr\u00e9cis et informez votre assureur dans les 5 jours. Conservez toutes les pi\u00e8ces : photos, attestations, coordonn\u00e9es des t\u00e9moins et num\u00e9ro d\u2019annonce sur la plateforme.<\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Situation<\/th>\n<th>Action imm\u00e9diate<\/th>\n<th>Responsable principal<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Panne moteur<\/td>\n<td>Se garer hors chauss\u00e9e, triangle, appeler assistance<\/td>\n<td>Conducteur<\/td>\n<\/tr>\n<tr>\n<td>Accident avec bless\u00e9s<\/td>\n<td>Appeler 15\/112, s\u00e9curiser, premiers secours<\/td>\n<td>Conducteur \/ passagers (coop\u00e9ration)<\/td>\n<\/tr>\n<tr>\n<td>Dommages sans bless\u00e9s<\/td>\n<td>Remplir constat amiable, pr\u00e9venir assurances et plateforme<\/td>\n<td>Conducteur<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : agir vite et conserver les preuves facilite les d\u00e9marches d\u2019indemnisation.<\/p>\n\n<h2 class=\"wp-block-heading\">Pr\u00e9cautions sp\u00e9cifiques et conseils terrain pour choisir rendez-vous et itin\u00e9raire<\/h2>\n\n<p class=\"wp-block-paragraph\">Choisissez des points de rendez\u2011vous facilement accessibles, fr\u00e9quent\u00e9s et \u00e9clair\u00e9s. Pr\u00e9f\u00e9rez des aires de covoiturage officielles ou des parkings de gare plut\u00f4t qu\u2019un lieu isol\u00e9 au bord d\u2019une route. Partagez l\u2019itin\u00e9raire et l\u2019heure d\u2019arriv\u00e9e estim\u00e9e avec un proche et activez le partage de position si possible.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour les voyages entre grandes villes, privil\u00e9giez des trajets via des aires de repos connues : elles offrent s\u00e9curit\u00e9 et services. Ce conseil se justifie particuli\u00e8rement sur les trajets de nuit ou de plusieurs heures.<\/p>\n\n<h3 class=\"wp-block-heading\">Conseils sp\u00e9cifiques pour les femmes<\/h3>\n\n<p class=\"wp-block-paragraph\">Favorisez les trajets o\u00f9 d\u2019autres passagers f\u00e9minins sont pr\u00e9sents si cela vous rassure. Lisez attentivement les avis laiss\u00e9s par des femmes et partagez les d\u00e9tails du voyage (profil du conducteur, heure, itin\u00e9raire) avec un proche. Faites confiance \u00e0 votre instinct : mieux vaut annuler un trajet que se sentir en danger.<\/p>\n\n<p class=\"wp-block-paragraph\">Choisissez des points de rendez-vous visibles et fr\u00e9quent\u00e9s, et \u00e9vitez l\u2019isolement. Phrase-cl\u00e9 : l\u2019anticipation et la vigilance r\u00e9duisent significativement les risques.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour approfondir les bonnes pratiques et recommandations, consultez un <a href=\"https:\/\/www.easycovoit.fr\/blog\/article\/securite-covoiturage-guide-complet-voyager-sereinement\" target=\"_blank\" rel=\"noopener\">guide complet sur la s\u00e9curit\u00e9 du covoiturage<\/a> et des conseils pour se prot\u00e9ger en tant que passager ou conducteur sur <a href=\"https:\/\/www.expressdriver.fr\/covoiturage-comment-se-proteger-en-tant-que-conducteur-et-passager\/\" target=\"_blank\" rel=\"noopener\">cette page d\u00e9di\u00e9e<\/a>. Pour l\u2019importance des aires et des points de rendez-vous s\u00e9curis\u00e9s, cet article propose des rep\u00e8res utiles : <a href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/importance-aires-covoiturage-2025\/\">aires de covoiturage et s\u00e9curit\u00e9<\/a>. Enfin, pensez \u00e9galement \u00e0 v\u00e9rifier la validit\u00e9 du permis du conducteur, voir par exemple <a href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/permis-valide-2026\/\">les r\u00e8gles relatives au permis<\/a>.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Kit de s\u00e9curit\u00e9 \u00e0 emporter<\/strong> : t\u00e9l\u00e9phone charg\u00e9 + batterie externe, bouteille d\u2019eau, encas, m\u00e9dicaments, carte d\u2019identit\u00e9, carte vitale, coordonn\u00e9es d\u2019un contact d\u2019urgence.<\/li><li><strong>Comportement \u00e0 bord<\/strong> : port de la ceinture, respect du conducteur, volume sonore mod\u00e9r\u00e9.<\/li><li><strong>Surveillance<\/strong> : noter l\u2019immatriculation, prendre une photo du profil conducteur et du v\u00e9hicule avant le d\u00e9part.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : un petit sac bien pr\u00e9par\u00e9 et des gestes simples garantissent un voyage plus serein.<\/p>\n\n<!-- Quizz interactif (bloc \u00e0 copier\/coller) - Hauteur max 900px, accessible et en fran\u00e7ais -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<style>\n  \/* Conteneur limit\u00e9 en hauteur pour respecter la contrainte d'outil *\/\n  .quiz-container { max-height: 900px; overflow: auto; }\n  \/* Am\u00e9lioration accessibilit\u00e9 focus *\/\n  .focus-ring:focus { outline: 3px solid rgba(59,130,246,0.6); outline-offset: 2px; border-radius: 6px; }\n<\/style>\n\n<div id=\"covoiturage-quiz\" class=\"quiz-container mx-auto my-6 p-6 max-w-3xl bg-white dark:bg-gray-900 rounded-lg shadow-lg ring-1 ring-gray-200 dark:ring-gray-700\">\n  <header class=\"mb-4\">\n    <h2 class=\"text-2xl font-semibold text-gray-800 dark:text-gray-100\">Test rapide : pr\u00eat pour un covoiturage longue distance ?<\/h2>\n    <p class=\"mt-2 text-gray-600 dark:text-gray-300\">R\u00e9pondez au quiz ci-dessous. R\u00e9pondez \u00ab\u00a0oui\u00a0\u00bb \u00e0 au moins 4\/5 pour partir sereinement.<\/p>\n  <\/header>\n\n  <div id=\"progress\" class=\"mb-4\" aria-hidden=\"true\">\n    <div class=\"w-full bg-gray-200 dark:bg-gray-800 h-2 rounded\">\n      <div id=\"progress-bar\" class=\"h-2 bg-green-500 rounded\" style=\"width:0%\"><\/div>\n    <\/div>\n    <div class=\"flex justify-between text-sm mt-2 text-gray-500 dark:text-gray-400\">\n      <span id=\"progress-text\">Question 1 \/ 6<\/span>\n      <span id=\"score-text\">Score: 0<\/span>\n    <\/div>\n  <\/div>\n\n  <form id=\"quiz-form\" class=\"space-y-6\" aria-labelledby=\"covoiturage-quiz\">\n    <!-- Questions seront inject\u00e9es ici par JS -->\n    <div id=\"questions\"><\/div>\n\n    <div class=\"flex items-center gap-3\">\n      <button id=\"submit-btn\" type=\"button\" class=\"focus-ring px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded shadow-sm\" aria-live=\"polite\">Soumettre<\/button>\n      <button id=\"next-btn\" type=\"button\" class=\"hidden focus-ring px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-800 dark:text-gray-100 rounded\">Question suivante<\/button>\n      <button id=\"retake-btn\" type=\"button\" class=\"ml-auto focus-ring px-3 py-2 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-100 border border-gray-300 dark:border-gray-600 rounded hidden\">Recommencer<\/button>\n    <\/div>\n  <\/form>\n\n  <section id=\"result\" class=\"mt-6 hidden\" aria-live=\"polite\">\n    <!-- R\u00e9sultats inject\u00e9s ici -->\n  <\/section>\n\n  <footer class=\"mt-6 text-sm text-gray-600 dark:text-gray-400\">\n    <strong>Conseil :<\/strong> R\u00e9pondez honn\u00eatement. Ce test synth\u00e9tique ne remplace pas une v\u00e9rification compl\u00e8te du v\u00e9hicule et de l\u2019environnement.\n  <\/footer>\n<\/div>\n\n<script>\n\/*\n  Quizz interactif - JavaScript\n  - Toutes les cha\u00eenes en fran\u00e7ais\n  - Accessible (labels, keyboard, aria-live)\n  - L\u00e9gende de donn\u00e9es configurable via l'objet \"CONFIG\"\n  - Pas d'API externe requis. Si n\u00e9cessaire, on pourrait appeler une API gratuite (non utilis\u00e9e ici).\n*\/\n\n\/* === CONFIGURATION (\u00e9ditable facilement) === *\/\nconst CONFIG = {\n  requiredYesToGo: 4, \/\/ nombre de r\u00e9ponses \"oui\" requis pour partir sereinement\n  \/\/ Questions : type 'bool' = oui\/non, 'single' = choix unique\n  questions: [\n    {\n      id: 'q1',\n      type: 'bool',\n      question: \"Avez-vous v\u00e9rifi\u00e9 la note du conducteur (plateforme ou \u00e9valuations) ?\",\n      explanation: \"Une note \u00e9lev\u00e9e et des avis r\u00e9cents augmentent la confiance. Si la note est faible, contactez la plateforme ou choisissez un autre conducteur.\",\n      correct: 'oui'\n    },\n    {\n      id: 'q2',\n      type: 'bool',\n      question: \"Le contr\u00f4le technique du v\u00e9hicule est < 2 ans ou r\u00e9cent selon la plateforme ?\",\n      explanation: \"Un contr\u00f4le r\u00e9cent r\u00e9duit le risque de panne li\u00e9e \u00e0 des d\u00e9fauts techniques.\",\n      correct: 'oui'\n    },\n    {\n      id: 'q3',\n      type: 'bool',\n      question: \"Votre t\u00e9l\u00e9phone est charg\u00e9 et vous avez une batterie externe de secours ?\",\n      explanation: \"Un t\u00e9l\u00e9phone fonctionnel est essentiel pour navigation, communication et en cas d'urgence.\",\n      correct: 'oui'\n    },\n    {\n      id: 'q4',\n      type: 'bool',\n      question: \"Avez-vous partag\u00e9 l'itin\u00e9raire avec un proche (ou mis un track en live) ?\",\n      explanation: \"Partager l'itin\u00e9raire permet \u00e0 un proche de savoir o\u00f9 vous \u00eates en cas d'impr\u00e9vu.\",\n      correct: 'oui'\n    },\n    {\n      id: 'q5',\n      type: 'bool',\n      question: \"Avez-vous convenu de pauses toutes les ~2 heures pour le conducteur ?\",\n      explanation: \"Des pauses r\u00e9guli\u00e8res r\u00e9duisent la fatigue et le risque d'accident.\",\n      correct: 'oui'\n    },\n    {\n      id: 'q6',\n      type: 'single',\n      question: \"Que devriez-vous faire si le conducteur adopte une conduite dangereuse ?\",\n      choices: [\n        { value: 'a', label: \"Ignorer et esp\u00e9rer que cela s'am\u00e9liore\" },\n        { value: 'b', label: \"Demander au conducteur d'arr\u00eater ou de ralentir, puis mettre fin au trajet si besoin\" },\n        { value: 'c', label: \"Prendre le t\u00e9l\u00e9phone et filmer sans pr\u00e9venir\" },\n        { value: 'd', label: \"Rien, attendre d'arriver\" }\n      ],\n      explanation: \"La priorit\u00e9 est votre s\u00e9curit\u00e9 : demandez d'abord, escaladez (plateforme, arr\u00eat) si n\u00e9cessaire. Filmer sans pr\u00e9venir peut aggraver la situation.\",\n      correct: 'b'\n    }\n  ],\n  \/\/ Textes globaux (\u00e9dition simple)\n  texts: {\n    submit: \"Soumettre\",\n    next: \"Question suivante\",\n    retake: \"Recommencer\",\n    startMessage: \"R\u00e9pondez aux questions. Les explications s'afficheront apr\u00e8s soumission.\",\n    resultGood: \"Bravo \u2014 vous \u00eates pr\u00eat(e) pour un covoiturage longue distance.\",\n    resultCaution: \"Prudence \u2014 quelques \u00e9l\u00e9ments \u00e0 v\u00e9rifier avant de partir.\",\n    resultStop: \"Pas recommand\u00e9 \u2014 prenez des mesures avant d'accepter le trajet.\",\n    shareAdviceTitle: \"Conseils personnalis\u00e9s\"\n  }\n};\n\n\/* === INITIALISATION DOM === *\/\nconst container = document.getElementById('covoiturage-quiz');\nconst questionsEl = document.getElementById('questions');\nconst progressBar = document.getElementById('progress-bar');\nconst progressText = document.getElementById('progress-text');\nconst scoreText = document.getElementById('score-text');\nconst submitBtn = document.getElementById('submit-btn');\nconst nextBtn = document.getElementById('next-btn');\nconst retakeBtn = document.getElementById('retake-btn');\nconst resultSection = document.getElementById('result');\n\nlet state = {\n  currentIndex: 0,\n  answers: {}, \/\/ { qid: answer }\n  scoreYes: 0\n};\n\n\/* Render initial questions as progressive single-view items for accessibility *\/\nfunction renderQuestions() {\n  questionsEl.innerHTML = '';\n  CONFIG.questions.forEach((q, idx) => {\n    const wrapper = document.createElement('section');\n    wrapper.className = 'question-card p-4 bg-gray-50 dark:bg-gray-800 rounded-md';\n    wrapper.id = `card-${q.id}`;\n    wrapper.setAttribute('data-index', idx);\n    wrapper.setAttribute('aria-hidden', idx === 0 ? 'false' : 'true');\n    wrapper.style.display = idx === 0 ? 'block' : 'none';\n\n    const qTitle = document.createElement('h3');\n    qTitle.className = 'text-lg font-medium text-gray-800 dark:text-gray-100';\n    qTitle.textContent = `Q${idx + 1}. ${q.question}`;\n    wrapper.appendChild(qTitle);\n\n    const inputArea = document.createElement('div');\n    inputArea.className = 'mt-3 space-y-2';\n\n    if (q.type === 'bool') {\n      \/\/ Oui \/ Non radio buttons\n      ['oui', 'non'].forEach((val) => {\n        const id = `${q.id}-${val}`;\n        const label = document.createElement('label');\n        label.className = 'inline-flex items-center gap-3 w-full p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer';\n        label.setAttribute('for', id);\n        const input = document.createElement('input');\n        input.className = 'focus-ring form-radio h-4 w-4 text-indigo-600';\n        input.type = 'radio';\n        input.name = q.id;\n        input.id = id;\n        input.value = val;\n        input.setAttribute('aria-label', `${q.question} ${val}`);\n        input.addEventListener('change', () => {\n          state.answers[q.id] = val;\n          \/\/ For boolean, count yes for scoring but final score computed on submit\n        });\n\n        const span = document.createElement('span');\n        span.className = 'text-gray-700 dark:text-gray-200';\n        span.textContent = val === 'oui' ? 'Oui' : 'Non';\n\n        label.appendChild(input);\n        label.appendChild(span);\n        inputArea.appendChild(label);\n      });\n    } else if (q.type === 'single') {\n      q.choices.forEach(choice => {\n        const id = `${q.id}-${choice.value}`;\n        const label = document.createElement('label');\n        label.className = 'inline-flex items-center gap-3 w-full p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer';\n        label.setAttribute('for', id);\n        const input = document.createElement('input');\n        input.className = 'focus-ring form-radio h-4 w-4 text-indigo-600';\n        input.type = 'radio';\n        input.name = q.id;\n        input.id = id;\n        input.value = choice.value;\n        input.setAttribute('aria-label', choice.label);\n        input.addEventListener('change', () => {\n          state.answers[q.id] = choice.value;\n        });\n\n        const span = document.createElement('span');\n        span.className = 'text-gray-700 dark:text-gray-200';\n        span.textContent = choice.label;\n\n        label.appendChild(input);\n        label.appendChild(span);\n        inputArea.appendChild(label);\n      });\n    }\n\n    \/\/ Explanation placeholder (hidden until submit)\n    const explanation = document.createElement('div');\n    explanation.className = 'explanation mt-3 text-sm text-gray-600 dark:text-gray-300 hidden';\n    explanation.id = `${q.id}-explanation`;\n    explanation.textContent = q.explanation;\n    wrapper.appendChild(inputArea);\n    wrapper.appendChild(explanation);\n\n    questionsEl.appendChild(wrapper);\n  });\n\n  updateProgress();\n}\n\n\/* Update progress bar and text *\/\nfunction updateProgress() {\n  const total = CONFIG.questions.length;\n  const current = state.currentIndex + 1;\n  const percent = Math.round((state.currentIndex \/ total) * 100);\n  progressBar.style.width = `${percent}%`;\n  progressText.textContent = `Question ${current} \/ ${total}`;\n  \/\/ compute yes-based score shown in header (count 'oui' answers)\n  const yesCount = Object.values(state.answers).filter(v => v === 'oui').length;\n  scoreText.textContent = `Score: ${yesCount}`;\n}\n\n\/* Navigate to next question (progressive reveal) *\/\nfunction goToQuestion(index) {\n  const total = CONFIG.questions.length;\n  if (index < 0 || index >= total) return;\n  \/\/ hide current and show next\n  const prev = document.querySelector(`#card-${CONFIG.questions[state.currentIndex].id}`);\n  if (prev) {\n    prev.style.display = 'none';\n    prev.setAttribute('aria-hidden', 'true');\n  }\n  const next = document.querySelector(`#card-${CONFIG.questions[index].id}`);\n  if (next) {\n    next.style.display = 'block';\n    next.setAttribute('aria-hidden', 'false');\n    \/\/ focus first input for a11y\n    const firstInput = next.querySelector('input');\n    if (firstInput) firstInput.focus();\n  }\n  state.currentIndex = index;\n  updateProgress();\n\n  \/\/ Toggle buttons\n  nextBtn.classList.toggle('hidden', state.currentIndex >= CONFIG.questions.length - 1);\n  submitBtn.classList.toggle('hidden', state.currentIndex < CONFIG.questions.length - 1);\n}\n\n\/* Evaluate answers and show results *\/\nfunction evaluateAndShow() {\n  const total = CONFIG.questions.length;\n  let yesCount = 0;\n  let correctCount = 0;\n\n  \/\/ Clear previous result\n  resultSection.innerHTML = '';\n  resultSection.classList.remove('hidden');\n\n  const detailsList = document.createElement('ol');\n  detailsList.className = 'space-y-4';\n\n  CONFIG.questions.forEach((q, idx) => {\n    const userAns = state.answers[q.id];\n    \/\/ For boolean, consider 'oui' as desired if correct='oui'\n    const isCorrect = (q.type === 'bool') ? (userAns === q.correct) : (userAns === q.correct);\n\n    if (userAns === 'oui') yesCount++;\n\n    if (isCorrect) correctCount++;\n\n    const item = document.createElement('li');\n    item.className = 'p-3 bg-white dark:bg-gray-800 rounded border border-gray-100 dark:border-gray-700';\n\n    const header = document.createElement('div');\n    header.className = 'flex items-start justify-between gap-3';\n    const qtitle = document.createElement('div');\n    qtitle.className = 'text-gray-800 dark:text-gray-100';\n    qtitle.innerHTML = `<strong>Q${idx + 1}.<\/strong> ${q.question}`;\n    header.appendChild(qtitle);\n\n    const badge = document.createElement('span');\n    badge.className = isCorrect ? 'inline-flex items-center px-2 py-1 bg-green-100 text-green-800 rounded text-sm' :\n                                 'inline-flex items-center px-2 py-1 bg-red-100 text-red-800 rounded text-sm';\n    badge.textContent = isCorrect ? 'OK' : 'V\u00e9rifier';\n    header.appendChild(badge);\n\n    const yourAns = document.createElement('p');\n    yourAns.className = 'mt-2 text-sm text-gray-600 dark:text-gray-300';\n    yourAns.innerHTML = `<strong>Votre r\u00e9ponse :<\/strong> ${userAns ? escapeHtml(userAns) : '<em>aucune r\u00e9ponse<\/em>'}`;\n\n    const correctAns = document.createElement('p');\n    correctAns.className = 'mt-1 text-sm text-gray-600 dark:text-gray-300';\n    const corrDisplay = (q.type === 'bool') ? (q.correct === 'oui' ? 'Oui' : 'Non') :\n                      (q.choices.find(c => c.value === q.correct) || {}).label || q.correct;\n    correctAns.innerHTML = `<strong>R\u00e9ponse recommand\u00e9e :<\/strong> ${escapeHtml(corrDisplay)}`;\n\n    const explanation = document.getElementById(`${q.id}-explanation`);\n    if (explanation) {\n      const explClone = explanation.cloneNode(true);\n      explClone.classList.remove('hidden');\n      explClone.classList.add('mt-2');\n      item.appendChild(header);\n      item.appendChild(yourAns);\n      item.appendChild(correctAns);\n      item.appendChild(explClone);\n    } else {\n      item.appendChild(header);\n      item.appendChild(yourAns);\n      item.appendChild(correctAns);\n    }\n\n    detailsList.appendChild(item);\n  });\n\n  \/\/ Build summary\n  const summary = document.createElement('div');\n  summary.className = 'p-4 rounded-md';\n  let summaryTitle = '';\n  let summaryClass = '';\n  if (yesCount >= CONFIG.requiredYesToGo) {\n    summaryTitle = CONFIG.texts.resultGood;\n    summaryClass = 'bg-green-50 text-green-800 border-green-200';\n  } else if (yesCount >= 2) {\n    summaryTitle = CONFIG.texts.resultCaution;\n    summaryClass = 'bg-yellow-50 text-yellow-800 border-yellow-200';\n  } else {\n    summaryTitle = CONFIG.texts.resultStop;\n    summaryClass = 'bg-red-50 text-red-800 border-red-200';\n  }\n  summary.className = `${summary.className} ${summaryClass} border p-4`;\n\n  summary.innerHTML = `\n    <div class=\"flex items-center justify-between\">\n      <div>\n        <h3 class=\"text-lg font-semibold\">${escapeHtml(summaryTitle)}<\/h3>\n        <p class=\"mt-1 text-sm\">R\u00e9ponses \"oui\" : <strong>${yesCount}<\/strong> \/ ${CONFIG.questions.length} \u2014 R\u00e9ponses recommand\u00e9es exactes : <strong>${correctCount}<\/strong> \/ ${CONFIG.questions.length}<\/p>\n      <\/div>\n      <div class=\"text-sm text-gray-600 dark:text-gray-300\">\n        <button id=\"share-advice\" class=\"focus-ring inline-flex items-center px-3 py-1 rounded bg-indigo-600 text-white\">Voir conseils<\/button>\n      <\/div>\n    <\/div>\n  `;\n\n  resultSection.appendChild(summary);\n\n  const detailsHeading = document.createElement('h4');\n  detailsHeading.className = 'mt-4 text-md font-medium text-gray-800 dark:text-gray-100';\n  detailsHeading.textContent = 'D\u00e9tails par question';\n  resultSection.appendChild(detailsHeading);\n  resultSection.appendChild(detailsList);\n\n  \/\/ Show retake button\n  retakeBtn.classList.remove('hidden');\n\n  \/\/ Add listener for advice button\n  const shareBtn = document.getElementById('share-advice');\n  if (shareBtn) {\n    shareBtn.addEventListener('click', () => {\n      showPersonalizedAdvice(yesCount);\n    });\n  }\n}\n\n\/* Provide personalized advice based on yesCount *\/\nfunction showPersonalizedAdvice(yesCount) {\n  const adviceBox = document.createElement('div');\n  adviceBox.className = 'mt-4 p-4 bg-white dark:bg-gray-800 border rounded';\n  adviceBox.innerHTML = `<h5 class=\"font-semibold mb-2\">${escapeHtml(CONFIG.texts.shareAdviceTitle)}<\/h5>`;\n\n  if (yesCount >= CONFIG.requiredYesToGo) {\n    adviceBox.innerHTML += `<ul class=\"list-disc ml-5 text-sm text-gray-700 dark:text-gray-200\">\n      <li>Confirmez l'heure de d\u00e9part et un point de rendez-vous visible.<\/li>\n      <li>Notez le num\u00e9ro d'immatriculation et le pr\u00e9nom du conducteur.<\/li>\n      <li>Gardez votre chargeur et une application de navigation pr\u00eate.<\/li>\n    <\/ul>`;\n  } else if (yesCount >= 2) {\n    adviceBox.innerHTML += `<ul class=\"list-disc ml-5 text-sm text-gray-700 dark:text-gray-200\">\n      <li>Demandez au conducteur des preuves (photo du contr\u00f4le technique, avis r\u00e9cents).<\/li>\n      <li>Partagez l'itin\u00e9raire et convenez de pauses plus fr\u00e9quentes.<\/li>\n      <li>Si possible, optez pour un trajet avec un autre conducteur ou une autre annonce.<\/li>\n    <\/ul>`;\n  } else {\n    adviceBox.innerHTML += `<ul class=\"list-disc ml-5 text-sm text-gray-700 dark:text-gray-200\">\n      <li>Ne partez pas sans garanties : annulez ou changez d'annonce si n\u00e9cessaire.<\/li>\n      <li>Contactez la plateforme pour signaler les risques ou demandez un remboursement si le trajet vous semble dangereux.<\/li>\n      <li>En cas de doute s\u00e9rieux, choisissez un autre moyen (train, bus ou autre conducteur).<\/li>\n    <\/ul>`;\n  }\n\n  \/\/ Remove previous advice if any and append\n  const existing = document.getElementById('personal-advice');\n  if (existing) existing.remove();\n  adviceBox.id = 'personal-advice';\n  resultSection.appendChild(adviceBox);\n  adviceBox.scrollIntoView({ behavior: 'smooth' });\n}\n\n\/* Retake quiz *\/\nfunction resetQuiz() {\n  state = { currentIndex: 0, answers: {}, scoreYes: 0 };\n  \/\/ reset inputs\n  const radios = document.querySelectorAll('#quiz-form input[type=\"radio\"]');\n  radios.forEach(r => r.checked = false);\n  \/\/ hide explanations\n  CONFIG.questions.forEach(q => {\n    const expl = document.getElementById(`${q.id}-explanation`);\n    if (expl) expl.classList.add('hidden');\n  });\n  \/\/ hide result\n  resultSection.classList.add('hidden');\n  resultSection.innerHTML = '';\n  \/\/ hide retake\n  retakeBtn.classList.add('hidden');\n  \/\/ show first question\n  CONFIG.questions.forEach((q, idx) => {\n    const card = document.getElementById(`card-${q.id}`);\n    if (card) {\n      card.style.display = idx === 0 ? 'block' : 'none';\n      card.setAttribute('aria-hidden', idx === 0 ? 'false' : 'true');\n    }\n  });\n  updateProgress();\n  submitBtn.classList.remove('hidden');\n  nextBtn.classList.toggle('hidden', CONFIG.questions.length <= 1);\n  const firstInput = document.querySelector(`#card-${CONFIG.questions[0].id} input`);\n  if (firstInput) firstInput.focus();\n}\n\n\/* Simple HTML escape to avoid injected content *\/\nfunction escapeHtml(str) {\n  if (!str) return str;\n  return String(str)\n    .replaceAll('&#038;', '&amp;')\n    .replaceAll('<', '&lt;')\n    .replaceAll('>', '&gt;')\n    .replaceAll('\"', '&quot;')\n    .replaceAll(\"'\", '&#039;');\n}\n\n\/* Event bindings *\/\ndocument.addEventListener('DOMContentLoaded', () => {\n  \/\/ Render questions\n  renderQuestions();\n\n  \/\/ Next button advances progressive view\n  nextBtn.addEventListener('click', () => {\n    const nextIdx = state.currentIndex + 1;\n    if (nextIdx < CONFIG.questions.length) {\n      goToQuestion(nextIdx);\n    }\n  });\n\n  \/\/ Submit evaluates quiz\n  submitBtn.addEventListener('click', () => {\n    \/\/ Encourage user to answer all questions\n    const unanswered = CONFIG.questions.filter(q => !state.answers[q.id]);\n    if (unanswered.length > 0) {\n      const proceed = confirm(`Vous avez ${unanswered.length} question(s) sans r\u00e9ponse. Continuer et \u00e9valuer quand m\u00eame ?`);\n      if (!proceed) return;\n    }\n    \/\/ Reveal explanations and evaluate\n    CONFIG.questions.forEach(q => {\n      const expl = document.getElementById(`${q.id}-explanation`);\n      if (expl) expl.classList.remove('hidden');\n    });\n    evaluateAndShow();\n    \/\/ Hide all question cards\n    CONFIG.questions.forEach(q => {\n      const card = document.getElementById(`card-${q.id}`);\n      if (card) {\n        card.style.display = 'none';\n        card.setAttribute('aria-hidden', 'true');\n      }\n    });\n    \/\/ Update progress to 100%\n    progressBar.style.width = '100%';\n    progressText.textContent = `Termin\u00e9`;\n    scoreText.textContent = `Score: ${Object.values(state.answers).filter(v => v === 'oui').length}`;\n    submitBtn.classList.add('hidden');\n    nextBtn.classList.add('hidden');\n  });\n\n  \/\/ Retake\n  retakeBtn.addEventListener('click', resetQuiz);\n\n  \/\/ Keyboard: Enter triggers submit on last question\n  document.getElementById('quiz-form').addEventListener('keydown', (e) => {\n    if (e.key === 'Enter') {\n      \/\/ if not last question, go next; else submit\n      if (state.currentIndex < CONFIG.questions.length - 1) {\n        e.preventDefault();\n        goToQuestion(state.currentIndex + 1);\n      } else {\n        e.preventDefault();\n        submitBtn.click();\n      }\n    }\n  });\n});\n\n\/* === Notes sur les APIs (optionnel) ===\n  Cet outil ne fait pas appel \u00e0 des APIs externes pour rester simple et priv\u00e9.\n  Si vous souhaitez ajouter une v\u00e9rification automatique (ex : g\u00e9olocalisation IP ou m\u00e9t\u00e9o),\n  voici un exemple d'API gratuite possible (externe, non utilis\u00e9e ici) :\n\n  API d'exemple : https:\/\/ipapi.co\/json\/\n  Exemple de r\u00e9ponse JSON :\n  {\n    \"ip\": \"8.8.8.8\",\n    \"city\": \"Mountain View\",\n    \"region\": \"California\",\n    \"country\": \"US\",\n    \"postal\": \"94035\",\n    \"latitude\": 37.386,\n    \"longitude\": -122.0838,\n    \"timezone\": \"America\/Los_Angeles\"\n  }\n  Note : ipapi.co propose des requ\u00eates gratuites mais avec limites d'usage. Toujours v\u00e9rifier les conditions.\n*\/\n<\/script>\n\n<h2 class=\"wp-block-heading\">Quelques erreurs fr\u00e9quentes \u00e0 \u00e9viter et astuces pratiques<\/h2>\n\n<p class=\"wp-block-paragraph\">\u00c9vitez de monter dans un v\u00e9hicule sans v\u00e9rifier le profil du conducteur ou sans expliquer vos attentes. Ne laissez pas d\u2019objets de valeur \u00e0 vue dans la voiture lorsque vous faites une pause. Ne forcez pas le conducteur \u00e0 modifier l\u2019itin\u00e9raire en cours de route sans accord pr\u00e9alable.<\/p>\n\n<p class=\"wp-block-paragraph\">Astuce pratique : pour un trajet nocturne, privil\u00e9giez les conducteurs ayant de l\u2019exp\u00e9rience sur longue distance et qui proposent au moins un relais conducteur ou des pauses r\u00e9guli\u00e8rement planifi\u00e9es. Phrase-cl\u00e9 : anticiper \u00e9vite les tensions et les risques.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Synth\u00e8se<\/strong> : v\u00e9rifiez le conducteur et le v\u00e9hicule, planifiez l\u2019itin\u00e9raire, respectez les pauses, pr\u00e9parez un kit d\u2019urgence et sachez r\u00e9agir en cas d\u2019accident. Agissez maintenant : envoyez votre itin\u00e9raire \u00e0 un proche et notez les coordonn\u00e9es du conducteur avant de monter \u00e0 bord.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Que vu00e9rifier sur le profil du2019un conducteur avant de ru00e9server ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Consultez lu2019anciennetu00e9 sur la plateforme, la note moyenne (idu00e9alement u22654\/5), les avis ru00e9cents, la vu00e9rification du permis et de lu2019identitu00e9, et la photo de profil. Demandez confirmation de lu2019assurance et du contru00f4le technique si nu00e9cessaire.\"}},{\"@type\":\"Question\",\"name\":\"Quels documents garder u00e0 portu00e9e de main lors du2019un covoiturage ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Carte du2019identitu00e9, carte vitale, coordonnu00e9es du conducteur, attestation du2019assurance du vu00e9hicule (sur demande), numu00e9ro de ru00e9servation sur la plateforme et coordonnu00e9es du2019un contact du2019urgence.\"}},{\"@type\":\"Question\",\"name\":\"Que faire en cas du2019accident sans blessu00e9s ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Su00e9curisez la zone, placez le triangle et les gilets, remplissez un constat amiable pru00e9cis, photographiez les dommages, pru00e9venez les assurances dans les 5 jours et informez la plateforme utilisu00e9e.\"}},{\"@type\":\"Question\",\"name\":\"Comment ru00e9agir si vous vous sentez en danger pendant le trajet ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Demandez poliment un arru00eat dans le prochain lieu su00fbr, contactez un proche pour partager votre position, quittez le vu00e9hicule si nu00e9cessaire et appelez les services de police si la situation le nu00e9cessite.\"}}]}\n<\/script>\n<h3>Que v\u00e9rifier sur le profil d\u2019un conducteur avant de r\u00e9server ?<\/h3>\n<p>Consultez l\u2019anciennet\u00e9 sur la plateforme, la note moyenne (id\u00e9alement \u22654\/5), les avis r\u00e9cents, la v\u00e9rification du permis et de l\u2019identit\u00e9, et la photo de profil. Demandez confirmation de l\u2019assurance et du contr\u00f4le technique si n\u00e9cessaire.<\/p>\n<h3>Quels documents garder \u00e0 port\u00e9e de main lors d\u2019un covoiturage ?<\/h3>\n<p>Carte d\u2019identit\u00e9, carte vitale, coordonn\u00e9es du conducteur, attestation d\u2019assurance du v\u00e9hicule (sur demande), num\u00e9ro de r\u00e9servation sur la plateforme et coordonn\u00e9es d\u2019un contact d\u2019urgence.<\/p>\n<h3>Que faire en cas d\u2019accident sans bless\u00e9s ?<\/h3>\n<p>S\u00e9curisez la zone, placez le triangle et les gilets, remplissez un constat amiable pr\u00e9cis, photographiez les dommages, pr\u00e9venez les assurances dans les 5 jours et informez la plateforme utilis\u00e9e.<\/p>\n<h3>Comment r\u00e9agir si vous vous sentez en danger pendant le trajet ?<\/h3>\n<p>Demandez poliment un arr\u00eat dans le prochain lieu s\u00fbr, contactez un proche pour partager votre position, quittez le v\u00e9hicule si n\u00e9cessaire et appelez les services de police si la situation le n\u00e9cessite.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>En bref : Conseils essentiels pour assurer votre s\u00e9curit\u00e9 lors d\u2019un covoiturage longue distance Le covoiturage longue distance est \u00e9conomique, convivial et souvent plus rapide qu\u2019on ne l\u2019imagine. Pour que le trajet reste agr\u00e9able, il faut toutefois appliquer quelques pr\u00e9cautions simples avant et pendant le voyage : choisir un conducteur fiable, v\u00e9rifier l\u2019\u00e9tat du v\u00e9hicule, &#8230; <a title=\"Conseils essentiels pour assurer votre s\u00e9curit\u00e9 lors d\u2019un covoiturage longue distance\" class=\"read-more\" href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/securite-covoiturage-longue-distance\/\" aria-label=\"En savoir plus sur Conseils essentiels pour assurer votre s\u00e9curit\u00e9 lors d\u2019un covoiturage longue distance\">Lire plus<\/a><\/p>\n","protected":false},"author":3,"featured_media":23565,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-23566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-transport"],"views":27,"_links":{"self":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/comments?post=23566"}],"version-history":[{"count":0,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23566\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media\/23565"}],"wp:attachment":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media?parent=23566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/categories?post=23566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/tags?post=23566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}