{"id":26846,"date":"2026-02-24T18:17:08","date_gmt":"2026-02-24T18:17:08","guid":{"rendered":"https:\/\/sosgenougeneve.ch\/?page_id=26846"},"modified":"2026-07-02T07:46:21","modified_gmt":"2026-07-02T07:46:21","slug":"diagnostic-douleur-symptomes-genou","status":"publish","type":"page","link":"https:\/\/sosgenougeneve.ch\/en\/diagnostic-douleur-symptomes-genou\/","title":{"rendered":"KNEE DIAGNOSIS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"26846\" class=\"elementor elementor-26846\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d463ae elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"1d463ae\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b90d099 elementor-widget elementor-widget-video\" data-id=\"b90d099\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_parent&quot;:&quot;yes&quot;,&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/sosgenougeneve.ch\/wp-content\/uploads\/2026\/06\/Genou-video-SOS-genou.mp4\" preload=\"metadata\" muted=\"muted\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e21f1e elementor-widget elementor-widget-html\" data-id=\"4e21f1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script data-minify=\"1\" src=\"https:\/\/nicolaipalmkvist.com\/wp-content\/cache\/min\/1\/ajax\/libs\/jquery\/3.7.1\/jquery.js?ver=1773388712\"><\/script>\n<script data-minify=\"1\" src=\"https:\/\/nicolaipalmkvist.com\/wp-content\/cache\/min\/1\/ajax\/libs\/gsap\/3.4.0\/gsap.min.js?ver=1773388712\"><\/script>\n<script data-minify=\"1\" src=\"https:\/\/nicolaipalmkvist.com\/wp-content\/cache\/min\/1\/ajax\/libs\/gsap\/3.3.3\/ScrollTrigger.min.js?ver=1773388712\"><\/script>\n\n<script>\n$( document ).ready(function() {\n    console.clear();\n    $('video').addClass('video-background');\n\n\n\nconst video = document.querySelector(\".video-background\");\nlet src = video.currentSrc || video.src;\nconsole.log(video, src);\n\n\/* Make sure the video is 'activated' on iOS *\/\nfunction once(el, event, fn, opts) {\n  var onceFn = function (e) {\n    el.removeEventListener(event, onceFn);\n    fn.apply(this, arguments);\n  };\n  el.addEventListener(event, onceFn, opts);\n  return onceFn;\n}\n\nonce(document.documentElement, \"touchstart\", function (e) {\n  video.play();\n  video.pause();\n});\n\ngsap.registerPlugin(ScrollTrigger);\n\nlet tl = gsap.timeline({\n  defaults: { duration: 1 },\n  scrollTrigger: {\n    trigger: \"#container\",\n    start: \"top top\",\n    end: \"bottom bottom\",\n    scrub: true\n  }\n});\n\nonce(video, \"loadedmetadata\", () => {\n  tl.fromTo(\n    video,\n    {\n      currentTime: 0\n    },\n    {\n      currentTime: video.duration || 1\n    }\n  );\n});\n\n\/*!\n     * \u00a9 This code was written by Nicolai Palmkvist.\n     * For more information, visit my Elementor Youtube channel: https:\/\/www.youtube.com\/@nicopalmkvist\n     *\/\n\nsetTimeout(function () {\n  if (window[\"fetch\"]) {\n    fetch(src)\n      .then((response) => response.blob())\n      .then((response) => {\n        var blobURL = URL.createObjectURL(response);\n\n        var t = video.currentTime;\n        once(document.documentElement, \"touchstart\", function (e) {\n          video.play();\n          video.pause();\n        });\n\n        video.setAttribute(\"src\", blobURL);\n        video.currentTime = t + 0.01;\n      });\n  }\n}, 1000);\n});\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ae0e9df e-grid e-con-full e-con e-parent\" data-id=\"ae0e9df\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/sosgenougeneve.ch\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Genou-video-SOS-genou.mp4&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;}\">\n\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t<\/div>\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4cdfafa elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"4cdfafa\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-01d651e\" data-id=\"01d651e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9d643e4 elementor-widget elementor-widget-heading\" data-id=\"9d643e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Douleurs au genou <br> 15 questions pour orienter  votre diagnostic<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e532922 elementor-widget elementor-widget-heading\" data-id=\"e532922\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Identifiez votre profil symptomatique en r\u00e9pondant aux questions suivantes :\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-97e8969 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"97e8969\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-29b137d1 e-flex e-con-boxed e-con e-parent\" data-id=\"29b137d1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7cd791d elementor-widget elementor-widget-html\" data-id=\"7cd791d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\n     PARTIE 1 \u2014 STYLES CSS\n     ============================================================ -->\n<style>\n#dg-app *, #dg-app *::before, #dg-app *::after { box-sizing: border-box; margin: 0; padding: 0; }\n#dg-app { background:transparent; padding:48px 40px; font-family:'Arboria',Arial,sans-serif; max-width:780px; margin:0 auto; }\n#dg-app .dg-prog-meta { display:flex; justify-content:space-between; font-size:0.65rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:#b0a898; margin-bottom:10px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-prog-wrap { height:5px; background:#e0d8cc; border-radius:3px; margin-bottom:44px; }\n#dg-app .dg-prog-fill { height:100%; background:#8b1c16; border-radius:3px; transition:width 0.4s ease; }\n#dg-app .dg-qtext { font-size:1.3rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#8b1c16; margin-bottom:28px; line-height:1.5; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-qhint { font-size:0.75rem; color:#b0a898; font-style:italic; margin-top:-18px; margin-bottom:20px; text-transform:none; letter-spacing:0; font-weight:400; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-options { display:flex; flex-direction:column; gap:10px; }\n#dg-app .dg-opt { display:flex; align-items:center; gap:16px; padding:17px 22px; border:1px solid #d8d0c4; border-radius:10px; background:transparent; cursor:pointer; position:relative; overflow:hidden; transition:border-color 0.2s, box-shadow 0.2s, transform 0.2s ease; }\n#dg-app .dg-opt::after { content:''; position:absolute; top:0; left:0; right:0; height:2px; background:linear-gradient(90deg, #8b1c16, #b03020); border-radius:10px 10px 0 0; opacity:0; transform:scaleX(0.4); transition:opacity 0.25s, transform 0.3s ease; }\n#dg-app .dg-opt:hover { border-color:#8b1c16; box-shadow:0 4px 16px rgba(139,28,22,0.1); transform:translateY(-2px); }\n#dg-app .dg-opt:hover::after { opacity:1; transform:scaleX(1); }\n#dg-app .dg-opt.selected { border-color:#8b1c16; box-shadow:0 2px 12px rgba(139,28,22,0.1); }\n#dg-app .dg-opt.selected::after { opacity:1; transform:scaleX(1); }\n#dg-app .dg-radio { width:18px; height:18px; border-radius:50%; border:1.5px solid #ccc; flex-shrink:0; display:flex; align-items:center; justify-content:center; }\n#dg-app .dg-opt.selected .dg-radio { border-color:#8b1c16; }\n#dg-app .dg-radio-dot { width:9px; height:9px; border-radius:50%; background:#8b1c16; display:none; }\n#dg-app .dg-opt.selected .dg-radio-dot { display:block; }\n#dg-app .dg-opt-t { font-size:0.88rem; color:#2a2a2a; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-opt.selected .dg-opt-t { font-weight:700; }\n#dg-app .dg-nav-sep { border:none; border-top:1px solid #e0d8cc; margin:44px 0 0; }\n#dg-app .dg-nav { display:flex; justify-content:space-between; align-items:center; padding:16px 0; }\n#dg-app .dg-btn-prev { transition:color 0.2s; }\n#dg-app .dg-btn-prev:hover { color:#8b1c16 !important; cursor:pointer; }\n#dg-app .dg-btn-prev:hover .dg-cb { border-color:#8b1c16 !important; }\n#dg-app .dg-btn-prev:hover svg { stroke:#8b1c16 !important; }\n#dg-app .dg-nav-last { display:none; }\n#dg-app #dg-render { position:relative; overflow:hidden; }\n@keyframes dgSlideInRight  { from{opacity:0;transform:translateX(90px) scale(0.97)}  to{opacity:1;transform:translateX(0) scale(1)} }\n@keyframes dgSlideInLeft   { from{opacity:0;transform:translateX(-90px) scale(0.97)} to{opacity:1;transform:translateX(0) scale(1)} }\n@keyframes dgSlideOutLeft  { from{opacity:1;transform:translateX(0) scale(1)}  to{opacity:0;transform:translateX(-90px) scale(0.97)} }\n@keyframes dgSlideOutRight { from{opacity:1;transform:translateX(0) scale(1)}  to{opacity:0;transform:translateX(90px) scale(0.97)} }\n#dg-app .dg-q-wrap { animation-duration:0.42s; animation-timing-function:cubic-bezier(0.16,1,0.3,1); animation-fill-mode:both; }\n#dg-app .dg-q-wrap.enter-next  { animation-name:dgSlideInRight; }\n#dg-app .dg-q-wrap.enter-prev  { animation-name:dgSlideInLeft; }\n#dg-app .dg-q-wrap.exit-next   { animation-name:dgSlideOutLeft;  position:absolute;top:0;left:0;right:0; pointer-events:none; }\n#dg-app .dg-q-wrap.exit-prev   { animation-name:dgSlideOutRight; position:absolute;top:0;left:0;right:0; pointer-events:none; }\n#dg-app .dg-res { animation:dgUp 0.35s ease both; }\n@keyframes dgUp { from{opacity:0;transform:translateY(10px)} to{opacity:1;transform:translateY(0)} }\n#dg-app .dg-res-title { font-size:1.3rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#8b1c16; margin-bottom:28px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-diag { display:flex; align-items:center; gap:24px; padding:20px 0; border-bottom:1px solid #e0d8cc; }\n#dg-app .dg-diag:first-of-type { border-top:1px solid #e0d8cc; }\n#dg-app .dg-d-num { font-size:1.8rem; font-weight:700; min-width:32px; color:#e0d8cc; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-diag.r1 .dg-d-num { color:#8b1c16; }\n#dg-app .dg-d-body { flex:1; min-width:0; }\n#dg-app .dg-d-name { font-size:0.95rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#1a1a1a; margin-bottom:5px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-d-desc { font-size:0.75rem; color:#aaa; line-height:1.55; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-d-right { width:70px; flex-shrink:0; text-align:right; }\n#dg-app .dg-d-pct { font-size:0.65rem; color:#aaa; margin-bottom:5px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-d-bar-bg { background:#e0d8cc; height:3px; border-radius:2px; }\n#dg-app .dg-d-bar { height:100%; border-radius:2px; transition:width 1s ease 0.3s; }\n#dg-app .dg-diag.r1 .dg-d-bar { background:#8b1c16; }\n#dg-app .dg-diag.r2 .dg-d-bar { background:#555; }\n#dg-app .dg-diag.r3 .dg-d-bar { background:#ccc; }\n\n\/* ---- BLOC TRAITEMENTS PAR DIAGNOSTIC ---- *\/\n#dg-app .dg-traitements-block { margin-top:32px; padding:28px 32px; background:#f9f6f2; border:1px solid #d8d0c4; border-radius:10px; border-left:4px solid #8b1c16; }\n#dg-app .dg-traitements-title { font-size:0.85rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#8b1c16; margin-bottom:20px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-trait-item { margin-bottom:20px; padding-bottom:20px; border-bottom:1px solid #e0d8cc; }\n#dg-app .dg-trait-item:last-child { margin-bottom:0; padding-bottom:0; border-bottom:none; }\n#dg-app .dg-trait-diag-name { font-size:0.8rem; font-weight:700; color:#8b1c16; text-transform:uppercase; letter-spacing:0.08em; margin-bottom:10px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-trait-cols { display:grid; grid-template-columns:1fr 1fr; gap:12px 24px; }\n#dg-app .dg-trait-col-title { font-size:0.7rem; font-weight:700; color:#555; text-transform:uppercase; letter-spacing:0.1em; margin-bottom:6px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-trait-list { list-style:none; display:flex; flex-direction:column; gap:4px; }\n#dg-app .dg-trait-list li { font-size:0.75rem; color:#666; line-height:1.5; font-family:'Arboria',Arial,sans-serif; padding-left:12px; position:relative; }\n#dg-app .dg-trait-list li::before { content:'\u2192'; position:absolute; left:0; color:#8b1c16; font-size:0.7rem; }\n\n\/* ---- BLOC GESTES ---- *\/\n#dg-app .dg-gestes-block { margin-top:32px; padding:28px 32px; border:1px solid #d8d0c4; border-radius:10px; border-top:2px solid #8b1c16; }\n#dg-app .dg-gestes-label { font-size:0.85rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#8b1c16; margin-bottom:20px; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-gestes-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px 32px; }\n#dg-app .dg-geste { display:flex; align-items:flex-start; gap:10px; }\n#dg-app .dg-geste-dot { width:5px; height:5px; border-radius:50%; background:#8b1c16; flex-shrink:0; margin-top:6px; }\n#dg-app .dg-geste-t { font-size:0.75rem; color:#777; line-height:1.55; font-family:'Arboria',Arial,sans-serif; }\n#dg-app .dg-disc { margin-top:24px; padding:14px 18px; background:#fdf5f4; border:1px solid #d8c0be; border-radius:8px; font-size:0.75rem; color:#8b1c16; line-height:1.7; font-family:'Arboria',Arial,sans-serif; font-style:italic; }\n\n@media(max-width:768px){\n  #dg-app { padding:32px 20px; }\n  #dg-app .dg-qtext { font-size:1rem !important; }\n  #dg-app .dg-opt { padding:14px 16px; }\n  #dg-app .dg-opt-t { font-size:0.85rem; }\n  #dg-app .dg-gestes-grid { grid-template-columns:1fr; }\n  #dg-app .dg-gestes-block { padding:20px 18px; }\n  #dg-app .dg-traitements-block { padding:20px 18px; }\n  #dg-app .dg-trait-cols { grid-template-columns:1fr; }\n  #dg-app .dg-d-right { width:50px; }\n  #dg-app .dg-nav-desktop-last { display:none !important; }\n  #dg-app .dg-nav-last { display:flex; flex-direction:column; padding:16px 0; gap:0; }\n  #dg-app .dg-dl-btn { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; padding:18px 24px; margin-bottom:16px; background:#8b1c16; border-radius:12px; cursor:pointer; font-family:'Arboria',Arial,sans-serif; font-size:14px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:#fff; transition:opacity 0.2s; }\n  #dg-app .dg-dl-btn.disabled { opacity:0.35; pointer-events:none; }\n  #dg-app .dg-dl-btn:active { opacity:0.8; }\n  #dg-app .dg-nav-row { display:flex; justify-content:flex-start; align-items:center; }\n}\n@media(max-width:480px){\n  #dg-app { padding:24px 16px; }\n  #dg-app .dg-qtext { font-size:0.85rem !important; letter-spacing:0.06em !important; }\n  #dg-app .dg-opt { padding:12px 14px; }\n  #dg-app .dg-opt-t { font-size:0.8rem; }\n  #dg-app .dg-prog-meta { font-size:0.6rem; }\n  #dg-app .dg-diag { flex-wrap:wrap; gap:12px; }\n  #dg-app .dg-d-right { width:100%; text-align:left; }\n  #dg-app .dg-gestes-block { padding:16px 14px; }\n  #dg-app .dg-dl-btn { font-size:12px; padding:16px 18px; }\n}\n<\/style>\n\n<!-- ============================================================\n     PARTIE 2 \u2014 LIBRAIRIES EXTERNES\n     ============================================================ -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<!-- ============================================================\n     PARTIE 3 \u2014 HTML\n     ============================================================ -->\n<div id=\"dg-app\"><div id=\"dg-render\"><\/div><\/div>\n\n<!-- ============================================================\n     PARTIE 4 \u2014 JAVASCRIPT\n     ============================================================ -->\n<script>\n(function(){\n\nconst LANG=(document.documentElement.lang||'').startsWith('en')||window.location.pathname.indexOf('\/en')===0?'en':'fr';\n\nconst T={\n  fr:{\n    btnPrev:'Pr\u00e9c\u00e9dent', btnNext:'Suivant',\n    btnDownload:'T\u00e9l\u00e9charger mon diagnostic',\n    btnRdv:'Prendre rendez-vous', btnRestart:'\u21ba Recommencer',\n    resTitle:'R\u00e9sultats du diagnostic',\n    gestesLabel:'Premiers gestes \u00e0 adopter',\n    traitementsLabel:'Recommandations & traitements possibles',\n    disc:'\u2695 Aide-m\u00e9moire clinique uniquement. Tout diagnostic doit \u00eatre confirm\u00e9 par un m\u00e9decin ou un professionnel de sant\u00e9 avant tout traitement.',\n    pdfTitle:'DIAGNOSTIC DOULEUR AU GENOU',\n    pdfConfidential:'Document confidentiel',\n    pdfFooter:'Document indicatif \u2014 diagnostic a confirmer par un medecin ou professionnel de sante.',\n    pdfS1:'REPONSES DU PATIENT', pdfS2:'RESULTATS DU DIAGNOSTIC', pdfS3:'PREMIERS GESTES A ADOPTER', pdfS4:'RECOMMANDATIONS & TRAITEMENTS',\n    pdfRank:['1er diagnostic','2eme diagnostic','3eme diagnostic'],\n    pdfPage:(p,t)=>`Page ${p} \/ ${t}`,\n    noAnswer:'Non renseigne',\n    colConserv:'Traitements conservateurs',\n    colChir:'Traitements chirurgicaux',\n  },\n  en:{\n    btnPrev:'Previous', btnNext:'Next',\n    btnDownload:'Download my diagnosis',\n    btnRdv:'Book an appointment', btnRestart:'\u21ba Start over',\n    resTitle:'Diagnostic results',\n    gestesLabel:'First steps to take',\n    traitementsLabel:'Recommendations & possible treatments',\n    disc:'\u2695 Clinical reference only. All diagnoses must be confirmed by a doctor or healthcare professional before any treatment.',\n    pdfTitle:'KNEE PAIN DIAGNOSIS',\n    pdfConfidential:'Confidential document',\n    pdfFooter:'Indicative document \u2014 diagnosis to be confirmed by a doctor or healthcare professional.',\n    pdfS1:'PATIENT RESPONSES', pdfS2:'DIAGNOSTIC RESULTS', pdfS3:'FIRST STEPS TO TAKE', pdfS4:'RECOMMENDATIONS & TREATMENTS',\n    pdfRank:['1st diagnosis','2nd diagnosis','3rd diagnosis'],\n    pdfPage:(p,t)=>`Page ${p} \/ ${t}`,\n    noAnswer:'Not answered',\n    colConserv:'Conservative treatments',\n    colChir:'Surgical treatments',\n  }\n};\nconst L=T[LANG];\n\n\/* ---- QUESTIONS FR ---- *\/\nconst Q_FR=[\n  {t:\"Y a-t-il eu un traumatisme r\u00e9cent (< 6 semaines) ?\",h:null,o:[\"Oui, traumatisme aigu direct (chute, choc)\",\"Oui, traumatisme indirect (torsion, r\u00e9ception saut)\",\"Micro-traumatismes r\u00e9p\u00e9t\u00e9s (sport, travail)\",\"Non, douleur spontan\u00e9e sans traumatisme\"]},\n  {t:\"Quel est l'\u00e2ge et le profil du patient ?\",h:null,o:[\"Adolescent 10\u201317 ans\",\"Adulte jeune 18\u201340 ans, sportif\",\"Adulte 40\u201360 ans\",\"Sujet \u00e2g\u00e9 > 60 ans\"]},\n  {t:\"O\u00f9 se situe la douleur principalement ?\",h:null,o:[\"Face ant\u00e9rieure (devant la rotule \/ tendon rotulien)\",\"Face m\u00e9diale (int\u00e9rieur du genou)\",\"Face lat\u00e9rale (ext\u00e9rieur du genou)\",\"Face post\u00e9rieure (creux poplit\u00e9)\",\"Diffuse \/ tout le genou\"]},\n  {t:\"Comment la douleur s'est-elle install\u00e9e ?\",h:null,o:[\"Brutalement en quelques secondes (accident)\",\"Progressivement sur plusieurs jours\/semaines\",\"Insidieusement depuis plusieurs mois\/ann\u00e9es\",\"Par \u00e9pisodes r\u00e9cidivants\"]},\n  {t:\"Existe-t-il un gonflement du genou ?\",h:\"\u00c9panchement articulaire \/ h\u00e9marthrose\",o:[\"Oui, gonflement imm\u00e9diat < 2h apr\u00e8s traumatisme\",\"Oui, gonflement diff\u00e9r\u00e9 12\u201324h apr\u00e8s effort\",\"Gonflement chronique intermittent\",\"Non, pas de gonflement\"]},\n  {t:\"Ressentez-vous une instabilit\u00e9 \/ d\u00e9robement ?\",h:\"Sensation que le genou 'l\u00e2che'\",o:[\"Oui, genou qui part en avant\",\"Oui, instabilit\u00e9 lat\u00e9rale (c\u00f4t\u00e9)\",\"Oui, rotule qui 'saute' \/ se d\u00e9boite\",\"Non, aucune instabilit\u00e9\"]},\n  {t:\"Y a-t-il un blocage ou limitation d'extension ?\",h:null,o:[\"Oui, blocage complet impossible \u00e0 corriger\",\"Oui, extension incompl\u00e8te mais r\u00e9ductible\",\"Limitation par douleur uniquement\",\"Non, mobilit\u00e9 compl\u00e8te\"]},\n  {t:\"Des bruits articulaires sont-ils pr\u00e9sents ?\",h:null,o:[\"Craquement douloureux (clic m\u00e9niscal)\",\"Cr\u00e9pitement \u00e0 la mobilisation (grincement)\",\"Claquement au moment du traumatisme\",\"Aucun bruit particulier\"]},\n  {t:\"Dans quelle activit\u00e9 la douleur est-elle maximale ?\",h:null,o:[\"Descente des escaliers \/ accroupissement\",\"Course \u00e0 pied, surtout apr\u00e8s 20\u201330 min\",\"Sauts \/ impulsions r\u00e9p\u00e9t\u00e9es\",\"Marche simple \/ station debout prolong\u00e9e\",\"Au repos ou la nuit\"]},\n  {t:\"Quelle est la nature de la douleur ?\",h:null,o:[\"Douleur m\u00e9canique (s'am\u00e9liore au repos)\",\"Douleur inflammatoire (pire au repos \/ d\u00e9rouillage matinal)\",\"Douleur aigu\u00eb intense et constante\",\"Br\u00fblure \/ douleur profonde osseuse\"]},\n  {t:\"Y a-t-il des signes inflammatoires locaux ?\",h:\"Rougeur, chaleur, tum\u00e9faction\",o:[\"Oui, rougeur + chaleur + fi\u00e8vre (>38\u00b0C)\",\"Oui, chaleur locale sans fi\u00e8vre\",\"Tum\u00e9faction ant\u00e9rieure isol\u00e9e (devant la rotule)\",\"Non, aucun signe local\"]},\n  {t:\"Quel est le contexte sportif \/ professionnel ?\",h:null,o:[\"Sport pivot-contact (ski, foot, tennis, rugby)\",\"Course \u00e0 pied \/ v\u00e9lo \/ sports \u00e0 endurance (> 30 km\/sem)\",\"Travail \u00e0 genoux (carreleur, ma\u00e7on, jardinier)\",\"S\u00e9dentaire \/ pas de sport particulier\"]},\n  {t:\"La douleur est-elle bilat\u00e9rale ou asym\u00e9trique ?\",h:null,o:[\"Un seul genou, post-traumatique\",\"Un seul genou, spontan\u00e9\",\"Les deux genoux (bilat\u00e9ral)\",\"Plusieurs articulations atteintes\"]},\n  {t:\"Ant\u00e9c\u00e9dents m\u00e9dicaux pertinents ?\",h:null,o:[\"Corticoth\u00e9rapie prolong\u00e9e \/ immunod\u00e9pression\",\"Pathologie rhumatismale connue (PR, spondylarthrite)\",\"Chirurgie ou injection r\u00e9cente du genou\",\"Aucun ant\u00e9c\u00e9dent notable\"]},\n  {t:\"Tub\u00e9rosit\u00e9 tibiale ant\u00e9rieure \u00e0 la palpation ?\",h:\"Point osseux sous la rotule\",o:[\"Douloureuse chez un adolescent en croissance\",\"Douleur du tendon rotulien (corps du tendon)\",\"Douleur de la pointe de la rotule\",\"Pas de douleur \u00e0 la palpation de cette zone\"]}\n];\n\n\/* ---- QUESTIONS EN ---- *\/\nconst Q_EN=[\n  {t:\"Was there a recent trauma (< 6 weeks)?\",h:null,o:[\"Yes, direct acute trauma (fall, impact)\",\"Yes, indirect trauma (twisting, landing)\",\"Repeated micro-traumas (sport, work)\",\"No, spontaneous pain without trauma\"]},\n  {t:\"What is the patient's age and profile?\",h:null,o:[\"Adolescent 10\u201317 years\",\"Young adult 18\u201340 years, athletic\",\"Adult 40\u201360 years\",\"Elderly > 60 years\"]},\n  {t:\"Where is the pain mainly located?\",h:null,o:[\"Anterior (front of kneecap \/ patellar tendon)\",\"Medial (inside of the knee)\",\"Lateral (outside of the knee)\",\"Posterior (back of the knee)\",\"Diffuse \/ whole knee\"]},\n  {t:\"How did the pain develop?\",h:null,o:[\"Suddenly within seconds (accident)\",\"Gradually over several days\/weeks\",\"Insidiously over several months\/years\",\"In recurring episodes\"]},\n  {t:\"Is there knee swelling?\",h:\"Joint effusion \/ haemarthrosis\",o:[\"Yes, immediate swelling < 2h after trauma\",\"Yes, delayed swelling 12\u201324h after exercise\",\"Chronic intermittent swelling\",\"No swelling\"]},\n  {t:\"Do you feel instability \/ giving way?\",h:\"Feeling that the knee 'gives out'\",o:[\"Yes, knee gives way forward\",\"Yes, lateral instability (side)\",\"Yes, kneecap slipping \/ dislocating\",\"No instability\"]},\n  {t:\"Is there locking or limited extension?\",h:null,o:[\"Yes, complete locking impossible to correct\",\"Yes, incomplete extension but reducible\",\"Limited by pain only\",\"No, full mobility\"]},\n  {t:\"Are joint sounds present?\",h:null,o:[\"Painful clicking (meniscal click)\",\"Crepitus during movement (grinding)\",\"Snap at time of trauma\",\"No particular sounds\"]},\n  {t:\"During which activity is pain worst?\",h:null,o:[\"Going downstairs \/ squatting\",\"Running, especially after 20\u201330 min\",\"Jumping \/ repeated impacts\",\"Simple walking \/ prolonged standing\",\"At rest or at night\"]},\n  {t:\"What is the nature of the pain?\",h:null,o:[\"Mechanical pain (improves with rest)\",\"Inflammatory pain (worse at rest \/ morning stiffness)\",\"Intense constant acute pain\",\"Burning \/ deep bone pain\"]},\n  {t:\"Are there local inflammatory signs?\",h:\"Redness, warmth, swelling\",o:[\"Yes, redness + warmth + fever (>38\u00b0C)\",\"Yes, local warmth without fever\",\"Isolated anterior swelling (front of kneecap)\",\"No local signs\"]},\n  {t:\"What is the sporting \/ professional context?\",h:null,o:[\"Pivot-contact sport (skiing, football, tennis, rugby)\",\"Running \/ cycling \/ endurance sports (> 30 km\/week)\",\"Kneeling work (tiler, mason, gardener)\",\"Sedentary \/ no particular sport\"]},\n  {t:\"Is the pain bilateral or asymmetrical?\",h:null,o:[\"One knee only, post-traumatic\",\"One knee only, spontaneous\",\"Both knees (bilateral)\",\"Multiple joints affected\"]},\n  {t:\"Relevant medical history?\",h:null,o:[\"Prolonged corticosteroid therapy \/ immunosuppression\",\"Known rheumatic condition (RA, spondylarthritis)\",\"Recent knee surgery or injection\",\"No notable medical history\"]},\n  {t:\"Anterior tibial tuberosity on palpation?\",h:\"Bony prominence below kneecap\",o:[\"Painful in a growing adolescent\",\"Patellar tendon pain (tendon body)\",\"Pain at the tip of the kneecap\",\"No pain on palpation of this area\"]}\n];\n\nconst Q=LANG==='en'?Q_EN:Q_FR;\n\n\/* ---- DIAGNOSTICS FR ---- *\/\nconst D_FR={\n  \"Gonarthrose\":\"D\u00e9g\u00e9n\u00e9rescence progressive du cartilage articulaire. Traitement conservateur en 1\u00e8re ligne (physio, antalgiques, infiltrations), chirurgie (PTG) si stade avanc\u00e9.\",\n  \"Syndrome f\u00e9moro-patellaire\":\"D\u00e9saxation ou hyperpression rotulienne entra\u00eenant une douleur ant\u00e9rieure. Renforcement du vaste m\u00e9dial, travail proprioceptif.\",\n  \"Rupture m\u00e9niscale\":\"L\u00e9sion du m\u00e9nisque m\u00e9dial ou lat\u00e9ral. IRM indispensable. Traitement conservateur ou arthroscopique selon le type.\",\n  \"Entorse LCM\":\"L\u00e9sion du ligament collat\u00e9ral m\u00e9dial par valgus forc\u00e9. Traitement fonctionnel, orth\u00e8se, r\u00e9cup\u00e9ration 4\u20138 semaines.\",\n  \"Syndrome bandelette ilio-tibiale\":\"Friction de la bandelette sur le condyle lat\u00e9ral. Pathologie du coureur. Repos, \u00e9tirements, correction biom\u00e9canique.\",\n  \"Tendinopathie rotulienne\":\"Genou du sauteur. D\u00e9g\u00e9n\u00e9rescence du tendon patellaire. Traitement : excentrique, ondes de choc, PRP.\",\n  \"Rupture LCA\":\"Rupture du ligament crois\u00e9 ant\u00e9rieur, souvent sport pivot-contact. IRM confirmatoire. Chirurgie si patient actif.\",\n  \"Kyste de Baker\":\"Distension du r\u00e9cessus post\u00e9rieur, secondaire \u00e0 une pathologie intra-articulaire. Traiter la cause avant le kyste.\",\n  \"Bursite pr\u00e9rotulienne\":\"Inflammation de la bourse s\u00e9reuse pr\u00e9rotulienne. Contexte de travail \u00e0 genoux. Repos, AINS, aspiration si n\u00e9cessaire.\",\n  \"Luxation de rotule\":\"D\u00e9bo\u00eetement f\u00e9moropatellaire, souvent chez l'adolescente hyperlaxe. Radio post-r\u00e9duction indispensable.\",\n  \"Osgood-Schlatter\":\"Apophysite de la tub\u00e9rosit\u00e9 tibiale ant\u00e9rieure chez l'adolescent sportif. Repos relatif, auto-r\u00e9solution \u00e0 la fin de la croissance.\",\n  \"Fracture plateau tibial\":\"Fracture articulaire par compression axiale. Scanner indispensable. Chirurgie si d\u00e9placement > 2 mm.\",\n  \"Arthrite inflammatoire\":\"PR, spondylarthrite, arthrite r\u00e9actionnelle. Bilan biologique et rhumatologique n\u00e9cessaire. Traitement de fond sp\u00e9cifique.\",\n  \"Arthrite septique\":\"URGENCE. Ponction articulaire diagnostique et th\u00e9rapeutique imm\u00e9diate. Antibioth\u00e9rapie IV.\",\n  \"SONK \/ Ost\u00e9on\u00e9crose\":\"Infarctus osseux du condyle f\u00e9moral m\u00e9dial. IRM pr\u00e9coce. Terrain : sujet \u00e2g\u00e9, corticoth\u00e9rapie.\"\n};\n\n\/* ---- DIAGNOSTICS EN ---- *\/\nconst D_EN={\n  \"Gonarthrose\":\"Progressive degeneration of joint cartilage. Conservative first-line treatment (physio, analgesics, injections), surgery (TKR) if advanced.\",\n  \"Syndrome f\u00e9moro-patellaire\":\"Patellar misalignment causing anterior pain. Strengthen vastus medialis, proprioceptive training.\",\n  \"Rupture m\u00e9niscale\":\"Medial or lateral meniscus tear. MRI essential. Conservative or arthroscopic treatment depending on type.\",\n  \"Entorse LCM\":\"Medial collateral ligament injury from forced valgus. Functional treatment, brace, recovery 4\u20138 weeks.\",\n  \"Syndrome bandelette ilio-tibiale\":\"IT band friction on lateral condyle. Runner's knee. Rest, stretching, biomechanical correction.\",\n  \"Tendinopathie rotulienne\":\"Jumper's knee. Patellar tendon degeneration. Treatment: eccentric exercises, shockwave, PRP.\",\n  \"Rupture LCA\":\"Anterior cruciate ligament rupture, often pivot-contact sport. Confirmatory MRI. Surgery for active patients.\",\n  \"Kyste de Baker\":\"Posterior recess distension, secondary to intra-articular pathology. Treat the cause before the cyst.\",\n  \"Bursite pr\u00e9rotulienne\":\"Pre-patellar bursa inflammation. Kneeling work context. Rest, NSAIDs, aspiration if needed.\",\n  \"Luxation de rotule\":\"Patellar dislocation, often in hyperlax adolescent girls. Post-reduction X-ray essential.\",\n  \"Osgood-Schlatter\":\"Anterior tibial tuberosity apophysitis in athletic adolescents. Relative rest, self-resolves at end of growth.\",\n  \"Fracture plateau tibial\":\"Articular fracture by axial compression. CT scan essential. Surgery if displacement > 2 mm.\",\n  \"Arthrite inflammatoire\":\"RA, spondylarthritis, reactive arthritis. Blood tests and rheumatology referral needed. Specific treatment.\",\n  \"Arthrite septique\":\"EMERGENCY. Immediate diagnostic and therapeutic joint aspiration. IV antibiotics.\",\n  \"SONK \/ Ost\u00e9on\u00e9crose\":\"Femoral condyle bone infarct. Early MRI. Profile: elderly, corticosteroids. Treatment: offloading, surgery.\"\n};\n\nconst D=LANG==='en'?D_EN:D_FR;\n\n\/* ---- TRAITEMENTS FR ---- *\/\nconst TRAITEMENTS_FR={\n  \"Gonarthrose\":{\n    conserv:[\"Physioth\u00e9rapie de renforcement musculaire\",\"Antalgiques et anti-inflammatoires\",\"Infiltrations de cortisone ou d'acide hyaluronique\",\"Perte de poids, activit\u00e9 adapt\u00e9e (natation, v\u00e9lo)\",\"Semelles orthop\u00e9diques\"],\n    chir:[\"Ost\u00e9otomie tibiale de valgisation (sujets jeunes)\",\"Proth\u00e8se totale de genou (PTG)\",\"Proth\u00e8se unicompartimentale\"]\n  },\n  \"Syndrome f\u00e9moro-patellaire\":{\n    conserv:[\"Physioth\u00e9rapie : renforcement vaste m\u00e9dial\",\"\u00c9tirements du quadriceps et ischio-jambiers\",\"Semelles orthop\u00e9diques, genouill\u00e8re rotulienne\",\"\u00c9viter la flexion profonde et la descente des escaliers\"],\n    chir:[\"Rarement n\u00e9cessaire\",\"R\u00e9alignement rotulien si d\u00e9saxation s\u00e9v\u00e8re\"]\n  },\n  \"Rupture m\u00e9niscale\":{\n    conserv:[\"Repos, glace, antalgiques en phase aigu\u00eb\",\"Physioth\u00e9rapie de stabilisation\",\"IRM pour confirmer le diagnostic\"],\n    chir:[\"M\u00e9niscectomie arthroscopique partielle\",\"Suture m\u00e9niscale (si l\u00e9sion p\u00e9riph\u00e9rique r\u00e9cente)\"]\n  },\n  \"Entorse LCM\":{\n    conserv:[\"Repos relatif, gla\u00e7age 15 min \/ 3x par jour\",\"Orth\u00e8se de d\u00e9charge, b\u00e9quilles si n\u00e9cessaire\",\"Physioth\u00e9rapie proprioceptive\",\"AINS sur courte dur\u00e9e\"],\n    chir:[\"Rarement indiqu\u00e9e\",\"Reconstruction ligamentaire si laxit\u00e9 chronique s\u00e9v\u00e8re\"]\n  },\n  \"Syndrome bandelette ilio-tibiale\":{\n    conserv:[\"Arr\u00eat temporaire de la course \u00e0 pied\",\"\u00c9tirements sp\u00e9cifiques de la bandelette\",\"Physioth\u00e9rapie, ondes de choc\",\"Correction des erreurs d'entra\u00eenement\"],\n    chir:[\"Exceptionnellement : lib\u00e9ration chirurgicale de la bandelette\"]\n  },\n  \"Tendinopathie rotulienne\":{\n    conserv:[\"Exercices excentriques du quadriceps\",\"Ondes de choc extracorporelles\",\"Injection de PRP (plasma riche en plaquettes)\",\"Physioth\u00e9rapie, r\u00e9duction de charge\"],\n    chir:[\"T\u00e9notomie percutan\u00e9e\",\"R\u00e9section chirurgicale de la zone d\u00e9g\u00e9n\u00e9r\u00e9e\"]\n  },\n  \"Rupture LCA\":{\n    conserv:[\"R\u00e9\u00e9ducation musculaire intensive (si patient peu actif)\",\"Orth\u00e8se stabilisatrice de genou\",\"\u00c9viter les sports pivot-contact\"],\n    chir:[\"Ligamentoplastie LCA (DIDT, KJ, allogreffe)\",\"Recommand\u00e9e chez le patient actif et sportif\"]\n  },\n  \"Kyste de Baker\":{\n    conserv:[\"Traiter la cause intra-articulaire sous-jacente\",\"Glace, repos, antalgiques\",\"Ponction aspiration si volumineuse\"],\n    chir:[\"Ex\u00e9r\u00e8se chirurgicale si r\u00e9cidive ou compression vasculaire\",\"Traitement arthroscopique de la cause\"]\n  },\n  \"Bursite pr\u00e9rotulienne\":{\n    conserv:[\"Repos, \u00e9viter l'appui sur le genou\",\"Glace, AINS\",\"Aspiration de la bourse si volumineuse\",\"Protection par genouill\u00e8re rembourr\u00e9e\"],\n    chir:[\"Bursectomie chirurgicale en cas de r\u00e9cidive ou d'infection\"]\n  },\n  \"Luxation de rotule\":{\n    conserv:[\"R\u00e9duction en urgence, immobilisation\",\"Physioth\u00e9rapie de stabilisation rotulienne\",\"Orth\u00e8se rotulienne de maintien\"],\n    chir:[\"Reconstruction du MPFL (ligament patello-f\u00e9moral m\u00e9dial)\",\"Tibial tubercle transfer (Trillat-Elmslie) si d\u00e9saxation osseuse\"]\n  },\n  \"Osgood-Schlatter\":{\n    conserv:[\"Repos sportif relatif\",\"Glace apr\u00e8s l'effort\",\"\u00c9tirements du quadriceps\",\"Auto-r\u00e9solution \u00e0 la fin de la croissance\"],\n    chir:[\"Exceptionnellement : ablation du fragment osseux r\u00e9siduel chez l'adulte\"]\n  },\n  \"Fracture plateau tibial\":{\n    conserv:[\"Immobilisation pl\u00e2tr\u00e9e si non d\u00e9plac\u00e9e\",\"D\u00e9charge aux b\u00e9quilles 6\u20138 semaines\",\"Physioth\u00e9rapie progressive\"],\n    chir:[\"Ost\u00e9osynth\u00e8se par vis et plaque si d\u00e9placement > 2 mm\",\"Greffe osseuse si enfoncement important\"]\n  },\n  \"Arthrite inflammatoire\":{\n    conserv:[\"Traitement de fond (m\u00e9thotrexate, bioth\u00e9rapie)\",\"Infiltrations cortison\u00e9es\",\"Physioth\u00e9rapie douce\",\"Suivi rhumatologique r\u00e9gulier\"],\n    chir:[\"Synovectomie arthroscopique\",\"Proth\u00e8se articulaire si destruction avanc\u00e9e\"]\n  },\n  \"Arthrite septique\":{\n    conserv:[\"URGENCE : hospitalisation imm\u00e9diate\",\"Antibioth\u00e9rapie IV adapt\u00e9e\",\"Ponction articulaire r\u00e9p\u00e9t\u00e9e\"],\n    chir:[\"Lavage arthroscopique articulaire\",\"Arthrotomie de drainage si n\u00e9cessaire\"]\n  },\n  \"SONK \/ Ost\u00e9on\u00e9crose\":{\n    conserv:[\"D\u00e9charge totale aux b\u00e9quilles\",\"Antalgiques, anti-inflammatoires\",\"IRM de contr\u00f4le r\u00e9guli\u00e8re\"],\n    chir:[\"Ost\u00e9otomie de d\u00e9charge\",\"Proth\u00e8se unicompartimentale ou totale selon l'\u00e9tendue\"]\n  }\n};\n\n\/* ---- TRAITEMENTS EN ---- *\/\nconst TRAITEMENTS_EN={\n  \"Gonarthrose\":{\n    conserv:[\"Physiotherapy: muscle strengthening\",\"Analgesics and anti-inflammatory drugs\",\"Cortisone or hyaluronic acid injections\",\"Weight loss, adapted activity (swimming, cycling)\",\"Orthopaedic insoles\"],\n    chir:[\"High tibial osteotomy (younger patients)\",\"Total knee replacement (TKR)\",\"Unicompartmental knee replacement\"]\n  },\n  \"Syndrome f\u00e9moro-patellaire\":{\n    conserv:[\"Physiotherapy: vastus medialis strengthening\",\"Quadriceps and hamstring stretching\",\"Orthopaedic insoles, patellar brace\",\"Avoid deep flexion and going downstairs\"],\n    chir:[\"Rarely necessary\",\"Patellar realignment if severe misalignment\"]\n  },\n  \"Rupture m\u00e9niscale\":{\n    conserv:[\"Rest, ice, analgesics in acute phase\",\"Stabilisation physiotherapy\",\"MRI to confirm diagnosis\"],\n    chir:[\"Partial arthroscopic meniscectomy\",\"Meniscal repair (if recent peripheral tear)\"]\n  },\n  \"Entorse LCM\":{\n    conserv:[\"Relative rest, icing 15 min \/ 3x daily\",\"Unloading brace, crutches if needed\",\"Proprioceptive physiotherapy\",\"NSAIDs short-term\"],\n    chir:[\"Rarely indicated\",\"Ligament reconstruction if severe chronic laxity\"]\n  },\n  \"Syndrome bandelette ilio-tibiale\":{\n    conserv:[\"Temporary running cessation\",\"IT band specific stretching\",\"Physiotherapy, shockwave therapy\",\"Correction of training errors\"],\n    chir:[\"Exceptionally: surgical IT band release\"]\n  },\n  \"Tendinopathie rotulienne\":{\n    conserv:[\"Eccentric quadriceps exercises\",\"Extracorporeal shockwave therapy\",\"PRP injection (platelet-rich plasma)\",\"Physiotherapy, load reduction\"],\n    chir:[\"Percutaneous tenotomy\",\"Surgical resection of degenerated area\"]\n  },\n  \"Rupture LCA\":{\n    conserv:[\"Intensive muscle rehabilitation (sedentary patients)\",\"Stabilising knee brace\",\"Avoid pivot-contact sports\"],\n    chir:[\"ACL reconstruction (hamstring, patellar tendon, allograft)\",\"Recommended for active and athletic patients\"]\n  },\n  \"Kyste de Baker\":{\n    conserv:[\"Treat underlying intra-articular cause\",\"Ice, rest, analgesics\",\"Aspiration if large\"],\n    chir:[\"Surgical excision if recurrence or vascular compression\",\"Arthroscopic treatment of the cause\"]\n  },\n  \"Bursite pr\u00e9rotulienne\":{\n    conserv:[\"Rest, avoid kneeling\",\"Ice, NSAIDs\",\"Bursa aspiration if large\",\"Padded knee protection\"],\n    chir:[\"Surgical bursectomy in case of recurrence or infection\"]\n  },\n  \"Luxation de rotule\":{\n    conserv:[\"Emergency reduction, immobilisation\",\"Patellar stabilisation physiotherapy\",\"Patellar support brace\"],\n    chir:[\"MPFL reconstruction (medial patellofemoral ligament)\",\"Tibial tubercle transfer if bony misalignment\"]\n  },\n  \"Osgood-Schlatter\":{\n    conserv:[\"Relative sporting rest\",\"Ice after exercise\",\"Quadriceps stretching\",\"Self-resolves at end of growth\"],\n    chir:[\"Exceptionally: removal of residual bony fragment in adults\"]\n  },\n  \"Fracture plateau tibial\":{\n    conserv:[\"Plaster cast if undisplaced\",\"Non-weight bearing with crutches 6\u20138 weeks\",\"Progressive physiotherapy\"],\n    chir:[\"Screw and plate fixation if displacement > 2 mm\",\"Bone graft if significant depression\"]\n  },\n  \"Arthrite inflammatoire\":{\n    conserv:[\"Disease-modifying drugs (methotrexate, biologics)\",\"Corticosteroid injections\",\"Gentle physiotherapy\",\"Regular rheumatology follow-up\"],\n    chir:[\"Arthroscopic synovectomy\",\"Joint replacement if advanced destruction\"]\n  },\n  \"Arthrite septique\":{\n    conserv:[\"EMERGENCY: immediate hospitalisation\",\"Adapted IV antibiotics\",\"Repeated joint aspiration\"],\n    chir:[\"Arthroscopic joint washout\",\"Arthrotomy drainage if necessary\"]\n  },\n  \"SONK \/ Ost\u00e9on\u00e9crose\":{\n    conserv:[\"Full non-weight bearing on crutches\",\"Analgesics, anti-inflammatory drugs\",\"Regular MRI monitoring\"],\n    chir:[\"Unloading osteotomy\",\"Unicompartmental or total knee replacement depending on extent\"]\n  }\n};\n\nconst TRAITEMENTS=LANG==='en'?TRAITEMENTS_EN:TRAITEMENTS_FR;\n\n\/* ---- NOMS TRADUITS ---- *\/\nconst NAMES_FR={\n  \"Gonarthrose\":\"Gonarthrose\",\"Syndrome f\u00e9moro-patellaire\":\"Syndrome f\u00e9moro-patellaire\",\n  \"Rupture m\u00e9niscale\":\"Rupture m\u00e9niscale\",\"Entorse LCM\":\"Entorse LCM\",\n  \"Syndrome bandelette ilio-tibiale\":\"Syndrome bandelette ilio-tibiale\",\n  \"Tendinopathie rotulienne\":\"Tendinopathie rotulienne\",\"Rupture LCA\":\"Rupture LCA\",\n  \"Kyste de Baker\":\"Kyste de Baker\",\"Bursite pr\u00e9rotulienne\":\"Bursite pr\u00e9rotulienne\",\n  \"Luxation de rotule\":\"Luxation de rotule\",\"Osgood-Schlatter\":\"Osgood-Schlatter\",\n  \"Fracture plateau tibial\":\"Fracture plateau tibial\",\"Arthrite inflammatoire\":\"Arthrite inflammatoire\",\n  \"Arthrite septique\":\"Arthrite septique\",\"SONK \/ Ost\u00e9on\u00e9crose\":\"SONK \/ Ost\u00e9on\u00e9crose\"\n};\nconst NAMES_EN={\n  \"Gonarthrose\":\"Gonarthrosis\",\"Syndrome f\u00e9moro-patellaire\":\"Patellofemoral Syndrome\",\n  \"Rupture m\u00e9niscale\":\"Meniscal Tear\",\"Entorse LCM\":\"MCL Sprain\",\n  \"Syndrome bandelette ilio-tibiale\":\"IT Band Syndrome\",\n  \"Tendinopathie rotulienne\":\"Patellar Tendinopathy\",\"Rupture LCA\":\"ACL Rupture\",\n  \"Kyste de Baker\":\"Baker's Cyst\",\"Bursite pr\u00e9rotulienne\":\"Pre-patellar Bursitis\",\n  \"Luxation de rotule\":\"Patellar Dislocation\",\"Osgood-Schlatter\":\"Osgood-Schlatter Disease\",\n  \"Fracture plateau tibial\":\"Tibial Plateau Fracture\",\"Arthrite inflammatoire\":\"Inflammatory Arthritis\",\n  \"Arthrite septique\":\"Septic Arthritis\",\"SONK \/ Ost\u00e9on\u00e9crose\":\"SONK \/ Osteonecrosis\"\n};\nconst NAMES=LANG==='en'?NAMES_EN:NAMES_FR;\n\n\/* ---- MATRICE DE SCORING ---- *\/\nconst S={\n  0:{0:{\"Fracture plateau tibial\":3,\"Rupture LCA\":2,\"Entorse LCM\":2,\"Luxation de rotule\":1},1:{\"Rupture LCA\":4,\"Rupture m\u00e9niscale\":3,\"Entorse LCM\":3,\"Luxation de rotule\":2},2:{\"Tendinopathie rotulienne\":3,\"Syndrome bandelette ilio-tibiale\":3,\"Syndrome f\u00e9moro-patellaire\":2,\"Bursite pr\u00e9rotulienne\":2},3:{\"Gonarthrose\":3,\"Syndrome f\u00e9moro-patellaire\":2,\"Kyste de Baker\":2,\"Arthrite inflammatoire\":2,\"Arthrite septique\":1,\"SONK \/ Ost\u00e9on\u00e9crose\":1}},\n  1:{0:{\"Osgood-Schlatter\":5,\"Luxation de rotule\":3,\"Syndrome f\u00e9moro-patellaire\":2,\"Rupture LCA\":1},1:{\"Rupture LCA\":3,\"Rupture m\u00e9niscale\":2,\"Tendinopathie rotulienne\":3,\"Syndrome bandelette ilio-tibiale\":3,\"Syndrome f\u00e9moro-patellaire\":2},2:{\"Gonarthrose\":2,\"Rupture m\u00e9niscale\":2,\"Entorse LCM\":2,\"Arthrite inflammatoire\":2},3:{\"Gonarthrose\":5,\"SONK \/ Ost\u00e9on\u00e9crose\":4,\"Fracture plateau tibial\":2,\"Kyste de Baker\":2}},\n  2:{0:{\"Syndrome f\u00e9moro-patellaire\":4,\"Tendinopathie rotulienne\":4,\"Osgood-Schlatter\":3,\"Bursite pr\u00e9rotulienne\":3,\"Luxation de rotule\":2},1:{\"Entorse LCM\":4,\"Rupture m\u00e9niscale\":3,\"Gonarthrose\":2},2:{\"Syndrome bandelette ilio-tibiale\":5,\"Entorse LCM\":1,\"Rupture LCA\":1},3:{\"Kyste de Baker\":5},4:{\"Gonarthrose\":3,\"Arthrite septique\":3,\"Arthrite inflammatoire\":3,\"Fracture plateau tibial\":2}},\n  3:{0:{\"Rupture LCA\":4,\"Fracture plateau tibial\":4,\"Entorse LCM\":3,\"Luxation de rotule\":3},1:{\"Rupture m\u00e9niscale\":3,\"Tendinopathie rotulienne\":3,\"Syndrome bandelette ilio-tibiale\":3,\"Arthrite septique\":2},2:{\"Gonarthrose\":5,\"SONK \/ Ost\u00e9on\u00e9crose\":3,\"Syndrome f\u00e9moro-patellaire\":2},3:{\"Rupture m\u00e9niscale\":3,\"Kyste de Baker\":2,\"Arthrite inflammatoire\":2}},\n  4:{0:{\"Rupture LCA\":5,\"Fracture plateau tibial\":4,\"Arthrite septique\":2},1:{\"Rupture m\u00e9niscale\":4,\"Gonarthrose\":2,\"Arthrite inflammatoire\":2},2:{\"Gonarthrose\":3,\"Arthrite inflammatoire\":3,\"Kyste de Baker\":3},3:{\"Syndrome f\u00e9moro-patellaire\":2,\"Tendinopathie rotulienne\":2,\"Syndrome bandelette ilio-tibiale\":2,\"Osgood-Schlatter\":2}},\n  5:{0:{\"Rupture LCA\":5},1:{\"Entorse LCM\":4,\"Fracture plateau tibial\":2},2:{\"Luxation de rotule\":6,\"Syndrome f\u00e9moro-patellaire\":2},3:{\"Gonarthrose\":2,\"Tendinopathie rotulienne\":2,\"Syndrome bandelette ilio-tibiale\":2,\"Osgood-Schlatter\":2}},\n  6:{0:{\"Rupture m\u00e9niscale\":5},1:{\"Rupture m\u00e9niscale\":3,\"Gonarthrose\":2},2:{\"Gonarthrose\":2,\"Syndrome f\u00e9moro-patellaire\":2,\"Arthrite septique\":2},3:{\"Tendinopathie rotulienne\":2,\"Syndrome bandelette ilio-tibiale\":2,\"Entorse LCM\":2}},\n  7:{0:{\"Rupture m\u00e9niscale\":5},1:{\"Gonarthrose\":4,\"Syndrome f\u00e9moro-patellaire\":3},2:{\"Rupture LCA\":4,\"Luxation de rotule\":3,\"Fracture plateau tibial\":2},3:{\"Entorse LCM\":2,\"Tendinopathie rotulienne\":2,\"Bursite pr\u00e9rotulienne\":2}},\n  8:{0:{\"Syndrome f\u00e9moro-patellaire\":5,\"Gonarthrose\":3,\"Bursite pr\u00e9rotulienne\":2},1:{\"Syndrome bandelette ilio-tibiale\":6,\"Tendinopathie rotulienne\":2},2:{\"Tendinopathie rotulienne\":5,\"Osgood-Schlatter\":3},3:{\"Gonarthrose\":4,\"Arthrite inflammatoire\":2},4:{\"SONK \/ Ost\u00e9on\u00e9crose\":4,\"Arthrite septique\":4,\"Arthrite inflammatoire\":3}},\n  9:{0:{\"Gonarthrose\":4,\"Rupture m\u00e9niscale\":3,\"Syndrome bandelette ilio-tibiale\":3},1:{\"Arthrite inflammatoire\":5,\"Arthrite septique\":3},2:{\"Fracture plateau tibial\":4,\"Arthrite septique\":4,\"Rupture LCA\":3},3:{\"SONK \/ Ost\u00e9on\u00e9crose\":5,\"Fracture plateau tibial\":3}},\n  10:{0:{\"Arthrite septique\":7,\"Arthrite inflammatoire\":3},1:{\"Arthrite inflammatoire\":4,\"Gonarthrose\":2,\"Kyste de Baker\":2},2:{\"Bursite pr\u00e9rotulienne\":6,\"Osgood-Schlatter\":2},3:{\"Rupture m\u00e9niscale\":2,\"Syndrome f\u00e9moro-patellaire\":2,\"Entorse LCM\":2,\"Syndrome bandelette ilio-tibiale\":2}},\n  11:{0:{\"Rupture LCA\":5,\"Rupture m\u00e9niscale\":3,\"Entorse LCM\":3},1:{\"Syndrome bandelette ilio-tibiale\":6,\"Tendinopathie rotulienne\":3},2:{\"Bursite pr\u00e9rotulienne\":6},3:{\"Gonarthrose\":3,\"SONK \/ Ost\u00e9on\u00e9crose\":2}},\n  12:{0:{\"Rupture LCA\":3,\"Entorse LCM\":3,\"Fracture plateau tibial\":3},1:{\"Gonarthrose\":3,\"Kyste de Baker\":2,\"SONK \/ Ost\u00e9on\u00e9crose\":2},2:{\"Gonarthrose\":3,\"Syndrome f\u00e9moro-patellaire\":2},3:{\"Arthrite inflammatoire\":5}},\n  13:{0:{\"SONK \/ Ost\u00e9on\u00e9crose\":5,\"Arthrite septique\":3,\"Fracture plateau tibial\":2},1:{\"Arthrite inflammatoire\":6},2:{\"Arthrite septique\":5,\"Kyste de Baker\":2},3:{\"Gonarthrose\":2,\"Rupture LCA\":2,\"Syndrome f\u00e9moro-patellaire\":2}},\n  14:{0:{\"Osgood-Schlatter\":8},1:{\"Tendinopathie rotulienne\":6},2:{\"Syndrome f\u00e9moro-patellaire\":4,\"Luxation de rotule\":2},3:{\"Gonarthrose\":2,\"Rupture LCA\":2,\"Entorse LCM\":2}}\n};\n\n\/* ---- GESTES ---- *\/\nconst GESTES_FR=[\"Mettre le genou au repos et r\u00e9duire les activit\u00e9s douloureuses\",\"Appliquer de la glace 15 min, 2 \u00e0 3 fois par jour sur la zone douloureuse\",\"\u00c9viter les mouvements en torsion, les sauts et les flexions profondes\",\"Sur\u00e9lever le membre inf\u00e9rieur si un gonflement est pr\u00e9sent\",\"Prendre un antalgique de palier 1 (parac\u00e9tamol) si la douleur est g\u00eanante\",\"Consulter rapidement un m\u00e9decin du sport ou un physioth\u00e9rapeute\"];\nconst GESTES_EN=[\"Rest the knee and reduce painful activities\",\"Apply ice for 15 min, 2 to 3 times a day on the painful area\",\"Avoid twisting movements, jumping and deep bending\",\"Elevate the lower limb if swelling is present\",\"Take a first-line painkiller (paracetamol) if pain is bothersome\",\"Consult a sports doctor or physiotherapist promptly\"];\nconst GESTES=LANG==='en'?GESTES_EN:GESTES_FR;\n\n\/* ---- STYLES NAVIGATION ---- *\/\nconst R='#8b1c16';\nconst NB=(d)=>`display:flex;align-items:center;gap:14px;cursor:${d?'default':'pointer'};font-family:'Arboria',Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#b0a898;${d?'opacity:0.3;pointer-events:none':''}`;\nconst NN=(d)=>`display:flex;align-items:center;gap:14px;cursor:${d?'default':'pointer'};font-family:'Arboria',Arial,sans-serif;font-size:14px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:${R};${d?'opacity:0.3;pointer-events:none':''}`;\nconst CB=`width:35px;height:35px;min-width:35px;border-radius:50%;border:1.5px solid #c8bfb4;display:flex;align-items:center;justify-content:center;flex-shrink:0;`;\nconst CN=`width:35px;height:35px;min-width:35px;border-radius:50%;border:1.5px solid ${R};display:flex;align-items:center;justify-content:center;flex-shrink:0;`;\nconst SB=`<svg width=\"23\" height=\"23\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#b0a898\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"\/><\/svg>`;\nconst SN=`<svg width=\"23\" height=\"23\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"${R}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg>`;\nconst SDLICO=`<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>`;\n\n\/* ---- \u00c9TAT ---- *\/\nlet cur=0, ans={};\nlet _transitioning=false;\nconst el=()=>document.getElementById('dg-render');\nconst esc=s=>s.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');\n\n\/* ---- PR\u00c9CHARGEMENT LOGO ---- *\/\nwindow._dgLogo=null; window._dgLogoRatio=3;\n(function(){\n  const img=new Image();\n  img.crossOrigin='anonymous';\n  img.onload=function(){\n    try{\n      const c=document.createElement('canvas');\n      c.width=img.naturalWidth; c.height=img.naturalHeight;\n      c.getContext('2d').drawImage(img,0,0);\n      window._dgLogo=c.toDataURL('image\/png');\n      window._dgLogoRatio=img.naturalWidth\/img.naturalHeight;\n    }catch(e){}\n  };\n  img.src='https:\/\/sosgenougeneve.ch\/wp-content\/uploads\/2026\/01\/logososblanc@4x-e1770046884760.png';\n})();\n\n\/* ---- RENDU ---- *\/\nfunction render(dir){ cur<Q.length?renderQ(dir):renderR(); }\n\nfunction buildQHTML(qi){\n  const q=Q[qi],pct=Math.round((qi\/Q.length)*100),sel=ans[qi],last=qi===Q.length-1;\n  const nb=qi===0;\n  const navHTML=last\n    ?'<hr class=\"dg-nav-sep\"><div class=\"dg-nav dg-nav-desktop-last\">'\n      +'<div class=\"dg-btn-prev\" onclick=\"dgB()\" style=\"'+NB(nb)+'\"><div class=\"dg-cb\" style=\"'+CB+'\">'+SB+'<\/div>'+L.btnPrev+'<\/div>'\n      +'<div onclick=\"dgPDFandNext()\" style=\"'+NN(sel===undefined)+'\">'+L.btnDownload+'<div style=\"'+CN+'\">'+SN+'<\/div><\/div>'\n      +'<\/div>'\n      +'<div class=\"dg-nav-last\">'\n      +'<div class=\"dg-dl-btn'+(sel===undefined?' disabled':'')+'\" onclick=\"dgPDFandNext()\">'+SDLICO+L.btnDownload+'<\/div>'\n      +'<div class=\"dg-nav-row\"><div class=\"dg-btn-prev\" onclick=\"dgB()\" style=\"'+NB(nb)+'\"><div class=\"dg-cb\" style=\"'+CB+'\">'+SB+'<\/div>'+L.btnPrev+'<\/div><\/div>'\n      +'<\/div>'\n    :'<hr class=\"dg-nav-sep\"><div class=\"dg-nav\">'\n      +'<div class=\"dg-btn-prev\" onclick=\"dgB()\" style=\"'+NB(nb)+'\"><div class=\"dg-cb\" style=\"'+CB+'\">'+SB+'<\/div>'+L.btnPrev+'<\/div>'\n      +'<div onclick=\"dgN()\" style=\"'+NN(sel===undefined)+'\">'+L.btnNext+'<div style=\"'+CN+'\">'+SN+'<\/div><\/div>'\n      +'<\/div>';\n  let html='<div class=\"dg-prog-meta\"><span>Question '+(qi+1)+' \/ '+Q.length+'<\/span><span>'+pct+'%<\/span><\/div>'\n    +'<div class=\"dg-prog-wrap\"><div class=\"dg-prog-fill\" style=\"width:'+pct+'%\"><\/div><\/div>'\n    +'<div class=\"dg-qtext\">'+esc(q.t)+'<\/div>'\n    +(q.h?'<div class=\"dg-qhint\">'+esc(q.h)+'<\/div>':'')\n    +'<div class=\"dg-options\">'\n    +q.o.map(function(o,i){\n      return '<div class=\"dg-opt'+(sel===i?' selected':'')+'\" onclick=\"dgS('+qi+','+i+')\">'\n        +'<div class=\"dg-radio\"><div class=\"dg-radio-dot\"><\/div><\/div>'\n        +'<span class=\"dg-opt-t\">'+esc(o)+'<\/span><\/div>';\n    }).join('')\n    +'<\/div>'+navHTML;\n  return html;\n}\n\nfunction renderQ(dir){\n  const container=el();\n  if(!dir){ container.innerHTML='<div class=\"dg-q-wrap\">'+buildQHTML(cur)+'<\/div>'; return; }\n  if(_transitioning) return;\n  _transitioning=true;\n  const old=container.querySelector('.dg-q-wrap');\n  if(old) old.classList.add(dir==='next'?'exit-next':'exit-prev');\n  const next=document.createElement('div');\n  next.className='dg-q-wrap '+(dir==='next'?'enter-next':'enter-prev');\n  next.innerHTML=buildQHTML(cur);\n  container.appendChild(next);\n  setTimeout(function(){ if(old) old.remove(); _transitioning=false; }, 420);\n}\n\nfunction renderR(){\n  const scores={};\n  Object.keys(D).forEach(d=>scores[d]=0);\n  for(let i=0;i<Q.length;i++){\n    const a=ans[i]; if(a===undefined) continue;\n    const s=S[i]; if(!s||!s[a]) continue;\n    for(const [d,p] of Object.entries(s[a])) if(scores[d]!==undefined) scores[d]+=p;\n  }\n  const top=Object.entries(scores).sort((a,b)=>b[1]-a[1]).slice(0,3);\n  const max=top[0][1]||1;\n  const rc=['r1','r2','r3'];\n\n  const ranks=[];\n  top.forEach(([,s],i)=>{\n    if(i===0){ ranks.push(1); return; }\n    ranks.push(top[i-1][1]===s ? ranks[i-1] : i+1);\n  });\n\n  const traitementsHTML=top.map(([n],i)=>{\n    const tr=TRAITEMENTS[n];\n    if(!tr) return '';\n    const conservHTML=tr.conserv.map(t=>`<li>${esc(t)}<\/li>`).join('');\n    const chirHTML=tr.chir.map(t=>`<li>${esc(t)}<\/li>`).join('');\n    return `<div class=\"dg-trait-item\">\n      <div class=\"dg-trait-diag-name\">${ranks[i]}. ${esc(NAMES[n]||n)}<\/div>\n      <div class=\"dg-trait-cols\">\n        <div>\n          <div class=\"dg-trait-col-title\">${esc(L.colConserv)}<\/div>\n          <ul class=\"dg-trait-list\">${conservHTML}<\/ul>\n        <\/div>\n        <div>\n          <div class=\"dg-trait-col-title\">${esc(L.colChir)}<\/div>\n          <ul class=\"dg-trait-list\">${chirHTML}<\/ul>\n        <\/div>\n      <\/div>\n    <\/div>`;\n  }).join('');\n\n  el().innerHTML=`\n    <div class=\"dg-res\">\n      <div class=\"dg-res-title\">${L.resTitle}<\/div>\n      ${top.map(([n,s],i)=>{\n        const p=Math.round((s\/max)*100);\n        return `<div class=\"dg-diag ${rc[i]}\">\n          <div class=\"dg-d-num\">${ranks[i]}<\/div>\n          <div class=\"dg-d-body\">\n            <div class=\"dg-d-name\">${esc(NAMES[n]||n)}<\/div>\n            <div class=\"dg-d-desc\">${esc(D[n])}<\/div>\n          <\/div>\n          <div class=\"dg-d-right\">\n            <div class=\"dg-d-pct\">${p}%<\/div>\n            <div class=\"dg-d-bar-bg\"><div class=\"dg-d-bar\" style=\"width:${p}%\"><\/div><\/div>\n          <\/div>\n        <\/div>`;\n      }).join('')}\n      <div class=\"dg-traitements-block\">\n        <div class=\"dg-traitements-title\">${esc(L.traitementsLabel)}<\/div>\n        ${traitementsHTML}\n      <\/div>\n      <div class=\"dg-gestes-block\">\n        <div class=\"dg-gestes-label\">${L.gestesLabel}<\/div>\n        <div class=\"dg-gestes-grid\">${GESTES.map(g=>`<div class=\"dg-geste\"><div class=\"dg-geste-dot\"><\/div><span class=\"dg-geste-t\">${esc(g)}<\/span><\/div>`).join('')}<\/div>\n      <\/div>\n      <div class=\"dg-disc\">${L.disc}<\/div>\n      <div style=\"display:flex;justify-content:center;align-items:center;gap:18px;margin-top:26px;flex-wrap:wrap;\">\n        <a href=\"https:\/\/sosgenougeneve.ch\/prendre-rendez-vous\/\"\n           onclick=\"if(typeof gtag==='function'){gtag('event','rdv_button_clicked',{event_category:'Diagnostic Genou',event_label:'Prendre RDV'});}\"\n           style=\"display:inline-flex;align-items:center;gap:10px;padding:10px 26px;background:#8b1c16;color:#fff;font-family:'Arboria',Arial,sans-serif;font-size:14px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;text-decoration:none;border-radius:7px;\">${L.btnRdv}<\/a>\n        <div onclick=\"dgR()\" style=\"display:inline-flex;align-items:center;cursor:pointer;padding:4px 0;background:transparent;color:#b0a898;font-family:'Arboria',Arial,sans-serif;font-size:14px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;border:none;text-decoration:underline;text-underline-offset:4px;\">${L.btnRestart}<\/div>\n      <\/div>\n    <\/div>`;\n}\n\nwindow.dgPDFandNext=function(){\n  if(ans[cur]===undefined) return;\n  generatePDF();\n  cur++;\n  render('next');\n};\n\nfunction calcScores(){\n  const scores={};\n  Object.keys(D).forEach(d=>scores[d]=0);\n  for(let i=0;i<Q.length;i++){\n    const a=ans[i]; if(a===undefined) continue;\n    const s=S[i]; if(!s||!s[a]) continue;\n    for(const [d,p] of Object.entries(s[a])) if(scores[d]!==undefined) scores[d]+=p;\n  }\n  return scores;\n}\n\n\/* ================================================================\n   G\u00c9N\u00c9RATION PDF\n   ================================================================ *\/\nfunction generatePDF(){\n  if(!window.jspdf){ alert(LANG==='en'?\"PDF library not loaded. Please reload the page.\":\"La librairie PDF ne s'est pas chargee. Rechargez la page.\"); return; }\n  const {jsPDF}=window.jspdf;\n  const scores=calcScores();\n  const top=Object.entries(scores).sort((a,b)=>b[1]-a[1]).slice(0,3);\n  const max=top[0][1]||1;\n  const doc=new jsPDF({orientation:'portrait',unit:'mm',format:'a4'});\n\n  \/* ---- RANGS EX-AEQUO ---- *\/\n  const pdfRanks=[];\n  top.forEach(([,s],i)=>{\n    if(i===0){ pdfRanks.push(1); return; }\n    pdfRanks.push(top[i-1][1]===s ? pdfRanks[i-1] : i+1);\n  });\n\n  const W=210, M=20;\n  const RED=[139,28,22];\n  const BEIGE=[245,240,232];\n  const LIGHT=[224,216,204];\n  const FOOTER_Y=281;\n  const CONTENT_BOTTOM=FOOTER_Y-4;\n\n  \/* ---- Variables bloc gestes ---- *\/\n  const cw=(W-M*2-12)\/2;\n  const ROW_H=12;\n  const gDotX1=M+5,  gTxtX1=M+12;\n  const gDotX2=M+5+cw+8, gTxtX2=M+12+cw+8;\n  const gTxtW=cw-12;\n  const boxH=Math.ceil(GESTES.length\/2)*ROW_H+14;\n\n  let y=0;\n\n  \/* ---- NETTOYAGE CARACT\u00c8RES ---- *\/\n  function clean(s){\n    return (s||'')\n      .replace(\/\\r?\\n\/g,' ').trim()\n      .replace(\/\\u2013|\\u2014\/g,'-').replace(\/\\u2019|\\u2018\/g,\"'\")\n      .replace(\/\\u00e9|\\u00e8|\\u00ea|\\u00eb\/g,'e').replace(\/\\u00e0|\\u00e2|\\u00e4\/g,'a')\n      .replace(\/\\u00f4|\\u00f6\/g,'o').replace(\/\\u00fb|\\u00f9|\\u00fc\/g,'u')\n      .replace(\/\\u00ee|\\u00ef\/g,'i').replace(\/\\u00e7\/g,'c')\n      .replace(\/\\u00c9|\\u00c8|\\u00ca\/g,'E').replace(\/\\u00c0|\\u00c2\/g,'A')\n      .replace(\/\\u00d4\/g,'O').replace(\/\\u00ce\/g,'I').replace(\/\\u00c7\/g,'C')\n      .replace(\/[^\\x00-\\x7E]\/g,'');\n  }\n\n  \/* ---- HEADER ---- *\/\n  function addHeader(){\n    doc.setFillColor(...RED);\n    doc.rect(0,0,W,26,'F');\n    if(window._dgLogo){\n      const lH=17, lW=lH*window._dgLogoRatio;\n      doc.addImage(window._dgLogo,'PNG',M,4.5,lW,lH);\n    }\n    doc.setTextColor(255,255,255);\n    doc.setFontSize(10.5); doc.setFont('helvetica','bold');\n    doc.text(clean(L.pdfTitle), W\/2, 12, {align:'center'});\n    doc.setFontSize(7); doc.setFont('helvetica','normal');\n    doc.text('sosgenougeneve.ch', W\/2, 18.5, {align:'center'});\n    doc.setFontSize(7.5);\n    doc.text(new Date().toLocaleDateString(LANG==='en'?'en-GB':'fr-FR'), W-M, 12, {align:'right'});\n    doc.text(clean(L.pdfConfidential), W-M, 18.5, {align:'right'});\n  }\n\n  \/* ---- FOOTER \u2014 disclaimer gras bordeaux centr\u00e9 ---- *\/\n  function addFooter(p,total){\n    doc.setFillColor(...BEIGE);\n    doc.rect(0, FOOTER_Y, W, 16, 'F');\n    doc.setDrawColor(...RED);\n    doc.setLineWidth(0.6);\n    doc.line(0, FOOTER_Y, W, FOOTER_Y);\n    \/* disclaimer en gras bordeaux, bien visible *\/\n    doc.setTextColor(...RED);\n    doc.setFontSize(7.5);\n    doc.setFont('helvetica','bold');\n    doc.text(clean(L.pdfFooter), W\/2, FOOTER_Y+6, {align:'center'});\n    \/* num\u00e9ro de page discret *\/\n    doc.setTextColor(160,152,144);\n    doc.setFontSize(7);\n    doc.setFont('helvetica','normal');\n    doc.text(L.pdfPage(p,total), W-M, FOOTER_Y+11, {align:'right'});\n  }\n\n  \/* ---- EN-T\u00caTE DE SECTION centr\u00e9 verticalement ---- *\/\n  function sectionHeader(num, title, yPos){\n    const bandH=18;\n    \/* bandeau beige \u2014 yPos est le bord SUP\u00c9RIEUR *\/\n    doc.setFillColor(...BEIGE);\n    doc.rect(0, yPos, W, bandH, 'F');\n    \/* centre g\u00e9om\u00e9trique exact = milieu du bandeau *\/\n    const cy=yPos + bandH\/2;      \/* ex: yPos=32, bandH=16 \u2192 cy=40 *\/\n    \/* cercle centr\u00e9 sur cy *\/\n    doc.setFillColor(...RED);\n    doc.circle(M+5, cy, 5.5, 'F');\n    \/* texte : en jsPDF l'ordonn\u00e9e est la baseline.\n       Pour du fontSize 9 (\u22483.175mm de cap-height),\n       la baseline est \u00e0 cy + capHeight\/2 \u2248 cy + 1.6 *\/\n    const baseline=cy+1.8;\n    doc.setTextColor(255,255,255);\n    doc.setFontSize(9); doc.setFont('helvetica','bold');\n    doc.text(String(num), M+5, baseline, {align:'center'});\n    doc.setTextColor(...RED);\n    doc.setFontSize(9); doc.setFont('helvetica','bold');\n    doc.text(clean(title), M+15, baseline);\n    \/* ligne horizontale sur cy (centre visuel) *\/\n    const lx=M+15+doc.getTextWidth(clean(title))+5;\n    doc.setDrawColor(...RED);\n    doc.setLineWidth(0.4);\n    doc.line(lx, cy, W-M, cy);\n    return yPos+bandH;\n  }\n\n  \/* ================================================================\n     PAGE 1 \u2014 R\u00c9SULTATS DIAGNOSTIQUES\n     ================================================================ *\/\n  addHeader();\n  y=32;\n  y=sectionHeader(1, L.pdfS2, y);\n  y+=6;\n\n  top.forEach(([name,score],i)=>{\n    const pct=Math.round((score\/max)*100);\n    const displayName=NAMES[name]||name;\n    const descLines=doc.splitTextToSize(clean(D[name]||''), W-M*2-28);\n    const blockH=descLines.length*4.2+28;\n\n    if(i===0){\n      doc.setFillColor(251,236,233);\n      doc.rect(M-2, y-2, W-M*2+4, blockH+4, 'F');\n    }\n\n    const rankColors=[[...RED],[45,45,45],[160,160,160]];\n    doc.setTextColor(...rankColors[i]);\n    doc.setFontSize(28); doc.setFont('helvetica','bold');\n    doc.text(String(pdfRanks[i]), M+5, y+18);\n\n    doc.setFontSize(6.5); doc.setFont('helvetica','bold');\n    doc.text(clean(L.pdfRank[pdfRanks[i]-1]).toUpperCase(), M+17, y+5);\n\n    doc.setFontSize(11.5); doc.setTextColor(18,18,18);\n    doc.setFont('helvetica','bold');\n    doc.text(clean(displayName), M+17, y+12.5);\n\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal');\n    doc.setTextColor(140,140,140);\n    doc.text(descLines, M+17, y+19);\n\n    doc.setFontSize(24); doc.setFont('helvetica','bold');\n    doc.setTextColor(i===0?244:218, i===0?218:212, i===0?214:206);\n    doc.text(pct+'%', W-M, y+14, {align:'right'});\n\n    const bx=M+17, by=y+blockH-4, bw=W-M*2-22, bh=2.5;\n    doc.setFillColor(...LIGHT);\n    doc.rect(bx, by, bw, bh, 'F');\n    doc.setFillColor(...rankColors[i]);\n    doc.rect(bx, by, bw*pct\/100, bh, 'F');\n\n    y+=blockH+5;\n    doc.setDrawColor(...LIGHT);\n    doc.setLineWidth(0.2);\n    doc.line(M, y, W-M, y);\n    y+=6;\n  });\n\n  \/* ================================================================\n     PAGE 2 \u2014 RECOMMANDATIONS & TRAITEMENTS\n     ================================================================ *\/\n  doc.addPage(); addHeader();\n  y=32;\n  y=sectionHeader(2, L.pdfS4, y);\n  y+=6;\n\n  top.forEach(([name],diagIdx)=>{\n    const tr=TRAITEMENTS[name];\n    if(!tr) return;\n    const displayName=clean(NAMES[name]||name);\n\n    \/* en-t\u00eate du diagnostic *\/\n    if(y+8>CONTENT_BOTTOM){ doc.addPage(); addHeader(); y=32; }\n    doc.setFillColor(...RED);\n    doc.rect(M, y, 3, 8, 'F');\n    doc.setTextColor(...RED);\n    doc.setFontSize(8.5); doc.setFont('helvetica','bold');\n    doc.text(pdfRanks[diagIdx]+'. '+displayName, M+7, y+5.8);\n    y+=12;\n\n    \/* colonnes conservateurs \/ chirurgicaux *\/\n    const colW=(W-M*2-10)\/2;\n    const colX1=M, colX2=M+colW+10;\n    const colTitle1=clean(L.colConserv).toUpperCase();\n    const colTitle2=clean(L.colChir).toUpperCase();\n\n    \/* calcul hauteur du bloc *\/\n    const lines1=tr.conserv.map(t=>doc.splitTextToSize(clean(t), colW-8));\n    const lines2=tr.chir.map(t=>doc.splitTextToSize(clean(t), colW-8));\n    const h1=lines1.reduce((a,l)=>a+l.length*4.2+3,0)+8;\n    const h2=lines2.reduce((a,l)=>a+l.length*4.2+3,0)+8;\n    const blockH=Math.max(h1,h2)+4;\n\n    if(y+blockH+4>CONTENT_BOTTOM){ doc.addPage(); addHeader(); y=32; }\n\n    \/* fond l\u00e9ger *\/\n    doc.setFillColor(250,246,242);\n    doc.rect(M, y, W-M*2, blockH, 'F');\n\n    \/* titre colonne 1 *\/\n    doc.setTextColor(...RED);\n    doc.setFontSize(6.5); doc.setFont('helvetica','bold');\n    doc.text(colTitle1, colX1+4, y+5);\n    doc.setDrawColor(...RED); doc.setLineWidth(0.2);\n    doc.line(colX1+4, y+6.5, colX1+colW-2, y+6.5);\n\n    \/* titre colonne 2 *\/\n    doc.text(colTitle2, colX2+4, y+5);\n    doc.line(colX2+4, y+6.5, colX2+colW-2, y+6.5);\n\n    let ry1=y+10, ry2=y+10;\n\n    \/* items colonne 1 *\/\n    lines1.forEach(lArr=>{\n      doc.setFillColor(...RED);\n      doc.circle(colX1+5, ry1+1.5, 1.5, 'F');\n      doc.setTextColor(55,55,55);\n      doc.setFontSize(7); doc.setFont('helvetica','normal');\n      doc.text(lArr, colX1+9, ry1+2);\n      ry1+=lArr.length*4.2+3;\n    });\n\n    \/* items colonne 2 *\/\n    lines2.forEach(lArr=>{\n      doc.setFillColor(...RED);\n      doc.circle(colX2+5, ry2+1.5, 1.5, 'F');\n      doc.setTextColor(55,55,55);\n      doc.setFontSize(7); doc.setFont('helvetica','normal');\n      doc.text(lArr, colX2+9, ry2+2);\n      ry2+=lArr.length*4.2+3;\n    });\n\n    y+=blockH+4;\n    doc.setDrawColor(...LIGHT); doc.setLineWidth(0.2);\n    doc.line(M, y, W-M, y);\n    y+=8;\n  });\n\n  \/* ================================================================\n     PAGE 3 \u2014 PREMIERS GESTES A ADOPTER (toujours sur nouvelle page)\n     ================================================================ *\/\n  doc.addPage(); addHeader();\n  y=32;\n  y=sectionHeader(3, L.pdfS3, y);\n  y+=5;\n\n  doc.setDrawColor(...LIGHT);\n  doc.setLineWidth(0.35);\n  doc.rect(M, y, W-M*2, boxH, 'S');\n  doc.setFillColor(...RED);\n  doc.rect(M, y, W-M*2, 2.5, 'F');\n  y+=10;\n\n  GESTES.forEach((g,i)=>{\n    const col=i<3?0:1, row=i%3;\n    const dotX=col===0?gDotX1:gDotX2;\n    const txtX=col===0?gTxtX1:gTxtX2;\n    const cy=y+row*ROW_H;\n    doc.setFillColor(...RED);\n    doc.circle(dotX, cy+1.5, 1.8, 'F');\n    doc.setTextColor(65,65,65);\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal');\n    doc.text(doc.splitTextToSize(clean(g), gTxtW), txtX, cy+2.5);\n  });\n  y+=boxH+8;\n\n  \/* ================================================================\n     REPONSES DU PATIENT \u2014 suite sur m\u00eame page ou nouvelle si n\u00e9cessaire\n     ================================================================ *\/\n  if(y+18+10>CONTENT_BOTTOM){ doc.addPage(); addHeader(); y=32; }\n  y=sectionHeader(4, L.pdfS1, y);\n  y+=5;\n\n  const DOT_X=M+4, TXT_X=M+12, TXT_W=W-M-TXT_X-6;\n\n  Q.forEach((q,i)=>{\n    const rep=ans[i]!==undefined?clean(q.o[ans[i]]):clean(L.noAnswer);\n    const qLines=doc.splitTextToSize(clean('Q'+(i+1)+'. '+q.t), W-M*2);\n    const rLines=doc.splitTextToSize(rep, TXT_W);\n    const qH=qLines.length*3.8+3;\n    const rH=rLines.length*4.2+2;\n\n    if(y+qH+rH+4>CONTENT_BOTTOM){ doc.addPage(); addHeader(); y=32; }\n\n    doc.setFillColor(250,246,242);\n    doc.rect(M, y, W-M*2, qH, 'F');\n    doc.setTextColor(...RED);\n    doc.setFontSize(7); doc.setFont('helvetica','bold');\n    doc.text(qLines, M+3, y+3.5);\n    y+=qH+2;\n\n    doc.setFillColor(...RED);\n    doc.circle(DOT_X, y+2.5, 1.5, 'F');\n    doc.setTextColor(45,45,45);\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal');\n    doc.text(rLines, TXT_X, y+3.5);\n    y+=rH+2;\n\n    doc.setDrawColor(...LIGHT); doc.setLineWidth(0.2);\n    doc.line(M, y, W-M, y);\n    y+=4;\n  });\n\n  \/* ---- FOOTERS SUR TOUTES LES PAGES ---- *\/\n  const total=doc.getNumberOfPages();\n  for(let p=1;p<=total;p++){\n    doc.setPage(p);\n    addFooter(p,total);\n  }\n\n  if(typeof gtag==='function'){\n    gtag('event','diagnostic_pdf_downloaded',{event_category:'Diagnostic Genou',event_label:'PDF Telecharge'});\n  }\n\n  \/* ---- T\u00c9L\u00c9CHARGEMENT ---- *\/\n  const isIOS=\/iPad|iPhone|iPod\/.test(navigator.userAgent);\n  if(isIOS){\n    const blob=doc.output('blob');\n    window.open(URL.createObjectURL(blob),'_blank');\n  } else {\n    doc.save('diagnostic-genou-sosgenougeneve.pdf');\n  }\n}\n\n\/* ---- FONCTIONS GLOBALES ---- *\/\nwindow.dgS=function(qi,i){\n  ans[qi]=i;\n  const isLast=qi===Q.length-1;\n  if(isLast){\n    renderQ(null);\n  } else {\n    cur=qi+1;\n    render('next');\n  }\n};\nwindow.dgN=function(){if(ans[cur]!==undefined){cur++;render('next');}};\nwindow.dgB=function(){if(cur>0){cur--;render('prev');}};\nwindow.dgR=function(){cur=0;ans={};el().innerHTML='';render(null);};\nrender();\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4f7e919 e-con-full e-flex e-con e-parent\" data-id=\"4f7e919\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba8b9f0 elementor-widget elementor-widget-heading\" data-id=\"ba8b9f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">LES L\u00c9SIONS DU GENOU<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b2b070 elementor-widget elementor-widget-heading\" data-id=\"0b2b070\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Quelle pathologie se cache\nderri\u00e8re votre douleur ?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1cf3b3 elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c1cf3b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Notre diagnostic couvre 15 pathologies. Quelques exemples :<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06be024 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"06be024\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbd76b5 elementor-widget elementor-widget-html\" data-id=\"cbd76b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <link rel=\"stylesheet\" href=\"https:\/\/use.typekit.net\/arboria.css\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>L\u00e9sions du genou \u2014 Pathologies<\/title>\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --accent:      #8B1C16;\n      --bg-card:     #4F00000D;\n      --bg-tag:      #4F00000D;\n      --txt:         #1a1a18;\n      --txt-muted:   #1a1a18;\n      --txt-hint:    #8B1C16;\n      --border:      #b0a898;\n      --font:        'arboria', sans-serif;\n      --card-height: 220px;\n    }\n\n    *, button, input, select, textarea { font-family: var(--font); }\n\n    body {\n      font-family: var(--font);\n      background: transparent;\n      color: var(--txt);\n      padding: 3rem 4rem;\n      min-height: 100vh;\n    }\n\n    .section { width: 100%; }\n\n    .topbar { display: flex; justify-content: flex-end; margin-bottom: 1.25rem; }\n    .counter { font-size: 14px; color: var(--txt-hint); }\n\n    .tags-wrap {\n      position: relative;\n      margin-bottom: 2rem;\n    }\n    .tags-wrap::before, .tags-wrap::after {\n      content: '';\n      position: absolute;\n      top: 0; bottom: 10px;\n      width: 48px;\n      pointer-events: none;\n      z-index: 2;\n    }\n    .tags-wrap::before {\n      left: 0;\n      background: linear-gradient(to right, transparent, transparent);\n    }\n    .tags-wrap::after {\n      right: 0;\n      background: linear-gradient(to left, transparent, transparent);\n    }\n    .tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 0; }\n    .tag {\n      padding: 8px 20px;\n      border-radius: 8px;\n      font-size: 14px;\n      cursor: pointer;\n      border: 1px solid var(--border);\n      color: var(--txt-muted);\n      background: var(--bg-tag);\n      transition: all 0.15s;\n    }\n    .tag:hover  { background: #8B1C16; border-color: #8B1C16; color: #fff; }\n    .tag.active { background: var(--accent); color: #fff; border-color: var(--accent); }\n\n    .grid-wrapper {\n      overflow: hidden;\n      margin-bottom: 2rem;\n      position: relative;\n    }\n\n    .grid-track {\n      display: flex;\n      will-change: transform;\n    }\n\n    .grid-page {\n      display: flex;\n      flex-shrink: 0;\n    }\n\n    .card {\n      border: 1px solid var(--border);\n      border-top: 3px solid var(--accent);\n      border-radius: 7px;\n      background: var(--bg-card);\n      padding: 1.5rem 1.6rem 1.3rem;\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      height: var(--card-height);\n      flex-shrink: 0;\n      overflow: hidden;\n      transition: border-color 0.15s;\n    }\n    .card:hover { border-color: var(--accent); }\n\n    .card-zone {\n      font-size: 11px;\n      color: var(--txt-hint);\n      text-transform: uppercase;\n      letter-spacing: 0.08em;\n      flex-shrink: 0;\n    }\n    .card-name {\n      font-size: 18px;\n      font-weight: 700;\n      color: var(--txt);\n      line-height: 1.3;\n      flex-shrink: 0;\n    }\n    .card-desc {\n      font-size: 14px;\n      color: var(--txt-muted);\n      line-height: 1.6;\n      flex: 1;\n      overflow: hidden;\n      display: -webkit-box;\n      -webkit-line-clamp: 3;\n      -webkit-box-orient: vertical;\n    }\n    .bar-wrap { height: 3px; background: #b0a898; border-radius: 2px; margin-top: 6px; flex-shrink: 0; }\n    .bar-fill  { height: 100%; border-radius: 2px; background: var(--accent); }\n    .urgency   { font-size: 13px; color: var(--txt-hint); flex-shrink: 0; }\n    .urgency.high { color: var(--accent); font-weight: 700; }\n\n    .bottom { display: flex; align-items: center; gap: 16px; }\n    .dots   { display: flex; gap: 6px; align-items: center; margin-right: 4px; }\n    .dot {\n      width: 7px; height: 7px;\n      border-radius: 50%;\n      background: #b0a898;\n      cursor: pointer;\n      transition: all 0.15s;\n    }\n    .dot.active { background: var(--accent); width: 20px; border-radius: 4px; }\n\n    .btn {\n      width: 35px; height: 35px;\n      min-width: 35px;\n      border-radius: 50%;\n      border: 1.5px solid #c8bfb4;\n      background: transparent;\n      cursor: pointer;\n      display: flex; align-items: center; justify-content: center;\n      flex-shrink: 0;\n    }\n    .btn.btn-next { border-color: #8B1C16; }\n    .btn svg { display: block !important; visibility: visible !important; opacity: 1 !important; overflow: visible !important; }\n    .btn:hover, .btn:focus, .btn:active { background: transparent !important; outline: none !important; box-shadow: none !important; }\n    .btn:disabled { opacity: 0.3; cursor: default; }\n\n    \/* \u2500\u2500 MOBILE \u2500\u2500 *\/\n    @media (max-width: 600px) {\n      :root { --card-height: auto; }\n      body { padding: 1.25rem 1rem 2rem; }\n      .tags { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 6px; }\n      .tags::-webkit-scrollbar { display: none; }\n      .tag { flex-shrink: 0; }\n      .tags-wrap::before { background: none; }\n      .tags-wrap::after  { background: linear-gradient(to left,  var(--bg, transparent) 0%, transparent 100%); }\n      .grid-wrapper { margin-bottom: 1.25rem; }\n      .grid-page { width: 100% !important; }\n      .card { width: 100% !important; max-width: 100%; height: auto; min-height: unset; box-sizing: border-box; }\n      .card-desc { -webkit-line-clamp: unset; }\n      .bottom { justify-content: center; }\n      .dots { flex: 1; overflow: hidden; }\n    }\n  <\/style>\n<\/head>\n<body>\n<section class=\"section\">\n\n  <div class=\"topbar\">\n    <span class=\"counter\" id=\"counter\"><\/span>\n  <\/div>\n\n  <div class=\"tags-wrap\">\n    <div class=\"tags\" id=\"tags\"><\/div>\n  <\/div>\n\n  <div class=\"grid-wrapper\" id=\"grid-wrapper\">\n    <div class=\"grid-track\" id=\"grid-track\"><\/div>\n  <\/div>\n\n  <div class=\"bottom\">\n    <button class=\"btn\" id=\"prev\">\n      <svg width=\"23\" height=\"23\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#b0a898\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"\/><\/svg>\n    <\/button>\n    <div class=\"dots\" id=\"dots\"><\/div>\n    <button class=\"btn btn-next\" id=\"next\">\n      <svg width=\"23\" height=\"23\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8B1C16\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg>\n    <\/button>\n  <\/div>\n\n<\/section>\n\n<script>\n  const PATHOLOGIES = [\n    { zone: \"Cartilage\",     name: \"Gonarthrose\",                      desc: \"D\u00e9g\u00e9n\u00e9rescence progressive du cartilage articulaire.\",                                  urgency: \"Consultation programm\u00e9e\",      sev: 55,  high: false },\n    { zone: \"Rotule\",        name: \"Syndrome f\u00e9moro-patellaire\",        desc: \"D\u00e9saxation ou hyperpression rotulienne, douleur ant\u00e9rieure.\",                           urgency: \"Consultation dans la semaine\", sev: 40,  high: false },\n    { zone: \"M\u00e9nisque\",      name: \"Rupture m\u00e9niscale\",                 desc: \"L\u00e9sion du m\u00e9nisque m\u00e9dial ou lat\u00e9ral. IRM indispensable.\",                              urgency: \"Consultation sous 48h\",        sev: 60,  high: false },\n    { zone: \"Ligament\",      name: \"Entorse LCM\",                       desc: \"L\u00e9sion du ligament collat\u00e9ral m\u00e9dial par valgus forc\u00e9.\",                                urgency: \"Consultation sous 48h\",        sev: 50,  high: false },\n    { zone: \"Tendon\",        name: \"Syndrome bandelette ilio-tibiale\",  desc: \"Friction de la bandelette sur le condyle lat\u00e9ral. Pathologie du coureur.\",              urgency: \"Consultation dans la semaine\", sev: 35,  high: false },\n    { zone: \"Tendon\",        name: \"Tendinopathie rotulienne\",          desc: \"Genou du sauteur. D\u00e9g\u00e9n\u00e9rescence du tendon patellaire.\",                                urgency: \"Consultation dans la semaine\", sev: 40,  high: false },\n    { zone: \"Ligament\",      name: \"Rupture LCA\",                       desc: \"Rupture du ligament crois\u00e9 ant\u00e9rieur, souvent sport pivot-contact.\",                   urgency: \"Consultation sous 48h\",        sev: 80,  high: false },\n    { zone: \"Kyste\",         name: \"Kyste de Baker\",                    desc: \"Distension du r\u00e9cessus post\u00e9rieur, secondaire \u00e0 une pathologie intra-articulaire.\",     urgency: \"Consultation dans la semaine\", sev: 30,  high: false },\n    { zone: \"Bursite\",       name: \"Bursite pr\u00e9rotulienne\",             desc: \"Inflammation de la bourse s\u00e9reuse pr\u00e9rotulienne.\",                                      urgency: \"Consultation dans la semaine\", sev: 35,  high: false },\n    { zone: \"Rotule\",        name: \"Luxation de rotule\",                desc: \"D\u00e9bo\u00eetement f\u00e9moropatellaire, souvent chez l'adolescente hyperlaxe.\",                  urgency: \"Urgences recommand\u00e9es\",        sev: 85,  high: true  },\n    { zone: \"Croissance\",    name: \"Osgood-Schlatter\",                  desc: \"Apophysite de la tub\u00e9rosit\u00e9 tibiale ant\u00e9rieure chez l'adolescent sportif.\",            urgency: \"Consultation dans la semaine\", sev: 30,  high: false },\n    { zone: \"Fracture\",      name: \"Fracture plateau tibial\",           desc: \"Fracture articulaire par compression axiale. Scanner indispensable.\",                  urgency: \"Urgences recommand\u00e9es\",        sev: 95,  high: true  },\n    { zone: \"Inflammatoire\", name: \"Arthrite inflammatoire\",            desc: \"PR, spondylarthrite, arthrite r\u00e9actionnelle. Bilan rhumatologique n\u00e9cessaire.\",        urgency: \"Consultation sous 48h\",        sev: 65,  high: false },\n    { zone: \"Infectieux\",    name: \"Arthrite septique\",                 desc: \"Urgence absolue. Ponction articulaire diagnostique et th\u00e9rapeutique imm\u00e9diate.\",        urgency: \"URGENCE \u2014 imm\u00e9diat\",           sev: 100, high: true  },\n    { zone: \"Os\",            name: \"SONK \/ Ost\u00e9on\u00e9crose\",               desc: \"Infarctus osseux du condyle f\u00e9moral m\u00e9dial. IRM pr\u00e9coce.\",                             urgency: \"Consultation sous 48h\",        sev: 70,  high: false },\n  ];\n\n  const VISIBLE  = 4.4;\n  const GAP      = 24;\n  const PER_PAGE = 4;\n\n  let activeZone = \"Tous\", page = 0, isAnimating = false;\n\n  const ZONES = [\"Tous\", ...new Set(PATHOLOGIES.map(p => p.zone))];\n\n  function isMobile() { return window.innerWidth <= 600; }\n\n  function getContainerWidth() {\n    const w = document.getElementById(\"grid-wrapper\");\n    return w ? w.clientWidth : 960;\n  }\n\n  function cardWidth() {\n    if (isMobile()) return getContainerWidth();\n    const w = getContainerWidth();\n    return Math.floor((w - GAP * (VISIBLE - 1)) \/ VISIBLE);\n  }\n\n  function pageWidth() {\n    if (isMobile()) return getContainerWidth();\n    const cw = cardWidth();\n    return cw * PER_PAGE + GAP * PER_PAGE;\n  }\n\n  function perPage() { return isMobile() ? 1 : PER_PAGE; }\n\n  function filtered() {\n    return activeZone === \"Tous\" ? PATHOLOGIES : PATHOLOGIES.filter(p => p.zone === activeZone);\n  }\n\n  function totalPages() { return Math.ceil(filtered().length \/ perPage()); }\n\n  function renderTags() {\n    document.getElementById(\"tags\").innerHTML = ZONES.map(z =>\n      `<button class=\"tag${z === activeZone ? \" active\" : \"\"}\" onclick=\"setZone('${z}')\">${z}<\/button>`\n    ).join(\"\");\n  }\n\n  function makeCard(p, isPeek) {\n    const cw = isMobile() ? '100%' : cardWidth() + 'px';\n    return `\n      <div class=\"card\" style=\"width:${cw}; ${isPeek ? 'opacity:0.45; pointer-events:none;' : ''}\">\n        <div class=\"card-zone\">${p.zone}<\/div>\n        <div class=\"card-name\">${p.name}<\/div>\n        <div class=\"card-desc\">${p.desc}<\/div>\n        <div class=\"bar-wrap\"><div class=\"bar-fill\" style=\"width:${p.sev}%\"><\/div><\/div>\n        <div class=\"urgency${p.high ? \" high\" : \"\"}\">${p.urgency}<\/div>\n      <\/div>\n    `;\n  }\n\n  function makePage(list, pageIndex) {\n    const pp      = perPage();\n    const slice   = list.slice(pageIndex * pp, pageIndex * pp + pp);\n    const tp      = Math.ceil(list.length \/ pp);\n    const hasNext = pageIndex < tp - 1;\n    const peek    = (!isMobile() && hasNext) ? list[pageIndex * pp + pp] : null;\n    const pw      = isMobile() ? '100%' : pageWidth() + 'px';\n\n    const cards = slice.map(p => makeCard(p, false)).join(\"\");\n    const peekHtml = peek ? makeCard(peek, true) : \"\";\n\n    return `<div class=\"grid-page\" style=\"width:${pw}; gap:${isMobile() ? 0 : GAP}px;\">${cards}${peekHtml}<\/div>`;\n  }\n\n  function buildTrack() {\n    const list = filtered();\n    const tp   = totalPages();\n    const track = document.getElementById(\"grid-track\");\n    track.style.transition = \"none\";\n    track.style.transform  = `translateX(0px)`;\n    track.innerHTML = Array.from({ length: tp }, (_, i) => makePage(list, i)).join(\"\");\n    track.getBoundingClientRect();\n    track.style.transform = `translateX(-${page * pageWidth()}px)`;\n  }\n\n  function slideTo(targetPage) {\n    if (isAnimating) return;\n    isAnimating = true;\n\n    const track = document.getElementById(\"grid-track\");\n    const pw    = pageWidth();\n\n    track.style.transition = \"transform 0.45s cubic-bezier(0.4, 0, 0.2, 1)\";\n    track.style.transform  = `translateX(-${targetPage * pw}px)`;\n\n    page = targetPage;\n    updateControls();\n\n    track.addEventListener(\"transitionend\", () => {\n      isAnimating = false;\n    }, { once: true });\n  }\n\n  function updateControls() {\n    const tp = totalPages();\n    document.getElementById(\"counter\").textContent = `${page + 1} \/ ${tp}`;\n    document.getElementById(\"prev\").disabled = page === 0;\n    document.getElementById(\"next\").disabled = page >= tp - 1;\n    const MAX_DOTS = 7;\n    let start = Math.max(0, Math.min(page - Math.floor(MAX_DOTS \/ 2), tp - MAX_DOTS));\n    let html = \"\";\n    for (let d = start; d < Math.min(start + MAX_DOTS, tp); d++) {\n      html += `<div class=\"dot${d === page ? \" active\" : \"\"}\" onclick=\"goTo(${d})\"><\/div>`;\n    }\n    document.getElementById(\"dots\").innerHTML = html;\n  }\n\n  function setZone(z) {\n    activeZone = z;\n    page = 0;\n    renderTags();\n    buildTrack();\n    updateControls();\n  }\n\n  function goTo(targetPage) {\n    if (targetPage === page) return;\n    slideTo(targetPage);\n  }\n\n  document.getElementById(\"prev\").onclick = () => {\n    if (page > 0) slideTo(page - 1);\n  };\n  document.getElementById(\"next\").onclick = () => {\n    if (page < totalPages() - 1) slideTo(page + 1);\n  };\n\n  \/\/ Swipe tactile \u2014 ajout mobile\n  let tx0 = 0, ty0 = 0;\n  const wrapper = document.getElementById(\"grid-wrapper\");\n  wrapper.addEventListener(\"touchstart\", e => {\n    tx0 = e.touches[0].clientX;\n    ty0 = e.touches[0].clientY;\n  }, { passive: true });\n  wrapper.addEventListener(\"touchend\", e => {\n    const dx = e.changedTouches[0].clientX - tx0;\n    const dy = e.changedTouches[0].clientY - ty0;\n    if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 40) {\n      dx < 0 ? slideTo(Math.min(page + 1, totalPages() - 1)) : slideTo(Math.max(page - 1, 0));\n    }\n  }, { passive: true });\n\n  renderTags();\n  buildTrack();\n  updateControls();\n\n  \/\/ D\u00e9grad\u00e9 tags \u2014 d\u00e9tecte la couleur de fond du parent\n  (function() {\n    const wrap = document.querySelector('.tags-wrap');\n    if (!wrap) return;\n    let el = wrap.parentElement;\n    let bg = '';\n    while (el && el !== document.body) {\n      const c = getComputedStyle(el).backgroundColor;\n      if (c && c !== 'rgba(0, 0, 0, 0)' && c !== 'transparent') { bg = c; break; }\n      el = el.parentElement;\n    }\n    if (!bg) bg = getComputedStyle(document.body).backgroundColor;\n    if (!bg || bg === 'rgba(0, 0, 0, 0)') bg = '#f5f3ef';\n    wrap.style.setProperty('--bg', bg);\n  })();\n\n  window.addEventListener(\"resize\", () => {\n    page = 0;\n    buildTrack();\n    updateControls();\n  });\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dfb9203 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"dfb9203\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-61d8bfa elementor-widget elementor-widget-text-editor\" data-id=\"61d8bfa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ce test clinique informatif a \u00e9t\u00e9 con\u00e7u pour vous aider \u00e0 structurer vos sympt\u00f4mes et \u00e0 identifier les pathologies les plus probables avant une consultation sp\u00e9cialis\u00e9e. Il ne remplace pas un examen m\u00e9dical, mais constitue un premier pas essentiel pour comprendre ce qui se passe dans votre genou.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-29384ea e-grid e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-con e-parent\" data-id=\"29384ea\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-621a3c2 e-con-full e-flex e-con e-child\" data-id=\"621a3c2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b49a40b e-con-full e-grid e-con e-child\" data-id=\"b49a40b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-77eaa8b e-con-full e-flex e-con e-child\" data-id=\"77eaa8b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fb160b elementor-widget elementor-widget-heading\" data-id=\"1fb160b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">3<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e083451 elementor-widget elementor-widget-text-editor\" data-id=\"e083451\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>pathologies principales probables identifi\u00e9es<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6174e95 e-con-full e-flex e-con e-child\" data-id=\"6174e95\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f985c14 elementor-widget elementor-widget-heading\" data-id=\"f985c14\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2'<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2951398 elementor-widget elementor-widget-text-editor\" data-id=\"2951398\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>pour obtenir votre profil<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-faec48d e-con-full e-flex e-con e-child\" data-id=\"faec48d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-caa17fa elementor-widget elementor-widget-heading\" data-id=\"caa17fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">15<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-911b8e0 elementor-widget elementor-widget-text-editor\" data-id=\"911b8e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>questions <br \/>cibl\u00e9es<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9d6cc6a e-con-full e-flex e-con e-parent\" data-id=\"9d6cc6a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44efad9 elementor-widget elementor-widget-heading\" data-id=\"44efad9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">AGIR MAINTENANT<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4298e2 elementor-widget elementor-widget-heading\" data-id=\"f4298e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">VOTRE GENOU NE PEUT PAS <br> ATTENDRE<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-be97764 elementor-widget__width-inherit elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"be97764\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b907bf6 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"b907bf6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Vous avez identifi\u00e9 vos sympt\u00f4mes gr\u00e2ce au test. Pour confirmer le diagnostic et d\u00e9finir le traitement adapt\u00e9 \u00e0 votre situation, une consultation sp\u00e9cialis\u00e9e reste indispensable.<\/p><p>Le Dr Coulin vous re\u00e7oit dans ses cabinets \u00e0 Gen\u00e8ve avec un plan de traitement complet d\u00e8s la premi\u00e8re visite. Son expertise en chirurgie orthop\u00e9dique du genou assure une prise en charge pr\u00e9cise, r\u00e9active et personnalis\u00e9e.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b172e8c elementor-widget elementor-widget-button\" data-id=\"b172e8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/sosgenougeneve.ch\/prendre-rendez-vous\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">PRENDRE RENDEZ-VOUS<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9478dc elementor-widget elementor-widget-text-editor\" data-id=\"f9478dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>+41 22 348 80 00<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>https:\/\/sosgenougeneve.ch\/wp-content\/uploads\/2026\/06\/Genou-video-SOS-genou.mp4 Douleurs au genou 15 questions pour orienter votre diagnostic Identifiez votre profil symptomatique en r\u00e9pondant aux questions suivantes : LES L\u00c9SIONS DU GENOU Quelle pathologie se cache derri\u00e8re votre douleur ? Notre diagnostic couvre 15 pathologies. Quelques exemples : L\u00e9sions du genou \u2014 Pathologies Ce test clinique informatif a \u00e9t\u00e9 con\u00e7u pour vous aider [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-26846","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/pages\/26846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/comments?post=26846"}],"version-history":[{"count":215,"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/pages\/26846\/revisions"}],"predecessor-version":[{"id":29771,"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/pages\/26846\/revisions\/29771"}],"wp:attachment":[{"href":"https:\/\/sosgenougeneve.ch\/en\/wp-json\/wp\/v2\/media?parent=26846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}