{"id":5595,"date":"2026-07-08T08:35:59","date_gmt":"2026-07-08T06:35:59","guid":{"rendered":"https:\/\/www.bras-de-fer.fr\/blog\/douleur-epaule-sport\/"},"modified":"2026-07-08T08:35:59","modified_gmt":"2026-07-08T06:35:59","slug":"douleur-epaule-sport","status":"publish","type":"post","link":"https:\/\/www.bras-de-fer.fr\/blog\/douleur-epaule-sport\/","title":{"rendered":"Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport : que faire pour soulager et pr\u00e9venir"},"content":{"rendered":"<ul class=\"wp-block-list\"><li><strong>Douleur \u00e9paule<\/strong> souvent li\u00e9e \u00e0 une tendinite ou un conflit sous-acromial.<\/li><li>Arr\u00eat ou modification de l\u2019activit\u00e9 si la douleur d\u00e9passe <strong>3\/10<\/strong> pendant l\u2019effort.<\/li><li>Programme court et quotidien : mobilit\u00e9, renforcement des rotateurs, contr\u00f4le scapulaire.<\/li><li>\u00c9chauffement de <strong>15 minutes<\/strong> et renforcement r\u00e9gulier pour la <strong>pr\u00e9vention blessure<\/strong>.<\/li><li>Consulter si la douleur persiste &gt; <strong>72 heures<\/strong> ou s\u2019il y a faiblesse progressive.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">\nL\u2019\u00e9paule est une articulation particuli\u00e8rement sollicit\u00e9e par les sports qui poussent le bras au-dessus de la t\u00eate. Apr\u00e8s l\u2019effort, une douleur qui persiste peut provenir d\u2019une inflammation des tendons, d\u2019un conflit sous-acromial, d\u2019une capsulite ou d\u2019un d\u00e9s\u00e9quilibre musculaire. Ce texte propose une approche pragmatique : reconna\u00eetre les signes, appliquer des gestes imm\u00e9diats pour <strong>soulager douleur<\/strong>, suivre un plan d\u2019exercices pr\u00e9cis (mobilisations, \u00e9tirements, renforcement des rotateurs et contr\u00f4le de l\u2019omoplate), et adapter la reprise sportive pour \u00e9viter la r\u00e9cidive. Des exemples chiffr\u00e9s sont fournis (dur\u00e9es, s\u00e9ries, fr\u00e9quences) pour que vous puissiez agir d\u00e8s aujourd\u2019hui. Les recommandations couvrent aussi les situations sportives sp\u00e9cifiques (natation, musculation) et les erreurs fr\u00e9quentes \u00e0 \u00e9viter. Enfin, quand l\u2019auto\u2011prise en charge atteint ses limites, des rep\u00e8res clairs indiquent quand consulter un kin\u00e9sith\u00e9rapeute ou un m\u00e9decin.\n<\/p>\n\n<h2 class=\"wp-block-heading\">Douleur \u00e9paule apr\u00e8s le sport : causes fr\u00e9quentes et sympt\u00f4mes \u00e0 reconna\u00eetre<\/h2>\n\n<p class=\"wp-block-paragraph\">\nL\u2019\u00e9paule combine mobilit\u00e9 et fragilit\u00e9. Parmi les causes r\u00e9currentes on retrouve : <strong>tendinites de la coiffe des rotateurs<\/strong> (environ 40% des cas), conflit sous-acromial, capsulite r\u00e9tractile, et l\u2019arthrose chez les sujets plus \u00e2g\u00e9s. Les traumatismes aigus (luxations, entorses) sont plus rares mais clairement identifiables.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nSignes \u00e9vocateurs : douleur \u00e0 l\u2019\u00e9l\u00e9vation ou en rotation, douleur nocturne, sensation de blocage, perte de force. Les facteurs favorisant la douleur incluent les mouvements r\u00e9p\u00e9titifs (natation, tennis), une posture ant\u00e9rioris\u00e9e prolong\u00e9e, le vieillissement des tissus et les traumatismes directs.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nSi la douleur est vive, qu\u2019elle augmente malgr\u00e9 le repos ou qu\u2019elle s\u2019accompagne d\u2019une faiblesse marqu\u00e9e, orientez-vous vers un professionnel de sant\u00e9. Pour des explications compl\u00e9mentaires sur les douleurs li\u00e9es \u00e0 la pratique sportive, consultez une synth\u00e8se technique comme celle d\u2019Initiv sur la <a href=\"https:\/\/www.initiv.com\/fr-fr\/comprendre-la-douleur\/douleur-epaule-sport\" rel=\"nofollow noopener\" target=\"_blank\">douleur \u00e0 l&rsquo;\u00e9paule et sport<\/a>.\n<\/p>\n\n<h2 class=\"wp-block-heading\">Comment soulager douleur et r\u00e9duire l\u2019inflammation \u00e9paule apr\u00e8s l\u2019effort<\/h2>\n\n<p class=\"wp-block-paragraph\">\nPremiers gestes (24\u201372 h) : r\u00e9duire les gestes douloureux, appliquer du froid sur les zones inflammatoires 10\u201315 minutes plusieurs fois par jour, et rester en mouvement doux pour maintenir la circulation. \u00c9vitez les anti-inflammatoires prolong\u00e9s sans avis m\u00e9dical, car ils peuvent retarder la r\u00e9paration tendineuse.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nModalit\u00e9s pratiques \u00e0 appliquer imm\u00e9diatement :\n<\/p>\n\n<ul class=\"wp-block-list\"><li>Repos sportif cibl\u00e9 : \u00e9vitez les gestes qui provoquent une douleur &gt; <strong>3\/10<\/strong>, mais maintenez une activit\u00e9 cardio indolore (marche, v\u00e9lo).<\/li><li>Application de froid en phase chaude\/inflammatoire : 10\u201315 min, 3 fois par jour.<\/li><li>\u00c9ducation gestuelle : corriger les postures et limiter les mouvements r\u00e9p\u00e9titifs responsables.<\/li><li>Sevrage tabagique et alimentation riche en om\u00e9ga\u20113 et collag\u00e8ne peuvent aider la gu\u00e9rison.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">\nPour un protocole d\u2019exercices et conseils pratiques \u00e0 domicile, des ressources comme <a href=\"https:\/\/kinetogo.com\/douleur-epaule-quoi-faire-exercices-maison\/\" rel=\"nofollow noopener\" target=\"_blank\">exercices maison pour l\u2019\u00e9paule<\/a> offrent des fiches d\u00e9taill\u00e9es.\n<\/p>\n\n<h2 class=\"wp-block-heading\">Programme d\u2019exercices \u00e9paule : mobilit\u00e9, renforcement et r\u00e9\u00e9ducation progressive<\/h2>\n\n<p class=\"wp-block-paragraph\">\nObjectif : r\u00e9cup\u00e9rer la mobilit\u00e9 puis renforcer la coiffe des rotateurs et le contr\u00f4le scapulaire pour pr\u00e9venir la r\u00e9cidive. Travail quotidien, progressif et respectueux de la r\u00e8gle de non-douleur.\n<\/p>\n\n<h3 class=\"wp-block-heading\">Phase 1 \u2014 R\u00e9cup\u00e9ration de la mobilit\u00e9 (Semaines 1\u20133)<\/h3>\n\n<p class=\"wp-block-paragraph\">\nExercices recommand\u00e9s : mobilisations pendulaires, mobilisations actives assist\u00e9es, \u00e9tirements l\u00e9gers. \u00c9vitez les \u00e9l\u00e9vations maximales si elles d\u00e9clenchent la douleur.\n<\/p>\n\n<ul class=\"wp-block-list\"><li>Mobilisation en pendule : 2\u20133 minutes, 3 fois par jour.<\/li><li>\u00c9tirement post\u00e9rieur (capsule) : maintien 30 s, 3 r\u00e9p\u00e9titions.<\/li><li>\u00c9chauffement g\u00e9n\u00e9ral 5 minutes avant toute s\u00e9ance.<\/li><\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 2 \u2014 Renforcement fonctionnel (Semaines 4\u20138)<\/h3>\n\n<p class=\"wp-block-paragraph\">\nIntroduire charges et r\u00e9sistance progressive : isom\u00e9trie puis excentrique\/concnetrique, travail des rotateurs externes avec \u00e9lastique, stabilisation de la scapula.\n<\/p>\n\n<ul class=\"wp-block-list\"><li>Rotateurs externes avec \u00e9lastique : 15 r\u00e9p\u00e9titions x 3 s\u00e9ries, 3 fois par semaine.<\/li><li>Renforcement isom\u00e9trique multi-directionnel : contraction 6 s \u00e0 ~70% d\u2019effort, 6\u20138 r\u00e9p\u00e9titions.<\/li><li>Travail scapulaire (r\u00e9tractions, \u00e9l\u00e9vations) : 3 s\u00e9ries de 10\u201315 r\u00e9p\u00e9titions.<\/li><\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 3 \u2014 Retour progressif au sport (Semaines 8\u201312)<\/h3>\n\n<p class=\"wp-block-paragraph\">\nR\u00e9introduire sp\u00e9cificit\u00e9 : gestes du sport \u00e0 intensit\u00e9 croissante, proprioception, et charges proches de l\u2019effort r\u00e9el. Exemple : nageurs progressent en privil\u00e9giant le dos crawl\u00e9 avant le crawl complet.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nInsight final de cette section : la constance (petites sessions quotidiennes) vaut mieux qu\u2019un surmenage hebdomadaire.\n<\/p>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!--\n  Calculateur : \"Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport : que faire pour soulager et pr\u00e9venir\"\n  - Bloc pr\u00eat \u00e0 copier\/coller dans une page existante.\n  - Hauteur maximale de l'outil prise en compte via style (max-height:2000px).\n  - Aucune API externe n\u00e9cessaire \/ utilis\u00e9e.\n  - Toutes les cha\u00eenes sont en fran\u00e7ais (\u00e9ditables dans la section `I18N`).\n-->\n\n<section id=\"calc-epaules\" class=\"max-w-3xl mx-auto p-4 bg-white rounded-lg shadow-sm text-gray-800\"\n         role=\"region\" aria-label=\"Calculateur de charge hebdomadaire pour l'\u00e9paule\"\n         style=\"max-height:2000px; overflow:auto;\">\n\n  <!-- En-t\u00eate -->\n  <header class=\"mb-3\">\n    <h2 class=\"text-2xl font-semibold mb-1\">Calculateur de charge hebdomadaire<\/h2>\n    <p class=\"text-sm text-gray-600\">\n      Calculez la dur\u00e9e hebdomadaire d&rsquo;exercices : saisissez votre temps quotidien (minutes)\n      pour mobilit\u00e9, renforcement et \u00e9tirements afin d&rsquo;obtenir la charge hebdo recommand\u00e9e en minutes.\n    <\/p>\n  <\/header>\n\n  <!-- Formulaire -->\n  <form id=\"shoulderCalcForm\" class=\"space-y-4\" onsubmit=\"return false;\" aria-describedby=\"calc-desc\">\n    <p id=\"calc-desc\" class=\"sr-only\">Saisie des minutes par s\u00e9ance et des jours\/semaine pour chaque type\n       d&rsquo;exercice afin de calculer le total hebdomadaire.<\/p>\n\n    <!-- Ligne type d'exo (r\u00e9utilisable visuellement) -->\n    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-3 items-center p-3 rounded border border-gray-100\">\n      <div>\n        <label for=\"mobilityMinutes\" class=\"block text-sm font-medium\">Mobilit\u00e9 (min \/ s\u00e9ance)<\/label>\n        <input id=\"mobilityMinutes\" name=\"mobilityMinutes\" type=\"number\" inputmode=\"numeric\"\n               min=\"0\" step=\"1\" value=\"10\"\n               class=\"mt-1 block w-full border rounded px-2 py-1\"\n               aria-describedby=\"mobilityHelp\">\n        <p id=\"mobilityHelp\" class=\"text-xs text-gray-500 mt-1\">Ex. 10<\/p>\n      <\/div>\n\n      <div class=\"sm:col-span-1\">\n        <label for=\"mobilityDays\" class=\"block text-sm font-medium\">Jours\/semaine<\/label>\n        <div class=\"flex items-center gap-2 mt-1\">\n          <input id=\"mobilityDays\" name=\"mobilityDays\" type=\"range\" min=\"0\" max=\"7\" step=\"1\"\n                 value=\"5\" class=\"w-full\" aria-labelledby=\"mobilityDaysLabel\">\n          <span id=\"mobilityDaysLabel\" class=\"w-12 text-right text-sm\">5j<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"sm:col-span-1 text-sm text-gray-600\">\n        <p class=\"font-medium\">But<\/p>\n        <p class=\"text-xs\">Am\u00e9liorer amplitude et circulation<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-3 items-center p-3 rounded border border-gray-100\">\n      <div>\n        <label for=\"strengthMinutes\" class=\"block text-sm font-medium\">Renforcement (min \/ s\u00e9ance)<\/label>\n        <input id=\"strengthMinutes\" name=\"strengthMinutes\" type=\"number\" inputmode=\"numeric\"\n               min=\"0\" step=\"1\" value=\"20\"\n               class=\"mt-1 block w-full border rounded px-2 py-1\"\n               aria-describedby=\"strengthHelp\">\n        <p id=\"strengthHelp\" class=\"text-xs text-gray-500 mt-1\">Ex. 20<\/p>\n      <\/div>\n\n      <div>\n        <label for=\"strengthDays\" class=\"block text-sm font-medium\">Jours\/semaine<\/label>\n        <div class=\"flex items-center gap-2 mt-1\">\n          <input id=\"strengthDays\" name=\"strengthDays\" type=\"range\" min=\"0\" max=\"7\" step=\"1\"\n                 value=\"3\" class=\"w-full\" aria-labelledby=\"strengthDaysLabel\">\n          <span id=\"strengthDaysLabel\" class=\"w-12 text-right text-sm\">3j<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"text-sm text-gray-600\">\n        <p class=\"font-medium\">But<\/p>\n        <p class=\"text-xs\">Renforcer la coiffe des rotateurs et stabilisateurs<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-3 items-center p-3 rounded border border-gray-100\">\n      <div>\n        <label for=\"stretchMinutes\" class=\"block text-sm font-medium\">\u00c9tirements (min \/ s\u00e9ance)<\/label>\n        <input id=\"stretchMinutes\" name=\"stretchMinutes\" type=\"number\" inputmode=\"numeric\"\n               min=\"0\" step=\"1\" value=\"8\"\n               class=\"mt-1 block w-full border rounded px-2 py-1\"\n               aria-describedby=\"stretchHelp\">\n        <p id=\"stretchHelp\" class=\"text-xs text-gray-500 mt-1\">Ex. 8<\/p>\n      <\/div>\n\n      <div>\n        <label for=\"stretchDays\" class=\"block text-sm font-medium\">Jours\/semaine<\/label>\n        <div class=\"flex items-center gap-2 mt-1\">\n          <input id=\"stretchDays\" name=\"stretchDays\" type=\"range\" min=\"0\" max=\"7\" step=\"1\"\n                 value=\"4\" class=\"w-full\" aria-labelledby=\"stretchDaysLabel\">\n          <span id=\"stretchDaysLabel\" class=\"w-12 text-right text-sm\">4j<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"text-sm text-gray-600\">\n        <p class=\"font-medium\">But<\/p>\n        <p class=\"text-xs\">D\u00e9tente et maintien de la souplesse<\/p>\n      <\/div>\n    <\/div>\n\n    <!-- Options et actions -->\n    <div class=\"flex flex-col sm:flex-row gap-3 items-center justify-between\">\n      <div class=\"flex gap-2 items-center\">\n        <button id=\"calculateBtn\" type=\"button\"\n                class=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n                aria-label=\"Calculer la charge hebdomadaire\">\n          Calculer\n        <\/button>\n        <button id=\"resetBtn\" type=\"button\"\n                class=\"px-3 py-2 bg-gray-100 border rounded hover:bg-gray-200 focus:outline-none\"\n                aria-label=\"R\u00e9initialiser les valeurs\">\n          R\u00e9initialiser\n        <\/button>\n      <\/div>\n\n      <div class=\"text-sm text-gray-500\">\n        <label for=\"targetRange\" class=\"sr-only\">Objectif hebdomadaire<\/label>\n        <p>Interpr\u00e9tation: <span class=\"font-medium\">Faible &lt;60min \u2014 Mod\u00e9r\u00e9 60\u2013150min \u2014 \u00c9lev\u00e9 &gt;150min<\/span><\/p>\n      <\/div>\n    <\/div>\n  <\/form>\n\n  <!-- R\u00e9sultats -->\n  <div id=\"results\" class=\"mt-4 p-3 rounded border border-gray-100 bg-gray-50\" aria-live=\"polite\">\n    <p class=\"text-sm text-gray-600 mb-2\">R\u00e9sultats hebdomadaires appara\u00eetront ici apr\u00e8s calcul.<\/p>\n    <div id=\"breakdown\" class=\"space-y-2\"><\/div>\n    <div id=\"totalSummary\" class=\"mt-2 font-semibold\"><\/div>\n    <div id=\"advice\" class=\"mt-2 text-sm text-yellow-700\"><\/div>\n  <\/div>\n\n<\/section>\n\n<script>\n\/*\n  Script JavaScript du calculateur\n  - Lisible et comment\u00e9.\n  - Aucune d\u00e9pendance lourde.\n  - Toutes les cha\u00eenes sont en fran\u00e7ais (modifiable via la section I18N ci-dessous).\n*\/\n\n\/* I18N : toutes les cha\u00eenes utilisateur ici pour faciliter la modification *\/\nconst I18N = {\n  unitMinutes: \"min\",\n  perWeek: \"\/semaine\",\n  labels: {\n    mobility: \"Mobilit\u00e9\",\n    strength: \"Renforcement\",\n    stretch: \"\u00c9tirements\",\n  },\n  results: {\n    noChange: \"Aucun exercice programm\u00e9 cette semaine.\",\n    total: \"Total hebdomadaire\",\n    suggestionLow: \"Charge faible \u2014 vous pourriez augmenter progressivement la fr\u00e9quence ou la dur\u00e9e si votre douleur le permet.\",\n    suggestionModerate: \"Charge mod\u00e9r\u00e9e \u2014 bon \u00e9quilibre entre mobilit\u00e9 et renforcement.\",\n    suggestionHigh: \"Charge \u00e9lev\u00e9e \u2014 veillez \u00e0 la r\u00e9cup\u00e9ration; surveillez toute douleur persistante.\",\n    consult: \"Si la douleur est importante ou persistante, consultez un professionnel de sant\u00e9.\",\n  }\n};\n\n\/*\n  R\u00e9cup\u00e9ration des \u00e9l\u00e9ments du DOM\n*\/\nconst mobilityMinutesEl = document.getElementById(\"mobilityMinutes\");\nconst mobilityDaysEl = document.getElementById(\"mobilityDays\");\nconst mobilityDaysLabel = document.getElementById(\"mobilityDaysLabel\");\n\nconst strengthMinutesEl = document.getElementById(\"strengthMinutes\");\nconst strengthDaysEl = document.getElementById(\"strengthDays\");\nconst strengthDaysLabel = document.getElementById(\"strengthDaysLabel\");\n\nconst stretchMinutesEl = document.getElementById(\"stretchMinutes\");\nconst stretchDaysEl = document.getElementById(\"stretchDays\");\nconst stretchDaysLabel = document.getElementById(\"stretchDaysLabel\");\n\nconst calculateBtn = document.getElementById(\"calculateBtn\");\nconst resetBtn = document.getElementById(\"resetBtn\");\n\nconst breakdownEl = document.getElementById(\"breakdown\");\nconst totalSummaryEl = document.getElementById(\"totalSummary\");\nconst adviceEl = document.getElementById(\"advice\");\n\n\/*\n  Utilitaires\n*\/\nfunction safeInt(value, fallback = 0) {\n  const n = parseInt(value, 10);\n  return Number.isFinite(n) ? n : fallback;\n}\n\n\/*\n  Mise \u00e0 jour des \u00e9tiquettes des sliders pour accessibilit\u00e9\/UX\n*\/\nfunction syncLabels() {\n  mobilityDaysLabel.textContent = `${mobilityDaysEl.value}j`;\n  strengthDaysLabel.textContent = `${strengthDaysEl.value}j`;\n  stretchDaysLabel.textContent = `${stretchDaysEl.value}j`;\n}\n\n\/*\n  Calcul principal :\n  - Pour chaque type : minutes_par_seance * jours_par_semaine\n  - Somme totale\n  - Interpr\u00e9tation simple (faible \/ mod\u00e9r\u00e9 \/ \u00e9lev\u00e9)\n*\/\nfunction calculateWeeklyLoad() {\n  \/\/ Lire et valider les entr\u00e9es\n  const mobilityMinutes = Math.max(0, safeInt(mobilityMinutesEl.value));\n  const mobilityDays = Math.min(7, Math.max(0, safeInt(mobilityDaysEl.value)));\n\n  const strengthMinutes = Math.max(0, safeInt(strengthMinutesEl.value));\n  const strengthDays = Math.min(7, Math.max(0, safeInt(strengthDaysEl.value)));\n\n  const stretchMinutes = Math.max(0, safeInt(stretchMinutesEl.value));\n  const stretchDays = Math.min(7, Math.max(0, safeInt(stretchDaysEl.value)));\n\n  \/\/ Calculs hebdomadaires\n  const weeklyMobility = mobilityMinutes * mobilityDays;\n  const weeklyStrength = strengthMinutes * strengthDays;\n  const weeklyStretch = stretchMinutes * stretchDays;\n\n  const totalWeekly = weeklyMobility + weeklyStrength + weeklyStretch;\n\n  \/\/ Afficher\n  breakdownEl.innerHTML = \"\"; \/\/ reset\n\n  function createLine(label, minutes, details) {\n    const line = document.createElement(\"div\");\n    line.className = \"flex items-baseline justify-between text-sm\";\n    const left = document.createElement(\"div\");\n    left.className = \"text-gray-700\";\n    left.textContent = label;\n    const right = document.createElement(\"div\");\n    right.className = \"font-medium text-gray-900\";\n    right.textContent = `${minutes} ${I18N.unitMinutes} ${I18N.perWeek}`;\n    line.appendChild(left);\n    line.appendChild(right);\n    if (details) {\n      const sub = document.createElement(\"div\");\n      sub.className = \"text-xs text-gray-500 mt-1\";\n      sub.textContent = details;\n      const container = document.createElement(\"div\");\n      container.appendChild(line);\n      container.appendChild(sub);\n      return container;\n    }\n    return line;\n  }\n\n  \/\/ Ajout des lignes\n  breakdownEl.appendChild(createLine(I18N.labels.mobility, weeklyMobility,\n    `${mobilityMinutes} ${I18N.unitMinutes} \u00d7 ${mobilityDays} j`));\n  breakdownEl.appendChild(createLine(I18N.labels.strength, weeklyStrength,\n    `${strengthMinutes} ${I18N.unitMinutes} \u00d7 ${strengthDays} j`));\n  breakdownEl.appendChild(createLine(I18N.labels.stretch, weeklyStretch,\n    `${stretchMinutes} ${I18N.unitMinutes} \u00d7 ${stretchDays} j`));\n\n  \/\/ Total et interpr\u00e9tation\n  totalSummaryEl.textContent = `${I18N.results.total} : ${totalWeekly} ${I18N.unitMinutes}`;\n\n  \/\/ Simple interpr\u00e9tation en trois paliers\n  let suggestion = \"\";\n  if (totalWeekly === 0) {\n    suggestion = I18N.results.noChange;\n  } else if (totalWeekly < 60) {\n    suggestion = I18N.results.suggestionLow;\n  } else if (totalWeekly <= 150) {\n    suggestion = I18N.results.suggestionModerate;\n  } else {\n    suggestion = I18N.results.suggestionHigh;\n  }\n\n  \/\/ Si douleur pr\u00e9sente, on rappelle la prudence (message non intrusif)\n  suggestion += \" \" + I18N.results.consult;\n\n  adviceEl.textContent = suggestion;\n\n  \/\/ Pour les lecteurs d'\u00e9cran : annonce condens\u00e9e (aria-live g\u00e9r\u00e9 sur le container)\n  \/\/ Aucun retour suppl\u00e9mentaire n\u00e9cessaire ici; le container \"results\" est aria-live.\n}\n\n\/*\n  R\u00e9initialiser aux valeurs par d\u00e9faut (telles qu'initialis\u00e9es dans le HTML)\n*\/\nfunction resetForm() {\n  \/\/ Remettre les valeurs par d\u00e9faut visibles dans le HTML initial.\n  mobilityMinutesEl.value = \"10\";\n  mobilityDaysEl.value = \"5\";\n\n  strengthMinutesEl.value = \"20\";\n  strengthDaysEl.value = \"3\";\n\n  stretchMinutesEl.value = \"8\";\n  stretchDaysEl.value = \"4\";\n\n  syncLabels();\n  breakdownEl.innerHTML = \"\";\n  totalSummaryEl.textContent = \"\";\n  adviceEl.textContent = \"R\u00e9sultats hebdomadaires appara\u00eetront ici apr\u00e8s calcul.\";\n}\n\n\/*\n  \u00c9couteurs d'\u00e9v\u00e9nements\n*\/\ncalculateBtn.addEventListener(\"click\", function () {\n  calculateWeeklyLoad();\n});\n\nresetBtn.addEventListener(\"click\", function () {\n  resetForm();\n});\n\n\/\/ Synchronisation des sliders avec leurs \u00e9tiquettes et recalcul possible en temps r\u00e9el\nmobilityDaysEl.addEventListener(\"input\", function () {\n  mobilityDaysLabel.textContent = `${this.value}j`;\n});\nstrengthDaysEl.addEventListener(\"input\", function () {\n  strengthDaysLabel.textContent = `${this.value}j`;\n});\nstretchDaysEl.addEventListener(\"input\", function () {\n  stretchDaysLabel.textContent = `${this.value}j`;\n});\n\n\/\/ Optionnel : recalculer automatiquement quand on modifie les minutes (moins intrusif que sur chaque touche)\nmobilityMinutesEl.addEventListener(\"change\", syncLabels);\nstrengthMinutesEl.addEventListener(\"change\", syncLabels);\nstretchMinutesEl.addEventListener(\"change\", syncLabels);\n\n\/\/ Initialisation\nsyncLabels();\n<\/script>\n\n<h2 class=\"wp-block-heading\">Tableau : exercices cl\u00e9s, objectif et fr\u00e9quence<\/h2>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Exercice<\/th>\n<th>Objectif<\/th>\n<th>S\u00e9ries \/ R\u00e9p\u00e9titions<\/th>\n<th>Fr\u00e9quence<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Pendule<\/td>\n<td>D\u00e9compression articulaire, mobilit\u00e9<\/td>\n<td>\u2014 \/ 2\u20133 min<\/td>\n<td>3x\/jour<\/td>\n<\/tr>\n<tr>\n<td>Rotation externe \u00e9lastique<\/td>\n<td>Renforcement coiffe des rotateurs<\/td>\n<td>3 x 15<\/td>\n<td>3x\/semaine<\/td>\n<\/tr>\n<tr>\n<td>\u00c9tirement grand pectoral<\/td>\n<td>Corriger posture ant\u00e9rieure<\/td>\n<td>2\u20133 x 45 s<\/td>\n<td>1\u20132x\/jour<\/td>\n<\/tr>\n<tr>\n<td>R\u00e9traction scapulaire<\/td>\n<td>Contr\u00f4le de l\u2019omoplate<\/td>\n<td>3 x 12\u201315<\/td>\n<td>3x\/semaine<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes \u00e0 \u00e9viter pour pr\u00e9venir la r\u00e9cidive<\/h2>\n\n<p class=\"wp-block-paragraph\">\nPlusieurs comportements prolongent la douleur : continuer les gestes douloureux sans modification, ignorer l\u2019\u00e9chauffement, n\u00e9gliger le renforcement des rotateurs et des muscles du dos.\n<\/p>\n\n<ul class=\"wp-block-list\"><li>Ne pas faire d\u2019\u00e9chauffement sp\u00e9cifique de <strong>15 minutes<\/strong> avant les activit\u00e9s overhead.<\/li><li>Travailler uniquement les pectoraux et oublier les muscles post\u00e9rieurs : d\u00e9s\u00e9quilibre fr\u00e9quent chez les nageurs et halt\u00e9rophiles.<\/li><li>Prendre des anti-inflammatoires en continue sans avis m\u00e9dical, surtout pour une tendinopathie chronique.<\/li><li>Reprendre trop vite le d\u00e9velopp\u00e9 couch\u00e9, les \u00e9l\u00e9vations lat\u00e9rales ou le tirage nuque en musculation apr\u00e8s une tendinite.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">\nPour des conseils techniques sur les mouvements s\u00fbrs en musculation, consultez des guides pratiques comme celui sur <a href=\"https:\/\/toutpourmasante.fr\/douleur-epaule-musculation\/\" rel=\"nofollow noopener\" target=\"_blank\">douleur \u00e0 l'\u00e9paule en musculation<\/a> et des articles sur l\u2019\u00e9chauffement sp\u00e9cifique <a href=\"https:\/\/www.bras-de-fer.fr\/blog\/echauffement-epaules-push\/\" rel=\"nofollow\">\u00e9chauffement \u00e9paules<\/a>.\n<\/p>\n\n<h2 class=\"wp-block-heading\">Conseils terrain et variantes selon le sport<\/h2>\n\n<p class=\"wp-block-paragraph\">\nAdapter la prise en charge selon l\u2019activit\u00e9 : en natation r\u00e9duire les nages aggravantes (crawl\/papillon) et favoriser le dos crawl\u00e9 ou la brasse si indolores. En musculation, \u00e9viter les charges et amplitudes qui provoquent la douleur et renforcer prioritairement les rotateurs externes et le dos.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nExemples concrets :\n<\/p>\n\n<ul class=\"wp-block-list\"><li>Natation : remplacer 3 s\u00e9ances de crawl par 2 s\u00e9ances de dos et 1 s\u00e9ance de renforcement sp\u00e9cifique pendant 4 semaines.<\/li><li>Musculation : couper le d\u00e9velopp\u00e9 couch\u00e9 pendant 4\u20136 semaines, faire 3 s\u00e9ances hebdo de renforcement scapulaire + rotateurs.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">\nPour des programmes adapt\u00e9s et progressifs selon votre sport, des ressources pratiques existent, par exemple des s\u00e9ries d\u2019exercices cibl\u00e9s chez <a href=\"https:\/\/physiowork.fr\/exercices-pour-soulager-les-douleur-de-lepaule\/\" rel=\"nofollow noopener\" target=\"_blank\">PhysioWork<\/a> ou des recommandations pour reprendre le sport apr\u00e8s une pause sur <a href=\"https:\/\/www.bras-de-fer.fr\/blog\/remettre-sport-pause\/\" rel=\"nofollow\">remettre le sport apr\u00e8s une pause<\/a>.\n<\/p>\n\n<h2 class=\"wp-block-heading\">R\u00e9capitulatif et plan d\u2019action imm\u00e9diat<\/h2>\n\n<p class=\"wp-block-paragraph\">\n1) Si douleur l\u00e9g\u00e8re : appliquez les gestes d\u2019auto\u2011soins (repos cibl\u00e9, froid, mobilit\u00e9 douce) et commencez le protocole mobilit\u00e9 + renforcement 10\u201320 minutes par jour.<br>\n2) Si douleur &gt; <strong>3\/10<\/strong> \u00e0 l\u2019effort ou persistante &gt; <strong>72 heures<\/strong> : ralentissez la pratique, \u00e9vitez les gestes aggravants et consultez un professionnel.<br>\n3) Travaillez la pr\u00e9vention : \u00e9chauffement de <strong>15 minutes<\/strong>, renforcement r\u00e9gulier des rotateurs externes et contr\u00f4le scapulaire.\n<\/p>\n\n<p class=\"wp-block-paragraph\">\nPour un plan structur\u00e9 et des fiches d\u2019exercices \u00e0 domicile, des articles pratiques d\u00e9taillent les meilleurs exercices de kin\u00e9sith\u00e9rapie pour l\u2019\u00e9paule, par exemple sur <a href=\"https:\/\/www.jeromeaugerkine.com\/actualites\/meilleurs-exercices-kinesitherapie-pour-soulager-douleurs-epaules\/\" rel=\"nofollow noopener\" target=\"_blank\">les exercices recommand\u00e9s par des kin\u00e9s<\/a>.\n<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Liste des signaux d\u2019alerte<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li>Douleur augmentant malgr\u00e9 le repos<\/li><li>Douleur nocturne qui emp\u00eache le sommeil<\/li><li>Perte de force progressive<\/li><li>Sensation de blocage ou instabilit\u00e9<\/li><\/ul>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Quand faut-il consulter un kinu00e9sithu00e9rapeute pour une douleur u00e0 lu2019u00e9paule ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Consultez si la douleur persiste plus de 72 heures, si elle limite fortement les mouvements, provoque une douleur nocturne importante ou su2019il y a une faiblesse progressive. La prise en charge pru00e9coce accu00e9lu00e8re souvent la ru00e9cupu00e9ration.\"}},{\"@type\":\"Question\",\"name\":\"Peut-on continuer le sport avec une tendinite de lu2019u00e9paule ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Oui, u00e0 condition du2019u00e9viter les gestes douloureux. Stoppez ou modifiez les activitu00e9s qui provoquent une douleur > 3\/10. Maintenez les activitu00e9s cardio indolores (marche, vu00e9lo) pour pru00e9server la circulation et la forme.\"}},{\"@type\":\"Question\",\"name\":\"Quels exercices prioritaires pour soulager une douleur du2019u00e9paule ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Commencez par les pendules, u00e9tirements de la capsule postu00e9rieure et u00e9tirement du grand pectoral. Introduisez ensuite les rotations externes avec u00e9lastique et le travail scapulaire. Privilu00e9giez la ru00e9gularitu00e9 : courtes sessions quotidiennes.\"}},{\"@type\":\"Question\",\"name\":\"Faut-il utiliser du chaud ou du froid ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"En phase inflammatoire et douleur aiguu00eb, privilu00e9giez le froid (10u201315 min). Le chaud peut u00eatre utile avant les exercices pour favoriser la souplesse des tissus. u00c9vitez de chauffer une zone tru00e8s inflammatoire.\"}}]}\n<\/script>\n<h3>Quand faut-il consulter un kin\u00e9sith\u00e9rapeute pour une douleur \u00e0 l\u2019\u00e9paule ?<\/h3>\n<p>Consultez si la douleur persiste plus de 72 heures, si elle limite fortement les mouvements, provoque une douleur nocturne importante ou s\u2019il y a une faiblesse progressive. La prise en charge pr\u00e9coce acc\u00e9l\u00e8re souvent la r\u00e9cup\u00e9ration.<\/p>\n<h3>Peut-on continuer le sport avec une tendinite de l\u2019\u00e9paule ?<\/h3>\n<p>Oui, \u00e0 condition d\u2019\u00e9viter les gestes douloureux. Stoppez ou modifiez les activit\u00e9s qui provoquent une douleur > 3\/10. Maintenez les activit\u00e9s cardio indolores (marche, v\u00e9lo) pour pr\u00e9server la circulation et la forme.<\/p>\n<h3>Quels exercices prioritaires pour soulager une douleur d\u2019\u00e9paule ?<\/h3>\n<p>Commencez par les pendules, \u00e9tirements de la capsule post\u00e9rieure et \u00e9tirement du grand pectoral. Introduisez ensuite les rotations externes avec \u00e9lastique et le travail scapulaire. Privil\u00e9giez la r\u00e9gularit\u00e9 : courtes sessions quotidiennes.<\/p>\n<h3>Faut-il utiliser du chaud ou du froid ?<\/h3>\n<p>En phase inflammatoire et douleur aigu\u00eb, privil\u00e9giez le froid (10\u201315 min). Le chaud peut \u00eatre utile avant les exercices pour favoriser la souplesse des tissus. \u00c9vitez de chauffer une zone tr\u00e8s inflammatoire.<\/p>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!--\nQuiz interactif : Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport\n- Pas d'API externe utilis\u00e9e (outil autonome).\n- Toutes les cha\u00eenes en fran\u00e7ais, facilement \u00e9ditables dans `TEXTES` ci-dessous.\n- Con\u00e7u pour \u00eatre copi\u00e9\/coll\u00e9 dans une page existante.\n- Hauteur maximale de l'outil fix\u00e9e via .quiz-container (max-height:1800px) pour respecter la contrainte.\n-->\n\n<style>\n  \/* Styles additionnels pour accessibilit\u00e9 et design (compl\u00e9ment Tailwind) *\/\n  .quiz-container { max-height: 1800px; }\n  .range-thumb {\n    accent-color: #0ea5a4; \/* teal-500 *\/\n  }\n  \/* Focus visible for keyboard users *\/\n  .focus-ring:focus { outline: 3px solid rgba(14,165,164,0.25); outline-offset: 2px; }\n  \/* Smooth reveal *\/\n  .fade-in { transition: all 220ms ease; opacity: 1; transform: translateY(0); }\n  .hidden-fade { opacity: 0; transform: translateY(6px); pointer-events: none; height: 0; }\n<\/style>\n\n<div id=\"quiz-epaule\" class=\"quiz-container mx-auto p-6 bg-white dark:bg-slate-800 rounded-xl shadow-lg max-w-3xl ring-1 ring-slate-200 dark:ring-0\">\n  <div class=\"flex items-start justify-between\">\n    <div>\n      <h2 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">Quizz : Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport<\/h2>\n      <p class=\"mt-1 text-slate-600 dark:text-slate-300\">R\u00e9pondez rapidement pour recevoir un conseil personnalis\u00e9.<\/p>\n    <\/div>\n    <div class=\"ml-4 text-sm text-slate-500 dark:text-slate-400 text-right\">\n      <div>Dur\u00e9e estim\u00e9e : <strong>1\u20132 minutes<\/strong><\/div>\n      <div class=\"mt-1 text-xs\">Accessible et sans donn\u00e9es externes<\/div>\n    <\/div>\n  <\/div>\n\n  <form id=\"quizForm\" class=\"mt-6 space-y-6\" novalidate>\n    <!-- Test rapide (fournie dans after_fragment) -->\n    <fieldset class=\"p-4 bg-slate-50 dark:bg-slate-700 rounded-md ring-1 ring-slate-100 dark:ring-slate-600\">\n      <legend class=\"font-medium text-slate-800 dark:text-slate-100\">Test rapide<\/legend>\n      <p class=\"mt-2 text-sm text-slate-600 dark:text-slate-300\">\n        Test rapide : \u00e9valuez votre douleur actuelle (0\u201310), indiquez la limitation de mouvement (faible\/mod\u00e9r\u00e9e\/forte) et vos activit\u00e9s sportives principales pour recevoir un conseil personnalis\u00e9.\n      <\/p>\n\n      <!-- Douleur (0-10) -->\n      <div class=\"mt-4\">\n        <label for=\"douleur\" class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Douleur actuelle (0 = aucune, 10 = insupportable)<\/label>\n        <div class=\"mt-2 flex items-center space-x-4\">\n          <input id=\"douleur\" name=\"douleur\" type=\"range\" min=\"0\" max=\"10\" value=\"3\" step=\"1\"\n            class=\"w-full range-thumb focus-ring\" aria-labelledby=\"douleurLabel\" \/>\n          <div id=\"douleurValue\" class=\"w-12 text-center text-sm font-semibold text-slate-700 dark:text-slate-100\">3<\/div>\n        <\/div>\n        <div class=\"mt-2 text-xs text-slate-500 dark:text-slate-300\">D\u00e9placez le curseur ou utilisez les fl\u00e8ches clavier<\/div>\n      <\/div>\n\n      <!-- Limitation de mouvement -->\n      <div class=\"mt-4\">\n        <label class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Limitation de mouvement<\/label>\n        <div class=\"mt-2 flex items-center space-x-3\" role=\"radiogroup\" aria-label=\"Limitation de mouvement\">\n          <label class=\"inline-flex items-center\">\n            <input type=\"radio\" name=\"limitation\" value=\"faible\" checked class=\"form-radio focus-ring\" \/>\n            <span class=\"ml-2 text-sm text-slate-700 dark:text-slate-100\">Faible<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center\">\n            <input type=\"radio\" name=\"limitation\" value=\"moderee\" class=\"form-radio focus-ring\" \/>\n            <span class=\"ml-2 text-sm text-slate-700 dark:text-slate-100\">Mod\u00e9r\u00e9e<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center\">\n            <input type=\"radio\" name=\"limitation\" value=\"forte\" class=\"form-radio focus-ring\" \/>\n            <span class=\"ml-2 text-sm text-slate-700 dark:text-slate-100\">Forte<\/span>\n          <\/label>\n        <\/div>\n      <\/div>\n\n      <!-- Activit\u00e9s sportives -->\n      <div class=\"mt-4\">\n        <label class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Activit\u00e9s sportives principales (cochez celles qui s'appliquent)<\/label>\n        <div class=\"mt-2 grid grid-cols-2 gap-2\">\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"natation\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">Natation<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"musculation\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">Musculation \/halt\u00e9rophilie<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"tennis\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">Tennis \/ sports de raquette<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"cyclisme\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">Cyclisme \/ triathlon<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"crossfit\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">CrossFit \/ entra\u00eenements intensifs<\/span>\n          <\/label>\n          <label class=\"inline-flex items-center space-x-2\">\n            <input type=\"checkbox\" name=\"activites\" value=\"autre\" class=\"form-checkbox focus-ring\" \/>\n            <span class=\"text-sm text-slate-700 dark:text-slate-100\">Autre (pr\u00e9cisez)<\/span>\n          <\/label>\n        <\/div>\n\n        <div id=\"autreContainer\" class=\"mt-2 hidden-fade\" aria-hidden=\"true\">\n          <label for=\"autreTexte\" class=\"sr-only\">Pr\u00e9ciser autre activit\u00e9<\/label>\n          <input id=\"autreTexte\" type=\"text\" name=\"autreTexte\" placeholder=\"Ex. escalade, halt\u00e9rophilie sp\u00e9cifique...\"\n            class=\"mt-1 block w-full rounded-md border-slate-200 dark:border-slate-600 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-100 p-2 focus-ring\" \/>\n        <\/div>\n      <\/div>\n    <\/fieldset>\n\n    <!-- Informations suppl\u00e9mentaires -->\n    <fieldset class=\"p-4 bg-slate-50 dark:bg-slate-700 rounded-md ring-1 ring-slate-100 dark:ring-slate-600\">\n      <legend class=\"font-medium text-slate-800 dark:text-slate-100\">Informations suppl\u00e9mentaires<\/legend>\n\n      <div class=\"mt-3 grid grid-cols-1 md:grid-cols-2 gap-3\">\n        <div>\n          <label for=\"duree\" class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Depuis combien de temps ?<\/label>\n          <select id=\"duree\" name=\"duree\" class=\"mt-1 block w-full rounded-md border-slate-200 dark:border-slate-600 bg-white dark:bg-slate-700 p-2 text-slate-800 dark:text-slate-100 focus-ring\">\n            <option value=\"moins_semaine\">Moins d'une semaine<\/option>\n            <option value=\"1-4_semaines\">1\u20134 semaines<\/option>\n            <option value=\"plus_mois\">Plus d'un mois<\/option>\n            <option value=\"chronique\">Chronique \/ r\u00e9cidive<\/option>\n          <\/select>\n        <\/div>\n\n        <div>\n          <label for=\"douleurType\" class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Type de douleur<\/label>\n          <select id=\"douleurType\" name=\"douleurType\" class=\"mt-1 block w-full rounded-md border-slate-200 dark:border-slate-600 bg-white dark:bg-slate-700 p-2 text-slate-800 dark:text-slate-100 focus-ring\">\n            <option value=\"aig\u00fce\">Aig\u00fce (brutale)<\/option>\n            <option value=\"sourde\">Sourde \/ douloureuse \u00e0 l'effort<\/option>\n            <option value=\"brulure\">Br\u00fblure \/ fourmillements<\/option>\n            <option value=\"claquement\">Craquement \/ blocage<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"mt-4\">\n        <label for=\"commentaire\" class=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">Commentaire (facultatif)<\/label>\n        <textarea id=\"commentaire\" name=\"commentaire\" rows=\"2\" class=\"mt-1 w-full rounded-md border-slate-200 dark:border-slate-600 bg-white dark:bg-slate-700 p-2 text-slate-800 dark:text-slate-100 focus-ring\" placeholder=\"Pr\u00e9cisez si la douleur survient \u00e0 la nuit, \u00e0 la lev\u00e9e du bras, etc.\"><\/textarea>\n      <\/div>\n    <\/fieldset>\n\n    <div class=\"flex items-center justify-between\">\n      <div class=\"text-sm text-slate-600 dark:text-slate-300\">Les conseils fournis ne remplacent pas un avis m\u00e9dical.<\/div>\n      <div class=\"flex items-center space-x-3\">\n        <button type=\"button\" id=\"btnReset\" class=\"px-3 py-2 bg-slate-100 dark:bg-slate-600 text-slate-800 dark:text-slate-100 rounded-md hover:bg-slate-200 focus-ring\">R\u00e9initialiser<\/button>\n        <button type=\"submit\" id=\"btnSubmit\" class=\"px-4 py-2 bg-teal-500 text-white rounded-md hover:bg-teal-600 focus-ring\">Obtenir mon conseil<\/button>\n      <\/div>\n    <\/div>\n  <\/form>\n\n  <div id=\"resultCard\" class=\"mt-6 p-4 bg-gradient-to-r from-white to-slate-50 dark:from-slate-800 dark:to-slate-700 rounded-md ring-1 ring-slate-100 dark:ring-slate-600 hidden-fade\" aria-live=\"polite\">\n    <!-- R\u00e9sultat inject\u00e9 par JS -->\n  <\/div>\n\n  <div id=\"resultActions\" class=\"mt-4 flex items-center justify-end space-x-2 hidden\">\n    <button id=\"copyBtn\" class=\"px-3 py-2 text-sm rounded-md bg-slate-100 dark:bg-slate-600 focus-ring\">Copier le conseil<\/button>\n    <button id=\"printBtn\" class=\"px-3 py-2 text-sm rounded-md bg-slate-100 dark:bg-slate-600 focus-ring\">Imprimer<\/button>\n  <\/div>\n<\/div>\n\n<script>\n\/*\n  Logiciel du Quizz - JavaScript\n  - Con\u00e7u lisible et comment\u00e9\n  - Aucune d\u00e9pendance externe (API)\n  - Toutes les cha\u00eenes en fran\u00e7ais (modifiable dans l'objet TEXTES)\n*\/\n\n(() => {\n  \/\/ Textes \u00e9ditables (internationalisation facile)\n  const TEXTES = {\n    urgentTitre: \"Conseil : consultez un professionnel\",\n    urgentMessage:\n      \"Votre douleur est \u00e9lev\u00e9e ou la limitation de mouvement est importante. Consultez rapidement un m\u00e9decin ou un kin\u00e9sith\u00e9rapeute. En attendant, \u00e9vitez les mouvements douloureux, appliquez du froid 10\u201315 min si gonflement r\u00e9cent, et immobilisez l\u00e9g\u00e8rement l'\u00e9paule.\",\n    modererTitre: \"Conseil : repos et r\u00e9\u00e9valuation\",\n    modererMessage:\n      \"Douleur mod\u00e9r\u00e9e. Reposez l'\u00e9paule, \u00e9vitez les gestes provoquants, glace localis\u00e9e 10\u201315 min plusieurs fois par jour si n\u00e9cessaire, puis exercices doux d'amplitude. Consultez si douleur persistante > 2 semaines ou limitation qui s'aggrave.\",\n    legerTitre: \"Conseil : auto-prise en charge\",\n    legerMessage:\n      \"Douleur faible. Reprenez progressivement l'activit\u00e9 en \u00e9vitant les mouvements douloureux, renforcez la coiffe des rotateurs et travaillez la mobilit\u00e9. Si douleur nocturne ou limitation, consultez.\",\n    preventionTitre: \"Pr\u00e9vention recommand\u00e9e\",\n    preventionMessage:\n      \"\u00c9chauffement cibl\u00e9, renforcement \u00e9quilibr\u00e9 (rotateurs internes\/externes), \u00e9tirements contr\u00f4l\u00e9s, et progression de charge : \u00e9vitez les r\u00e9p\u00e9titions intenses sans r\u00e9cup\u00e9ration. Pensez \u00e0 la technique (posture\/biom\u00e9canique).\",\n    redFlagsTitre: \"Signes d'alerte\",\n    redFlagsList: [\n      \"Douleur tr\u00e8s intense (8\u201310)\",\n      \"Perte soudaine importante de mobilit\u00e9\",\n      \"Engourdissement\/paresth\u00e9sies majeures\",\n      \"Fi\u00e8vre, rougeur, gonflement marqu\u00e9\",\n      \"Traumatisme violent r\u00e9cent (chute, choc)\"\n    ],\n    copySuccess: \"Conseil copi\u00e9 dans le presse-papiers.\",\n    copyFail: \"Impossible de copier automatiquement. S\u00e9lectionnez et copiez manuellement.\"\n  };\n\n  \/\/ R\u00e9cup\u00e9ration d'\u00e9l\u00e9ments\n  const douleurInput = document.getElementById('douleur');\n  const douleurValue = document.getElementById('douleurValue');\n  const activiteCheckboxes = Array.from(document.querySelectorAll('input[name=\"activites\"]'));\n  const autreChk = activiteCheckboxes.find(c => c.value === 'autre');\n  const autreContainer = document.getElementById('autreContainer');\n  const autreTexte = document.getElementById('autreTexte');\n  const form = document.getElementById('quizForm');\n  const resultCard = document.getElementById('resultCard');\n  const resultActions = document.getElementById('resultActions');\n  const copyBtn = document.getElementById('copyBtn');\n  const printBtn = document.getElementById('printBtn');\n  const btnReset = document.getElementById('btnReset');\n\n  \/\/ Mettre \u00e0 jour l'affichage de la douleur en temps r\u00e9el\n  douleurInput.addEventListener('input', (e) => {\n    douleurValue.textContent = e.target.value;\n    \/\/ Change color subtly selon l'intensit\u00e9\n    const v = parseInt(e.target.value, 10);\n    if (v >= 8) {\n      douleurValue.className = \"w-12 text-center text-sm font-semibold text-red-600\";\n    } else if (v >= 4) {\n      douleurValue.className = \"w-12 text-center text-sm font-semibold text-amber-600\";\n    } else {\n      douleurValue.className = \"w-12 text-center text-sm font-semibold text-teal-600\";\n    }\n  });\n\n  \/\/ Affichage du champ \"autre\" si coch\u00e9\n  autreChk.addEventListener('change', (e) => {\n    if (e.target.checked) {\n      autreContainer.classList.remove('hidden-fade');\n      autreContainer.setAttribute('aria-hidden', 'false');\n      autreContainer.classList.add('fade-in');\n      autreTexte.focus();\n    } else {\n      autreContainer.classList.add('hidden-fade');\n      autreContainer.setAttribute('aria-hidden', 'true');\n      autreContainer.classList.remove('fade-in');\n      autreTexte.value = '';\n    }\n  });\n\n  \/\/ R\u00e9initialiser le formulaire\n  btnReset.addEventListener('click', () => {\n    form.reset();\n    douleurValue.textContent = douleurInput.value = 3;\n    douleurValue.className = \"w-12 text-center text-sm font-semibold text-slate-700 dark:text-slate-100\";\n    autreContainer.classList.add('hidden-fade');\n    autreContainer.setAttribute('aria-hidden', 'true');\n    resultCard.classList.add('hidden-fade');\n    resultCard.innerHTML = '';\n    resultActions.classList.add('hidden');\n  });\n\n  \/\/ Fonction pour construire le conseil personnalis\u00e9\n  function construireConseil(data) {\n    \/\/ data: {douleur:int, limitation:string, activites:[], duree, douleurType, commentaire, autreTexte}\n    const score = data.douleur;\n    const limitation = data.limitation;\n    let gravite = 'leger';\n    \/\/ D\u00e9finition simple de la gravit\u00e9 en combinant douleur et limitation\n    if (score >= 8 || limitation === 'forte') gravite = 'urgent';\n    else if (score >= 4 || limitation === 'moderee' || data.duree === '1-4_semaines') gravite = 'modere';\n    else gravite = 'leger';\n\n    \/\/ Construire message principal selon gravit\u00e9\n    let titre, message;\n    if (gravite === 'urgent') {\n      titre = TEXTES.urgentTitre;\n      message = TEXTES.urgentMessage;\n    } else if (gravite === 'modere') {\n      titre = TEXTES.modererTitre;\n      message = TEXTES.modererMessage;\n    } else {\n      titre = TEXTES.legerTitre;\n      message = TEXTES.legerMessage;\n    }\n\n    \/\/ Ajustements selon activit\u00e9s (ajouts de recommandations)\n    const activiteStr = data.activites.length ? data.activites.join(', ') : 'Aucune renseign\u00e9e';\n    let activiteConseil = '';\n    if (data.activites.includes('natation')) {\n      activiteConseil += \" Pour la natation : v\u00e9rifiez la technique du bras, \u00e9vitez les s\u00e9ries intenses si douleur, et privil\u00e9giez le crawl lent \/ \u00e9ducatifs techniques.\";\n    }\n    if (data.activites.includes('musculation')) {\n      activiteConseil += \" En musculation : r\u00e9duisez la charge, travaillez la mobilit\u00e9 et renforcez la coiffe des rotateurs avec poids l\u00e9gers.\";\n    }\n    if (data.activites.includes('tennis')) {\n      activiteConseil += \" Pour les sports de raquette : limitez les gestes en overhead et travaillez l'\u00e9quilibre musculaire \u00e9paule\/\u00e9chine.\";\n    }\n    if (data.activites.includes('crossfit') || data.activites.includes('cyclisme')) {\n      activiteConseil += \" \u00c9vitez les mouvements r\u00e9p\u00e9titifs \u00e0 haute intensit\u00e9 ; focalisez-vous sur la technique et la r\u00e9cup\u00e9ration.\";\n    }\n    if (data.activites.includes('autre') && data.autreTexte) {\n      activiteConseil += ` Activit\u00e9 mentionn\u00e9e : ${data.autreTexte}. Adaptez l'intensit\u00e9 et consultez un professionnel si la douleur persiste.`;\n    }\n\n    \/\/ Signes d'alerte (red flags) \u00e0 afficher si urgent ou sympt\u00f4mes particuliers\n    const redFlags = [];\n    if (score >= 8) redFlags.push(TEXTES.redFlagsList[0]);\n    if (limitation === 'forte') redFlags.push(TEXTES.redFlagsList[1]);\n    if (\/fourmil|engourdi|paresth\/i.test(data.commentaire || '')) redFlags.push(TEXTES.redFlagsList[2]);\n    if (\/fi\u00e8vre|rougeur|gonflement\/i.test(data.commentaire || '')) redFlags.push(TEXTES.redFlagsList[3]);\n\n    \/\/ Conseils de pr\u00e9vention g\u00e9n\u00e9raux\n    const prevention = TEXTES.preventionMessage;\n\n    \/\/ Cr\u00e9ation du HTML du r\u00e9sultat (texte en fran\u00e7ais)\n    const html = `\n      <h3 class=\"text-lg font-semibold text-slate-800 dark:text-slate-100\">${titre}<\/h3>\n      <p class=\"mt-2 text-sm text-slate-700 dark:text-slate-200\">${message}<\/p>\n\n      <div class=\"mt-3 text-sm text-slate-700 dark:text-slate-200\">\n        <strong>R\u00e9sum\u00e9 de vos r\u00e9ponses :<\/strong>\n        <ul class=\"list-disc list-inside mt-2 text-sm\">\n          <li>Douleur : <strong>${score}\/10<\/strong><\/li>\n          <li>Limitation : <strong>${limitation}<\/strong><\/li>\n          <li>Activit\u00e9s : <strong>${activiteStr}<\/strong><\/li>\n          <li>Dur\u00e9e : <strong>${data.duree.replace('_', ' ')}<\/strong><\/li>\n          <li>Type de douleur : <strong>${data.douleurType}<\/strong><\/li>\n        <\/ul>\n      <\/div>\n\n      ${activiteConseil ? `<div class=\"mt-3 text-sm text-slate-700 dark:text-slate-200\"><strong>Conseils sp\u00e9cifiques :<\/strong><p class=\"mt-2\">${activiteConseil.trim()}<\/p><\/div>` : ''}\n\n      <div class=\"mt-3 text-sm text-slate-700 dark:text-slate-200\">\n        <strong>${TEXTES.preventionTitre}<\/strong>\n        <p class=\"mt-2\">${prevention}<\/p>\n      <\/div>\n\n      ${redFlags.length ? `<div class=\"mt-3 text-sm text-amber-700 dark:text-amber-400\"><strong>${TEXTES.redFlagsTitre}<\/strong><ul class=\"list-disc list-inside mt-2\">${redFlags.map(r => `<li>${r}<\/li>`).join('')}<\/ul><\/div>` : '' }\n\n      ${data.commentaire ? `<div class=\"mt-3 text-sm text-slate-600 dark:text-slate-300\"><strong>Votre commentaire :<\/strong><p class=\"mt-1\">${escapeHtml(data.commentaire)}<\/p><\/div>` : ''}\n    `;\n\n    return { html, titre, message, gravite };\n  }\n\n  \/\/ Utilitaire : \u00e9chappe HTML simple pour \u00e9viter injection via textarea\n  function escapeHtml(str) {\n    return String(str)\n      .replace(\/&\/g, '&amp;')\n      .replace(\/<\/g, '&lt;')\n      .replace(\/>\/g, '&gt;');\n  }\n\n  \/\/ Gestion de la soumission du formulaire\n  form.addEventListener('submit', (e) => {\n    e.preventDefault();\n\n    \/\/ Collecte des donn\u00e9es\n    const formData = new FormData(form);\n    const activites = formData.getAll('activites');\n    const data = {\n      douleur: parseInt(formData.get('douleur') || 0, 10),\n      limitation: formData.get('limitation') || 'faible',\n      activites,\n      duree: formData.get('duree'),\n      douleurType: formData.get('douleurType'),\n      commentaire: formData.get('commentaire') || '',\n      autreTexte: formData.get('autreTexte') || ''\n    };\n\n    \/\/ Construire le conseil personnalis\u00e9\n    const conseil = construireConseil(data);\n\n    \/\/ Affichage accessible du r\u00e9sultat\n    resultCard.innerHTML = conseil.html;\n    resultCard.classList.remove('hidden-fade');\n    resultCard.classList.add('fade-in');\n    resultActions.classList.remove('hidden');\n    \/\/ Focus sur la carte de r\u00e9sultat pour acc\u00e8s clavier\/lecteur d'\u00e9cran\n    resultCard.setAttribute('tabindex', '-1');\n    resultCard.focus();\n\n    \/\/ Scroll l\u00e9ger pour s'assurer que le r\u00e9sultat est visible (sans d\u00e9pendance)\n    resultCard.scrollIntoView({ behavior: 'smooth', block: 'center' });\n  });\n\n  \/\/ Copier le texte du conseil\n  copyBtn.addEventListener('click', async () => {\n    try {\n      const text = resultCard.innerText || '';\n      await navigator.clipboard.writeText(text);\n      alert(TEXTES.copySuccess);\n    } catch (err) {\n      \/\/ Si impossible, proposer s\u00e9lection manuelle\n      alert(TEXTES.copyFail);\n    }\n  });\n\n  \/\/ Imprimer le r\u00e9sultat (ouvre la bo\u00eete d'impression du navigateur, n'imprime que la div)\n  printBtn.addEventListener('click', () => {\n    const printWindow = window.open('', '_blank');\n    const styles = Array.from(document.querySelectorAll('style, link[rel=\"stylesheet\"]')).map(s => s.outerHTML).join('n');\n    printWindow.document.write(`\n      <html><head><title>Conseil - Douleur \u00e0 l'\u00e9paule<\/title>${styles}<\/head>\n      <body style=\"font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; padding:20px;\">\n        ${resultCard.innerHTML}\n      <\/body><\/html>`);\n    printWindow.document.close();\n    printWindow.focus();\n    setTimeout(() => { printWindow.print(); }, 300);\n  });\n\n  \/\/ Accessibilit\u00e9 : laisser la navigation clavier claire\n  \/\/ (Les \u00e9l\u00e9ments ont d\u00e9j\u00e0 des .focus-ring et les inputs sont natifs)\n\n  \/\/ Initialisation : d\u00e9finir valeur affich\u00e9e initiale\n  douleurValue.textContent = douleurInput.value;\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>L\u2019\u00e9paule est une articulation particuli\u00e8rement sollicit\u00e9e par les sports qui poussent le bras au-dessus de la t\u00eate. Apr\u00e8s l\u2019effort, une douleur qui persiste peut provenir d\u2019une inflammation des tendons, d\u2019un conflit sous-acromial, d\u2019une capsulite ou d\u2019un d\u00e9s\u00e9quilibre musculaire. Ce texte propose une approche pragmatique : reconna\u00eetre les signes, appliquer des gestes imm\u00e9diats pour soulager douleur, &#8230; <a title=\"Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport : que faire pour soulager et pr\u00e9venir\" class=\"read-more\" href=\"https:\/\/www.bras-de-fer.fr\/blog\/douleur-epaule-sport\/\" aria-label=\"En savoir plus sur Douleur \u00e0 l\u2019\u00e9paule apr\u00e8s le sport : que faire pour soulager et pr\u00e9venir\">Lire plus<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6056],"tags":[],"class_list":["post-5595","post","type-post","status-publish","format-standard","hentry","category-health-and-wellness-en-fr"],"views":3,"_links":{"self":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts\/5595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/comments?post=5595"}],"version-history":[{"count":0,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts\/5595\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/media?parent=5595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/categories?post=5595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/tags?post=5595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}