[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-travail-du-personnel-des-institutions-de-retraite-fr":83,"footer-cities-fr":146},[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":109,"tool_html":140,"source":141,"category":142,"audience":143,"publish_mode":144,"hero_image":145,"hero_image_alt":85},"ccn-travail-du-personnel-des-institutions-de-retraite","CCN de travail du personnel des institutions de retraite complémentaire et de prévoy — calculateur complet","Calculateur CCN Institutions de Retraite Complémentaire IDCC 1794 | Expert Zoom","Outil interactif couvrant l'indemnité de licenciement (majorations d'âge +30%\u002F+50%), le préavis, la grille RMMG (1 803–5 551 €), le 13e mois obligatoire et les congés de la CCN IDCC 1794.","Ce calculateur couvre les 5 grandes dérogations de la CCN IDCC 1794 par rapport au Code du travail : indemnité de licenciement avec majorations d'âge, préavis de démission uniforme (3 mois), grille salariale RMMG en 28 niveaux, 13e mois obligatoire et bonification de congés selon l'ancienneté.",[90],{"name":91,"@type":92,"about":93,"author":97,"@context":100,"isPartOf":101,"inLanguage":104,"description":105,"operatingSystem":106,"applicationCategory":107,"isAccessibleForFree":108},"Calculateur CCN Institutions de Retraite Complémentaire et de Prévoyance — IDCC 1794","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective nationale du travail du personnel des institutions de retraite complémentaire et de prévoyance","Thing","IDCC 1794",{"name":98,"@type":99},"Expert-Zoom","Organization","https:\u002F\u002Fschema.org",{"url":102,"@type":103},"\u002Ffr\u002Fmagazine\u002Fjuridique\u002Fles-conventions-collectives-en-france","Article","fr","Outil interactif couvrant l'indemnité de licenciement (avec majorations d'âge), le préavis, la grille salariale RMMG (classes 1A-8D), le 13e mois obligatoire et les congés payés de la convention collective nationale des institutions de retraite complémentaire et de prévoyance (IDCC 1794).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131,134,137],{"a":111,"q":112},"La CCN IDCC 1794 applique la formule légale de base (1\u002F4 de mois par année jusqu'à 10 ans, 1\u002F3 au-delà), mais la majore selon l'âge du salarié : +30 % pour les 45-54 ans, +50 % pour les 55 ans et plus. Le montant total est plafonné à 18 mois de salaire brut de référence. L'ancienneté minimale requise est de 2 ans.","Comment calculer l'indemnité de licenciement dans la convention collective des institutions de retraite complémentaire (IDCC 1794) ?",{"a":114,"q":115},"La CCN IDCC 1794 fixe un préavis de démission uniforme de 3 mois pour toutes les catégories de personnel, sans distinction cadre \u002F non-cadre. Ce délai peut être réduit d'un commun accord entre l'employeur et le salarié.","Quelle est la durée du préavis en cas de démission dans la CCN 1794 ?",{"a":117,"q":118},"Pour un départ volontaire à la retraite, le préavis est de 1 mois si l'ancienneté est inférieure à 2 ans, et de 2 mois si elle est égale ou supérieure à 2 ans. Le salarié bénéficie également de 2 heures par jour ou 50 heures par mois pour rechercher un emploi pendant son préavis de licenciement.","Quelle est la durée du préavis pour un départ volontaire à la retraite dans la convention collective IDCC 1794 ?",{"a":120,"q":121},"La grille RMMG (Rémunération Mensuelle Minimale Garantie) de la CCN IDCC 1794 comporte 28 niveaux répartis en classes de 1A à 8D. Elle va de 1 803 € bruts\u002Fmois (classe 1A-1B) à 5 551 € bruts\u002Fmois (classe 8D) pour un temps plein de 35 heures, selon l'avenant du 21 mars 2025 (BOCC 2025-16 TRA).","Quelle est la grille des salaires minimums de la CCN des institutions de retraite complémentaire en 2025 ?",{"a":123,"q":124},"Oui, la CCN IDCC 1794 impose un 13e mois obligatoire pour l'ensemble des salariés. Il est calculé au prorata temporis pour les années incomplètes, sur la base du salaire mensuel brut. Le Code du travail seul ne prévoit pas de 13e mois.","Le 13e mois est-il obligatoire dans la CCN 1794 ?",{"a":126,"q":127},"La CCN octroie 25 jours ouvrés de base, auxquels s'ajoutent des jours de bonification d'ancienneté progressifs : +1 jour à partir de 3 ans, +2 jours à 7 ans, +3 jours à 12 ans et +4 jours à 20 ans d'ancienneté. Une bonification de +2 jours est également prévue en cas de fractionnement du congé principal en dehors de la période mai–octobre.","Combien de jours de congés payés accorde la convention collective IDCC 1794 ?",{"a":129,"q":130},"Aucune déviation spécifique n'a été identifiée concernant les heures supplémentaires dans la CCN IDCC 1794. Les taux légaux du Code du travail s'appliquent : +25 % pour les 8 premières heures supplémentaires par semaine, +50 % au-delà (art. L3121-36).","La CCN 1794 prévoit-elle des majorations spécifiques pour les heures supplémentaires ?",{"a":132,"q":133},"La CCN IDCC 1794, intitulée convention collective nationale du travail du personnel des institutions de retraite complémentaire et de prévoyance, s'applique au personnel des organismes gérant les régimes de retraite complémentaire (AGIRC-ARRCO) et les institutions de prévoyance en France. Elle couvre environ 32 600 salariés dans une quatre-vingtaine d'entreprises.","À qui s'applique la convention collective IDCC 1794 ?",{"a":135,"q":136},"La convention collective nationale IDCC 1794 est référencée sous la brochure JO n° 3276. Elle a été signée le 9 décembre 1993, étendue le 19 septembre 1994, puis élargie aux institutions de prévoyance le 31 janvier 1995.","Quel est le numéro de brochure de la CCN des institutions de retraite complémentaire ?",{"a":138,"q":139},"La CCN prévoit une indemnité de départ à la retraite composée d'une partie fixe (2 mois de salaire ou l'équivalent de 400 points) et d'une partie variable (1\u002F6e de mois par année de service), plafonnée à 9 mois de salaire. L'ancienneté minimale requise est de 2 ans. Cette indemnité se substitue à l'indemnité de licenciement sauf si cette dernière est plus favorable.","Comment fonctionne l'indemnité de départ à la retraite dans la CCN 1794 ?","\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 Institutions de Retraite Complémentaire — IDCC 1794\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003C!-- CCN IDCC 1794 — deviations détectées\n       indemnite: L1234-9 → majoration +30% (salariés >45 ans) \u002F +50% (>55 ans), plafond 18 mois (source: CCN IDCC 1794)\n       preavis: L1234-1 → démission 3 mois toutes catégories; départ retraite 1 mois (\u003C2 ans) \u002F 2 mois (≥2 ans) (source: CCN IDCC 1794)\n       salaire-min: SMIC → grille RMMG 28 niveaux classes 1A–8D, €1803–€5551 (source: avenant mars 2025, BOCC 2025-16 TRA)\n       prime-annuelle: aucune obligation légale → 13e mois obligatoire prorata temporis (source: CCN IDCC 1794)\n       conges: L3141-3 → base 25j ouvrés + bonification ancienneté +1j à +4j + fractionnement +2j (source: CCN IDCC 1794)\n       heures-supp: conforme L3121-36, aucune déviation identifiée — non émis -->\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      --muted: #78716c;\n      --text: #1c1917;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --accent-dark: #1d4ed8;\n      --success: #16a34a;\n      --success-light: #f0fdf4;\n      --radius: 0.75rem;\n      --shadow: 0 1px 3px 0 rgb(0 0 0\u002F0.1), 0 1px 2px -1px rgb(0 0 0\u002F0.1);\n    }\n    body {\n      font-family: system-ui, -apple-system, sans-serif;\n      background: var(--bg);\n      color: var(--text);\n      font-size: 0.9375rem;\n      line-height: 1.6;\n      padding: 1rem;\n    }\n    .tool-root { max-width: 680px; margin: 0 auto; }\n    .tool-header {\n      display: flex; align-items: flex-start; justify-content: space-between;\n      gap: 0.75rem; margin-bottom: 1.25rem;\n    }\n    .tool-title { font-size: 1.125rem; font-weight: 700; color: var(--text); line-height: 1.3; }\n    .tool-subtitle { font-size: 0.8125rem; color: var(--muted); margin-top: 0.2rem; }\n    .badge {\n      flex-shrink: 0; background: var(--accent-light); color: var(--accent);\n      font-size: 0.75rem; font-weight: 600; padding: 0.25rem 0.625rem;\n      border-radius: 9999px; white-space: nowrap;\n    }\n    \u002F* Tabs *\u002F\n    .tabs-nav {\n      display: flex; gap: 0; border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem; overflow-x: auto; -webkit-overflow-scrolling: touch;\n      scrollbar-width: none;\n    }\n    .tabs-nav::-webkit-scrollbar { display: none; }\n    .tab-btn {\n      flex-shrink: 0; background: none; border: none; cursor: pointer;\n      padding: 0.625rem 1rem; font-size: 0.875rem; font-weight: 500;\n      color: var(--muted); border-bottom: 2px solid transparent;\n      margin-bottom: -2px; transition: color 0.15s, border-color 0.15s;\n      display: flex; align-items: center; gap: 0.375rem;\n    }\n    .tab-btn:hover { color: var(--text); }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }\n    .tab-btn i { width: 15px; height: 15px; }\n    \u002F* Panel *\u002F\n    .panel { display: none; }\n    .panel.active { display: block; }\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex; gap: 0.625rem; align-items: flex-start;\n      background: var(--accent-light); border: 1px solid #bfdbfe;\n      border-radius: var(--radius); padding: 0.75rem 1rem;\n      margin-bottom: 1.25rem; font-size: 0.875rem; color: #1e40af;\n    }\n    .rule-callout i { flex-shrink: 0; width: 16px; height: 16px; margin-top: 0.125rem; }\n    \u002F* Card *\u002F\n    .card {\n      background: var(--surface); border: 1px solid var(--border);\n      border-radius: var(--radius); padding: 1.25rem;\n      box-shadow: var(--shadow); margin-bottom: 1rem;\n    }\n    .card-title { font-size: 0.8125rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1rem; }\n    \u002F* Form elements *\u002F\n    .field { margin-bottom: 1rem; }\n    .field:last-child { margin-bottom: 0; }\n    .field-label {\n      display: flex; justify-content: space-between; align-items: center;\n      font-size: 0.875rem; font-weight: 500; margin-bottom: 0.375rem;\n    }\n    .field-label span { color: var(--muted); font-weight: 400; font-variant-numeric: tabular-nums; font-size: 0.8125rem; }\n    input[type=\"range\"] {\n      width: 100%; height: 6px; -webkit-appearance: none; appearance: none;\n      background: var(--border); border-radius: 9999px; outline: none; cursor: pointer;\n    }\n    input[type=\"range\"]::-webkit-slider-thumb {\n      -webkit-appearance: none; appearance: none;\n      width: 18px; height: 18px; border-radius: 50%;\n      background: var(--accent); box-shadow: 0 0 0 2px white, 0 0 0 4px var(--accent);\n      cursor: pointer;\n    }\n    input[type=\"range\"]::-moz-range-thumb {\n      width: 18px; height: 18px; border-radius: 50%; border: none;\n      background: var(--accent); cursor: pointer;\n    }\n    select {\n      width: 100%; padding: 0.5rem 0.75rem; border: 1px solid var(--border);\n      border-radius: 0.5rem; font-size: 0.875rem; background: var(--surface);\n      color: var(--text); cursor: pointer; outline: none;\n      appearance: none; background-image: url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2378716c' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C\u002Fpolyline%3E%3C\u002Fsvg%3E\");\n      background-repeat: no-repeat; background-position: right 0.75rem center;\n      padding-right: 2rem;\n    }\n    select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgb(37 99 235\u002F0.15); }\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.375rem; }\n    .pill {\n      padding: 0.375rem 0.75rem; border-radius: 9999px;\n      border: 1.5px solid var(--border); background: var(--surface);\n      font-size: 0.8125rem; font-weight: 500; cursor: pointer;\n      color: var(--muted); transition: all 0.15s;\n    }\n    .pill.active { border-color: var(--accent); background: var(--accent-light); color: var(--accent); }\n    \u002F* Result card *\u002F\n    .result-card {\n      background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);\n      border-radius: var(--radius); padding: 1.25rem 1.5rem;\n      color: white; margin-top: 1rem;\n    }\n    .result-label { font-size: 0.8125rem; font-weight: 500; opacity: 0.85; margin-bottom: 0.25rem; }\n    .result-value { font-size: 2rem; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.2; }\n    .result-sub { font-size: 0.8125rem; opacity: 0.75; margin-top: 0.375rem; }\n    .result-breakdown { margin-top: 0.875rem; padding-top: 0.875rem; border-top: 1px solid rgba(255,255,255,0.25); }\n    .result-breakdown-row { display: flex; justify-content: space-between; font-size: 0.8125rem; opacity: 0.9; padding: 0.125rem 0; }\n    \u002F* Salary grid *\u002F\n    .salary-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; margin-top: 0.5rem; }\n    .salary-table th { background: var(--accent-light); color: var(--accent); font-weight: 600; padding: 0.5rem 0.75rem; text-align: left; }\n    .salary-table td { padding: 0.375rem 0.75rem; border-bottom: 1px solid var(--border); font-variant-numeric: tabular-nums; }\n    .salary-table tr:last-child td { border-bottom: none; }\n    \u002F* Conges result *\u002F\n    .conges-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; }\n    .conges-item { background: var(--surface); border: 1px solid var(--border); border-radius: 0.5rem; padding: 0.75rem; text-align: center; }\n    .conges-item-val { font-size: 1.5rem; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\n    .conges-item-label { font-size: 0.75rem; color: var(--muted); margin-top: 0.125rem; }\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.78125rem; color: var(--muted); margin-top: 1.25rem;\n      padding-top: 1rem; border-top: 1px solid var(--border); line-height: 1.5;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    \u002F* Toggle *\u002F\n    .toggle-wrap { display: flex; gap: 0.375rem; }\n    .toggle-btn {\n      flex: 1; padding: 0.5rem; border: 1.5px solid var(--border); border-radius: 0.5rem;\n      background: var(--surface); font-size: 0.8125rem; font-weight: 500;\n      cursor: pointer; color: var(--muted); transition: all 0.15s; text-align: center;\n    }\n    .toggle-btn.active { border-color: var(--accent); background: var(--accent-light); color: var(--accent); }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Cdiv>\n      \u003Cdiv class=\"tool-title\">CCN Institutions de Retraite Complémentaire et de Prévoyance\u003C\u002Fdiv>\n      \u003Cdiv class=\"tool-subtitle\">Calculateur des droits conventionnels\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cspan class=\"badge\">IDCC 1794\u003C\u002Fspan>\n  \u003C\u002Fdiv>\n\n  \u003Cnav class=\"tabs-nav\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"calculator\">\u003C\u002Fi>Indemnité\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"clock\">\u003C\u002Fi>Préavis\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"bar-chart-2\">\u003C\u002Fi>Grille salariale\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-annuelle\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"gift\">\u003C\u002Fi>13e mois\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"conges\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"calendar\">\u003C\u002Fi>Congés\n    \u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- ===== INDEMNITÉ DE LICENCIEMENT ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"indemnite\" role=\"tabpanel\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1794 prévoit une majoration de l'indemnité légale : \u003Cstrong>+30 %\u003C\u002Fstrong> pour les salariés de 45 à 54 ans, \u003Cstrong>+50 %\u003C\u002Fstrong> pour les 55 ans et plus. Le plafond est fixé à \u003Cstrong>18 mois\u003C\u002Fstrong> de salaire — plus favorable que les art. L1234-9 et L1234-11 du Code du travail.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Salaire brut mensuel de référence\n          \u003Cspan id=\"ind-salaire-val\">3 000 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-salaire\" min=\"1500\" max=\"10000\" step=\"50\" value=\"3000\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Ancienneté\n          \u003Cspan id=\"ind-anc-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-anc\" min=\"0\" max=\"40\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">Tranche d'âge\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"ind-age-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"moins45\">Moins de 45 ans\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"45a54\">45 à 54 ans (+30%)\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"plus55\">55 ans et plus (+50%)\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Indemnité de licenciement brute (CCN 1794)\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"ind-montant\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"ind-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-breakdown\">\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Base légale (L1234-9)\u003C\u002Fspan>\u003Cspan id=\"ind-base\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Majoration conventionnelle\u003C\u002Fspan>\u003Cspan id=\"ind-maj\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Plafond CCN (18 mois)\u003C\u002Fspan>\u003Cspan id=\"ind-plafond\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== PRÉAVIS ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\" role=\"tabpanel\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN fixe un préavis uniforme de \u003Cstrong>3 mois\u003C\u002Fstrong> pour toute démission (toutes catégories). Pour un départ volontaire à la retraite : \u003Cstrong>1 mois\u003C\u002Fstrong> si ancienneté &lt; 2 ans, \u003Cstrong>2 mois\u003C\u002Fstrong> au-delà. Le salarié licencié bénéficie de \u003Cstrong>2 h\u002Fjour ou 50 h\u002Fmois\u003C\u002Fstrong> pour recherche d'emploi.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Votre situation\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">Type de rupture\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-motif-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"licenciement\">Licenciement\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"demission\">Démission\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"retraite\">Départ retraite volontaire\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">Catégorie\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-cat-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"noncadre\">Non-cadre\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Ancienneté\n          \u003Cspan id=\"pre-anc-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"pre-anc\" min=\"0\" max=\"40\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Durée de préavis conventionnel\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"pre-duree\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"pre-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-breakdown\">\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Durée CCN 1794\u003C\u002Fspan>\u003Cspan id=\"pre-ccn\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Minimum légal (CDT)\u003C\u002Fspan>\u003Cspan id=\"pre-legal\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Recherche d'emploi\u003C\u002Fspan>\u003Cspan id=\"pre-recherche\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== GRILLE SALARIALE ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire-min\" role=\"tabpanel\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN dispose d'une grille RMMG (Rémunération Mensuelle Minimale Garantie) en 28 niveaux (classes 1A à 8D), allant de \u003Cstrong>1 803 €\u003C\u002Fstrong> à \u003Cstrong>5 551 €\u003C\u002Fstrong> bruts\u002Fmois — grille en vigueur depuis janvier 2025 (avenant du 21 mars 2025, BOCC 2025-16 TRA).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Votre classification\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">Classe et niveau\u003C\u002Fdiv>\n        \u003Cselect id=\"sal-niveau\">\n          \u003Coption value=\"1A|1803\">Classe 1A — 1 803 €\u003C\u002Foption>\n          \u003Coption value=\"1B|1803\">Classe 1B — 1 803 €\u003C\u002Foption>\n          \u003Coption value=\"1C|1819\">Classe 1C — 1 819 €\u003C\u002Foption>\n          \u003Coption value=\"2A|1829\">Classe 2A — 1 829 €\u003C\u002Foption>\n          \u003Coption value=\"2B|1854\">Classe 2B — 1 854 €\u003C\u002Foption>\n          \u003Coption value=\"2C|1874\">Classe 2C — 1 874 €\u003C\u002Foption>\n          \u003Coption value=\"2D|1959\">Classe 2D — 1 959 €\u003C\u002Foption>\n          \u003Coption value=\"3A|1877\">Classe 3A — 1 877 €\u003C\u002Foption>\n          \u003Coption value=\"3B|1952\">Classe 3B — 1 952 €\u003C\u002Foption>\n          \u003Coption value=\"3C|2069\">Classe 3C — 2 069 €\u003C\u002Foption>\n          \u003Coption value=\"3D|2211\">Classe 3D — 2 211 €\u003C\u002Foption>\n          \u003Coption value=\"4A|2068\">Classe 4A — 2 068 €\u003C\u002Foption>\n          \u003Coption value=\"4B|2151\">Classe 4B — 2 151 €\u003C\u002Foption>\n          \u003Coption value=\"4C|2297\">Classe 4C — 2 297 €\u003C\u002Foption>\n          \u003Coption value=\"4D|2344\">Classe 4D — 2 344 €\u003C\u002Foption>\n          \u003Coption value=\"5A|2365\">Classe 5A — 2 365 €\u003C\u002Foption>\n          \u003Coption value=\"5B|2436\">Classe 5B — 2 436 €\u003C\u002Foption>\n          \u003Coption value=\"5C|2698\">Classe 5C — 2 698 €\u003C\u002Foption>\n          \u003Coption value=\"5D|3085\">Classe 5D — 3 085 €\u003C\u002Foption>\n          \u003Coption value=\"6A|2955\">Classe 6A — 2 955 €\u003C\u002Foption>\n          \u003Coption value=\"6B|3072\">Classe 6B — 3 072 €\u003C\u002Foption>\n          \u003Coption value=\"6C|3189\">Classe 6C — 3 189 €\u003C\u002Foption>\n          \u003Coption value=\"6D|3380\">Classe 6D — 3 380 €\u003C\u002Foption>\n          \u003Coption value=\"7B|4056\">Classe 7B — 4 056 €\u003C\u002Foption>\n          \u003Coption value=\"7C|4299\">Classe 7C — 4 299 €\u003C\u002Foption>\n          \u003Coption value=\"7D|4601\">Classe 7D — 4 601 €\u003C\u002Foption>\n          \u003Coption value=\"8C|5337\">Classe 8C — 5 337 €\u003C\u002Foption>\n          \u003Coption value=\"8D|5551\">Classe 8D — 5 551 €\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Durée hebdomadaire\n          \u003Cspan id=\"sal-heures-val\">35 h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"sal-heures\" min=\"20\" max=\"39\" step=\"1\" value=\"35\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Salaire minimum conventionnel mensuel brut\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"sal-montant\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"sal-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-breakdown\">\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>RMMG base 35 h\u003C\u002Fspan>\u003Cspan id=\"sal-rmmg\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>SMIC mensuel 2026\u003C\u002Fspan>\u003Cspan>1 426 €\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Écart vs SMIC\u003C\u002Fspan>\u003Cspan id=\"sal-ecart\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== PRIME ANNUELLE \u002F 13e MOIS ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"prime-annuelle\" role=\"tabpanel\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1794 impose un \u003Cstrong>13e mois obligatoire\u003C\u002Fstrong>, versé pro rata temporis pour les années incomplètes. Ce droit n'existe pas dans le Code du travail seul.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Votre rémunération\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Salaire brut mensuel\n          \u003Cspan id=\"prime-sal-val\">3 000 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"prime-sal\" min=\"1500\" max=\"10000\" step=\"50\" value=\"3000\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Mois travaillés dans l'année\n          \u003Cspan id=\"prime-mois-val\">12 mois\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"prime-mois\" min=\"1\" max=\"12\" step=\"1\" value=\"12\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">13e mois brut (pro rata)\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"prime-montant\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"prime-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-breakdown\">\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Salaire mensuel brut\u003C\u002Fspan>\u003Cspan id=\"prime-base\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Coefficient prorata\u003C\u002Fspan>\u003Cspan id=\"prime-prorata\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-breakdown-row\">\u003Cspan>Rémunération annuelle totale\u003C\u002Fspan>\u003Cspan id=\"prime-annuel\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== CONGÉS PAYÉS ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"conges\" role=\"tabpanel\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1794 accorde \u003Cstrong>25 jours ouvrés\u003C\u002Fstrong> de base avec bonification d'ancienneté progressive (jusqu'à \u003Cstrong>+4 jours\u003C\u002Fstrong> après 20 ans de service) et \u003Cstrong>+2 jours\u003C\u002Fstrong> si le congé principal est fractionné hors mai–octobre.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Votre situation\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          Ancienneté dans l'entreprise\n          \u003Cspan id=\"cong-anc-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"cong-anc\" min=\"0\" max=\"40\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">Congé principal fractionné hors mai–octobre ?\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"cong-frac-pills\">\n          \u003Cbutton class=\"pill\" data-val=\"oui\">Oui (+2 jours)\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill active\" data-val=\"non\">Non\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv>\n      \u003Cdiv class=\"conges-grid\">\n        \u003Cdiv class=\"conges-item\">\n          \u003Cdiv class=\"conges-item-val\">25\u003C\u002Fdiv>\n          \u003Cdiv class=\"conges-item-label\">Jours base CCN\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"conges-item\">\n          \u003Cdiv class=\"conges-item-val\" id=\"cong-anciennete\">+0\u003C\u002Fdiv>\n          \u003Cdiv class=\"conges-item-label\">Jours ancienneté\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"conges-item\">\n          \u003Cdiv class=\"conges-item-val\" id=\"cong-frac-val\">+0\u003C\u002Fdiv>\n          \u003Cdiv class=\"conges-item-label\">Fractionnement\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"conges-item\" style=\"border-color: #bfdbfe; background: var(--accent-light);\">\n          \u003Cdiv class=\"conges-item-val\" id=\"cong-total\" style=\"color: var(--accent);\">25\u003C\u002Fdiv>\n          \u003Cdiv class=\"conges-item-label\" style=\"color: #1e40af;\">Total jours ouvrés\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cdiv class=\"result-label\">Total congés payés annuels (CCN 1794)\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"cong-total-main\">25 jours ouvrés\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-sub\" id=\"cong-sub\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- DISCLAIMER (hors panels) -->\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN IDCC 1794 (institutions de retraite complémentaire et de prévoyance).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635698\" target=\"_blank\" rel=\"noopener\">Legifrance — IDCC 1794\u003C\u002Fa>.\n    Grille salariale : avenant du 21 mars 2025 (BOCC 2025-16 TRA).\n    Pour validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── State ───────────────────────────────────────────────────────────────────\nconst state = {\n  ind: { salaire: 3000, anc: 5, age: 'moins45' },\n  pre: { motif: 'licenciement', cat: 'noncadre', anc: 5 },\n  sal: { niveau: '1A', rmmg: 1803, heures: 35 },\n  prime: { salaire: 3000, mois: 12 },\n  cong: { anc: 5, frac: 'non' }\n};\n\nconst fmt = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\nconst fmtDec = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 2 });\n\n\u002F\u002F ─── Compute ─────────────────────────────────────────────────────────────────\nfunction computeIndemnite() {\n  const { salaire, anc, age } = state.ind;\n  if (anc \u003C 2) {\n    return { montant: 0, base: 0, maj: 0, plafond: salaire * 18, label: 'Ancienneté insuffisante (minimum : 2 ans)' };\n  }\n  \u002F\u002F Base légale L1234-9\n  const t1 = Math.min(anc, 10) * (salaire \u002F 4);\n  const t2 = Math.max(anc - 10, 0) * (salaire \u002F 3);\n  const baseLegale = t1 + t2;\n  \u002F\u002F Majoration CCN âge\n  const majTaux = age === '45a54' ? 0.30 : age === 'plus55' ? 0.50 : 0;\n  let montant = baseLegale * (1 + majTaux);\n  const plafond = salaire * 18;\n  const capped = montant > plafond;\n  if (capped) montant = plafond;\n  return {\n    montant,\n    base: baseLegale,\n    maj: baseLegale * majTaux,\n    plafond,\n    label: capped ? `Plafonné à 18 mois (${fmt.format(plafond)})` : majTaux > 0 ? `Avec majoration CCN +${majTaux * 100}%` : 'Pas de majoration d\\'âge applicable'\n  };\n}\n\nfunction computePreavis() {\n  const { motif, cat, anc } = state.pre;\n  let duree, legal, recherche, sub;\n  if (motif === 'demission') {\n    duree = '3 mois'; legal = cat === 'cadre' ? '3 mois' : '1 mois';\n    recherche = '2 h\u002Fj ou 50 h\u002Fmois'; sub = 'Uniforme toutes catégories (CCN IDCC 1794)';\n  } else if (motif === 'retraite') {\n    duree = anc >= 2 ? '2 mois' : '1 mois';\n    legal = '1 mois'; recherche = 'Non applicable';\n    sub = `Départ volontaire à la retraite — ancienneté ${anc >= 2 ? '≥ 2 ans' : '\u003C 2 ans'}`;\n  } else {\n    \u002F\u002F licenciement — code du travail ; CCN ne dérogerait pas en défaveur\n    if (anc \u003C 6\u002F12) { duree = '—'; legal = '—'; }\n    else if (anc \u003C 2) { duree = '1 mois'; legal = '1 mois'; }\n    else { duree = cat === 'cadre' ? '3 mois' : '2 mois'; legal = cat === 'cadre' ? '3 mois' : '2 mois'; }\n    recherche = '2 h\u002Fj ou 50 h\u002Fmois'; sub = 'Durée conforme au Code du travail (L1234-1)';\n  }\n  return { duree, legal, recherche, sub };\n}\n\nfunction computeSalaire() {\n  const { rmmg, heures } = state.sal;\n  const adj = heures === 35 ? rmmg : Math.round(rmmg * heures \u002F 35);\n  const smic = 1426;\n  return { adj, rmmg, ecart: adj - smic };\n}\n\nfunction computePrime() {\n  const { salaire, mois } = state.prime;\n  const montant = salaire * mois \u002F 12;\n  return { montant, annuel: salaire * 12 + montant, prorata: mois \u002F 12 };\n}\n\nfunction computeConges() {\n  const { anc, frac } = state.cong;\n  const base = 25;\n  let joursAnc = 0;\n  if (anc >= 3) joursAnc = 1;\n  if (anc >= 7) joursAnc = 2;\n  if (anc >= 12) joursAnc = 3;\n  if (anc >= 20) joursAnc = 4;\n  const joursFrac = frac === 'oui' ? 2 : 0;\n  return { base, joursAnc, joursFrac, total: base + joursAnc + joursFrac };\n}\n\n\u002F\u002F ─── Render ───────────────────────────────────────────────────────────────────\nfunction renderIndemnite() {\n  const r = computeIndemnite();\n  document.getElementById('ind-montant').textContent = fmt.format(r.montant);\n  document.getElementById('ind-sub').textContent = r.label;\n  document.getElementById('ind-base').textContent = fmt.format(r.base);\n  document.getElementById('ind-maj').textContent = r.maj > 0 ? fmt.format(r.maj) : '—';\n  document.getElementById('ind-plafond').textContent = fmt.format(r.plafond) + ' max.';\n}\n\nfunction renderPreavis() {\n  const r = computePreavis();\n  document.getElementById('pre-duree').textContent = r.duree;\n  document.getElementById('pre-sub').textContent = r.sub;\n  document.getElementById('pre-ccn').textContent = r.duree;\n  document.getElementById('pre-legal').textContent = r.legal;\n  document.getElementById('pre-recherche').textContent = r.recherche;\n}\n\nfunction renderSalaire() {\n  const r = computeSalaire();\n  document.getElementById('sal-montant').textContent = fmt.format(r.adj);\n  document.getElementById('sal-sub').textContent = state.sal.heures !== 35\n    ? `Proratisé pour ${state.sal.heures} h\u002Fsem (RMMG base: ${fmt.format(r.rmmg)})`\n    : 'Pour 35 h hebdomadaires';\n  document.getElementById('sal-rmmg').textContent = fmt.format(r.rmmg);\n  document.getElementById('sal-ecart').textContent = (r.ecart >= 0 ? '+' : '') + fmt.format(r.ecart);\n}\n\nfunction renderPrime() {\n  const r = computePrime();\n  document.getElementById('prime-montant').textContent = fmtDec.format(r.montant);\n  document.getElementById('prime-sub').textContent = r.prorata \u003C 1\n    ? `Pro rata ${state.prime.mois}\u002F12 mois travaillés`\n    : 'Année complète — 13e mois intégral';\n  document.getElementById('prime-base').textContent = fmt.format(state.prime.salaire);\n  document.getElementById('prime-prorata').textContent = r.prorata.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  document.getElementById('prime-annuel').textContent = fmt.format(r.annuel);\n}\n\nfunction renderConges() {\n  const r = computeConges();\n  document.getElementById('cong-anciennete').textContent = '+' + r.joursAnc;\n  document.getElementById('cong-frac-val').textContent = '+' + r.joursFrac;\n  document.getElementById('cong-total').textContent = r.total;\n  document.getElementById('cong-total-main').textContent = r.total + ' jours ouvrés';\n  document.getElementById('cong-sub').textContent = r.joursAnc > 0\n    ? `+${r.joursAnc} j d'ancienneté (${state.cong.anc} ans)`\n    : 'Pas encore de jours d\\'ancienneté — seuil : 3 ans';\n}\n\n\u002F\u002F ─── Input wiring ─────────────────────────────────────────────────────────────\nfunction wireRange(id, stateObj, key, valId, formatter, renderFn) {\n  const el = document.getElementById(id);\n  const val = document.getElementById(valId);\n  el.addEventListener('input', () => {\n    stateObj[key] = parseFloat(el.value);\n    val.textContent = formatter(stateObj[key]);\n    renderFn();\n  });\n}\nfunction wirePills(containerId, stateObj, key, renderFn) {\n  document.getElementById(containerId).addEventListener('click', e => {\n    const btn = e.target.closest('.pill');\n    if (!btn) return;\n    document.querySelectorAll('#' + containerId + ' .pill').forEach(p => p.classList.remove('active'));\n    btn.classList.add('active');\n    stateObj[key] = btn.dataset.val;\n    renderFn();\n  });\n}\n\nwireRange('ind-salaire', state.ind, 'salaire', 'ind-salaire-val', v => fmt.format(v), renderIndemnite);\nwireRange('ind-anc', state.ind, 'anc', 'ind-anc-val', v => v + ' an' + (v > 1 ? 's' : ''), renderIndemnite);\nwirePills('ind-age-pills', state.ind, 'age', renderIndemnite);\n\nwireRange('pre-anc', state.pre, 'anc', 'pre-anc-val', v => v + ' an' + (v > 1 ? 's' : ''), renderPreavis);\nwirePills('pre-motif-pills', state.pre, 'motif', renderPreavis);\nwirePills('pre-cat-pills', state.pre, 'cat', renderPreavis);\n\ndocument.getElementById('sal-niveau').addEventListener('change', e => {\n  const parts = e.target.value.split('|');\n  state.sal.niveau = parts[0];\n  state.sal.rmmg = parseFloat(parts[1]);\n  renderSalaire();\n});\nwireRange('sal-heures', state.sal, 'heures', 'sal-heures-val', v => v + ' h', renderSalaire);\n\nwireRange('prime-sal', state.prime, 'salaire', 'prime-sal-val', v => fmt.format(v), renderPrime);\nwireRange('prime-mois', state.prime, 'mois', 'prime-mois-val', v => v + ' mois', renderPrime);\n\nwireRange('cong-anc', state.cong, 'anc', 'cong-anc-val', v => v + ' an' + (v > 1 ? 's' : ''), renderConges);\nwirePills('cong-frac-pills', state.cong, 'frac', renderConges);\n\n\u002F\u002F ─── Tabs ─────────────────────────────────────────────────────────────────────\nconst tabBtns = document.querySelectorAll('[data-tab]');\nconst panelsEl = document.querySelectorAll('[data-panel]');\n\nfunction activate(id) {\n  tabBtns.forEach(t => {\n    const isActive = t.dataset.tab === id;\n    t.classList.toggle('active', isActive);\n    t.setAttribute('aria-selected', isActive);\n  });\n  panelsEl.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n  if (location.hash !== '#' + id) location.hash = id;\n  requestAnimationFrame(() => window.dispatchEvent(new Event('resize')));\n}\n\ntabBtns.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\nconst hashTab = location.hash.slice(1);\nconst validIds = ['indemnite', 'preavis', 'salaire-min', 'prime-annuelle', 'conges'];\nactivate(validIds.includes(hashTab) ? hashTab : 'indemnite');\n\n\u002F\u002F ─── Resize observer ──────────────────────────────────────────────────────────\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 ─── Initial render ───────────────────────────────────────────────────────────\nrenderIndemnite(); renderPreavis(); renderSalaire(); renderPrime(); renderConges();\nif (window.lucide) lucide.createIcons();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-travail-du-personnel-des-institutions-de-retraite-352ec697b6.webp",[]]