[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-content-prime-annuelle-de-la-boulangerie-patisserie-fr":3,"footer-cities-fr":67},{"slug":4,"title":5,"page_title":6,"description":7,"content_md":8,"local_slug":4,"json_ld":9,"faq":30,"tool_html":61,"source":62,"category":63,"audience":64,"publish_mode":65,"hero_image":66,"hero_image_alt":5},"prime-annuelle-de-la-boulangerie-patisserie","Prime de fin d'année boulangerie-pâtisserie — calculateur","Prime fin d'année CCN Boulangerie-Pâtisserie IDCC 843 | Expert Zoom","Calculez la prime de fin d'année obligatoire de la CCN boulangerie-pâtisserie (IDCC 843, art. 42) : taux 4,75 % en 2026, 5 % en 2027. Simulation par salaire et ancienneté.","La convention collective boulangerie-pâtisserie (IDCC 843) impose une prime de fin d'année à tous les salariés justifiant d'au moins 1 an d'ancienneté. En 2026, cette prime représente 4,75 % du salaire brut annuel (art. 42, Avenant n°133 du 14\u002F12\u002F2023). Calculez votre prime en saisissant votre salaire mensuel, vos mois de présence et votre ancienneté.",[10],{"name":11,"@type":12,"about":13,"author":17,"@context":20,"isPartOf":21,"inLanguage":24,"description":25,"dateModified":26,"operatingSystem":27,"applicationCategory":28,"isAccessibleForFree":29},"Calculateur prime de fin d'année — CCN Boulangerie-Pâtisserie IDCC 843","WebApplication",{"name":14,"@type":15,"identifier":16},"Convention collective de la boulangerie-pâtisserie","Thing","IDCC 843",{"name":18,"@type":19},"Expert-Zoom","Organization","https:\u002F\u002Fschema.org",{"url":22,"@type":23},"\u002Ffr\u002Fmagazine\u002Fjuridique\u002Fles-conventions-collectives-en-france","Article","fr","Calculateur de la prime de fin d'année obligatoire de la convention collective de la boulangerie-pâtisserie (IDCC 843, art. 42). Taux 2026 : 4,75 % du salaire brut annuel.","2026-01-14","All","FinanceApplication",true,[31,34,37,40,43,46,49,52,55,58],{"a":32,"q":33},"Oui. L'article 42 de la CCN boulangerie-pâtisserie (IDCC 843), modifié par l'Avenant n°133 du 14 décembre 2023, rend la prime de fin d'année obligatoire pour tout salarié ayant au moins 1 an d'ancienneté dans l'entreprise.","La prime de fin d'année est-elle obligatoire dans la boulangerie-pâtisserie ?",{"a":35,"q":36},"En 2026, le taux de la prime de fin d'année est de 4,75 % du salaire brut annuel perçu dans l'entreprise. Ce taux passera à 5 % à partir de 2027, selon le calendrier prévu par l'Avenant n°133.","Quel est le taux de la prime de fin d'année en boulangerie-pâtisserie en 2026 ?",{"a":38,"q":39},"La prime se calcule ainsi : salaire brut annuel × 4,75 % (en 2026). Par exemple, pour un salaire brut mensuel de 2 000 € sur 12 mois : 24 000 × 4,75 % = 1 140 €. En cas d'année incomplète, la prime est proratisée selon le nombre de mois de présence effective.","Comment calculer la prime de fin d'année boulangerie-pâtisserie ?",{"a":41,"q":42},"Non. Si l'entreprise verse déjà un avantage de même nature (13e mois, prime équivalente) d'un montant au moins égal à la prime conventionnelle, il ne se cumule pas. La prime CCN s'applique uniquement si l'avantage existant est inférieur.","La prime de fin d'année boulangerie se cumule-t-elle avec un 13e mois ?",{"a":44,"q":45},"1 an d'ancienneté dans l'entreprise est requis pour bénéficier de la prime de fin d'année (art. 42 CCN IDCC 843). Un salarié arrivé en cours d'année peut bénéficier d'une prime proratisée dès lors qu'il a atteint ce seuil.","Quelle ancienneté faut-il pour toucher la prime de fin d'année en boulangerie ?",{"a":47,"q":48},"Oui, la prime de fin d'année est un élément de salaire brut soumis aux cotisations sociales habituelles (salariales et patronales), ainsi qu'aux prélèvements sociaux (CSG\u002FCRDS). Elle figure sur le bulletin de paie comme une prime exceptionnelle.","La prime de fin d'année est-elle soumise à cotisations sociales ?",{"a":50,"q":51},"L'article 42 de la CCN prévoit un versement en fin d'année civile, généralement en novembre ou décembre. Les modalités exactes (versement en une ou deux fois) peuvent être précisées par accord d'entreprise.","Quand la prime de fin d'année doit-elle être versée en boulangerie-pâtisserie ?",{"a":53,"q":54},"Oui, les salariés à temps partiel bénéficient de la prime de fin d'année, calculée sur leur salaire brut annuel effectif (donc proratisé selon leur temps de travail). La condition d'ancienneté (1 an) reste identique.","La prime de fin d'année s'applique-t-elle aux salariés à temps partiel ?",{"a":56,"q":57},"En cas d'arrêt maladie, les périodes non rémunérées peuvent réduire la base de calcul. La prime est généralement calculée sur le salaire brut effectivement perçu dans l'année. En cas de doute, référez-vous aux conditions précises de votre contrat ou accord d'entreprise.","La prime de fin d'année est-elle maintenue en cas d'arrêt maladie ?",{"a":59,"q":60},"La prime de fin d'année (art. 42) est distincte de la prime d'ancienneté. La prime de fin d'année est un pourcentage du salaire brut annuel (4,75 % en 2026), versé à la fin de l'année civile. La prime d'ancienneté est calculée en pourcentage du salaire de base selon l'ancienneté acquise. Les deux peuvent coexister si la CCN ou un accord d'entreprise les prévoit.","Quelle est la différence entre la prime de fin d'année et une prime d'ancienneté en boulangerie ?","\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>Prime de fin d'année Boulangerie-Pâtisserie IDCC 843 — Calculateur\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\n    :root {\n      --bg: #fafaf9;\n      --surface: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --text: #1c1917;\n      --muted: #78716c;\n      --success: #16a34a;\n      --success-bg: #f0fdf4;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --warn-bg: #fffbeb;\n      --warn-border: #fde68a;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n    }\n\n    body {\n      font-family: system-ui, -apple-system, sans-serif;\n      background: var(--bg);\n      color: var(--text);\n      font-size: 0.9375rem;\n      line-height: 1.55;\n    }\n\n    .tool-root {\n      max-width: 640px;\n      margin: 0 auto;\n      padding: 1.25rem 1rem 2rem;\n    }\n\n    \u002F* Header *\u002F\n    .tool-header { margin-bottom: 1.25rem; }\n    .tool-header h1 {\n      font-size: 1.125rem;\n      font-weight: 700;\n      line-height: 1.3;\n      margin-bottom: 0.25rem;\n    }\n    .meta-row {\n      display: flex;\n      gap: 0.5rem;\n      flex-wrap: wrap;\n      margin-top: 0.375rem;\n    }\n    .badge {\n      background: var(--accent);\n      color: #fff;\n      font-size: 0.7rem;\n      font-weight: 600;\n      padding: 0.2rem 0.5rem;\n      border-radius: 9999px;\n    }\n    .badge-gray {\n      background: #f5f5f4;\n      color: var(--muted);\n      border: 1px solid var(--border);\n    }\n\n    \u002F* Context block *\u002F\n    .context-block {\n      background: var(--surface);\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      padding: 1rem 1.125rem;\n      margin-bottom: 1.375rem;\n      font-size: 0.8125rem;\n      line-height: 1.65;\n    }\n    .context-block p + p { margin-top: 0.625rem; }\n    .context-block strong { font-weight: 600; }\n\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex;\n      gap: 0.625rem;\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.8125rem;\n    }\n    .rule-callout i { flex-shrink: 0; color: var(--accent); width: 15px; height: 15px; margin-top: 0.1rem; }\n\n    \u002F* Warn callout *\u002F\n    .warn-callout {\n      display: flex;\n      gap: 0.625rem;\n      background: var(--warn-bg);\n      border: 1px solid var(--warn-border);\n      border-radius: var(--radius-sm);\n      padding: 0.625rem 0.875rem;\n      margin-bottom: 1rem;\n      font-size: 0.8rem;\n    }\n    .warn-callout i { flex-shrink: 0; color: #d97706; width: 14px; height: 14px; margin-top: 0.15rem; }\n\n    \u002F* Form groups *\u002F\n    .form-group { margin-bottom: 1.125rem; }\n    .form-label {\n      display: flex;\n      justify-content: space-between;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      margin-bottom: 0.375rem;\n    }\n    .form-label .val {\n      font-weight: 600;\n      color: var(--accent);\n      font-variant-numeric: tabular-nums;\n    }\n\n    input[type=\"range\"] {\n      width: 100%;\n      height: 6px;\n      accent-color: var(--accent);\n      cursor: pointer;\n    }\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    }\n\n    .pills { display: flex; flex-wrap: wrap; gap: 0.375rem; }\n    .pill {\n      padding: 0.3rem 0.75rem;\n      font-size: 0.8125rem;\n      border: 1px solid var(--border);\n      border-radius: 9999px;\n      cursor: pointer;\n      background: var(--surface);\n      color: var(--text);\n      transition: background 0.12s, border-color 0.12s, color 0.12s;\n    }\n    .pill.active {\n      background: var(--accent);\n      border-color: var(--accent);\n      color: #fff;\n    }\n\n    .section-label {\n      font-size: 0.75rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n      color: var(--muted);\n      margin-bottom: 0.5rem;\n    }\n\n    \u002F* Result card *\u002F\n    .result-card {\n      background: var(--success-bg);\n      border: 1.5px solid #bbf7d0;\n      border-radius: var(--radius);\n      padding: 1.125rem 1.25rem;\n      margin: 1.25rem 0;\n    }\n    .result-main {\n      display: flex;\n      align-items: center;\n      gap: 0.875rem;\n      margin-bottom: 0.875rem;\n    }\n    .result-main i { color: var(--success); width: 24px; height: 24px; flex-shrink: 0; }\n    .result-label { font-size: 0.8rem; color: var(--muted); margin-bottom: 0.125rem; }\n    .result-value {\n      font-size: 1.625rem;\n      font-weight: 700;\n      color: var(--success);\n      font-variant-numeric: tabular-nums;\n    }\n    .result-detail-grid {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 0.5rem 1rem;\n      font-size: 0.8125rem;\n      border-top: 1px solid #bbf7d0;\n      padding-top: 0.75rem;\n    }\n    .detail-item { }\n    .detail-item .dl { color: var(--muted); font-size: 0.75rem; }\n    .detail-item .dv { font-weight: 600; font-variant-numeric: tabular-nums; }\n\n    \u002F* Progress bar *\u002F\n    .progress-section { margin-bottom: 1.375rem; }\n    .progress-row {\n      display: flex;\n      justify-content: space-between;\n      font-size: 0.75rem;\n      margin-bottom: 0.375rem;\n      color: var(--muted);\n    }\n    .progress-bar-wrap {\n      height: 8px;\n      background: var(--border);\n      border-radius: 9999px;\n      overflow: hidden;\n      margin-bottom: 0.75rem;\n    }\n    .progress-bar-fill {\n      height: 100%;\n      background: var(--accent);\n      border-radius: 9999px;\n      transition: width 0.25s;\n    }\n\n    \u002F* Ineligible *\u002F\n    .ineligible-msg {\n      background: var(--warn-bg);\n      border: 1px solid var(--warn-border);\n      border-radius: var(--radius);\n      padding: 1rem 1.25rem;\n      font-size: 0.875rem;\n      margin-top: 1.25rem;\n      display: none;\n    }\n    .ineligible-msg i { color: #d97706; width: 16px; height: 16px; vertical-align: -0.2em; margin-right: 0.25rem; }\n\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.75rem;\n      color: var(--muted);\n      border-top: 1px solid var(--border);\n      padding-top: 1rem;\n      margin-top: 1.5rem;\n      line-height: 1.65;\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 843 — prime de fin d'année\n     Art. 42 modifié par Avenant n°133 du 14\u002F12\u002F2023 :\n     prime = X% du salaire brut annuel (4.75% en 2026, 5% en 2027)\n     Condition : ≥ 1 an ancienneté. Proratisée si \u003C12 mois travaillés.\n     Aucune obligation équivalente dans le code du travail (L3141-24 n'impose pas de 13e mois).\n-->\n\u003Cmain class=\"tool-root\">\n\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Prime de fin d'année — CCN Boulangerie-Pâtisserie\u003C\u002Fh1>\n    \u003Cdiv class=\"meta-row\">\n      \u003Cspan class=\"badge\">IDCC 843\u003C\u002Fspan>\n      \u003Cspan class=\"badge badge-gray\">Art. 42 + Avenant n°133\u003C\u002Fspan>\n      \u003Cspan class=\"badge badge-gray\">Brochure 3117\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"context-block\">\n    \u003Cp>La convention collective nationale de la \u003Cstrong>boulangerie-pâtisserie artisanale\u003C\u002Fstrong> (IDCC 843) prévoit une \u003Cstrong>prime de fin d'année obligatoire\u003C\u002Fstrong> à l'article 42, renforcée par l'Avenant n°133 du 14 décembre 2023. Contrairement au code du travail qui n'impose aucune prime annuelle, les employeurs de la branche doivent verser cette prime à chaque salarié justifiant d'au moins un an d'ancienneté.\u003C\u002Fp>\n    \u003Cp>Le taux est progressif : \u003Cstrong>4,75 % du salaire brut annuel en 2026\u003C\u002Fstrong>, puis 5 % à partir de 2027. Cette prime ne se cumule pas avec un éventuel 13e mois déjà prévu dans l'entreprise ; elle s'y substitue si l'avantage est de même nature.\u003C\u002Fp>\n    \u003Cp>Utilisez le calculateur ci-dessous pour estimer le montant brut de votre prime de fin d'année selon votre salaire, votre ancienneté et vos mois de présence.\u003C\u002Fp>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"rule-callout\">\n    \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n    \u003Cdiv>\n      \u003Cstrong>Règle CCN (art. 42) :\u003C\u002Fstrong> Prime = salaire brut annuel × taux conventionnel (4,75 % en 2026, 5 % en 2027). Condition : ≥ 1 an d'ancienneté. Proratisée selon les mois de présence effective. Aucun équivalent imposé par le code du travail.\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Année de calcul -->\n  \u003Cdiv class=\"form-group\">\n    \u003Cdiv class=\"section-label\">Année de versement\u003C\u002Fdiv>\n    \u003Cdiv class=\"pills\" id=\"annee-pills\">\n      \u003Cbutton class=\"pill active\" data-annee=\"2026\">2026 — taux 4,75 %\u003C\u002Fbutton>\n      \u003Cbutton class=\"pill\" data-annee=\"2027\">2027 — taux 5,00 %\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Salaire brut mensuel -->\n  \u003Cdiv class=\"form-group\">\n    \u003Clabel class=\"form-label\">\n      Salaire brut mensuel de référence\n      \u003Cspan class=\"val\" id=\"salaire-val\">2 200 €\u003C\u002Fspan>\n    \u003C\u002Flabel>\n    \u003Cinput type=\"range\" id=\"salaire\" min=\"1600\" max=\"6000\" value=\"2200\" step=\"50\">\n  \u003C\u002Fdiv>\n\n  \u003C!-- Mois travaillés -->\n  \u003Cdiv class=\"form-group\">\n    \u003Clabel class=\"form-label\">\n      Mois travaillés dans l'année civile\n      \u003Cspan class=\"val\" id=\"mois-val\">12\u003C\u002Fspan>\n    \u003C\u002Flabel>\n    \u003Cinput type=\"range\" id=\"mois\" min=\"1\" max=\"12\" value=\"12\" step=\"1\">\n  \u003C\u002Fdiv>\n\n  \u003C!-- Ancienneté -->\n  \u003Cdiv class=\"form-group\">\n    \u003Clabel class=\"form-label\">\n      Ancienneté dans l'entreprise\n      \u003Cspan class=\"val\" id=\"anc-val\">3 ans\u003C\u002Fspan>\n    \u003C\u002Flabel>\n    \u003Cinput type=\"range\" id=\"anc\" min=\"0\" max=\"30\" value=\"3\" step=\"1\">\n  \u003C\u002Fdiv>\n\n  \u003C!-- Taux progression -->\n  \u003Cdiv class=\"progress-section\" id=\"progress-section\">\n    \u003Cdiv class=\"progress-row\">\n      \u003Cspan>Taux 2026 : 4,75 %\u003C\u002Fspan>\n      \u003Cspan>Objectif 2027 : 5,00 %\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"progress-bar-wrap\">\n      \u003Cdiv class=\"progress-bar-fill\" id=\"progress-fill\" style=\"width:95%\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Result -->\n  \u003Cdiv class=\"result-card\" id=\"result-card\">\n    \u003Cdiv class=\"result-main\">\n      \u003Ci data-lucide=\"gift\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cdiv class=\"result-label\">Prime de fin d'année brute estimée\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"result-value\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-detail-grid\">\n      \u003Cdiv class=\"detail-item\">\n        \u003Cdiv class=\"dl\">Salaire brut annuel\u003C\u002Fdiv>\n        \u003Cdiv class=\"dv\" id=\"detail-annual\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"detail-item\">\n        \u003Cdiv class=\"dl\">Taux conventionnel\u003C\u002Fdiv>\n        \u003Cdiv class=\"dv\" id=\"detail-rate\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"detail-item\">\n        \u003Cdiv class=\"dl\">Mois de présence\u003C\u002Fdiv>\n        \u003Cdiv class=\"dv\" id=\"detail-mois\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"detail-item\">\n        \u003Cdiv class=\"dl\">Proratisation\u003C\u002Fdiv>\n        \u003Cdiv class=\"dv\" id=\"detail-pro\">—\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Ineligible message -->\n  \u003Cdiv class=\"ineligible-msg\" id=\"ineligible-msg\">\n    \u003Ci data-lucide=\"alert-triangle\">\u003C\u002Fi>\n    Ancienneté insuffisante — la prime de fin d'année nécessite \u003Cstrong>au moins 1 an\u003C\u002Fstrong> d'ancienneté dans l'entreprise (art. 42 CCN IDCC 843).\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"warn-callout\">\n    \u003Ci data-lucide=\"alert-triangle\">\u003C\u002Fi>\n    \u003Cdiv>Si votre entreprise verse déjà un 13e mois ou une prime équivalente de même nature et d'un montant au moins égal, cette prime conventionnelle ne s'y cumule pas.\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif — CCN boulangerie-pâtisserie IDCC 843, Brochure 3117.\n    Sources : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635886\" target=\"_blank\" rel=\"noopener\">Légifrance\u003C\u002Fa> — Art. 42 ; Avenant n°133 du 14\u002F12\u002F2023.\n    Ce simulateur ne constitue pas un avis juridique. Pour toute décision\n  \u003C\u002Fp>\n\n\u003C\u002Fmain>\n\n\u003Cscript>\n(function () {\n  'use strict';\n\n  const RATES = { '2026': 0.0475, '2027': 0.05 };\n\n  const fmtEUR  = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\n  const fmtEUR2 = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  const fmtPct  = v => (v * 100).toFixed(2) + ' %';\n\n  const state = { annee: '2026', salaire: 2200, mois: 12, anc: 3 };\n\n  function compute() {\n    const rate = RATES[state.annee] || 0.0475;\n    const eligible = state.anc >= 1;\n    const annualGross = state.salaire * state.mois;\n    const prime = eligible ? annualGross * rate : 0;\n    const proratise = state.mois \u003C 12;\n    return { rate, eligible, annualGross, prime, proratise };\n  }\n\n  function render() {\n    const r = compute();\n    const resultCard = document.getElementById('result-card');\n    const ineligible = document.getElementById('ineligible-msg');\n\n    if (!r.eligible) {\n      resultCard.style.display = 'none';\n      ineligible.style.display = 'block';\n      if (typeof lucide !== 'undefined') lucide.createIcons();\n      return;\n    }\n\n    resultCard.style.display = 'block';\n    ineligible.style.display = 'none';\n\n    document.getElementById('result-value').textContent = fmtEUR.format(r.prime);\n    document.getElementById('detail-annual').textContent = fmtEUR.format(r.annualGross);\n    document.getElementById('detail-rate').textContent = fmtPct(r.rate);\n    document.getElementById('detail-mois').textContent = state.mois + ' \u002F 12';\n    document.getElementById('detail-pro').textContent = r.proratise ? 'Proratisée' : 'Année complète';\n\n    \u002F\u002F Progress bar\n    const pct = state.annee === '2026' ? 95 : 100;\n    document.getElementById('progress-fill').style.width = pct + '%';\n  }\n\n  \u002F\u002F Listeners\n  document.getElementById('annee-pills').addEventListener('click', e => {\n    const pill = e.target.closest('.pill[data-annee]');\n    if (!pill) return;\n    document.querySelectorAll('#annee-pills .pill').forEach(p => p.classList.remove('active'));\n    pill.classList.add('active');\n    state.annee = pill.dataset.annee;\n    render();\n  });\n\n  document.getElementById('salaire').addEventListener('input', e => {\n    state.salaire = parseInt(e.target.value);\n    document.getElementById('salaire-val').textContent = fmtEUR.format(state.salaire);\n    render();\n  });\n\n  document.getElementById('mois').addEventListener('input', e => {\n    state.mois = parseInt(e.target.value);\n    document.getElementById('mois-val').textContent = e.target.value;\n    render();\n  });\n\n  document.getElementById('anc').addEventListener('input', e => {\n    state.anc = parseInt(e.target.value);\n    const v = parseInt(e.target.value);\n    document.getElementById('anc-val').textContent = v + ' an' + (v > 1 ? 's' : '');\n    render();\n  });\n\n  render();\n\n  if (typeof lucide !== 'undefined') lucide.createIcons();\n\n  \u002F\u002F Iframe resize contract\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})();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fprime-annuelle-de-la-boulangerie-patisserie-da9ae7be39.webp",[]]