[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-droits-agents-entretien-convention-proprete-idcc-3043-fr":83,"footer-cities-fr":164},[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":89,"json_ld":90,"faq":136,"tool_html":159,"source":160,"category":7,"audience":161,"publish_mode":162,"hero_image":163,"hero_image_alt":85},"proprete-idcc-3043-droits-agents","Droits des agents d'entretien – Convention propreté IDCC 3043","Droits agents propreté IDCC 3043 : calculateur 2025","Calculez votre salaire minimum, prime d'ancienneté, majorations (nuit, dimanche), préavis et droits au transfert selon la convention collective propreté IDCC 3043 — données 2025-2026.","Cet outil interactif vous permet de vérifier et calculer tous vos droits en tant qu'agent d'entretien selon la **Convention collective nationale de la propreté et des services associés (IDCC 3043)**. Renseignez votre niveau de poste, vos heures contractuelles et votre ancienneté pour obtenir instantanément votre salaire minimum, votre prime d'ancienneté, le détail de vos majorations (heures supplémentaires, nuit, dimanche, jours fériés), la durée de votre préavis et une vérification de vos droits au transfert de contrat en cas de changement de prestataire.","droits-agents-entretien-convention-proprete-idcc-3043",[91,115],{"name":92,"@type":93,"about":94,"author":98,"@context":102,"inLanguage":103,"description":104,"featureList":105,"operatingSystem":112,"availableLanguage":103,"applicationCategory":113,"isAccessibleForFree":114},"Calculateur droits agents d'entretien – Convention propreté IDCC 3043","WebApplication",{"name":95,"@type":96,"identifier":97},"Convention collective nationale de la propreté et services associés","Thing","IDCC 3043",{"url":99,"name":100,"@type":101},"https:\u002F\u002Fwww.expert-zoom.com","Expert-Zoom","Organization","https:\u002F\u002Fschema.org","fr","Outil interactif pour calculer le salaire minimum, la prime d'ancienneté, les majorations (nuit, dimanche, heures supplémentaires), le préavis et les droits au transfert de contrat selon la convention collective nationale de la propreté (IDCC 3043), mise à jour 2025-2026.",[106,107,108,109,110,111],"Calculateur de salaire minimum par niveau (ASP, ASC, AQS, CE, MP, EA, MA)","Calcul de la prime d'ancienneté par palier","Simulation des majorations heures supplémentaires, nuit, dimanche et jours fériés","Calcul de la durée du préavis en cas de licenciement ou démission","Vérificateur des conditions de transfert de contrat (tronc d'activité)","Calcul de la prime annuelle (13e mois) et des indemnités transport et panier repas","All","UtilitiesApplication",true,{"@type":116,"@context":102,"mainEntity":117},"FAQPage",[118,124,128,132],{"name":119,"@type":120,"acceptedAnswer":121},"Quel est le salaire minimum d'un agent de propreté en 2025 ?","Question",{"text":122,"@type":123},"Depuis le 1er juin 2025 (Avenant n°26), le taux horaire minimal d'un Agent de Service Professionnel (ASP) est de 12,38 € brut\u002Fheure en colonne A. Pour un temps plein à 151,67 h\u002Fmois, cela représente environ 1 877 € bruts mensuels.","Answer",{"name":125,"@type":120,"acceptedAnswer":126},"À partir de combien d'années ai-je droit à une prime d'ancienneté dans la propreté ?",{"text":127,"@type":123},"La prime d'ancienneté débute à 4 ans d'expérience dans le secteur de la propreté (2 %), puis augmente par paliers jusqu'à 7 % à partir de 25 ans selon l'Avenant n°21 de juin 2025.",{"name":129,"@type":120,"acceptedAnswer":130},"Qu'est-ce que le tronc d'activité (article 7) dans la propreté ?",{"text":131,"@type":123},"L'article 7 de la convention IDCC 3043 organise le transfert automatique des contrats de travail lors d'une perte de marché. Si vous remplissez 7 conditions cumulatives, le nouveau prestataire est obligé de reprendre votre contrat avec le même salaire.",{"name":133,"@type":120,"acceptedAnswer":134},"Quelle est la majoration pour le travail de nuit dans la convention propreté ?",{"text":135,"@type":123},"La convention IDCC 3043 prévoit +20 % pour les heures de nuit régulières (21h–6h) et +100 % pour les heures de nuit occasionnelles.",[137,139,142,144,147,150,153,156],{"a":138,"q":119},"Depuis le 1er juin 2025 (Avenant n°26), le taux horaire minimal d'un Agent de Service Professionnel (ASP, anciennement AS1) est de 12,38 € brut\u002Fheure en colonne A. Pour un temps plein à 151,67 h\u002Fmois, cela représente environ 1 877 € bruts mensuels. La colonne B (12,57 €\u002Fh) s'applique si l'agent combine la propreté et un service associé pendant au moins 3 mois consécutifs.",{"a":140,"q":141},"La prime d'ancienneté débute à 4 ans d'expérience dans le secteur de la propreté (2 %), puis augmente par paliers : 3 % à 6 ans, 4 % à 8 ans, 5 % à 10 ans, 5,5 % à 15 ans, 6 % à 20 ans et 7 % à partir de 25 ans (nouveau palier depuis l'Avenant n°21 de juin 2025). Elle est calculée sur le salaire minimum de votre niveau et proratisée pour les temps partiels.","À partir de combien d'années de travail dans la propreté ai-je droit à une prime d'ancienneté ?",{"a":143,"q":133},"La convention collective IDCC 3043 prévoit une majoration de 20 % pour les heures de nuit régulières travaillées entre 21h et 6h. Si les heures de nuit sont occasionnelles (non prévues au planning habituel), la majoration est de 100 %. Ces majorations s'ajoutent au salaire de base et ne se cumulent pas nécessairement entre elles.",{"a":145,"q":146},"L'article 7 de la convention collective IDCC 3043 organise le transfert automatique des contrats de travail lors d'une perte de marché (changement de prestataire de nettoyage). Si vous remplissez 7 conditions cumulatives — notamment travailler ≥ 30 % de votre temps sur le site, y être depuis ≥ 6 mois et être en CDI — le nouveau prestataire est obligé de reprendre votre contrat avec le même salaire brut mensuel.","Qu'est-ce que le tronc d'activité (article 7) dans la convention propreté ?",{"a":148,"q":149},"Pour un agent de propreté (niveaux ASP, ASC, AQS, ATQS), le préavis en cas de licenciement est de 1 semaine pour moins de 6 mois d'ancienneté, 1 mois entre 6 mois et 2 ans, et 2 mois au-delà de 2 ans d'ancienneté. En cas de faute grave ou lourde, il n'y a pas de préavis. Les travailleurs reconnus handicapés (RQTH) bénéficient d'un préavis doublé, plafonné à 3 mois.","Quelle est la durée du préavis en cas de licenciement pour un agent de propreté ?",{"a":151,"q":152},"La prime annuelle est versée en novembre à tous les salariés ayant au moins 1 an d'expérience dans le secteur de la propreté. Elle est égale à 18,64 % du salaire minimum mensuel de référence (ASP A × 151,67 h ≈ 1 878 €), soit environ 350 € pour 1 à 19 ans d'ancienneté. Elle atteint 27,84 % (environ 523 €) pour les salariés avec 20 ans ou plus de secteur. Elle est proratisée pour les temps partiels et les absences non rémunérées.","À quoi correspond la prime annuelle (13e mois) dans la propreté ?",{"a":154,"q":155},"Oui, mais à condition de travailler au moins 104 heures par mois pour percevoir l'indemnité de transport à taux plein (environ 35,50 €\u002Fmois selon les barèmes 2025). En deçà de 104 heures, l'indemnité est proratisée en fonction du nombre d'heures effectuées. Cette indemnité ne se cumule pas avec le remboursement des transports en commun. Elle ne s'applique pas aux cadres.","Ai-je droit à une indemnité de transport si je travaille à temps partiel dans la propreté ?",{"a":157,"q":158},"Oui. Le travail du dimanche régulier (prévu au planning) donne droit à une majoration de 20 % dans la convention IDCC 3043. Si le travail du dimanche est exceptionnel (non planifié habituellement), la majoration est de 100 %. De même, travailler un jour férié prévu donne droit à +20 %, et un jour férié non planifié à +100 %.","Le dimanche est-il majoré dans la convention collective propreté ?","\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.0\">\n  \u003Ctitle>Droits agents d'entretien - Convention propreté IDCC 3043\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      padding: 24px;\n      font-size: 15px;\n      line-height: 1.5;\n    }\n\n    h1 { font-size: 20px; font-weight: 700; color: #1c1917; margin-bottom: 4px; }\n    h2 { font-size: 16px; font-weight: 600; color: #1c1917; margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }\n    h3 { font-size: 14px; font-weight: 600; color: #44403c; margin-bottom: 10px; }\n\n    .subtitle { color: #78716c; font-size: 14px; margin-bottom: 24px; }\n\n    \u002F* Nav tabs *\u002F\n    .tabs {\n      display: flex;\n      gap: 4px;\n      background: #f5f5f4;\n      padding: 4px;\n      border-radius: 10px;\n      margin-bottom: 24px;\n      flex-wrap: wrap;\n    }\n    .tab {\n      flex: 1;\n      min-width: 120px;\n      padding: 8px 12px;\n      border: none;\n      background: transparent;\n      border-radius: 8px;\n      font-size: 13px;\n      font-weight: 500;\n      color: #78716c;\n      cursor: pointer;\n      transition: all 150ms;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 6px;\n      white-space: nowrap;\n    }\n    .tab.active {\n      background: #ffffff;\n      color: #1c1917;\n      box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n    }\n    .tab:hover:not(.active) { background: #e7e5e4; color: #44403c; }\n\n    .panel { display: none; }\n    .panel.active { display: block; }\n\n    \u002F* Cards *\u002F\n    .card {\n      background: #fff;\n      border: 1px solid #e7e5e4;\n      border-radius: 12px;\n      padding: 20px;\n      margin-bottom: 16px;\n    }\n\n    \u002F* Fields *\u002F\n    .field { margin-bottom: 16px; }\n    .field-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-bottom: 8px;\n    }\n    label { font-size: 14px; font-weight: 500; color: #44403c; }\n    .value { font-size: 14px; font-weight: 600; color: #2563eb; }\n\n    select, input[type=\"number\"] {\n      width: 100%;\n      padding: 10px 12px;\n      border: 1px solid #d6d3d1;\n      border-radius: 8px;\n      font-size: 14px;\n      color: #1c1917;\n      background: #fff;\n      appearance: auto;\n    }\n    select:focus, input:focus {\n      outline: none;\n      border-color: #3b82f6;\n      box-shadow: 0 0 0 2px rgba(59,130,246,0.15);\n    }\n\n    input[type=\"range\"] {\n      width: 100%;\n      accent-color: #2563eb;\n      cursor: pointer;\n    }\n\n    \u002F* Grid *\u002F\n    .grid-2 {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n    }\n    @media (max-width: 600px) { .grid-2 { grid-template-columns: 1fr; } }\n\n    \u002F* Results *\u002F\n    .results-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n      gap: 12px;\n      margin-top: 16px;\n    }\n    .result-card {\n      background: #eff6ff;\n      border: 1px solid #bfdbfe;\n      border-radius: 10px;\n      padding: 14px;\n      text-align: center;\n    }\n    .result-card.success {\n      background: #f0fdf4;\n      border-color: #bbf7d0;\n    }\n    .result-card.warning {\n      background: #fff7ed;\n      border-color: #fed7aa;\n    }\n    .result-label {\n      font-size: 12px;\n      color: #78716c;\n      margin-bottom: 6px;\n      font-weight: 500;\n    }\n    .result-value {\n      font-size: 22px;\n      font-weight: 700;\n      color: #1e40af;\n      font-variant-numeric: tabular-nums;\n    }\n    .result-value.success { color: #15803d; }\n    .result-value.warning { color: #ea580c; }\n    .result-sub {\n      font-size: 12px;\n      color: #78716c;\n      margin-top: 4px;\n    }\n\n    \u002F* Breakdown table *\u002F\n    .breakdown {\n      background: #fafaf9;\n      border: 1px solid #e7e5e4;\n      border-radius: 8px;\n      overflow: hidden;\n      margin-top: 12px;\n    }\n    .breakdown-row {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      padding: 10px 14px;\n      font-size: 13px;\n      border-bottom: 1px solid #e7e5e4;\n    }\n    .breakdown-row:last-child { border-bottom: none; }\n    .breakdown-row.total {\n      background: #fff;\n      font-weight: 600;\n      font-size: 14px;\n      border-top: 2px solid #e7e5e4;\n    }\n    .breakdown-label { color: #44403c; }\n    .breakdown-value { color: #1c1917; font-weight: 500; font-variant-numeric: tabular-nums; }\n    .breakdown-value.positive { color: #15803d; }\n\n    \u002F* Info boxes *\u002F\n    .info-box {\n      background: #f0f9ff;\n      border: 1px solid #bae6fd;\n      border-radius: 8px;\n      padding: 12px 14px;\n      font-size: 13px;\n      color: #0c4a6e;\n      display: flex;\n      gap: 8px;\n      align-items: flex-start;\n      margin-top: 12px;\n    }\n    .info-box i { flex-shrink: 0; margin-top: 1px; }\n    .warn-box {\n      background: #fff7ed;\n      border: 1px solid #fed7aa;\n      border-radius: 8px;\n      padding: 12px 14px;\n      font-size: 13px;\n      color: #7c2d12;\n      display: flex;\n      gap: 8px;\n      align-items: flex-start;\n      margin-top: 12px;\n    }\n    .warn-box i { flex-shrink: 0; margin-top: 1px; }\n\n    \u002F* Stat pill *\u002F\n    .stat-pill {\n      display: inline-flex;\n      align-items: center;\n      gap: 6px;\n      background: #f5f5f4;\n      border: 1px solid #e7e5e4;\n      border-radius: 20px;\n      padding: 5px 12px;\n      font-size: 13px;\n      color: #44403c;\n      font-weight: 500;\n      margin: 4px;\n    }\n\n    \u002F* Summary big number *\u002F\n    .big-number {\n      font-size: 36px;\n      font-weight: 700;\n      color: #2563eb;\n      font-variant-numeric: tabular-nums;\n    }\n    .big-number.success { color: #15803d; }\n\n    \u002F* Section header *\u002F\n    .section-header {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      font-size: 13px;\n      font-weight: 600;\n      color: #78716c;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n      margin-bottom: 12px;\n    }\n\n    \u002F* Toggle row *\u002F\n    .toggle-row {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 10px 0;\n      border-bottom: 1px solid #f5f5f4;\n    }\n    .toggle-label { font-size: 14px; color: #44403c; }\n    .toggle-wrapper { display: flex; align-items: center; gap: 8px; }\n    input[type=\"checkbox\"] {\n      width: 18px;\n      height: 18px;\n      accent-color: #2563eb;\n      cursor: pointer;\n    }\n\n    \u002F* Transfer checklist *\u002F\n    .checklist { list-style: none; }\n    .checklist li {\n      display: flex;\n      align-items: flex-start;\n      gap: 10px;\n      padding: 10px 0;\n      border-bottom: 1px solid #f5f5f4;\n      font-size: 14px;\n      color: #44403c;\n    }\n    .checklist li:last-child { border-bottom: none; }\n    .check-icon { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }\n    .check-yes { background: #dcfce7; color: #15803d; }\n    .check-no { background: #fee2e2; color: #dc2626; }\n    .check-neutral { background: #f5f5f4; color: #78716c; }\n\n    \u002F* Pills group *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 6px; }\n    .pill {\n      padding: 7px 14px;\n      border: 1px solid #d6d3d1;\n      border-radius: 20px;\n      font-size: 13px;\n      font-weight: 500;\n      color: #78716c;\n      cursor: pointer;\n      background: #fff;\n      transition: all 150ms;\n    }\n    .pill.active {\n      background: #1c1917;\n      color: #fff;\n      border-color: #1c1917;\n    }\n    .pill:hover:not(.active) { background: #f5f5f4; }\n\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 12px;\n      color: #a8a29e;\n      text-align: center;\n      margin-top: 20px;\n      padding-top: 16px;\n      border-top: 1px solid #e7e5e4;\n    }\n\n    .badge {\n      display: inline-block;\n      background: #dbeafe;\n      color: #1d4ed8;\n      font-size: 11px;\n      font-weight: 600;\n      padding: 2px 8px;\n      border-radius: 20px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\n\u003Ch1>Convention collective propreté (IDCC 3043)\u003C\u002Fh1>\n\u003Cp class=\"subtitle\">Calculateur des droits des agents d'entretien — Données 2025-2026\u003C\u002Fp>\n\n\u003Cdiv class=\"tabs\">\n  \u003Cbutton class=\"tab active\" data-tab=\"salaire\">\n    \u003Ci data-lucide=\"euro\" style=\"width:15px;height:15px\">\u003C\u002Fi> Salaire\n  \u003C\u002Fbutton>\n  \u003Cbutton class=\"tab\" data-tab=\"anciennete\">\n    \u003Ci data-lucide=\"clock\" style=\"width:15px;height:15px\">\u003C\u002Fi> Ancienneté\n  \u003C\u002Fbutton>\n  \u003Cbutton class=\"tab\" data-tab=\"heures\">\n    \u003Ci data-lucide=\"calendar\" style=\"width:15px;height:15px\">\u003C\u002Fi> Heures supp.\n  \u003C\u002Fbutton>\n  \u003Cbutton class=\"tab\" data-tab=\"preavis\">\n    \u003Ci data-lucide=\"file-text\" style=\"width:15px;height:15px\">\u003C\u002Fi> Préavis\n  \u003C\u002Fbutton>\n  \u003Cbutton class=\"tab\" data-tab=\"transfert\">\n    \u003Ci data-lucide=\"arrow-right\" style=\"width:15px;height:15px\">\u003C\u002Fi> Transfert\n  \u003C\u002Fbutton>\n  \u003Cbutton class=\"tab\" data-tab=\"primes\">\n    \u003Ci data-lucide=\"gift\" style=\"width:15px;height:15px\">\u003C\u002Fi> Primes\n  \u003C\u002Fbutton>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 1 : SALAIRE MINIMAL\n     ========================================= -->\n\u003Cdiv class=\"panel active\" id=\"panel-salaire\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"briefcase\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Salaire minimal par niveau\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Votre niveau \u002F emploi\u003C\u002Flabel>\n      \u003Cselect id=\"niveau-select\">\n        \u003Coptgroup label=\"Agents de service\">\n          \u003Coption value=\"ASP_A\">ASP – Agent de Service Professionnel (colonne A)\u003C\u002Foption>\n          \u003Coption value=\"ASP_B\">ASP – Agent de Service Professionnel (colonne B)\u003C\u002Foption>\n          \u003Coption value=\"ASC_A\">ASC – Agent de Service Confirmé (1 an+, col. A)\u003C\u002Foption>\n          \u003Coption value=\"ASC_B\">ASC – Agent de Service Confirmé (1 an+, col. B)\u003C\u002Foption>\n          \u003Coption value=\"ASCS_A\">ASCS – Agent de Service Confirmé Spécialisé (col. A)\u003C\u002Foption>\n          \u003Coption value=\"ASCS_B\">ASCS – Agent de Service Confirmé Spécialisé (col. B)\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n        \u003Coptgroup label=\"Agents qualifiés\">\n          \u003Coption value=\"AQS\">AQS – Agent Qualifié de Service\u003C\u002Foption>\n          \u003Coption value=\"ATQS\">ATQS – Agent Très Qualifié de Service\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n        \u003Coptgroup label=\"Chefs d'équipe\">\n          \u003Coption value=\"CE1\">CE1 – Chef d'équipe 1\u003C\u002Foption>\n          \u003Coption value=\"CE2\">CE2 – Chef d'équipe 2\u003C\u002Foption>\n          \u003Coption value=\"CE3\">CE3 – Chef d'équipe 3\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n        \u003Coptgroup label=\"Maîtrise\">\n          \u003Coption value=\"MP1\">MP1 – Maîtrise 1\u003C\u002Foption>\n          \u003Coption value=\"MP2\">MP2 – Maîtrise 2\u003C\u002Foption>\n          \u003Coption value=\"MP3\">MP3 – Maîtrise 3\u003C\u002Foption>\n          \u003Coption value=\"MP4\">MP4 – Maîtrise 4\u003C\u002Foption>\n          \u003Coption value=\"MP5\">MP5 – Maîtrise 5\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n        \u003Coptgroup label=\"Employés administratifs\">\n          \u003Coption value=\"EA1\">EA1 – Employé administratif 1\u003C\u002Foption>\n          \u003Coption value=\"EA2\">EA2 – Employé administratif 2\u003C\u002Foption>\n          \u003Coption value=\"EA3\">EA3 – Employé administratif 3\u003C\u002Foption>\n          \u003Coption value=\"EA4\">EA4 – Employé administratif 4\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n        \u003Coptgroup label=\"Maîtrise administrative\">\n          \u003Coption value=\"MA1\">MA1 – Maîtrise administrative 1\u003C\u002Foption>\n          \u003Coption value=\"MA2\">MA2 – Maîtrise administrative 2\u003C\u002Foption>\n          \u003Coption value=\"MA3\">MA3 – Maîtrise administrative 3\u003C\u002Foption>\n        \u003C\u002Foptgroup>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures contractuelles \u002F mois\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"heures-display\">151,67 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"heures-slider\" min=\"40\" max=\"152\" step=\"0.5\" value=\"151.67\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\" id=\"niveau-info\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan id=\"niveau-info-text\">Taux horaire minimal en vigueur depuis le 1er juin 2025 (Avenant n°26).\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"trending-up\" style=\"width:18px;height:18px;color:#16a34a\">\u003C\u002Fi> Résultats\u003C\u002Fh2>\n\n    \u003Cdiv class=\"results-grid\">\n      \u003Cdiv class=\"result-card\">\n        \u003Cp class=\"result-label\">Taux horaire brut min.\u003C\u002Fp>\n        \u003Cp class=\"result-value\" id=\"res-taux\">12,38 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\">brut\u002Fheure\u003C\u002Fp>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card success\">\n        \u003Cp class=\"result-label\">Salaire mensuel brut min.\u003C\u002Fp>\n        \u003Cp class=\"result-value success\" id=\"res-mensuel\">1 877 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\" id=\"res-heures-label\">pour 151,67 h\u002Fmois\u003C\u002Fp>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cp class=\"result-label\">Salaire annuel brut min.\u003C\u002Fp>\n        \u003Cp class=\"result-value\" id=\"res-annuel\">22 527 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\">hors primes\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"breakdown\" style=\"margin-top:16px\">\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Taux horaire\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"bd-taux\">12,38 €\u002Fh\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Heures mensuelles\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"bd-heures\">151,67 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Base mensuelle brute\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"bd-base\">1 877 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Colonne B applicable si…\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Cumul propreté + service associé ≥ 3 mois consécutifs\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"warn-box\" style=\"margin-top:12px\">\n      \u003Ci data-lucide=\"alert-triangle\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>Si votre salaire réel est inférieur à ce minimum, votre employeur est en infraction. Contactez le conseil de prud'hommes ou l'inspection du travail.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 2 : PRIME D'ANCIENNETÉ\n     ========================================= -->\n\u003Cdiv class=\"panel\" id=\"panel-anciennete\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"clock\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Prime d'ancienneté (expérience sectorielle)\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Années d'expérience dans le secteur propreté\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"anc-display\">0 an\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"anc-slider\" min=\"0\" max=\"30\" step=\"1\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Votre niveau de poste\u003C\u002Flabel>\n      \u003Cselect id=\"anc-niveau-select\">\n        \u003Coption value=\"ASP_A\">ASP A – 12,38 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"ASP_B\">ASP B – 12,57 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"ASC_A\">ASC A – 12,43 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"ASC_B\">ASC B – 12,65 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"AQS\">AQS – 12,56 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"ATQS\">ATQS – 13,03 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"CE1\">CE1 – 14,26 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"CE2\">CE2 – 15,09 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"MP1\">MP1 – 15,33 €\u002Fh\u003C\u002Foption>\n        \u003Coption value=\"MP2\">MP2 – 16,20 €\u002Fh\u003C\u002Foption>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures contractuelles \u002F mois\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"anc-heures-display\">151,67 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"anc-heures\" min=\"40\" max=\"152\" step=\"0.5\" value=\"151.67\">\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"percent\" style=\"width:18px;height:18px;color:#16a34a\">\u003C\u002Fi> Résultats\u003C\u002Fh2>\n\n    \u003Cdiv class=\"results-grid\">\n      \u003Cdiv class=\"result-card\">\n        \u003Cp class=\"result-label\">Taux d'ancienneté\u003C\u002Fp>\n        \u003Cp class=\"result-value\" id=\"anc-taux\">0 %\u003C\u002Fp>\n        \u003Cp class=\"result-sub\" id=\"anc-palier\">Aucun droit avant 4 ans\u003C\u002Fp>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card success\">\n        \u003Cp class=\"result-label\">Prime mensuelle brute\u003C\u002Fp>\n        \u003Cp class=\"result-value success\" id=\"anc-prime\">0 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\">à ajouter au salaire de base\u003C\u002Fp>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cp class=\"result-label\">Prime annuelle brute\u003C\u002Fp>\n        \u003Cp class=\"result-value\" id=\"anc-prime-an\">0 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\">hors 13e mois\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"breakdown\" style=\"margin-top:16px\">\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">4 ans → 2 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 1\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">6 ans → 3 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 2\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">8 ans → 4 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 3\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">10 ans → 5 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 4\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">15 ans → 5,5 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 5\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">20 ans → 6 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 6\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">25 ans → 7 %\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">Palier 7 (Avenant n°21, 2025)\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>La prime d'ancienneté est calculée sur le \u003Cstrong>salaire minimum hiérarchique\u003C\u002Fstrong> de votre niveau, pas sur votre salaire réel. Elle est proratisée pour les temps partiels.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 3 : HEURES SUPPLÉMENTAIRES & NUIT\n     ========================================= -->\n\u003Cdiv class=\"panel\" id=\"panel-heures\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"calendar\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Calcul des majorations\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Taux horaire brut de base\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-taux-display\">12,38 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-taux\" min=\"12\" max=\"22\" step=\"0.01\" value=\"12.38\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures supplémentaires (premières 8h\u002Fsemaine)\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-sup1-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-sup1\" min=\"0\" max=\"8\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures supplémentaires (au-delà de 8h\u002Fsemaine)\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-sup2-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-sup2\" min=\"0\" max=\"20\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures de nuit (21h–6h) régulières\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-nuit-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-nuit\" min=\"0\" max=\"40\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures de nuit occasionnelles\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-nuit-occ-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-nuit-occ\" min=\"0\" max=\"20\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures du dimanche (régulières)\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-dim-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-dim\" min=\"0\" max=\"20\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures de jours fériés travaillés\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"h-ferie-display\">0 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"h-ferie\" min=\"0\" max=\"12\" step=\"0.5\" value=\"0\">\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"trending-up\" style=\"width:18px;height:18px;color:#16a34a\">\u003C\u002Fi> Majorations sur ce mois\u003C\u002Fh2>\n\n    \u003Cdiv class=\"breakdown\">\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Heures supp. (+25%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-sup1\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Heures supp. (+50%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-sup2\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Nuit régulière (+20%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-nuit\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Nuit occasionnelle (+100%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-nuit-occ\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Dimanche régulier (+20%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-dim\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Jour férié (+100%)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-ferie\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row total\">\n        \u003Cspan class=\"breakdown-label\">Total majorations brutes\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value positive\" id=\"bd-total-maj\">0,00 €\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>Les majorations s'appliquent \u003Cstrong>en sus\u003C\u002Fstrong> du salaire de base. Un cumul de majorations (ex. nuit + dimanche) s'applique séparément selon la convention.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 4 : PRÉAVIS\n     ========================================= -->\n\u003Cdiv class=\"panel\" id=\"panel-preavis\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"file-text\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Calcul du préavis\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Catégorie professionnelle\u003C\u002Flabel>\n      \u003Cselect id=\"p-categorie\">\n        \u003Coption value=\"agent\">Agent de propreté (ASP, ASC, ASCS, AQS, ATQS)\u003C\u002Foption>\n        \u003Coption value=\"employe\">Employé administratif (EA1–EA4)\u003C\u002Foption>\n        \u003Coption value=\"maitrise\">Technicien \u002F Maîtrise (CE, MP, MA)\u003C\u002Foption>\n        \u003Coption value=\"cadre\">Cadre (CA1–CA6)\u003C\u002Foption>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Clabel>Situation\u003C\u002Flabel>\n      \u003Cdiv class=\"pills\" id=\"p-situation-pills\">\n        \u003Cbutton class=\"pill active\" data-value=\"licenciement\">Licenciement\u003C\u002Fbutton>\n        \u003Cbutton class=\"pill\" data-value=\"demission\">Démission\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Ancienneté dans l'entreprise\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"p-anc-display\">0 mois\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"p-anc\" min=\"0\" max=\"120\" step=\"1\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">Travailleur en situation de handicap (RQTH)\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"p-handicap\">\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"calendar\" style=\"width:18px;height:18px;color:#16a34a\">\u003C\u002Fi> Résultat\u003C\u002Fh2>\n\n    \u003Cdiv style=\"text-align:center;padding:16px 0\">\n      \u003Cp style=\"font-size:13px;color:#78716c;margin-bottom:8px\">Durée du préavis\u003C\u002Fp>\n      \u003Cp class=\"big-number\" id=\"preavis-duree\">–\u003C\u002Fp>\n      \u003Cp style=\"font-size:14px;color:#78716c;margin-top:6px\" id=\"preavis-unite\">–\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"breakdown\">\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Catégorie\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"p-res-categorie\">–\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Situation\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"p-res-situation\">–\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Ancienneté\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"p-res-anc\">–\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\" style=\"margin-top:12px\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>Pendant le préavis, vous bénéficiez de \u003Cstrong>2 heures payées\u002Fjour\u003C\u002Fstrong> pour rechercher un emploi. En cas de faute grave ou lourde, le préavis peut être supprimé.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"warn-box\" id=\"handicap-warn\" style=\"display:none\">\n      \u003Ci data-lucide=\"alert-triangle\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>En situation de handicap (RQTH), la durée de préavis est doublée, dans la limite de 3 mois.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 5 : TRONC D'ACTIVITÉ (TRANSFERT)\n     ========================================= -->\n\u003Cdiv class=\"panel\" id=\"panel-transfert\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"arrow-right\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Transfert de contrat (Article 7 – Tronc d'activité)\u003C\u002Fh2>\n    \u003Cp style=\"font-size:13px;color:#78716c;margin-bottom:16px\">En cas de perte de marché, votre contrat peut être transféré chez le nouveau prestataire. Vérifiez si vous remplissez les conditions.\u003C\u002Fp>\n\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">1. Je passe ≥ 30% de mon temps sur ce site\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t1\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">2. Je travaille sur ce site depuis ≥ 6 mois\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t2\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">3. Mon contrat est un CDI (ou CDD de remplacement)\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t3\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">4. Je ne suis pas absent(e) depuis ≥ 4 mois consécutifs (hors maternité)\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t4\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">5. Je suis légalement autorisé(e) à travailler en France\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t5\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">6. Je ne suis pas sous préavis au moment du transfert\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t6\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"toggle-row\">\n      \u003Cspan class=\"toggle-label\">7. Je ne suis pas déclaré(e) inapte définitivement par la médecine du travail\u003C\u002Fspan>\n      \u003Cinput type=\"checkbox\" id=\"t7\">\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"shield\" style=\"width:18px;height:18px;color:#16a34a\">\u003C\u002Fi> Votre situation\u003C\u002Fh2>\n\n    \u003Cdiv id=\"transfert-result\">\n      \u003Cdiv style=\"text-align:center;padding:16px 0\">\n        \u003Cp style=\"font-size:13px;color:#78716c;margin-bottom:8px\">Résultat\u003C\u002Fp>\n        \u003Cp class=\"big-number\" id=\"t-score\" style=\"color:#78716c\">0\u002F7\u003C\u002Fp>\n        \u003Cp style=\"font-size:14px;color:#78716c;margin-top:6px\" id=\"t-verdict\">Cochez les cases ci-dessus\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv id=\"t-conditions-box\" style=\"margin-top:12px;display:none\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\" style=\"margin-top:12px\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>Si toutes les conditions sont remplies, le nouveau prestataire doit reprendre votre contrat avec le même salaire brut mensuel et les éléments de rémunération fixes. Vous basculez immédiatement sur la convention collective de la nouvelle entreprise.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- =========================================\n     PANEL 6 : PRIMES ET INDEMNITÉS\n     ========================================= -->\n\u003Cdiv class=\"panel\" id=\"panel-primes\">\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"gift\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Prime annuelle (13e mois)\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Années d'expérience dans le secteur propreté\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"pr-anc-display\">0 an\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"pr-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"0\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures contractuelles \u002F mois\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"pr-heures-display\">151,67 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"pr-heures\" min=\"40\" max=\"152\" step=\"0.5\" value=\"151.67\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"results-grid\" style=\"margin-top:8px\">\n      \u003Cdiv class=\"result-card success\">\n        \u003Cp class=\"result-label\">Prime annuelle brute\u003C\u002Fp>\n        \u003Cp class=\"result-value success\" id=\"pr-prime13\">0 €\u003C\u002Fp>\n        \u003Cp class=\"result-sub\" id=\"pr-prime13-sub\">Moins de 1 an dans le secteur\u003C\u002Fp>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"result-card\">\n        \u003Cp class=\"result-label\">Taux appliqué\u003C\u002Fp>\n        \u003Cp class=\"result-value\" id=\"pr-taux13\">– %\u003C\u002Fp>\n        \u003Cp class=\"result-sub\">du salaire minimum ASP A mensuel\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"info-box\" style=\"margin-top:12px\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>La prime est calculée sur la base du \u003Cstrong>salaire minimum ASP A\u003C\u002Fstrong> (12,38 €\u002Fh × 151,67 h = 1 878 €\u002Fmois). Elle est versée en novembre et proratisée selon les absences.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"card\">\n    \u003Ch2>\u003Ci data-lucide=\"truck\" style=\"width:18px;height:18px;color:#2563eb\">\u003C\u002Fi> Indemnités complémentaires\u003C\u002Fh2>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-header\">\n        \u003Clabel>Heures contractuelles \u002F mois (pour l'indemnité de transport)\u003C\u002Flabel>\n        \u003Cspan class=\"value\" id=\"pr-h-transport-display\">151,67 h\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"pr-h-transport\" min=\"40\" max=\"152\" step=\"0.5\" value=\"151.67\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"breakdown\">\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Panier repas (si ≥ 6h30\u002Fjour)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"pr-panier\">8,44 € \u002F vacation\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Indemnité de transport (≥ 104 h\u002Fmois)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"pr-transport\">35,50 € \u002F mois\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Indemnité de transport (\u003C 104 h\u002Fmois)\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\" id=\"pr-transport-partiel\">Proratisée\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Congés payés légaux\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">30 jours \u002F an (5 semaines)\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Congé mariage\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">4 jours\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Congé naissance \u002F adoption\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">3 jours\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"breakdown-row\">\n        \u003Cspan class=\"breakdown-label\">Congé décès conjoint \u002F enfant\u003C\u002Fspan>\n        \u003Cspan class=\"breakdown-value\">5 jours\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv id=\"pr-transport-warning\" class=\"warn-box\" style=\"display:none;margin-top:12px\">\n      \u003Ci data-lucide=\"alert-triangle\" style=\"width:16px;height:16px\">\u003C\u002Fi>\n      \u003Cspan>Avec moins de 104 h\u002Fmois, l'indemnité de transport est proratisée : \u003Cstrong id=\"pr-transport-pro\">–\u003C\u002Fstrong> €\u002Fmois.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cp class=\"disclaimer\">\n  Données basées sur la Convention collective nationale IDCC 3043 (Avenant n°26, 1er juin 2025) et la grille de salaires 2025-2026.\u003Cbr>\n  Cet outil est fourni à titre informatif. Pour toute situation personnelle, consultez un avocat ou un syndicat.\n\u003C\u002Fp>\n\n\u003Cscript>\n\u002F\u002F ============================================================\n\u002F\u002F DATA\n\u002F\u002F ============================================================\nconst NIVEAUX = {\n  ASP_A:  { taux: 12.38, label: 'ASP col. A' },\n  ASP_B:  { taux: 12.57, label: 'ASP col. B' },\n  ASC_A:  { taux: 12.43, label: 'ASC col. A' },\n  ASC_B:  { taux: 12.65, label: 'ASC col. B' },\n  ASCS_A: { taux: 12.50, label: 'ASCS col. A' },\n  ASCS_B: { taux: 12.72, label: 'ASCS col. B' },\n  AQS:    { taux: 12.56, label: 'AQS' },\n  ATQS:   { taux: 13.03, label: 'ATQS' },\n  CE1:    { taux: 14.26, label: 'CE1' },\n  CE2:    { taux: 15.09, label: 'CE2' },\n  CE3:    { taux: 15.26, label: 'CE3' },\n  MP1:    { taux: 15.33, label: 'MP1' },\n  MP2:    { taux: 16.20, label: 'MP2' },\n  MP3:    { taux: 17.96, label: 'MP3' },\n  MP4:    { taux: 20.01, label: 'MP4' },\n  MP5:    { taux: 21.63, label: 'MP5' },\n  EA1:    { taux: 12.47, label: 'EA1' },\n  EA2:    { taux: 13.37, label: 'EA2' },\n  EA3:    { taux: 14.72, label: 'EA3' },\n  EA4:    { taux: 16.10, label: 'EA4' },\n  MA1:    { taux: 17.89, label: 'MA1' },\n  MA2:    { taux: 20.32, label: 'MA2' },\n  MA3:    { taux: 21.42, label: 'MA3' },\n};\n\nconst ANCIENNETE_PALIERS = [\n  { ans: 4,  pct: 0.02,  label: '4 ans → 2 %' },\n  { ans: 6,  pct: 0.03,  label: '6 ans → 3 %' },\n  { ans: 8,  pct: 0.04,  label: '8 ans → 4 %' },\n  { ans: 10, pct: 0.05,  label: '10 ans → 5 %' },\n  { ans: 15, pct: 0.055, label: '15 ans → 5,5 %' },\n  { ans: 20, pct: 0.06,  label: '20 ans → 6 %' },\n  { ans: 25, pct: 0.07,  label: '25 ans → 7 %' },\n];\n\n\u002F\u002F Préavis tables (mois ancienneté → durée)\nconst PREAVIS = {\n  licenciement: {\n    agent:    [[0,1,'1 semaine'],[6,1,'1 mois'],[24,2,'2 mois']],\n    employe:  [[0,1,'1 mois'],[24,2,'2 mois']],\n    maitrise: [[2,1,'1 mois'],[24,2,'2 mois']],\n    cadre:    [[0,3,'3 mois']],\n  },\n  demission: {\n    agent:    [[0,0.05,'2 jours'],[6,0.25,'1 semaine'],[24,0.25,'1 semaine']],\n    employe:  [[0,1,'1 mois'],[24,1,'1 mois']],\n    maitrise: [[2,1,'1 mois'],[24,2,'2 mois']],\n    cadre:    [[0,3,'3 mois']],\n  }\n};\n\n\u002F\u002F ============================================================\n\u002F\u002F FORMATTERS\n\u002F\u002F ============================================================\nconst fmtEur = n => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(n);\nconst fmtEur2 = n => new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(n);\nconst fmtNum = n => new Intl.NumberFormat('fr-FR', { maximumFractionDigits: 2 }).format(n);\n\n\u002F\u002F ============================================================\n\u002F\u002F TAB NAVIGATION\n\u002F\u002F ============================================================\ndocument.querySelectorAll('.tab').forEach(tab => {\n  tab.addEventListener('click', () => {\n    document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));\n    document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));\n    tab.classList.add('active');\n    document.getElementById('panel-' + tab.dataset.tab).classList.add('active');\n    if (window.lucide) lucide.createIcons();\n  });\n});\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 1 : SALAIRE\n\u002F\u002F ============================================================\nconst niveauSel = document.getElementById('niveau-select');\nconst heuresSlider = document.getElementById('heures-slider');\nconst heuresDisplay = document.getElementById('heures-display');\n\nfunction computeSalaire() {\n  const niv = NIVEAUX[niveauSel.value] || NIVEAUX['ASP_A'];\n  const h = parseFloat(heuresSlider.value);\n  const mensuel = niv.taux * h;\n  heuresDisplay.textContent = fmtNum(h) + ' h';\n  document.getElementById('res-taux').textContent = fmtNum(niv.taux) + ' €';\n  document.getElementById('res-mensuel').textContent = fmtEur(mensuel);\n  document.getElementById('res-annuel').textContent = fmtEur(mensuel * 12);\n  document.getElementById('res-heures-label').textContent = 'pour ' + fmtNum(h) + ' h\u002Fmois';\n  document.getElementById('bd-taux').textContent = fmtNum(niv.taux) + ' €\u002Fh';\n  document.getElementById('bd-heures').textContent = fmtNum(h) + ' h';\n  document.getElementById('bd-base').textContent = fmtEur(mensuel);\n  document.getElementById('niveau-info-text').textContent =\n    'Taux horaire minimal pour le niveau ' + niv.label + ' (Avenant n°26, 1er juin 2025). ' +\n    'Salaire brut mensuel pour ' + fmtNum(h) + ' h\u002Fmois : ' + fmtEur(mensuel) + '.';\n}\nniveauSel.addEventListener('change', computeSalaire);\nheuresSlider.addEventListener('input', computeSalaire);\ncomputeSalaire();\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 2 : ANCIENNETÉ\n\u002F\u002F ============================================================\nconst ancSlider = document.getElementById('anc-slider');\nconst ancDisplay = document.getElementById('anc-display');\nconst ancNiveauSel = document.getElementById('anc-niveau-select');\nconst ancHeures = document.getElementById('anc-heures');\nconst ancHeuresDisplay = document.getElementById('anc-heures-display');\n\nfunction getPalier(ans) {\n  let palier = null;\n  for (const p of ANCIENNETE_PALIERS) {\n    if (ans >= p.ans) palier = p;\n    else break;\n  }\n  return palier;\n}\n\nfunction computeAnciennete() {\n  const ans = parseInt(ancSlider.value);\n  const h = parseFloat(ancHeures.value);\n  const niv = NIVEAUX[ancNiveauSel.value] || NIVEAUX['ASP_A'];\n  ancDisplay.textContent = ans + (ans \u003C= 1 ? ' an' : ' ans');\n  ancHeuresDisplay.textContent = fmtNum(h) + ' h';\n\n  const palier = getPalier(ans);\n  const pct = palier ? palier.pct : 0;\n  const base = niv.taux * h;\n  const prime = base * pct;\n\n  document.getElementById('anc-taux').textContent = (pct * 100).toFixed(1).replace('.', ',') + ' %';\n  document.getElementById('anc-prime').textContent = fmtEur(prime);\n  document.getElementById('anc-prime-an').textContent = fmtEur(prime * 12);\n\n  if (!palier) {\n    document.getElementById('anc-palier').textContent = 'Aucun droit avant 4 ans';\n  } else {\n    document.getElementById('anc-palier').textContent = palier.label;\n  }\n}\nancSlider.addEventListener('input', computeAnciennete);\nancNiveauSel.addEventListener('change', computeAnciennete);\nancHeures.addEventListener('input', computeAnciennete);\ncomputeAnciennete();\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 3 : HEURES SUPP & MAJORATIONS\n\u002F\u002F ============================================================\nfunction bindSlider(id, displayId, suffix, digits) {\n  const el = document.getElementById(id);\n  const disp = document.getElementById(displayId);\n  el.addEventListener('input', () => {\n    const v = parseFloat(el.value);\n    disp.textContent = fmtNum(v) + ' ' + suffix;\n    computeHeures();\n  });\n}\nbindSlider('h-taux', 'h-taux-display', '€', 2);\nbindSlider('h-sup1', 'h-sup1-display', 'h', 1);\nbindSlider('h-sup2', 'h-sup2-display', 'h', 1);\nbindSlider('h-nuit', 'h-nuit-display', 'h', 1);\nbindSlider('h-nuit-occ', 'h-nuit-occ-display', 'h', 1);\nbindSlider('h-dim', 'h-dim-display', 'h', 1);\nbindSlider('h-ferie', 'h-ferie-display', 'h', 1);\n\nfunction computeHeures() {\n  const taux = parseFloat(document.getElementById('h-taux').value);\n  const sup1 = parseFloat(document.getElementById('h-sup1').value);\n  const sup2 = parseFloat(document.getElementById('h-sup2').value);\n  const nuit = parseFloat(document.getElementById('h-nuit').value);\n  const nuitOcc = parseFloat(document.getElementById('h-nuit-occ').value);\n  const dim = parseFloat(document.getElementById('h-dim').value);\n  const ferie = parseFloat(document.getElementById('h-ferie').value);\n\n  const maj_sup1 = sup1 * taux * 0.25;\n  const maj_sup2 = sup2 * taux * 0.50;\n  const maj_nuit = nuit * taux * 0.20;\n  const maj_nuit_occ = nuitOcc * taux * 1.00;\n  const maj_dim = dim * taux * 0.20;\n  const maj_ferie = ferie * taux * 1.00;\n  const total = maj_sup1 + maj_sup2 + maj_nuit + maj_nuit_occ + maj_dim + maj_ferie;\n\n  document.getElementById('bd-sup1').textContent = fmtEur2(maj_sup1);\n  document.getElementById('bd-sup2').textContent = fmtEur2(maj_sup2);\n  document.getElementById('bd-nuit').textContent = fmtEur2(maj_nuit);\n  document.getElementById('bd-nuit-occ').textContent = fmtEur2(maj_nuit_occ);\n  document.getElementById('bd-dim').textContent = fmtEur2(maj_dim);\n  document.getElementById('bd-ferie').textContent = fmtEur2(maj_ferie);\n  document.getElementById('bd-total-maj').textContent = fmtEur2(total);\n}\ncomputeHeures();\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 4 : PRÉAVIS\n\u002F\u002F ============================================================\nconst pCategorie = document.getElementById('p-categorie');\nconst pAncSlider = document.getElementById('p-anc');\nconst pAncDisplay = document.getElementById('p-anc-display');\nconst pHandicap = document.getElementById('p-handicap');\nlet pSituation = 'licenciement';\n\ndocument.getElementById('p-situation-pills').querySelectorAll('.pill').forEach(pill => {\n  pill.addEventListener('click', () => {\n    document.getElementById('p-situation-pills').querySelectorAll('.pill').forEach(p => p.classList.remove('active'));\n    pill.classList.add('active');\n    pSituation = pill.dataset.value;\n    computePreavis();\n  });\n});\n\nfunction getPreavis(cat, situation, moisAnc) {\n  const table = PREAVIS[situation][cat];\n  let result = null;\n  for (const row of table) {\n    if (moisAnc >= row[0]) result = row;\n    else break;\n  }\n  return result;\n}\n\nfunction computePreavis() {\n  const cat = pCategorie.value;\n  const mois = parseInt(pAncSlider.value);\n  const handicap = pHandicap.checked;\n  pAncDisplay.textContent = mois \u003C 12\n    ? mois + (mois \u003C= 1 ? ' mois' : ' mois')\n    : Math.floor(mois\u002F12) + ' an' + (mois >= 24 ? 's' : '') + (mois % 12 ? ' ' + (mois%12) + ' mois' : '');\n\n  const res = getPreavis(cat, pSituation, mois);\n  let texte = res ? res[2] : 'Non applicable (trop peu d\\'ancienneté)';\n  let valeur = res ? res[2] : '–';\n\n  if (handicap && res) {\n    const doubleMois = res[1] * 2;\n    const capMois = Math.min(doubleMois, 3);\n    if (capMois >= 3) {\n      valeur = '3 mois (plafond RQTH)';\n    } else if (capMois \u003C 1) {\n      valeur = Math.round(capMois * 4) + ' semaines (doublé RQTH)';\n    } else {\n      valeur = capMois + ' mois (doublé RQTH)';\n    }\n  }\n\n  const catLabels = {\n    agent: 'Agent de propreté',\n    employe: 'Employé administratif',\n    maitrise: 'Technicien \u002F Maîtrise',\n    cadre: 'Cadre'\n  };\n  const sitLabels = { licenciement: 'Licenciement', demission: 'Démission' };\n\n  document.getElementById('preavis-duree').textContent = valeur;\n  document.getElementById('preavis-unite').textContent = res ? '' : '';\n  document.getElementById('p-res-categorie').textContent = catLabels[cat];\n  document.getElementById('p-res-situation').textContent = sitLabels[pSituation];\n  document.getElementById('p-res-anc').textContent = pAncDisplay.textContent;\n  document.getElementById('handicap-warn').style.display = handicap ? 'flex' : 'none';\n}\npCategorie.addEventListener('change', computePreavis);\npAncSlider.addEventListener('input', computePreavis);\npHandicap.addEventListener('change', computePreavis);\ncomputePreavis();\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 5 : TRANSFERT\n\u002F\u002F ============================================================\nconst transfertIds = ['t1','t2','t3','t4','t5','t6','t7'];\nconst transfertLabels = [\n  '≥ 30% du temps sur ce site',\n  '≥ 6 mois sur ce site',\n  'CDI ou CDD de remplacement',\n  'Pas absent ≥ 4 mois consécutifs',\n  'Autorisé à travailler en France',\n  'Pas sous préavis',\n  'Pas déclaré inapte définitivement'\n];\n\nfunction computeTransfert() {\n  let score = 0;\n  transfertIds.forEach(id => {\n    if (document.getElementById(id).checked) score++;\n  });\n  const scoreEl = document.getElementById('t-score');\n  const verdictEl = document.getElementById('t-verdict');\n  const condBox = document.getElementById('t-conditions-box');\n  scoreEl.textContent = score + '\u002F7';\n\n  if (score === 0) {\n    scoreEl.style.color = '#78716c';\n    verdictEl.textContent = 'Cochez les cases ci-dessus';\n    condBox.style.display = 'none';\n  } else if (score === 7) {\n    scoreEl.style.color = '#15803d';\n    verdictEl.textContent = 'Transfert obligatoire — Toutes les conditions sont remplies';\n    condBox.style.display = 'block';\n    condBox.innerHTML = '\u003Cdiv class=\"info-box\">\u003Ci data-lucide=\"check-circle\" style=\"width:16px;height:16px;color:#16a34a\">\u003C\u002Fi>\u003Cspan>Votre contrat doit être repris par le nouveau prestataire. Le refus constitue un licenciement sans cause réelle et sérieuse.\u003C\u002Fspan>\u003C\u002Fdiv>';\n  } else {\n    scoreEl.style.color = '#ea580c';\n    verdictEl.textContent = `${7-score} condition(s) manquante(s) — Transfert incertain`;\n    condBox.style.display = 'block';\n    let html = '\u003Cdiv class=\"warn-box\">\u003Ci data-lucide=\"alert-triangle\" style=\"width:16px;height:16px\">\u003C\u002Fi>\u003Cspan>Conditions non remplies :\u003C\u002Fspan>\u003C\u002Fdiv>';\n    html += '\u003Cul class=\"checklist\" style=\"margin-top:8px\">';\n    transfertIds.forEach((id, i) => {\n      const checked = document.getElementById(id).checked;\n      const icon = checked ? 'check-yes' : 'check-no';\n      const iconName = checked ? 'check-circle' : 'x-circle';\n      const iconColor = checked ? '#15803d' : '#dc2626';\n      html += `\u003Cli>\u003Cspan class=\"check-icon ${icon}\">\u003Ci data-lucide=\"${iconName}\" style=\"width:14px;height:14px;color:${iconColor}\">\u003C\u002Fi>\u003C\u002Fspan>\u003Cspan>${transfertLabels[i]}\u003C\u002Fspan>\u003C\u002Fli>`;\n    });\n    html += '\u003C\u002Ful>';\n    condBox.innerHTML = html;\n  }\n  if (window.lucide) lucide.createIcons();\n}\ntransfertIds.forEach(id => {\n  document.getElementById(id).addEventListener('change', computeTransfert);\n});\ncomputeTransfert();\n\n\u002F\u002F ============================================================\n\u002F\u002F PANEL 6 : PRIMES\n\u002F\u002F ============================================================\nconst prAncSlider = document.getElementById('pr-anc');\nconst prAncDisplay = document.getElementById('pr-anc-display');\nconst prHeures = document.getElementById('pr-heures');\nconst prHeuresDisplay = document.getElementById('pr-heures-display');\nconst prHTransport = document.getElementById('pr-h-transport');\nconst prHTransportDisplay = document.getElementById('pr-h-transport-display');\n\n\u002F\u002F Base de calcul prime 13e mois = ASP A × 151,67 h\nconst BASE_13 = 12.38 * 151.67; \u002F\u002F ~1 878 €\nconst TAUX_13_NORMAL = 0.186405;\nconst TAUX_13_SENIOR = 0.278398; \u002F\u002F 20+ ans\n\nfunction computePrimes() {\n  const ans = parseInt(prAncSlider.value);\n  const h = parseFloat(prHeures.value);\n  const hTransport = parseFloat(prHTransport.value);\n\n  prAncDisplay.textContent = ans + (ans \u003C= 1 ? ' an' : ' ans');\n  prHeuresDisplay.textContent = fmtNum(h) + ' h';\n  prHTransportDisplay.textContent = fmtNum(hTransport) + ' h';\n\n  \u002F\u002F Prime 13e mois\n  let prime13 = 0;\n  let taux13 = 0;\n  let sub13 = '';\n  if (ans \u003C 1) {\n    prime13 = 0;\n    taux13 = 0;\n    sub13 = 'Moins de 1 an dans le secteur';\n  } else if (ans >= 20) {\n    taux13 = TAUX_13_SENIOR;\n    prime13 = BASE_13 * taux13 * (h \u002F 151.67);\n    sub13 = '≥ 20 ans d\\'expérience secteur';\n  } else {\n    taux13 = TAUX_13_NORMAL;\n    prime13 = BASE_13 * taux13 * (h \u002F 151.67);\n    sub13 = '1–19 ans d\\'expérience secteur';\n  }\n  document.getElementById('pr-prime13').textContent = fmtEur(prime13);\n  document.getElementById('pr-taux13').textContent = (taux13 * 100).toFixed(4).replace('.', ',') + ' %';\n  document.getElementById('pr-prime13-sub').textContent = sub13;\n\n  \u002F\u002F Transport\n  const TRANSPORT_PLEIN = 35.50;\n  if (hTransport >= 104) {\n    document.getElementById('pr-transport').textContent = fmtNum(TRANSPORT_PLEIN) + ' €\u002Fmois';\n    document.getElementById('pr-transport-warning').style.display = 'none';\n  } else {\n    const prorata = (TRANSPORT_PLEIN * hTransport \u002F 104);\n    document.getElementById('pr-transport').textContent = fmtNum(TRANSPORT_PLEIN) + ' €\u002Fmois';\n    document.getElementById('pr-transport-warning').style.display = 'flex';\n    document.getElementById('pr-transport-pro').textContent = fmtNum(prorata);\n    document.getElementById('pr-transport-partiel').textContent = fmtNum(prorata) + ' €\u002Fmois';\n  }\n}\nprAncSlider.addEventListener('input', computePrimes);\nprHeures.addEventListener('input', computePrimes);\nprHTransport.addEventListener('input', computePrimes);\ncomputePrimes();\n\n\u002F\u002F ============================================================\n\u002F\u002F INIT\n\u002F\u002F ============================================================\nif (window.lucide) lucide.createIcons();\n\nnew ResizeObserver(() => {\n  parent.postMessage({ type: 'resize', height: document.body.scrollHeight + 32 }, '*');\n}).observe(document.body);\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","consumer","embed","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fproprete-idcc-3043-droits-agents-7b6848a634.webp",[]]