[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-root-categories-fr-FR":3,"tool-content-simulateur-fourchette-salariale-fr":83,"footer-cities-fr":121},[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":99,"tool_html":115,"source":116,"category":117,"audience":118,"publish_mode":119,"hero_image":120,"hero_image_alt":85},"simulateur-fourchette-salariale","Simulateur de fourchette salariale","Simulateur de fourchette salariale — Expert-Zoom","Construisez des fourchettes salariales conformes à la directive 2023\u002F970 pour vos offres d'emploi, ou vérifiez qu'une offre existante respecte les recommandations.","Cet outil vous aide à définir une fourchette salariale réaliste et conforme à la directive européenne sur la transparence salariale. Saisissez un salaire de référence pour générer automatiquement une fourchette aux bonnes amplitudes (15–20 % recommandés), ou contrôlez la conformité d'une fourchette déjà publiée dans une offre d'emploi. Un outil indispensable pour les recruteurs et DRH avant le 7 juin 2026.",[90],{"name":85,"@type":91,"offers":92,"inLanguage":96,"description":87,"operatingSystem":97,"applicationCategory":98},"WebApplication",{"@type":93,"price":94,"priceCurrency":95},"Offer","0","EUR","fr","Any","BusinessApplication",[100,103,106,109,112],{"a":101,"q":102},"Oui. La directive 2023\u002F970, transposée en France avant le 7 juin 2026, impose à tous les employeurs d'indiquer la rémunération proposée ou une fourchette dans les offres d'emploi et avant le premier entretien. Ne pas le faire expose l'entreprise à des pénalités.","La directive oblige-t-elle vraiment à publier une fourchette salariale dans les offres d'emploi ?",{"a":104,"q":105},"Les experts RH recommandent une amplitude de 15 à 20 % entre le bas et le haut de la fourchette, pour refléter fidèlement la grille interne. Une fourchette trop étroite (\u003C 10 %) risque d'être trop rigide ; une fourchette trop large (> 30 %) manque de précision et peut sembler peu sérieuse.","Quelle amplitude est recommandée pour une fourchette salariale conforme ?",{"a":107,"q":108},"Non. La directive interdit explicitement aux employeurs de demander à un candidat de révéler sa rémunération actuelle ou passée. L'objectif est de rompre le cycle de perpétuation des inégalités salariales lors des recrutements.","Peut-on encore demander l'historique de rémunération d'un candidat ?",{"a":110,"q":111},"Oui, la fourchette doit être réaliste et refléter le salaire que l'entreprise envisage réellement d'offrir. Publier une fourchette artificielle (très large pour attirer des candidats) sans intention de proposer le haut de fourchette peut être considéré comme trompeur.","La fourchette salariale doit-elle correspondre exactement au salaire offert ?",{"a":113,"q":114},"Oui, les obligations de transparence au recrutement (affichage de la fourchette dans les offres d'emploi) s'appliquent à toutes les entreprises dès le 1er salarié. Seul le reporting périodique sur les écarts de rémunération est réservé aux entreprises de 100 salariés et plus.","Une PME de moins de 50 salariés est-elle concernée par la transparence des fourchettes ?","\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>Simulateur de fourchette salariale\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    :root {\n      --bg: #fafaf9;\n      --surface: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --green: #16a34a;\n      --green-light: #f0fdf4;\n      --amber: #d97706;\n      --amber-light: #fffbeb;\n      --red: #dc2626;\n      --red-light: #fef2f2;\n      --text: #1c1917;\n      --text-muted: #78716c;\n      --radius: 12px;\n    }\n    body { background: var(--bg); font-family: system-ui, -apple-system, sans-serif; color: var(--text); font-size: 15px; line-height: 1.5; }\n    .tool-root { max-width: 640px; margin: 0 auto; padding: 24px 16px 40px; }\n    .tool-header { margin-bottom: 20px; }\n    .tool-title { font-size: 1.25rem; font-weight: 700; color: var(--text); display: flex; align-items: center; gap: 8px; }\n    .tool-title i { color: var(--accent); }\n    .tool-subtitle { font-size: 0.875rem; color: var(--text-muted); margin-top: 4px; }\n    .tabs { display: flex; gap: 0; border-bottom: 2px solid var(--border); margin-bottom: 20px; }\n    .tab-btn {\n      padding: 10px 16px; font-size: 0.875rem; font-weight: 500; background: none; border: none;\n      cursor: pointer; color: var(--text-muted); white-space: nowrap; border-bottom: 2px solid transparent;\n      margin-bottom: -2px; transition: color 0.15s;\n    }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); }\n    .tab-btn:hover:not(.active) { color: var(--text); }\n    .card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 20px; margin-bottom: 14px; }\n    .callout {\n      background: var(--accent-light); border: 1px solid #bfdbfe; border-radius: 8px;\n      padding: 12px 16px; font-size: 0.8125rem; color: #1d4ed8; margin-bottom: 16px;\n      display: flex; align-items: flex-start; gap: 8px;\n    }\n    .callout i { flex-shrink: 0; margin-top: 2px; }\n    .field { margin-bottom: 14px; }\n    .field label { display: block; font-size: 0.8125rem; font-weight: 600; color: var(--text-muted); margin-bottom: 6px; }\n    .field input[type=number] {\n      width: 100%; padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px;\n      font-size: 0.9375rem; color: var(--text); background: var(--surface); font-variant-numeric: tabular-nums;\n    }\n    .field input[type=number]:focus { outline: 2px solid var(--accent); border-color: transparent; }\n    .field input[type=range] { width: 100%; accent-color: var(--accent); }\n    .field .hint { font-size: 0.75rem; color: var(--text-muted); margin-top: 4px; }\n    .field .range-val { font-size: 0.875rem; font-weight: 700; color: var(--accent); }\n    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }\n    .result-card { border-radius: var(--radius); padding: 20px; margin-top: 16px; }\n    .result-card.ok { background: var(--green-light); border: 1px solid #bbf7d0; }\n    .result-card.warn { background: var(--amber-light); border: 1px solid #fde68a; }\n    .result-card.bad { background: var(--red-light); border: 1px solid #fecaca; }\n    .result-main { font-size: 1.875rem; font-weight: 800; font-variant-numeric: tabular-nums; margin-bottom: 4px; }\n    .result-card.ok .result-main { color: var(--green); }\n    .result-card.warn .result-main { color: var(--amber); }\n    .result-card.bad .result-main { color: var(--red); }\n    .result-label { font-size: 0.875rem; font-weight: 600; margin-bottom: 8px; }\n    .result-card.ok .result-label { color: #15803d; }\n    .result-card.warn .result-label { color: #92400e; }\n    .result-card.bad .result-label { color: #991b1b; }\n    .result-rows { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; border-top: 1px solid rgba(0,0,0,0.07); padding-top: 12px; }\n    .result-row { display: flex; justify-content: space-between; font-size: 0.875rem; }\n    .result-row .rk { color: var(--text-muted); }\n    .result-row .rv { font-weight: 600; font-variant-numeric: tabular-nums; }\n    \u002F* Fourchette visualizer *\u002F\n    .range-viz { position: relative; height: 48px; margin: 16px 0; }\n    .range-track { position: absolute; top: 50%; transform: translateY(-50%); width: 100%; height: 8px; background: var(--border); border-radius: 99px; }\n    .range-fill { position: absolute; top: 50%; transform: translateY(-50%); height: 8px; background: var(--accent); border-radius: 99px; transition: left 0.2s, width 0.2s; }\n    .range-pin { position: absolute; top: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; border-radius: 50%; background: var(--accent); border: 3px solid white; box-shadow: 0 1px 4px rgba(0,0,0,0.2); transition: left 0.2s; }\n    .range-pin.mid { background: white; border-color: var(--accent); }\n    .range-labels { display: flex; justify-content: space-between; font-size: 0.75rem; color: var(--text-muted); margin-top: 4px; }\n    .tab-panel { display: none; }\n    .tab-panel.active { display: block; }\n    .source { font-size: 0.75rem; color: var(--text-muted); border-top: 1px solid var(--border); padding-top: 14px; margin-top: 20px; }\n    .source a { color: var(--accent); text-decoration: none; }\n    .source a:hover { text-decoration: underline; }\n    .badge { display: inline-block; padding: 2px 8px; border-radius: 99px; font-size: 0.75rem; font-weight: 600; margin-left: 6px; }\n    .badge.ok { background: #dcfce7; color: #15803d; }\n    .badge.warn { background: #fef3c7; color: #92400e; }\n    .badge.bad { background: #fee2e2; color: #991b1b; }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Cdiv class=\"tool-title\">\n      \u003Ci data-lucide=\"briefcase\" width=\"20\" height=\"20\">\u003C\u002Fi>\n      Simulateur de fourchette salariale\n    \u003C\u002Fdiv>\n    \u003Cp class=\"tool-subtitle\">Construisez des fourchettes conformes à la directive 2023\u002F970 pour vos offres d'emploi, ou vérifiez une fourchette existante.\u003C\u002Fp>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"tabs\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn active\" onclick=\"switchTab(0)\" role=\"tab\">Créer une fourchette\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" onclick=\"switchTab(1)\" role=\"tab\">Vérifier une offre\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Tab 0: Créer une fourchette -->\n  \u003Cdiv class=\"tab-panel active\" id=\"panel-0\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"info\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cspan>La directive impose d'afficher une fourchette réaliste avant le 1er entretien. Les experts RH recommandent une amplitude de \u003Cstrong>15 à 20 %\u003C\u002Fstrong> pour refléter fidèlement la grille interne.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire de référence du poste (brut annuel, €)\u003C\u002Flabel>\n        \u003Cinput type=\"number\" id=\"refSal\" value=\"42000\" min=\"15000\" max=\"500000\" step=\"1000\" oninput=\"update()\">\n        \u003Cdiv class=\"hint\">Point médian de votre grille pour ce poste\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Amplitude de la fourchette : \u003Cspan class=\"range-val\" id=\"ampLabel\">18 %\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"ampRange\" min=\"5\" max=\"40\" value=\"18\" oninput=\"updateAmp(this.value)\">\n        \u003Cdiv class=\"hint\">Entre 15 % et 20 % est recommandé · Au-delà de 30 %, la fourchette peut sembler trop vague\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"range-viz\">\n      \u003Cdiv class=\"range-track\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"range-fill\" id=\"vizFill\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"range-pin\" id=\"vizMin\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"range-pin mid\" id=\"vizMid\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"range-pin\" id=\"vizMax\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"range-labels\">\n      \u003Cspan id=\"vizMinLbl\">—\u003C\u002Fspan>\n      \u003Cspan id=\"vizMidLbl\" style=\"text-align:center;\">Médian\u003C\u002Fspan>\n      \u003Cspan id=\"vizMaxLbl\" style=\"text-align:right;\">—\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"res-create\">\n      \u003Cdiv class=\"result-main\" id=\"res-create-range\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-label\" id=\"res-create-label\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-rows\">\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Minimum (salaire plancher)\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-create-min\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Maximum (salaire plafond)\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-create-max\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Amplitude réelle\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-create-amp\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Conformité directive\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-create-conf\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Tab 1: Vérifier une fourchette -->\n  \u003Cdiv class=\"tab-panel\" id=\"panel-1\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"info\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cspan>Saisissez la fourchette publiée dans une offre d'emploi pour vérifier qu'elle est réaliste, non discriminatoire, et qu'elle couvre bien un niveau de rémunération cohérent.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"form-grid\">\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Salaire minimum affiché (€ brut\u002Fan)\u003C\u002Flabel>\n          \u003Cinput type=\"number\" id=\"chkMin\" value=\"35000\" min=\"0\" step=\"500\" oninput=\"updateCheck()\">\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"field\">\n          \u003Clabel>Salaire maximum affiché (€ brut\u002Fan)\u003C\u002Flabel>\n          \u003Cinput type=\"number\" id=\"chkMax\" value=\"42000\" min=\"0\" step=\"500\" oninput=\"updateCheck()\">\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>SMIC annuel brut de référence (2026, €)\u003C\u002Flabel>\n        \u003Cinput type=\"number\" id=\"smicRef\" value=\"21203\" min=\"10000\" max=\"30000\" step=\"100\" oninput=\"updateCheck()\">\n        \u003Cdiv class=\"hint\">SMIC 2026 estimé — vérifiez le montant en vigueur sur legifrance.gouv.fr\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"res-check\">\n      \u003Cdiv class=\"result-main\" id=\"res-check-range\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-label\" id=\"res-check-label\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-rows\">\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Amplitude calculée\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-check-amp\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Salaire médian implicite\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-check-mid\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Au-dessus du SMIC ?\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-check-smic\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n        \u003Cdiv class=\"result-row\">\u003Cspan class=\"rk\">Appréciation\u003C\u002Fspan>\u003Cspan class=\"rv\" id=\"res-check-conf\">—\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"source\">\n    \u003Cstrong>Sources :\u003C\u002Fstrong>\n    \u003Ca href=\"https:\u002F\u002Fwww.la-recrue.fr\u002Fveille-rh\u002Ftransparence-salariale-obligations\u002F\" target=\"_blank\" rel=\"noopener\">La-Recrue – Obligations transparence salariale 2026\u003C\u002Fa> ·\n    \u003Ca href=\"https:\u002F\u002Fentreprendre.service-public.gouv.fr\u002Factualites\u002FA18526\" target=\"_blank\" rel=\"noopener\">Service-Public Entreprendre\u003C\u002Fa> ·\n    Directive (UE) 2023\u002F970 · Ce simulateur est indicatif, non un conseil juridique.\n  \u003C\u002Fdiv>\n\u003C\u002Fmain>\n\u003Cscript>\n  const fmtEur = v => new Intl.NumberFormat('fr', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(v);\n  const fmtPct = v => new Intl.NumberFormat('fr', { style: 'percent', minimumFractionDigits: 1, maximumFractionDigits: 1 }).format(v \u002F 100);\n\n  let ampValue = 18;\n\n  function updateAmp(v) {\n    ampValue = parseInt(v);\n    document.getElementById('ampLabel').textContent = ampValue + ' %';\n    update();\n  }\n\n  function update() {\n    const ref = parseFloat(document.getElementById('refSal').value) || 0;\n    const amp = ampValue;\n    const half = amp \u002F 2;\n    const minSal = ref * (1 - half \u002F 100);\n    const maxSal = ref * (1 + half \u002F 100);\n\n    \u002F\u002F Viz\n    const vizRange = maxSal - minSal;\n    const total = maxSal * 1.05 - minSal * 0.95;\n    const offset = minSal * 0.95;\n    const pMin = ((minSal - offset) \u002F total * 100).toFixed(1);\n    const pMid = ((ref - offset) \u002F total * 100).toFixed(1);\n    const pMax = ((maxSal - offset) \u002F total * 100).toFixed(1);\n    document.getElementById('vizFill').style.left = pMin + '%';\n    document.getElementById('vizFill').style.width = (pMax - pMin) + '%';\n    document.getElementById('vizMin').style.left = pMin + '%';\n    document.getElementById('vizMid').style.left = pMid + '%';\n    document.getElementById('vizMax').style.left = pMax + '%';\n    document.getElementById('vizMinLbl').textContent = fmtEur(minSal);\n    document.getElementById('vizMidLbl').textContent = fmtEur(ref);\n    document.getElementById('vizMaxLbl').textContent = fmtEur(maxSal);\n\n    \u002F\u002F Result card\n    const cls = amp \u003C 10 ? 'bad' : amp \u003C= 25 ? 'ok' : 'warn';\n    const card = document.getElementById('res-create');\n    card.className = 'result-card ' + cls;\n    document.getElementById('res-create-range').textContent = fmtEur(minSal) + ' – ' + fmtEur(maxSal);\n    const labels = {\n      ok: 'Fourchette conforme — amplitude recommandée (15–25 %)',\n      bad: 'Fourchette trop étroite — risque de non-conformité',\n      warn: 'Fourchette large — peut sembler peu précise'\n    };\n    document.getElementById('res-create-label').textContent = labels[cls];\n    document.getElementById('res-create-min').textContent = fmtEur(minSal);\n    document.getElementById('res-create-max').textContent = fmtEur(maxSal);\n    document.getElementById('res-create-amp').textContent = fmtPct(amp);\n    const badgeCls = cls;\n    const badgeTxt = cls === 'ok' ? 'Conforme' : cls === 'bad' ? 'À revoir' : 'Attention';\n    document.getElementById('res-create-conf').innerHTML = `\u003Cspan class=\"badge ${badgeCls}\">${badgeTxt}\u003C\u002Fspan>`;\n  }\n\n  function updateCheck() {\n    const mn = parseFloat(document.getElementById('chkMin').value) || 0;\n    const mx = parseFloat(document.getElementById('chkMax').value) || 0;\n    const smic = parseFloat(document.getElementById('smicRef').value) || 21203;\n\n    if (mx \u003C= mn) {\n      const card = document.getElementById('res-check');\n      card.className = 'result-card bad';\n      document.getElementById('res-check-range').textContent = 'Erreur';\n      document.getElementById('res-check-label').textContent = 'Le salaire maximum doit être supérieur au minimum';\n      return;\n    }\n\n    const amp = (mx - mn) \u002F mn * 100;\n    const mid = (mn + mx) \u002F 2;\n    const aboveSmic = mn >= smic;\n\n    const cls = amp >= 10 && amp \u003C= 30 && aboveSmic ? 'ok' : amp \u003C 5 || !aboveSmic ? 'bad' : 'warn';\n    const card = document.getElementById('res-check');\n    card.className = 'result-card ' + cls;\n    document.getElementById('res-check-range').textContent = fmtEur(mn) + ' – ' + fmtEur(mx);\n    const labels = {\n      ok: 'Fourchette valide — cohérente et conforme',\n      bad: 'Fourchette non conforme — vérification requise',\n      warn: 'Fourchette à ajuster — amplitude hors recommandations'\n    };\n    document.getElementById('res-check-label').textContent = labels[cls];\n    document.getElementById('res-check-amp').textContent = fmtPct(amp);\n    document.getElementById('res-check-mid').textContent = fmtEur(mid);\n    document.getElementById('res-check-smic').innerHTML = aboveSmic\n      ? `\u003Cspan class=\"badge ok\">Oui (${fmtEur(mn)} ≥ SMIC ${fmtEur(smic)})\u003C\u002Fspan>`\n      : `\u003Cspan class=\"badge bad\">Non — sous le SMIC légal\u003C\u002Fspan>`;\n    const badgeTxt = cls === 'ok' ? 'Conforme' : cls === 'bad' ? 'Non conforme' : 'À revoir';\n    document.getElementById('res-check-conf').innerHTML = `\u003Cspan class=\"badge ${cls}\">${badgeTxt}\u003C\u002Fspan>`;\n  }\n\n  function switchTab(n) {\n    document.querySelectorAll('.tab-btn').forEach((b, i) => b.classList.toggle('active', i === n));\n    document.querySelectorAll('.tab-panel').forEach((p, i) => p.classList.toggle('active', i === n));\n  }\n\n  document.addEventListener('DOMContentLoaded', () => {\n    lucide.createIcons();\n    update();\n    updateCheck();\n  });\n\n  const ro = new ResizeObserver(() => {\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n  ro.observe(document.documentElement);\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fsimulateur-fourchette-salariale-440e3d26dd.webp",[]]