[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-notariat-fr":83,"footer-cities-fr":140},[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":134,"source":135,"category":136,"audience":137,"publish_mode":138,"hero_image":139,"hero_image_alt":85},"ccn-notariat","CCN du notariat — calculateur complet","Calculateur CCN Notariat IDCC 2205 | Expert Zoom","Outil interactif couvrant préavis (3 mois), grille salariale, 13e mois obligatoire, prime d'ancienneté et indemnité de licenciement de la CCN du notariat (IDCC 2205).","Ce calculateur couvre les 5 principales dérogations de la convention collective du notariat (IDCC 2205) au code du travail : préavis de 3 mois uniformes, grille de salaires par coefficient (valeur du point 15,84 €), 13e mois obligatoire, prime d'ancienneté de 3% à 15%, et majoration de 25% de l'indemnité de licenciement au-delà de 30 ans d'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 du notariat — IDCC 2205","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective du notariat","Thing","IDCC 2205",{"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 préavis, grille salariale, 13e mois, prime d'ancienneté, indemnité de licenciement et congés de la convention collective du notariat (IDCC 2205, Brochure JO n°3134).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131],{"a":111,"q":112},"La convention collective du notariat (IDCC 2205) prévoit un préavis de 3 mois pour tous les salariés, qu'il s'agisse d'un licenciement ou d'une démission, et quelle que soit la catégorie professionnelle ou l'ancienneté. C'est plus avantageux que le code du travail qui prévoit 1 à 2 mois selon le statut.","Quelle est la durée du préavis dans la convention collective du notariat ?",{"a":114,"q":115},"La CCN du notariat applique la formule légale : 1\u002F4 de mois de salaire par année d'ancienneté jusqu'à 10 ans, puis 1\u002F3 de mois par année au-delà. À partir de 30 ans d'ancienneté, une majoration conventionnelle de 25% s'applique. En cas d'inaptitude d'origine professionnelle, l'indemnité est doublée.","Comment calculer l'indemnité de licenciement dans le notariat ?",{"a":117,"q":118},"Oui, la convention collective du notariat impose un 13e mois obligatoire équivalent à un mois de salaire brut, versé au plus tard le 20 décembre de chaque année. Il est proratisé pour les salariés arrivés ou partis en cours d'année.","Y a-t-il un 13e mois obligatoire dans la convention collective du notariat ?",{"a":120,"q":121},"Le salaire minimum dans le notariat est calculé sur la base d'une valeur du point fixée à 15,84 € depuis le 1er octobre 2025 (Avenant n°62). Le salaire brut mensuel minimum varie de 1 901 € pour le coefficient 120 (E1) à plus de 7 128 € pour le coefficient 450 (C4), pour une durée de 35h hebdomadaires.","Quel est le salaire minimum dans le notariat en 2025 ?",{"a":123,"q":124},"La prime d'ancienneté dans le notariat est obligatoire et progressive : 3% du salaire brut dès 3 ans d'ancienneté, 6% à 6 ans, 9% à 9 ans, 12% à 12 ans, et 15% à partir de 15 ans. Cette prime est portée d'une étude à l'autre en cas de mobilité inter-offices.","Quelle est la prime d'ancienneté dans la CCN du notariat ?",{"a":126,"q":127},"Oui, la convention collective du notariat accorde jusqu'à 3 jours de congés supplémentaires selon l'ancienneté : +1 jour entre 3 et 5 ans, +2 jours entre 6 et 9 ans, et +3 jours à partir de 10 ans d'ancienneté, en plus des 30 jours ouvrables légaux.","Y a-t-il des jours de congés supplémentaires dans le notariat ?",{"a":129,"q":130},"Oui, la CCN du notariat impose une complémentaire santé obligatoire dès le premier salarié. L'employeur doit financer au minimum 50% de la cotisation pour le salarié et ses ayants droit, avec des garanties minimales définies par la convention.","La mutuelle est-elle obligatoire dans le notariat ?",{"a":132,"q":133},"En cas de restructuration (changement de titulaire, mise en société, suppression d'office ou augmentation du nombre d'associés) dans les 6 mois précédant ou suivant le licenciement, le préavis est majoré de 50%, passant de 3 à 4 mois et demi.","Quel est le préavis en cas de restructuration d'une étude notariale ?","\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 Notariat IDCC 2205\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      --card-bg: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --accent-hover: #1d4ed8;\n      --text: #1c1917;\n      --text-muted: #78716c;\n      --text-light: #a8a29e;\n      --success: #16a34a;\n      --success-bg: #f0fdf4;\n      --warning-bg: #fefce8;\n      --warning: #ca8a04;\n      --radius: 0.75rem;\n      --radius-sm: 0.375rem;\n      --shadow: 0 1px 3px 0 rgba(0,0,0,.08), 0 1px 2px -1px rgba(0,0,0,.06);\n      --shadow-md: 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -2px rgba(0,0,0,.06);\n    }\n    body { background: var(--bg); font-family: system-ui, -apple-system, sans-serif; font-size: 15px; color: var(--text); line-height: 1.5; }\n    .tool-root { max-width: 680px; margin: 0 auto; padding: 1.25rem 1rem 2rem; }\n\n    \u002F* Header *\u002F\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 {\n      display: inline-flex; align-items: center; gap: 0.25rem;\n      background: var(--accent-light); color: var(--accent);\n      font-size: 0.75rem; font-weight: 600; padding: 0.125rem 0.5rem;\n      border-radius: 9999px; margin-top: 0.25rem;\n    }\n\n    \u002F* Tabs *\u002F\n    .tabs-bar {\n      display: flex; gap: 0.25rem; border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem; overflow-x: auto; scrollbar-width: none;\n    }\n    .tabs-bar::-webkit-scrollbar { display: none; }\n    .tab-btn {\n      display: flex; align-items: center; gap: 0.375rem;\n      padding: 0.5rem 0.875rem; border: none; background: none;\n      font-size: 0.8125rem; font-weight: 500; color: var(--text-muted);\n      cursor: pointer; border-bottom: 2px solid transparent;\n      margin-bottom: -2px; white-space: nowrap; border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n      transition: color 0.15s, border-color 0.15s;\n    }\n    .tab-btn:hover { color: var(--accent); background: var(--accent-light); }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }\n    .tab-btn svg { width: 14px; height: 14px; flex-shrink: 0; }\n\n    \u002F* Panels *\u002F\n    .panel { display: none; }\n    .panel.active { display: block; }\n\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex; gap: 0.75rem; align-items: flex-start;\n      background: var(--accent-light); border: 1px solid #bfdbfe;\n      border-radius: var(--radius); padding: 0.875rem; margin-bottom: 1.25rem;\n    }\n    .rule-callout svg { width: 16px; height: 16px; color: var(--accent); flex-shrink: 0; margin-top: 1px; }\n    .rule-callout p { font-size: 0.8125rem; color: #1e40af; line-height: 1.5; }\n    .rule-callout strong { font-weight: 600; }\n\n    \u002F* Card *\u002F\n    .card {\n      background: var(--card-bg); 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(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1rem; }\n\n    \u002F* Form controls *\u002F\n    .field { margin-bottom: 1.125rem; }\n    .field:last-child { margin-bottom: 0; }\n    .field label { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.375rem; }\n    .field label span:first-child { font-size: 0.8125rem; font-weight: 500; color: var(--text); }\n    .field label .val { font-size: 0.875rem; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\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; width: 18px; height: 18px;\n      background: var(--accent); border-radius: 50%; cursor: pointer;\n      box-shadow: 0 0 0 3px rgba(37,99,235,.15);\n    }\n    input[type=range]::-moz-range-thumb {\n      width: 18px; height: 18px; background: var(--accent);\n      border-radius: 50%; border: none; cursor: pointer;\n    }\n    select, input[type=number] {\n      width: 100%; padding: 0.5rem 0.75rem;\n      border: 1px solid var(--border); border-radius: var(--radius-sm);\n      font-size: 0.875rem; background: var(--card-bg); color: var(--text);\n      outline: none; transition: border-color .15s;\n    }\n    select:focus, input[type=number]:focus { border-color: var(--accent); }\n\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n    .pill {\n      padding: 0.375rem 0.875rem; border: 1px solid var(--border);\n      border-radius: 9999px; font-size: 0.8125rem; font-weight: 500;\n      color: var(--text-muted); cursor: pointer; background: var(--card-bg);\n      transition: all 0.15s;\n    }\n    .pill:hover { border-color: var(--accent); color: var(--accent); }\n    .pill.active { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }\n\n    \u002F* Result card *\u002F\n    .result-card {\n      background: linear-gradient(135deg, #1e40af 0%, #2563eb 100%);\n      border-radius: var(--radius); padding: 1.25rem;\n      color: white; margin-bottom: 1rem;\n    }\n    .result-card .result-label { font-size: 0.8125rem; opacity: 0.85; margin-bottom: 0.25rem; }\n    .result-card .result-value { font-size: 2rem; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.1; }\n    .result-card .result-sub { font-size: 0.8125rem; opacity: 0.8; margin-top: 0.375rem; }\n    .result-detail {\n      background: var(--success-bg); border: 1px solid #bbf7d0;\n      border-radius: var(--radius-sm); padding: 0.75rem; margin-top: 0.75rem;\n    }\n    .result-detail p { font-size: 0.8125rem; color: #166534; }\n    .result-detail p + p { margin-top: 0.25rem; }\n\n    \u002F* Salary grid table *\u002F\n    .grid-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }\n    .grid-table th { background: var(--accent); color: white; padding: 0.5rem 0.75rem; text-align: left; font-weight: 600; }\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:nth-child(even) td { background: var(--bg); }\n    .grid-table td:last-child { font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\n    .grid-highlight { background: var(--accent-light) !important; }\n    .grid-highlight td { color: var(--accent); }\n\n    \u002F* Preavis tiers *\u002F\n    .preavis-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; margin-top: 0.75rem; }\n    .preavis-table th { background: var(--accent); color: white; padding: 0.5rem 0.75rem; text-align: left; }\n    .preavis-table td { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); }\n    .preavis-table tr:last-child td { border-bottom: none; }\n    .preavis-highlighted { background: var(--accent-light) !important; font-weight: 700; color: var(--accent) !important; }\n\n    \u002F* Ancienneté grid *\u002F\n    .anc-bar { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.5rem; }\n    .anc-bar .anc-label { min-width: 80px; font-size: 0.8125rem; color: var(--text-muted); }\n    .anc-bar .anc-track { flex: 1; height: 8px; background: var(--border); border-radius: 9999px; overflow: hidden; }\n    .anc-bar .anc-fill { height: 100%; background: var(--accent); border-radius: 9999px; transition: width .3s; }\n    .anc-bar .anc-pct { min-width: 32px; font-size: 0.8125rem; font-weight: 700; color: var(--accent); text-align: right; }\n\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.75rem; color: var(--text-light);\n      background: var(--bg); border: 1px solid var(--border);\n      border-radius: var(--radius-sm); padding: 0.75rem;\n      margin-top: 1rem; line-height: 1.5;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 2205 — deviations\n     preavis: L1234-1 → 3 mois uniformes tous statuts (vs 1-2 mois légaux) (source: CCN notariat art. 12 + avenant 2021)\n     salaire-min: SMIC → Grilles par coefficient, valeur du point 15,84€\u002Fpoint au 1er oct. 2025 (source: Avenant n°62 notariat)\n     prime-annuelle: non obligatoire légalement → 13ème mois obligatoire + prime d'ancienneté 3%-15% (source: CCN notariat)\n     indemnite: L1234-9 1\u002F4+1\u002F3 → identique sauf +25% si >30 ans ancienneté (source: CCN notariat art. 12.4)\n     conges: 30 jours ouvrables légaux → +3 jours supplémentaires selon ancienneté (source: CCN notariat)\n     heures-supp: L3121-36 +25%\u002F+50% → identique (pas de déviation) -->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Convention collective du Notariat\u003C\u002Fh1>\n    \u003Cdiv class=\"idcc-badge\">\n      \u003Ci data-lucide=\"tag\">\u003C\u002Fi> IDCC 2205\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"tabs-bar\" role=\"tablist\">\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=\"list\">\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 &amp; ancienneté\n    \u003C\u002Fbutton>\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=\"conges\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"sun\">\u003C\u002Fi> Congés\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ==================== PANEL: PREAVIS ==================== -->\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 du notariat prévoit \u003Cstrong>3 mois de préavis uniformes\u003C\u002Fstrong> pour tous les salariés, quelle que soit la catégorie ou l'ancienneté — bien plus favorable que le Code du travail (L1234-1) qui prévoit 1 à 2 mois selon le statut.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Votre situation\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Motif\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"preavis-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        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Ancienneté\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"preavis-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"preavis-anc\" min=\"0\" max=\"30\" value=\"5\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Contexte particulier\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"preavis-ctx-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"normal\">Standard\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"restructuration\">Restructuration office\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"preavis-result\">\n      \u003Cp class=\"result-label\">Durée du préavis\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"preavis-duree\">3 mois\u003C\u002Fp>\n      \u003Cp class=\"result-sub\" id=\"preavis-sub\">Applicable à tous les salariés du notariat\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Barème conventionnel\u003C\u002Fp>\n      \u003Ctable class=\"preavis-table\">\n        \u003Cthead>\n          \u003Ctr>\u003Cth>Motif\u003C\u002Fth>\u003Cth>Ancienneté\u003C\u002Fth>\u003Cth>Durée\u003C\u002Fth>\u003C\u002Ftr>\n        \u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr id=\"ptr-lic-std\">\u003Ctd>Licenciement\u003C\u002Ftd>\u003Ctd>Tous\u003C\u002Ftd>\u003Ctd>3 mois\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr id=\"ptr-lic-rst\" style=\"display:none\">\u003Ctd>Licenciement (restructuration)\u003C\u002Ftd>\u003Ctd>Tous\u003C\u002Ftd>\u003Ctd>\u003Cstrong>4 mois ½\u003C\u002Fstrong> (+50%)\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr id=\"ptr-dem\">\u003Ctd>Démission\u003C\u002Ftd>\u003Ctd>Tous\u003C\u002Ftd>\u003Ctd>3 mois\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n      \u003Cp style=\"font-size:0.75rem;color:var(--text-muted);margin-top:0.5rem;\">En cas de restructuration (changement de titulaire, mise en société, suppression d'office…), le préavis est majoré de 50%.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ==================== PANEL: SALAIRE MINIMUM ==================== -->\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 du notariat définit une \u003Cstrong>grille par coefficient et valeur de point\u003C\u002Fstrong>. Au 1er octobre 2025, la valeur du point est de \u003Cstrong>15,84 €\u003C\u002Fstrong> (Avenant n°62). Le salaire minimum mensuel brut = coefficient × 15,84 €, pour une durée hebdomadaire de 35h (151,67h\u002Fmois).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Calculer votre salaire minimum\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Catégorie\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cselect id=\"smn-categorie\">\n          \u003Coption value=\"\">-- Choisir --\u003C\u002Foption>\n          \u003Coptgroup label=\"Employés (E)\">\n            \u003Coption value=\"120\">E1 — Coefficient 120\u003C\u002Foption>\n            \u003Coption value=\"130\">E2 — Coefficient 130\u003C\u002Foption>\n            \u003Coption value=\"140\">E3 — Coefficient 140\u003C\u002Foption>\n            \u003Coption value=\"155\">E4 — Coefficient 155\u003C\u002Foption>\n            \u003Coption value=\"170\">E5 — Coefficient 170\u003C\u002Foption>\n          \u003C\u002Foptgroup>\n          \u003Coptgroup label=\"Techniciens (T)\">\n            \u003Coption value=\"185\">T1 — Coefficient 185\u003C\u002Foption>\n            \u003Coption value=\"205\">T2 — Coefficient 205\u003C\u002Foption>\n            \u003Coption value=\"230\">T3 — Coefficient 230\u003C\u002Foption>\n            \u003Coption value=\"260\">T4 — Coefficient 260\u003C\u002Foption>\n          \u003C\u002Foptgroup>\n          \u003Coptgroup label=\"Cadres (C)\">\n            \u003Coption value=\"300\">C1 — Coefficient 300\u003C\u002Foption>\n            \u003Coption value=\"350\">C2 — Coefficient 350\u003C\u002Foption>\n            \u003Coption value=\"400\">C3 — Coefficient 400\u003C\u002Foption>\n            \u003Coption value=\"450\">C4 — Coefficient 450\u003C\u002Foption>\n          \u003C\u002Foptgroup>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Durée hebdomadaire (heures)\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"smn-heures-val\">35h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"smn-heures\" min=\"24\" max=\"48\" value=\"35\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"smn-result\">\n      \u003Cp class=\"result-label\">Salaire minimum conventionnel brut\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"smn-montant\">Choisir une catégorie\u003C\u002Fp>\n      \u003Cp class=\"result-sub\" id=\"smn-sub\">Base 151,67h\u002Fmois — Valeur du point : 15,84 €\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Grille complète (base 35h)\u003C\u002Fp>\n      \u003Ctable class=\"grid-table\" id=\"smn-grid\">\n        \u003Cthead>\n          \u003Ctr>\u003Cth>Catégorie\u003C\u002Fth>\u003Cth>Coefficient\u003C\u002Fth>\u003Cth>Salaire brut\u002Fmois\u003C\u002Fth>\u003C\u002Ftr>\n        \u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr data-coef=\"120\">\u003Ctd>E1\u003C\u002Ftd>\u003Ctd>120\u003C\u002Ftd>\u003Ctd>1 901 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"130\">\u003Ctd>E2\u003C\u002Ftd>\u003Ctd>130\u003C\u002Ftd>\u003Ctd>2 059 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"140\">\u003Ctd>E3\u003C\u002Ftd>\u003Ctd>140\u003C\u002Ftd>\u003Ctd>2 218 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"155\">\u003Ctd>E4\u003C\u002Ftd>\u003Ctd>155\u003C\u002Ftd>\u003Ctd>2 455 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"170\">\u003Ctd>E5\u003C\u002Ftd>\u003Ctd>170\u003C\u002Ftd>\u003Ctd>2 693 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"185\">\u003Ctd>T1\u003C\u002Ftd>\u003Ctd>185\u003C\u002Ftd>\u003Ctd>2 930 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"205\">\u003Ctd>T2\u003C\u002Ftd>\u003Ctd>205\u003C\u002Ftd>\u003Ctd>3 247 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"230\">\u003Ctd>T3\u003C\u002Ftd>\u003Ctd>230\u003C\u002Ftd>\u003Ctd>3 643 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"260\">\u003Ctd>T4\u003C\u002Ftd>\u003Ctd>260\u003C\u002Ftd>\u003Ctd>4 118 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"300\">\u003Ctd>C1\u003C\u002Ftd>\u003Ctd>300\u003C\u002Ftd>\u003Ctd>4 752 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"350\">\u003Ctd>C2\u003C\u002Ftd>\u003Ctd>350\u003C\u002Ftd>\u003Ctd>5 544 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"400\">\u003Ctd>C3\u003C\u002Ftd>\u003Ctd>400\u003C\u002Ftd>\u003Ctd>6 336 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr data-coef=\"450\">\u003Ctd>C4\u003C\u002Ftd>\u003Ctd>450\u003C\u002Ftd>\u003Ctd>7 128 €\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n      \u003Cp style=\"font-size:0.75rem;color:var(--text-muted);margin-top:0.5rem;\">Valeur du point applicable depuis le 1er octobre 2025 (Avenant n°62). Grille mise à jour chaque année par accord de branche.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ==================== PANEL: PRIME ANNUELLE ==================== -->\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 du notariat impose deux avantages obligatoires absents du Code du travail : un \u003Cstrong>13e mois\u003C\u002Fstrong> (versé avant le 20 décembre) et une \u003Cstrong>prime d'ancienneté\u003C\u002Fstrong> progressive de 3% à 15% du salaire brut selon les paliers d'ancienneté.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Vos informations\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Salaire brut mensuel\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"pa-salaire-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-salaire\" min=\"1800\" max=\"8000\" value=\"2500\" step=\"50\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Ancienneté\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"pa-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-anc\" min=\"0\" max=\"30\" value=\"5\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Mois de présence dans l'année\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"pa-mois-val\">12\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-mois\" min=\"1\" max=\"12\" value=\"12\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"pa-result\">\n      \u003Cp class=\"result-label\">Prime de 13e mois\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"pa-13-val\">2 500 €\u003C\u002Fp>\n      \u003Cp class=\"result-sub\" id=\"pa-13-sub\">À verser avant le 20 décembre\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Prime d'ancienneté\u003C\u002Fp>\n      \u003Cdiv id=\"pa-anc-result\">\u003C\u002Fdiv>\n      \u003Cdiv style=\"margin-top:1rem;\">\n        \u003Cp style=\"font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.5rem;\">Barème des paliers\u003C\u002Fp>\n        \u003Cdiv id=\"pa-anc-bars\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ==================== PANEL: INDEMNITE ==================== -->\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 du notariat applique la formule légale (L1234-9 : 1\u002F4 mois par an ≤10 ans + 1\u002F3 mois par an &gt;10 ans), mais prévoit une \u003Cstrong>majoration de 25%\u003C\u002Fstrong> pour les salariés justifiant de plus de 30 ans d'ancienneté, ainsi que le \u003Cstrong>doublement de l'indemnité\u003C\u002Fstrong> en cas d'inaptitude d'origine professionnelle.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Vos informations\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Salaire brut mensuel de référence\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"ind-salaire-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"ind-salaire\" min=\"1800\" max=\"8000\" value=\"2500\" step=\"50\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Ancienneté (années complètes)\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"ind-anc-val\">8 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"ind-anc\" min=\"1\" max=\"40\" value=\"8\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Motif du licenciement\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"ind-motif-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"standard\">Standard\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"inaptitude_pro\">Inaptitude professionnelle\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"ind-result\">\n      \u003Cp class=\"result-label\">Indemnité légale \u002F conventionnelle\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"ind-montant\">5 000 €\u003C\u002Fp>\n      \u003Cp class=\"result-sub\" id=\"ind-sub\">Formule L1234-9\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv id=\"ind-detail\" class=\"result-detail\" style=\"margin-top:0; margin-bottom:1rem;\">\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ==================== PANEL: CONGES ==================== -->\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 du notariat octroie \u003Cstrong>jusqu'à 3 jours de congés supplémentaires\u003C\u002Fstrong> selon l'ancienneté, en plus des 30 jours ouvrables légaux. Ces jours sont acquis progressivement dès 3 ans d'ancienneté.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Vos informations\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Ancienneté\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"cg-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"cg-anc\" min=\"0\" max=\"30\" value=\"5\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>\u003Cspan>Temps de travail\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"cg-tps-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"plein\">Temps plein\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"partiel\">Temps partiel\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv id=\"cg-partiel-field\" class=\"field\" style=\"display:none;\">\n        \u003Clabel>\u003Cspan>Quotité travaillée (%)\u003C\u002Fspan>\u003Cspan class=\"val\" id=\"cg-qt-val\">80%\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"cg-qt\" min=\"20\" max=\"99\" value=\"80\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"cg-result\">\n      \u003Cp class=\"result-label\">Congés payés annuels\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"cg-total\">30 jours\u003C\u002Fp>\n      \u003Cp class=\"result-sub\" id=\"cg-sub\">30 j. ouvrables légaux + 0 j. supplémentaires\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Paliers congés ancienneté\u003C\u002Fp>\n      \u003Ctable class=\"preavis-table\">\n        \u003Cthead>\u003Ctr>\u003Cth>Ancienneté\u003C\u002Fth>\u003Cth>Jours supplémentaires\u003C\u002Fth>\u003Cth>Total\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr id=\"cg-row-0\">\u003Ctd>&lt; 3 ans\u003C\u002Ftd>\u003Ctd>0 jour\u003C\u002Ftd>\u003Ctd>30 jours\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr id=\"cg-row-1\">\u003Ctd>3 à 5 ans\u003C\u002Ftd>\u003Ctd>+1 jour\u003C\u002Ftd>\u003Ctd>31 jours\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr id=\"cg-row-2\">\u003Ctd>6 à 9 ans\u003C\u002Ftd>\u003Ctd>+2 jours\u003C\u002Ftd>\u003Ctd>32 jours\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr id=\"cg-row-3\">\u003Ctd>10 ans et plus\u003C\u002Ftd>\u003Ctd>+3 jours\u003C\u002Ftd>\u003Ctd>33 jours\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cp class=\"disclaimer\">\n    \u003Ci data-lucide=\"shield\" style=\"width:12px;height:12px;display:inline;vertical-align:middle;\">\u003C\u002Fi>\n    Calcul indicatif basé sur la CCN IDCC 2205 (Convention collective du notariat, Brochure JO n°3134).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635820\u002F\" target=\"_blank\" rel=\"noopener\">Legifrance\u003C\u002Fa> — Avenant n°62 (Oct. 2025).\n    Pour validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ── State ──────────────────────────────────────────────────────────────────\nconst fmt = v => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(v);\nconst fmtJ = v => v + ' jour' + (v > 1 ? 's' : '');\nconst POINT = 15.84;\n\nconst state = {\n  preavis: { motif: 'licenciement', anc: 5, ctx: 'normal' },\n  smn: { coef: null, heures: 35 },\n  pa: { salaire: 2500, anc: 5, mois: 12 },\n  ind: { salaire: 2500, anc: 8, motif: 'standard' },\n  cg: { anc: 5, tps: 'plein', qt: 80 }\n};\n\n\u002F\u002F ── Compute functions ──────────────────────────────────────────────────────\nfunction computePreavis(s) {\n  let duree = 3;\n  let sub = 'Applicable à tous les salariés du notariat';\n  if (s.ctx === 'restructuration') {\n    duree = 4.5;\n    sub = 'Majoration de 50% en cas de restructuration de l\\'office';\n  }\n  if (s.motif === 'demission') {\n    sub = 'Préavis de démission — identique à celui du licenciement';\n  }\n  return { duree, sub };\n}\n\nfunction computeSMN(s) {\n  if (!s.coef) return null;\n  const base = Math.round(s.coef * POINT);\n  const prorated = Math.round(base * (s.heures \u002F 35));\n  return { base, prorated };\n}\n\nfunction computePA(s) {\n  const paliers = [\n    { min: 0, max: 2, pct: 0 },\n    { min: 3, max: 5, pct: 3 },\n    { min: 6, max: 8, pct: 6 },\n    { min: 9, max: 11, pct: 9 },\n    { min: 12, max: 14, pct: 12 },\n    { min: 15, max: 99, pct: 15 }\n  ];\n  const palier = paliers.find(p => s.anc >= p.min && s.anc \u003C= p.max) || paliers[paliers.length - 1];\n  const pct = palier.pct;\n  const primeAnc = Math.round(s.salaire * pct \u002F 100);\n  const prime13 = Math.round(s.salaire * s.mois \u002F 12);\n  return { prime13, pct, primeAnc };\n}\n\nfunction computeInd(s) {\n  const sal = s.salaire;\n  const anc = s.anc;\n  let montant;\n  if (anc \u003C= 10) {\n    montant = sal * 0.25 * anc;\n  } else {\n    montant = sal * 0.25 * 10 + sal * (1\u002F3) * (anc - 10);\n  }\n  let bonus30 = false;\n  if (anc > 30) { montant *= 1.25; bonus30 = true; }\n  if (s.motif === 'inaptitude_pro') { montant *= 2; }\n  return { montant: Math.round(montant), bonus30 };\n}\n\nfunction computeCG(s) {\n  let supp = 0;\n  if (s.anc >= 10) supp = 3;\n  else if (s.anc >= 6) supp = 2;\n  else if (s.anc >= 3) supp = 1;\n  let total = 30 + supp;\n  if (s.tps === 'partiel') total = Math.round(total * s.qt \u002F 100);\n  return { total, supp };\n}\n\n\u002F\u002F ── Render functions ───────────────────────────────────────────────────────\nfunction renderPreavis() {\n  const r = computePreavis(state.preavis);\n  document.getElementById('preavis-anc-val').textContent = state.preavis.anc + ' an' + (state.preavis.anc > 1 ? 's' : '');\n  document.getElementById('preavis-duree').textContent = r.duree === 4.5 ? '4 mois ½' : r.duree + ' mois';\n  document.getElementById('preavis-sub').textContent = r.sub;\n  \u002F\u002F show\u002Fhide table rows\n  document.getElementById('ptr-lic-rst').style.display = state.preavis.ctx === 'restructuration' ? '' : 'none';\n  document.getElementById('ptr-lic-std').querySelector('td:last-child').textContent = state.preavis.ctx === 'restructuration' ? '— (voir ci-dessous)' : '3 mois';\n}\n\nfunction renderSMN() {\n  const r = computeSMN(state.smn);\n  document.getElementById('smn-heures-val').textContent = state.smn.heures + 'h';\n  if (!r) {\n    document.getElementById('smn-montant').textContent = 'Choisir une catégorie';\n    document.getElementById('smn-sub').textContent = 'Base 151,67h\u002Fmois — Valeur du point : 15,84 €';\n    \u002F\u002F remove highlights\n    document.querySelectorAll('#smn-grid tbody tr').forEach(tr => tr.classList.remove('grid-highlight'));\n    return;\n  }\n  document.getElementById('smn-montant').textContent = fmt(r.prorated);\n  document.getElementById('smn-sub').textContent = state.smn.heures === 35\n    ? 'Base 35h — Valeur du point : 15,84 €'\n    : `Base ${state.smn.heures}h (proratisé) — Valeur du point : 15,84 €`;\n  \u002F\u002F highlight row\n  document.querySelectorAll('#smn-grid tbody tr').forEach(tr => {\n    const isSelected = parseInt(tr.dataset.coef) === state.smn.coef;\n    tr.classList.toggle('grid-highlight', isSelected);\n  });\n}\n\nfunction renderPA() {\n  const r = computePA(state.pa);\n  document.getElementById('pa-salaire-val').textContent = fmt(state.pa.salaire);\n  document.getElementById('pa-anc-val').textContent = state.pa.anc + ' an' + (state.pa.anc > 1 ? 's' : '');\n  document.getElementById('pa-mois-val').textContent = state.pa.mois;\n  document.getElementById('pa-13-val').textContent = fmt(r.prime13);\n  document.getElementById('pa-13-sub').textContent = state.pa.mois \u003C 12\n    ? `Proratisé sur ${state.pa.mois} mois (${state.pa.mois}\u002F12 d'un mois de salaire)`\n    : 'À verser avant le 20 décembre';\n\n  \u002F\u002F Ancienneté result\n  const ancDiv = document.getElementById('pa-anc-result');\n  ancDiv.innerHTML = `\n    \u003Cdiv style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;\">\n      \u003Cspan style=\"font-size:.875rem;\">Prime d'ancienneté mensuelle\u003C\u002Fspan>\n      \u003Cstrong style=\"font-size:1.25rem;color:var(--accent);font-variant-numeric:tabular-nums;\">${fmt(r.primeAnc)}\u003C\u002Fstrong>\n    \u003C\u002Fdiv>\n    \u003Cp style=\"font-size:.8125rem;color:var(--text-muted);\">Taux applicable : \u003Cstrong>${r.pct}%\u003C\u002Fstrong> — ${state.pa.anc} an${state.pa.anc > 1 ? 's' : ''} d'ancienneté\u003C\u002Fp>\n  `;\n\n  \u002F\u002F Palier bars\n  const barsDiv = document.getElementById('pa-anc-bars');\n  const paliers = [\n    { label: '\u003C 3 ans', pct: 0 }, { label: '3-5 ans', pct: 3 },\n    { label: '6-8 ans', pct: 6 }, { label: '9-11 ans', pct: 9 },\n    { label: '12-14 ans', pct: 12 }, { label: '≥ 15 ans', pct: 15 }\n  ];\n  barsDiv.innerHTML = paliers.map(p => `\n    \u003Cdiv class=\"anc-bar\" style=\"${p.pct === r.pct ? 'font-weight:700;color:var(--accent);' : ''}\">\n      \u003Cspan class=\"anc-label\">${p.label}\u003C\u002Fspan>\n      \u003Cdiv class=\"anc-track\">\u003Cdiv class=\"anc-fill\" style=\"width:${(p.pct\u002F15)*100}%;${p.pct === r.pct ? 'background:var(--accent);' : 'background:var(--border);'}\">\u003C\u002Fdiv>\u003C\u002Fdiv>\n      \u003Cspan class=\"anc-pct\">${p.pct}%\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  `).join('');\n}\n\nfunction renderInd() {\n  const r = computeInd(state.ind);\n  document.getElementById('ind-salaire-val').textContent = fmt(state.ind.salaire);\n  document.getElementById('ind-anc-val').textContent = state.ind.anc + ' an' + (state.ind.anc > 1 ? 's' : '');\n  document.getElementById('ind-montant').textContent = fmt(r.montant);\n  let subText = 'Formule L1234-9 (code du travail)';\n  if (r.bonus30) subText += ' + majoration conventionnelle 25% (>30 ans)';\n  if (state.ind.motif === 'inaptitude_pro') subText = 'Doublement conventionnel — inaptitude professionnelle';\n  document.getElementById('ind-sub').textContent = subText;\n\n  const detail = document.getElementById('ind-detail');\n  const anc = state.ind.anc; const sal = state.ind.salaire;\n  let lines = [];\n  if (anc \u003C= 10) {\n    lines.push(`1\u002F4 × ${fmt(sal)} × ${anc} an${anc > 1 ? 's' : ''} = ${fmt(Math.round(sal * 0.25 * anc))}`);\n  } else {\n    lines.push(`1\u002F4 × ${fmt(sal)} × 10 ans = ${fmt(Math.round(sal * 0.25 * 10))}`);\n    lines.push(`1\u002F3 × ${fmt(sal)} × ${anc - 10} an${anc - 10 > 1 ? 's' : ''} = ${fmt(Math.round(sal * (1\u002F3) * (anc - 10)))}`);\n  }\n  if (r.bonus30) lines.push('Majoration conventionnelle +25% (ancienneté > 30 ans)');\n  if (state.ind.motif === 'inaptitude_pro') lines.push('× 2 — Inaptitude d\\'origine professionnelle (CCN notariat)');\n  detail.innerHTML = lines.map(l => `\u003Cp>${l}\u003C\u002Fp>`).join('');\n}\n\nfunction renderCG() {\n  const r = computeCG(state.cg);\n  document.getElementById('cg-anc-val').textContent = state.cg.anc + ' an' + (state.cg.anc > 1 ? 's' : '');\n  document.getElementById('cg-qt-val').textContent = state.cg.qt + '%';\n  document.getElementById('cg-total').textContent = fmtJ(r.total);\n  const base = state.cg.tps === 'partiel' ? Math.round(30 * state.cg.qt \u002F 100) : 30;\n  const suppStr = r.supp > 0 ? `+ ${r.supp} j. ancienneté CCN` : '';\n  document.getElementById('cg-sub').textContent = state.cg.tps === 'partiel'\n    ? `${base} j. (proratisé ${state.cg.qt}%) ${suppStr}`\n    : `30 j. ouvrables légaux ${suppStr}`;\n  \u002F\u002F Highlight correct row\n  const rows = ['cg-row-0','cg-row-1','cg-row-2','cg-row-3'];\n  let activeRow;\n  if (state.cg.anc \u003C 3) activeRow = 'cg-row-0';\n  else if (state.cg.anc \u003C 6) activeRow = 'cg-row-1';\n  else if (state.cg.anc \u003C 10) activeRow = 'cg-row-2';\n  else activeRow = 'cg-row-3';\n  rows.forEach(id => {\n    const tr = document.getElementById(id);\n    if (tr) tr.className = id === activeRow ? 'preavis-highlighted' : '';\n  });\n  document.getElementById('cg-partiel-field').style.display = state.cg.tps === 'partiel' ? '' : 'none';\n}\n\n\u002F\u002F ── Bind inputs ────────────────────────────────────────────────────────────\nfunction bindRange(id, stateKey, subKey, render) {\n  const el = document.getElementById(id);\n  if (!el) return;\n  el.addEventListener('input', () => { state[stateKey][subKey] = +el.value; render(); });\n}\nfunction bindPills(containerId, stateKey, subKey, render) {\n  const container = document.getElementById(containerId);\n  if (!container) return;\n  container.querySelectorAll('.pill').forEach(pill => {\n    pill.addEventListener('click', () => {\n      container.querySelectorAll('.pill').forEach(p => p.classList.remove('active'));\n      pill.classList.add('active');\n      state[stateKey][subKey] = pill.dataset.val;\n      render();\n    });\n  });\n}\nfunction bindSelect(id, stateKey, subKey, render) {\n  const el = document.getElementById(id);\n  if (!el) return;\n  el.addEventListener('change', () => {\n    state[stateKey][subKey] = el.value ? +el.value : null;\n    render();\n  });\n}\n\n\u002F\u002F Preavis\nbindRange('preavis-anc', 'preavis', 'anc', renderPreavis);\nbindPills('preavis-motif-pills', 'preavis', 'motif', renderPreavis);\nbindPills('preavis-ctx-pills', 'preavis', 'ctx', renderPreavis);\n\u002F\u002F Salaire min\nbindSelect('smn-categorie', 'smn', 'coef', renderSMN);\nbindRange('smn-heures', 'smn', 'heures', renderSMN);\n\u002F\u002F Prime annuelle\nbindRange('pa-salaire', 'pa', 'salaire', renderPA);\nbindRange('pa-anc', 'pa', 'anc', renderPA);\nbindRange('pa-mois', 'pa', 'mois', renderPA);\n\u002F\u002F Indemnité\nbindRange('ind-salaire', 'ind', 'salaire', renderInd);\nbindRange('ind-anc', 'ind', 'anc', renderInd);\nbindPills('ind-motif-pills', 'ind', 'motif', renderInd);\n\u002F\u002F Congés\nbindRange('cg-anc', 'cg', 'anc', renderCG);\nbindPills('cg-tps-pills', 'cg', 'tps', renderCG);\nbindRange('cg-qt', 'cg', 'qt', renderCG);\n\n\u002F\u002F ── Tab system ─────────────────────────────────────────────────────────────\nconst tabs = document.querySelectorAll('[data-tab]');\nconst panels = document.querySelectorAll('[data-panel]');\nconst renderFns = { preavis: renderPreavis, 'salaire-min': renderSMN, 'prime-annuelle': renderPA, indemnite: renderInd, conges: renderCG };\n\nfunction activate(id) {\n  tabs.forEach(t => {\n    const isActive = t.dataset.tab === id;\n    t.classList.toggle('active', isActive);\n    t.setAttribute('aria-selected', isActive);\n  });\n  panels.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n  if (location.hash !== '#' + id) location.hash = id;\n  if (renderFns[id]) renderFns[id]();\n  requestAnimationFrame(() => window.dispatchEvent(new Event('resize')));\n}\n\ntabs.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\n\u002F\u002F Initial activation (hash or first tab)\nconst hashId = location.hash.slice(1);\nconst defaultTab = (hashId && document.querySelector(`[data-tab=\"${hashId}\"]`)) ? hashId : 'preavis';\nactivate(defaultTab);\n\n\u002F\u002F ── Iframe resize contract ─────────────────────────────────────────────────\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 ── Lucide icons ───────────────────────────────────────────────────────────\nif (typeof lucide !== 'undefined') lucide.createIcons();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-notariat-100f9dc162.webp",[]]