[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-entreprises-d-expertises-en-matiere-d-evaluations-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":85},"ccn-entreprises-d-expertises-en-matiere-d-evaluations","CCN des entreprises d'expertises en évaluations industrielles et commerciales — calculateur complet","Calculateur CCN Expertises Évaluations IDCC 915 | Expert Zoom","Outil interactif couvrant le préavis, la prime d'ancienneté, la gratification annuelle, la grille de salaires et les congés de la CCN IDCC 915 (brochure JO 3145).","Ce calculateur couvre les 5 principales dérogations de la convention collective IDCC 915 : préavis (cadres 3 mois, non-cadres 1-2 mois), prime d'ancienneté (2,5 % à 10 % selon l'ancienneté), gratification annuelle obligatoire (1\u002F12 du salaire mensuel), grille de salaires minima par degré (Avenant n°74 — fév. 2025), et congés supplémentaires d'ancienneté (+1 à +3 jours).",[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 Entreprises d'expertises en évaluations industrielles et commerciales — IDCC 915","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective des entreprises d'expertises en matière d'évaluations industrielles et commerciales","Thing","IDCC 915",{"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 le préavis, la prime d'ancienneté, la gratification annuelle, la grille de salaires et les congés de la convention collective IDCC 915 (brochure JO 3145).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131,134,137],{"a":111,"q":112},"Les cadres relevant de la convention collective IDCC 915 (expertises en évaluations industrielles et commerciales) bénéficient d'un préavis de 3 mois quelle que soit leur ancienneté, en cas de licenciement ou de démission.","Quelle est la durée du préavis pour un cadre dans la CCN IDCC 915 ?",{"a":114,"q":115},"Oui. La convention collective IDCC 915 prévoit une prime d'ancienneté pour les non-cadres à partir de 3 ans de service : 2,5 % du salaire de base, jusqu'à 10 % à partir de 20 ans d'ancienneté.","La CCN 915 prévoit-elle une prime d'ancienneté ?",{"a":117,"q":118},"Oui. La CCN IDCC 915 impose une gratification annuelle équivalente à 1\u002F12 du salaire mensuel brut de base par mois de travail effectif. Elle ne se cumule pas avec un autre avantage du même type (13e mois, prime annuelle) : seul le plus favorable s'applique.","Existe-t-il une gratification annuelle obligatoire dans la CCN 915 ?",{"a":120,"q":121},"La convention collective fixe une grille de salaires minima en 6 degrés pour trois catégories : personnel administratif, collaborateurs commerciaux et techniques, et cadres. La grille a été révisée par l'avenant n°74 (1er février 2025). Le degré 1 administratif démarre à environ 1 802 € bruts mensuels.","Quels sont les salaires minima prévus par la CCN IDCC 915 ?",{"a":123,"q":124},"Oui. Au-delà des 30 jours ouvrables légaux, la CCN IDCC 915 accorde des congés supplémentaires selon l'ancienneté : +1 jour à 10 ans, +2 jours à 15 ans, +3 jours à 20 ans de service.","La CCN 915 accorde-t-elle des congés supplémentaires ?",{"a":126,"q":127},"La CCN IDCC 915 n'améliore pas la formule légale : 1\u002F4 de mois de salaire brut par année d'ancienneté jusqu'à 10 ans, et 1\u002F3 de mois au-delà de 10 ans, conformément à l'article L1234-9 du code du travail.","Comment calculer l'indemnité de licenciement dans la CCN 915 ?",{"a":129,"q":130},"Pour les non-cadres : 1 mois de préavis si l'ancienneté est comprise entre 6 mois et 2 ans, et 2 mois à partir de 2 ans d'ancienneté. Pour une ancienneté inférieure à 6 mois, le minimum légal s'applique.","Quelle est la durée du préavis pour un non-cadre sous la CCN 915 ?",{"a":132,"q":133},"La CCN IDCC 915 (brochure JO 3145) s'applique aux entreprises d'expertises en matière d'évaluations industrielles et commerciales : expertises d'assurance, évaluations de biens industriels, commerciaux ou immatériels, et activités connexes. Elle couvre environ 9 800 salariés.","À quels secteurs s'applique la convention collective IDCC 915 ?",{"a":135,"q":136},"Non. La prime d'ancienneté prévue par la CCN IDCC 915 s'applique aux non-cadres uniquement. Les cadres ne sont pas visés par cette disposition conventionnelle.","La prime d'ancienneté de la CCN 915 s'applique-t-elle aux cadres ?",{"a":138,"q":139},"La CCN IDCC 915 prévoit une période d'essai de 2 à 4 mois pour les non-cadres (renouvelable une fois) et de 4 mois pour les cadres (renouvelable jusqu'à 8 mois au total), dans les limites fixées par le code du travail.","Quelle est la période d'essai prévue par la CCN 915 ?","\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 Entreprises d'expertises en évaluations — IDCC 915\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    :root {\n      --bg: #fafaf9;\n      --surface: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --accent-dark: #1d4ed8;\n      --text: #1c1917;\n      --text-muted: #78716c;\n      --success-bg: #f0fdf4;\n      --success-border: #bbf7d0;\n      --success-text: #15803d;\n      --warn-bg: #fffbeb;\n      --warn-border: #fde68a;\n      --warn-text: #92400e;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --info-text: #1d4ed8;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n      --shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06);\n    }\n    body {\n      font-family: system-ui, -apple-system, sans-serif;\n      background: var(--bg);\n      color: var(--text);\n      line-height: 1.6;\n      padding: 0;\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.15rem;\n      font-weight: 700;\n      color: var(--text);\n      line-height: 1.3;\n    }\n    .idcc-badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 0.35rem;\n      background: var(--accent-light);\n      color: var(--accent);\n      font-size: 0.75rem;\n      font-weight: 600;\n      padding: 0.2rem 0.6rem;\n      border-radius: 999px;\n      margin-top: 0.4rem;\n    }\n    \u002F* Tabs *\u002F\n    .tabs-nav {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 0.25rem;\n      border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem;\n    }\n    .tab-btn {\n      display: flex;\n      align-items: center;\n      gap: 0.35rem;\n      padding: 0.55rem 0.85rem;\n      font-size: 0.83rem;\n      font-weight: 500;\n      color: var(--text-muted);\n      background: none;\n      border: none;\n      border-bottom: 2px solid transparent;\n      margin-bottom: -2px;\n      cursor: pointer;\n      border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n      transition: color 0.15s, background 0.15s;\n      white-space: nowrap;\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    .tab-panel { display: none; }\n    .tab-panel.active { display: block; }\n    \u002F* Cards *\u002F\n    .card {\n      background: var(--surface);\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      padding: 1.1rem 1.2rem;\n      margin-bottom: 1rem;\n      box-shadow: var(--shadow);\n    }\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex;\n      gap: 0.7rem;\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.8rem 1rem;\n      margin-bottom: 1rem;\n      font-size: 0.875rem;\n      color: var(--info-text);\n    }\n    .rule-callout svg { flex-shrink: 0; margin-top: 0.1rem; }\n    \u002F* Form elements *\u002F\n    .field { margin-bottom: 1rem; }\n    .field label {\n      display: block;\n      font-size: 0.825rem;\n      font-weight: 600;\n      color: var(--text);\n      margin-bottom: 0.4rem;\n    }\n    .field-row {\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n    }\n    .field-row input[type=range] { flex: 1; accent-color: var(--accent); }\n    .field-value {\n      font-size: 0.875rem;\n      font-weight: 700;\n      color: var(--accent);\n      min-width: 3.5rem;\n      text-align: right;\n      font-variant-numeric: tabular-nums;\n    }\n    .pills {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 0.4rem;\n    }\n    .pill {\n      padding: 0.3rem 0.75rem;\n      font-size: 0.8rem;\n      font-weight: 500;\n      border: 1.5px solid var(--border);\n      border-radius: 999px;\n      cursor: pointer;\n      background: var(--surface);\n      color: var(--text-muted);\n      transition: all 0.12s;\n    }\n    .pill.selected, .pill:hover {\n      background: var(--accent-light);\n      border-color: var(--accent);\n      color: var(--accent);\n    }\n    select {\n      width: 100%;\n      padding: 0.5rem 0.75rem;\n      border: 1.5px 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    select:focus { outline: none; border-color: var(--accent); }\n    \u002F* Result card *\u002F\n    .result-card {\n      background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);\n      border-radius: var(--radius);\n      padding: 1.1rem 1.25rem;\n      color: white;\n      margin-top: 1rem;\n    }\n    .result-label {\n      font-size: 0.78rem;\n      opacity: 0.85;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      margin-bottom: 0.3rem;\n    }\n    .result-value {\n      font-size: 1.75rem;\n      font-weight: 800;\n      font-variant-numeric: tabular-nums;\n      letter-spacing: -0.02em;\n    }\n    .result-detail {\n      font-size: 0.8rem;\n      opacity: 0.8;\n      margin-top: 0.3rem;\n    }\n    \u002F* Grid for salary table *\u002F\n    .salary-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; }\n    .salary-table th, .salary-table td {\n      padding: 0.5rem 0.65rem;\n      border: 1px solid var(--border);\n      text-align: left;\n    }\n    .salary-table th { background: var(--accent-light); font-weight: 600; color: var(--accent); }\n    .salary-table tr:nth-child(even) td { background: var(--bg); }\n    .salary-table .highlight { font-weight: 700; color: var(--accent); }\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.75rem;\n      color: var(--text-muted);\n      margin-top: 1.5rem;\n      padding-top: 0.75rem;\n      border-top: 1px solid var(--border);\n      line-height: 1.5;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    \u002F* Toggle *\u002F\n    .toggle-group {\n      display: flex;\n      gap: 0;\n      border: 1.5px solid var(--border);\n      border-radius: var(--radius-sm);\n      overflow: hidden;\n    }\n    .toggle-btn {\n      flex: 1;\n      padding: 0.4rem 0.75rem;\n      font-size: 0.82rem;\n      font-weight: 500;\n      border: none;\n      background: var(--surface);\n      color: var(--text-muted);\n      cursor: pointer;\n      transition: all 0.12s;\n    }\n    .toggle-btn.active {\n      background: var(--accent);\n      color: white;\n    }\n    .note-box {\n      background: var(--warn-bg);\n      border: 1px solid var(--warn-border);\n      border-radius: var(--radius-sm);\n      padding: 0.6rem 0.85rem;\n      font-size: 0.8rem;\n      color: var(--warn-text);\n      margin-top: 0.75rem;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003Cmain class=\"tool-root\">\n  \u003C!-- CCN Source comment -->\n  \u003C!-- CCN IDCC 915 — deviations vs code du travail\n       preavis: L1234-1 → Non-cadres: 1 mois (\u003C2 ans), 2 mois (≥2 ans) ; Cadres: 3 mois (source: brochure 3145)\n       salaire-min: SMIC → Grille 6 degrés par catégorie (admin, commercial\u002Ftechnique, cadres) — Avenant n°74 (1er fév 2025)\n       prime-anciennete: Aucune loi → 2,5% dès 3 ans d'ancienneté, jusqu'à 10% à 20 ans (source: brochure 3145)\n       gratification-annuelle: Aucune loi → Gratification = 1\u002F12 du salaire mensuel brut de base par mois travaillé (source: brochure 3145)\n       conges: L3141-3 → +1 j à 10 ans, +2 j à 15 ans, +3 j à 20 ans (source: brochure 3145)\n       indemnite: L1234-9 → Conforme (1\u002F4 mois ≤10 ans, 1\u002F3 mois >10 ans) — pas de tab\n       heures-supp: L3121-36 → première 1\u002F10 des heures +10%, au-delà +25% (interprétation à confirmer) -->\n\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Calculateur Convention Collective\u003Cbr>Expertises en Évaluations industrielles et commerciales\u003C\u002Fh1>\n    \u003Cdiv class=\"idcc-badge\">\n      \u003Ci data-lucide=\"landmark\" style=\"width:12px;height:12px;\">\u003C\u002Fi>\n      IDCC 915 · Brochure JO 3145\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Tabs navigation -->\n  \u003Cnav class=\"tabs-nav\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">\n      \u003Ci data-lucide=\"clock\" style=\"width:14px;height:14px;\">\u003C\u002Fi> Préavis\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-anciennete\" role=\"tab\">\n      \u003Ci data-lucide=\"trending-up\" style=\"width:14px;height:14px;\">\u003C\u002Fi> Ancienneté\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"gratification\" role=\"tab\">\n      \u003Ci data-lucide=\"gift\" style=\"width:14px;height:14px;\">\u003C\u002Fi> Gratification\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\">\n      \u003Ci data-lucide=\"bar-chart-2\" style=\"width:14px;height:14px;\">\u003C\u002Fi> Salaires\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"conges\" role=\"tab\">\n      \u003Ci data-lucide=\"sun\" style=\"width:14px;height:14px;\">\u003C\u002Fi> Congés\n    \u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- PANEL: 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 IDCC 915 fixe des durées de préavis spécifiques selon le statut et l'ancienneté. Les \u003Cstrong>cadres bénéficient de 3 mois\u003C\u002Fstrong> quel que soit leur ancienneté, et les non-cadres de 1 à 2 mois selon leur durée de service.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Statut du salarié\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"preavis-statut\">\n          \u003Cbutton class=\"pill selected\" data-val=\"non-cadre\">Non-cadre\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"preavis-anc-field\">\n        \u003Clabel>Ancienneté\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"preavis-anciennete\">\n          \u003Cbutton class=\"pill selected\" data-val=\"0\">Moins de 6 mois\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"6\">6 mois à 2 ans\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"24\">2 ans et plus\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Motif de rupture\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"preavis-motif\">\n          \u003Cbutton class=\"pill selected\" 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=\"preavis-result\">\n        \u003Cdiv class=\"result-label\">Durée du préavis\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"preavis-value\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-detail\" id=\"preavis-detail\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Prime d'ancienneté -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"prime-anciennete\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN prévoit une \u003Cstrong>prime d'ancienneté\u003C\u002Fstrong> pour les non-cadres dès 3 ans de service, allant de \u003Cstrong>2,5 % à 10 %\u003C\u002Fstrong> du salaire de base — avantage absent du code du travail (aucun minimum légal).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire mensuel brut de base (€)\u003C\u002Flabel>\n        \u003Cdiv class=\"field-row\">\n          \u003Cinput type=\"range\" id=\"pa-salaire\" min=\"1500\" max=\"6000\" step=\"50\" value=\"2500\">\n          \u003Cspan class=\"field-value\" id=\"pa-salaire-val\">2 500 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années)\u003C\u002Flabel>\n        \u003Cdiv class=\"field-row\">\n          \u003Cinput type=\"range\" id=\"pa-anciennete\" min=\"0\" max=\"30\" step=\"1\" value=\"5\">\n          \u003Cspan class=\"field-value\" id=\"pa-anc-val\">5 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Statut\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"pa-statut\">\n          \u003Cbutton class=\"pill selected\" data-val=\"non-cadre\">Non-cadre\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre (non applicable)\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\" id=\"pa-result\">\n        \u003Cdiv class=\"result-label\">Prime d'ancienneté mensuelle\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"pa-value\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-detail\" id=\"pa-detail\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Gratification annuelle -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"gratification\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 915 impose une \u003Cstrong>gratification annuelle\u003C\u002Fstrong> équivalente à 1\u002F12 du salaire mensuel brut de base par mois de travail effectif — obligation conventionnelle sans équivalent dans le code du travail.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire mensuel brut de base (€)\u003C\u002Flabel>\n        \u003Cdiv class=\"field-row\">\n          \u003Cinput type=\"range\" id=\"grat-salaire\" min=\"1500\" max=\"8000\" step=\"50\" value=\"2800\">\n          \u003Cspan class=\"field-value\" id=\"grat-salaire-val\">2 800 €\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Mois de travail effectif dans l'année\u003C\u002Flabel>\n        \u003Cdiv class=\"field-row\">\n          \u003Cinput type=\"range\" id=\"grat-mois\" min=\"1\" max=\"12\" step=\"1\" value=\"12\">\n          \u003Cspan class=\"field-value\" id=\"grat-mois-val\">12 mois\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\" id=\"grat-result\">\n        \u003Cdiv class=\"result-label\">Gratification annuelle brute\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"grat-value\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-detail\" id=\"grat-detail\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"note-box\">\n        \u003Ci data-lucide=\"alert-triangle\" style=\"width:13px;height:13px;display:inline;vertical-align:middle;\">\u003C\u002Fi>\n        La gratification ne se cumule pas avec un autre avantage annuel du même type (13e mois, prime annuelle) : seul le plus favorable s'applique.\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Salaire minimum -->\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>La CCN fixe une \u003Cstrong>grille de salaires minima\u003C\u002Fstrong> par catégorie et degré, révisée par l'avenant n°74 (1er fév. 2025) et n°75 (23 fév. 2026), supérieure au SMIC conventionnel.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Catégorie\u003C\u002Flabel>\n        \u003Cselect id=\"sm-categorie\">\n          \u003Coption value=\"admin\">Personnel administratif\u003C\u002Foption>\n          \u003Coption value=\"commercial\">Collaborateurs commerciaux et techniques\u003C\u002Foption>\n          \u003Coption value=\"cadre\">Cadres\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Degré \u002F Niveau\u003C\u002Flabel>\n        \u003Cselect id=\"sm-degre\">\n          \u003Coption value=\"1\">Degré 1 (Débutant)\u003C\u002Foption>\n          \u003Coption value=\"2\">Degré 2\u003C\u002Foption>\n          \u003Coption value=\"3\">Degré 3\u003C\u002Foption>\n          \u003Coption value=\"4\">Degré 4\u003C\u002Foption>\n          \u003Coption value=\"5\">Degré 5\u003C\u002Foption>\n          \u003Coption value=\"6\">Degré 6 (Senior)\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Durée hebdomadaire\u003C\u002Flabel>\n        \u003Cdiv class=\"toggle-group\">\n          \u003Cbutton class=\"toggle-btn active\" id=\"sm-35h\" onclick=\"setSMHours(35)\">35 h\u003C\u002Fbutton>\n          \u003Cbutton class=\"toggle-btn\" id=\"sm-39h\" onclick=\"setSMHours(39)\">39 h\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\" id=\"sm-result\">\n        \u003Cdiv class=\"result-label\">Salaire minimum mensuel brut\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"sm-value\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-detail\" id=\"sm-detail\">\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv style=\"margin-top:1rem;\">\n        \u003Cp style=\"font-size:0.8rem;font-weight:600;color:var(--text-muted);margin-bottom:0.5rem;\">Grille indicative (Avenant n°74 — février 2025)\u003C\u002Fp>\n        \u003Ctable class=\"salary-table\">\n          \u003Cthead>\n            \u003Ctr>\n              \u003Cth>Degré\u003C\u002Fth>\n              \u003Cth>Administratif\u003C\u002Fth>\n              \u003Cth>Commercial\u002FTechnique\u003C\u002Fth>\n              \u003Cth>Cadres\u003C\u002Fth>\n            \u003C\u002Ftr>\n          \u003C\u002Fthead>\n          \u003Ctbody>\n            \u003Ctr>\u003Ctd>1\u003C\u002Ftd>\u003Ctd>1 802 €\u003C\u002Ftd>\u003Ctd>1 900 €\u003C\u002Ftd>\u003Ctd>2 600 €\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>2\u003C\u002Ftd>\u003Ctd>1 900 €\u003C\u002Ftd>\u003Ctd>2 050 €\u003C\u002Ftd>\u003Ctd>2 900 €\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>3\u003C\u002Ftd>\u003Ctd>2 050 €\u003C\u002Ftd>\u003Ctd>2 250 €\u003C\u002Ftd>\u003Ctd>3 200 €\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>4\u003C\u002Ftd>\u003Ctd>2 250 €\u003C\u002Ftd>\u003Ctd>2 500 €\u003C\u002Ftd>\u003Ctd>3 650 €\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>5\u003C\u002Ftd>\u003Ctd>2 500 €\u003C\u002Ftd>\u003Ctd>2 900 €\u003C\u002Ftd>\u003Ctd>4 200 €\u003C\u002Ftd>\u003C\u002Ftr>\n            \u003Ctr>\u003Ctd>6\u003C\u002Ftd>\u003Ctd>2 900 €\u003C\u002Ftd>\u003Ctd>3 400 €\u003C\u002Ftd>\u003Ctd>5 000 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003C\u002Ftbody>\n        \u003C\u002Ftable>\n        \u003Cp style=\"font-size:0.72rem;color:var(--text-muted);margin-top:0.4rem;\">Valeurs indicatives basées sur avenant n°74. Vérifier les montants officiels sur Legifrance.\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PANEL: Congés -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"conges\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 915 accorde des \u003Cstrong>jours de congé supplémentaires\u003C\u002Fstrong> liés à l'ancienneté : +1 jour à 10 ans, +2 jours à 15 ans, +3 jours à 20 ans, au-delà des 30 jours ouvrables légaux.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années)\u003C\u002Flabel>\n        \u003Cdiv class=\"field-row\">\n          \u003Cinput type=\"range\" id=\"conges-anc\" min=\"0\" max=\"35\" step=\"1\" value=\"8\">\n          \u003Cspan class=\"field-value\" id=\"conges-anc-val\">8 ans\u003C\u002Fspan>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Temps de travail\u003C\u002Flabel>\n        \u003Cdiv class=\"toggle-group\">\n          \u003Cbutton class=\"toggle-btn active\" id=\"conges-plein\" onclick=\"setCongesTP(false)\">Temps plein\u003C\u002Fbutton>\n          \u003Cbutton class=\"toggle-btn\" id=\"conges-partiel\" onclick=\"setCongesTP(true)\">Temps partiel\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\" id=\"conges-result\">\n        \u003Cdiv class=\"result-label\">Congés payés annuels\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-value\" id=\"conges-value\">—\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-detail\" id=\"conges-detail\">\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 IDCC 915 (Brochure JO n°3145).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635660\" 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 fmt = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\n\nconst state = {\n  \u002F\u002F Préavis\n  preavis: { statut: 'non-cadre', anciennete: 0, motif: 'licenciement' },\n  \u002F\u002F Prime ancienneté\n  pa: { salaire: 2500, anciennete: 5, statut: 'non-cadre' },\n  \u002F\u002F Gratification\n  grat: { salaire: 2800, mois: 12 },\n  \u002F\u002F Salaire min\n  sm: { categorie: 'admin', degre: 1, heures: 35 },\n  \u002F\u002F Congés\n  conges: { anciennete: 8, temps_partiel: false }\n};\n\n\u002F\u002F ─── Salary grid (indicative, Avenant n°74 Feb 2025) ───────────────────────\nconst SALARY_GRID = {\n  admin:      [1802, 1900, 2050, 2250, 2500, 2900],\n  commercial: [1900, 2050, 2250, 2500, 2900, 3400],\n  cadre:      [2600, 2900, 3200, 3650, 4200, 5000]\n};\n\n\u002F\u002F ─── Compute functions ──────────────────────────────────────────────────────\n\nfunction computePreavis(s) {\n  if (s.statut === 'cadre') {\n    if (s.motif === 'demission') return { duree: '3 mois', detail: 'Cadre — durée identique quelle que soit l\\'ancienneté (CCN art. préavis)' };\n    return { duree: '3 mois', detail: 'Cadre — préavis conventionnel de 3 mois (CCN IDCC 915)' };\n  }\n  \u002F\u002F Non-cadre\n  if (s.anciennete \u003C 6) {\n    return { duree: '— (légal)', detail: 'Ancienneté \u003C 6 mois : la CCN ne fixe pas de durée, le légal s\\'applique (L1234-1)' };\n  }\n  if (s.anciennete \u003C 24) {\n    const label = s.motif === 'demission' ? '1 mois' : '1 mois';\n    return { duree: label, detail: `Non-cadre, 6 mois à \u003C 2 ans d'ancienneté — 1 mois (CCN IDCC 915)` };\n  }\n  return { duree: '2 mois', detail: `Non-cadre, ≥ 2 ans d'ancienneté — 2 mois (CCN IDCC 915)` };\n}\n\nfunction computePA(s) {\n  if (s.statut === 'cadre') {\n    return { montant: 0, taux: 0, detail: 'Prime d\\'ancienneté non applicable aux cadres dans cette CCN.' };\n  }\n  let taux = 0;\n  if (s.anciennete \u003C 3) taux = 0;\n  else if (s.anciennete \u003C 5) taux = 2.5;\n  else if (s.anciennete \u003C 10) taux = 5;\n  else if (s.anciennete \u003C 15) taux = 7.5;\n  else taux = 10;\n\n  const montant = s.salaire * taux \u002F 100;\n  return { montant, taux, detail: `${taux} % × ${fmt.format(s.salaire)} = ${fmt.format(montant)}\u002Fmois` };\n}\n\nfunction computeGrat(s) {\n  const montant = (s.salaire \u002F 12) * s.mois;\n  return { montant, detail: `1\u002F12 × ${fmt.format(s.salaire)} × ${s.mois} mois = ${fmt.format(montant)}` };\n}\n\nfunction computeSM(s) {\n  const grid = SALARY_GRID[s.categorie];\n  const base = grid[s.degre - 1];\n  let montant = base;\n  if (s.heures === 39) montant = Math.round(base * 39 \u002F 35);\n  const catLabel = { admin: 'Administratif', commercial: 'Commercial\u002FTechnique', cadre: 'Cadre' }[s.categorie];\n  return { montant, detail: `${catLabel}, Degré ${s.degre}, ${s.heures}h — valeur indicative Avenant n°74` };\n}\n\nfunction computeConges(s) {\n  let base = 30; \u002F\u002F jours ouvrables légaux\n  let extra = 0;\n  if (s.anciennete >= 20) extra = 3;\n  else if (s.anciennete >= 15) extra = 2;\n  else if (s.anciennete >= 10) extra = 1;\n  const total = base + extra;\n  const mention = extra > 0 ? `30 j légaux + ${extra} j ancienneté` : '30 j légaux (ancienneté \u003C 10 ans)';\n  return { total, extra, detail: mention };\n}\n\n\u002F\u002F ─── Render functions ───────────────────────────────────────────────────────\n\nfunction renderPreavis() {\n  const r = computePreavis(state.preavis);\n  document.getElementById('preavis-value').textContent = r.duree;\n  document.getElementById('preavis-detail').textContent = r.detail;\n  \u002F\u002F Show\u002Fhide ancienneté field for cadres\n  document.getElementById('preavis-anc-field').style.display =\n    state.preavis.statut === 'cadre' ? 'none' : '';\n}\n\nfunction renderPA() {\n  const r = computePA(state.pa);\n  const el = document.getElementById('pa-value');\n  if (r.taux === 0) {\n    el.textContent = r.montant === 0 && state.pa.anciennete \u003C 3\n      ? '0 € (\u003C 3 ans)'\n      : 'Non applicable';\n  } else {\n    el.textContent = fmt.format(r.montant);\n  }\n  document.getElementById('pa-detail').textContent = r.detail;\n}\n\nfunction renderGrat() {\n  const r = computeGrat(state.grat);\n  document.getElementById('grat-value').textContent = fmt.format(r.montant);\n  document.getElementById('grat-detail').textContent = r.detail;\n}\n\nfunction renderSM() {\n  const r = computeSM(state.sm);\n  document.getElementById('sm-value').textContent = fmt.format(r.montant);\n  document.getElementById('sm-detail').textContent = r.detail;\n  \u002F\u002F Highlight active row in table\n  document.querySelectorAll('.salary-table tbody tr').forEach((tr, i) => {\n    const cells = tr.querySelectorAll('td');\n    cells.forEach(td => td.classList.remove('highlight'));\n    if (i === state.sm.degre - 1) {\n      const colIdx = ['admin', 'commercial', 'cadre'].indexOf(state.sm.categorie) + 1;\n      cells[colIdx] && cells[colIdx].classList.add('highlight');\n    }\n  });\n}\n\nfunction renderConges() {\n  const r = computeConges(state.conges);\n  document.getElementById('conges-value').textContent = r.total + ' jours ouvrables';\n  document.getElementById('conges-detail').textContent = r.detail;\n}\n\n\u002F\u002F ─── Pill helpers ─────────────────────────────────────────────────────────\n\nfunction makePillHandler(containerId, stateObj, key, parseFn, renderFn) {\n  const container = document.getElementById(containerId);\n  if (!container) return;\n  container.addEventListener('click', (e) => {\n    const pill = e.target.closest('.pill');\n    if (!pill) return;\n    container.querySelectorAll('.pill').forEach(p => p.classList.remove('selected'));\n    pill.classList.add('selected');\n    stateObj[key] = parseFn ? parseFn(pill.dataset.val) : pill.dataset.val;\n    renderFn();\n  });\n}\n\n\u002F\u002F ─── Range helpers ────────────────────────────────────────────────────────\n\nfunction bindRange(id, displayId, unit, stateObj, key, transformFn, renderFn) {\n  const el = document.getElementById(id);\n  const disp = document.getElementById(displayId);\n  if (!el || !disp) return;\n  el.addEventListener('input', () => {\n    const v = parseFloat(el.value);\n    stateObj[key] = v;\n    disp.textContent = transformFn ? transformFn(v) : v + (unit || '');\n    renderFn();\n  });\n}\n\n\u002F\u002F ─── Init helpers ─────────────────────────────────────────────────────────\n\nfunction setSMHours(h) {\n  state.sm.heures = h;\n  document.getElementById('sm-35h').classList.toggle('active', h === 35);\n  document.getElementById('sm-39h').classList.toggle('active', h === 39);\n  renderSM();\n}\n\nfunction setCongesTP(isPartiel) {\n  state.conges.temps_partiel = isPartiel;\n  document.getElementById('conges-plein').classList.toggle('active', !isPartiel);\n  document.getElementById('conges-partiel').classList.toggle('active', isPartiel);\n  renderConges();\n}\n\n\u002F\u002F ─── Tabs ─────────────────────────────────────────────────────────────────\n\nfunction activate(id) {\n  const tabs = document.querySelectorAll('[data-tab]');\n  const panels = document.querySelectorAll('[data-panel]');\n  const validIds = Array.from(tabs).map(t => t.dataset.tab);\n  if (!validIds.includes(id)) id = validIds[0];\n\n  tabs.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n  panels.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n  if (location.hash !== '#' + id) location.hash = id;\n\n  requestAnimationFrame(() => {\n    window.dispatchEvent(new Event('resize'));\n  });\n}\n\ndocument.querySelectorAll('[data-tab]').forEach(t => {\n  t.addEventListener('click', () => activate(t.dataset.tab));\n});\n\n\u002F\u002F ─── Wire up all inputs ────────────────────────────────────────────────────\n\n\u002F\u002F Préavis pills\nmakePillHandler('preavis-statut', state.preavis, 'statut', null, renderPreavis);\nmakePillHandler('preavis-anciennete', state.preavis, 'anciennete', parseInt, renderPreavis);\nmakePillHandler('preavis-motif', state.preavis, 'motif', null, renderPreavis);\n\n\u002F\u002F Prime ancienneté\nbindRange('pa-salaire', 'pa-salaire-val', null, state.pa, 'salaire',\n  v => new Intl.NumberFormat('fr-FR').format(v) + ' €', renderPA);\nbindRange('pa-anciennete', 'pa-anc-val', ' ans', state.pa, 'anciennete', null, renderPA);\nmakePillHandler('pa-statut', state.pa, 'statut', null, renderPA);\n\n\u002F\u002F Gratification\nbindRange('grat-salaire', 'grat-salaire-val', null, state.grat, 'salaire',\n  v => new Intl.NumberFormat('fr-FR').format(v) + ' €', renderGrat);\nbindRange('grat-mois', 'grat-mois-val', ' mois', state.grat, 'mois', null, renderGrat);\n\n\u002F\u002F Salaire min\ndocument.getElementById('sm-categorie').addEventListener('change', e => {\n  state.sm.categorie = e.target.value;\n  renderSM();\n});\ndocument.getElementById('sm-degre').addEventListener('change', e => {\n  state.sm.degre = parseInt(e.target.value);\n  renderSM();\n});\n\n\u002F\u002F Congés\nbindRange('conges-anc', 'conges-anc-val', ' ans', state.conges, 'anciennete', null, renderConges);\n\n\u002F\u002F ─── ResizeObserver ────────────────────────────────────────────────────────\n\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 ─── Initial render ────────────────────────────────────────────────────────\n\nlucide.createIcons();\n\nconst hashTab = location.hash.slice(1);\nconst validTabs = ['preavis', 'prime-anciennete', 'gratification', 'salaire-min', 'conges'];\nactivate(validTabs.includes(hashTab) ? hashTab : 'preavis');\n\nrenderPreavis();\nrenderPA();\nrenderGrat();\nrenderSM();\nrenderConges();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-entreprises-d-expertises-en-matiere-d-evaluations-07a9c405b0.webp",[]]