[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-prime-anciennete-personnel-des-cabinets-medicaux-fr":83,"footer-cities-fr":143},[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":137,"source":138,"category":139,"audience":140,"publish_mode":141,"hero_image":142,"hero_image_alt":85},"prime-anciennete-personnel-des-cabinets-medicaux","Prime d'ancienneté — Personnel des cabinets médicaux","Prime ancienneté CCN Personnel des Cabinets Médicaux IDCC 1147 | Expert Zoom","Calculez votre prime d'ancienneté obligatoire selon la CCN des cabinets médicaux (IDCC 1147) : de 4 % à 20 % du salaire de base, par paliers tous les 3 ans à partir de 3 ans.","La convention collective du personnel des cabinets médicaux (IDCC 1147) impose une prime d'ancienneté obligatoire unique en son genre : elle démarre à 4 % dès 3 ans d'ancienneté dans le même cabinet et peut atteindre 20 % après 20 ans. Le code du travail ne prévoit aucune prime d'ancienneté obligatoire, ce qui rend cette disposition particulièrement avantageuse pour les salariés fidèles.",[90],{"name":91,"@type":92,"about":93,"author":97,"@context":100,"isPartOf":101,"inLanguage":104,"description":105,"operatingSystem":106,"applicationCategory":107,"isAccessibleForFree":108},"Calculateur prime d'ancienneté — CCN Personnel des Cabinets Médicaux (IDCC 1147)","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective du personnel des cabinets médicaux","Thing","IDCC 1147",{"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","Calculez votre prime d'ancienneté obligatoire selon la convention collective du personnel des cabinets médicaux (IDCC 1147) : de 4 % à 20 % du salaire de base, paliers tous les 3 ans.","All","FinanceApplication",true,[110,113,116,119,122,125,128,131,134],{"a":111,"q":112},"La prime d'ancienneté est une prime obligatoire prévue par la convention collective nationale IDCC 1147. Elle est versée mensuellement à tous les salariés dès 3 ans de présence dans le même cabinet médical, et représente un pourcentage du salaire de base allant de 4 % à 20 %.","Qu'est-ce que la prime d'ancienneté dans les cabinets médicaux ?",{"a":114,"q":115},"La prime d'ancienneté commence à être versée à partir de 3 ans d'ancienneté dans le même cabinet médical. Avant 3 ans, aucune prime d'ancienneté n'est due selon la CCN 1147.","À partir de combien d'années d'ancienneté la prime est-elle versée dans les cabinets médicaux ?",{"a":117,"q":118},"Les taux sont : 4 % à 3 ans, 7 % à 6 ans, 10 % à 9 ans, 13 % à 12 ans, 16 % à 15 ans, 18 % à 18 ans et 20 % à partir de 20 ans d'ancienneté. Ces taux s'appliquent au salaire de base mensuel brut.","Quels sont les taux de la prime d'ancienneté dans les cabinets médicaux ?",{"a":120,"q":121},"Oui, la prime d'ancienneté est expressément prévue par la CCN IDCC 1147 et est obligatoire pour tous les employeurs relevant de cette convention. Le code du travail ne prévoit aucune prime d'ancienneté obligatoire : c'est donc un avantage propre à cette convention collective.","La prime d'ancienneté dans les cabinets médicaux est-elle obligatoire ?",{"a":123,"q":124},"La prime d'ancienneté se calcule sur le salaire de base mensuel brut, hors primes et autres avantages. Elle est versée mensuellement en sus du salaire de base, ce qui signifie que le salaire total est : salaire de base + prime d'ancienneté.","Sur quelle base est calculée la prime d'ancienneté dans les cabinets médicaux ?",{"a":126,"q":127},"Oui, la prime d'ancienneté est soumise aux cotisations sociales patronales et salariales, ainsi qu'à la CSG et la CRDS. Elle fait partie intégrante de la rémunération brute du salarié et est donc imposable sur le revenu.","La prime d'ancienneté est-elle soumise aux cotisations sociales ?",{"a":129,"q":130},"Pas nécessairement. La CCN 1147 prévoit une transférabilité de l'ancienneté : si vous rejoignez un nouveau cabinet médical pour un poste analogue ou de niveau supérieur, 50 % de votre ancienneté acquise dans l'ancien cabinet est reprise pour le calcul de la prime d'ancienneté dans le nouveau cabinet.","Que se passe-t-il si je change de cabinet médical — ma prime d'ancienneté repart-elle de zéro ?",{"a":132,"q":133},"Non, la prime d'ancienneté n'est pas incluse dans le salaire de base servant au calcul de l'indemnité de licenciement. L'assiette de l'indemnité de licenciement est la rémunération brute totale des 12 derniers mois (ou des 3 derniers mois si plus favorable), prime d'ancienneté incluse dans ce cas car elle fait partie de la rémunération totale.","La prime d'ancienneté est-elle intégrée au calcul de l'indemnité de licenciement ?",{"a":135,"q":136},"La CCN 1147 prévoit le maintien de salaire sous certaines conditions en cas d'arrêt maladie. La prime d'ancienneté, faisant partie de la rémunération habituelle, est généralement incluse dans le maintien de salaire conventionnel, selon les dispositions de la convention sur la maladie.","La prime d'ancienneté est-elle maintenue pendant les congés maladie dans les cabinets médicaux ?","\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 d'ancienneté — CCN Personnel des Cabinets Médicaux (IDCC 1147)\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; --surface: #ffffff; --border: #e7e5e4;\n      --accent: #2563eb; --accent-light: #eff6ff;\n      --text: #1c1917; --muted: #78716c;\n      --info-bg: #eff6ff; --info-border: #bfdbfe; --info-text: #1e40af;\n      --green-bg: #f0fdf4; --green-border: #bbf7d0; --green-text: #166534;\n      --radius: 0.75rem; --radius-sm: 0.5rem;\n      --shadow: 0 1px 3px rgba(0,0,0,.08);\n    }\n    body { font-family: system-ui,-apple-system,sans-serif; background: var(--bg); color: var(--text); font-size: 15px; line-height: 1.5; }\n    .tool-root { max-width: 680px; margin: 0 auto; padding: 1.25rem 1rem 2rem; }\n    .tool-header h1 { font-size: 1.15rem; font-weight: 700; line-height: 1.3; }\n    .idcc-badge { display: inline-flex; align-items: center; gap: 0.35rem; background: var(--accent-light); color: var(--accent); font-size: 0.78rem; font-weight: 600; border-radius: 999px; padding: 0.2rem 0.65rem; margin-top: 0.4rem; }\n    .intro { margin: 1.1rem 0 1.5rem; }\n    .intro p { font-size: 0.9rem; color: var(--muted); margin-bottom: 0.65rem; line-height: 1.6; }\n    .intro strong { color: var(--text); }\n    .rule-callout { display: flex; gap: 0.75rem; background: var(--info-bg); border: 1px solid var(--info-border); border-radius: var(--radius-sm); padding: 0.85rem 1rem; margin-bottom: 1.25rem; }\n    .rule-callout svg { width: 18px; height: 18px; color: var(--accent); flex-shrink: 0; margin-top: 1px; }\n    .rule-callout p { font-size: 0.875rem; color: var(--info-text); line-height: 1.55; }\n    .success-callout { display: flex; gap: 0.75rem; background: var(--green-bg); border: 1px solid var(--green-border); border-radius: var(--radius-sm); padding: 0.85rem 1rem; margin-bottom: 1.25rem; }\n    .success-callout svg { width: 18px; height: 18px; color: #16a34a; flex-shrink: 0; margin-top: 1px; }\n    .success-callout p { font-size: 0.875rem; color: var(--green-text); line-height: 1.55; }\n    .form-group { margin-bottom: 1.1rem; }\n    .form-label { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.875rem; font-weight: 500; margin-bottom: 0.4rem; }\n    .form-label .val { font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }\n    input[type=range] { width: 100%; accent-color: var(--accent); cursor: pointer; }\n    input[type=number] { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: 0.875rem; background: var(--surface); color: var(--text); }\n    .result-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.25rem; margin-top: 1.25rem; }\n    .result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); font-weight: 600; margin-bottom: 0.35rem; }\n    .result-amount { font-size: 2rem; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; }\n    .result-note { font-size: 0.82rem; color: var(--muted); margin-top: 0.5rem; }\n    .result-rows { margin-top: 1rem; }\n    .result-row { display: flex; justify-content: space-between; font-size: 0.85rem; padding: 0.35rem 0; border-bottom: 1px solid var(--border); }\n    .result-row:last-child { border-bottom: none; }\n    .result-row .lbl { color: var(--muted); }\n    .result-row .v { font-weight: 600; font-variant-numeric: tabular-nums; }\n    .progress-bar-wrap { margin: 1.25rem 0; }\n    .progress-label { font-size: 0.82rem; color: var(--muted); margin-bottom: 0.4rem; display: flex; justify-content: space-between; }\n    .progress-bar { height: 10px; background: var(--border); border-radius: 999px; overflow: hidden; }\n    .progress-bar-fill { height: 100%; background: var(--accent); border-radius: 999px; transition: width .4s ease; }\n    .grid-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; margin-top: 1.25rem; }\n    .grid-table th { background: var(--accent); color: #fff; padding: 0.5rem 0.75rem; text-align: left; font-weight: 600; }\n    .grid-table td { padding: 0.45rem 0.75rem; border-bottom: 1px solid var(--border); }\n    .grid-table tr:last-child td { border-bottom: none; }\n    .grid-table tr:nth-child(even) td { background: var(--bg); }\n    .grid-table tr.highlight td { background: var(--accent-light); font-weight: 600; color: var(--accent); }\n    .disclaimer { margin-top: 1.75rem; padding-top: 1rem; border-top: 1px solid var(--border); font-size: 0.78rem; color: var(--muted); 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 IDCC 1147 — prime d'ancienneté standalone\n     Table: \u003C3ans=0%, 3-5=4%, 6-8=7%, 9-11=10%, 12-14=13%, 15-17=16%, 18-19=18%, ≥20=20%\n     No legal baseline (code du travail ne prévoit aucune prime d'ancienneté obligatoire)\n     Transférabilité: 50% ancienneté au cabinet précédent si même niveau ou supérieur\n-->\n\u003Cdiv class=\"tool-header\">\n  \u003Ch1>Prime d'ancienneté — Personnel des cabinets médicaux\u003C\u002Fh1>\n  \u003Cdiv class=\"idcc-badge\">\u003Ci data-lucide=\"shield-check\">\u003C\u002Fi> CCN IDCC 1147\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"intro\">\n  \u003Cp>La \u003Cstrong>convention collective nationale du personnel des cabinets médicaux (IDCC 1147)\u003C\u002Fstrong> impose une \u003Cstrong>prime d'ancienneté obligatoire\u003C\u002Fstrong> à tous les salariés, dès 3 ans de présence dans le cabinet. Cette prime représente de \u003Cstrong>4 % à 20 %\u003C\u002Fstrong> du salaire de base mensuel.\u003C\u002Fp>\n  \u003Cp>À titre de comparaison, \u003Cstrong>le code du travail ne prévoit aucune prime d'ancienneté obligatoire\u003C\u002Fstrong> — il s'agit donc d'un avantage propre à cette convention collective, particulièrement favorable aux salariés fidèles à leur cabinet.\u003C\u002Fp>\n  \u003Cp>Un salarié changeant de cabinet peut également bénéficier d'une \u003Cstrong>reprise à 50 %\u003C\u002Fstrong> de son ancienneté acquise, sous conditions.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"rule-callout\">\n  \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n  \u003Cp>\u003Cstrong>Règle CCN 1147 :\u003C\u002Fstrong> Prime d'ancienneté calculée sur le salaire de base (hors primes et avantages), versée mensuellement. Paliers : 4 % (3 ans), 7 % (6 ans), 10 % (9 ans), 13 % (12 ans), 16 % (15 ans), 18 % (18 ans), 20 % (20 ans et plus).\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"form-group\">\n  \u003Clabel class=\"form-label\">Salaire brut mensuel de base \u003Cspan class=\"val\" id=\"sal-val\">2 200 €\u003C\u002Fspan>\u003C\u002Flabel>\n  \u003Cinput type=\"range\" id=\"anc-sal\" min=\"1400\" max=\"6000\" step=\"50\" value=\"2200\">\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"form-group\">\n  \u003Clabel class=\"form-label\">Ancienneté dans ce cabinet (années) \u003Cspan class=\"val\" id=\"anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n  \u003Cinput type=\"range\" id=\"anc-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"5\">\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"progress-bar-wrap\" id=\"progress-wrap\">\n  \u003Cdiv class=\"progress-label\">\n    \u003Cspan>Progression vers le prochain palier\u003C\u002Fspan>\n    \u003Cspan id=\"progress-label-right\">–\u003C\u002Fspan>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"progress-bar\">\u003Cdiv class=\"progress-bar-fill\" id=\"progress-fill\" style=\"width:0%\">\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"result-card\">\n  \u003Cdiv class=\"result-label\">Prime d'ancienneté mensuelle\u003C\u002Fdiv>\n  \u003Cdiv class=\"result-amount\" id=\"res-amount\">–\u003C\u002Fdiv>\n  \u003Cdiv class=\"result-note\" id=\"res-note\">\u003C\u002Fdiv>\n  \u003Cdiv class=\"result-rows\">\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"lbl\">Taux applicable\u003C\u002Fspan>\u003Cspan class=\"v\" id=\"res-taux\">–\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"lbl\">Salaire de base\u003C\u002Fspan>\u003Cspan class=\"v\" id=\"res-base\">–\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"lbl\">Salaire total (base + prime)\u003C\u002Fspan>\u003Cspan class=\"v\" id=\"res-total\">–\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"lbl\">Prime annuelle estimée\u003C\u002Fspan>\u003Cspan class=\"v\" id=\"res-annuel\">–\u003C\u002Fspan>\u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\u003Cspan class=\"lbl\">Prochain palier\u003C\u002Fspan>\u003Cspan class=\"v\" id=\"res-next\">–\u003C\u002Fspan>\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cdiv class=\"success-callout\" style=\"margin-top:1.25rem\">\n  \u003Ci data-lucide=\"trending-up\">\u003C\u002Fi>\n  \u003Cp>\u003Cstrong>Transférabilité :\u003C\u002Fstrong> En cas de changement de cabinet médical pour un poste équivalent ou supérieur, vous conservez \u003Cstrong>50 %\u003C\u002Fstrong> de votre ancienneté acquise pour le calcul de la prime d'ancienneté dans le nouveau cabinet.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Ctable class=\"grid-table\">\n  \u003Cthead>\u003Ctr>\u003Cth>Ancienneté\u003C\u002Fth>\u003Cth>Taux prime\u003C\u002Fth>\u003Cth>Exemple (2 200 €)\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody id=\"grid-body\">\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Cp class=\"disclaimer\">\n  Calcul indicatif basé sur la CCN IDCC 1147 (Personnel des cabinets médicaux, 14 octobre 1981) et ses avenants en vigueur au 1ᵉʳ janvier 2026.\n  Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635409\" target=\"_blank\" rel=\"noopener\">Légifrance — KALICONT000005635409\u003C\u002Fa>.\n  Pour toute validation légale\n\u003C\u002Fp>\n\u003C\u002Fmain>\n\u003Cscript>\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\nlet sal = 2200, anc = 5;\n\nconst ANC_TABLE = [\n  {min:0, max:2, taux:0, label:'\u003C 3 ans'},\n  {min:3, max:5, taux:4, label:'3 – 5 ans'},\n  {min:6, max:8, taux:7, label:'6 – 8 ans'},\n  {min:9, max:11, taux:10, label:'9 – 11 ans'},\n  {min:12, max:14, taux:13, label:'12 – 14 ans'},\n  {min:15, max:17, taux:16, label:'15 – 17 ans'},\n  {min:18, max:19, taux:18, label:'18 – 19 ans'},\n  {min:20, max:999, taux:20, label:'≥ 20 ans'}\n];\nconst MILESTONES = [3,6,9,12,15,18,20];\n\nfunction getRow(a) { return ANC_TABLE.find(r=>a>=r.min&&a\u003C=r.max)||ANC_TABLE[0]; }\nfunction getNextMilestone(a) { return MILESTONES.find(m=>m>a)||null; }\n\nfunction buildGrid() {\n  const tbody = document.getElementById('grid-body');\n  tbody.innerHTML = ANC_TABLE.map(r => {\n    const ex = 2200*(r.taux\u002F100);\n    const isActive = anc>=r.min && anc\u003C=r.max;\n    return `\u003Ctr class=\"${isActive?'highlight':''}\">\u003Ctd>${r.label}\u003C\u002Ftd>\u003Ctd>${r.taux} %\u003C\u002Ftd>\u003Ctd>${r.taux>0?fmtEurDec(ex):'–'}\u003C\u002Ftd>\u003C\u002Ftr>`;\n  }).join('');\n}\n\nfunction render() {\n  const row = getRow(anc);\n  const taux = row.taux;\n  const prime = sal*(taux\u002F100);\n  const total = sal+prime;\n  const next = getNextMilestone(anc);\n  const nextRow = next ? getRow(next) : null;\n  const nextTaux = nextRow ? nextRow.taux : null;\n  const primeDiff = nextTaux !== null ? sal*(nextTaux\u002F100) - prime : null;\n\n  \u002F\u002F Progress bar\n  if (anc >= 20) {\n    document.getElementById('progress-label-right').textContent = 'Taux maximum atteint';\n    document.getElementById('progress-fill').style.width = '100%';\n  } else {\n    const prevMilestone = MILESTONES.filter(m=>m\u003C=anc).slice(-1)[0]||0;\n    const span = (next||20) - prevMilestone;\n    const elapsed = anc - prevMilestone;\n    const pct = Math.round((elapsed\u002Fspan)*100);\n    document.getElementById('progress-label-right').textContent = `${anc} \u002F ${next} ans (${pct}%)`;\n    document.getElementById('progress-fill').style.width = pct+'%';\n  }\n\n  document.getElementById('res-amount').textContent = taux > 0 ? fmtEurDec(prime) : '0 €';\n  document.getElementById('res-taux').textContent = taux > 0 ? taux+' %' : 'Pas encore de prime (\u003C 3 ans)';\n  document.getElementById('res-base').textContent = fmtEurDec(sal);\n  document.getElementById('res-total').textContent = fmtEurDec(total);\n  document.getElementById('res-annuel').textContent = taux > 0 ? fmtEur(prime*12) : '–';\n  document.getElementById('res-next').textContent = next ? `À ${next} ans → ${nextTaux} % (+${fmtEurDec(primeDiff)}\u002Fmois)` : 'Taux maximum atteint (20 %)';\n  document.getElementById('res-note').textContent = taux === 0 ? 'La prime d\\'ancienneté commence à 3 ans dans le même cabinet.' : '';\n\n  buildGrid();\n}\n\ndocument.getElementById('anc-sal').addEventListener('input', e => {\n  sal = parseFloat(e.target.value);\n  document.getElementById('sal-val').textContent = fmtEur(sal);\n  render();\n});\ndocument.getElementById('anc-anc').addEventListener('input', e => {\n  anc = parseInt(e.target.value);\n  document.getElementById('anc-val').textContent = `${anc} an${anc>1?'s':''}`;\n  render();\n});\n\nrender();\n\nwindow.addEventListener('load', () => {\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});\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fprime-anciennete-personnel-des-cabinets-medicaux-d2d82b1784.webp",[]]