[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-ccn-du-personnel-de-la-reprographie-fr":83,"footer-cities-fr":140},[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":134,"source":135,"category":136,"audience":137,"publish_mode":138,"hero_image":139,"hero_image_alt":85},"ccn-du-personnel-de-la-reprographie","CCN du personnel de la reprographie — calculateur complet","Calculateur CCN reprographie IDCC 706 | Expert Zoom","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale, la prime annuelle et les heures supplémentaires de la CCN du personnel de la reprographie (IDCC 706).","Ce calculateur couvre les 5 déviations principales de la convention collective du personnel de la reprographie (IDCC 706) : indemnité de licenciement par catégorie, durée du préavis, grille salariale minimale 2023, prime annuelle obligatoire (1\u002F12 du salaire en juin et décembre), et majorations heures supplémentaires (41e–48e h : +25 %, ≥49e h : +50 %).",[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 du personnel de la reprographie — IDCC 706","WebApplication",{"name":94,"@type":95,"identifier":96},"Convention collective du personnel de la reprographie","Thing","IDCC 706",{"name":98,"@type":99},"Expert-Zoom","Organization","https:\u002F\u002Fschema.org",{"url":102,"@type":103},"\u002Ffr\u002Fmagazine\u002Fjuridique\u002Fles-conventions-collectives-en-france","Article","fr","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale, la prime annuelle et les heures supplémentaires de la convention collective du personnel de la reprographie (IDCC 706).","All","FinanceApplication",true,[110,113,116,119,122,125,128,131],{"a":111,"q":112},"Dans la CCN reprographie (IDCC 706), l'indemnité de licenciement varie selon la catégorie professionnelle. Pour les ouvriers et employés : 1\u002F10 de mois de salaire par année d'ancienneté à partir de 2 ans, puis 1\u002F5 de mois au-delà de 3 ans (plafonné à 3 mois). Pour les cadres, un barème progressif s'applique (1 mois à 2 ans d'ancienneté, jusqu'à 6 mois). Si le barème légal (L1234-9 : 1\u002F4 mois ≤ 10 ans + 1\u002F3 mois > 10 ans) est plus favorable, c'est lui qui s'applique.","Comment calculer l'indemnité de licenciement dans la convention collective de la reprographie ?",{"a":114,"q":115},"La durée du préavis dans la convention collective reprographie dépend du statut et de l'ancienneté. Pour les ouvriers\u002Femployés : 1 semaine (\u003C 6 mois), 1 mois (6 mois à 2 ans), 2 mois (≥ 2 ans). Pour les agents de maîtrise et cadres : en cas de licenciement, 2 mois minimum + 1\u002F4 de mois par année au-delà de 2 ans (max 3 mois) ; en cas de démission, 3 mois (sauf accord de réduction mutuelle).","Quelle est la durée du préavis dans la CCN reprographie IDCC 706 ?",{"a":117,"q":118},"La grille salariale de la CCN reprographie IDCC 706 (avenant en vigueur depuis décembre 2023) fixe des minima par catégorie : ouvriers de 1 768 € à 1 845 €, employés de 1 783 € à 1 910 €, agents de maîtrise de 2 000 € à 2 205 €, cadres de 2 280 € à 3 560 € bruts mensuels pour 151,67 h\u002Fmois. Ces montants sont supérieurs au SMIC légal.","Quelle est la grille des salaires minimaux de la convention collective reprographie en 2026 ?",{"a":120,"q":121},"Oui. La convention collective reprographie prévoit une prime annuelle obligatoire équivalente à 1\u002F12 du salaire annuel brut, versée en deux fois : une moitié en juin et l'autre en décembre. Cette prime est proratisée selon le temps de présence effectif sur l'année de référence.","Y a-t-il un 13e mois ou une prime annuelle dans la CCN reprographie ?",{"a":123,"q":124},"La CCN reprographie (IDCC 706) prévoit des majorations spécifiques : +25 % pour les heures travaillées de la 41e à la 48e heure de la semaine, et +50 % à partir de la 49e heure. De plus, toute heure effectuée au-delà de 10 heures par jour donne lieu à une majoration supplémentaire de +25 %.","Quelles sont les majorations pour heures supplémentaires dans la CCN reprographie ?",{"a":126,"q":127},"La CCN reprographie accorde 24 jours ouvrés de congés payés par an en règle générale, soit un droit aligné ou comparable au légal (30 jours ouvrables). Des dispositions améliorées existent pour les salariés à forte ancienneté (30 ans de présence pour les ouvriers\u002Femployés ; 2 ans pour les cadres), qui bénéficient d'un mois de congé d'une date à l'autre.","Les congés payés sont-ils plus favorables dans la CCN reprographie ?",{"a":129,"q":130},"Oui, par arrêté du 9 avril 2019, la CCN reprographie (IDCC 706) a été rattachée à la convention collective des entreprises de services à la personne et du numérique (IDCC 1539). Une période transitoire permettait aux entreprises de conserver les dispositions de l'IDCC 706 pendant 5 ans. En 2026, vérifiez l'accord applicable à votre entreprise.","La convention collective reprographie a-t-elle fusionné avec une autre CCN ?",{"a":132,"q":133},"La CCN reprographie prévoit une période d'essai d'une semaine pour les ouvriers et employés. Durant cette période, la rupture peut intervenir sans préavis. Pour les cadres et agents de maîtrise, les durées légales habituelles s'appliquent, éventuellement précisées par le contrat de travail.","Quelle est la période d'essai dans la convention collective reprographie ?","\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 Reprographie — IDCC 706\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    body {\n      font-family: system-ui, -apple-system, sans-serif;\n      background: #fafaf9;\n      color: #1c1917;\n      font-size: 15px;\n      line-height: 1.5;\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: #1c1917;\n    }\n    .tool-header .idcc-badge {\n      display: inline-block;\n      background: #eff6ff;\n      color: #1d4ed8;\n      border: 1px solid #bfdbfe;\n      border-radius: 999px;\n      padding: 0.15rem 0.65rem;\n      font-size: 0.75rem;\n      font-weight: 600;\n      margin-top: 0.35rem;\n    }\n    \u002F* Tabs *\u002F\n    .tab-nav {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 0.25rem;\n      border-bottom: 2px solid #e7e5e4;\n      margin-bottom: 1.25rem;\n    }\n    .tab-btn {\n      background: none;\n      border: none;\n      padding: 0.5rem 0.85rem;\n      font-size: 0.82rem;\n      font-weight: 600;\n      color: #78716c;\n      cursor: pointer;\n      border-bottom: 2px solid transparent;\n      margin-bottom: -2px;\n      border-radius: 0.25rem 0.25rem 0 0;\n      transition: color 0.15s;\n      white-space: nowrap;\n    }\n    .tab-btn:hover { color: #1d4ed8; }\n    .tab-btn.active {\n      color: #1d4ed8;\n      border-bottom-color: #2563eb;\n      background: #eff6ff;\n    }\n    \u002F* Panel *\u002F\n    .panel { display: none; }\n    .panel.active { display: block; }\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex;\n      gap: 0.6rem;\n      align-items: flex-start;\n      background: #eff6ff;\n      border: 1px solid #bfdbfe;\n      border-radius: 0.75rem;\n      padding: 0.75rem 1rem;\n      margin-bottom: 1.1rem;\n      color: #1e40af;\n      font-size: 0.83rem;\n    }\n    .rule-callout i { flex-shrink: 0; margin-top: 2px; }\n    \u002F* Form controls *\u002F\n    .field { margin-bottom: 1rem; }\n    .field label {\n      display: flex;\n      justify-content: space-between;\n      font-size: 0.82rem;\n      font-weight: 600;\n      color: #44403c;\n      margin-bottom: 0.3rem;\n    }\n    .field label span { font-weight: 400; color: #78716c; font-variant-numeric: tabular-nums; }\n    input[type=\"range\"] {\n      width: 100%;\n      accent-color: #2563eb;\n      cursor: pointer;\n    }\n    select, input[type=\"number\"] {\n      width: 100%;\n      padding: 0.45rem 0.65rem;\n      border: 1px solid #d6d3d1;\n      border-radius: 0.5rem;\n      font-size: 0.85rem;\n      background: #fff;\n      color: #1c1917;\n      appearance: auto;\n    }\n    .pills {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 0.4rem;\n      margin-top: 0.15rem;\n    }\n    .pill {\n      padding: 0.3rem 0.75rem;\n      border-radius: 999px;\n      border: 1.5px solid #d6d3d1;\n      font-size: 0.8rem;\n      cursor: pointer;\n      background: #fff;\n      color: #44403c;\n      transition: all 0.12s;\n    }\n    .pill.active {\n      background: #2563eb;\n      border-color: #2563eb;\n      color: #fff;\n    }\n    \u002F* Result card *\u002F\n    .result-card {\n      background: #fff;\n      border: 1.5px solid #d6d3d1;\n      border-radius: 0.75rem;\n      padding: 1rem 1.25rem;\n      margin-top: 1.1rem;\n    }\n    .result-card .result-label {\n      font-size: 0.78rem;\n      color: #78716c;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n      margin-bottom: 0.35rem;\n    }\n    .result-card .result-value {\n      font-size: 1.6rem;\n      font-weight: 700;\n      color: #1d4ed8;\n      font-variant-numeric: tabular-nums;\n    }\n    .result-card .result-detail {\n      font-size: 0.78rem;\n      color: #78716c;\n      margin-top: 0.35rem;\n    }\n    \u002F* Salary grid table *\u002F\n    .salary-table {\n      width: 100%;\n      border-collapse: collapse;\n      font-size: 0.82rem;\n      margin-top: 0.75rem;\n    }\n    .salary-table th {\n      background: #f5f5f4;\n      padding: 0.4rem 0.6rem;\n      text-align: left;\n      font-weight: 600;\n      border: 1px solid #e7e5e4;\n      color: #44403c;\n    }\n    .salary-table td {\n      padding: 0.4rem 0.6rem;\n      border: 1px solid #e7e5e4;\n    }\n    .salary-table tr.highlight td {\n      background: #eff6ff;\n      font-weight: 600;\n      color: #1d4ed8;\n    }\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      margin-top: 1.5rem;\n      padding: 0.75rem 1rem;\n      background: #fafaf9;\n      border: 1px solid #e7e5e4;\n      border-radius: 0.5rem;\n      font-size: 0.75rem;\n      color: #78716c;\n      line-height: 1.6;\n    }\n    .disclaimer a { color: #2563eb; text-decoration: underline; }\n    \u002F* Two-col grid for inputs *\u002F\n    .input-grid {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 0.75rem;\n    }\n    @media (max-width: 520px) {\n      .input-grid { grid-template-columns: 1fr; }\n      .tab-btn { font-size: 0.75rem; padding: 0.45rem 0.6rem; }\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 706 — déviations par rapport au code du travail\n     indemnite: L1234-9 → formule par catégorie (ouvriers\u002Femployés: 1\u002F10 à 1\u002F5 mois; cadres: barème spécial)\n     preavis:   L1234-1 → durées spécifiques par statut; démission = 3 mois\n     salaire-min: SMIC  → grille CCN par coefficient\u002Fniveau (avenant du 1er décembre 2023)\n     prime-annuelle: aucune base légale → prime annuelle 1\u002F12 salaire annuel (juin + décembre)\n     heures-supp: L3121-36 → seuils différents : +25% (41e-48e h), +50% (dès 49e h) + règle journalière >10h\u002Fj\n-->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Calculateur — CCN du personnel de la reprographie\u003C\u002Fh1>\n    \u003Cspan class=\"idcc-badge\">IDCC 706\u003C\u002Fspan>\n  \u003C\u002Fdiv>\n\n  \u003Cnav class=\"tab-nav\" role=\"tablist\" aria-label=\"Fonctions calculateur\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\">Indemnité licenciement\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">Préavis\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\">Grille salariale\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-annuelle\" role=\"tab\">Prime annuelle\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"heures-supp\" role=\"tab\">Heures supplémentaires\u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- ===== TAB: INDEMNITÉ ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"indemnite\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>La CCN reprographie (IDCC 706) prévoit une indemnité de licenciement calculée par catégorie professionnelle (ouvriers\u002Femployés : 1\u002F10 à 1\u002F5 mois × années d'ancienneté), qui peut différer du barème légal (L1234-9 : 1\u002F4 mois ≤ 10 ans + 1\u002F3 mois > 10 ans). Le montant le plus favorable s'applique.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Catégorie professionnelle\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"ind-cat-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"ouvrier\">Ouvrier\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"employe\">Employé\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"maitrise\">Agent de maîtrise\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Salaire brut mensuel de référence \u003Cspan id=\"ind-sal-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"ind-sal\" min=\"1500\" max=\"8000\" step=\"50\" value=\"2500\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"ind-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"ind-anc\" min=\"1\" max=\"40\" step=\"1\" value=\"5\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Motif de rupture\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"ind-motif-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"personnel\">Licenciement motif personnel\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"eco\">Licenciement économique\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Indemnité conventionnelle estimée\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"ind-result\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"ind-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== TAB: PRÉAVIS ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>La CCN reprographie fixe des délais de préavis spécifiques selon le statut et l'ancienneté. En cas de \u003Cstrong>démission\u003C\u002Fstrong>, la durée est de \u003Cstrong>3 mois\u003C\u002Fstrong> pour les cadres et agents de maîtrise (sauf accord de réduction mutuelle). Pour les ouvriers\u002Femployés, le préavis est progressif.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Statut\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"prev-statut-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"ouvrier\">Ouvrier \u002F Employé\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"maitrise\">Agent de maîtrise\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"prev-anc-val\">3 ans\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"prev-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"3\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Type de rupture\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"prev-type-pills\">\n        \u003Cbutton class=\"pill active\" data-val=\"licenciement\">Licenciement\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-val=\"demission\">Démission\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Durée du préavis\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"prev-result\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"prev-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== TAB: GRILLE SALARIALE ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>La CCN reprographie publie une grille de salaires minimaux par catégorie et coefficient, au-dessus du SMIC. Avenant applicable depuis le 1\u003Csup>er\u003C\u002Fsup> décembre 2023 (pour 151,67 h\u002Fmois).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Catégorie\u003C\u002Flabel>\n      \u003Cselect id=\"sm-categorie\">\n        \u003Coption value=\"ouvrier\">Ouvriers\u003C\u002Foption>\n        \u003Coption value=\"employe\">Employés\u003C\u002Foption>\n        \u003Coption value=\"maitrise\">Agents de maîtrise\u003C\u002Foption>\n        \u003Coption value=\"cadre\">Cadres\u003C\u002Foption>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Niveau \u002F Coefficient\u003C\u002Flabel>\n      \u003Cselect id=\"sm-niveau\">\u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Salaire minimum conventionnel brut mensuel\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"sm-result\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"sm-detail\">Base 151,67 h\u002Fmois\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Ctable class=\"salary-table\" id=\"sm-table\">\n      \u003Cthead>\n        \u003Ctr>\u003Cth>Niveau\u003C\u002Fth>\u003Cth>Libellé\u003C\u002Fth>\u003Cth>Salaire brut mensuel\u003C\u002Fth>\u003C\u002Ftr>\n      \u003C\u002Fthead>\n      \u003Ctbody id=\"sm-table-body\">\u003C\u002Ftbody>\n    \u003C\u002Ftable>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== TAB: PRIME ANNUELLE ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"prime-annuelle\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>La CCN reprographie prévoit une \u003Cstrong>prime annuelle obligatoire\u003C\u002Fstrong> équivalente à 1\u002F12 du salaire annuel brut, versée en deux fois : en juin et en décembre (équivalent 13\u003Csup>e\u003C\u002Fsup> mois). Cette prime est proratisée selon le temps de présence sur l'année.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Salaire brut mensuel \u003Cspan id=\"pa-sal-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"pa-sal\" min=\"1500\" max=\"8000\" step=\"50\" value=\"2500\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Mois de présence dans l'année \u003Cspan id=\"pa-mois-val\">12 mois\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"pa-mois\" min=\"1\" max=\"12\" step=\"1\" value=\"12\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Prime annuelle totale estimée\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"pa-result\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"pa-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ===== TAB: HEURES SUPP ===== -->\n  \u003Cdiv class=\"panel\" data-panel=\"heures-supp\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>La CCN reprographie applique des majorations spécifiques : +25 % pour les heures de la 41\u003Csup>e\u003C\u002Fsup> à la 48\u003Csup>e\u003C\u002Fsup> heure, +50 % à partir de la 49\u003Csup>e\u003C\u002Fsup> heure. De plus, toute heure au-delà de 10 h par jour donne droit à une majoration supplémentaire de +25 %.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Salaire horaire brut \u003Cspan id=\"hs-taux-val\">16,50 €\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"hs-taux\" min=\"11\" max=\"60\" step=\"0.5\" value=\"16.5\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Heures travaillées dans la semaine \u003Cspan id=\"hs-heures-val\">42 h\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"hs-heures\" min=\"35\" max=\"60\" step=\"1\" value=\"42\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Heures au-delà de 10 h\u002Fjour dans la semaine \u003Cspan id=\"hs-jour-val\">0 h\u003C\u002Fspan>\u003C\u002Flabel>\n      \u003Cinput type=\"range\" id=\"hs-jour\" min=\"0\" max=\"10\" step=\"1\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\">\n      \u003Cdiv class=\"result-label\">Rémunération totale brute estimée pour la semaine\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"hs-result\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"hs-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cp class=\"disclaimer\">\n    \u003Ci data-lucide=\"shield-alert\" width=\"13\" height=\"13\" style=\"vertical-align:middle;margin-right:4px;\">\u003C\u002Fi>\n    Calcul indicatif basé sur la CCN IDCC 706 (personnel de la reprographie).\n    Source&nbsp;: \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000005635891\" target=\"_blank\" rel=\"noopener\">Legifrance\u003C\u002Fa>.\n    Pour validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ── Salary grid data (CCN IDCC 706 — avenant déc. 2023) ─────────────────────\nconst SALARY_GRID = {\n  ouvrier: [\n    { level: \"10.00\", label: \"Ouvrier niveau I\", salary: 1768 },\n    { level: \"10.30\", label: \"Ouvrier niveau II\", salary: 1788 },\n    { level: \"10.70\", label: \"Ouvrier niveau III\", salary: 1845 },\n  ],\n  employe: [\n    { level: \"20.00\", label: \"Employé niveau I\", salary: 1783 },\n    { level: \"20.30\", label: \"Employé niveau II\", salary: 1853 },\n    { level: \"20.70\", label: \"Employé niveau III\", salary: 1910 },\n  ],\n  maitrise: [\n    { level: \"30.00\", label: \"Agent de maîtrise I\", salary: 2000 },\n    { level: \"30.50\", label: \"Agent de maîtrise II\", salary: 2205 },\n  ],\n  cadre: [\n    { level: \"40.00\", label: \"Cadre I\", salary: 2280 },\n    { level: \"40.30\", label: \"Cadre II\", salary: 2840 },\n    { level: \"40.50\", label: \"Cadre III\", salary: 3560 },\n  ]\n};\n\n\u002F\u002F ── Formatters ────────────────────────────────────────────────────────────────\nconst fmtEur = v => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(v);\nconst fmtEurDec = v => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(v);\n\n\u002F\u002F ── State ─────────────────────────────────────────────────────────────────────\nconst state = {\n  \u002F\u002F Indemnité\n  ind_cat: 'ouvrier', ind_sal: 2500, ind_anc: 5, ind_motif: 'personnel',\n  \u002F\u002F Préavis\n  prev_statut: 'ouvrier', prev_anc: 3, prev_type: 'licenciement',\n  \u002F\u002F Salaire min\n  sm_cat: 'ouvrier', sm_niveau: 0,\n  \u002F\u002F Prime annuelle\n  pa_sal: 2500, pa_mois: 12,\n  \u002F\u002F Heures supp\n  hs_taux: 16.5, hs_heures: 42, hs_jour: 0\n};\n\n\u002F\u002F ── Compute: Indemnité ─────────────────────────────────────────────────────────\nfunction computeIndem() {\n  const { ind_cat, ind_sal, ind_anc } = state;\n  const sal = parseFloat(ind_sal);\n  const anc = parseInt(ind_anc);\n\n  if (anc \u003C 1) { return { val: 0, detail: \"Ancienneté insuffisante (\u003C 1 an).\" }; }\n\n  let ccn = 0, detail = '';\n\n  if (ind_cat === 'ouvrier' || ind_cat === 'employe') {\n    \u002F\u002F CCN: après 2 ans = 1\u002F10 mois\u002Fan; après 3 ans = 1\u002F5 mois\u002Fan (plafonné à 3 mois)\n    if (anc \u003C 2) {\n      ccn = 0;\n      detail = \"L'indemnité CCN requiert 2 ans d'ancienneté.\";\n    } else if (anc \u003C 3) {\n      ccn = sal * (1\u002F10) * anc;\n      detail = `Formule CCN : 1\u002F10 × ${fmtEur(sal)} × ${anc} an(s).`;\n    } else {\n      ccn = Math.min(sal * (1\u002F5) * anc, sal * 3);\n      detail = `Formule CCN : 1\u002F5 × ${fmtEur(sal)} × ${anc} an(s), plafonné à 3 mois.`;\n    }\n    \u002F\u002F Baseline légal: 1\u002F4 × sal × min(anc,10) + 1\u002F3 × sal × max(anc-10,0)\n    const legal = sal * (1\u002F4) * Math.min(anc, 10) + sal * (1\u002F3) * Math.max(anc - 10, 0);\n    const best = Math.max(ccn, legal);\n    if (legal > ccn) {\n      return { val: best, detail: detail + ` (barème légal L1234-9 plus favorable : ${fmtEur(legal)})` };\n    }\n  } else if (ind_cat === 'maitrise') {\n    \u002F\u002F Agents de maîtrise: barème fixe par palier d'ancienneté\n    if (anc \u003C 2) { ccn = 0; detail = \"Indemnité requiert 2 ans d'ancienneté.\"; }\n    else if (anc \u003C 3) { ccn = sal * 1; detail = \"Palier 2 ans : 1 mois de salaire.\"; }\n    else if (anc \u003C 4) { ccn = sal * 1.5; detail = \"Palier 3 ans : 1,5 mois de salaire.\"; }\n    else { ccn = sal * 2; detail = \"Palier ≥ 4 ans : 2 mois de salaire.\"; }\n    const legal = sal * (1\u002F4) * Math.min(anc, 10) + sal * (1\u002F3) * Math.max(anc - 10, 0);\n    const best = Math.max(ccn, legal);\n    if (legal > ccn) {\n      return { val: best, detail: detail + ` (barème légal L1234-9 plus favorable : ${fmtEur(legal)})` };\n    }\n  } else {\n    \u002F\u002F Cadres: barème spécifique\n    let moisCCN = 0;\n    if (anc \u003C 2) { moisCCN = 0; detail = \"Indemnité cadre requiert 2 ans d'ancienneté.\"; }\n    else if (anc \u003C 3) { moisCCN = 1; detail = \"Cadre, palier 2 ans : 1 mois de salaire.\"; }\n    else if (anc \u003C 4) { moisCCN = 1.5; detail = \"Cadre, palier 3 ans : 1,5 mois.\"; }\n    else if (anc \u003C 6) { moisCCN = 2; detail = \"Cadre, palier 4-5 ans : 2 mois.\"; }\n    else { moisCCN = Math.min(2 + (anc - 5) * 0.25, 6); detail = `Cadre, au-delà de 5 ans : +0,25 mois\u002Fan (plafonné à 6 mois).`; }\n    ccn = sal * moisCCN;\n    const legal = sal * (1\u002F4) * Math.min(anc, 10) + sal * (1\u002F3) * Math.max(anc - 10, 0);\n    const best = Math.max(ccn, legal);\n    if (legal > ccn) {\n      return { val: best, detail: detail + ` (barème légal L1234-9 plus favorable : ${fmtEur(legal)})` };\n    }\n  }\n\n  return { val: ccn, detail };\n}\n\n\u002F\u002F ── Compute: Préavis ──────────────────────────────────────────────────────────\nfunction computePreavis() {\n  const { prev_statut, prev_anc, prev_type } = state;\n  const anc = parseInt(prev_anc);\n\n  if (prev_statut === 'ouvrier') {\n    if (prev_type === 'demission') {\n      if (anc \u003C 0.5) return { val: \"1 semaine\", detail: \"Ouvrier\u002FEmployé, démission, \u003C 6 mois.\" };\n      if (anc \u003C 2) return { val: \"1 mois\", detail: \"Ouvrier\u002FEmployé, démission, 6 mois à 2 ans.\" };\n      return { val: \"2 mois\", detail: \"Ouvrier\u002FEmployé, démission, ≥ 2 ans.\" };\n    } else {\n      if (anc \u003C 0.5) return { val: \"1 semaine\", detail: \"Ouvrier\u002FEmployé, licenciement, \u003C 6 mois.\" };\n      if (anc \u003C 2) return { val: \"1 mois\", detail: \"Ouvrier\u002FEmployé, licenciement, 6 mois à 2 ans.\" };\n      return { val: \"2 mois\", detail: \"Ouvrier\u002FEmployé, licenciement, ≥ 2 ans.\" };\n    }\n  } else if (prev_statut === 'maitrise') {\n    if (prev_type === 'demission') {\n      return { val: \"3 mois\", detail: \"Agent de maîtrise — démission : 3 mois (sauf accord de réduction).\" };\n    }\n    if (anc \u003C 2) return { val: \"2 mois\", detail: \"Agent de maîtrise, licenciement, \u003C 2 ans.\" };\n    const extra = Math.min((anc - 2) * 0.25, 1);\n    const total = 2 + extra;\n    return { val: `${total} mois`, detail: `Agent de maîtrise, licenciement, ${anc} an(s) : 2 mois + 1\u002F4 mois\u002Fan (max 3 mois).` };\n  } else {\n    \u002F\u002F Cadre\n    if (prev_type === 'demission') {\n      return { val: \"3 mois\", detail: \"Cadre — démission : 3 mois (sauf accord de réduction).\" };\n    }\n    if (anc \u003C 2) return { val: \"2 mois\", detail: \"Cadre, licenciement, \u003C 2 ans.\" };\n    const extra = Math.min((anc - 2) * 0.25, 1);\n    const total = 2 + extra;\n    return { val: `${total} mois`, detail: `Cadre, licenciement, ${anc} an(s) : 2 mois + 1\u002F4 mois\u002Fan (max 3 mois).` };\n  }\n}\n\n\u002F\u002F ── Compute: Salaire min ──────────────────────────────────────────────────────\nfunction computeSalaireMin() {\n  const grid = SALARY_GRID[state.sm_cat] || [];\n  const idx = Math.min(state.sm_niveau, grid.length - 1);\n  const row = grid[idx];\n  return row ? { val: row.salary, label: row.label, level: row.level } : null;\n}\n\n\u002F\u002F ── Compute: Prime annuelle ───────────────────────────────────────────────────\nfunction computePrime() {\n  const sal = parseFloat(state.pa_sal);\n  const mois = parseInt(state.pa_mois);\n  const primeAnnuelle = (sal * 12) \u002F 12; \u002F\u002F 1\u002F12 du salaire annuel\n  const prorata = primeAnnuelle * (mois \u002F 12);\n  return {\n    total: prorata,\n    juin: prorata \u002F 2,\n    dec: prorata \u002F 2,\n    detail: `Versement en juin (${fmtEur(prorata\u002F2)}) et décembre (${fmtEur(prorata\u002F2)}).`\n  };\n}\n\n\u002F\u002F ── Compute: Heures supp ──────────────────────────────────────────────────────\nfunction computeHS() {\n  const taux = parseFloat(state.hs_taux);\n  const heures = parseInt(state.hs_heures);\n  const jourSupp = parseInt(state.hs_jour);\n\n  \u002F\u002F Heures normales : 35h\n  const hNorm = Math.min(heures, 35);\n  const hSupp41_48 = Math.max(0, Math.min(heures, 48) - 40);\n  const hSupp49plus = Math.max(0, heures - 48);\n\n  const remNorm = hNorm * taux;\n  const rem41_48 = hSupp41_48 * taux * 1.25;\n  const rem49plus = hSupp49plus * taux * 1.50;\n  \u002F\u002F Heures entre 35 et 40 (majorées selon accord de branche — on retient +0% comme baseline CCN)\n  const h36_40 = Math.max(0, Math.min(heures, 40) - 35);\n  const rem36_40 = h36_40 * taux;\n  \u002F\u002F Majoration journalière > 10h\n  const remJour = jourSupp * taux * 0.25;\n\n  const total = remNorm + rem36_40 + rem41_48 + rem49plus + remJour;\n  let detail = `Heures normales (35h) : ${fmtEurDec(remNorm)}`;\n  if (h36_40 > 0) detail += ` | 36e-40e h : ${fmtEurDec(rem36_40)}`;\n  if (hSupp41_48 > 0) detail += ` | 41e-48e h (+25 %) : ${fmtEurDec(rem41_48)}`;\n  if (hSupp49plus > 0) detail += ` | ≥49e h (+50 %) : ${fmtEurDec(rem49plus)}`;\n  if (jourSupp > 0) detail += ` | >10 h\u002Fj (+25 %) : ${fmtEurDec(remJour)}`;\n  return { total, detail };\n}\n\n\u002F\u002F ── Render ────────────────────────────────────────────────────────────────────\nfunction renderIndem() {\n  const r = computeIndem();\n  document.getElementById('ind-result').textContent = r.val > 0 ? fmtEur(r.val) : '—';\n  document.getElementById('ind-detail').textContent = r.detail || '';\n}\n\nfunction renderPreavis() {\n  const r = computePreavis();\n  document.getElementById('prev-result').textContent = r.val;\n  document.getElementById('prev-detail').textContent = r.detail;\n}\n\nfunction renderSalaireMin() {\n  const r = computeSalaireMin();\n  if (!r) return;\n  document.getElementById('sm-result').textContent = fmtEur(r.val);\n  document.getElementById('sm-detail').textContent = `Niveau ${r.level} — ${r.label} — Base 151,67 h\u002Fmois`;\n\n  const grid = SALARY_GRID[state.sm_cat] || [];\n  const tbody = document.getElementById('sm-table-body');\n  tbody.innerHTML = grid.map((row, i) =>\n    `\u003Ctr class=\"${i === state.sm_niveau ? 'highlight' : ''}\">\n      \u003Ctd>${row.level}\u003C\u002Ftd>\n      \u003Ctd>${row.label}\u003C\u002Ftd>\n      \u003Ctd style=\"font-variant-numeric:tabular-nums\">${fmtEur(row.salary)}\u003C\u002Ftd>\n    \u003C\u002Ftr>`\n  ).join('');\n}\n\nfunction renderPrime() {\n  const r = computePrime();\n  document.getElementById('pa-result').textContent = fmtEur(r.total);\n  document.getElementById('pa-detail').textContent = r.detail;\n}\n\nfunction renderHS() {\n  const r = computeHS();\n  document.getElementById('hs-result').textContent = fmtEurDec(r.total);\n  document.getElementById('hs-detail').textContent = r.detail;\n}\n\n\u002F\u002F ── Build niveau options ──────────────────────────────────────────────────────\nfunction buildNiveauOptions() {\n  const sel = document.getElementById('sm-niveau');\n  const grid = SALARY_GRID[state.sm_cat] || [];\n  sel.innerHTML = grid.map((r, i) => `\u003Coption value=\"${i}\">${r.level} — ${r.label}\u003C\u002Foption>`).join('');\n  state.sm_niveau = 0;\n  sel.value = 0;\n  renderSalaireMin();\n}\n\n\u002F\u002F ── Pill helper ───────────────────────────────────────────────────────────────\nfunction bindPills(containerId, stateKey, onAfter) {\n  document.getElementById(containerId).addEventListener('click', e => {\n    const pill = e.target.closest('.pill');\n    if (!pill) return;\n    document.querySelectorAll(`#${containerId} .pill`).forEach(p => p.classList.remove('active'));\n    pill.classList.add('active');\n    state[stateKey] = pill.dataset.val;\n    if (onAfter) onAfter();\n  });\n}\n\n\u002F\u002F ── Wire inputs ───────────────────────────────────────────────────────────────\nfunction wire(id, stateKey, displayId, fmtFn, onAfter) {\n  const el = document.getElementById(id);\n  const disp = document.getElementById(displayId);\n  el.addEventListener('input', () => {\n    state[stateKey] = el.value;\n    if (disp) disp.textContent = fmtFn(el.value);\n    if (onAfter) onAfter();\n  });\n}\n\n\u002F\u002F Indemnité\nbindPills('ind-cat-pills', 'ind_cat', renderIndem);\nwire('ind-sal', 'ind_sal', 'ind-sal-val', v => fmtEur(+v), renderIndem);\nwire('ind-anc', 'ind_anc', 'ind-anc-val', v => `${v} an${+v>1?'s':''}`, renderIndem);\nbindPills('ind-motif-pills', 'ind_motif', renderIndem);\n\n\u002F\u002F Préavis\nbindPills('prev-statut-pills', 'prev_statut', renderPreavis);\nwire('prev-anc', 'prev_anc', 'prev-anc-val', v => `${v} an${+v>1?'s':''}`, renderPreavis);\nbindPills('prev-type-pills', 'prev_type', renderPreavis);\n\n\u002F\u002F Salaire min\ndocument.getElementById('sm-categorie').addEventListener('change', e => {\n  state.sm_cat = e.target.value;\n  buildNiveauOptions();\n});\ndocument.getElementById('sm-niveau').addEventListener('change', e => {\n  state.sm_niveau = parseInt(e.target.value);\n  renderSalaireMin();\n});\n\n\u002F\u002F Prime\nwire('pa-sal', 'pa_sal', 'pa-sal-val', v => fmtEur(+v), renderPrime);\nwire('pa-mois', 'pa_mois', 'pa-mois-val', v => `${v} mois`, renderPrime);\n\n\u002F\u002F Heures supp\nwire('hs-taux', 'hs_taux', 'hs-taux-val', v => fmtEurDec(+v), renderHS);\nwire('hs-heures', 'hs_heures', 'hs-heures-val', v => `${v} h`, renderHS);\nwire('hs-jour', 'hs_jour', 'hs-jour-val', v => `${v} h`, renderHS);\n\n\u002F\u002F ── Tab system ────────────────────────────────────────────────────────────────\nconst tabBtns = document.querySelectorAll('[data-tab]');\nconst panels = document.querySelectorAll('[data-panel]');\n\nfunction activate(id) {\n  tabBtns.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n  panels.forEach(p => p.classList.toggle('active', p.dataset.panel === id));\n  try { if (location.hash !== '#' + id) location.hash = id; } catch(e) {}\n  requestAnimationFrame(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n}\n\ntabBtns.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\n\u002F\u002F ── Init ──────────────────────────────────────────────────────────────────────\ndocument.addEventListener('DOMContentLoaded', () => {\n  lucide.createIcons();\n\n  buildNiveauOptions();\n  renderIndem();\n  renderPreavis();\n  renderPrime();\n  renderHS();\n\n  const hashTab = location.hash.slice(1);\n  const validTab = document.querySelector(`[data-tab=\"${hashTab}\"]`);\n  activate(validTab ? hashTab : 'indemnite');\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\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-du-personnel-de-la-reprographie-d135f6d4da.webp",[]]