[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-travail-des-industries-de-la-serigraphie-et-des-fr":83,"footer-cities-fr":160},[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":134,"tool_html":153,"source":154,"category":155,"audience":156,"publish_mode":157,"hero_image":158,"hero_image_alt":159},"ccn-travail-des-industries-de-la-serigraphie-et-des","CCN Sérigraphie & Impression Numérique — calculateur complet IDCC 614","Calculateur CCN Sérigraphie IDCC 614 | Expert Zoom","Outil interactif couvrant préavis, grille salariale, prime annuelle, heures supplémentaires et congés de la CCN des industries de la sérigraphie et procédés d'impression numérique (IDCC 614).","Ce calculateur couvre les 5 grandes dérogations de la convention collective IDCC 614 (sérigraphie et impression numérique) : durée du préavis par catégorie, grille salariale conventionnelle à 9 niveaux, prime annuelle obligatoire versée en deux fois, majorations spéciales pour heures anormales et dimanches\u002Ffériés, et congés supplémentaires pour ancienneté ≥ 30 ans.",[90,109],{"name":91,"@type":92,"about":93,"author":97,"@context":100,"isPartOf":101,"inLanguage":104,"description":105,"operatingSystem":106,"applicationCategory":107,"isAccessibleForFree":108},"Calculateur CCN Sérigraphie & Impression Numérique — IDCC 614","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective des industries de la sérigraphie et des procédés d'impression numérique","Thing","IDCC 614",{"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 grille salariale, la prime annuelle, les heures supplémentaires et les congés de la convention collective des industries de la sérigraphie et procédés d'impression numérique (IDCC 614, Brochure 3137).","All","FinanceApplication",true,{"@type":110,"@context":100,"mainEntity":111},"FAQPage",[112,118,122,126,130],{"name":113,"@type":114,"acceptedAnswer":115},"Quelle est la durée du préavis dans la convention collective de la sérigraphie (IDCC 614) ?","Question",{"text":116,"@type":117},"Dans la CCN IDCC 614, le préavis est de 1 mois pour les ouvriers et employés ayant moins de 2 ans d'ancienneté, et de 2 mois au-delà de 2 ans. Les cadres et agents de maîtrise bénéficient d'un préavis de 3 mois, quelle que soit leur ancienneté. Pendant le préavis, les salariés sont autorisés à s'absenter 2 heures par jour pour rechercher un emploi.","Answer",{"name":119,"@type":114,"acceptedAnswer":120},"Quels sont les salaires minima de la convention collective sérigraphie IDCC 614 ?",{"text":121,"@type":117},"La grille salariale de la CCN IDCC 614 (Accord du 26 janvier 2023) comprend 9 niveaux hiérarchiques. Les minima vont de 1 747,20 € (Niveau 1) à 3 769,87 € brut\u002Fmois (Niveau 9), tous calculés sur une base de 35 heures hebdomadaires. Ces montants sont supérieurs au SMIC légal.",{"name":123,"@type":114,"acceptedAnswer":124},"La convention collective de la sérigraphie prévoit-elle un 13e mois ou une prime annuelle ?",{"text":125,"@type":117},"Oui. La CCN IDCC 614 impose une prime annuelle obligatoire équivalente à un mois de salaire, versée en deux fois : la moitié au 30 juin et l'autre moitié au 31 décembre. Cette obligation n'existe pas dans le Code du travail.",{"name":127,"@type":114,"acceptedAnswer":128},"Quelles sont les majorations pour heures supplémentaires dans la CCN sérigraphie ?",{"text":129,"@type":117},"En plus du barème légal (25% de la 36e à la 43e heure, 50% au-delà), la CCN prévoit une majoration supplémentaire de 25% pour les heures anormales (hors 7h-20h) et de 100% pour le travail le dimanche ou les jours fériés, cumulables entre elles.",{"name":131,"@type":114,"acceptedAnswer":132},"Combien de jours de congés payés prévoit la convention collective sérigraphie ?",{"text":133,"@type":117},"La CCN IDCC 614 accorde 30 jours ouvrables, soit le minimum légal. Les salariés ayant 30 ans ou plus d'ancienneté ont droit à un congé minimum d'un mois calendaire. Les absences pour maladie non professionnelle sont assimilées à du temps de travail effectif dans la limite de 3 mois.",[135,136,138,140,142,144,147,150],{"a":116,"q":113},{"a":137,"q":119},"La grille salariale de la CCN IDCC 614 (Accord du 26 janvier 2023, applicable au 1er septembre 2023) comprend 9 niveaux hiérarchiques. Les minima vont de 1 747,20 € (Niveau 1) à 3 769,87 € brut\u002Fmois (Niveau 9), tous calculés sur une base de 35 heures hebdomadaires. Ces montants sont supérieurs au SMIC légal.",{"a":139,"q":123},"Oui. La CCN IDCC 614 impose une prime annuelle obligatoire équivalente à un mois de salaire, versée en deux fois : la moitié au 30 juin (calculée sur le salaire de juin) et l'autre moitié au 31 décembre (calculée sur le salaire de décembre). Cette obligation n'existe pas dans le Code du travail.",{"a":141,"q":127},"Les heures supplémentaires de la 36e à la 43e heure sont majorées de 25%, et les heures au-delà de la 43e heure à 50% — identique au barème légal. En plus, la CCN prévoit une majoration supplémentaire de 25% pour les 'heures anormales' travaillées en dehors de la plage 7h-20h, et de 100% pour le travail le dimanche ou les jours fériés. Ces majorations spéciales sont cumulables.",{"a":143,"q":131},"La CCN IDCC 614 accorde 30 jours ouvrables de congés payés, soit le minimum légal (L3141-3). Spécificité : les salariés ayant 30 ans ou plus d'ancienneté ont droit à un congé minimum d'un mois calendaire. De plus, les absences pour maladie non professionnelle sont assimilées à du temps de travail effectif dans la limite de 3 mois par période de référence.",{"a":145,"q":146},"L'indemnité de licenciement prévue dans certaines annexes de la CCN IDCC 614 peut être moins favorable que le minimum légal. En application du principe de faveur, c'est toujours le montant le plus favorable qui s'applique. Le minimum légal (art. L1234-9) est de 1\u002F4 de mois par année pour les 10 premières années, puis 1\u002F3 de mois par année au-delà. Les cadres bénéficient en outre de majorations pour les salariés âgés de 60 ans et plus.","Quelle est l'indemnité de licenciement dans la convention collective sérigraphie IDCC 614 ?",{"a":148,"q":149},"Par arrêté ministériel du 23 janvier 2019, la CCN IDCC 614 (sérigraphie) a été étendue dans le cadre d'une procédure de fusion avec la CCN IDCC 184 (industrie de l'imprimerie). Les dispositions spécifiques à la sérigraphie, notamment la grille salariale et les classifications, ont été maintenues sous forme d'annexes.","La CCN sérigraphie (IDCC 614) a-t-elle fusionné avec une autre convention collective ?",{"a":151,"q":152},"En cas de travail à temps partiel, la prime annuelle de la CCN IDCC 614 est calculée au prorata de la quotité de temps travaillé. Si un salarié est à 80% du temps plein, il percevra 80% de la prime annuelle standard (soit 80% du salaire mensuel équivalent temps plein).","Comment fonctionne le calcul de la prime annuelle en cas de temps partiel dans la CCN sérigraphie ?","\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 Sérigraphie IDCC 614\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-bg: #f0fdf4;\n      --success-border: #bbf7d0;\n      --success-text: #166534;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --info-text: #1e40af;\n      --radius: 0.75rem;\n      --radius-sm: 0.375rem;\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.5;\n    }\n    .tool-root {\n      max-width: 680px;\n      margin: 0 auto;\n      padding: 1.25rem 1rem 2rem;\n    }\n    .header {\n      margin-bottom: 1.25rem;\n    }\n    .header h1 {\n      font-size: 1.125rem;\n      font-weight: 700;\n      color: var(--text);\n      margin-bottom: 0.25rem;\n    }\n    .header-meta {\n      display: flex;\n      align-items: center;\n      gap: 0.5rem;\n      flex-wrap: wrap;\n    }\n    .badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 0.25rem;\n      padding: 0.2rem 0.6rem;\n      border-radius: 999px;\n      font-size: 0.75rem;\n      font-weight: 600;\n      background: var(--accent-light);\n      color: var(--accent);\n      border: 1px solid var(--info-border);\n    }\n    \u002F* Tabs *\u002F\n    .tabs-nav {\n      display: flex;\n      gap: 0.25rem;\n      border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem;\n      overflow-x: auto;\n      scrollbar-width: none;\n    }\n    .tabs-nav::-webkit-scrollbar { display: none; }\n    .tab-btn {\n      display: flex;\n      align-items: center;\n      gap: 0.375rem;\n      padding: 0.625rem 0.875rem;\n      font-size: 0.8125rem;\n      font-weight: 600;\n      color: var(--muted);\n      background: none;\n      border: none;\n      border-bottom: 2px solid transparent;\n      margin-bottom: -2px;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: color 0.15s, border-color 0.15s;\n    }\n    .tab-btn:hover { color: var(--accent); }\n    .tab-btn.active {\n      color: var(--accent);\n      border-bottom-color: var(--accent);\n    }\n    .tab-btn svg { width: 14px; height: 14px; }\n    .panel { display: none; }\n    .panel.active { display: block; }\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: 1rem;\n      color: var(--info-text);\n      font-size: 0.8125rem;\n      line-height: 1.5;\n    }\n    .rule-callout svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 2px; }\n    \u002F* Card *\u002F\n    .card {\n      background: var(--card);\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      padding: 1.25rem;\n      margin-bottom: 1rem;\n    }\n    .card-title {\n      font-size: 0.8125rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      color: var(--muted);\n      margin-bottom: 1rem;\n    }\n    \u002F* Form controls *\u002F\n    .field { margin-bottom: 1rem; }\n    .field:last-child { margin-bottom: 0; }\n    label {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      font-size: 0.875rem;\n      font-weight: 500;\n      margin-bottom: 0.375rem;\n    }\n    label span { font-weight: 400; color: var(--muted); font-size: 0.8125rem; font-variant-numeric: tabular-nums; }\n    input[type=\"range\"] {\n      width: 100%;\n      accent-color: var(--accent);\n      cursor: pointer;\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(--card);\n      color: var(--text);\n      cursor: pointer;\n    }\n    \u002F* Pills *\u002F\n    .pills {\n      display: flex;\n      gap: 0.375rem;\n      flex-wrap: wrap;\n    }\n    .pill {\n      padding: 0.375rem 0.875rem;\n      border: 1.5px solid var(--border);\n      border-radius: 999px;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      cursor: pointer;\n      background: var(--card);\n      color: var(--muted);\n      transition: all 0.1s;\n    }\n    .pill.active, .pill:hover {\n      border-color: var(--accent);\n      color: var(--accent);\n      background: var(--accent-light);\n    }\n    \u002F* Toggle *\u002F\n    .toggle-row {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      font-size: 0.875rem;\n      font-weight: 500;\n    }\n    .toggle {\n      position: relative;\n      width: 40px;\n      height: 22px;\n    }\n    .toggle input { opacity: 0; width: 0; height: 0; }\n    .toggle-slider {\n      position: absolute;\n      inset: 0;\n      background: var(--border);\n      border-radius: 999px;\n      cursor: pointer;\n      transition: background 0.2s;\n    }\n    .toggle-slider::after {\n      content: '';\n      position: absolute;\n      width: 16px;\n      height: 16px;\n      left: 3px;\n      top: 3px;\n      background: white;\n      border-radius: 50%;\n      transition: transform 0.2s;\n    }\n    .toggle input:checked + .toggle-slider { background: var(--accent); }\n    .toggle input:checked + .toggle-slider::after { transform: translateX(18px); }\n    \u002F* Result card *\u002F\n    .result-card {\n      background: var(--success-bg);\n      border: 1.5px solid var(--success-border);\n      border-radius: var(--radius);\n      padding: 1.25rem;\n      margin-bottom: 1rem;\n    }\n    .result-label {\n      font-size: 0.75rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      color: #14532d;\n      margin-bottom: 0.25rem;\n    }\n    .result-value {\n      font-size: 1.75rem;\n      font-weight: 700;\n      color: var(--success-text);\n      font-variant-numeric: tabular-nums;\n      line-height: 1.2;\n    }\n    .result-detail {\n      font-size: 0.8125rem;\n      color: var(--success-text);\n      margin-top: 0.375rem;\n      opacity: 0.85;\n    }\n    \u002F* Breakdown list *\u002F\n    .breakdown {\n      list-style: none;\n      margin-top: 0.5rem;\n    }\n    .breakdown li {\n      display: flex;\n      justify-content: space-between;\n      font-size: 0.8125rem;\n      padding: 0.25rem 0;\n      border-bottom: 1px solid var(--success-border);\n      color: var(--success-text);\n    }\n    .breakdown li:last-child { border-bottom: none; }\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: 0.5rem;\n      line-height: 1.6;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    \u002F* Salary grid table *\u002F\n    .grid-table {\n      width: 100%;\n      border-collapse: collapse;\n      font-size: 0.8125rem;\n    }\n    .grid-table th {\n      text-align: left;\n      padding: 0.4rem 0.5rem;\n      font-weight: 600;\n      background: var(--bg);\n      border-bottom: 2px solid var(--border);\n      color: var(--muted);\n      font-size: 0.75rem;\n      text-transform: uppercase;\n    }\n    .grid-table td {\n      padding: 0.4rem 0.5rem;\n      border-bottom: 1px solid var(--border);\n    }\n    .grid-table tr.highlight td { background: var(--accent-light); font-weight: 600; color: var(--accent); }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 614 — deviations\n     preavis: L1234-1 → Durations spécifiques par catégorie (1 mois \u003C2 ans, 2 mois ≥2 ans ouvriers\u002Femployés; 3 mois cadres\u002FAM)\n     salaire-min: SMIC → Grille conventionnelle 9 niveaux (€1 747,20 à €3 769,87 brut\u002Fmois, base 35h, avenant 2023)\n     prime-annuelle: Aucune obligation légale → Prime annuelle obligatoire versée en 2 fois (30 juin + 31 décembre)\n     heures-supp: L3121-36 → Majoration supplémentaire +25% heures anormales (hors 7h-20h), +100% dimanches\u002Fjours fériés (cumulables)\n     conges: L3141-3 (30 j ouvrables) → Congé supplémentaire ancienneté ≥30 ans (1 mois calendaire minimum) -->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"header\">\n    \u003Ch1>CCN Sérigraphie &amp; Impression Numérique\u003C\u002Fh1>\n    \u003Cdiv class=\"header-meta\">\n      \u003Cspan class=\"badge\">\u003Ci data-lucide=\"bookmark\">\u003C\u002Fi>IDCC 614\u003C\u002Fspan>\n      \u003Cspan class=\"badge\">\u003Ci data-lucide=\"layers\">\u003C\u002Fi>Brochure 3137\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cnav class=\"tabs-nav\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">\n      \u003Ci data-lucide=\"clock\">\u003C\u002Fi>Préavis\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\">\n      \u003Ci data-lucide=\"banknote\">\u003C\u002Fi>Grille salariale\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-annuelle\" role=\"tab\">\n      \u003Ci data-lucide=\"gift\">\u003C\u002Fi>Prime annuelle\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"heures-supp\" role=\"tab\">\n      \u003Ci data-lucide=\"timer\">\u003C\u002Fi>Heures supp.\n    \u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"conges\" role=\"tab\">\n      \u003Ci data-lucide=\"sun\">\u003C\u002Fi>Congés\n    \u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- PRÉAVIS -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>La CCN IDCC 614 précise les durées de préavis par catégorie et ancienneté.\u003C\u002Fstrong> Les ouvriers\u002Femployés bénéficient de 1 mois (&lt;2 ans) ou 2 mois (≥2 ans). Les cadres\u002FAM : 3 mois. De plus, 2 heures par jour sont accordées pour recherche d'emploi pendant le préavis (art. 121 CCN + Annexe IV).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Vos informations\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Statut\u003C\u002Flabel>\n        \u003Cdiv class=\"pills\" id=\"p-statut\">\n          \u003Cbutton class=\"pill active\" data-val=\"ouvrier\">Ouvrier \u002F Employé\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"am\">Agent de maîtrise\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"p-anc-field\">\n        \u003Clabel>Ancienneté \u003Cspan id=\"p-anc-val\">3 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"p-anciennete\" min=\"0\" max=\"40\" value=\"3\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cp class=\"result-label\">Durée de préavis\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"p-result\">2 mois\u003C\u002Fp>\n      \u003Cp class=\"result-detail\" id=\"p-detail\">Autorisation d'absence : 2 h\u002Fjour pour recherche d'emploi\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Tableau récapitulatif\u003C\u002Fp>\n      \u003Ctable class=\"grid-table\">\n        \u003Cthead>\n          \u003Ctr>\u003Cth>Catégorie\u003C\u002Fth>\u003Cth>Ancienneté\u003C\u002Fth>\u003Cth>Durée préavis\u003C\u002Fth>\u003C\u002Ftr>\n        \u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr>\u003Ctd>Ouvrier \u002F Employé\u003C\u002Ftd>\u003Ctd>&lt; 2 ans\u003C\u002Ftd>\u003Ctd>1 mois\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Ouvrier \u002F Employé\u003C\u002Ftd>\u003Ctd>≥ 2 ans\u003C\u002Ftd>\u003Ctd>2 mois\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Agent de maîtrise\u003C\u002Ftd>\u003Ctd>Toute ancienneté\u003C\u002Ftd>\u003Ctd>3 mois\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Cadre\u003C\u002Ftd>\u003Ctd>Toute ancienneté\u003C\u002Ftd>\u003Ctd>3 mois\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- GRILLE SALARIALE -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>La CCN IDCC 614 impose une grille de 9 niveaux de salaires minima conventionnels.\u003C\u002Fstrong> Au 1er septembre 2023, la fourchette va de 1 747,20 € à 3 769,87 € brut\u002Fmois pour 35h hebdomadaires — supérieur au SMIC légal (Accord salarial du 26 janvier 2023).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Votre poste\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Niveau hiérarchique\u003C\u002Flabel>\n        \u003Cselect id=\"s-niveau\">\n          \u003Coption value=\"1\">Niveau 1 — Ouvrier débutant \u002F Employé administratif débutant\u003C\u002Foption>\n          \u003Coption value=\"2\" selected>Niveau 2 — Ouvrier qualifié \u002F Employé qualifié\u003C\u002Foption>\n          \u003Coption value=\"3\">Niveau 3 — Ouvrier très qualifié \u002F Employé spécialisé\u003C\u002Foption>\n          \u003Coption value=\"4\">Niveau 4 — Ouvrier hautement qualifié \u002F Agent technique\u003C\u002Foption>\n          \u003Coption value=\"5\">Niveau 5 — Technicien \u002F Agent de maîtrise\u003C\u002Foption>\n          \u003Coption value=\"6\">Niveau 6 — Technicien supérieur \u002F AM confirmé\u003C\u002Foption>\n          \u003Coption value=\"7\">Niveau 7 — Cadre débutant \u002F Technicien expert\u003C\u002Foption>\n          \u003Coption value=\"8\">Niveau 8 — Cadre confirmé\u003C\u002Foption>\n          \u003Coption value=\"9\">Niveau 9 — Cadre supérieur \u002F Dirigeant\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Heures hebdomadaires \u003Cspan id=\"s-h-val\">35 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"s-heures\" min=\"24\" max=\"44\" value=\"35\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cp class=\"result-label\">Salaire minimum conventionnel\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"s-result\">1 835,31 €\u003C\u002Fp>\n      \u003Cp class=\"result-detail\" id=\"s-detail\">Base 35h · Niveau 2 · Accord du 26 jan. 2023\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Grille complète (base 35h — sept. 2023)\u003C\u002Fp>\n      \u003Ctable class=\"grid-table\" id=\"s-full-table\">\n        \u003Cthead>\n          \u003Ctr>\u003Cth>Niveau\u003C\u002Fth>\u003Cth>Salaire brut mensuel\u003C\u002Fth>\u003C\u002Ftr>\n        \u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr>\u003Ctd>Niveau 1\u003C\u002Ftd>\u003Ctd>1 747,20 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr class=\"highlight\">\u003Ctd>Niveau 2\u003C\u002Ftd>\u003Ctd>1 835,31 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 3\u003C\u002Ftd>\u003Ctd>1 968,47 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 4\u003C\u002Ftd>\u003Ctd>2 135,74 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 5\u003C\u002Ftd>\u003Ctd>2 380,44 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 6\u003C\u002Ftd>\u003Ctd>2 639,33 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 7\u003C\u002Ftd>\u003Ctd>2 939,49 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 8\u003C\u002Ftd>\u003Ctd>3 298,00 €\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Niveau 9\u003C\u002Ftd>\u003Ctd>3 769,87 €\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- PRIME ANNUELLE -->\n  \u003Cdiv class=\"panel\" data-panel=\"prime-annuelle\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>La CCN IDCC 614 impose une prime annuelle versée en deux fois.\u003C\u002Fstrong> La moitié du salaire normal est versée le 30 juin, l'autre moitié le 31 décembre — équivalent à un 13e mois. Cette obligation n'existe pas dans le Code du travail.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Votre situation\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire brut mensuel \u003Cspan id=\"pr-sal-val\">2 000 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pr-salaire\" min=\"1200\" max=\"6000\" value=\"2000\" step=\"50\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté \u003Cspan id=\"pr-anc-val\">3 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pr-anciennete\" min=\"0\" max=\"40\" value=\"3\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"toggle-row\">\n          \u003Cspan>Temps partiel ?\u003C\u002Fspan>\n          \u003Clabel class=\"toggle\">\n            \u003Cinput type=\"checkbox\" id=\"pr-partiel\">\n            \u003Cspan class=\"toggle-slider\">\u003C\u002Fspan>\n          \u003C\u002Flabel>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\" id=\"pr-partiel-field\" style=\"display:none\">\n        \u003Clabel>Quotité temps partiel \u003Cspan id=\"pr-quot-val\">80%\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pr-quotite\" min=\"20\" max=\"99\" value=\"80\" step=\"1\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cp class=\"result-label\">Prime annuelle estimée\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"pr-result\">2 000,00 €\u003C\u002Fp>\n      \u003Cul class=\"breakdown\" id=\"pr-breakdown\">\n        \u003Cli>\u003Cspan>Versement juin (30 juin)\u003C\u002Fspan>\u003Cspan>1 000,00 €\u003C\u002Fspan>\u003C\u002Fli>\n        \u003Cli>\u003Cspan>Versement décembre (31 déc.)\u003C\u002Fspan>\u003Cspan>1 000,00 €\u003C\u002Fspan>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- HEURES SUPPLÉMENTAIRES -->\n  \u003Cdiv class=\"panel\" data-panel=\"heures-supp\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>Au-delà du taux légal (25%\u002F50%), la CCN IDCC 614 prévoit des majorations supplémentaires.\u003C\u002Fstrong> Les heures travaillées en dehors de la plage normale (7h-20h) sont majorées de +25% supplémentaires. Les dimanches et jours fériés sont majorés à 100%. Ces majorations sont cumulables.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Votre situation\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire horaire brut \u003Cspan id=\"hs-sal-val\">14,00 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"hs-salaire\" min=\"10\" max=\"50\" value=\"14\" step=\"0.5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Heures supp. dans la tranche 36-43h \u003Cspan id=\"hs-h1-val\">4 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"hs-h1\" min=\"0\" max=\"8\" value=\"4\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Heures supp. au-delà de la 43e heure \u003Cspan id=\"hs-h2-val\">0 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"hs-h2\" min=\"0\" max=\"10\" value=\"0\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Heures anormales (hors 7h-20h) \u003Cspan id=\"hs-ha-val\">0 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"hs-ha\" min=\"0\" max=\"10\" value=\"0\" step=\"1\">\n        \u003Csmall style=\"color:var(--muted);font-size:0.75rem;margin-top:0.25rem;display:block\">Ces heures sont déjà comptées dans les tranches ci-dessus — la majoration +25% s'ajoute.\u003C\u002Fsmall>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Heures dimanche \u002F jours fériés \u003Cspan id=\"hs-hf-val\">0 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"hs-hf\" min=\"0\" max=\"10\" value=\"0\" step=\"1\">\n        \u003Csmall style=\"color:var(--muted);font-size:0.75rem;margin-top:0.25rem;display:block\">Majorées à 100% (cumulables avec la majoration anormales).\u003C\u002Fsmall>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cp class=\"result-label\">Coût total heures supplémentaires\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"hs-result\">56,00 €\u003C\u002Fp>\n      \u003Cul class=\"breakdown\" id=\"hs-breakdown\">\n        \u003Cli>\u003Cspan>Heures 36-43h (+25%)\u003C\u002Fspan>\u003Cspan>70,00 €\u003C\u002Fspan>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- CONGÉS -->\n  \u003Cdiv class=\"panel\" data-panel=\"conges\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>La CCN IDCC 614 accorde le minimum légal de 30 jours ouvrables.\u003C\u002Fstrong> Spécificité : les salariés ayant 30 ans d'ancienneté ou plus bénéficient d'un congé minimum d'1 mois calendaire. De plus, les absences pour maladie (hors AT) sont prises en compte comme temps de travail effectif dans la limite de 3 mois par période de référence.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Votre situation\u003C\u002Fp>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté \u003Cspan id=\"c-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"c-anciennete\" min=\"0\" max=\"40\" value=\"5\" step=\"1\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"toggle-row\">\n          \u003Cspan>Temps partiel ?\u003C\u002Fspan>\n          \u003Clabel class=\"toggle\">\n            \u003Cinput type=\"checkbox\" id=\"c-partiel\">\n            \u003Cspan class=\"toggle-slider\">\u003C\u002Fspan>\n          \u003C\u002Flabel>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cp class=\"result-label\">Congés payés annuels\u003C\u002Fp>\n      \u003Cp class=\"result-value\" id=\"c-result\">30 jours ouvrables\u003C\u002Fp>\n      \u003Cp class=\"result-detail\" id=\"c-detail\">Équivalent à 5 semaines de congés payés\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cp class=\"card-title\">Récapitulatif des règles CCN\u003C\u002Fp>\n      \u003Ctable class=\"grid-table\">\n        \u003Cthead>\u003Ctr>\u003Cth>Condition\u003C\u002Fth>\u003Cth>Congés\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n        \u003Ctbody>\n          \u003Ctr>\u003Ctd>Droit commun (tous salariés)\u003C\u002Ftd>\u003Ctd>30 jours ouvrables\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Ancienneté ≥ 30 ans\u003C\u002Ftd>\u003Ctd>1 mois calendaire minimum\u003C\u002Ftd>\u003C\u002Ftr>\n          \u003Ctr>\u003Ctd>Absences maladie (hors AT, ≤3 mois)\u003C\u002Ftd>\u003Ctd>Comptabilisées comme temps travail\u003C\u002Ftd>\u003C\u002Ftr>\n        \u003C\u002Ftbody>\n      \u003C\u002Ftable>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cp class=\"disclaimer\">\n    \u003Ci data-lucide=\"shield-check\" style=\"width:12px;height:12px;vertical-align:middle;\">\u003C\u002Fi>\n    Calcul indicatif basé sur la CCN IDCC 614 (Industries de la sérigraphie et procédés d'impression numérique, Brochure 3137).\n    Sources : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635648\" target=\"_blank\" rel=\"noopener\">Légifrance KALICONT000005635648\u003C\u002Fa> · Accord salarial 26 jan. 2023 · Avenant Annexe IV.\n    Pour toute validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── Data ────────────────────────────────────────────────────────────────────\nconst SALARY_GRID = [\n  { niveau: 1, min35h: 1747.20 },\n  { niveau: 2, min35h: 1835.31 },\n  { niveau: 3, min35h: 1968.47 },\n  { niveau: 4, min35h: 2135.74 },\n  { niveau: 5, min35h: 2380.44 },\n  { niveau: 6, min35h: 2639.33 },\n  { niveau: 7, min35h: 2939.49 },\n  { niveau: 8, min35h: 3298.00 },\n  { niveau: 9, min35h: 3769.87 },\n];\n\nconst fmt = (v) => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' }).format(v);\nconst fmtN = (v) => new Intl.NumberFormat('fr-FR').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 isActive = p.dataset.panel === id;\n    p.classList.toggle('active', isActive);\n    p.style.display = isActive ? 'block' : 'none';\n  });\n  if (location.hash !== '#' + id) location.hash = id;\n  requestAnimationFrame(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n}\n\ntabs.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\n\u002F\u002F ─── PRÉAVIS ─────────────────────────────────────────────────────────────────\nlet pState = { statut: 'ouvrier', anciennete: 3 };\n\nfunction computePreavis(s) {\n  if (s.statut === 'ouvrier') {\n    return s.anciennete \u003C 2 ? { dur: '1 mois', detail: 'Ouvrier\u002FEmployé — ancienneté \u003C 2 ans' }\n                            : { dur: '2 mois', detail: 'Ouvrier\u002FEmployé — ancienneté ≥ 2 ans' };\n  }\n  return { dur: '3 mois', detail: s.statut === 'cadre' ? 'Cadre' : 'Agent de maîtrise' };\n}\n\nfunction renderPreavis() {\n  const r = computePreavis(pState);\n  document.getElementById('p-result').textContent = r.dur;\n  document.getElementById('p-detail').textContent = r.detail + ' · Absence autorisée : 2 h\u002Fjour pour recherche d\\'emploi';\n}\n\ndocument.querySelectorAll('#p-statut .pill').forEach(btn => {\n  btn.addEventListener('click', () => {\n    document.querySelectorAll('#p-statut .pill').forEach(b => b.classList.remove('active'));\n    btn.classList.add('active');\n    pState.statut = btn.dataset.val;\n    const showAnc = pState.statut === 'ouvrier';\n    document.getElementById('p-anc-field').style.display = showAnc ? '' : 'none';\n    renderPreavis();\n  });\n});\n\ndocument.getElementById('p-anciennete').addEventListener('input', e => {\n  pState.anciennete = +e.target.value;\n  document.getElementById('p-anc-val').textContent = pState.anciennete + ' an' + (pState.anciennete > 1 ? 's' : '');\n  renderPreavis();\n});\n\n\u002F\u002F ─── SALAIRE MIN ─────────────────────────────────────────────────────────────\nlet sState = { niveau: 2, heures: 35 };\n\nfunction computeSalaire(s) {\n  const row = SALARY_GRID[s.niveau - 1];\n  const base = row.min35h;\n  const adjusted = (s.heures \u002F 35) * base;\n  return { montant: adjusted, label: `Base ${s.heures}h · Niveau ${s.niveau} · Accord du 26 jan. 2023` };\n}\n\nfunction renderSalaire() {\n  const r = computeSalaire(sState);\n  document.getElementById('s-result').textContent = fmt(r.montant);\n  document.getElementById('s-detail').textContent = r.label;\n  \u002F\u002F Highlight selected row\n  const rows = document.querySelectorAll('#s-full-table tbody tr');\n  rows.forEach((row, i) => row.classList.toggle('highlight', i === sState.niveau - 1));\n}\n\ndocument.getElementById('s-niveau').addEventListener('change', e => {\n  sState.niveau = +e.target.value;\n  renderSalaire();\n});\n\ndocument.getElementById('s-heures').addEventListener('input', e => {\n  sState.heures = +e.target.value;\n  document.getElementById('s-h-val').textContent = sState.heures + ' h';\n  renderSalaire();\n});\n\n\u002F\u002F ─── PRIME ANNUELLE ──────────────────────────────────────────────────────────\nlet prState = { salaire: 2000, anciennete: 3, partiel: false, quotite: 80 };\n\nfunction computePrime(s) {\n  const base = s.salaire * (s.partiel ? s.quotite \u002F 100 : 1);\n  const total = base; \u002F\u002F 1 mois normal (0.5 juin + 0.5 déc)\n  const juin = total \u002F 2;\n  const dec = total \u002F 2;\n  return { total, juin, dec };\n}\n\nfunction renderPrime() {\n  const r = computePrime(prState);\n  document.getElementById('pr-result').textContent = fmt(r.total);\n  const bl = document.getElementById('pr-breakdown');\n  bl.innerHTML = `\n    \u003Cli>\u003Cspan>Versement juin (30 juin)\u003C\u002Fspan>\u003Cspan>${fmt(r.juin)}\u003C\u002Fspan>\u003C\u002Fli>\n    \u003Cli>\u003Cspan>Versement décembre (31 déc.)\u003C\u002Fspan>\u003Cspan>${fmt(r.dec)}\u003C\u002Fspan>\u003C\u002Fli>\n  `;\n}\n\ndocument.getElementById('pr-salaire').addEventListener('input', e => {\n  prState.salaire = +e.target.value;\n  document.getElementById('pr-sal-val').textContent = fmt(prState.salaire);\n  renderPrime();\n});\n\ndocument.getElementById('pr-anciennete').addEventListener('input', e => {\n  prState.anciennete = +e.target.value;\n  document.getElementById('pr-anc-val').textContent = prState.anciennete + ' an' + (prState.anciennete > 1 ? 's' : '');\n  renderPrime();\n});\n\ndocument.getElementById('pr-partiel').addEventListener('change', e => {\n  prState.partiel = e.target.checked;\n  document.getElementById('pr-partiel-field').style.display = prState.partiel ? '' : 'none';\n  renderPrime();\n});\n\ndocument.getElementById('pr-quotite').addEventListener('input', e => {\n  prState.quotite = +e.target.value;\n  document.getElementById('pr-quot-val').textContent = prState.quotite + '%';\n  renderPrime();\n});\n\n\u002F\u002F ─── HEURES SUPP ─────────────────────────────────────────────────────────────\nlet hsState = { salaire: 14, h1: 4, h2: 0, ha: 0, hf: 0 };\n\nfunction computeHsup(s) {\n  \u002F\u002F h1 = heures 36-43h → +25% ; h2 = au-delà 43h → +50%\n  \u002F\u002F ha = heures anormales (hors 7h-20h) → +25% supplémentaire (cumulable)\n  \u002F\u002F hf = heures dim\u002Ffériés → +100% (cumulable avec ha)\n  const base = s.salaire;\n  const mont1 = s.h1 * base * 1.25;\n  const mont2 = s.h2 * base * 1.50;\n  const montHa = s.ha * base * 0.25; \u002F\u002F majoration supplémentaire\n  const montHf = s.hf * base * 1.00; \u002F\u002F 100% = 2× base → montant extra = 1× base\n  const total = mont1 + mont2 + montHa + montHf;\n\n  const items = [];\n  if (s.h1 > 0) items.push({ label: `Heures 36-43h (${s.h1}h × ${fmt(base)} × 1,25)`, val: mont1 });\n  if (s.h2 > 0) items.push({ label: `Heures ≥44h (${s.h2}h × ${fmt(base)} × 1,50)`, val: mont2 });\n  if (s.ha > 0) items.push({ label: `Majoration heures anormales (${s.ha}h × ${fmt(base)} × 0,25)`, val: montHa });\n  if (s.hf > 0) items.push({ label: `Heures dim.\u002Ffériés (${s.hf}h × ${fmt(base)} × 1,00 supp.)`, val: montHf });\n  return { total, items };\n}\n\nfunction renderHsup() {\n  const r = computeHsup(hsState);\n  document.getElementById('hs-result').textContent = fmt(r.total);\n  const bl = document.getElementById('hs-breakdown');\n  bl.innerHTML = r.items.map(i => `\u003Cli>\u003Cspan>${i.label}\u003C\u002Fspan>\u003Cspan>${fmt(i.val)}\u003C\u002Fspan>\u003C\u002Fli>`).join('') ||\n    '\u003Cli>\u003Cspan>Aucune heure supplémentaire\u003C\u002Fspan>\u003Cspan>0,00 €\u003C\u002Fspan>\u003C\u002Fli>';\n}\n\ndocument.getElementById('hs-salaire').addEventListener('input', e => {\n  hsState.salaire = +e.target.value;\n  document.getElementById('hs-sal-val').textContent = fmt(hsState.salaire);\n  renderHsup();\n});\n['h1','h2','ha','hf'].forEach(k => {\n  const el = document.getElementById('hs-' + k);\n  const lbl = document.getElementById('hs-' + k + '-val');\n  el.addEventListener('input', e => {\n    hsState[k] = +e.target.value;\n    lbl.textContent = hsState[k] + ' h';\n    renderHsup();\n  });\n});\n\n\u002F\u002F ─── CONGÉS ──────────────────────────────────────────────────────────────────\nlet cState = { anciennete: 5, partiel: false };\n\nfunction computeConges(s) {\n  const base = 30;\n  const bonus = s.anciennete >= 30 ? '+ droit à 1 mois calendaire minimum (ancienneté ≥ 30 ans)' : '';\n  return { jours: base, detail: bonus };\n}\n\nfunction renderConges() {\n  const r = computeConges(cState);\n  document.getElementById('c-result').textContent = r.jours + ' jours ouvrables';\n  document.getElementById('c-detail').textContent = r.detail || 'Équivalent à 5 semaines de congés payés';\n}\n\ndocument.getElementById('c-anciennete').addEventListener('input', e => {\n  cState.anciennete = +e.target.value;\n  document.getElementById('c-anc-val').textContent = cState.anciennete + ' an' + (cState.anciennete > 1 ? 's' : '');\n  renderConges();\n});\n\ndocument.getElementById('c-partiel').addEventListener('change', e => {\n  cState.partiel = e.target.checked;\n  renderConges();\n});\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 ─── Init ────────────────────────────────────────────────────────────────────\ndocument.addEventListener('DOMContentLoaded', () => {\n  lucide.createIcons();\n  \u002F\u002F Initial renders\n  renderPreavis();\n  renderSalaire();\n  renderPrime();\n  renderHsup();\n  renderConges();\n  \u002F\u002F Activate initial tab\n  const hashTab = location.hash.slice(1);\n  const validTabs = Array.from(tabs).map(t => t.dataset.tab);\n  const initTab = validTabs.includes(hashTab) ? hashTab : validTabs[0];\n  activate(initTab);\n});\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-travail-des-industries-de-la-serigraphie-et-des-900f5f8751.webp","CCN sérigraphie et impression numérique — calculateur complet IDCC 614",[]]