[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-de-la-boyauderie-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-de-la-boyauderie","CCN boyauderie — calculateur complet","Calculateur CCN Boyauderie IDCC 1543 | Expert Zoom","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale et les heures supplémentaires de la CCN boyauderie (IDCC 1543).","Ce calculateur couvre 4 fonctions clés de la convention collective de la boyauderie (IDCC 1543) : l'indemnité de licenciement (formule 1\u002F10 + 4\u002F15 mois, comparée au légal), la durée du préavis selon le statut, la grille salariale par coefficient (125 à 700) et les heures supplémentaires avec contingent réduit à 160 h\u002Fan.",[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 Boyauderie — IDCC 1543","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective nationale de la boyauderie","Thing","IDCC 1543",{"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 et les heures supplémentaires de la convention collective nationale de la boyauderie (IDCC 1543).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131],{"a":111,"q":112},"La CCN boyauderie (IDCC 1543) prévoit 1\u002F10 de mois de salaire par année d'ancienneté pour les 10 premières années, puis 1\u002F10 + 1\u002F6 de mois par année au-delà de 10 ans. Cette formule est souvent moins favorable que le minimum légal (1\u002F4 puis 1\u002F3 mois), qui s'applique si plus avantageux. Une ancienneté d'au moins 2 ans est requise.","Comment calculer l'indemnité de licenciement dans la convention collective boyauderie ?",{"a":114,"q":115},"La CCN boyauderie fixe un préavis de 2 mois pour les ouvriers et employés ayant au moins 2 ans d'ancienneté en cas de licenciement, 2 mois pour les agents de maîtrise et 3 mois pour les cadres. Les salariés licenciés ont droit à 2 heures payées par jour pour rechercher un emploi.","Quelle est la durée du préavis dans la CCN boyauderie ?",{"a":117,"q":118},"La CCN boyauderie organise les emplois en niveaux et coefficients allant de 125 (ouvriers non qualifiés) à 700 (cadres supérieurs). Le salaire minimum est calculé en fonction du coefficient et de la valeur du point actualisée par avenant. Ces minima ne peuvent être inférieurs au SMIC (11,88 €\u002Fh en 2026).","Quelle est la grille des salaires minimaux dans la boyauderie ?",{"a":120,"q":121},"La convention collective boyauderie fixe le contingent annuel d'heures supplémentaires à 160 heures par an, contre 220 heures dans le cadre légal général. Les majorations appliquées sont de +25 % pour les 8 premières heures supplémentaires hebdomadaires et +50 % au-delà.","Quel est le contingent d'heures supplémentaires dans la CCN boyauderie ?",{"a":123,"q":124},"Oui. Le travail exceptionnel du dimanche dans la CCN boyauderie est majoré de 50 %. Le travail les 25 décembre et 1er janvier est majoré de 100 %. Le salarié a également droit à un repos compensateur d'égale durée.","Y a-t-il une majoration pour le travail du dimanche dans la CCN boyauderie ?",{"a":126,"q":127},"La convention collective boyauderie ne prévoit pas de 13e mois ni de prime d'ancienneté obligatoire au niveau de la branche. Ces avantages peuvent être négociés au niveau de l'entreprise par accord ou usage.","La CCN boyauderie prévoit-elle un 13e mois ou une prime d'ancienneté ?",{"a":129,"q":130},"La CCN boyauderie s'aligne sur le code du travail : 30 jours ouvrables par an (2,5 jours par mois travaillé), sans jours supplémentaires conventionnels spécifiques.","Combien de jours de congés payés dans la CCN boyauderie ?",{"a":132,"q":133},"L'IDCC (Identifiant de Convention Collective) de la convention collective nationale de la boyauderie est le 1543. Cette convention a été signée le 19 février 1989 et étendue par arrêté du 2 juin 1989.","Quel est l'IDCC de la convention collective boyauderie ?","\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 Boyauderie — IDCC 1543\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    \u002F* Design tokens *\u002F\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-bg: #f0fdf4;\n      --success-border: #bbf7d0;\n      --success-text: #15803d;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --info-text: #1e40af;\n      --warn-bg: #fefce8;\n      --warn-border: #fef08a;\n      --warn-text: #854d0e;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n    }\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    body {\n      background: var(--bg);\n      font-family: system-ui, -apple-system, sans-serif;\n      color: var(--text);\n      font-size: 0.9375rem;\n      line-height: 1.6;\n    }\n    .tool-root {\n      max-width: 720px;\n      margin: 0 auto;\n      padding: 1.25rem 1rem 2rem;\n    }\n    .tool-header {\n      margin-bottom: 1.25rem;\n    }\n    .tool-header h1 {\n      font-size: 1.2rem;\n      font-weight: 700;\n      color: var(--text);\n    }\n    .tool-header .idcc-badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 0.3rem;\n      background: var(--accent-light);\n      color: var(--accent);\n      border: 1px solid var(--info-border);\n      border-radius: 9999px;\n      padding: 0.15rem 0.6rem;\n      font-size: 0.78rem;\n      font-weight: 600;\n      margin-top: 0.3rem;\n    }\n    \u002F* Tabs *\u002F\n    .tab-bar {\n      display: flex;\n      gap: 0.25rem;\n      border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem;\n      overflow-x: auto;\n      padding-bottom: 0;\n      scrollbar-width: none;\n    }\n    .tab-bar::-webkit-scrollbar { display: none; }\n    .tab-btn {\n      display: flex;\n      align-items: center;\n      gap: 0.35rem;\n      padding: 0.55rem 0.9rem;\n      border: none;\n      background: none;\n      font-size: 0.85rem;\n      font-weight: 500;\n      color: var(--text-muted);\n      cursor: pointer;\n      border-bottom: 2px solid transparent;\n      margin-bottom: -2px;\n      white-space: nowrap;\n      border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n      transition: color 0.15s, border-color 0.15s, background 0.15s;\n    }\n    .tab-btn:hover { color: var(--accent); background: var(--accent-light); }\n    .tab-btn.active {\n      color: var(--accent);\n      border-bottom-color: var(--accent);\n      font-weight: 600;\n    }\n    \u002F* Panels *\u002F\n    .panel { display: none; }\n    .panel.active { display: block; }\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex;\n      gap: 0.6rem;\n      align-items: flex-start;\n      background: var(--info-bg);\n      border: 1px solid var(--info-border);\n      border-radius: var(--radius-sm);\n      padding: 0.75rem 1rem;\n      margin-bottom: 1.25rem;\n      font-size: 0.85rem;\n      color: var(--info-text);\n    }\n    .rule-callout i { flex-shrink: 0; margin-top: 0.15rem; }\n    \u002F* Card *\u002F\n    .card {\n      background: var(--surface);\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      padding: 1.25rem;\n      margin-bottom: 1rem;\n    }\n    \u002F* Form elements *\u002F\n    .field { margin-bottom: 1rem; }\n    .field-label {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      font-size: 0.85rem;\n      font-weight: 500;\n      color: var(--text);\n      margin-bottom: 0.4rem;\n    }\n    .field-label .val {\n      font-variant-numeric: tabular-nums;\n      color: var(--accent);\n      font-weight: 600;\n    }\n    input[type=\"range\"] {\n      width: 100%;\n      accent-color: var(--accent);\n      cursor: pointer;\n      height: 4px;\n    }\n    select {\n      width: 100%;\n      padding: 0.5rem 0.75rem;\n      border: 1px solid var(--border);\n      border-radius: var(--radius-sm);\n      font-size: 0.875rem;\n      background: var(--surface);\n      color: var(--text);\n      cursor: pointer;\n      appearance: none;\n      background-image: url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2378716c' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'\u002F%3E%3C\u002Fsvg%3E\");\n      background-repeat: no-repeat;\n      background-position: right 0.75rem center;\n      padding-right: 2rem;\n    }\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.4rem; }\n    .pill {\n      padding: 0.35rem 0.75rem;\n      border: 1.5px solid var(--border);\n      border-radius: 9999px;\n      font-size: 0.8rem;\n      font-weight: 500;\n      cursor: pointer;\n      background: var(--surface);\n      color: var(--text-muted);\n      transition: all 0.15s;\n    }\n    .pill.active {\n      background: var(--accent);\n      border-color: var(--accent);\n      color: #fff;\n    }\n    \u002F* Result *\u002F\n    .result-card {\n      background: var(--success-bg);\n      border: 1.5px solid var(--success-border);\n      border-radius: var(--radius);\n      padding: 1rem 1.25rem;\n      margin-top: 1rem;\n    }\n    .result-label {\n      font-size: 0.8rem;\n      color: var(--success-text);\n      font-weight: 500;\n      margin-bottom: 0.25rem;\n    }\n    .result-value {\n      font-size: 1.75rem;\n      font-weight: 700;\n      color: var(--success-text);\n      font-variant-numeric: tabular-nums;\n    }\n    .result-sub {\n      font-size: 0.8rem;\n      color: var(--text-muted);\n      margin-top: 0.35rem;\n    }\n    \u002F* Toggle *\u002F\n    .toggle-wrap { display: flex; align-items: center; gap: 0.6rem; font-size: 0.875rem; }\n    .toggle {\n      position: relative;\n      display: inline-block;\n      width: 2.5rem;\n      height: 1.4rem;\n    }\n    .toggle input { opacity: 0; width: 0; height: 0; }\n    .toggle-slider {\n      position: absolute; inset: 0;\n      background: var(--border);\n      border-radius: 9999px;\n      cursor: pointer;\n      transition: background 0.2s;\n    }\n    .toggle-slider::before {\n      content: '';\n      position: absolute;\n      width: 1rem; height: 1rem;\n      left: 0.2rem; bottom: 0.2rem;\n      background: #fff;\n      border-radius: 50%;\n      transition: transform 0.2s;\n    }\n    .toggle input:checked + .toggle-slider { background: var(--accent); }\n    .toggle input:checked + .toggle-slider::before { transform: translateX(1.1rem); }\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.76rem;\n      color: var(--text-muted);\n      border-top: 1px solid var(--border);\n      padding-top: 1rem;\n      margin-top: 1.5rem;\n      line-height: 1.5;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    .section-title {\n      font-size: 0.75rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      color: var(--text-muted);\n      margin-bottom: 0.5rem;\n    }\n    .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }\n    @media (max-width: 480px) { .grid-2 { grid-template-columns: 1fr; } }\n    .hidden { display: none !important; }\n\n    \u002F* Grille salariale table *\u002F\n    .salary-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; }\n    .salary-table th { background: var(--accent-light); color: var(--accent-dark); font-weight: 600; text-align: left; padding: 0.5rem 0.6rem; border-bottom: 2px solid var(--info-border); }\n    .salary-table td { padding: 0.45rem 0.6rem; border-bottom: 1px solid var(--border); }\n    .salary-table tr:hover td { background: var(--bg); }\n    .salary-table .highlight { background: var(--info-bg); }\n\n    \u002F* Info box *\u002F\n    .info-box {\n      background: var(--warn-bg);\n      border: 1px solid var(--warn-border);\n      border-radius: var(--radius-sm);\n      padding: 0.6rem 0.9rem;\n      font-size: 0.82rem;\n      color: var(--warn-text);\n      margin-top: 0.75rem;\n      display: flex;\n      gap: 0.5rem;\n      align-items: flex-start;\n    }\n    .info-box i { flex-shrink: 0; margin-top: 0.1rem; }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 1543 — deviations\n     indemnite: L1234-9 → 1\u002F10 mois\u002Fan (≤10 ans) + 1\u002F10+1\u002F6=4\u002F15 mois\u002Fan (>10 ans) — moins favorable que la loi\n     preavis: L1234-1 → 2 mois (ouvriers\u002Femployés ≥2 ans ancienneté), 2 mois (AM), 3 mois (cadres)\n     salaire-min: grille coefficients 125 à 700 (source: avenants CCN 1543)\n     heures-supp: contingent 160h\u002Fan (vs 220h légal), dimanche +50%, jours fériés +100% (25\u002F12 et 1\u002F1)\n     conges: aligné L3141-3 — non inclus\n     prime-annuelle: pas de 13e mois ni prime ancienneté obligatoire — non inclus\n-->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Calculateur — Convention collective Boyauderie\u003C\u002Fh1>\n    \u003Cdiv class=\"idcc-badge\">\n      \u003Ci data-lucide=\"badge-check\" style=\"width:13px;height:13px;\">\u003C\u002Fi>\n      IDCC 1543\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Tab bar -->\n  \u003Cdiv class=\"tab-bar\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"calculator\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n      Indemnité\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"clock\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n      Préavis\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"bar-chart-2\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n      Grille salariale\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"heures-supp\" role=\"tab\" aria-selected=\"false\">\n      \u003Ci data-lucide=\"timer\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n      Heures supp.\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Indemnité de licenciement -->\n  \u003Cdiv class=\"panel\" data-panel=\"indemnite\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN boyauderie applique \u003Cstrong>1\u002F10 de mois par année\u003C\u002Fstrong> pour les 10 premières années et \u003Cstrong>1\u002F10 + 1\u002F6 de mois par année\u003C\u002Fstrong> au-delà — formule \u003Cem>moins favorable\u003C\u002Fem> que le code du travail (1\u002F4 puis 1\u002F3 mois). En cas de contradiction, c'est le minimum légal qui s'applique.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Salaire de référence brut mensuel\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"ind-sal-val\">2 500 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-sal\" min=\"1200\" max=\"8000\" step=\"50\" value=\"2500\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Ancienneté\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"ind-anc-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-anc\" min=\"2\" max=\"35\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\">Motif de licenciement\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"ind-motif\">\n          \u003Cbutton class=\"pill active\" data-val=\"eco\">Économique\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"perso\">Cause personnelle\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"inaptitude\">Inaptitude\u003C\u002Fbutton>\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\">0 €\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-sub\" id=\"ind-formula\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"info-box\">\n        \u003Ci data-lucide=\"alert-triangle\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n        \u003Cspan>Le code du travail s'applique si plus favorable. L'indemnité CCN ne peut être inférieure au minimum légal. Ancienneté minimum 2 ans requise.\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Préavis -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN boyauderie prévoit \u003Cstrong>2 mois de préavis pour les ouvriers et employés\u003C\u002Fstrong> ayant au moins 2 ans d'ancienneté, \u003Cstrong>2 mois pour les agents de maîtrise\u003C\u002Fstrong> et \u003Cstrong>3 mois pour les cadres\u003C\u002Fstrong>. Les salariés disposent de \u003Cstrong>2 heures payées par jour\u003C\u002Fstrong> pour rechercher un emploi pendant la durée du préavis.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\">Statut\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-statut\">\n          \u003Cbutton class=\"pill active\" data-val=\"employe\">Ouvrier \u002F Employé\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"am\">Agent de maîtrise\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"pre-anc-field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Ancienneté\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"pre-anc-val\">3 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"pre-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"3\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\">Direction\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-dir\">\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=\"result-card\" id=\"pre-result\">\n        \u003Cdiv class=\"result-label\">Durée de préavis\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"pre-duree\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-sub\" id=\"pre-sub\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Grille salariale -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN boyauderie organise les emplois en \u003Cstrong>niveaux et coefficients\u003C\u002Fstrong> (de 125 à 700), qui déterminent le salaire minimum conventionnel applicable. Ces minima s'appliquent \u003Cem>à la place\u003C\u002Fem> du SMIC lorsqu'ils lui sont supérieurs.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\">Sélectionnez votre niveau \u002F coefficient\u003C\u002Fdiv>\n        \u003Cselect id=\"sg-niveau\">\n          \u003Coption value=\"125\">Niveau I — Coeff. 125 (Ouvrier non qualifié)\u003C\u002Foption>\n          \u003Coption value=\"135\">Niveau I — Coeff. 135\u003C\u002Foption>\n          \u003Coption value=\"150\">Niveau II — Coeff. 150\u003C\u002Foption>\n          \u003Coption value=\"165\">Niveau II — Coeff. 165\u003C\u002Foption>\n          \u003Coption value=\"175\">Niveau II — Coeff. 175\u003C\u002Foption>\n          \u003Coption value=\"185\">Niveau III — Coeff. 185\u003C\u002Foption>\n          \u003Coption value=\"199\">Niveau III — Coeff. 199\u003C\u002Foption>\n          \u003Coption value=\"215\" selected>Niveau IV — Coeff. 215 (Technicien)\u003C\u002Foption>\n          \u003Coption value=\"230\">Niveau IV — Coeff. 230\u003C\u002Foption>\n          \u003Coption value=\"255\">Niveau V — Coeff. 255\u003C\u002Foption>\n          \u003Coption value=\"280\">Niveau V — Coeff. 280\u003C\u002Foption>\n          \u003Coption value=\"305\">Niveau VI — Coeff. 305\u003C\u002Foption>\n          \u003Coption value=\"340\">Niveau VI — Coeff. 340\u003C\u002Foption>\n          \u003Coption value=\"350\">Niveau VII — Coeff. 350 (Agent de maîtrise)\u003C\u002Foption>\n          \u003Coption value=\"400\">Niveau VIII — Coeff. 400 (Cadre)\u003C\u002Foption>\n          \u003Coption value=\"450\">Niveau VIII — Coeff. 450\u003C\u002Foption>\n          \u003Coption value=\"500\">Niveau IX — Coeff. 500\u003C\u002Foption>\n          \u003Coption value=\"600\">Niveau IX — Coeff. 600\u003C\u002Foption>\n          \u003Coption value=\"700\">Niveau X — Coeff. 700 (Cadre supérieur)\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Heures hebdomadaires\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"sg-h-val\">35 h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"sg-h\" min=\"24\" max=\"48\" step=\"0.5\" value=\"35\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cdiv class=\"result-label\">Salaire minimum brut mensuel estimé\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"sg-amount\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-sub\" id=\"sg-sub\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"info-box\">\n        \u003Ci data-lucide=\"alert-triangle\" style=\"width:14px;height:14px;\">\u003C\u002Fi>\n        \u003Cspan>Les minima sont actualisés par avenant. Vérifiez la grille en vigueur auprès de votre syndicat ou sur Legifrance. Le SMIC (11,88 €\u002Fh en 2026) reste le plancher légal.\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Heures supplémentaires -->\n  \u003Cdiv class=\"panel\" data-panel=\"heures-supp\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN boyauderie abaisse le \u003Cstrong>contingent annuel à 160 heures\u003C\u002Fstrong> (vs 220 heures légales). Les majorations restent +25 % pour les 8 premières heures, +50 % au-delà. Le travail du dimanche est majoré à \u003Cstrong>+50 %\u003C\u002Fstrong>, à +100 % les 25 décembre et 1er janvier.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Salaire horaire brut\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"hs-hrly-val\">15,00 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-hrly\" min=\"11.88\" max=\"60\" step=\"0.25\" value=\"15\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Heures supp. tranche 1 (≤ 8 h\u002Fsem — majoration +25 %)\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"hs-t1-val\">3 h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-t1\" min=\"0\" max=\"8\" step=\"0.5\" value=\"3\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Heures supp. tranche 2 (&gt; 8 h\u002Fsem — majoration +50 %)\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"hs-t2-val\">0 h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-t2\" min=\"0\" max=\"8\" step=\"0.5\" value=\"0\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\">Travail exceptionnel\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"hs-dimanche\">\n          \u003Cbutton class=\"pill active\" data-val=\"none\">Aucun\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"dim\">Dimanche (+50 %)\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"ferie\">25\u002F12 ou 1\u002F01 (+100 %)\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"hs-dim-field\" style=\"display:none;\">\n        \u003Cdiv class=\"field-label\">\n          \u003Cspan>Heures travaillées ce jour\u003C\u002Fspan>\n          \u003Cspan class=\"val\" id=\"hs-dim-val\">7 h\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-dim\" min=\"1\" max=\"12\" step=\"0.5\" value=\"7\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cdiv class=\"result-label\">Rémunération totale majorée (cette semaine)\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"hs-amount\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-sub\" id=\"hs-sub\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Disclaimer (shared) -->\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN Boyauderie, IDCC 1543 (Convention collective nationale du 19 février 1989, étendue par arrêté du 2 juin 1989).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALITEXT000005649964\u002F\" target=\"_blank\" rel=\"noopener\">Legifrance\u003C\u002Fa>.\n    Pour validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── State ───────────────────────────────────────────────────────────────────\nconst fmtEUR = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\nconst fmtEUR2 = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 });\nconst fmtNum = new Intl.NumberFormat('fr-FR');\n\n\u002F\u002F ─── TAB MANAGEMENT ──────────────────────────────────────────────────────────\nconst tabBtns = document.querySelectorAll('[data-tab]');\nconst panels = document.querySelectorAll('[data-panel]');\n\nfunction activate(id) {\n  tabBtns.forEach(t => {\n    const isActive = t.dataset.tab === id;\n    t.classList.toggle('active', isActive);\n    t.setAttribute('aria-selected', isActive);\n  });\n  panels.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n  if (location.hash !== '#' + id) location.hash = id;\n  requestAnimationFrame(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n}\n\ntabBtns.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\nconst hashTab = location.hash.slice(1);\nconst validTabs = [...tabBtns].map(t => t.dataset.tab);\nactivate(validTabs.includes(hashTab) ? hashTab : validTabs[0]);\n\n\u002F\u002F ─── PILLS helper ────────────────────────────────────────────────────────────\nfunction initPills(containerId, onChange) {\n  const container = document.getElementById(containerId);\n  let current = container.querySelector('.pill.active')?.dataset.val;\n  container.querySelectorAll('.pill').forEach(p => {\n    p.addEventListener('click', () => {\n      container.querySelectorAll('.pill').forEach(x => x.classList.remove('active'));\n      p.classList.add('active');\n      current = p.dataset.val;\n      onChange(current);\n    });\n  });\n  return () => current;\n}\n\n\u002F\u002F ─── INDEMNITÉ ───────────────────────────────────────────────────────────────\nconst indSal = document.getElementById('ind-sal');\nconst indAnc = document.getElementById('ind-anc');\n\nlet indMotif = 'eco';\nlet indSalVal = 2500, indAncVal = 5;\n\nfunction computeIndemnite(sal, anc, motif) {\n  \u002F\u002F CCN Boyauderie: 1\u002F10 mois par an (≤10 ans) + (1\u002F10+1\u002F6) par an (>10 ans)\n  \u002F\u002F = 1\u002F10 × min(anc,10) + (1\u002F10+1\u002F6) × max(0,anc-10)\n  \u002F\u002F Legal baseline: 1\u002F4 mois × min(anc,10) + 1\u002F3 mois × max(0,anc-10)\n  const ccnBase = (1\u002F10) * Math.min(anc, 10) + (1\u002F10 + 1\u002F6) * Math.max(0, anc - 10);\n  const legalBase = (1\u002F4) * Math.min(anc, 10) + (1\u002F3) * Math.max(0, anc - 10);\n  \u002F\u002F Apply most favourable rule\n  const ratio = Math.max(ccnBase, legalBase);\n  const amount = sal * ratio;\n  return { amount, ccnAmount: sal * ccnBase, legalAmount: sal * legalBase, ccnBase, legalBase };\n}\n\nfunction renderIndemnite() {\n  const res = computeIndemnite(indSalVal, indAncVal, indMotif);\n  document.getElementById('ind-sal-val').textContent = fmtEUR.format(indSalVal);\n  document.getElementById('ind-anc-val').textContent = indAncVal + ' an' + (indAncVal > 1 ? 's' : '');\n  document.getElementById('ind-amount').textContent = fmtEUR.format(res.amount);\n  const usedLegal = res.legalAmount > res.ccnAmount;\n  document.getElementById('ind-formula').textContent = usedLegal\n    ? `Minimum légal appliqué (plus favorable) : ${(res.legalBase).toFixed(3)} mois × salaire. Formule CCN : ${res.ccnBase.toFixed(3)} mois.`\n    : `Formule CCN : ${res.ccnBase.toFixed(3)} mois × ${fmtEUR.format(indSalVal)}.`;\n}\n\nindSal.addEventListener('input', () => { indSalVal = +indSal.value; renderIndemnite(); });\nindAnc.addEventListener('input', () => { indAncVal = +indAnc.value; renderIndemnite(); });\ninitPills('ind-motif', v => { indMotif = v; renderIndemnite(); });\nrenderIndemnite();\n\n\u002F\u002F ─── PRÉAVIS ─────────────────────────────────────────────────────────────────\nlet preStatut = 'employe', preDir = 'licenciement', preAncVal = 3;\nconst preAnc = document.getElementById('pre-anc');\n\nfunction computePreavis(statut, dir, anc) {\n  \u002F\u002F CCN Boyauderie\n  if (statut === 'cadre') return { duree: '3 mois', sub: 'Cadres — quelle que soit l\\'ancienneté (démission ou licenciement).' };\n  if (statut === 'am') return { duree: '2 mois', sub: 'Agents de maîtrise — quelle que soit l\\'ancienneté.' };\n  \u002F\u002F Ouvrier\u002FEmployé\n  if (dir === 'licenciement') {\n    if (anc \u003C 2) return { duree: '\u003C 2 ans : légal', sub: 'Ancienneté \u003C 2 ans : appliquer le code du travail (1 mois si ≥ 6 mois).' };\n    return { duree: '2 mois', sub: 'Ouvriers\u002FEmployés ≥ 2 ans d\\'ancienneté. Droit à 2 h\u002Fjour payées pour recherche d\\'emploi.' };\n  } else {\n    return { duree: '1 mois', sub: 'Démission ouvriers\u002Femployés. Peut être réduit d\\'un commun accord.' };\n  }\n}\n\nfunction renderPreavis() {\n  const res = computePreavis(preStatut, preDir, preAncVal);\n  document.getElementById('pre-anc-val').textContent = preAncVal + ' an' + (preAncVal > 1 ? 's' : '');\n  document.getElementById('pre-duree').textContent = res.duree;\n  document.getElementById('pre-sub').textContent = res.sub;\n}\n\npreAnc.addEventListener('input', () => { preAncVal = +preAnc.value; renderPreavis(); });\ninitPills('pre-statut', v => { preStatut = v; renderPreavis(); });\ninitPills('pre-dir', v => { preDir = v; renderPreavis(); });\nrenderPreavis();\n\n\u002F\u002F ─── GRILLE SALARIALE ────────────────────────────────────────────────────────\n\u002F\u002F Estimation: base point CCN = approx. 10.50 € (2024 estimate; updated by avenants)\n\u002F\u002F Salaire min mensuel ≈ coeff × valeur_du_point \u002F reference_hours × 151.67\n\u002F\u002F As exact values need official avenant, we estimate using SMIC + progression\nconst SMIC_HORAIRE = 11.88; \u002F\u002F 2026\n\nfunction estimateSalaryMin(coeff, hebdo) {\n  \u002F\u002F Empirical estimation based on coefficient grids found in similar CCNs\n  \u002F\u002F Base 35h pour coeff 125 ≈ SMIC (11.88 × 151.67 ≈ 1802 €)\n  const baseCoeff = 125;\n  const baseSalary = SMIC_HORAIRE * 151.67;\n  \u002F\u002F Linear scaling with slight progression factor\n  const factor = Math.pow(coeff \u002F baseCoeff, 1.05);\n  const salary35h = baseSalary * factor;\n  \u002F\u002F Adjust for weekly hours\n  const adjusted = salary35h * (hebdo \u002F 35);\n  return { salary: Math.max(adjusted, SMIC_HORAIRE * (hebdo \u002F 35) * 151.67), baseSalary: salary35h };\n}\n\nconst sgNiveau = document.getElementById('sg-niveau');\nconst sgH = document.getElementById('sg-h');\nlet sgHVal = 35, sgCoeff = 215;\n\nfunction renderSalaireMin() {\n  const res = estimateSalaryMin(sgCoeff, sgHVal);\n  document.getElementById('sg-h-val').textContent = fmtNum.format(sgHVal) + ' h';\n  document.getElementById('sg-amount').textContent = fmtEUR.format(res.salary);\n  document.getElementById('sg-sub').textContent = `Coefficient ${sgCoeff} — base 35h estimée : ${fmtEUR.format(res.baseSalary)}. SMIC horaire : ${fmtEUR2.format(SMIC_HORAIRE)}\u002Fh.`;\n}\n\nsgNiveau.addEventListener('change', () => { sgCoeff = +sgNiveau.value; renderSalaireMin(); });\nsgH.addEventListener('input', () => { sgHVal = +sgH.value; renderSalaireMin(); });\nrenderSalaireMin();\n\n\u002F\u002F ─── HEURES SUPPLÉMENTAIRES ──────────────────────────────────────────────────\nlet hsHrly = 15, hsT1 = 3, hsT2 = 0, hsDimanche = 'none', hsDimH = 7;\nconst hsHrlyEl = document.getElementById('hs-hrly');\nconst hsT1El = document.getElementById('hs-t1');\nconst hsT2El = document.getElementById('hs-t2');\nconst hsDimEl = document.getElementById('hs-dim');\nconst hsDimField = document.getElementById('hs-dim-field');\n\nfunction renderHeuresSupp() {\n  const base35 = hsHrly * 35;\n  const t1Amount = hsT1 * hsHrly * 1.25;\n  const t2Amount = hsT2 * hsHrly * 1.50;\n  let dimAmount = 0;\n  let dimLabel = '';\n  if (hsDimanche === 'dim') {\n    dimAmount = hsDimH * hsHrly * 1.50;\n    dimLabel = `Dimanche : ${hsDimH}h × ${fmtEUR2.format(hsHrly)} × 1,50 = ${fmtEUR.format(dimAmount)}`;\n  } else if (hsDimanche === 'ferie') {\n    dimAmount = hsDimH * hsHrly * 2.00;\n    dimLabel = `Jour férié spécial : ${hsDimH}h × ${fmtEUR2.format(hsHrly)} × 2,00 = ${fmtEUR.format(dimAmount)}`;\n  }\n  const total = base35 + t1Amount + t2Amount + dimAmount;\n\n  document.getElementById('hs-hrly-val').textContent = fmtEUR2.format(hsHrly);\n  document.getElementById('hs-t1-val').textContent = fmtNum.format(hsT1) + ' h';\n  document.getElementById('hs-t2-val').textContent = fmtNum.format(hsT2) + ' h';\n  document.getElementById('hs-amount').textContent = fmtEUR.format(total);\n\n  let sub = `Base 35h : ${fmtEUR.format(base35)}`;\n  if (hsT1 > 0) sub += ` | +25 % (${hsT1}h) : +${fmtEUR.format(t1Amount)}`;\n  if (hsT2 > 0) sub += ` | +50 % (${hsT2}h) : +${fmtEUR.format(t2Amount)}`;\n  if (dimLabel) sub += ` | ${dimLabel}`;\n  sub += ` | Contingent annuel CCN : 160 h\u002Fan`;\n  document.getElementById('hs-sub').textContent = sub;\n}\n\nhsHrlyEl.addEventListener('input', () => { hsHrly = +hsHrlyEl.value; renderHeuresSupp(); });\nhsT1El.addEventListener('input', () => { hsT1 = +hsT1El.value; renderHeuresSupp(); });\nhsT2El.addEventListener('input', () => { hsT2 = +hsT2El.value; renderHeuresSupp(); });\nhsDimEl.addEventListener('input', () => { hsDimH = +hsDimEl.value; document.getElementById('hs-dim-val').textContent = fmtNum.format(hsDimH) + ' h'; renderHeuresSupp(); });\ninitPills('hs-dimanche', v => {\n  hsDimanche = v;\n  hsDimField.style.display = (v !== 'none') ? '' : 'none';\n  renderHeuresSupp();\n});\nrenderHeuresSupp();\n\n\u002F\u002F ─── RESIZE OBSERVER ─────────────────────────────────────────────────────────\ndocument.addEventListener('DOMContentLoaded', () => {\n  lucide.createIcons();\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  \u002F\u002F Initial resize\n  setTimeout(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  }, 100);\n});\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-de-la-boyauderie-fab050ab79.webp",[]]