[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-industries-chimiques-et-connexes-fr":83,"footer-cities-fr":155},[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":126,"tool_html":149,"source":150,"category":151,"audience":152,"publish_mode":153,"hero_image":154,"hero_image_alt":85},"ccn-industries-chimiques-et-connexes","CCN des industries chimiques et connexes — calculateur complet","Calculateur CCN Industries chimiques et connexes IDCC 44 | Expert Zoom","Outil interactif couvrant indemnité de licenciement, préavis, grille salariale, prime d'ancienneté et heures supplémentaires de la CCN des industries chimiques et connexes (IDCC 44).","Ce calculateur couvre les 5 principaux écarts de la convention collective des industries chimiques et connexes (IDCC 44) avec le code du travail : indemnité de licenciement (barèmes 3\u002F10 à 8\u002F10 selon catégorie), préavis par coefficient, grille salariale 2025 (accord du 9 décembre 2024), prime d'ancienneté obligatoire (3% à 15%) et heures supplémentaires décomptées à partir de 40h\u002Fsemaine.",[90,109],{"name":91,"@type":92,"about":93,"author":97,"@context":100,"isPartOf":101,"inLanguage":104,"description":105,"operatingSystem":106,"applicationCategory":107,"isAccessibleForFree":108},"Calculateur CCN des industries chimiques et connexes — IDCC 44","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective des industries chimiques et connexes","Thing","IDCC 44",{"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, le préavis, la grille salariale, la prime d'ancienneté et les heures supplémentaires de la convention collective des industries chimiques et connexes (IDCC 44, brochure 3108).","All","FinanceApplication",true,{"@type":110,"@context":100,"mainEntity":111},"FAQPage",[112,118,122],{"name":113,"@type":114,"acceptedAnswer":115},"Comment calculer l'indemnité de licenciement dans la convention collective des industries chimiques et connexes ?","Question",{"text":116,"@type":117},"La CCN des industries chimiques et connexes (IDCC 44) prévoit trois barèmes : ouvriers 3\u002F10 de mois par année, agents de maîtrise 3\u002F10 à 5\u002F10 progressif (plafond 18 mois), ingénieurs et cadres 4\u002F10 à 8\u002F10 progressif (plafond 20 mois). Des majorations d'âge s'appliquent à partir de 45 ou 50 ans après 5 ans d'ancienneté.","Answer",{"name":119,"@type":114,"acceptedAnswer":120},"Quelle est la durée du préavis dans la CCN chimie (IDCC 44) ?",{"text":121,"@type":117},"Le préavis est structuré par coefficient : ouvriers \u003C160 = 15 jours, 160-189 = 1 mois, ≥190 = 2 mois. Agents de maîtrise \u003C275 = 2 mois, ≥275 = 3 mois. Ingénieurs et cadres : 3 mois. Doublement pour les travailleurs reconnus handicapés (max 3 mois).",{"name":123,"@type":114,"acceptedAnswer":124},"La CCN chimie prévoit-elle une prime d'ancienneté ?",{"text":125,"@type":117},"Oui. La prime d'ancienneté IDCC 44 est obligatoire : 3% à partir de 2 ans, 6% à 5 ans, 9% à 10 ans, 12% à 15 ans, 15% à 20 ans. Elle s'applique sur le salaire brut et sur le 13e mois le cas échéant.",[127,129,131,134,137,140,143,146],{"a":128,"q":113},"La CCN des industries chimiques et connexes (IDCC 44) prévoit trois barèmes selon la catégorie. Ouvriers\u002FCollaborateurs : 3\u002F10 de mois par année. Agents de maîtrise\u002FTechniciens : 3\u002F10 à 5\u002F10 de mois par an (progressif), plafond 18 mois. Ingénieurs\u002FCadres : 4\u002F10 à 8\u002F10 de mois par an (progressif), plafond 20 mois. Des majorations d'âge s'appliquent à partir de 45 ou 50 ans après 5 ans d'ancienneté (Art. 21, Avenants 1, 2, 3).",{"a":130,"q":119},"Le préavis est structuré par coefficient et catégorie : Ouvriers coefficient \u003C160 : 15 jours ; coeff. 160-189 : 1 mois ; coeff. ≥190 : 2 mois. Agents de maîtrise coeff. \u003C275 : 2 mois ; coeff. ≥275 : 3 mois. Ingénieurs et cadres : 3 mois quelle que soit l'ancienneté. Les travailleurs reconnus handicapés bénéficient d'un préavis doublé, limité à 3 mois.",{"a":132,"q":133},"La CCN chimie dispose d'une grille propre basée sur un système de points. Selon l'accord du 9 décembre 2024 (effectif au 1er janvier 2025, +1,6%) : salaire de référence 1 826,77 € + (coefficient - 100) × 8,74 €\u002Fpoint. Le salaire de référence pour un coefficient 160 est d'environ 2 351,17 € brut\u002Fmois pour 35h\u002Fsemaine.","Quelle est la grille de salaires de la convention chimie en 2025 ?",{"a":135,"q":136},"Oui. La convention collective des industries chimiques et connexes prévoit une prime d'ancienneté obligatoire calculée en pourcentage du salaire brut : 3% à partir de 2 ans d'ancienneté, 6% à partir de 5 ans, 9% à partir de 10 ans, 12% à partir de 15 ans et 15% à partir de 20 ans. Cette prime s'applique également sur le 13e mois lorsque celui-ci est versé dans l'entreprise.","La CCN des industries chimiques prévoit-elle un 13e mois ou une prime d'ancienneté ?",{"a":138,"q":139},"Dans la CCN des industries chimiques (IDCC 44), la base conventionnelle est fixée à 40 heures par semaine (et non 35h comme dans le droit commun). Les heures supplémentaires ne démarrent donc qu'à partir de la 41e heure. Les majorations restent identiques au code du travail : +25% pour les 8 premières heures supplémentaires, +50% au-delà. Le contingent annuel est de 130 heures.","À partir de combien d'heures les heures supplémentaires sont-elles décomptées dans la chimie ?",{"a":141,"q":142},"La CCN des industries chimiques et connexes (IDCC 44, brochure 3108) s'applique aux entreprises dont l'activité principale relève du code NAF de la chimie (fabrication de produits chimiques, cosmétiques, pétrochimie, plastiques, caoutchouc, etc.). Elle couvre plus de 150 000 salariés en France. L'appartenance se vérifie sur le bulletin de paie ou via le code NAF de l'employeur.","La CCN chimie IDCC 44 s'applique-t-elle à toutes les entreprises du secteur chimique ?",{"a":144,"q":145},"Oui. En cas de rupture conventionnelle, l'indemnité spécifique ne peut pas être inférieure à l'indemnité conventionnelle de licenciement prévue par la CCN. L'employeur doit donc appliquer le barème conventionnel (3\u002F10 à 8\u002F10 de mois par année selon la catégorie) comme plancher minimum, même si la rupture est à l'amiable.","Un salarié en rupture conventionnelle peut-il bénéficier de l'indemnité conventionnelle IDCC 44 ?",{"a":147,"q":148},"Le texte officiel de la convention collective nationale des industries chimiques et connexes est disponible sur Legifrance (référence KALICONT000005635613). La brochure officielle porte le numéro 3108. Les avenants salariaux les plus récents sont disponibles sur le même site. Le code du travail numérique (code.travail.gouv.fr) offre également une version synthétique avec les contributions par thème.","Où trouver le texte officiel de la convention collective IDCC 44 ?","\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 Industries Chimiques et Connexes — IDCC 44\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      --text-muted: #78716c;\n      --success: #16a34a;\n      --success-light: #f0fdf4;\n      --warning: #d97706;\n      --warning-light: #fffbeb;\n      --radius: 0.75rem;\n      --radius-sm: 0.375rem;\n      --shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);\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: 720px; 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.2rem; font-weight: 700; color: var(--text); }\n    .tool-header .idcc-badge {\n      display: inline-flex; align-items: center; gap: 0.35rem;\n      background: var(--accent-light); color: var(--accent-dark);\n      font-size: 0.78rem; font-weight: 600; padding: 0.2rem 0.6rem;\n      border-radius: 999px; margin-top: 0.3rem;\n    }\n\n    \u002F* Tabs *\u002F\n    .tabs { display: flex; gap: 0.25rem; flex-wrap: wrap; border-bottom: 2px solid var(--border); margin-bottom: 1.25rem; }\n    .tab-btn {\n      display: flex; align-items: center; gap: 0.4rem;\n      padding: 0.55rem 0.9rem; border: none; background: none;\n      font-size: 0.85rem; font-weight: 500; color: var(--text-muted);\n      cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px;\n      border-radius: var(--radius-sm) var(--radius-sm) 0 0; transition: color .15s, border-color .15s;\n    }\n    .tab-btn:hover { color: var(--accent); }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); background: var(--accent-light); }\n    .tab-btn svg { width: 15px; height: 15px; }\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-left: 3px solid var(--accent);\n      border-radius: 0 var(--radius-sm) var(--radius-sm) 0;\n      padding: 0.85rem 1rem; margin-bottom: 1.25rem;\n      font-size: 0.875rem; color: var(--accent-dark);\n    }\n    .rule-callout svg { flex-shrink: 0; width: 18px; height: 18px; margin-top: 1px; }\n\n    \u002F* Card *\u002F\n    .card {\n      background: var(--surface); border: 1px solid var(--border);\n      border-radius: var(--radius); padding: 1.25rem; margin-bottom: 1rem;\n      box-shadow: var(--shadow);\n    }\n    .card-title { font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-bottom: 1rem; }\n\n    \u002F* Form elements *\u002F\n    .field { margin-bottom: 1rem; }\n    .field label { display: block; font-size: 0.85rem; font-weight: 500; margin-bottom: 0.4rem; color: var(--text); }\n    .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }\n    @media(max-width: 500px) { .field-row { grid-template-columns: 1fr; } }\n\n    \u002F* Slider *\u002F\n    .slider-wrap { display: flex; align-items: center; gap: 0.75rem; }\n    .slider-wrap input[type=range] {\n      flex: 1; -webkit-appearance: none; height: 4px;\n      background: linear-gradient(to right, var(--accent) var(--pct, 0%), var(--border) var(--pct, 0%));\n      border-radius: 2px; outline: none; cursor: pointer;\n    }\n    .slider-wrap input[type=range]::-webkit-slider-thumb {\n      -webkit-appearance: none; width: 18px; height: 18px;\n      border-radius: 50%; background: var(--accent); border: 2px solid #fff;\n      box-shadow: 0 0 0 1px var(--accent); cursor: pointer;\n    }\n    .slider-val { font-size: 0.88rem; font-weight: 600; color: var(--accent); min-width: 70px; text-align: right; font-variant-numeric: tabular-nums; }\n\n    \u002F* Select *\u002F\n    select {\n      width: 100%; padding: 0.5rem 0.75rem; border: 1px solid var(--border);\n      border-radius: var(--radius-sm); background: var(--surface); font-size: 0.875rem;\n      color: var(--text); cursor: pointer; outline: none; appearance: none;\n      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'%3E%3Cpath d='M6 9l6 6 6-6'\u002F%3E%3C\u002Fsvg%3E\");\n      background-repeat: no-repeat; background-position: right 0.5rem center;\n      padding-right: 2rem;\n    }\n    select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(37,99,235,.15); }\n\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n    .pill {\n      padding: 0.35rem 0.85rem; border: 1px solid var(--border);\n      border-radius: 999px; font-size: 0.82rem; font-weight: 500;\n      cursor: pointer; background: var(--surface); color: var(--text-muted);\n      transition: all .15s; user-select: none;\n    }\n    .pill.active { background: var(--accent); border-color: var(--accent); color: #fff; }\n\n    \u002F* Toggle *\u002F\n    .toggle-wrap { display: flex; align-items: center; gap: 0.75rem; }\n    .toggle {\n      position: relative; width: 44px; height: 24px;\n      background: var(--border); border-radius: 999px; cursor: pointer;\n      transition: background .2s;\n    }\n    .toggle.on { background: var(--accent); }\n    .toggle::after {\n      content: ''; position: absolute; top: 3px; left: 3px;\n      width: 18px; height: 18px; background: #fff;\n      border-radius: 50%; box-shadow: var(--shadow); transition: transform .2s;\n    }\n    .toggle.on::after { transform: translateX(20px); }\n    .toggle-label { font-size: 0.875rem; color: var(--text-muted); }\n\n    \u002F* Result *\u002F\n    .result-card {\n      background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);\n      border-radius: var(--radius); padding: 1.25rem; color: #fff; margin-top: 1.25rem;\n    }\n    .result-label { font-size: 0.8rem; font-weight: 500; opacity: .85; margin-bottom: 0.25rem; }\n    .result-value { font-size: 2rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }\n    .result-sub { font-size: 0.8rem; opacity: .75; margin-top: 0.3rem; }\n    .result-detail { margin-top: 0.75rem; font-size: 0.82rem; opacity: .88; line-height: 1.6; border-top: 1px solid rgba(255,255,255,.25); padding-top: 0.75rem; }\n\n    \u002F* Info box *\u002F\n    .info-box {\n      background: var(--success-light); border: 1px solid #bbf7d0;\n      border-radius: var(--radius-sm); padding: 0.75rem 1rem;\n      font-size: 0.82rem; color: var(--success); margin-top: 0.75rem;\n    }\n\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.78rem; color: var(--text-muted); margin-top: 1.5rem;\n      padding-top: 1rem; border-top: 1px solid var(--border); line-height: 1.6;\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 44 — deviations\n     indemnite: L1234-9 → Ouvriers 3\u002F10\u002Fan, AMT 3-5\u002F10 progressif (cap 18m), Cadres 4-8\u002F10 progressif (cap 20m) + majorations d'âge (Art. 21, Avenants 1,2,3)\n     preavis: L1234-1 → Ouvriers par coefficient (15j\u002F1m\u002F2m), AMT 2-3m par coeff, Cadres 3m (Art. convention)\n     salaire-min: SMIC → grille propre basée sur valeur de point (Accord 9 déc. 2024, 8,74€\u002Fpoint + base 1826,77€)\n     prime-anciennete: aucune obligation légale → prime d'ancienneté prévue (3% à 2 ans, jusqu'à 15%) (Art. convention)\n     heures-supp: L3121-36 base 35h → base conventionnelle 40h (contingent 130h\u002Fan) (Art. 12)\n-->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Convention collective — Industries chimiques et connexes\u003C\u002Fh1>\n    \u003Cspan class=\"idcc-badge\">\u003Ci data-lucide=\"tag\">\u003C\u002Fi> IDCC 44\u003C\u002Fspan>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"tabs\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\">\n      \u003Ci data-lucide=\"calculator\">\u003C\u002Fi> Indemnité\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">\n      \u003Ci data-lucide=\"clock\">\u003C\u002Fi> Préavis\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\">\n      \u003Ci data-lucide=\"banknote\">\u003C\u002Fi> Salaire min.\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-anciennete\" role=\"tab\">\n      \u003Ci data-lucide=\"star\">\u003C\u002Fi> Ancienneté\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"heures-supp\" role=\"tab\">\n      \u003Ci data-lucide=\"timer\">\u003C\u002Fi> Heures supp.\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ====== TAB: INDEMNITÉ ====== -->\n  \u003Cdiv class=\"panel\" data-panel=\"indemnite\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN chimie prévoit des indemnités \u003Cstrong>nettement supérieures\u003C\u002Fstrong> à L1234-9 : 3\u002F10 à 8\u002F10 mois par année selon la catégorie, avec majoration d'âge à partir de 45 ou 50 ans (Art. 21, Avenants 1, 2, 3).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Catégorie professionnelle\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"ind-cat-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"ouvrier\">Ouvrier \u002F Collaborateur\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"amt\">Agent de maîtrise \u002F Technicien\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"cadre\">Ingénieur \u002F Cadre\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field-row\">\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Salaire brut mensuel de référence\u003C\u002Flabel>\n          \u003Cdiv class=\"slider-wrap\">\n            \u003Cinput type=\"range\" id=\"ind-salaire\" min=\"1400\" max=\"12000\" step=\"50\" value=\"2800\">\n            \u003Cspan class=\"slider-val\" id=\"ind-salaire-val\">2 800 €\u003C\u002Fspan>\n          \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Ancienneté (années)\u003C\u002Flabel>\n          \u003Cdiv class=\"slider-wrap\">\n            \u003Cinput type=\"range\" id=\"ind-anciennete\" min=\"0\" max=\"40\" step=\"1\" value=\"10\">\n            \u003Cspan class=\"slider-val\" id=\"ind-anciennete-val\">10 ans\u003C\u002Fspan>\n          \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Âge au moment du licenciement\u003C\u002Flabel>\n        \u003Cdiv class=\"slider-wrap\">\n          \u003Cinput type=\"range\" id=\"ind-age\" min=\"18\" max=\"67\" step=\"1\" value=\"42\">\n          \u003Cspan class=\"slider-val\" id=\"ind-age-val\">42 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Motif de rupture\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"ind-motif-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"licenciement\">Licenciement\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"rupture\">Rupture conventionnelle\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\" id=\"ind-result\">\n      \u003Cdiv class=\"result-label\">Indemnité conventionnelle estimée\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"ind-amount\">— €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"ind-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"ind-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ====== TAB: PRÉAVIS ====== -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN chimie structure le préavis par \u003Cstrong>coefficient et catégorie\u003C\u002Fstrong> : de 15 jours pour les ouvriers coefficient &lt;160 à 3 mois pour les cadres. Les travailleurs handicapés bénéficient d'un préavis doublé (max 3 mois).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Catégorie professionnelle\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"pre-cat-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"ouvrier\">Ouvrier \u002F Collaborateur\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"amt\">Agent de maîtrise \u002F Technicien\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"cadre\">Ingénieur \u002F Cadre\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"pre-coeff-field\">\n        \u003Clabel>Coefficient conventionnel\u003C\u002Flabel>\n        \u003Cselect id=\"pre-coeff\">\n          \u003Coption value=\"lt160\">Inférieur à 160\u003C\u002Foption>\n          \u003Coption value=\"160-189\">Entre 160 et 189\u003C\u002Foption>\n          \u003Coption value=\"gte190\">190 et plus\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"pre-amt-coeff-field\" style=\"display:none;\">\n        \u003Clabel>Coefficient conventionnel\u003C\u002Flabel>\n        \u003Cselect id=\"pre-amt-coeff\">\n          \u003Coption value=\"lt275\">Inférieur à 275\u003C\u002Foption>\n          \u003Coption value=\"gte275\">275 et plus\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Type de rupture\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"pre-rupture-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"licenciement\">Licenciement\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"demission\">Démission\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Travailleur reconnu handicapé (RQTH)\u003C\u002Flabel>\n        \u003Cdiv class=\"toggle-wrap\">\n          \u003Cdiv class=\"toggle\" id=\"pre-handicap-toggle\">\u003C\u002Fdiv>\n          \u003Cspan class=\"toggle-label\" id=\"pre-handicap-lbl\">Non\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\" id=\"pre-result\">\n      \u003Cdiv class=\"result-label\">Durée du préavis conventionnel\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"pre-duration\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"pre-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"pre-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ====== TAB: SALAIRE MIN ====== -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN chimie dispose d'une \u003Cstrong>grille de salaires propre\u003C\u002Fstrong> basée sur un système de points. Au 1er janvier 2025 : salaire de référence 1 826,77 € + valeur de point 8,74 €\u002Fpoint (Accord du 9 décembre 2024, +1,6 %).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Coefficient conventionnel\u003C\u002Flabel>\n        \u003Cselect id=\"sal-coeff\">\n          \u003Coption value=\"100\">100 — Ouvrier\u002FEmployé débutant\u003C\u002Foption>\n          \u003Coption value=\"115\">115 — Ouvrier\u002FEmployé qualifié\u003C\u002Foption>\n          \u003Coption value=\"120\">120 — Agent qualifié\u003C\u002Foption>\n          \u003Coption value=\"130\">130 — Agent qualifié supérieur\u003C\u002Foption>\n          \u003Coption value=\"140\">140 — Technicien \u002F AM débutant\u003C\u002Foption>\n          \u003Coption value=\"150\">150 — Technicien qualifié\u003C\u002Foption>\n          \u003Coption value=\"160\" selected>160 — Technicien supérieur\u003C\u002Foption>\n          \u003Coption value=\"175\">175 — AM confirmé\u003C\u002Foption>\n          \u003Coption value=\"200\">200 — Technicien hautement qualifié\u003C\u002Foption>\n          \u003Coption value=\"225\">225 — AM senior \u002F Ing. débutant\u003C\u002Foption>\n          \u003Coption value=\"250\">250 — Ingénieur \u002F Cadre débutant\u003C\u002Foption>\n          \u003Coption value=\"275\">275 — Ingénieur \u002F Cadre confirmé\u003C\u002Foption>\n          \u003Coption value=\"300\">300 — Ingénieur \u002F Cadre supérieur\u003C\u002Foption>\n          \u003Coption value=\"350\">350 — Cadre expert\u003C\u002Foption>\n          \u003Coption value=\"400\">400 — Cadre expert senior\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Durée hebdomadaire (heures)\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"sal-heures-pills\">\n          \u003Cspan class=\"pill\" data-val=\"35\">35h\u003C\u002Fspan>\n          \u003Cspan class=\"pill active\" data-val=\"39\">39h\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"40\">40h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\" id=\"sal-result\">\n      \u003Cdiv class=\"result-label\">Salaire minimum conventionnel mensuel brut\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"sal-amount\">— €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"sal-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"sal-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ====== TAB: PRIME ANCIENNETÉ ====== -->\n  \u003Cdiv class=\"panel\" data-panel=\"prime-anciennete\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>La CCN chimie prévoit une \u003Cstrong>prime d'ancienneté obligatoire\u003C\u002Fstrong> versée sous forme de pourcentage sur le salaire brut : 3 % à partir de 2 ans, montant augmentant avec l'ancienneté jusqu'à 15 % au-delà de 20 ans.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire brut mensuel de base\u003C\u002Flabel>\n        \u003Cdiv class=\"slider-wrap\">\n          \u003Cinput type=\"range\" id=\"prime-salaire\" min=\"1400\" max=\"10000\" step=\"50\" value=\"2500\">\n          \u003Cspan class=\"slider-val\" id=\"prime-salaire-val\">2 500 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté dans l'entreprise (années)\u003C\u002Flabel>\n        \u003Cdiv class=\"slider-wrap\">\n          \u003Cinput type=\"range\" id=\"prime-anciennete\" min=\"0\" max=\"35\" step=\"1\" value=\"5\">\n          \u003Cspan class=\"slider-val\" id=\"prime-anciennete-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Catégorie\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"prime-cat-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"ouvrier\">Ouvrier \u002F Collaborateur\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"amt\">Agent de maîtrise\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"cadre\">Ingénieur \u002F Cadre\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\" id=\"prime-result\">\n      \u003Cdiv class=\"result-label\">Prime d'ancienneté mensuelle brute\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"prime-amount\">— €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"prime-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"prime-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ====== TAB: HEURES SUPP ====== -->\n  \u003Cdiv class=\"panel\" data-panel=\"heures-supp\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>Dans la CCN chimie, le \u003Cstrong>décompte des heures supplémentaires démarre à 40h\u002Fsemaine\u003C\u002Fstrong> (base conventionnelle), et non à 35h comme prévu par le code du travail. Le contingent annuel est de \u003Cstrong>130 heures\u003C\u002Fstrong>.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"card-title\">Vos informations\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire brut mensuel\u003C\u002Flabel>\n        \u003Cdiv class=\"slider-wrap\">\n          \u003Cinput type=\"range\" id=\"hs-salaire\" min=\"1400\" max=\"8000\" step=\"50\" value=\"2500\">\n          \u003Cspan class=\"slider-val\" id=\"hs-salaire-val\">2 500 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field-row\">\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Heures supplémentaires hebdomadaires \u003Csmall>(au-delà de 40h)\u003C\u002Fsmall>\u003C\u002Flabel>\n          \u003Cdiv class=\"slider-wrap\">\n            \u003Cinput type=\"range\" id=\"hs-heures\" min=\"0\" max=\"20\" step=\"0.5\" value=\"3\">\n            \u003Cspan class=\"slider-val\" id=\"hs-heures-val\">3h\u003C\u002Fspan>\n          \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Semaines concernées dans le mois\u003C\u002Flabel>\n          \u003Cdiv class=\"slider-wrap\">\n            \u003Cinput type=\"range\" id=\"hs-semaines\" min=\"1\" max=\"4\" step=\"1\" value=\"4\">\n            \u003Cspan class=\"slider-val\" id=\"hs-semaines-val\">4\u003C\u002Fspan>\n          \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Mode de compensation\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"hs-mode-pills\">\n          \u003Cspan class=\"pill active\" data-val=\"paiement\">Paiement majoré\u003C\u002Fspan>\n          \u003Cspan class=\"pill\" data-val=\"repos\">Repos compensateur\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\" id=\"hs-result\">\n      \u003Cdiv class=\"result-label\">Montant des heures supplémentaires\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"hs-amount\">— €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-sub\" id=\"hs-sub\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"hs-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN IDCC 44 (Industries chimiques et connexes).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635613\" target=\"_blank\" rel=\"noopener\">Legifrance — KALICONT000005635613\u003C\u002Fa>.\n    Les montants affichés sont des estimations brutes à titre indicatif.\n    Pour validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n(function () {\n  'use strict';\n\n  const fmt = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\n  const fmtD = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 2 });\n\n  \u002F\u002F ── Slider utility ──────────────────────────────────────────────────────────\n  function bindSlider(id, valId, formatFn) {\n    const el = document.getElementById(id);\n    const val = document.getElementById(valId);\n    function update() {\n      const pct = ((el.value - el.min) \u002F (el.max - el.min)) * 100;\n      el.style.setProperty('--pct', pct + '%');\n      val.textContent = formatFn(+el.value);\n    }\n    el.addEventListener('input', update);\n    update();\n    return el;\n  }\n\n  \u002F\u002F ── Pills utility ───────────────────────────────────────────────────────────\n  function bindPills(containerId, onChange) {\n    const container = document.getElementById(containerId);\n    let current = container.querySelector('.pill.active')?.dataset.val ?? null;\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        current = pill.dataset.val;\n        onChange(current);\n      });\n    });\n    return { getVal: () => current };\n  }\n\n  \u002F\u002F ── Toggle utility ──────────────────────────────────────────────────────────\n  function bindToggle(toggleId, labelId, onChange) {\n    const toggle = document.getElementById(toggleId);\n    const label = document.getElementById(labelId);\n    let on = false;\n    toggle.addEventListener('click', () => {\n      on = !on;\n      toggle.classList.toggle('on', on);\n      label.textContent = on ? 'Oui' : 'Non';\n      onChange(on);\n    });\n    return { getVal: () => on };\n  }\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB: INDEMNITÉ\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  (function initIndemnite() {\n    const state = { cat: 'ouvrier', salaire: 2800, anciennete: 10, age: 42, motif: 'licenciement' };\n\n    bindSlider('ind-salaire', 'ind-salaire-val', v => fmt.format(v)).addEventListener('input', e => { state.salaire = +e.target.value; render(); });\n    bindSlider('ind-anciennete', 'ind-anciennete-val', v => v + ' ans').addEventListener('input', e => { state.anciennete = +e.target.value; render(); });\n    bindSlider('ind-age', 'ind-age-val', v => v + ' ans').addEventListener('input', e => { state.age = +e.target.value; render(); });\n\n    bindPills('ind-cat-pills', v => { state.cat = v; render(); });\n    bindPills('ind-motif-pills', v => { state.motif = v; render(); });\n\n    function compute(s) {\n      if (s.anciennete \u003C 1) return { amount: 0, detail: 'Ancienneté inférieure à 1 an — aucune indemnité légale ni conventionnelle.', formula: '' };\n\n      const anc = s.anciennete;\n      const sal = s.salaire;\n      const age = s.age;\n      let base = 0;\n      let ageMaj = 0;\n      let cap = Infinity;\n      let formulaStr = '';\n\n      if (s.cat === 'ouvrier') {\n        \u002F\u002F 3\u002F10 mois par année, dès 1 an\n        base = (3 \u002F 10) * sal * anc;\n        \u002F\u002F Majoration d'âge (après 5 ans d'ancienneté)\n        if (anc >= 5) {\n          if (age >= 55) ageMaj = 2 * sal;\n          else if (age >= 50) ageMaj = 1 * sal;\n        }\n        formulaStr = `3\u002F10 × ${fmt.format(sal)} × ${anc} an${anc > 1 ? 's' : ''} = ${fmt.format(base)}`;\n        if (ageMaj > 0) formulaStr += ` + majoration d'âge ${fmt.format(ageMaj)}`;\n      } else if (s.cat === 'amt') {\n        \u002F\u002F 0-10 ans : 3\u002F10; 10-20 ans : +1\u002F10; >20 ans : +1\u002F10\n        cap = 18 * sal;\n        const p1 = Math.min(anc, 10);\n        const p2 = Math.max(0, Math.min(anc - 10, 10));\n        const p3 = Math.max(0, anc - 20);\n        base = (3 \u002F 10) * sal * p1 + (4 \u002F 10) * sal * p2 + (5 \u002F 10) * sal * p3;\n        if (anc >= 5) {\n          if (age >= 55) ageMaj = 2 * sal;\n          else if (age >= 50) ageMaj = 1 * sal;\n        }\n        const parts = [];\n        if (p1 > 0) parts.push(`3\u002F10 × ${p1} an${p1 > 1 ? 's' : ''}`);\n        if (p2 > 0) parts.push(`4\u002F10 × ${p2} an${p2 > 1 ? 's' : ''}`);\n        if (p3 > 0) parts.push(`5\u002F10 × ${p3} an${p3 > 1 ? 's' : ''}`);\n        formulaStr = parts.join(' + ') + ` = ${fmt.format(base)} (plafond 18 mois = ${fmt.format(cap)})`;\n        if (ageMaj > 0) formulaStr += ` + majoration d'âge ${fmt.format(ageMaj)}`;\n      } else {\n        \u002F\u002F cadre: 0-10 : 4\u002F10; 10-15 : 6\u002F10; >15 : 8\u002F10\n        cap = 20 * sal;\n        const p1 = Math.min(anc, 10);\n        const p2 = Math.max(0, Math.min(anc - 10, 5));\n        const p3 = Math.max(0, anc - 15);\n        base = (4 \u002F 10) * sal * p1 + (6 \u002F 10) * sal * p2 + (8 \u002F 10) * sal * p3;\n        if (anc >= 5) {\n          if (age >= 55) ageMaj = 2 * sal;\n          else if (age >= 45) ageMaj = 1 * sal;\n        }\n        const parts = [];\n        if (p1 > 0) parts.push(`4\u002F10 × ${p1} an${p1 > 1 ? 's' : ''}`);\n        if (p2 > 0) parts.push(`6\u002F10 × ${p2} an${p2 > 1 ? 's' : ''}`);\n        if (p3 > 0) parts.push(`8\u002F10 × ${p3} an${p3 > 1 ? 's' : ''}`);\n        formulaStr = parts.join(' + ') + ` = ${fmt.format(base)} (plafond 20 mois = ${fmt.format(cap)})`;\n        if (ageMaj > 0) formulaStr += ` + majoration d'âge ${fmt.format(ageMaj)}`;\n      }\n\n      let total = Math.min(base + ageMaj, cap);\n      \u002F\u002F Rupture conventionnelle = au moins indemnité légale (même montant ici)\n      const baselineLegal = sal * (Math.min(anc, 10) * (1 \u002F 4) + Math.max(0, anc - 10) * (1 \u002F 3));\n      const advantage = total - baselineLegal;\n      return { amount: total, formulaStr, advantage, baselineLegal };\n    }\n\n    function render() {\n      const r = compute(state);\n      document.getElementById('ind-amount').textContent = r.amount === 0 ? '0 €' : fmt.format(r.amount);\n      document.getElementById('ind-sub').textContent = r.amount > 0 ? 'Indemnité brute estimée (hors CSG\u002FCRDS)' : '';\n      let detail = '';\n      if (r.amount > 0) {\n        detail = `Formule : ${r.formulaStr}`;\n        if (r.advantage > 0) detail += `\\n\\u25b6 Gain vs code du travail : +${fmt.format(r.advantage)} (base légale : ${fmt.format(r.baselineLegal)})`;\n      } else {\n        detail = r.detail || '';\n      }\n      document.getElementById('ind-detail').textContent = detail;\n    }\n    render();\n  })();\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB: PRÉAVIS\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  (function initPreavis() {\n    const state = { cat: 'ouvrier', coeffOuvrier: 'lt160', coeffAmt: 'lt275', rupture: 'licenciement', handicap: false };\n\n    const catPills = bindPills('pre-cat-pills', v => {\n      state.cat = v;\n      document.getElementById('pre-coeff-field').style.display = v === 'ouvrier' ? '' : 'none';\n      document.getElementById('pre-amt-coeff-field').style.display = v === 'amt' ? '' : 'none';\n      render();\n    });\n\n    document.getElementById('pre-coeff').addEventListener('change', e => { state.coeffOuvrier = e.target.value; render(); });\n    document.getElementById('pre-amt-coeff').addEventListener('change', e => { state.coeffAmt = e.target.value; render(); });\n    bindPills('pre-rupture-pills', v => { state.rupture = v; render(); });\n    bindToggle('pre-handicap-toggle', 'pre-handicap-lbl', v => { state.handicap = v; render(); });\n\n    function compute(s) {\n      let months = 0;\n      let label = '';\n\n      if (s.cat === 'cadre') {\n        months = 3;\n        label = 'Cadres et ingénieurs : 3 mois';\n      } else if (s.cat === 'amt') {\n        months = s.coeffAmt === 'gte275' ? 3 : 2;\n        label = s.coeffAmt === 'gte275'\n          ? 'AM\u002FTechnicien coeff. ≥275 : 3 mois'\n          : 'AM\u002FTechnicien coeff. \u003C275 : 2 mois';\n      } else {\n        \u002F\u002F ouvrier\n        if (s.coeffOuvrier === 'lt160') { months = 0.5; label = 'Ouvrier coeff. \u003C160 : 15 jours'; }\n        else if (s.coeffOuvrier === '160-189') { months = 1; label = 'Ouvrier coeff. 160–189 : 1 mois'; }\n        else { months = 2; label = 'Ouvrier coeff. ≥190 : 2 mois'; }\n      }\n\n      \u002F\u002F Démission = généralement même durée (convention n'impose pas de réduction)\n      if (s.rupture === 'demission') {\n        \u002F\u002F La convention renvoie souvent à la même durée mais peut prévoir des aménagements\n        label += ' (démission)';\n      }\n\n      \u002F\u002F Doublement RQTH (max 3 mois)\n      if (s.handicap) {\n        months = Math.min(months * 2, 3);\n        label += ' × 2 (RQTH) → max 3 mois';\n      }\n\n      return { months, label };\n    }\n\n    function formatDuration(months) {\n      if (months === 0.5) return '15 jours';\n      if (months === 1) return '1 mois';\n      if (months === 2) return '2 mois';\n      if (months === 3) return '3 mois';\n      return months + ' mois';\n    }\n\n    function render() {\n      const r = compute(state);\n      document.getElementById('pre-duration').textContent = formatDuration(r.months);\n      document.getElementById('pre-sub').textContent = r.label;\n      let detail = '';\n      if (state.cat === 'ouvrier') {\n        detail = 'Droit à des heures de recherche d\\'emploi : équivalent au temps de travail hebdomadaire par mois de préavis.';\n      }\n      document.getElementById('pre-detail').textContent = detail;\n    }\n    render();\n  })();\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB: SALAIRE MIN\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  (function initSalaireMin() {\n    \u002F\u002F Grille 2025: base 1826,77€ + (coeff K - 100) × 8,74€ (approx, for 151,67h\u002Fmois = 35h)\n    const REFERENCE = 1826.77;\n    const VALEUR_POINT = 8.74;\n    const BASE_H = 151.67; \u002F\u002F heures mensuelles pour 35h\n\n    const state = { coeff: 160, heures: 39 };\n\n    document.getElementById('sal-coeff').addEventListener('change', e => { state.coeff = +e.target.value; render(); });\n    bindPills('sal-heures-pills', v => { state.heures = +v; render(); });\n\n    function compute(s) {\n      \u002F\u002F Salaire de base pour 35h : base + (K - 100) × valeur point\n      const sal35 = REFERENCE + (s.coeff - 100) * VALEUR_POINT;\n      \u002F\u002F Ajustement heures\n      const heures = s.heures;\n      const hMensuel = (heures \u002F 35) * BASE_H;\n      const sal = sal35 * (hMensuel \u002F BASE_H);\n      return { sal, sal35, hMensuel, heures };\n    }\n\n    function render() {\n      const r = compute(state);\n      document.getElementById('sal-amount').textContent = fmtD.format(r.sal);\n      document.getElementById('sal-sub').textContent = `Pour ${r.heures}h\u002Fsemaine (${r.hMensuel.toFixed(2)}h\u002Fmois)`;\n      document.getElementById('sal-detail').textContent =\n        `Grille IDCC 44 (Accord 9 déc. 2024, +1,6%) :\\n` +\n        `Base 35h : ${fmtD.format(r.sal35)}\\n` +\n        `Formule : ${REFERENCE.toFixed(2)} + (${state.coeff} − 100) × ${VALEUR_POINT} €\u002Fpoint`;\n    }\n    render();\n  })();\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB: PRIME ANCIENNETÉ\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  (function initPrimeAnciennete() {\n    const state = { salaire: 2500, anciennete: 5, cat: 'ouvrier' };\n\n    bindSlider('prime-salaire', 'prime-salaire-val', v => fmt.format(v)).addEventListener('input', e => { state.salaire = +e.target.value; render(); });\n    bindSlider('prime-anciennete', 'prime-anciennete-val', v => v + ' ans').addEventListener('input', e => { state.anciennete = +e.target.value; render(); });\n    bindPills('prime-cat-pills', v => { state.cat = v; render(); });\n\n    \u002F\u002F Barème IDCC 44 prime ancienneté (ouvriers\u002Fcollaborateurs et AMT)\n    \u002F\u002F 2 ans: 3%; 5 ans: 6%; 10 ans: 9%; 15 ans: 12%; 20 ans: 15%\n    function getRate(anc) {\n      if (anc \u003C 2) return 0;\n      if (anc \u003C 5) return 0.03;\n      if (anc \u003C 10) return 0.06;\n      if (anc \u003C 15) return 0.09;\n      if (anc \u003C 20) return 0.12;\n      return 0.15;\n    }\n\n    function compute(s) {\n      const rate = getRate(s.anciennete);\n      const prime = s.salaire * rate;\n      let palier = '';\n      if (s.anciennete \u003C 2) palier = 'Ancienneté \u003C 2 ans : pas de prime';\n      else if (s.anciennete \u003C 5) palier = '2 à 4 ans : 3%';\n      else if (s.anciennete \u003C 10) palier = '5 à 9 ans : 6%';\n      else if (s.anciennete \u003C 15) palier = '10 à 14 ans : 9%';\n      else if (s.anciennete \u003C 20) palier = '15 à 19 ans : 12%';\n      else palier = '20 ans et plus : 15%';\n      return { rate, prime, palier };\n    }\n\n    function render() {\n      const r = compute(state);\n      document.getElementById('prime-amount').textContent = r.prime === 0 ? '0 €' : fmtD.format(r.prime);\n      document.getElementById('prime-sub').textContent = r.palier;\n      document.getElementById('prime-detail').textContent =\n        r.prime > 0\n          ? `Formule : ${(r.rate * 100).toFixed(0)}% × ${fmt.format(state.salaire)} = ${fmtD.format(r.prime)}\u002Fmois\\nSoit ${fmtD.format(r.prime * 12)}\u002Fan brut (hors 13e mois et autres primes)`\n          : 'La prime d\\'ancienneté débute à 2 ans d\\'ancienneté dans l\\'entreprise.';\n    }\n    render();\n  })();\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB: HEURES SUPP\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  (function initHeuresSupp() {\n    const state = { salaire: 2500, heures: 3, semaines: 4, mode: 'paiement' };\n\n    bindSlider('hs-salaire', 'hs-salaire-val', v => fmt.format(v)).addEventListener('input', e => { state.salaire = +e.target.value; render(); });\n    bindSlider('hs-heures', 'hs-heures-val', v => v + 'h').addEventListener('input', e => { state.heures = +e.target.value; render(); });\n    bindSlider('hs-semaines', 'hs-semaines-val', v => v).addEventListener('input', e => { state.semaines = +e.target.value; render(); });\n    bindPills('hs-mode-pills', v => { state.mode = v; render(); });\n\n    function compute(s) {\n      \u002F\u002F Taux horaire = salaire mensuel \u002F 151,67h (base 35h) ou 173,33h (base 40h)\n      \u002F\u002F Convention chimie : base de décompte 40h → heures supp au-delà de 40h\n      const tauxHoraire = s.salaire \u002F 151.67; \u002F\u002F taux basé sur 35h pour le calcul de la rémunération\n      const heuresParSemaine = s.heures;\n      const totalHS = heuresParSemaine * s.semaines;\n\n      \u002F\u002F Majoration : +25% pour les 8 premières heures au-delà de 40h (soit h41 à h48)\n      \u002F\u002F +50% au-delà de la 48e heure\n      const hs25 = Math.min(totalHS, 8 * s.semaines);\n      const hs50 = Math.max(0, totalHS - 8 * s.semaines);\n\n      const montant25 = tauxHoraire * hs25 * 1.25;\n      const montant50 = tauxHoraire * hs50 * 1.50;\n      const total = montant25 + montant50;\n\n      \u002F\u002F Contingent annuel : 130h\n      const contingentRestant = Math.max(0, 130 - totalHS * (52 \u002F 4));\n\n      return { tauxHoraire, hs25, hs50, montant25, montant50, total, contingentRestant, totalHS };\n    }\n\n    function render() {\n      const r = compute(state);\n      if (state.mode === 'paiement') {\n        document.getElementById('hs-amount').textContent = fmtD.format(r.total);\n        document.getElementById('hs-sub').textContent = `Pour ${r.totalHS.toFixed(1)}h supp. ce mois (taux horaire : ${fmtD.format(r.tauxHoraire)}\u002Fh)`;\n        let detail = `Base conventionnelle : 40h\u002Fsemaine (décompte HS dès la 41e heure)\\n`;\n        if (r.hs25 > 0) detail += `• ${r.hs25.toFixed(1)}h à +25% = ${fmtD.format(r.montant25)}\\n`;\n        if (r.hs50 > 0) detail += `• ${r.hs50.toFixed(1)}h à +50% = ${fmtD.format(r.montant50)}\\n`;\n        detail += `Contingent annuel : 130h\u002Fan`;\n        document.getElementById('hs-detail').textContent = detail;\n      } else {\n        \u002F\u002F Repos compensateur\n        const heuresRepos = r.totalHS * 1.25; \u002F\u002F simplifié\n        document.getElementById('hs-amount').textContent = heuresRepos.toFixed(1) + 'h';\n        document.getElementById('hs-sub').textContent = `Repos compensateur équivalent (remplacement du paiement)`;\n        document.getElementById('hs-detail').textContent =\n          `Le salarié peut, avec accord de l'employeur, remplacer le paiement majoré par un repos équivalent.\\nHeures supp : ${r.totalHS.toFixed(1)}h → repos : ~${heuresRepos.toFixed(1)}h (estimatif).`;\n      }\n    }\n    render();\n  })();\n\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  \u002F\u002F TAB NAVIGATION\n  \u002F\u002F ════════════════════════════════════════════════════════════════════════════\n  const tabs = document.querySelectorAll('[data-tab]');\n  const panels = document.querySelectorAll('[data-panel]');\n\n  function activate(id) {\n    tabs.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n    panels.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n    try { if (location.hash !== '#' + id) location.hash = id; } catch(e) {}\n    requestAnimationFrame(() => window.dispatchEvent(new Event('resize')));\n  }\n\n  tabs.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\n  const hashTab = location.hash.slice(1);\n  const validTab = [...tabs].find(t => t.dataset.tab === hashTab);\n  activate(validTab ? hashTab : tabs[0].dataset.tab);\n\n  \u002F\u002F ── ResizeObserver → parent iframe resize ──────────────────────────────────\n  const ro = new ResizeObserver(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n  ro.observe(document.documentElement);\n\n  \u002F\u002F ── Lucide icons ────────────────────────────────────────────────────────────\n  if (typeof lucide !== 'undefined') lucide.createIcons();\n})();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-industries-chimiques-et-connexes-5bf028efe2.webp",[]]