[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-de-la-patisserie-fr":83,"footer-cities-fr":146},[4,14,22,30,38,45,53,60,67,75],{"seo_content":5,"id":8,"name":9,"slug":10,"parentId":7,"lang":11,"_count":12},[6],{"page_slug":7},null,"cmkzhl7xm00dbulbc93h4qog5","Juridique","avocats","fr-FR",{"experts":13},8,{"seo_content":15,"id":17,"name":18,"slug":19,"parentId":7,"lang":11,"_count":20},[16],{"page_slug":7},"cmkzhl84700djulbcbv6pzu9e","Informatique","informaticiens",{"experts":21},3,{"seo_content":23,"id":25,"name":26,"slug":27,"parentId":7,"lang":11,"_count":28},[24],{"page_slug":7},"cmkzhlaos00gnulbc07i9jrco","Amélioration de la Maison","artisans",{"experts":29},4,{"seo_content":31,"id":33,"name":34,"slug":35,"parentId":7,"lang":11,"_count":36},[32],{"page_slug":7},"cmkzhlaqg00gpulbcx38bwoc2","Général","divers-generalistes",{"experts":37},0,{"seo_content":39,"id":41,"name":42,"slug":43,"parentId":7,"lang":11,"_count":44},[40],{"page_slug":7},"cmkzhlbvq00i3ulbcutdbcz50","Électronique Grand Public","techniciens-electronique",{"experts":21},{"seo_content":46,"id":48,"name":49,"slug":50,"parentId":7,"lang":11,"_count":51},[47],{"page_slug":7},"cmkzhlcaw00ilulbc38pxoogr","Santé","medecins",{"experts":52},5,{"seo_content":54,"id":56,"name":57,"slug":58,"parentId":7,"lang":11,"_count":59},[55],{"page_slug":7},"cmkzhlcmi00izulbcxva1m47f","Gestion de Patrimoine","conseillers-patrimoniaux",{"experts":21},{"seo_content":61,"id":63,"name":64,"slug":65,"parentId":7,"lang":11,"_count":66},[62],{"page_slug":7},"cmkzhldcv00jvulbcmcd5a7mk","Animaux et Vétérinaires","veterinaires",{"experts":21},{"seo_content":68,"id":70,"name":71,"slug":72,"parentId":7,"lang":11,"_count":73},[69],{"page_slug":7},"cmkzhldrr00kdulbchxfo67eg","Mécanique et Réparation","mecaniciens",{"experts":74},1,{"seo_content":76,"id":78,"name":79,"slug":80,"parentId":7,"lang":11,"_count":81},[77],{"page_slug":7},"cmkzhl9l300fbulbcv3i8q8p3","Aide aux Devoirs","professeurs-particuliers",{"experts":82},6,{"slug":84,"title":85,"page_title":86,"description":87,"content_md":88,"local_slug":84,"json_ld":89,"faq":109,"tool_html":140,"source":141,"category":142,"audience":143,"publish_mode":144,"hero_image":145,"hero_image_alt":7},"ccn-de-la-patisserie","CCN de la pâtisserie — calculateur complet","Calculateur CCN Pâtisserie IDCC 1267 | Expert Zoom","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale 2025 et les heures supplémentaires de la CCN pâtisserie artisanale (IDCC 1267).","Ce calculateur interactif couvre les quatre principales déviations de la CCN pâtisserie (IDCC 1267) par rapport au code du travail : le calcul de l'indemnité de licenciement avec le supplément de 1\u002F15 pour les ouvriers, les durées de préavis asymétriques par statut, la grille salariale 2025 (avenant n° 112) et les majorations d'heures supplémentaires à partir de 39 heures.",[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 de la pâtisserie — IDCC 1267","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective nationale de la pâtisserie","Thing","IDCC 1267",{"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 pâtisserie (IDCC 1267).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131,134,137],{"a":111,"q":112},"La CCN pâtisserie (IDCC 1267) applique le plancher légal de l'article L1234-9 (1\u002F4 de mois de salaire par année d'ancienneté pour les 10 premières années, 1\u002F3 au-delà). Pour les ouvriers, une indemnité complémentaire de 1\u002F15 de mois par année d'ancienneté au-delà de 10 ans vient s'y ajouter.","Quelle est la formule de l'indemnité de licenciement dans la convention collective de la pâtisserie ?",{"a":114,"q":115},"Dans la CCN pâtisserie (IDCC 1267, art. 19), le préavis de l'employeur est : 1 semaine (moins de 6 mois d'ancienneté), 1 mois (6 mois à 2 ans), 2 mois (plus de 2 ans) pour les ouvriers\u002Femployés. Les agents de maîtrise bénéficient de 2 mois, et les cadres de 3 mois, quel que soit leur ancienneté.","Quelle est la durée du préavis de licenciement dans la CCN pâtisserie ?",{"a":117,"q":118},"Pour les ouvriers et employés, le salarié qui démissionne doit respecter 1 semaine de préavis quelle que soit son ancienneté. Les agents de maîtrise et les cadres respectent le même délai que l'employeur (2 mois et 3 mois respectivement).","Quel est le préavis à respecter par le salarié en cas de démission ?",{"a":120,"q":121},"L'avenant n° 112 du 4 février 2025 fixe les salaires minima au 1er janvier 2025 (base 151,67 h\u002Fmois). Les coefficients vont de 160 (1 841,27 €\u002Fmois pour un ouvrier débutant) à 350 (3 670,41 €\u002Fmois pour un cadre dirigeant senior). Une revalorisation de +2,20 % a été appliquée à l'ensemble des coefficients.","Quelle est la grille des salaires de la pâtisserie artisanale en 2025 ?",{"a":123,"q":124},"Au 1er janvier 2025, le salaire minimum conventionnel pour un ouvrier débutant (coefficient 160) est de 1 841,27 € bruts par mois pour 151,67 heures, soit un taux horaire de 12,14 €.","Quel est le salaire minimum d'un ouvrier en pâtisserie artisanale ?",{"a":126,"q":127},"La convention collective pâtisserie artisanale (IDCC 1267) ne prévoit pas de 13e mois ni de prime d'ancienneté obligatoire. Attention à ne pas confondre avec la CCN boulangerie-pâtisserie (IDCC 843) qui prévoit une prime de fin d'année.","Y a-t-il un 13e mois ou une prime d'ancienneté dans la CCN pâtisserie (IDCC 1267) ?",{"a":129,"q":130},"Dans la CCN pâtisserie (IDCC 1267), la durée hebdomadaire de référence est de 39 heures. Les heures supplémentaires (au-delà de 39h) sont majorées de 25 % pour les 8 premières heures supplémentaires, puis de 50 % au-delà. Le contingent annuel est fixé à 180 heures.","Comment sont comptées les heures supplémentaires dans la CCN pâtisserie ?",{"a":132,"q":133},"La convention collective pâtisserie (IDCC 1267) ne prévoit pas de jours de congés payés supplémentaires par rapport au code du travail. Les salariés bénéficient des 30 jours ouvrables légaux (soit 5 semaines).","Combien de jours de congés payés dans la CCN pâtisserie ?",{"a":135,"q":136},"Non. La CCN pâtisserie (IDCC 1267) s'applique aux établissements qui fabriquent et\u002Fou vendent des produits de pâtisserie (artisans pâtissiers). Les boulangeries-pâtisseries artisanales relèvent d'une autre convention : la CCN boulangerie-pâtisserie artisanale (IDCC 843).","La CCN pâtisserie s'applique-t-elle aux boulangeries-pâtisseries ?",{"a":138,"q":139},"La convention collective nationale de la pâtisserie porte le numéro IDCC 1267. Elle est identifiée sous le numéro de brochure 3215.","Quel est le numéro IDCC de la convention collective de la pâtisserie ?","\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 Pâtisserie IDCC 1267\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: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --accent-dark: #1d4ed8;\n      --text: #1c1917;\n      --muted: #78716c;\n      --success: #16a34a;\n      --success-light: #f0fdf4;\n      --warn-bg: #fffbeb;\n      --warn-border: #fcd34d;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n      --shadow: 0 1px 3px 0 rgb(0 0 0 \u002F .10), 0 1px 2px -1px rgb(0 0 0 \u002F .10);\n    }\n    body { background: var(--bg); font-family: system-ui, -apple-system, sans-serif; color: var(--text); font-size: 0.9375rem; line-height: 1.5; }\n    .tool-root { max-width: 700px; margin: 0 auto; padding: 1.25rem 1rem 2rem; }\n    .tool-header { margin-bottom: 1.25rem; }\n    .tool-header h1 { font-size: 1.1rem; font-weight: 700; color: var(--text); }\n    .tool-header .badge { display: inline-flex; align-items: center; gap: 0.3rem; background: var(--accent-light); color: var(--accent); font-size: 0.75rem; font-weight: 600; padding: 0.2rem 0.6rem; border-radius: 9999px; margin-top: 0.35rem; }\n\n    \u002F* Tabs *\u002F\n    .tab-bar { display: flex; gap: 0.25rem; border-bottom: 2px solid var(--border); margin-bottom: 1.25rem; overflow-x: auto; scrollbar-width: none; }\n    .tab-bar::-webkit-scrollbar { display: none; }\n    .tab-btn { flex-shrink: 0; padding: 0.55rem 1rem; font-size: 0.875rem; font-weight: 500; color: var(--muted); background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; cursor: pointer; display: flex; align-items: center; gap: 0.4rem; transition: color 0.15s, border-color 0.15s; white-space: nowrap; }\n    .tab-btn:hover { color: var(--text); }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }\n    .tab-panel { display: none; }\n    .tab-panel.active { display: block; }\n\n    \u002F* Rule callout *\u002F\n    .rule-callout { background: var(--accent-light); border-left: 3px solid var(--accent); border-radius: var(--radius-sm); padding: 0.75rem 1rem; margin-bottom: 1.25rem; display: flex; gap: 0.6rem; align-items: flex-start; }\n    .rule-callout svg { flex-shrink: 0; margin-top: 0.15rem; color: var(--accent); }\n    .rule-callout p { font-size: 0.875rem; color: #1e3a8a; }\n\n    \u002F* Form *\u002F\n    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.25rem; }\n    @media (max-width: 480px) { .form-grid { grid-template-columns: 1fr; } }\n    .form-group { display: flex; flex-direction: column; gap: 0.4rem; }\n    .form-group label { font-size: 0.8125rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.03em; }\n    .form-group .val-display { font-size: 0.9375rem; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\n    input[type=range] { width: 100%; height: 6px; accent-color: var(--accent); cursor: pointer; }\n    select { width: 100%; padding: 0.5rem 0.75rem; border: 1.5px solid var(--border); border-radius: var(--radius-sm); font-size: 0.9375rem; background: var(--card); color: var(--text); cursor: pointer; appearance: auto; }\n    select:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }\n\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.4rem; }\n    .pill { padding: 0.35rem 0.85rem; border-radius: 9999px; border: 1.5px solid var(--border); font-size: 0.8125rem; cursor: pointer; background: var(--card); color: var(--text); font-weight: 500; transition: all 0.15s; }\n    .pill.active { background: var(--accent); color: #fff; border-color: var(--accent); }\n\n    \u002F* Result card *\u002F\n    .result-card { background: var(--card); border: 1.5px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.25rem; margin-bottom: 1rem; }\n    .result-row { display: flex; justify-content: space-between; align-items: baseline; padding: 0.4rem 0; border-bottom: 1px solid var(--border); font-size: 0.875rem; }\n    .result-row:last-child { border-bottom: none; }\n    .result-row .label { color: var(--muted); }\n    .result-row .value { font-weight: 700; font-variant-numeric: tabular-nums; }\n    .result-main { background: var(--success-light); border: 1.5px solid #bbf7d0; border-radius: var(--radius); padding: 1rem 1.25rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.75rem; }\n    .result-main svg { color: var(--success); flex-shrink: 0; }\n    .result-main .label { font-size: 0.8125rem; color: var(--success); font-weight: 600; }\n    .result-main .amount { font-size: 1.5rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--success); }\n\n    \u002F* Salary grid table *\u002F\n    .grid-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; margin-bottom: 1rem; }\n    .grid-table th { background: var(--accent-light); color: var(--accent); text-align: left; padding: 0.5rem 0.6rem; font-weight: 600; }\n    .grid-table td { padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--border); }\n    .grid-table tr:hover td { background: var(--bg); }\n    .grid-table tr.highlight td { background: #eff6ff; font-weight: 600; }\n    .cat-badge { display: inline-block; font-size: 0.7rem; padding: 0.1rem 0.45rem; border-radius: 9999px; font-weight: 600; }\n    .cat-ouvrier { background: #fef3c7; color: #92400e; }\n    .cat-employe { background: #e0f2fe; color: #0c4a6e; }\n    .cat-maitre { background: #f3e8ff; color: #5b21b6; }\n    .cat-cadre { background: #dcfce7; color: #14532d; }\n\n    \u002F* Disclaimer *\u002F\n    .disclaimer { font-size: 0.8rem; color: var(--muted); border-top: 1px solid var(--border); padding-top: 1rem; margin-top: 0.75rem; line-height: 1.6; }\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\u003Cmain class=\"tool-root\">\n  \u003C!-- CCN header -->\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Convention collective de la pâtisserie\u003C\u002Fh1>\n    \u003Cdiv class=\"badge\">\n      \u003Ci data-lucide=\"landmark\" style=\"width:12px;height:12px\">\u003C\u002Fi>\n      IDCC 1267\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\">\n      \u003Ci data-lucide=\"banknote\" style=\"width:14px;height:14px\">\u003C\u002Fi>\n      Indemnité\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">\n      \u003Ci data-lucide=\"calendar-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\">\n      \u003Ci data-lucide=\"table\" style=\"width:14px;height:14px\">\u003C\u002Fi>\n      Grille salariale\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"heures-supp\" role=\"tab\">\n      \u003Ci data-lucide=\"clock\" style=\"width:14px;height:14px\">\u003C\u002Fi>\n      Heures supp.\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ───────────── TAB: INDEMNITÉ ───────────── -->\n  \u003Cdiv class=\"tab-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 pâtisserie (IDCC 1267) majore l'indemnité pour les ouvriers : une indemnité complémentaire de \u003Cstrong>1\u002F15 de mois par année au-delà de 10 ans\u003C\u002Fstrong> s'ajoute au plancher légal (L1234-9 : 1\u002F4 mois × années ≤10 + 1\u002F3 mois × années >10). L'assiette retient le salaire mensuel moyen le plus favorable.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-grid\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Salaire brut mensuel\u003C\u002Flabel>\n        \u003Cdiv class=\"val-display\" id=\"ind-sal-disp\">2 500 €\u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-sal\" min=\"1400\" max=\"8000\" step=\"50\" value=\"2500\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Ancienneté (années)\u003C\u002Flabel>\n        \u003Cdiv class=\"val-display\" id=\"ind-anc-disp\">8 ans\u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"ind-anc\" min=\"1\" max=\"40\" step=\"1\" value=\"8\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\" style=\"margin-bottom:1.25rem\">\n      \u003Clabel>Catégorie\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"ind-cat-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"ouvrier\">Ouvrier\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"employe\">Employé \u002F 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=\"form-group\" style=\"margin-bottom:1.25rem\">\n      \u003Clabel>Motif de licenciement\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"ind-motif-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"eco\">Économique\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"perso\">Cause réelle et sérieuse\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"incapacite\">Inaptitude\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-main\" id=\"ind-result-main\">\n      \u003Ci data-lucide=\"check-circle\" style=\"width:28px;height:28px\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Indemnité estimée (brut)\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"ind-amount\">0 €\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Base de calcul (légale)\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"ind-legal\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Complément CCN (ouvriers > 10 ans)\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"ind-complement\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Nombre d'années complètes\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"ind-years\">0\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ───────────── TAB: PRÉAVIS ───────────── -->\n  \u003Cdiv class=\"tab-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 pâtisserie (IDCC 1267, art. 19) prévoit un préavis \u003Cstrong>asymétrique\u003C\u002Fstrong> : l'employeur notifie plus longtemps que le salarié, avec des durées différentes selon le statut (ouvrier\u002Femployé, agent de maîtrise, cadre).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-grid\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Statut\u003C\u002Flabel>\n        \u003Cselect id=\"prev-statut\">\n          \u003Coption value=\"ouvrier\">Ouvrier \u002F Employé\u003C\u002Foption>\n          \u003Coption value=\"maitre\">Agent de maîtrise\u003C\u002Foption>\n          \u003Coption value=\"cadre\">Cadre\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Ancienneté\u003C\u002Flabel>\n        \u003Cselect id=\"prev-anc\">\n          \u003Coption value=\"0_6\">Moins de 6 mois\u003C\u002Foption>\n          \u003Coption value=\"6_24\">6 mois à 2 ans\u003C\u002Foption>\n          \u003Coption value=\"24_plus\" selected>Plus de 2 ans\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\" style=\"margin-bottom:1.25rem\">\n      \u003Clabel>À l'initiative de\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"prev-init-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"employer\">L'employeur\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"employee\">Le salarié\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-main\" id=\"prev-result-main\">\n      \u003Ci data-lucide=\"calendar\" style=\"width:28px;height:28px\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Durée du préavis\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"prev-duration\" style=\"font-size:1.25rem\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Statut\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"prev-statut-disp\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Durée employeur\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"prev-emp-dur\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Durée salarié\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"prev-sal-dur\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ───────────── TAB: GRILLE SALARIALE ───────────── -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cp>L'avenant n° 112 du 4 février 2025 fixe la grille des salaires minima au \u003Cstrong>1er janvier 2025\u003C\u002Fstrong> (base 151,67 h\u002Fmois). Revalorisation de +2,20 % pour tous les coefficients (coefficients 160-190 : +1,2 % supplémentaire en 2026 selon avenant n° 114).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-grid\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Coefficient \u002F Niveau\u003C\u002Flabel>\n        \u003Cselect id=\"sal-coef\">\n          \u003Coption value=\"160\">160 — Ouvrier débutant (CAP)\u003C\u002Foption>\n          \u003Coption value=\"165\">165 — Ouvrier 1re catégorie\u003C\u002Foption>\n          \u003Coption value=\"170\">170 — Ouvrier production\u003C\u002Foption>\n          \u003Coption value=\"175\">175 — Ouvrier qualifié\u003C\u002Foption>\n          \u003Coption value=\"180\">180 — Ouvrier confirmé\u003C\u002Foption>\n          \u003Coption value=\"185\">185 — Ouvrier haute qualification\u003C\u002Foption>\n          \u003Coption value=\"190\">190 — Technicien \u002F Emp. senior\u003C\u002Foption>\n          \u003Coption value=\"220\">220 — Agent de maîtrise\u003C\u002Foption>\n          \u003Coption value=\"250\">250 — Agent de maîtrise senior\u003C\u002Foption>\n          \u003Coption value=\"270\">270 — Cadre\u003C\u002Foption>\n          \u003Coption value=\"290\">290 — Cadre confirmé\u003C\u002Foption>\n          \u003Coption value=\"310\">310 — Cadre supérieur\u003C\u002Foption>\n          \u003Coption value=\"330\">330 — Cadre dirigeant\u003C\u002Foption>\n          \u003Coption value=\"350\">350 — Cadre dirigeant senior\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Heures hebdomadaires\u003C\u002Flabel>\n        \u003Cdiv class=\"val-display\" id=\"sal-h-disp\">35 h\u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"sal-heures\" min=\"24\" max=\"48\" step=\"0.5\" value=\"35\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-main\">\n      \u003Ci data-lucide=\"euro\" style=\"width:28px;height:28px\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Salaire minimum brut mensuel\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"sal-amount\">0 €\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Taux horaire conventionnel\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"sal-horaire\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Heures mensuelleslesuelles calculées\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"sal-hm\">151,67 h\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Catégorie\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"sal-cat\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdetails style=\"margin-top:1rem\">\n      \u003Csummary style=\"cursor:pointer;font-size:0.875rem;font-weight:600;color:var(--accent);padding:0.5rem 0\">Voir toute la grille 2025\u003C\u002Fsummary>\n      \u003Cdiv style=\"overflow-x:auto;margin-top:0.75rem\">\n        \u003Ctable class=\"grid-table\">\n          \u003Cthead>\n            \u003Ctr>\n              \u003Cth>Coef.\u003C\u002Fth>\n              \u003Cth>Taux horaire\u003C\u002Fth>\n              \u003Cth>Mensuel (151,67h)\u003C\u002Fth>\n              \u003Cth>Catégorie\u003C\u002Fth>\n            \u003C\u002Ftr>\n          \u003C\u002Fthead>\n          \u003Ctbody>\n            \u003Ctr>\u003Ctd>160\u003C\u002Ftd>\u003Ctd>12,14 €\u003C\u002Ftd>\u003Ctd>1 841,27 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>165\u003C\u002Ftd>\u003Ctd>12,21 €\u003C\u002Ftd>\u003Ctd>1 851,89 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>170\u003C\u002Ftd>\u003Ctd>12,35 €\u003C\u002Ftd>\u003Ctd>1 873,12 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>175\u003C\u002Ftd>\u003Ctd>12,43 €\u003C\u002Ftd>\u003Ctd>1 885,26 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>180\u003C\u002Ftd>\u003Ctd>12,57 €\u003C\u002Ftd>\u003Ctd>1 906,49 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>185\u003C\u002Ftd>\u003Ctd>12,96 €\u003C\u002Ftd>\u003Ctd>1 965,64 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-ouvrier\">Ouvrier\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>190\u003C\u002Ftd>\u003Ctd>13,26 €\u003C\u002Ftd>\u003Ctd>2 011,14 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-employe\">Employé\u002FTech.\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>220\u003C\u002Ftd>\u003Ctd>15,22 €\u003C\u002Ftd>\u003Ctd>2 308,42 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-maitre\">A. maîtrise\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>250\u003C\u002Ftd>\u003Ctd>17,28 €\u003C\u002Ftd>\u003Ctd>2 620,86 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-maitre\">A. maîtrise\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>270\u003C\u002Ftd>\u003Ctd>18,65 €\u003C\u002Ftd>\u003Ctd>2 828,65 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-cadre\">Cadre\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>290\u003C\u002Ftd>\u003Ctd>20,05 €\u003C\u002Ftd>\u003Ctd>3 040,98 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-cadre\">Cadre\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>310\u003C\u002Ftd>\u003Ctd>21,43 €\u003C\u002Ftd>\u003Ctd>3 250,29 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-cadre\">Cadre\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>330\u003C\u002Ftd>\u003Ctd>22,82 €\u003C\u002Ftd>\u003Ctd>3 461,11 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-cadre\">Cadre\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>350\u003C\u002Ftd>\u003Ctd>24,20 €\u003C\u002Ftd>\u003Ctd>3 670,41 €\u003C\u002Ftd>\u003Ctd>\u003Cspan class=\"cat-badge cat-cadre\">Cadre\u003C\u002Fspan>\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003C\u002Ftbody>\n        \u003C\u002Ftable>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdetails>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ───────────── TAB: HEURES SUPP ───────────── -->\n  \u003Cdiv class=\"tab-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 pâtisserie (IDCC 1267) fixe la durée hebdomadaire de référence à \u003Cstrong>39 heures\u003C\u002Fstrong>. Les heures supplémentaires (au-delà de 39h) sont majorées à \u003Cstrong>25 % pour les 8 premières heures\u003C\u002Fstrong>, puis à \u003Cstrong>50 %\u003C\u002Fstrong> au-delà. Le contingent annuel est de \u003Cstrong>180 heures\u003C\u002Fstrong>.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"form-grid\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Salaire brut mensuel\u003C\u002Flabel>\n        \u003Cdiv class=\"val-display\" id=\"hs-sal-disp\">2 000 €\u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-sal\" min=\"1400\" max=\"6000\" step=\"50\" value=\"2000\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Heures supplémentaires \u002F semaine\u003C\u002Flabel>\n        \u003Cdiv class=\"val-display\" id=\"hs-h-disp\">4 h\u003C\u002Fdiv>\n        \u003Cinput type=\"range\" id=\"hs-h\" min=\"1\" max=\"20\" step=\"0.5\" value=\"4\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"form-group\" style=\"margin-bottom:1.25rem\">\n      \u003Clabel>Nombre de semaines concernées\u003C\u002Flabel>\n      \u003Cdiv class=\"val-display\" id=\"hs-sem-disp\">4 sem.\u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"hs-sem\" min=\"1\" max=\"52\" step=\"1\" value=\"4\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-main\">\n      \u003Ci data-lucide=\"clock\" style=\"width:28px;height:28px\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"label\">Majoration totale brute\u003C\u002Fdiv>\n        \u003Cdiv class=\"amount\" id=\"hs-amount\">0 €\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Taux horaire de base\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"hs-horaire\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">H. supp à 25 % (sem. × tranches 1-8h)\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"hs-25\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">H. supp à 50 % (sem. × au-delà 8h)\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"hs-50\">0 €\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Total heures supp × semaines\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"hs-total-h\">0 h\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-row\">\u003Cspan class=\"label\">Vérification contingent annuel (180h)\u003C\u002Fspan>\u003Cspan class=\"value\" id=\"hs-contingent\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Shared disclaimer -->\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN IDCC 1267 (pâtisserie artisanale).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635611\" target=\"_blank\" rel=\"noopener\">Légifrance\u003C\u002Fa> — avenant n° 112 du 4 février 2025.\n    Pour toute validation légale\n  \u003C\u002Fp>\n\n  \u003C!-- Source comment -->\n  \u003C!-- CCN IDCC 1267 — déviations par rapport au code du travail\n       indemnite: L1234-9 → + complément 1\u002F15 mois\u002Fan >10 ans pour ouvriers (art. 21 CCN)\n       preavis: L1234-1 → asymétrique: ouvrier \u003C6m=1sem, 6m-2ans=1mois(emp)\u002F1sem(sal), >2ans=2mois(emp)\u002F1sem(sal);\n                agts maîtrise=2mois; cadres=3mois (art. 19 CCN)\n       salaire-min: grille 14 coefficients 160→350 (avenant n°112, 1er janv. 2025 — base 151,67h\u002Fmois)\n       heures-supp: 39h référence, 25%\u002F8h puis 50%, contingent 180h\u002Fan (vs L3121-36 à 35h référence)\n       prime-annuelle: pas de 13e mois dans IDCC 1267\n       conges: 30 jours ouvrables légaux — pas de déviation -->\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── Formatters ───────────────────────────────────────────────\nconst fmtEur = v => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(v);\nconst fmtEurDec = v => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(v);\n\n\u002F\u002F ─── Tab system ───────────────────────────────────────────────\nconst tabs = document.querySelectorAll('[data-tab]');\nconst panels = document.querySelectorAll('[data-panel]');\n\nfunction activate(id) {\n  tabs.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n  panels.forEach(p => {\n    const show = p.dataset.panel === id;\n    p.classList.toggle('active', show);\n    p.style.display = show ? 'block' : 'none';\n  });\n  if (location.hash !== '#' + id) location.hash = id;\n  requestAnimationFrame(() => window.dispatchEvent(new Event('resize')));\n}\n\ntabs.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\nconst hashTab = location.hash.slice(1);\nconst defaultTab = (hashTab && document.querySelector(`[data-tab=\"${hashTab}\"]`)) ? hashTab : 'indemnite';\nactivate(defaultTab);\n\n\u002F\u002F ─── ResizeObserver ────────────────────────────────────────────\nconst ro = new ResizeObserver(() => {\n  const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n  parent.postMessage({ type: 'resize', height: h }, '*');\n});\nro.observe(document.documentElement);\n\n\u002F\u002F ─── INDEMNITÉ ────────────────────────────────────────────────\nconst indState = { sal: 2500, anc: 8, cat: 'ouvrier', motif: 'eco' };\n\nfunction computeIndemnite(s) {\n  \u002F\u002F Legal baseline L1234-9: 1\u002F4 per year ≤10 + 1\u002F3 per year >10\n  const a = Math.floor(s.anc);\n  const y1 = Math.min(a, 10);\n  const y2 = Math.max(0, a - 10);\n  const legal = s.sal * ((1\u002F4) * y1 + (1\u002F3) * y2);\n  \u002F\u002F CCN supplement for ouvriers: +1\u002F15 per year >10 ans\n  const complement = (s.cat === 'ouvrier' && a > 10) ? s.sal * (1\u002F15) * y2 : 0;\n  const total = legal + complement;\n  return { legal, complement, total, years: a };\n}\n\nfunction renderIndemnite() {\n  const r = computeIndemnite(indState);\n  document.getElementById('ind-amount').textContent = fmtEur(r.total);\n  document.getElementById('ind-legal').textContent = fmtEur(r.legal);\n  document.getElementById('ind-complement').textContent = r.complement > 0 ? fmtEur(r.complement) : '—';\n  document.getElementById('ind-years').textContent = r.years + ' an' + (r.years > 1 ? 's' : '');\n}\n\ndocument.getElementById('ind-sal').addEventListener('input', e => {\n  indState.sal = +e.target.value;\n  document.getElementById('ind-sal-disp').textContent = fmtEur(indState.sal);\n  renderIndemnite();\n});\ndocument.getElementById('ind-anc').addEventListener('input', e => {\n  indState.anc = +e.target.value;\n  document.getElementById('ind-anc-disp').textContent = indState.anc + ' an' + (indState.anc > 1 ? 's' : '');\n  renderIndemnite();\n});\n\ndocument.querySelectorAll('#ind-cat-pills .pill').forEach(p => {\n  p.addEventListener('click', () => {\n    document.querySelectorAll('#ind-cat-pills .pill').forEach(x => x.classList.remove('active'));\n    p.classList.add('active');\n    indState.cat = p.dataset.val;\n    renderIndemnite();\n  });\n});\ndocument.querySelectorAll('#ind-motif-pills .pill').forEach(p => {\n  p.addEventListener('click', () => {\n    document.querySelectorAll('#ind-motif-pills .pill').forEach(x => x.classList.remove('active'));\n    p.classList.add('active');\n    indState.motif = p.dataset.val;\n    renderIndemnite();\n  });\n});\n\nrenderIndemnite();\n\n\u002F\u002F ─── PRÉAVIS ──────────────────────────────────────────────────\nconst prevState = { statut: 'ouvrier', anc: '24_plus', init: 'employer' };\n\nconst PREAVIS = {\n  ouvrier: {\n    '0_6':    { emp: '1 semaine',  sal: '1 semaine' },\n    '6_24':   { emp: '1 mois',     sal: '1 semaine' },\n    '24_plus':{ emp: '2 mois',     sal: '1 semaine' },\n  },\n  maitre: {\n    '0_6':    { emp: '2 mois', sal: '2 mois' },\n    '6_24':   { emp: '2 mois', sal: '2 mois' },\n    '24_plus':{ emp: '2 mois', sal: '2 mois' },\n  },\n  cadre: {\n    '0_6':    { emp: '3 mois', sal: '3 mois' },\n    '6_24':   { emp: '3 mois', sal: '3 mois' },\n    '24_plus':{ emp: '3 mois', sal: '3 mois' },\n  },\n};\n\nconst STATUT_LABEL = { ouvrier: 'Ouvrier \u002F Employé', maitre: 'Agent de maîtrise', cadre: 'Cadre' };\n\nfunction renderPreavis() {\n  const row = PREAVIS[prevState.statut][prevState.anc];\n  const dur = prevState.init === 'employer' ? row.emp : row.sal;\n  document.getElementById('prev-duration').textContent = dur;\n  document.getElementById('prev-statut-disp').textContent = STATUT_LABEL[prevState.statut];\n  document.getElementById('prev-emp-dur').textContent = row.emp;\n  document.getElementById('prev-sal-dur').textContent = row.sal;\n}\n\ndocument.getElementById('prev-statut').addEventListener('change', e => {\n  prevState.statut = e.target.value;\n  renderPreavis();\n});\ndocument.getElementById('prev-anc').addEventListener('change', e => {\n  prevState.anc = e.target.value;\n  renderPreavis();\n});\ndocument.querySelectorAll('#prev-init-pills .pill').forEach(p => {\n  p.addEventListener('click', () => {\n    document.querySelectorAll('#prev-init-pills .pill').forEach(x => x.classList.remove('active'));\n    p.classList.add('active');\n    prevState.init = p.dataset.val;\n    renderPreavis();\n  });\n});\n\nrenderPreavis();\n\n\u002F\u002F ─── GRILLE SALARIALE ─────────────────────────────────────────\nconst GRID = {\n  160: { hourly: 12.14, monthly: 1841.27, cat: 'Ouvrier' },\n  165: { hourly: 12.21, monthly: 1851.89, cat: 'Ouvrier' },\n  170: { hourly: 12.35, monthly: 1873.12, cat: 'Ouvrier' },\n  175: { hourly: 12.43, monthly: 1885.26, cat: 'Ouvrier' },\n  180: { hourly: 12.57, monthly: 1906.49, cat: 'Ouvrier' },\n  185: { hourly: 12.96, monthly: 1965.64, cat: 'Ouvrier' },\n  190: { hourly: 13.26, monthly: 2011.14, cat: 'Employé \u002F Technicien' },\n  220: { hourly: 15.22, monthly: 2308.42, cat: 'Agent de maîtrise' },\n  250: { hourly: 17.28, monthly: 2620.86, cat: 'Agent de maîtrise' },\n  270: { hourly: 18.65, monthly: 2828.65, cat: 'Cadre' },\n  290: { hourly: 20.05, monthly: 3040.98, cat: 'Cadre' },\n  310: { hourly: 21.43, monthly: 3250.29, cat: 'Cadre' },\n  330: { hourly: 22.82, monthly: 3461.11, cat: 'Cadre' },\n  350: { hourly: 24.20, monthly: 3670.41, cat: 'Cadre' },\n};\n\nconst salState = { coef: 160, heures: 35 };\n\nfunction renderSalaire() {\n  const row = GRID[salState.coef];\n  \u002F\u002F Adjust monthly for different weekly hours: row.monthly is for 151.67h (35h\u002Fweek)\n  const hm = (salState.heures \u002F 35) * 151.67;\n  const adjusted = row.hourly * hm;\n  document.getElementById('sal-amount').textContent = fmtEurDec(adjusted);\n  document.getElementById('sal-horaire').textContent = fmtEurDec(row.hourly);\n  document.getElementById('sal-hm').textContent = hm.toFixed(2).replace('.', ',') + ' h';\n  document.getElementById('sal-cat').textContent = row.cat;\n}\n\ndocument.getElementById('sal-coef').addEventListener('change', e => {\n  salState.coef = +e.target.value;\n  renderSalaire();\n});\ndocument.getElementById('sal-heures').addEventListener('input', e => {\n  salState.heures = +e.target.value;\n  document.getElementById('sal-h-disp').textContent = salState.heures + ' h';\n  renderSalaire();\n});\n\nrenderSalaire();\n\n\u002F\u002F ─── HEURES SUPPLÉMENTAIRES ───────────────────────────────────\nconst hsState = { sal: 2000, h: 4, sem: 4 };\n\u002F\u002F CCN pâtisserie: 39h reference, 25% for first 8h supp (39→47h), 50% beyond\nconst HS_REF = 39; \u002F\u002F weekly hours reference\n\nfunction computeHS(s) {\n  \u002F\u002F Taux horaire mensuel (base 151.67h for 35h\u002Fweek → adjusted for 39h)\n  const hm = (HS_REF \u002F 35) * 151.67; \u002F\u002F 167.84h\u002Fmonth for 39h ref\n  const tauxHoraire = s.sal \u002F hm;\n  \u002F\u002F Per week: tranches\n  const h25 = Math.min(s.h, 8);   \u002F\u002F first 8 supp hours at 25%\n  const h50 = Math.max(0, s.h - 8); \u002F\u002F beyond 8 at 50%\n  const totalPerWeek = (h25 * tauxHoraire * 1.25) + (h50 * tauxHoraire * 1.50);\n  const majorationOnly = (h25 * tauxHoraire * 0.25) + (h50 * tauxHoraire * 0.50);\n  const total = totalPerWeek * s.sem;\n  const majoration = majorationOnly * s.sem;\n  const totalH = s.h * s.sem;\n  return { tauxHoraire, h25, h50, majoration, total, totalH };\n}\n\nfunction renderHS() {\n  const r = computeHS(hsState);\n  const contingentTotal = hsState.h * 52; \u002F\u002F annualized\n  const contingentOk = contingentTotal \u003C= 180;\n  document.getElementById('hs-amount').textContent = fmtEurDec(r.majoration);\n  document.getElementById('hs-horaire').textContent = fmtEurDec(r.tauxHoraire);\n  document.getElementById('hs-25').textContent = fmtEurDec(r.h25 * r.tauxHoraire * 0.25 * hsState.sem);\n  document.getElementById('hs-50').textContent = r.h50 > 0 ? fmtEurDec(r.h50 * r.tauxHoraire * 0.50 * hsState.sem) : '—';\n  document.getElementById('hs-total-h').textContent = r.totalH.toFixed(1).replace('.', ',') + ' h';\n  document.getElementById('hs-contingent').textContent = contingentOk\n    ? 'Dans le contingent (180 h\u002Fan)'\n    : `Dépassement : ${(contingentTotal - 180).toFixed(0)} h\u002Fan au-delà des 180 h`;\n  document.getElementById('hs-contingent').style.color = contingentOk ? 'var(--success)' : '#dc2626';\n}\n\ndocument.getElementById('hs-sal').addEventListener('input', e => {\n  hsState.sal = +e.target.value;\n  document.getElementById('hs-sal-disp').textContent = fmtEur(hsState.sal);\n  renderHS();\n});\ndocument.getElementById('hs-h').addEventListener('input', e => {\n  hsState.h = +e.target.value;\n  document.getElementById('hs-h-disp').textContent = hsState.h + ' h';\n  renderHS();\n});\ndocument.getElementById('hs-sem').addEventListener('input', e => {\n  hsState.sem = +e.target.value;\n  document.getElementById('hs-sem-disp').textContent = hsState.sem + ' sem.';\n  renderHS();\n});\n\nrenderHS();\n\n\u002F\u002F ─── Lucide icons ─────────────────────────────────────────────\ndocument.addEventListener('DOMContentLoaded', () => {\n  if (window.lucide) lucide.createIcons();\n});\nif (document.readyState !== 'loading') {\n  if (window.lucide) 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-de-la-patisserie-6329922aea.webp",[]]