{"id":18790,"date":"2026-05-26T16:16:50","date_gmt":"2026-05-26T14:16:50","guid":{"rendered":""},"modified":"2026-05-26T16:16:50","modified_gmt":"2026-05-26T14:16:50","slug":"nis-2","status":"publish","type":"page","link":"https:\/\/www.grip-facility.com\/fr\/plateforme\/nis-2\/","title":{"rendered":"Conformit\u00e9 NIS-2 pour la sant\u00e9 et l&rsquo;enseignement | GRIP \u2014 connecting contracts &#038; facility"},"content":{"rendered":"\n<style>\n.hero__btn--secondary{background:transparent;color:#fff;border:2px solid rgba(255,255,255,0.6)}.hero__btn--secondary:hover{background:rgba(255,255,255,0.12);border-color:#fff;transform:translateY(-2px);color:#fff}.nis2-eyebrow-pill{display:inline-block;background:rgba(255,75,42,0.15);color:#FF4B2A;font-size:0.72rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;padding:4px 12px;border-radius:12px;border:1px solid rgba(255,75,42,0.25);margin-bottom:1rem}\n.nis2-pijlers{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-top:2.5rem}\n.nis2-pc{background:#fff;border:1px solid #E5E7EB;border-radius:16px;padding:1.75rem;transition:box-shadow 0.2s;border-top:3px solid #006BFF}\n.nis2-pc:hover{box-shadow:0 8px 24px rgba(0,0,0,0.08)}\n.nis2-pc-num{font-size:0.7rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:#006BFF;margin-bottom:0.6rem;font-family:\"Poppins\",sans-serif}\n.nis2-pc-title{font-size:1rem;font-weight:700;color:#0F172A;margin-bottom:0.5rem;font-family:\"Poppins\",sans-serif}\n.nis2-pc-desc{font-size:0.875rem;color:#64748B;line-height:1.6;margin-bottom:0.75rem;font-family:\"Poppins\",sans-serif}\n.nis2-pc-tag{display:inline-block;background:#EFF6FF;color:#006BFF;font-size:0.72rem;font-weight:600;padding:3px 10px;border-radius:12px;font-family:\"Poppins\",sans-serif}\n.nis2-pijlers-img{margin-top:2.5rem;border-radius:16px;overflow:hidden;box-shadow:0 4px 32px rgba(0,0,0,0.10)}\n.nis2-pijlers-img img{width:100%;display:block}\n.nis2-diff{background:linear-gradient(135deg,#0F172A 0%,#1E3A5F 100%);border-radius:20px;padding:2.5rem;margin-top:2.5rem;display:flex;gap:2rem;align-items:flex-start}\n.nis2-diff-icon{background:rgba(0,107,255,0.2);border-radius:12px;padding:1rem;flex-shrink:0;color:#60A5FA;font-size:1.5rem;line-height:1}\n.nis2-diff-title{font-size:1.15rem;font-weight:700;color:#fff;margin-bottom:0.5rem;font-family:\"Poppins\",sans-serif}\n.nis2-diff-text{font-size:0.9rem;color:rgba(255,255,255,0.8);line-height:1.65;font-family:\"Poppins\",sans-serif}\n.nis2-diff-badges{display:flex;gap:0.5rem;flex-wrap:wrap;margin-top:1rem}\n.nis2-diff-badge{background:rgba(255,255,255,0.1);color:rgba(255,255,255,0.85);font-size:0.75rem;font-weight:600;padding:4px 12px;border-radius:12px;border:1px solid rgba(255,255,255,0.15);font-family:\"Poppins\",sans-serif}\n.nis2-scan-placeholder{background:#F8FAFC;border:2px dashed #E2E8F0;border-radius:20px;padding:3rem 2rem;margin-top:2rem;text-align:center}.nis2-intro{font-size:1rem;font-weight:400;color:#475569;line-height:1.7;margin-bottom:0;text-transform:none;letter-spacing:0}\n@media(max-width:900px){.nis2-pijlers{grid-template-columns:1fr 1fr}.nis2-diff{flex-direction:column}}\n@media(max-width:600px){.nis2-pijlers{grid-template-columns:1fr}}\n<\/style>\n\n<section class=\"hero hero--blue\">\n  <div class=\"hero__overlay\">\n    <div class=\"hero__inner\">\n      <div class=\"hero__content\">\n        <span class=\"hero__eyebrow\">NIS-2 Compliance<\/span>\n        <span class=\"nis2-eyebrow-pill\">Loi sur la cybers\u00e9curit\u00e9 &#8212; en vigueur au T2 2026<\/span>\n\n        <h1 class=\"hero__title\">\n          Rendez vos contrats et fournisseurs <span class=\"highlight\">conformes NIS-2<\/span>\n        <\/h1>\n\n        <p class=\"hero__subtitle\">\n          La loi sur la cybers\u00e9curit\u00e9 arrive. GRIP aide les organisations de soins de sant\u00e9, d&rsquo;enseignement et du secteur public \u00e0 rendre leurs contrats et fournisseurs conformes NIS-2, \u00e9tape par \u00e9tape &#8212; \u00e0 votre rythme.\n        <\/p>\n\n        <div class=\"hero__actions\">\n          <a href=\"#nis2-scan\" class=\"hero__btn hero__btn--primary\">Faire le scan NIS-2<\/a>\n          <a href=\"\/demo\/\" class=\"hero__btn hero__btn--secondary\">R\u00e9server une d\u00e9mo<\/a>\n        <\/div>\n\n        <div class=\"hero__meta\">\n          <span class=\"hero__meta-pill\">Sant\u00e9<\/span>\n          <span class=\"hero__meta-pill\">Enseignement<\/span>\n          <span class=\"hero__meta-pill\">Secteur public<\/span>\n          <span class=\"hero__meta-pill\">\u00c9nergie &amp; transport<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"hero__media\">\n        <div class=\"hero__media-frame\">\n          <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/01\/contract-overview.png\" alt=\"Vue d'ensemble des contrats dans GRIP\" class=\"hero__image\">\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<div style=\"max-width:1120px;margin:0 auto 0.5rem;padding:1rem 1.5rem;background:#F0F7FF;border-left:4px solid #006BFF;border-radius:6px;font-family:'Poppins',sans-serif;\">\n  <p style=\"margin:0;font-size:0.95rem;color:#0F172A;line-height:1.6;\">Vous souhaitez d&rsquo;abord comprendre ce que NIS-2 exige de vos contrats fournisseurs ? Lisez l&rsquo;explication compl\u00e8te : <a href=\"https:\/\/www.grip-facility.com\/nis2-contractmanagement-leveranciers\/\" style=\"color:#006BFF;font-weight:600;text-decoration:underline;\">NIS-2 et gestion des contrats : ma\u00eetrisez vos risques fournisseurs<\/a>.<\/p>\n<\/div>\n\n\n\n\n\n<section class=\"kpi-section\">\n  <div class=\"kpi-grid\">\n    <div class=\"kpi-item\">\n      <div class=\"kpi-number\">Q2 2026<\/div>\n      <div class=\"kpi-label\">Loi cybers\u00e9curit\u00e9 en vigueur &#8212; sans p\u00e9riode de transition<\/div>\n    <\/div>\n    <div class=\"kpi-item\">\n      <div class=\"kpi-number\">4-6 wk<\/div>\n      <div class=\"kpi-label\">onboarding moyen chez GRIP &#8212; pr\u00eat pour NIS-2 en un trimestre<\/div>\n    <\/div>\n    <div class=\"kpi-item\">\n      <div class=\"kpi-number\">24 uur<\/div>\n      <div class=\"kpi-label\">premi\u00e8re notification pour un incident de s\u00e9curit\u00e9 &#8212; GRIP vous aide \u00e0 rationaliser ce processus<\/div>\n    <\/div>\n    <div class=\"kpi-item\">\n      <div class=\"kpi-number\">268+<\/div>\n      <div class=\"kpi-label\">organisations g\u00e8rent d\u00e9j\u00e0 leurs contrats et fournisseurs dans GRIP<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<section class=\"challenges-section\">\n  <div class=\"challenges-container\">\n    <span class=\"challenges-eyebrow\">NIS-2 en 60 secondes<\/span>\n    <h2 class=\"challenges-heading\">Ce que la loi exige &#8212; et o\u00f9 GRIP vous aide<\/h2>\n\n    <div class=\"challenges-grid\">\n      <div class=\"challenge-card\">\n        <div class=\"challenge-icon\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" width=\"32\" height=\"32\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\" \/>\n          <\/svg>\n        <\/div>\n        <h3 class=\"challenge-title\">S\u00e9curit\u00e9 de la cha\u00eene d&rsquo;approvisionnement (art. 21)<\/h3>\n        <p class=\"challenge-desc\">Formaliser les accords de s\u00e9curit\u00e9 par fournisseur : obligation de signalement des incidents, droit d&rsquo;audit et politique de s\u00e9curit\u00e9 minimale. Nous le rendons applicable.<\/p>\n      <\/div>\n\n      <div class=\"challenge-card\">\n        <div class=\"challenge-icon\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" width=\"32\" height=\"32\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" \/>\n          <\/svg>\n        <\/div>\n        <h3 class=\"challenge-title\">Obligation de signalement des incidents (art. 23)<\/h3>\n        <p class=\"challenge-desc\">Les incidents de s\u00e9curit\u00e9 doivent \u00eatre signal\u00e9s dans les 24 heures (alerte pr\u00e9coce), 72 heures (mise \u00e0 jour) et 1 mois (rapport final) au CSIRT. GRIP vous donne la structure pour respecter ces d\u00e9lais facilement.<\/p>\n      <\/div>\n\n      <div class=\"challenge-card\">\n        <div class=\"challenge-icon\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" width=\"32\" height=\"32\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0 1 16.5 7.605\" \/>\n          <\/svg>\n        <\/div>\n        <h3 class=\"challenge-title\">Gestion des risques par fournisseur<\/h3>\n        <p class=\"challenge-desc\">Un registre des risques actualis\u00e9 par fournisseur, avec classification et mesures d&rsquo;att\u00e9nuation. Dans GRIP, vous le maintenez sans feuilles de calcul suppl\u00e9mentaires.<\/p>\n      <\/div>\n\n      <div class=\"challenge-card\">\n        <div class=\"challenge-icon\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" width=\"32\" height=\"32\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" \/>\n          <\/svg>\n        <\/div>\n        <h3 class=\"challenge-title\">Preuves pour l&rsquo;autorit\u00e9 de contr\u00f4le<\/h3>\n        <p class=\"challenge-desc\">Lors d&rsquo;une inspection de l&rsquo;IGJ ou du NCSC, vous avez rapidement besoin d&rsquo;un dossier de conformit\u00e9 complet. GRIP le g\u00e9n\u00e8re en un seul clic &#8212; tout en un seul endroit.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<section class=\"feature-section\" style=\"background:#F8FAFC;\" id=\"nis2-scan\">\n  <div class=\"feature-container\">\n    <h2 class=\"feature-heading\" style=\"text-align:center;\">O\u00f9 en \u00eates-vous avec NIS-2 ?<\/h2>\n    <p class=\"nis2-intro\" style=\"text-align:center;max-width:680px;margin-left:auto;margin-right:auto;\">\n      Faites le scan gratuit et recevez en 2 minutes un rapport personnalis\u00e9 : o\u00f9 vous \u00eates en bonne position, o\u00f9 il reste du travail, et quelle \u00e9tape il vaut mieux faire en premier. Pas de discours commercial &#8212; juste un tableau honn\u00eate.\n    <\/p>\n\n    <style>\n      .nis2w{--blue:#1E3A5F;--blue-soft:#F0F5FB;--orange:#FF4B2A;--ink:#0F172A;--muted:#64748B;--line:#E5E9F0;--soft:#F8FAFC;--green:#10B981;--amber:#F59E0B;--red:#EF4444;font-family:\"Poppins\",sans-serif;background:#fff;border:1px solid var(--line);border-radius:20px;padding:2.5rem;margin-top:2rem;box-shadow:0 4px 24px rgba(15,23,42,0.06);max-width:760px;margin-left:auto;margin-right:auto}\n      .nis2w *{box-sizing:border-box}\n      .nis2w-progress{display:flex;align-items:center;gap:0.75rem;margin-bottom:2rem;font-size:0.78rem;color:var(--muted);font-weight:600;letter-spacing:0.04em;text-transform:uppercase}\n      .nis2w-progress-bar{flex:1;height:3px;background:#EEF2F7;border-radius:2px;overflow:hidden}\n      .nis2w-progress-fill{height:100%;background:var(--blue);border-radius:2px;transition:width 0.4s ease}\n      .nis2w-step-label{flex-shrink:0}\n\n      .nis2w-q{padding:1.25rem 0;border-top:1px solid var(--line)}\n      .nis2w-q:first-child{border-top:none;padding-top:0}\n      .nis2w-q-label{font-size:0.98rem;font-weight:600;color:var(--ink);margin-bottom:0.85rem;line-height:1.45;display:flex;gap:0.6rem;align-items:flex-start}\n      .nis2w-q-num{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;background:var(--blue-soft);color:var(--blue);font-size:0.75rem;font-weight:700;border-radius:50%;margin-top:0.05rem}\n      .nis2w-q.is-answered .nis2w-q-num{background:var(--blue);color:#fff}\n      .nis2w-q.is-locked{opacity:0.45;pointer-events:none}\n\n      .nis2w-options{display:flex;flex-wrap:wrap;gap:0.5rem}\n      .nis2w-options.is-stack{flex-direction:column}\n      .nis2w-options.is-stack .nis2w-opt{width:100%;text-align:left}\n      .nis2w-opt{flex:1 1 auto;min-width:80px;padding:0.7rem 1rem;border:1.5px solid var(--line);border-radius:10px;background:#fff;font-family:inherit;font-size:0.9rem;font-weight:500;color:var(--ink);cursor:pointer;transition:all 0.15s ease;text-align:center}\n      .nis2w-opt:hover{border-color:var(--blue);background:var(--blue-soft)}\n      .nis2w-opt.is-selected{border-color:var(--blue);background:var(--blue);color:#fff;font-weight:600}\n\n      .nis2w-sub-block{margin-top:0.85rem;padding:1rem 1.1rem;background:var(--blue-soft);border-radius:10px}\n      .nis2w-sub-label{font-size:0.85rem;font-weight:600;color:var(--blue);margin-bottom:0.6rem}\n      .nis2w-sub-block .nis2w-options .nis2w-opt{background:#fff}\n      .nis2w-sub-block .nis2w-options .nis2w-opt.is-selected{background:var(--blue);color:#fff}\n\n      .nis2w-actions{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}\n      .nis2w-btn{display:inline-block;padding:0.8rem 1.7rem;border-radius:10px;font-family:inherit;font-size:0.92rem;font-weight:600;cursor:pointer;border:none;transition:all 0.15s ease;text-decoration:none;text-align:center}\n      .nis2w-btn-primary{background:var(--blue);color:#fff}\n      .nis2w-btn-primary:hover{background:#152C4A;transform:translateY(-1px)}\n      .nis2w-btn-primary:disabled{background:#CBD5E1;color:#fff;cursor:not-allowed;transform:none}\n      .nis2w-btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}\n      .nis2w-btn-ghost:hover{color:var(--blue);border-color:var(--blue)}\n      .nis2w-counter{font-size:0.82rem;color:var(--muted)}\n\n      .nis2w-input{width:100%;padding:0.7rem 0.9rem;border:1.5px solid var(--line);border-radius:10px;font-family:inherit;font-size:0.92rem;color:var(--ink);background:#fff;transition:border-color 0.15s}\n      .nis2w-input:focus{outline:none;border-color:var(--blue)}\n      .nis2w-field{margin-bottom:0.9rem}\n      .nis2w-field label{display:block;font-size:0.85rem;font-weight:600;color:var(--ink);margin-bottom:0.4rem}\n      .nis2w-grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}\n      .nis2w-checkbox{display:flex;align-items:flex-start;gap:0.6rem;font-size:0.85rem;color:var(--muted);line-height:1.5;cursor:pointer;margin-top:0.5rem}\n      .nis2w-checkbox input{margin-top:0.2rem;flex-shrink:0}\n      .nis2w-error{font-size:0.85rem;color:var(--red);margin-top:0.6rem}\n\n      .nis2w-result-hero{text-align:center;padding:0.5rem 0 1.5rem 0}\n      .nis2w-ring{width:160px;height:160px;margin:0 auto 1.25rem auto;position:relative}\n      .nis2w-ring svg{transform:rotate(-90deg)}\n      .nis2w-ring-bg{fill:none;stroke:#EEF2F7;stroke-width:10}\n      .nis2w-ring-fg{fill:none;stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 0.6s ease,stroke 0.3s}\n      .nis2w-ring-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}\n      .nis2w-ring-num{font-size:2.5rem;font-weight:700;color:var(--ink);line-height:1}\n      .nis2w-ring-of{font-size:0.78rem;color:var(--muted);margin-top:0.2rem}\n      .nis2w-verdict{font-size:1.1rem;font-weight:700;margin-bottom:0.4rem}\n      .nis2w-verdict-sub{font-size:0.92rem;color:var(--muted);max-width:520px;margin:0 auto;line-height:1.55}\n      .nis2w-subscores{display:grid;grid-template-columns:repeat(3,1fr);gap:0.75rem;margin:1.5rem 0}\n      .nis2w-sub-card{background:var(--soft);border-radius:12px;padding:1rem;text-align:center}\n      .nis2w-sub-name{font-size:0.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.4rem}\n      .nis2w-sub-val{font-size:1.4rem;font-weight:700;color:var(--ink)}\n      .nis2w-section-title{font-size:0.78rem;font-weight:700;color:var(--blue);text-transform:uppercase;letter-spacing:0.06em;margin:2rem 0 0.75rem 0}\n      .nis2w-issue{display:flex;gap:0.75rem;padding:0.85rem 1rem;background:var(--soft);border-left:3px solid var(--amber);border-radius:8px;margin-bottom:0.6rem}\n      .nis2w-issue.is-no{border-left-color:var(--red)}\n      .nis2w-issue-body{font-size:0.88rem;color:var(--ink);line-height:1.55}\n      .nis2w-issue-feature{display:block;font-size:0.78rem;color:var(--blue);font-weight:600;margin-top:0.25rem}\n      .nis2w-steps{counter-reset:step;list-style:none;padding:0;margin:0}\n      .nis2w-steps li{counter-increment:step;position:relative;padding:0.6rem 0 0.6rem 2.25rem;font-size:0.92rem;color:var(--ink);line-height:1.5}\n      .nis2w-steps li::before{content:counter(step);position:absolute;left:0;top:0.55rem;width:1.6rem;height:1.6rem;background:var(--blue);color:#fff;border-radius:50%;font-size:0.78rem;font-weight:700;display:flex;align-items:center;justify-content:center}\n      .nis2w-result-actions{display:flex;flex-wrap:wrap;gap:0.75rem;justify-content:center;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}\n      .nis2w-disclaimer{font-size:0.78rem;color:var(--muted);text-align:center;margin-top:1.5rem;font-style:italic;line-height:1.5}\n\n      @media(max-width:640px){\n        .nis2w{padding:1.5rem}\n        .nis2w-grid2{grid-template-columns:1fr}\n        .nis2w-subscores{grid-template-columns:1fr}\n        .nis2w-actions{flex-direction:column-reverse;align-items:stretch}\n        .nis2w-actions .nis2w-btn{width:100%}\n        .nis2w-counter{text-align:center}\n        .nis2w-opt{flex:1 1 calc(50% - 0.25rem)}\n      }\n    <\/style>\n\n    <div class=\"nis2w\" id=\"nis2-scan-widget\">\n      <div class=\"nis2w-progress\">\n        <span class=\"nis2w-step-label\" id=\"nis2w-step-label\">0 van 14 beantwoord<\/span>\n        <div class=\"nis2w-progress-bar\"><div class=\"nis2w-progress-fill\" id=\"nis2w-progress-fill\" style=\"width:0%\"><\/div><\/div>\n      <\/div>\n      <div id=\"nis2w-content\"><\/div>\n    <\/div>\n\n    <script>\n    (function(){\n      var widget = document.getElementById('nis2-scan-widget');\n      if(!widget) return;\n      var contentEl = document.getElementById('nis2w-content');\n      var stepLabel = document.getElementById('nis2w-step-label');\n      var progressFill = document.getElementById('nis2w-progress-fill');\n\n      var state = {\n        phase: 'questions', \/\/ 'questions' | 'lead' | 'result'\n        sectorMain: null,   \/\/ 'zorg' | 'onderwijs' | 'publiek' | 'anders'\n        sectorSub: null,    \/\/ 'cure' | 'care' | 'ho' | 'mbo' | 'vo' | 'energie' | 'overheid' | null\n        size: null,\n        suppliers: null,\n        answers: {},\n        lead: { name:'', role:'', org:'', email:'', phone:'', consent:false }\n      };\n\n      var sectorMainOpts = [\n        { value:'zorg', label:'Sant\u00e9', subs:[\n          { value:'cure', label:'Cure (h\u00f4pitaux, cliniques)' },\n          { value:'care', label:'Care (sant\u00e9 mentale, soins de longue dur\u00e9e, soins \u00e0 domicile)' }\n        ]},\n        { value:'onderwijs', label:'Enseignement', subs:[\n          { value:'ho', label:'Enseignement sup\u00e9rieur (universit\u00e9\/haute \u00e9cole)' },\n          { value:'mbo', label:'Enseignement professionnel (MBO)' },\n          { value:'vo', label:'Enseignement secondaire' }\n        ]},\n        { value:'publiek', label:'Secteur public', subs:[\n          { value:'overheid', label:'Commune ou province' },\n          { value:'energie', label:'\u00c9nergie ou transport' }\n        ]},\n        { value:'anders', label:'Autre', subs:null }\n      ];\n\n      var sizeOpts = [\n        { value:'<50', label:'Moins de 50' },\n        { value:'50-250', label:'50 \u00e0 250' },\n        { value:'250+', label:'Plus de 250' }\n      ];\n\n      var supplierOpts = [\n        { value:'<10', label:'Moins de 10' },\n        { value:'10-50', label:'10 \u00e0 50' },\n        { value:'50+', label:'Plus de 50' }\n      ];\n\n      var nis2Questions = [\n        { id:'q1', cat:'supply', text:'Disposez-vous d\\'un aper\u00e7u actualis\u00e9 de tous vos fournisseurs critiques ?', feature:'Registre des fournisseurs et contrats' },\n        { id:'q2', cat:'supply', text:'Les contrats fournisseurs contiennent-ils des clauses de s\u00e9curit\u00e9 (obligation de signalement, audits, politiques minimales) ?', feature:'Clauses de s\u00e9curit\u00e9 par contrat' },\n        { id:'q3', cat:'supply', text:'V\u00e9rifiez-vous p\u00e9riodiquement que les fournisseurs respectent toujours les accords ?', feature:'\u00c9valuation annuelle des fournisseurs' },\n        { id:'q4', cat:'audit', text:'Disposez-vous d\\'une piste d\\'audit indiquant qui a modifi\u00e9 quoi et quand dans les contrats ?', feature:'Journal des modifications + journal des \u00e9v\u00e9nements' },\n        { id:'q5', cat:'gov', text:'Disposez-vous d\\'un processus document\u00e9 pour le signalement des incidents (24h\/72h\/1 mois) ?', feature:'Module de gestion des incidents' },\n        { id:'q6', cat:'gov', text:'La direction est-elle impliqu\u00e9e de mani\u00e8re d\u00e9montrable dans les d\u00e9cisions de cybers\u00e9curit\u00e9 ?', feature:'Tableau de bord direction th\u00e8me KPI NIS-2' },\n        { id:'q7', cat:'gov', text:'Disposez-vous d\\'un registre des risques actualis\u00e9 par fournisseur ?', feature:'Classification des risques par contrat' },\n        { id:'q8', cat:'audit', text:'Les modifications de contrats sont-elles contr\u00f4l\u00e9es avant approbation ?', feature:'Flux d\\'approbation des modifications' },\n        { id:'q9', cat:'audit', text:'Disposez-vous d\\'un emplacement central pour tous les contrats et annexes avec gestion des versions ?', feature:'Coffre-fort documentaire' },\n        { id:'q10', cat:'audit', text:'Pouvez-vous fournir des preuves en une semaine pour une inspection NIS-2 ?', feature:'Rapport d\\'autorit\u00e9 de contr\u00f4le' }\n      ];\n\n      var answerOpts = [\n        { value:'ja', label:'Oui' },\n        { value:'deels', label:'Partiellement' },\n        { value:'nee', label:'Non' }\n      ];\n\n      var TOTAL_STEPS = 13; \/\/ sector(+sub als 1 stap visueel) + size + suppliers + 10 vragen\n\n      function escapeHtml(s){\n        return String(s)\n          .split('&#038;').join('&amp;')\n          .split('<').join('&lt;')\n          .split('>').join('&gt;')\n          .split('\"').join('&quot;')\n          .split(\"'\").join('&#39;');\n      }\n\n      function countAnswered(){\n        var n = 0;\n        if(state.sectorMain){\n          var sm = sectorMainOpts.find(function(o){ return o.value === state.sectorMain; });\n          if(!sm.subs || state.sectorSub) n++;\n        }\n        if(state.size) n++;\n        if(state.suppliers) n++;\n        nis2Questions.forEach(function(q){ if(state.answers[q.id]) n++; });\n        return n;\n      }\n\n      function setProgress(){\n        if(state.phase === 'lead'){\n          stepLabel.textContent = 'Presque termin\u00e9';\n          progressFill.style.width = '95%';\n          return;\n        }\n        if(state.phase === 'result'){\n          stepLabel.textContent = 'Votre rapport';\n          progressFill.style.width = '100%';\n          return;\n        }\n        var n = countAnswered();\n        stepLabel.textContent = n + ' sur ' + TOTAL_STEPS + ' r\u00e9pondues';\n        progressFill.style.width = Math.round((n \/ TOTAL_STEPS) * 100) + '%';\n      }\n\n      function render(){\n        setProgress();\n        if(state.phase === 'questions') renderQuestions();\n        else if(state.phase === 'lead') renderLead();\n        else if(state.phase === 'result') renderResult();\n      }\n\n      \/\/ Helper: render \u00c3\u00a9\u00c3\u00a9n vraag met opties\n      function questionBlock(num, label, optionsHtml, isAnswered, isLocked){\n        var cls = 'nis2w-q' + (isAnswered ? ' is-answered' : '') + (isLocked ? ' is-locked' : '');\n        return '<div class=\"' + cls + '\" data-qnum=\"' + num + '\">' +\n               '<div class=\"nis2w-q-label\"><span class=\"nis2w-q-num\">' + num + '<\/span><span>' + label + '<\/span><\/div>' +\n               optionsHtml +\n               '<\/div>';\n      }\n\n      function optionsHtml(groupKey, options, currentValue, stack){\n        var stackCls = stack ? ' is-stack' : '';\n        var html = '<div class=\"nis2w-options' + stackCls + '\" data-key=\"' + groupKey + '\">';\n        options.forEach(function(opt){\n          var selected = currentValue === opt.value ? ' is-selected' : '';\n          html += '<button type=\"button\" class=\"nis2w-opt' + selected + '\" data-value=\"' + escapeHtml(opt.value) + '\">' + opt.label + '<\/button>';\n        });\n        html += '<\/div>';\n        return html;\n      }\n\n      function renderQuestions(){\n        var html = '';\n        var num = 1;\n\n        \/\/ Question 1 : secteur\n        var sectorAnswered = !!state.sectorMain && (function(){\n          var sm = sectorMainOpts.find(function(o){ return o.value === state.sectorMain; });\n          return !sm.subs || state.sectorSub;\n        })();\n        var sectorHtml = optionsHtml('sectorMain', sectorMainOpts, state.sectorMain, false);\n        \/\/ Afficher le sous-choix en ligne\n        if(state.sectorMain){\n          var sm = sectorMainOpts.find(function(o){ return o.value === state.sectorMain; });\n          if(sm && sm.subs){\n            sectorHtml += '<div class=\"nis2w-sub-block\">';\n            sectorHtml += '<div class=\"nis2w-sub-label\">Lequel pr\u00e9cis\u00e9ment ?<\/div>';\n            sectorHtml += optionsHtml('sectorSub', sm.subs, state.sectorSub, true);\n            sectorHtml += '<\/div>';\n          }\n        }\n        html += questionBlock(num, 'Dans quel secteur se trouve votre organisation ?', sectorHtml, sectorAnswered, false);\n        num++;\n\n        \/\/ Vraag 2: size \u00e2\u20ac\u201d alleen als sector beantwoord\n        if(sectorAnswered){\n          var sizeHtml = optionsHtml('size', sizeOpts, state.size, false);\n          html += questionBlock(num, 'Combien d\\'employ\u00e9s votre organisation compte-t-elle ?', sizeHtml, !!state.size, false);\n        }\n        num++;\n\n        \/\/ Vraag 3: suppliers \u00e2\u20ac\u201d alleen als size beantwoord\n        if(sectorAnswered && state.size){\n          var supHtml = optionsHtml('suppliers', supplierOpts, state.suppliers, false);\n          html += questionBlock(num, 'Combien de fournisseurs critiques avez-vous ?', supHtml, !!state.suppliers, false);\n        }\n        num++;\n\n        \/\/ 10 NIS-2 vragen \u00e2\u20ac\u201d onthullen \u00c3\u00a9\u00c3\u00a9n voor \u00c3\u00a9\u00c3\u00a9n naarmate vorige beantwoord is\n        if(sectorAnswered && state.size && state.suppliers){\n          for(var i = 0; i < nis2Questions.length; i++){\n            var q = nis2Questions[i];\n            var prevAnswered = i === 0 ? true : !!state.answers[nis2Questions[i-1].id];\n            if(!prevAnswered) break;\n            var qOpts = optionsHtml('answer-' + q.id, answerOpts, state.answers[q.id], false);\n            html += questionBlock(num + i, q.text, qOpts, !!state.answers[q.id], false);\n          }\n        }\n\n        \/\/ Pied de page : le bouton appara\u00eet quand les 13 sont r\u00e9pondues\n        var allAnswered = countAnswered() === TOTAL_STEPS;\n        html += '<div class=\"nis2w-actions\">';\n        html += '<span class=\"nis2w-counter\">' + (allAnswered ? 'Tout rempli &#8212; pr\u00eat pour votre rapport' : 'R\u00e9pondez tranquillement &#8212; vos r\u00e9ponses sont sauvegard\u00e9es') + '<\/span>';\n        html += '<button type=\"button\" class=\"nis2w-btn nis2w-btn-primary\" id=\"nis2w-next\" ' + (allAnswered ? '' : 'disabled') + '>Vers mon rapport &rarr;<\/button>';\n        html += '<\/div>';\n\n        contentEl.innerHTML = html;\n        bindQuestionHandlers();\n      }\n\n      function bindQuestionHandlers(){\n        contentEl.querySelectorAll('.nis2w-options').forEach(function(group){\n          var key = group.getAttribute('data-key');\n          group.querySelectorAll('.nis2w-opt').forEach(function(btn){\n            btn.addEventListener('click', function(){\n              var val = btn.getAttribute('data-value');\n              if(key === 'sectorMain'){\n                if(state.sectorMain !== val){\n                  state.sectorMain = val;\n                  state.sectorSub = null;\n                }\n              } else if(key === 'sectorSub'){\n                state.sectorSub = val;\n              } else if(key === 'size'){\n                state.size = val;\n              } else if(key === 'suppliers'){\n                state.suppliers = val;\n              } else if(key.indexOf('answer-') === 0){\n                var qid = key.substring(7);\n                state.answers[qid] = val;\n              }\n              var prevHeight = widget.scrollHeight;\n              renderQuestions();\n              setProgress();\n              \/\/ Faire d\u00e9filer vers la nouvelle question visible (la derni\u00e8re)\n              setTimeout(function(){\n                var last = contentEl.querySelector('.nis2w-q:not(.is-answered)');\n                if(last && widget.scrollHeight > prevHeight){\n                  last.scrollIntoView({ behavior:'smooth', block:'center' });\n                }\n              }, 50);\n            });\n          });\n        });\n        var next = document.getElementById('nis2w-next');\n        if(next) next.addEventListener('click', function(){\n          if(countAnswered() === TOTAL_STEPS){\n            state.phase = 'lead';\n            render();\n            widget.scrollIntoView({ behavior:'smooth', block:'start' });\n          }\n        });\n      }\n\n      function renderLead(){\n        var html = '<h3 style=\"font-size:1.35rem;font-weight:700;color:var(--ink);margin:0 0 0.4rem 0;\">Presque termin\u00e9 &#8212; o\u00f9 souhaitez-vous recevoir le rapport ?<\/h3>';\n        html += '<p style=\"font-size:0.95rem;color:var(--muted);line-height:1.55;margin:0 0 1.5rem 0;\">Votre rapport appara\u00eetra directement \u00e0 l\\'\u00e9cran. Nous vous enverrons \u00e9galement une copie dans votre bo\u00eete mail afin que vous puissiez la partager avec votre d\u00e9partement IT ou votre direction.<\/p>';\n        html += '<div class=\"nis2w-grid2\">';\n        html += '<div class=\"nis2w-field\"><label>Nom<\/label><input type=\"text\" class=\"nis2w-input\" id=\"nis2w-name\" value=\"' + escapeHtml(state.lead.name) + '\" autocomplete=\"name\"><\/div>';\n        html += '<div class=\"nis2w-field\"><label>Fonction<\/label><input type=\"text\" class=\"nis2w-input\" id=\"nis2w-role\" value=\"' + escapeHtml(state.lead.role) + '\" autocomplete=\"organization-title\"><\/div>';\n        html += '<\/div>';\n        html += '<div class=\"nis2w-grid2\">';\n        html += '<div class=\"nis2w-field\"><label>Organisation<\/label><input type=\"text\" class=\"nis2w-input\" id=\"nis2w-org\" value=\"' + escapeHtml(state.lead.org) + '\" autocomplete=\"organization\"><\/div>';\n        html += '<div class=\"nis2w-field\"><label>Adresse e-mail<\/label><input type=\"email\" class=\"nis2w-input\" id=\"nis2w-email\" value=\"' + escapeHtml(state.lead.email) + '\" autocomplete=\"email\"><\/div>';\n        html += '<\/div>';\n        html += '<div class=\"nis2w-field\"><label>Num\u00e9ro de t\u00e9l\u00e9phone <span style=\"color:var(--muted);font-weight:400;\">(optionnel)<\/span><\/label><input type=\"tel\" class=\"nis2w-input\" id=\"nis2w-phone\" value=\"' + escapeHtml(state.lead.phone) + '\" autocomplete=\"tel\" placeholder=\"Si vous souhaitez parler \u00e0 quelqu\\'un\"><\/div>';\n        html += '<label class=\"nis2w-checkbox\"><input type=\"checkbox\" id=\"nis2w-consent\"' + (state.lead.consent ? ' checked' : '') + '>';\n        html += '<span>J\\'accepte que GRIP utilise mes donn\u00e9es pour envoyer le rapport et me contacter une seule fois. Pas de newsletter, pas de revente. Voir notre <a href=\"\/privacy\/\" target=\"_blank\" rel=\"noopener\">politique de confidentialit\u00e9<\/a>.<\/span><\/label>';\n        html += '<div class=\"nis2w-error\" id=\"nis2w-lead-error\" style=\"display:none\"><\/div>';\n        html += '<div class=\"nis2w-actions\">';\n        html += '<button type=\"button\" class=\"nis2w-btn nis2w-btn-ghost\" id=\"nis2w-back\">&larr; Retour<\/button>';\n        html += '<button type=\"button\" class=\"nis2w-btn nis2w-btn-primary\" id=\"nis2w-submit\">Voir mon rapport &rarr;<\/button>';\n        html += '<\/div>';\n        contentEl.innerHTML = html;\n\n        ['name','role','org','email','phone'].forEach(function(f){\n          document.getElementById('nis2w-' + f).addEventListener('input', function(e){ state.lead[f] = e.target.value; });\n        });\n        document.getElementById('nis2w-consent').addEventListener('change', function(e){ state.lead.consent = e.target.checked; });\n        document.getElementById('nis2w-back').addEventListener('click', function(){ state.phase = 'questions'; render(); });\n        document.getElementById('nis2w-submit').addEventListener('click', submitLead);\n      }\n\n      function submitLead(){\n        var err = document.getElementById('nis2w-lead-error');\n        var submitBtn = document.getElementById('nis2w-submit');\n        var l = state.lead;\n        if(!l.name.trim() || !l.role.trim() || !l.org.trim() || !l.email.trim()){\n          err.textContent = 'Veuillez remplir tous les champs.'; err.style.display = 'block'; return;\n        }\n        if(!\/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\/.test(l.email)){\n          err.textContent = 'Veuillez entrer une adresse e-mail valide.'; err.style.display = 'block'; return;\n        }\n        if(!l.consent){\n          err.textContent = 'Veuillez accepter la politique de confidentialit\u00e9.'; err.style.display = 'block'; return;\n        }\n        err.style.display = 'none';\n        if(submitBtn){ submitBtn.disabled = true; submitBtn.textContent = 'Veuillez patienter...'; }\n        sendScanData(function(){\n          state.phase = 'result';\n          render();\n          widget.scrollIntoView({ behavior:'smooth', block:'start' });\n        });\n      }\n\n      function sendScanData(onDone){\n        var r = computeResult();\n        var payload = {\n          name: state.lead.name,\n          role: state.lead.role,\n          org: state.lead.org,\n          email: state.lead.email,\n          phone: state.lead.phone,\n          consent: state.lead.consent,\n          sector: state.sectorMain,\n          sectorSub: state.sectorSub,\n          size: state.size,\n          suppliers: state.suppliers,\n          score: r.score,\n          verdict: r.verdict,\n          color: r.color,\n          subs: r.subs,\n          answers: state.answers,\n          nextSteps: nextSteps(r.score)\n        };\n        var endpoint = '\/wp-json\/grip\/v1\/nis2-scan';\n        var done = false;\n        function finish(){ if(done) return; done = true; if(typeof onDone === 'function') onDone(); }\n        try {\n          fetch(endpoint, {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify(payload)\n          }).then(function(){ finish(); }).catch(function(){ finish(); });\n        } catch(e){ finish(); }\n        setTimeout(finish, 4000); \/\/ safeguard: toujours continuer apr\u00e8s 4s\n      }\n\n      function computeResult(){\n        var pointMap = { ja:2, deels:1, nee:0 };\n        var raw = 0;\n        nis2Questions.forEach(function(q){ raw += pointMap[state.answers[q.id]] || 0; });\n        var score = Math.round((raw \/ 20) * 100);\n        if(state.sectorMain === 'zorg' && state.sectorSub === 'cure') score = Math.min(100, Math.floor(score * 1.1));\n\n        function subScore(cat, count){\n          var sum = 0;\n          nis2Questions.forEach(function(q){ if(q.cat === cat) sum += pointMap[state.answers[q.id]] || 0; });\n          return Math.round((sum \/ (count * 2)) * 100);\n        }\n        var subs = {\n          supply: subScore('supply', 3),\n          gov: subScore('gov', 3),\n          audit: subScore('audit', 4)\n        };\n\n        var verdict, verdictSub, color;\n        if(score < 40){\n          verdict = 'Il y a du travail \u00e0 faire';\n          verdictSub = 'Vous \u00eates au d\u00e9but de votre parcours NIS-2. C\\'est une bonne chose que vous fassiez ce scan &#8212; vous savez maintenant par o\u00f9 commencer. Le plus grand gain se trouve dans la documentation des contrats et des fournisseurs.';\n          color = '#EF4444';\n        } else if(score < 70){\n          verdict = 'Vous \u00eates en bonne voie, mais pas encore pr\u00eat pour une inspection';\n          verdictSub = 'La base est partiellement en place &#8212; vous avez d\u00e9j\u00e0 fait des progr\u00e8s, mais les preuves et les processus manquent encore pour l\\'autorit\u00e9 de contr\u00f4le. Avec des am\u00e9liorations cibl\u00e9es, vous serez pr\u00eat avant le T2 2026.';\n          color = '#F59E0B';\n        } else {\n          verdict = 'Bon travail &#8212; vous \u00eates en bonne position';\n          verdictSub = 'Vous avez les bases en ordre. Les questions restantes sont principalement des am\u00e9liorations : renforcer les preuves, affiner les processus et s\\'assurer que chaque lacune est combl\u00e9e avant le T2 2026.';\n          color = '#10B981';\n        }\n        return { score:score, raw:raw, subs:subs, verdict:verdict, verdictSub:verdictSub, color:color };\n      }\n\n      function riskSentence(q){\n        var sentences = {\n          q1: 'Sans aper\u00e7u des fournisseurs, vous ne pouvez pas \u00e9valuer les risques de la cha\u00eene &#8212; l\\'art. 21 l\\'exige explicitement.',\n          q2: 'Sans clauses de s\u00e9curit\u00e9, vous n\\'avez aucune base juridique si un fournisseur provoque un incident.',\n          q3: 'La documentation unique ne suffit pas &#8212; NIS-2 exige une v\u00e9rification p\u00e9riodique.',\n          q4: 'Sans piste d\\'audit, l\\'autorit\u00e9 de contr\u00f4le ne peut pas voir lors d\\'une inspection qui a modifi\u00e9 quoi et quand.',\n          q5: 'Un processus de gestion des incidents non document\u00e9 signifie presque certainement que vous manquerez le d\u00e9lai de 24 heures.',\n          q6: 'NIS-2 rend la direction personnellement responsable &#8212; l\\'implication d\u00e9montrable est obligatoire.',\n          q7: 'Sans registre des risques, la gestion des risques par fournisseur ne peut pas \u00eatre d\u00e9montr\u00e9e.',\n          q8: 'Les modifications de contrats non contr\u00f4l\u00e9es minent l\\'ensemble de votre dossier de conformit\u00e9.',\n          q9: 'Les fichiers dispers\u00e9s rendent la fourniture de preuves en une semaine pratiquement impossible.',\n          q10: 'Une semaine de preuves est le test pratique de NIS-2 &#8212; si cela \u00e9choue, vous \u00eates expos\u00e9 \u00e0 un risque d\\'inspection.'\n        };\n        return sentences[q.id] || '';\n      }\n\n      function nextSteps(score){\n        if(score < 40){\n          return [\n            'Commencez par un registre central des fournisseurs &#8212; m\u00eame une liste simple est un premier pas.',\n            'D\u00e9terminez quels fournisseurs sont critiques et quelles clauses de s\u00e9curit\u00e9 vous souhaitez inclure.',\n            'Planifiez une r\u00e9union avec votre d\u00e9partement IT et votre direction pour attribuer les responsabilit\u00e9s et le budget.'\n          ];\n        } else if(score < 70){\n          return [\n            'Combler les lacunes qui ressortent de votre rapport &#8212; surtout les r\u00e9ponses \"non\" n\u00e9cessitent attention.',\n            'Mettez \u00e0 jour votre registre des risques avec la classification et les donn\u00e9es de r\u00e9vision par fournisseur.',\n            'Testez votre processus de signalement des incidents avec un exercice sur table pour la chronologie de 24\/72 heures.'\n          ];\n        }\n        return [\n          'Affinez les r\u00e9ponses \"partiellement\" &#8212; faites les derni\u00e8res \u00e9tapes pour obtenir un \"oui\" complet.',\n          'Configurez une exportation du dossier de preuves NIS-2 et testez si vous pouvez le fournir en une semaine.',\n          'Maintenez votre registre des risques et votre piste d\\'audit activement mis \u00e0 jour afin de rester pr\u00eat pour une inspection.'\n        ];\n      }\n\n      function renderResult(){\n        var r = computeResult();\n        var circumference = 2 * Math.PI * 70;\n        var offset = circumference - (r.score \/ 100) * circumference;\n\n        var html = '<div class=\"nis2w-result-hero\">';\n        html += '<div class=\"nis2w-ring\">';\n        html += '<svg width=\"160\" height=\"160\" viewBox=\"0 0 160 160\">';\n        html += '<circle class=\"nis2w-ring-bg\" cx=\"80\" cy=\"80\" r=\"70\"><\/circle>';\n        html += '<circle class=\"nis2w-ring-fg\" cx=\"80\" cy=\"80\" r=\"70\" style=\"stroke:' + r.color + ';stroke-dasharray:' + circumference + ';stroke-dashoffset:' + offset + '\"><\/circle>';\n        html += '<\/svg>';\n        html += '<div class=\"nis2w-ring-text\"><div class=\"nis2w-ring-num\">' + r.score + '<\/div><div class=\"nis2w-ring-of\">sur 100<\/div><\/div>';\n        html += '<\/div>';\n        html += '<div class=\"nis2w-verdict\" style=\"color:' + r.color + '\">' + r.verdict + '<\/div>';\n        html += '<div class=\"nis2w-verdict-sub\">' + r.verdictSub + '<\/div>';\n        html += '<\/div>';\n\n        html += '<div class=\"nis2w-subscores\">';\n        html += '<div class=\"nis2w-sub-card\"><div class=\"nis2w-sub-name\">Supply chain<\/div><div class=\"nis2w-sub-val\">' + r.subs.supply + '<\/div><\/div>';\n        html += '<div class=\"nis2w-sub-card\"><div class=\"nis2w-sub-name\">Governance<\/div><div class=\"nis2w-sub-val\">' + r.subs.gov + '<\/div><\/div>';\n        html += '<div class=\"nis2w-sub-card\"><div class=\"nis2w-sub-name\">Auditability<\/div><div class=\"nis2w-sub-val\">' + r.subs.audit + '<\/div><\/div>';\n        html += '<\/div>';\n\n        var issues = nis2Questions.filter(function(q){\n          var a = state.answers[q.id];\n          return a === 'nee' || a === 'deels';\n        });\n        if(issues.length){\n          html += '<div class=\"nis2w-section-title\">Points qui m\u00e9ritent votre attention<\/div>';\n          issues.forEach(function(q){\n            var a = state.answers[q.id];\n            var cls = a === 'nee' ? ' is-no' : '';\n            html += '<div class=\"nis2w-issue' + cls + '\">';\n            html += '<div class=\"nis2w-issue-body\">' + riskSentence(q);\n            html += '<span class=\"nis2w-issue-feature\">Fonctionnalit\u00e9 GRIP : ' + q.feature + '<\/span>';\n            html += '<\/div><\/div>';\n          });\n        }\n\n        html += '<div class=\"nis2w-section-title\">Trois prochaines \u00e9tapes concr\u00e8tes<\/div>';\n        html += '<ol class=\"nis2w-steps\">';\n        nextSteps(r.score).forEach(function(s){ html += '<li>' + s + '<\/li>'; });\n        html += '<\/ol>';\n\n        html += '<div class=\"nis2w-result-actions\">';\n        html += '<a href=\"\/demo\/\" class=\"nis2w-btn nis2w-btn-primary\">R\u00e9server une d\u00e9mo<\/a>';\n        html += '<button type=\"button\" class=\"nis2w-btn nis2w-btn-ghost\" id=\"nis2w-restart\">Recommencer<\/button>';\n        html += '<\/div>';\n        html += '<p class=\"nis2w-disclaimer\">Ce scan est une auto-\u00e9valuation indicative bas\u00e9e sur vos propres r\u00e9ponses et ne remplace pas un audit NIS-2 formel ou un conseil juridique.<\/p>';\n        contentEl.innerHTML = html;\n\n        document.getElementById('nis2w-restart').addEventListener('click', function(){\n          state = { phase:'questions', sectorMain:null, sectorSub:null, size:null, suppliers:null, answers:{}, lead:{ name:'', role:'', org:'', email:'', phone:'', consent:false } };\n          render();\n        });\n      }\n\n      render();\n    })();\n    <\/script>\n  <\/div>\n<\/section>\n\n\n\n\n\n<section class=\"feature-section\">\n  <div class=\"feature-container\">\n    <h2 class=\"feature-heading\">Comment GRIP vous aide \u00e0 \u00eatre conforme NIS-2<\/h2>\n    <p class=\"nis2-intro\">\n      Vous n&rsquo;avez pas \u00e0 le faire seul, et vous n&rsquo;avez pas besoin d&rsquo;\u00eatre pr\u00eat aujourd&rsquo;hui. GRIP vous offre le fondement contractuel &#8212; et nous vous accompagnons, du registre des fournisseurs au rapport d&rsquo;autorit\u00e9 de contr\u00f4le.\n    <\/p>\n\n    <div class=\"nis2-pijlers\">\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">01<\/div>\n        <div class=\"nis2-pc-title\">Registre des fournisseurs et contrats<\/div>\n        <div class=\"nis2-pc-desc\">Tous les fournisseurs et contrats centralis\u00e9s, avec un responsable par relation. Toujours \u00e0 jour, consultable imm\u00e9diatement par l&rsquo;autorit\u00e9 de contr\u00f4le.<\/div>\n        <span class=\"nis2-pc-tag\">NIS-2 art. 21(2)(d)<\/span>\n      <\/div>\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">02<\/div>\n        <div class=\"nis2-pc-title\">Registre des risques par fournisseur<\/div>\n        <div class=\"nis2-pc-desc\">Classification des risques faible \/ moyen \/ \u00e9lev\u00e9 \/ critique par fournisseur, avec mesures d&rsquo;att\u00e9nuation et date de r\u00e9vision.<\/div>\n        <span class=\"nis2-pc-tag\">Gestion des risques NIS-2<\/span>\n      <\/div>\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">03<\/div>\n        <div class=\"nis2-pc-title\">Clauses de s\u00e9curit\u00e9 dans les contrats<\/div>\n        <div class=\"nis2-pc-desc\">Documenter quelles exigences de s\u00e9curit\u00e9 s&rsquo;appliquent par contrat : obligation de signalement, droit d&rsquo;audit, conservation des donn\u00e9es et politique de s\u00e9curit\u00e9 minimale.<\/div>\n        <span class=\"nis2-pc-tag\">NIS-2 art. 21(2)(d)<\/span>\n      <\/div>\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">04<\/div>\n        <div class=\"nis2-pc-title\">Gestion des incidents 24h\/72h<\/div>\n        <div class=\"nis2-pc-desc\">Vous enregistrez les incidents avec la chronologie compl\u00e8te de signalement NIS-2 : alerte pr\u00e9coce 24 heures, mise \u00e0 jour 72 heures, rapport final 1 mois. GRIP vous rappelle les d\u00e9lais.<\/div>\n        <span class=\"nis2-pc-tag\">NIS-2 art. 23<\/span>\n      <\/div>\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">05<\/div>\n        <div class=\"nis2-pc-title\">Piste d&rsquo;audit et preuves<\/div>\n        <div class=\"nis2-pc-desc\">Chaque modification de contrat est tra\u00e7able avec double approbation et journal des \u00e9v\u00e9nements. Les pi\u00e8ces jointes sont versionn\u00e9es dans le coffre-fort documentaire.<\/div>\n        <span class=\"nis2-pc-tag\">Responsabilit\u00e9<\/span>\n      <\/div>\n      <div class=\"nis2-pc\">\n        <div class=\"nis2-pc-num\">06<\/div>\n        <div class=\"nis2-pc-title\">Rapport d&rsquo;autorit\u00e9 de contr\u00f4le<\/div>\n        <div class=\"nis2-pc-desc\">En un seul clic, un rapport de conformit\u00e9 complet par contrat ou fournisseur &#8212; classification, modifications, incidents et clauses. Pr\u00eat pour l&rsquo;IGJ ou le NCSC.<\/div>\n        <span class=\"nis2-pc-tag\">Preuves<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"nis2-pijlers-img\">\n      <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/01\/contract-details-1.png\" alt=\"D\u00e9tails du contrat dans GRIP &#8212; clauses de s\u00e9curit\u00e9 et gestion des risques\">\n    <\/div>\n\n    <div class=\"nis2-diff\">\n      <div class=\"nis2-diff-icon\">&#9733;<\/div>\n      <div>\n        <div class=\"nis2-diff-title\">GRIP est lui-m\u00eame en avance en mati\u00e8re de conformit\u00e9<\/div>\n        <div class=\"nis2-diff-text\">Certifi\u00e9 ISO 27001:2022, cycle de pen-test propre et contr\u00f4les internes couvrant les obligations NIS-2 en un pour un. Nous savons par notre propre exp\u00e9rience ce que la conformit\u00e9 exige &#8212; c&rsquo;est pourquoi GRIP a \u00e9t\u00e9 con\u00e7u pour vous y aider.<\/div>\n        <div class=\"nis2-diff-badges\">\n          <span class=\"nis2-diff-badge\">ISO 27001:2022<\/span>\n          <span class=\"nis2-diff-badge\">ISMS propre<\/span>\n          <span class=\"nis2-diff-badge\">Pen-test annuel<\/span>\n          <span class=\"nis2-diff-badge\">Donn\u00e9es en Europe<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section style=\"padding:3rem 1.5rem;background:#F8FAFC;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n    <p style=\"font-size:0.75rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#006BFF;margin-bottom:0.6rem;\">Pour approfondir<\/p>\n    <h2 style=\"font-size:1.5rem;font-weight:700;color:#0F172A;margin-bottom:1.5rem;\">En savoir plus sur NIS-2 et la gestion des contrats<\/h2>\n    <div class=\"grip-nis2-cards-grid\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;\">\n      <a href=\"https:\/\/www.grip-facility.com\/nis2-contractmanagement-leveranciers\/\" style=\"display:block;background:#fff;border:1px solid #E2E8F0;border-top:3px solid #006BFF;border-radius:12px;padding:1.5rem;text-decoration:none;\">\n        <p style=\"font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#006BFF;margin:0 0 0.5rem;\">Pilier<\/p>\n        <p style=\"font-size:1rem;font-weight:700;color:#0F172A;margin:0 0 0.5rem;line-height:1.35;\">NIS-2 et gestion des contrats : ma\u00eetrisez vos risques fournisseurs<\/p>\n        <p style=\"font-size:0.875rem;color:#64748B;margin:0;line-height:1.55;\">Quels fournisseurs sont concern\u00e9s, ce qui doit figurer dans chaque contrat et comment d\u00e9montrer la conformit\u00e9.<\/p>\n      <\/a>\n      <a href=\"https:\/\/www.grip-facility.com\/contractmanagement-niet-mogelijk-in-erp-systeem\/\" style=\"display:block;background:#fff;border:1px solid #E2E8F0;border-top:3px solid #0F172A;border-radius:12px;padding:1.5rem;text-decoration:none;\">\n        <p style=\"font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#64748B;margin:0 0 0.5rem;\">Article<\/p>\n        <p style=\"font-size:1rem;font-weight:700;color:#0F172A;margin:0 0 0.5rem;line-height:1.35;\">Pourquoi la gestion des contrats ne fonctionne pas dans votre syst\u00e8me ERP<\/p>\n        <p style=\"font-size:0.875rem;color:#64748B;margin:0;line-height:1.55;\">L&rsquo;ERP enregistre les contrats. La gestion active et les preuves NIS-2 demandent davantage.<\/p>\n      <\/a>\n      <a href=\"https:\/\/www.grip-facility.com\/8-functies-contractmanagement-software\/\" style=\"display:block;background:#fff;border:1px solid #E2E8F0;border-top:3px solid #FF4B2A;border-radius:12px;padding:1.5rem;text-decoration:none;\">\n        <p style=\"font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#64748B;margin:0 0 0.5rem;\">Article<\/p>\n        <p style=\"font-size:1rem;font-weight:700;color:#0F172A;margin:0 0 0.5rem;line-height:1.35;\">Les 8 fonctions d&rsquo;un logiciel de gestion des contrats<\/p>\n        <p style=\"font-size:0.875rem;color:#64748B;margin:0;line-height:1.55;\">Du registre des fournisseurs \u00e0 la piste d&rsquo;audit : ce que fait un bon logiciel pour NIS-2.<\/p>\n      <\/a>\n    <\/div>\n  <\/div>\n  <style>@media(max-width:700px){.grip-nis2-cards-grid{grid-template-columns:1fr !important}}<\/style>\n<\/section>\n\n\n\n\n\n<section class=\"grip-faq-section\">\n  <div class=\"grip-faq-container\">\n    <h2 class=\"grip-faq-title\">\n      <span class=\"grip-faq-highlight\">Questions fr\u00e9quemment pos\u00e9es<\/span> sur NIS-2 et GRIP\n    <\/h2>\n\n    <div class=\"grip-faq-list\">\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>Mon organisation est-elle soumise \u00e0 NIS-2 ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>La sant\u00e9 (cure &amp; care), l&rsquo;enseignement sup\u00e9rieur, la formation professionnelle, les communes, les provinces et les infrastructures critiques (\u00e9nergie, eau, transport) sont presque tous couverts par la loi sur la cybers\u00e9curit\u00e9. Les organisations de 50+ employ\u00e9s ou de plus de &#8364;10M de chiffre d&rsquo;affaires sont des entit\u00e9s obligatoires. Avec 250+ employ\u00e9s ou plus de &#8364;50M de chiffre d&rsquo;affaires, vous \u00eates une &#8220;entit\u00e9 essentielle&#8221; et un contr\u00f4le plus strict s&rsquo;applique. Vous avez des doutes ? Faites le scan &#8212; il vous donne une clart\u00e9 en 2 minutes.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>Quand la loi sur la cybers\u00e9curit\u00e9 entre-t-elle en vigueur ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>La pr\u00e9vision est le T2 2026. Il n&rsquo;y a pas de p\u00e9riode de transition, il vaut donc la peine de commencer calmement maintenant. Les organisations qui mettent leurs contrats et fournisseurs en ordre \u00e9tape par \u00e9tape n&rsquo;auront pas de travail en urgence par la suite.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>Quels domaines NIS-2 GRIP couvre-t-il ou non ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>GRIP couvre le fondement contractuel de NIS-2 : registre des fournisseurs, registre des risques, clauses de s\u00e9curit\u00e9, piste d&rsquo;audit, enregistrement des incidents et rapports pour l&rsquo;autorit\u00e9 de contr\u00f4le. GRIP ne couvre pas les outils SIEM\/journalisation, l&rsquo;impl\u00e9mentation MFA ou la formation de sensibilisation \u00e0 la s\u00e9curit\u00e9 &#8212; pour cela vous travaillez avec vos partenaires IT. GRIP et votre partenaire de s\u00e9curit\u00e9 IT se compl\u00e8tent.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>Quelle est la diff\u00e9rence entre NIS-2 et DORA ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>NIS-2 s&rsquo;applique largement aux secteurs critiques (sant\u00e9, enseignement, \u00e9nergie, etc.). DORA se concentre sp\u00e9cifiquement sur le secteur financier (banques, assureurs, fintech). Il y a un chevauchement dans les exigences de s\u00e9curit\u00e9 de la cha\u00eene d&rsquo;approvisionnement, mais DORA impose des exigences suppl\u00e9mentaires en mati\u00e8re de gestion des risques ICT dans la finance.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>GRIP est-il lui-m\u00eame conforme NIS-2 ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>Oui. GRIP est certifi\u00e9 ISO 27001:2022. Nos contr\u00f4les internes pour la gestion de la cha\u00eene ICT (A.5.21) et les exigences l\u00e9gales et contractuelles (A.5.31) correspondent en un pour un \u00e0 l&rsquo;article 21 de NIS-2. Nous effectuons chaque ann\u00e9e un pen-test externe et stockons toutes les donn\u00e9es en Europe.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>En combien de temps pouvez-vous \u00eatre conforme avec GRIP ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>L&rsquo;onboarding GRIP dure en moyenne 4 \u00e0 6 semaines. D\u00e8s la premi\u00e8re semaine, vous avez d\u00e9j\u00e0 l&rsquo;enregistrement de base en ordre : fournisseurs, contrats et responsables. Ensuite, vous construisez le reste des bases NIS-2 \u00e9tape par \u00e9tape &#8212; registre des risques, clauses de s\u00e9curit\u00e9 et processus d&rsquo;incidents. C&rsquo;est largement r\u00e9alisable avant le T2 2026 si vous commencez maintenant.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"grip-faq-item\">\n        <button class=\"grip-faq-question\" aria-expanded=\"false\">\n          <span>Pouvons-nous exporter un dossier de preuves NIS-2 pour l&rsquo;inspection ?<\/span>\n          <span class=\"grip-faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"grip-faq-answer\" hidden>\n          <p>Oui. GRIP g\u00e9n\u00e8re en un seul clic un rapport complet par contrat ou fournisseur : classification des risques, toutes les modifications de contrats avec historique d&rsquo;approbation, clauses de s\u00e9curit\u00e9, incidents enregistr\u00e9s et documents li\u00e9s. Pr\u00eat \u00e0 pr\u00e9senter \u00e0 l&rsquo;IGJ ou au NCSC.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<section class=\"platform-cta\">\n  <div class=\"platform-cta__inner\">\n    <h2 class=\"platform-cta__title\">Commencez tranquillement &#8212; nous vous aidons \u00e0 avancer<\/h2>\n    <p class=\"platform-cta__subtitle\">R\u00e9servez une d\u00e9mo sans engagement et nous vous montrerons comment GRIP s&rsquo;adapte \u00e0 votre situation actuelle. Ou faites d&rsquo;abord le scan gratuit, pour savoir par o\u00f9 commencer.<\/p>\n    <div class=\"platform-cta__actions\">\n      <a href=\"\/demo\/\" class=\"platform-cta__btn platform-cta__btn--primary\">R\u00e9server une d\u00e9mo<\/a>\n      <a href=\"#nis2-scan\" class=\"platform-cta__btn platform-cta__btn--secondary\">Faire le scan NIS-2<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>NIS-2 Compliance Loi sur la cybers\u00e9curit\u00e9 &#8212; en vigueur au T2 2026 Rendez vos contrats et fournisseurs conformes NIS-2 La loi sur la cybers\u00e9curit\u00e9 arrive. GRIP aide les organisations de soins de sant\u00e9, d&rsquo;enseignement et du secteur public \u00e0 rendre leurs contrats et fournisseurs conformes NIS-2, \u00e9tape par \u00e9tape &#8212; \u00e0 votre rythme. Faire le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":18267,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-18790","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/pages\/18790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/comments?post=18790"}],"version-history":[{"count":0,"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/pages\/18790\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/pages\/18267"}],"wp:attachment":[{"href":"https:\/\/www.grip-facility.com\/fr\/wp-json\/wp\/v2\/media?parent=18790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}