[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-mutualite-fr":83,"footer-cities-fr":147},[4,14,22,30,38,45,53,60,67,75],{"seo_content":5,"id":8,"name":9,"slug":10,"parentId":7,"lang":11,"_count":12},[6],{"page_slug":7},null,"cmkzhl7xm00dbulbc93h4qog5","Juridique","avocats","fr-FR",{"experts":13},8,{"seo_content":15,"id":17,"name":18,"slug":19,"parentId":7,"lang":11,"_count":20},[16],{"page_slug":7},"cmkzhl84700djulbcbv6pzu9e","Informatique","informaticiens",{"experts":21},3,{"seo_content":23,"id":25,"name":26,"slug":27,"parentId":7,"lang":11,"_count":28},[24],{"page_slug":7},"cmkzhlaos00gnulbc07i9jrco","Amélioration de la Maison","artisans",{"experts":29},4,{"seo_content":31,"id":33,"name":34,"slug":35,"parentId":7,"lang":11,"_count":36},[32],{"page_slug":7},"cmkzhlaqg00gpulbcx38bwoc2","Général","divers-generalistes",{"experts":37},0,{"seo_content":39,"id":41,"name":42,"slug":43,"parentId":7,"lang":11,"_count":44},[40],{"page_slug":7},"cmkzhlbvq00i3ulbcutdbcz50","Électronique Grand Public","techniciens-electronique",{"experts":21},{"seo_content":46,"id":48,"name":49,"slug":50,"parentId":7,"lang":11,"_count":51},[47],{"page_slug":7},"cmkzhlcaw00ilulbc38pxoogr","Santé","medecins",{"experts":52},5,{"seo_content":54,"id":56,"name":57,"slug":58,"parentId":7,"lang":11,"_count":59},[55],{"page_slug":7},"cmkzhlcmi00izulbcxva1m47f","Gestion de Patrimoine","conseillers-patrimoniaux",{"experts":21},{"seo_content":61,"id":63,"name":64,"slug":65,"parentId":7,"lang":11,"_count":66},[62],{"page_slug":7},"cmkzhldcv00jvulbcmcd5a7mk","Animaux et Vétérinaires","veterinaires",{"experts":21},{"seo_content":68,"id":70,"name":71,"slug":72,"parentId":7,"lang":11,"_count":73},[69],{"page_slug":7},"cmkzhldrr00kdulbchxfo67eg","Mécanique et Réparation","mecaniciens",{"experts":74},1,{"seo_content":76,"id":78,"name":79,"slug":80,"parentId":7,"lang":11,"_count":81},[77],{"page_slug":7},"cmkzhl9l300fbulbcv3i8q8p3","Aide aux Devoirs","professeurs-particuliers",{"experts":82},6,{"slug":84,"title":85,"page_title":86,"description":87,"content_md":88,"local_slug":84,"json_ld":89,"faq":110,"tool_html":141,"source":142,"category":143,"audience":144,"publish_mode":145,"hero_image":146,"hero_image_alt":85},"ccn-mutualite","CCN de la Mutualité — calculateur complet","Calculateur CCN Mutualité IDCC 2128 | Expert Zoom","Outil interactif couvrant indemnité de licenciement, préavis, grille salariale RMAG, 13e mois et congés d'ancienneté de la CCN Mutualité (IDCC 2128).","Ce calculateur couvre les 5 principales dérogations de la CCN de la Mutualité (IDCC 2128) : indemnité de licenciement (½ mois × années, plus favorable que la loi), durée du préavis par catégorie, grille salariale RMAG en points (valeur 2026 : 8,63 €), 13,55 mensualités obligatoires, et congés d'ancienneté supplémentaires.",[90],{"name":91,"@type":92,"about":93,"author":98,"@context":101,"isPartOf":102,"inLanguage":105,"description":106,"operatingSystem":107,"applicationCategory":108,"isAccessibleForFree":109},"Calculateur CCN Mutualité — IDCC 2128","WebApplication",{"name":94,"@type":95,"sameAs":96,"identifier":97},"Convention collective nationale de la Mutualité","Thing","https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635784","IDCC 2128",{"name":99,"@type":100},"Expert-Zoom","Organization","https:\u002F\u002Fschema.org",{"url":103,"@type":104},"\u002Ffr\u002Fmagazine\u002Fjuridique\u002Fles-conventions-collectives-en-france","Article","fr","Outil interactif couvrant indemnité de licenciement, préavis, grille salariale RMAG, 13e mois et congés d'ancienneté de la convention collective nationale de la Mutualité (IDCC 2128).","All","FinanceApplication",true,[111,114,117,120,123,126,129,132,135,138],{"a":112,"q":113},"La CCN Mutualité (IDCC 2128) prévoit une formule plus favorable que la loi : ½ mois de salaire brut de référence par année d'ancienneté, plafonnée à 15 demi-mois (7,5 mois). Par exemple, pour 10 ans d'ancienneté et un salaire de 2 500 €, l'indemnité est de 12 500 € (contre 6 250 € selon le seul code du travail).","Comment calculer l'indemnité de licenciement dans la CCN Mutualité ?",{"a":115,"q":116},"La CCN Mutualité distingue deux catégories : les employés bénéficient d'un préavis de 1 mois (moins de 2 ans d'ancienneté) ou 2 mois (2 ans et plus). Les techniciens, agents d'encadrement et cadres ont un préavis de 3 mois quelle que soit leur ancienneté. Durant le préavis, 2 heures par jour sont accordées pour la recherche d'emploi, rémunérées.","Quelle est la durée du préavis dans la convention collective de la Mutualité ?",{"a":118,"q":119},"La RMAG (Rémunération Minimale Annuelle Garantie) est le plancher salarial de la CCN Mutualité, calculé en points. La valeur du point est de 8,63 € en 2026. Le plancher minimum conventionnel est fixé à 22 100 € brut annuel en 2026. Les salaires sont versés en 13,55 mensualités.","Qu'est-ce que la RMAG dans la CCN Mutualité ?",{"a":121,"q":122},"Oui, la CCN Mutualité garantit 13,55 mensualités par an : 12 mensualités ordinaires, plus 0,55 mois versé en juin et 1 mois entier versé en décembre. Ce système est obligatoire pour tous les salariés relevant de la convention, dès l'embauche.","La CCN Mutualité prévoit-elle un 13ème mois ?",{"a":124,"q":125},"La CCN Mutualité accorde les 30 jours ouvrables légaux (5 semaines), auxquels s'ajoutent des jours de congés supplémentaires en fonction de l'ancienneté. Les employés bénéficient par exemple de 1 jour supplémentaire dès 5 ans d'ancienneté, jusqu'à 4 jours à 20 ans. Les cadres et techniciens ont des droits supplémentaires plus avantageux.","Combien de jours de congés payés prévoie la CCN Mutualité ?",{"a":127,"q":128},"La CCN Mutualité renvoie aux dispositions légales du code du travail pour les heures supplémentaires : majoration de 25 % pour les 8 premières heures au-delà de 35h, puis 50 % au-delà. Le contingent annuel est fixé à 100 heures. La convention encourage de préférer le repos compensateur équivalent au paiement.","Quelles sont les heures supplémentaires dans la CCN Mutualité ?",{"a":130,"q":131},"La CCN Mutualité fixe la période d'essai à : 1 mois pour les employés, 3 mois pour les techniciens et agents d'encadrement (TAM) et cadres C1\u002FC2, 6 mois pour les cadres C3\u002FC4 et directeurs. Le renouvellement est possible si prévu au contrat.","Quelle est la période d'essai dans la CCN Mutualité IDCC 2128 ?",{"a":133,"q":134},"Oui. En cas d'inaptitude professionnelle (liée à un accident du travail ou une maladie professionnelle) sans possibilité de reclassement, la CCN Mutualité prévoit le doublement de l'indemnité de licenciement conventionnelle. Cette règle s'applique en sus de l'indemnité spéciale légale prévue par le code du travail.","L'indemnité de licenciement est-elle doublée en cas d'inaptitude dans la CCN Mutualité ?",{"a":136,"q":137},"Le salaire de référence pour le calcul de l'indemnité de licenciement est la moyenne des 12 derniers mois de salaire brut, incluant les primes et avantages en nature. Cette moyenne ne doit pas être inférieure au salaire conventionnel minimal applicable.","Comment est calculé le salaire de référence pour l'indemnité dans la CCN Mutualité ?",{"a":139,"q":140},"Le texte intégral de la CCN Mutualité (IDCC 2128, Brochure 3300, du 31 janvier 2000) est disponible sur Légifrance à l'adresse : legifrance.gouv.fr. Il est également consultable via le Code du travail numérique (code.travail.gouv.fr) et les sites spécialisés LégiSocial ou Editions Législatives.","Où trouver le texte officiel de la convention collective de la Mutualité ?","\u003C!DOCTYPE html>\n\u003Chtml lang=\"fr\">\n\u003Chead>\n  \u003Cmeta charset=\"utf-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  \u003Ctitle>Calculateur CCN Mutualité IDCC 2128\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    :root {\n      --bg: #fafaf9;\n      --surface: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --accent-dark: #1d4ed8;\n      --text: #1c1917;\n      --muted: #78716c;\n      --success-bg: #f0fdf4;\n      --success-border: #bbf7d0;\n      --success-text: #166534;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --info-text: #1e40af;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n    }\n    body { background: var(--bg); font-family: system-ui, -apple-system, sans-serif; color: var(--text); font-size: 0.9375rem; line-height: 1.5; }\n    .tool-root { max-width: 680px; margin: 0 auto; padding: 1.25rem 1rem 2rem; }\n    .tool-header { margin-bottom: 1.25rem; }\n    .tool-header h1 { font-size: 1.125rem; font-weight: 700; color: var(--text); }\n    .tool-header .idcc-badge { display: inline-flex; align-items: center; gap: 0.375rem; background: var(--accent-light); color: var(--accent); font-size: 0.75rem; font-weight: 600; padding: 0.25rem 0.625rem; border-radius: 999px; margin-top: 0.375rem; }\n    \u002F* Tabs *\u002F\n    .tabs { display: flex; gap: 0.25rem; border-bottom: 2px solid var(--border); margin-bottom: 1.25rem; overflow-x: auto; padding-bottom: 0; }\n    .tab-btn { flex-shrink: 0; padding: 0.5rem 0.875rem; font-size: 0.8125rem; font-weight: 600; color: var(--muted); background: none; border: none; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: color 0.15s, border-color 0.15s; white-space: nowrap; }\n    .tab-btn:hover { color: var(--accent); }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); }\n    \u002F* Panels *\u002F\n    .panel { display: none; }\n    .panel.active { display: block; }\n    \u002F* Rule callout *\u002F\n    .rule-callout { display: flex; gap: 0.625rem; align-items: flex-start; background: var(--info-bg); border: 1px solid var(--info-border); border-radius: var(--radius-sm); padding: 0.75rem 1rem; margin-bottom: 1rem; }\n    .rule-callout svg { flex-shrink: 0; color: var(--accent); margin-top: 0.125rem; }\n    .rule-callout p { font-size: 0.875rem; color: var(--info-text); line-height: 1.45; }\n    \u002F* Form elements *\u002F\n    .form-group { margin-bottom: 1rem; }\n    .form-label { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.875rem; font-weight: 600; color: var(--text); margin-bottom: 0.375rem; }\n    .form-label .val { font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\n    input[type=\"range\"] { width: 100%; accent-color: var(--accent); cursor: pointer; }\n    select { width: 100%; padding: 0.5rem 0.75rem; border: 1.5px solid var(--border); border-radius: var(--radius-sm); font-size: 0.875rem; color: var(--text); background: var(--surface); cursor: pointer; appearance: none; background-image: url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2378716c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C\u002Fpolyline%3E%3C\u002Fsvg%3E\"); background-repeat: no-repeat; background-position: right 0.625rem center; }\n    \u002F* Pills *\u002F\n    .pills { display: flex; gap: 0.5rem; flex-wrap: wrap; }\n    .pill { padding: 0.375rem 0.875rem; border: 1.5px solid var(--border); border-radius: 999px; font-size: 0.8125rem; font-weight: 600; color: var(--muted); cursor: pointer; transition: all 0.15s; background: var(--surface); }\n    .pill:hover { border-color: var(--accent); color: var(--accent); }\n    .pill.active { background: var(--accent); border-color: var(--accent); color: #fff; }\n    \u002F* Result card *\u002F\n    .result-card { background: var(--success-bg); border: 2px solid var(--success-border); border-radius: var(--radius); padding: 1rem 1.25rem; margin-top: 1.25rem; display: flex; align-items: center; gap: 0.75rem; }\n    .result-card svg { color: #16a34a; flex-shrink: 0; }\n    .result-card .label { font-size: 0.8125rem; color: var(--success-text); font-weight: 600; }\n    .result-card .amount { font-size: 1.5rem; font-weight: 800; color: var(--success-text); font-variant-numeric: tabular-nums; }\n    .result-card .sub { font-size: 0.8125rem; color: #4ade80; }\n    \u002F* Sub-result rows *\u002F\n    .result-rows { margin-top: 0.625rem; display: flex; flex-direction: column; gap: 0.25rem; }\n    .result-row { display: flex; justify-content: space-between; font-size: 0.8125rem; color: var(--success-text); }\n    .result-row .rk { font-weight: 500; }\n    .result-row .rv { font-weight: 700; font-variant-numeric: tabular-nums; }\n    \u002F* Grid table *\u002F\n    .grid-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }\n    .grid-table th { background: var(--accent-light); color: var(--accent-dark); font-weight: 700; padding: 0.5rem 0.75rem; text-align: left; border-bottom: 2px solid var(--info-border); }\n    .grid-table td { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); }\n    .grid-table tr:last-child td { border-bottom: none; }\n    .grid-table tr.highlight td { background: var(--success-bg); font-weight: 700; color: var(--success-text); }\n    \u002F* Disclaimer *\u002F\n    .disclaimer { font-size: 0.75rem; color: var(--muted); margin-top: 1.5rem; line-height: 1.5; border-top: 1px solid var(--border); padding-top: 0.875rem; }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    \u002F* Toggle *\u002F\n    .toggle-group { display: flex; gap: 0.5rem; }\n    .toggle-btn { flex: 1; padding: 0.5rem; border: 1.5px solid var(--border); border-radius: var(--radius-sm); font-size: 0.8125rem; font-weight: 600; color: var(--muted); cursor: pointer; background: var(--surface); transition: all 0.15s; text-align: center; }\n    .toggle-btn:hover { border-color: var(--accent); color: var(--accent); }\n    .toggle-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }\n    \u002F* Salary display *\u002F\n    .salary-display { margin-top: 1rem; background: var(--surface); border: 1.5px solid var(--border); border-radius: var(--radius); padding: 0.875rem 1rem; }\n    .salary-display .sd-row { display: flex; justify-content: space-between; align-items: center; padding: 0.375rem 0; border-bottom: 1px solid var(--border); font-size: 0.875rem; }\n    .salary-display .sd-row:last-child { border-bottom: none; padding-bottom: 0; }\n    .salary-display .sd-label { color: var(--muted); }\n    .salary-display .sd-value { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text); }\n    .salary-display .sd-value.accent { color: var(--accent); font-size: 1rem; }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 2128 — deviations\n     indemnite: L1234-9 → 1\u002F2 mois × années, plafonné à 15 demi-mois (source: Art. 16.2 CCN Mutualité)\n     preavis: L1234-1 → Employés : 1 mois (\u003C2 ans), 2 mois (≥2 ans) ; Cadres & TAM : 3 mois (source: CCN Mutualité Art. préavis)\n     salaire-min: SMIC → RMAG points (valeur point 2026 = 8,63 €) + 13,55 mensualités (source: Avenant salaires 2026)\n     prime-annuelle: aucun minimum légal → 13,55 mensualités obligatoires (0,55 en juin + 1 en décembre) (source: Art. 11 CCN Mutualité)\n     conges: L3141-3 → 30 jours + congés ancienneté (source: CCN Mutualité)\n     heures-supp: conforme L3121-36 — SKIP -->\n\n\u003Cmain class=\"tool-root\">\n  \u003Cheader class=\"tool-header\">\n    \u003Ch1>Convention collective de la Mutualité\u003C\u002Fh1>\n    \u003Cdiv class=\"idcc-badge\">\n      \u003Ci data-lucide=\"file-text\" style=\"width:13px;height:13px;\">\u003C\u002Fi>\n      IDCC 2128\n    \u003C\u002Fdiv>\n  \u003C\u002Fheader>\n\n  \u003C!-- TABS -->\n  \u003Cdiv class=\"tabs\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\">Indemnité\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">Préavis\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire\" role=\"tab\">Grille salaires\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime\" role=\"tab\">13\u003Csup>e\u003C\u002Fsup> mois\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"conges\" role=\"tab\">Congés\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL : Indemnité de licenciement -->\n  \u003Cdiv class=\"panel\" data-panel=\"indemnite\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:18px;height:18px;flex-shrink:0;margin-top:2px;\">\u003C\u002Fi>\n      \u003Cp>La CCN Mutualité prévoit \u003Cstrong>1\u002F2 mois de salaire × années d'ancienneté\u003C\u002Fstrong>, plafonnée à 15 demi-mois, soit bien plus favorable que le code du travail (1\u002F4 mois × ans ≤ 10 ans + 1\u002F3 mois × ans &gt; 10 ans).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Salaire brut mensuel de référence \u003Cspan class=\"val\" id=\"ind-sal-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"ind-sal\" min=\"1400\" max=\"8000\" step=\"50\" value=\"2500\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Ancienneté \u003Cspan class=\"val\" id=\"ind-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"ind-anc\" min=\"1\" max=\"35\" step=\"1\" value=\"5\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\" style=\"margin-bottom:0.5rem;\">Motif de rupture\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\">\n        \u003Cbutton class=\"pill active\" data-motif=\"licenciement\">Licenciement\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-motif=\"inaptitude\">Inaptitude professionnelle\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"ind-result\">\n      \u003Ci data-lucide=\"circle-check-big\" style=\"width:24px;height:24px;\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Indemnité conventionnelle estimée\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"ind-amount\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-rows\" id=\"ind-rows\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL : Préavis -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:18px;height:18px;flex-shrink:0;margin-top:2px;\">\u003C\u002Fi>\n      \u003Cp>La CCN Mutualité définit des durées de préavis par catégorie et ancienneté. Les cadres, techniciens et agents d'encadrement bénéficient d'un préavis de \u003Cstrong>3 mois\u003C\u002Fstrong>, quel que soit leur ancienneté. Les employés : 1 mois (moins de 2 ans) ou 2 mois (2 ans et plus).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\" style=\"margin-bottom:0.5rem;\">Catégorie professionnelle\u003C\u002Flabel>\n      \u003Cdiv class=\"toggle-group\" id=\"pre-cat\">\n        \u003Cbutton class=\"toggle-btn active\" data-cat=\"employe\">Employé(e)\u003C\u002Fbutton>\n        \u003Cbutton class=\"toggle-btn\" data-cat=\"tam\">Technicien \u002F Cadre\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv id=\"pre-anc-group\" class=\"form-group\">\n      \u003Clabel class=\"form-label\">Ancienneté \u003Cspan class=\"val\" id=\"pre-anc-val\">1 an\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"pre-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"1\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\" style=\"margin-bottom:0.5rem;\">Type de rupture\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"pre-type\">\n        \u003Cbutton class=\"pill active\" data-type=\"licenciement\">Licenciement\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-type=\"demission\">Démission\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"pre-result\">\n      \u003Ci data-lucide=\"clock\" style=\"width:24px;height:24px;\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Durée du préavis conventionnel\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"pre-amount\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-rows\" id=\"pre-rows\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL : Grille salaires -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:18px;height:18px;flex-shrink:0;margin-top:2px;\">\u003C\u002Fi>\n      \u003Cp>La CCN Mutualité prévoit une \u003Cstrong>Rémunération Minimale Annuelle Garantie (RMAG)\u003C\u002Fstrong> calculée en points (valeur 2026 : \u003Cstrong>8,63 €\u002Fpoint\u003C\u002Fstrong>). La rémunération se verse en \u003Cstrong>13,55 mensualités\u003C\u002Fstrong> (0,55 mois en juin + 1 mois plein en décembre).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\" style=\"margin-bottom:0.5rem;\">Catégorie\u003C\u002Flabel>\n      \u003Cselect id=\"sal-cat\">\n        \u003Coption value=\"employe_e1\">Employé – Échelon 1\u003C\u002Foption>\n        \u003Coption value=\"employe_e2\">Employé – Échelon 2\u003C\u002Foption>\n        \u003Coption value=\"employe_e3\">Employé – Échelon 3\u003C\u002Foption>\n        \u003Coption value=\"tam_t1\">Technicien \u002F Agent encadrement – T1\u003C\u002Foption>\n        \u003Coption value=\"tam_t2\">Technicien \u002F Agent encadrement – T2\u003C\u002Foption>\n        \u003Coption value=\"cadre_c1\">Cadre – C1\u003C\u002Foption>\n        \u003Coption value=\"cadre_c2\">Cadre – C2\u003C\u002Foption>\n        \u003Coption value=\"cadre_c3\">Cadre – C3\u003C\u002Foption>\n        \u003Coption value=\"cadre_c4\">Cadre – C4\u003C\u002Foption>\n        \u003Coption value=\"directeur\">Directeur\u003C\u002Foption>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Heures hebdomadaires \u003Cspan class=\"val\" id=\"sal-h-val\">35h\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"sal-h\" min=\"17.5\" max=\"39\" step=\"0.5\" value=\"35\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"salary-display\" id=\"sal-display\">\n      \u003Cdiv class=\"sd-row\">\u003Cspan class=\"sd-label\">RMAG annuel brut\u003C\u002Fspan>\u003Cspan class=\"sd-value accent\" id=\"sal-rmag\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"sd-row\">\u003Cspan class=\"sd-label\">Mensualité ordinaire (× 12)\u003C\u002Fspan>\u003Cspan class=\"sd-value\" id=\"sal-mensuel\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"sd-row\">\u003Cspan class=\"sd-label\">Complément juin (0,55 mois)\u003C\u002Fspan>\u003Cspan class=\"sd-value\" id=\"sal-juin\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"sd-row\">\u003Cspan class=\"sd-label\">13\u003Csup>e\u003C\u002Fsup> mois – décembre\u003C\u002Fspan>\u003Cspan class=\"sd-value\" id=\"sal-dec\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"sd-row\">\u003Cspan class=\"sd-label\">Plancher 2026 (minimum CCN)\u003C\u002Fspan>\u003Cspan class=\"sd-value\" id=\"sal-floor\">22 100 €\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL : 13e mois -->\n  \u003Cdiv class=\"panel\" data-panel=\"prime\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:18px;height:18px;flex-shrink:0;margin-top:2px;\">\u003C\u002Fi>\n      \u003Cp>La CCN Mutualité garantit \u003Cstrong>13,55 mensualités\u003C\u002Fstrong> par an : 0,55 mois versé en juin et 1 mois entier versé en décembre. Cela est obligatoire dès l'embauche — aucun équivalent légal n'existe dans le code du travail.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Salaire mensuel brut \u003Cspan class=\"val\" id=\"prime-sal-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"prime-sal\" min=\"1400\" max=\"8000\" step=\"50\" value=\"2500\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Ancienneté \u003Cspan class=\"val\" id=\"prime-anc-val\">3 ans\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"prime-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"3\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"prime-result\">\n      \u003Ci data-lucide=\"banknote\" style=\"width:24px;height:24px;\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Total annuel brut estimé\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"prime-total\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-rows\" id=\"prime-rows\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL : Congés -->\n  \u003Cdiv class=\"panel\" data-panel=\"conges\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:18px;height:18px;flex-shrink:0;margin-top:2px;\">\u003C\u002Fi>\n      \u003Cp>La CCN Mutualité prévoit les \u003Cstrong>30 jours ouvrables légaux\u003C\u002Fstrong> auxquels s'ajoutent des \u003Cstrong>jours de congés supplémentaires d'ancienneté\u003C\u002Fstrong> selon la catégorie professionnelle et la durée de présence.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\" style=\"margin-bottom:0.5rem;\">Catégorie professionnelle\u003C\u002Flabel>\n      \u003Cdiv class=\"toggle-group\" id=\"cong-cat\">\n        \u003Cbutton class=\"toggle-btn active\" data-cat=\"employe\">Employé(e)\u003C\u002Fbutton>\n        \u003Cbutton class=\"toggle-btn\" data-cat=\"tam\">Technicien \u002F Cadre\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-group\">\n      \u003Clabel class=\"form-label\">Ancienneté \u003Cspan class=\"val\" id=\"cong-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"cong-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"5\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"cong-result\">\n      \u003Ci data-lucide=\"sun\" style=\"width:24px;height:24px;\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Jours de congés annuels (ouvrables)\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"cong-total\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-rows\" id=\"cong-rows\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- DISCLAIMER -->\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN IDCC 2128 (Convention collective nationale de la Mutualité du 31 janvier 2000).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635784\" target=\"_blank\" rel=\"noopener\">Légifrance\u003C\u002Fa>.\n    Pour validation légale, \u003Ca href=\"\u002Fask\" target=\"_top\">contactez un expert\u003C\u002Fa>.\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── Formatters ─────────────────────────────────────────────────────────────\nconst fmtEur = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\nconst fmtEurDec = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 });\n\n\u002F\u002F ─── Salary grid (RMAG 2026 — valeur point 8,63 €) ──────────────────────────\n\u002F\u002F Approximate point values by category (full-time 35h reference)\nconst POINT_VALUE = 8.63;\nconst SALARIES_GRID = {\n  employe_e1: { points: 303, label: 'Employé E1' },\n  employe_e2: { points: 330, label: 'Employé E2' },\n  employe_e3: { points: 358, label: 'Employé E3' },\n  tam_t1:     { points: 388, label: 'Technicien T1' },\n  tam_t2:     { points: 420, label: 'Technicien T2' },\n  cadre_c1:   { points: 460, label: 'Cadre C1' },\n  cadre_c2:   { points: 510, label: 'Cadre C2' },\n  cadre_c3:   { points: 580, label: 'Cadre C3' },\n  cadre_c4:   { points: 660, label: 'Cadre C4' },\n  directeur:  { points: 780, label: 'Directeur' },\n};\nconst FLOOR_ANNUAL = 22100;\nconst MENSUALITES = 13.55;\n\n\u002F\u002F ─── Tab system ──────────────────────────────────────────────────────────────\nconst tabBtns = document.querySelectorAll('.tab-btn');\nconst panels  = document.querySelectorAll('.panel');\n\nfunction activate(id) {\n  tabBtns.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n  panels.forEach(p => {\n    const active = p.dataset.panel === id;\n    p.classList.toggle('active', active);\n    p.style.display = active ? 'block' : 'none';\n  });\n  try { history.replaceState(null, '', '#' + id); } catch(e){}\n  requestAnimationFrame(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n}\n\ntabBtns.forEach(t => t.addEventListener('click', () => {\n  activate(t.dataset.tab);\n  computeAll();\n}));\n\n\u002F\u002F ─── ResizeObserver ─────────────────────────────────────────────────────────\nconst ro = new ResizeObserver(() => {\n  const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n  parent.postMessage({ type: 'resize', height: h }, '*');\n});\nro.observe(document.documentElement);\n\n\u002F\u002F ─── INDEMNITÉ ───────────────────────────────────────────────────────────────\nlet indState = { salaire: 2500, anciennete: 5, motif: 'licenciement' };\n\nfunction computeIndemnite(s) {\n  const halfMonths = s.anciennete; \u002F\u002F 1\u002F2 mois × années\n  const capped = Math.min(halfMonths, 15); \u002F\u002F plafonné à 15 demi-mois\n  let coeff = capped * 0.5;\n  const brut = s.salaire * coeff;\n  const final = s.motif === 'inaptitude' ? brut * 2 : brut;\n  return { demi_mois: capped, coeff, brut, final, doubled: s.motif === 'inaptitude' };\n}\n\nfunction renderIndemnite() {\n  const r = computeIndemnite(indState);\n  document.getElementById('ind-amount').textContent = fmtEur.format(r.final);\n  const rows = document.getElementById('ind-rows');\n  rows.innerHTML = `\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Formule CCN\u003C\u002Fspan>\u003Cspan class=\"rv\">${r.coeff.toFixed(2)} mois × ${fmtEur.format(indState.salaire)}\u003C\u002Fspan>\u003C\u002Fdiv>\n    ${r.doubled ? '\u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">× 2 (inaptitude professionnelle)\u003C\u002Fspan>\u003Cspan class=\"rv\">' + fmtEur.format(r.brut) + ' → ' + fmtEur.format(r.final) + '\u003C\u002Fspan>\u003C\u002Fdiv>' : ''}\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Plafond (15 demi-mois)\u003C\u002Fspan>\u003Cspan class=\"rv\">${r.capped || r.demi_mois} demi-mois utilisés\u003C\u002Fspan>\u003C\u002Fdiv>\n  `;\n}\n\ndocument.getElementById('ind-sal').addEventListener('input', e => {\n  indState.salaire = +e.target.value;\n  document.getElementById('ind-sal-val').textContent = fmtEur.format(indState.salaire);\n  renderIndemnite();\n});\ndocument.getElementById('ind-anc').addEventListener('input', e => {\n  indState.anciennete = +e.target.value;\n  document.getElementById('ind-anc-val').textContent = indState.anciennete + ' an' + (indState.anciennete > 1 ? 's' : '');\n  renderIndemnite();\n});\ndocument.querySelectorAll('[data-motif]').forEach(btn => {\n  btn.addEventListener('click', () => {\n    indState.motif = btn.dataset.motif;\n    document.querySelectorAll('[data-motif]').forEach(b => b.classList.toggle('active', b.dataset.motif === indState.motif));\n    renderIndemnite();\n  });\n});\n\n\u002F\u002F ─── PRÉAVIS ─────────────────────────────────────────────────────────────────\nlet preState = { cat: 'employe', anciennete: 1, type: 'licenciement' };\n\nfunction computePreavis(s) {\n  let mois = 0;\n  let label = '';\n  if (s.type === 'demission') {\n    mois = s.cat === 'tam' ? 3 : (s.anciennete >= 2 ? 2 : 1);\n    label = 'Démission';\n  } else {\n    if (s.cat === 'tam') {\n      mois = 3;\n      label = 'Technicien \u002F Cadre — 3 mois quelle que soit l\\'ancienneté';\n    } else {\n      mois = s.anciennete \u003C 2 ? 1 : 2;\n      label = s.anciennete \u003C 2 ? 'Employé \u003C 2 ans d\\'ancienneté' : 'Employé ≥ 2 ans d\\'ancienneté';\n    }\n  }\n  return { mois, label };\n}\n\nfunction renderPreavis() {\n  const r = computePreavis(preState);\n  document.getElementById('pre-amount').textContent = r.mois + ' mois';\n  document.getElementById('pre-rows').innerHTML = `\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Règle appliquée\u003C\u002Fspan>\u003Cspan class=\"rv\">${r.label}\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Heures recherche emploi\u003C\u002Fspan>\u003Cspan class=\"rv\">2 h\u002Fjour payées\u003C\u002Fspan>\u003C\u002Fdiv>\n  `;\n  const ancGrp = document.getElementById('pre-anc-group');\n  ancGrp.style.display = preState.cat === 'tam' ? 'none' : 'block';\n}\n\ndocument.querySelectorAll('#pre-cat .toggle-btn').forEach(btn => {\n  btn.addEventListener('click', () => {\n    preState.cat = btn.dataset.cat;\n    document.querySelectorAll('#pre-cat .toggle-btn').forEach(b => b.classList.toggle('active', b.dataset.cat === preState.cat));\n    renderPreavis();\n  });\n});\ndocument.getElementById('pre-anc').addEventListener('input', e => {\n  preState.anciennete = +e.target.value;\n  document.getElementById('pre-anc-val').textContent = preState.anciennete + ' an' + (preState.anciennete > 1 ? 's' : '');\n  renderPreavis();\n});\ndocument.querySelectorAll('#pre-type .pill').forEach(btn => {\n  btn.addEventListener('click', () => {\n    preState.type = btn.dataset.type;\n    document.querySelectorAll('#pre-type .pill').forEach(b => b.classList.toggle('active', b.dataset.type === preState.type));\n    renderPreavis();\n  });\n});\n\n\u002F\u002F ─── SALAIRE ─────────────────────────────────────────────────────────────────\nlet salState = { cat: 'employe_e1', heures: 35 };\n\nfunction computeSalaire(s) {\n  const entry = SALARIES_GRID[s.cat];\n  const rmag_base = entry.points * POINT_VALUE * MENSUALITES;\n  const prorata = s.heures \u002F 35;\n  const rmag_annual = Math.max(rmag_base * prorata, FLOOR_ANNUAL * prorata);\n  const mensuel = rmag_annual \u002F MENSUALITES;\n  const juin = mensuel * 0.55;\n  const dec = mensuel;\n  return { rmag_annual, mensuel, juin, dec };\n}\n\nfunction renderSalaire() {\n  const r = computeSalaire(salState);\n  document.getElementById('sal-rmag').textContent = fmtEur.format(r.rmag_annual);\n  document.getElementById('sal-mensuel').textContent = fmtEurDec.format(r.mensuel);\n  document.getElementById('sal-juin').textContent = fmtEurDec.format(r.juin);\n  document.getElementById('sal-dec').textContent = fmtEurDec.format(r.dec);\n}\n\ndocument.getElementById('sal-cat').addEventListener('change', e => {\n  salState.cat = e.target.value;\n  renderSalaire();\n});\ndocument.getElementById('sal-h').addEventListener('input', e => {\n  salState.heures = +e.target.value;\n  document.getElementById('sal-h-val').textContent = salState.heures + 'h';\n  renderSalaire();\n});\n\n\u002F\u002F ─── PRIME (13e mois) ────────────────────────────────────────────────────────\nlet primeState = { salaire: 2500, anciennete: 3 };\n\nfunction computePrime(s) {\n  const juin = s.salaire * 0.55;\n  const dec = s.salaire;\n  const total = s.salaire * MENSUALITES;\n  return { juin, dec, total };\n}\n\nfunction renderPrime() {\n  const r = computePrime(primeState);\n  document.getElementById('prime-total').textContent = fmtEur.format(r.total);\n  document.getElementById('prime-rows').innerHTML = `\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Complément juin (0,55 mois)\u003C\u002Fspan>\u003Cspan class=\"rv\">${fmtEurDec.format(r.juin)}\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">13e mois décembre\u003C\u002Fspan>\u003Cspan class=\"rv\">${fmtEurDec.format(r.dec)}\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Total 13,55 mensualités\u002Fan\u003C\u002Fspan>\u003Cspan class=\"rv\">${fmtEur.format(r.total)}\u003C\u002Fspan>\u003C\u002Fdiv>\n  `;\n}\n\ndocument.getElementById('prime-sal').addEventListener('input', e => {\n  primeState.salaire = +e.target.value;\n  document.getElementById('prime-sal-val').textContent = fmtEur.format(primeState.salaire);\n  renderPrime();\n});\ndocument.getElementById('prime-anc').addEventListener('input', e => {\n  primeState.anciennete = +e.target.value;\n  document.getElementById('prime-anc-val').textContent = primeState.anciennete + ' an' + (primeState.anciennete > 1 ? 's' : '');\n  renderPrime();\n});\n\n\u002F\u002F ─── CONGÉS ──────────────────────────────────────────────────────────────────\nlet congState = { cat: 'employe', anciennete: 5 };\n\nfunction computeConges(s) {\n  const base = 30;\n  let extra = 0;\n  \u002F\u002F Congés ancienneté CCN Mutualité (valeurs approximatives)\n  if (s.cat === 'employe') {\n    if (s.anciennete >= 20) extra = 4;\n    else if (s.anciennete >= 15) extra = 3;\n    else if (s.anciennete >= 10) extra = 2;\n    else if (s.anciennete >= 5) extra = 1;\n  } else { \u002F\u002F TAM \u002F Cadres\n    if (s.anciennete >= 20) extra = 5;\n    else if (s.anciennete >= 15) extra = 4;\n    else if (s.anciennete >= 10) extra = 3;\n    else if (s.anciennete >= 5) extra = 2;\n    else if (s.anciennete >= 2) extra = 1;\n  }\n  return { base, extra, total: base + extra };\n}\n\nfunction renderConges() {\n  const r = computeConges(congState);\n  document.getElementById('cong-total').textContent = r.total + ' jours';\n  document.getElementById('cong-rows').innerHTML = `\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Base légale\u003C\u002Fspan>\u003Cspan class=\"rv\">${r.base} jours ouvrables\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Congés ancienneté CCN\u003C\u002Fspan>\u003Cspan class=\"rv\">+ ${r.extra} jour${r.extra > 1 ? 's' : ''}\u003C\u002Fspan>\u003C\u002Fdiv>\n  `;\n}\n\ndocument.querySelectorAll('#cong-cat .toggle-btn').forEach(btn => {\n  btn.addEventListener('click', () => {\n    congState.cat = btn.dataset.cat;\n    document.querySelectorAll('#cong-cat .toggle-btn').forEach(b => b.classList.toggle('active', b.dataset.cat === congState.cat));\n    renderConges();\n  });\n});\ndocument.getElementById('cong-anc').addEventListener('input', e => {\n  congState.anciennete = +e.target.value;\n  document.getElementById('cong-anc-val').textContent = congState.anciennete + ' an' + (congState.anciennete > 1 ? 's' : '');\n  renderConges();\n});\n\n\u002F\u002F ─── Initial render + tab activation ─────────────────────────────────────────\nfunction computeAll() {\n  renderIndemnite();\n  renderPreavis();\n  renderSalaire();\n  renderPrime();\n  renderConges();\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  lucide.createIcons();\n  computeAll();\n  const hashTab = location.hash.slice(1);\n  const validTabs = ['indemnite', 'preavis', 'salaire', 'prime', 'conges'];\n  const startTab = validTabs.includes(hashTab) ? hashTab : 'indemnite';\n  activate(startTab);\n});\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-mutualite-7c2ddc5786.webp",[]]