{"id":2774,"date":"2026-05-18T08:01:42","date_gmt":"2026-05-18T07:01:42","guid":{"rendered":"https:\/\/www.prismia.ch\/ai-maturity-assessment\/"},"modified":"2026-07-20T17:16:54","modified_gmt":"2026-07-20T16:16:54","slug":"ai-maturity-assessment","status":"publish","type":"page","link":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/","title":{"rendered":"AI Maturity Assessment"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2774\" class=\"elementor elementor-2774 elementor-2756\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2389472 e-flex e-con-boxed e-con e-parent\" data-id=\"2389472\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e03005 elementor-widget elementor-widget-html\" data-id=\"2e03005\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ===== ELEMENTOR PASTE BEGIN ============================================ -->\n<style>\n\/* =================================================================\n   PrismIA Maturity Form v3 \u2014 styles scoped to #pia-mat-app\n   Design tokens mirrored from prismia.ch (blob canvas pages)\n   ================================================================= *\/\n#pia-mat-app {\n  --p: #1929DD;\n  --a: #2C55FB;\n  --ink: #0A0F2E;\n  --deep: #0A1240;\n  --muted: #4E5A85;\n  --faint: #8B95BC;\n  --border: #E4E9F7;\n  --pale: #F7F9FF;\n  --lav: #91B1FF;\n  --warm: #FFBC7D;\n  --err: #e5484d;\n  --sans: \"Plus Jakarta Sans\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n  --mono: \"Geist Mono\", ui-monospace, \"Cascadia Code\", Consolas, monospace;\n  --hdr: 72px; \/* fixed site nav height *\/\n\n  position: relative;\n  display: block;\n  min-height: calc(100svh - var(--hdr));\n  background:\n    radial-gradient(55% 45% at 8% 0%, rgba(145,177,255,.14), transparent 60%),\n    radial-gradient(45% 40% at 100% 12%, rgba(44,85,251,.06), transparent 60%),\n    var(--pale);\n  font-family: var(--sans);\n  color: var(--ink);\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  isolation: isolate;\n  overflow: hidden;\n}\n#pia-mat-app *, #pia-mat-app *::before, #pia-mat-app *::after { box-sizing: border-box; }\n#pia-mat-app [hidden] { display: none !important; }\n\n\/* Stage *\/\n#pia-mat-app .pia-mat-stage {\n  display: flex;\n  align-items: flex-start;\n  justify-content: center;\n  padding: clamp(18px, 3vh, 36px) clamp(14px, 4vw, 44px) clamp(16px, 2.5vh, 28px);\n  min-height: calc(100svh - var(--hdr));\n}\n#pia-mat-app .pia-mat-stage-inner {\n  width: 100%;\n  max-width: 780px;\n  display: flex;\n  flex-direction: column;\n}\n#pia-mat-app .pia-mat-stage-inner:has(.screen-wide) { max-width: 1160px; }\n\n\/* Screen tile *\/\n#pia-mat-app .screen {\n  position: relative;\n  width: 100%;\n  background: #fff;\n  border: 1px solid var(--border);\n  border-radius: 24px;\n  box-shadow: 0 1px 2px rgba(10,15,46,.03), 0 22px 44px -18px rgba(25,41,221,.14);\n  padding: clamp(26px, 4.5vh, 48px) clamp(24px, 4.5vw, 56px);\n  animation: pia-mat-rise .4s cubic-bezier(.16,.84,.32,1) both;\n}\n#pia-mat-app .screen-wide { max-width: 1160px; }\n@keyframes pia-mat-rise {\n  from { opacity: 0; transform: translateY(12px) scale(.99); }\n  to   { opacity: 1; transform: translateY(0) scale(1); }\n}\n\/* Apr\u00e8s la 1re apparition, la carte reste en place : seul le contenu glisse (WAAPI). *\/\n#pia-mat-app .screen.no-rise { animation: none; }\n\n\/* Typography *\/\n#pia-mat-app .eyebrow {\n  font-size: 11.5px;\n  font-weight: 700;\n  color: var(--a);\n  text-transform: uppercase;\n  letter-spacing: .16em;\n  margin: 0 0 16px;\n}\n#pia-mat-app .screen h1 {\n  font-size: clamp(26px, 3.8vh, 38px);\n  line-height: 1.1;\n  letter-spacing: -.025em;\n  margin: 0 0 16px;\n  font-weight: 800;\n  color: var(--ink);\n  text-wrap: balance;\n}\n#pia-mat-app .screen h2 {\n  font-size: clamp(19px, 2.7vh, 25px);\n  line-height: 1.18;\n  letter-spacing: -.015em;\n  margin: 0 0 10px;\n  font-weight: 800;\n  color: var(--ink);\n  text-wrap: balance;\n}\n#pia-mat-app .screen p { color: var(--muted); margin: 0 0 16px; font-size: clamp(14px, 1.85vh, 16px); line-height: 1.55; }\n#pia-mat-app .subtitle { font-size: clamp(14px, 1.85vh, 16px); color: var(--muted); margin: 0 0 clamp(16px, 2.4vh, 28px) !important; max-width: 62ch; }\n\n\/* Intro perks \u2014 chips row like site badges *\/\n#pia-mat-app .intro-perks {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 12px;\n  margin: clamp(18px, 2.6vh, 28px) 0 clamp(20px, 3vh, 34px);\n}\n#pia-mat-app .perk {\n  background: var(--pale);\n  border: 1px solid var(--border);\n  border-radius: 14px;\n  padding: clamp(12px, 1.6vh, 18px) clamp(13px, 1.5vw, 17px);\n}\n#pia-mat-app .perk-value {\n  font-family: var(--mono);\n  font-size: clamp(15px, 2vh, 18px);\n  font-weight: 700;\n  color: var(--p);\n  letter-spacing: -.01em;\n}\n#pia-mat-app .perk-label { font-size: 12.5px; color: var(--muted); margin-top: 4px; line-height: 1.4; }\n\n#pia-mat-app .cta-row { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; }\n\n\/* Buttons \u2014 site geometry *\/\n#pia-mat-app .btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 10px;\n  font-family: inherit;\n  padding: 15px 26px;\n  font-size: 14.5px;\n  font-weight: 700;\n  border-radius: 12px;\n  border: 1px solid transparent;\n  cursor: pointer;\n  white-space: nowrap;\n  line-height: 1;\n  text-decoration: none;\n  transition: background-color .18s, color .18s, border-color .18s, box-shadow .2s, transform .18s;\n}\n#pia-mat-app .btn-default {\n  background: var(--a);\n  color: #fff;\n  box-shadow: 0 10px 22px -10px rgba(44,85,251,.45);\n}\n#pia-mat-app .btn-default:hover { background: var(--p); color: #fff; transform: translateY(-1px); box-shadow: 0 14px 26px -10px rgba(25,41,221,.5); }\n#pia-mat-app .btn-default:disabled { opacity: .4; cursor: not-allowed; transform: none; box-shadow: none; }\n#pia-mat-app .btn-ghost { background: transparent; color: var(--ink); border-color: var(--border); }\n#pia-mat-app .btn-ghost:hover { background: var(--pale); border-color: var(--lav); color: var(--p); }\n\n#pia-mat-app .btn-back {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: transparent;\n  border: 1px solid var(--border);\n  color: var(--muted);\n  font-family: inherit;\n  font-size: 12.5px;\n  font-weight: 600;\n  cursor: pointer;\n  padding: 6px 13px 6px 9px;\n  border-radius: 999px;\n  margin-bottom: clamp(8px, 1.3vh, 16px);\n  transition: transform .18s cubic-bezier(.16,.84,.32,1), background .18s, border-color .18s, color .18s, box-shadow .18s;\n}\n#pia-mat-app .btn-back .btn-back-icon {\n  width: 20px; height: 20px;\n  display: inline-flex; align-items: center; justify-content: center;\n  border-radius: 50%;\n  background: var(--pale);\n  color: var(--p);\n  transition: transform .18s, background .18s, color .18s;\n}\n#pia-mat-app .btn-back .btn-back-icon svg { width: 11px; height: 11px; }\n#pia-mat-app .btn-back:hover { border-color: var(--lav); color: var(--ink); background: #fff; box-shadow: 0 4px 12px -5px rgba(25,41,221,.18); transform: translateX(-2px); }\n#pia-mat-app .btn-back:hover .btn-back-icon { background: var(--a); color: #fff; }\n#pia-mat-app .btn-back:focus-visible { outline: none; border-color: var(--a); box-shadow: 0 0 0 4px rgba(44,85,251,.16); }\n\n\/* Option cards *\/\n#pia-mat-app .options { display: grid; gap: clamp(7px, 1vh, 10px); margin-top: clamp(12px, 1.8vh, 18px); }\n#pia-mat-app .option {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  padding: clamp(11px, 1.55vh, 16px) clamp(15px, 1.8vw, 20px);\n  background: #fff;\n  border: 1.5px solid var(--border);\n  border-radius: 14px;\n  cursor: pointer;\n  text-align: left;\n  font-family: inherit;\n  font-size: 14.5px;\n  font-weight: 500;\n  color: var(--ink);\n  transition: transform .18s cubic-bezier(.16,.84,.32,1), border-color .18s, background .18s, box-shadow .18s;\n  position: relative;\n}\n#pia-mat-app .option:hover {\n  border-color: var(--lav);\n  background: var(--pale);\n  transform: translateX(3px);\n  box-shadow: 0 6px 16px -9px rgba(25,41,221,.22);\n}\n#pia-mat-app .option .opt-key {\n  font-family: var(--mono);\n  font-size: 12px;\n  font-weight: 700;\n  color: var(--p);\n  background: var(--pale);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  padding: 5px 0;\n  min-width: 30px;\n  text-align: center;\n  flex-shrink: 0;\n  transition: background .18s, color .18s, border-color .18s;\n}\n#pia-mat-app .option .opt-icon { width: 34px; height: 34px; border-radius: 10px; background: var(--pale); border: 1px solid var(--border); color: var(--p); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }\n#pia-mat-app .option .opt-icon svg { width: 18px; height: 18px; }\n#pia-mat-app .option .opt-label { flex: 1; line-height: 1.35; }\n#pia-mat-app .option.selected, #pia-mat-app .option:focus-visible {\n  border-color: var(--a);\n  background: linear-gradient(135deg, rgba(44,85,251,.045), rgba(145,177,255,.10));\n  outline: none;\n  box-shadow: 0 10px 22px -12px rgba(44,85,251,.32);\n}\n#pia-mat-app .option.selected .opt-key { background: var(--a); border-color: var(--a); color: #fff; }\n#pia-mat-app .option.na { border-style: dashed; }\n#pia-mat-app .option.na .opt-label { color: var(--muted); font-style: italic; font-size: 13.5px; }\n#pia-mat-app .q-hint { font-size: 12px; color: var(--faint); margin: 10px 0 0 !important; }\n\n\/* Form fields *\/\n#pia-mat-app .field { display: block; margin-bottom: clamp(11px, 1.5vh, 16px); }\n#pia-mat-app .field > span { font-size: 12.5px; font-weight: 700; color: var(--ink); display: block; margin-bottom: 7px; letter-spacing: .01em; }\n#pia-mat-app .field input[type=email], #pia-mat-app .field input[type=text] {\n  width: 100%;\n  font-family: inherit;\n  font-size: 15px;\n  padding: 13px 16px;\n  border: 1.5px solid var(--border);\n  border-radius: 12px;\n  background: #fff;\n  color: var(--ink);\n  transition: border-color .15s, box-shadow .15s;\n}\n#pia-mat-app .field input:focus { outline: none; border-color: var(--a); box-shadow: 0 0 0 4px rgba(44,85,251,.12); }\n\n#pia-mat-app .checkboxes { display: grid; gap: 8px; margin: clamp(14px, 1.8vh, 20px) 0 6px; }\n#pia-mat-app .cb {\n  display: flex; gap: 13px; align-items: flex-start;\n  padding: 12px 14px;\n  border-radius: 13px;\n  border: 1px solid transparent;\n  cursor: pointer;\n  transition: background .15s, border-color .15s;\n}\n#pia-mat-app .cb:hover { background: var(--pale); border-color: var(--border); }\n#pia-mat-app .cb input[type=checkbox] {\n  appearance: none; -webkit-appearance: none;\n  width: 21px; height: 21px;\n  border: 1.5px solid var(--border);\n  border-radius: 6px;\n  cursor: pointer; flex-shrink: 0;\n  background: #fff;\n  position: relative;\n  margin: 2px 0 0;\n  transition: all .15s ease;\n}\n#pia-mat-app .cb input[type=checkbox]:focus-visible { outline: 2px solid var(--a); outline-offset: 2px; }\n#pia-mat-app .cb input[type=checkbox]:checked { background: var(--a); border-color: var(--a); }\n#pia-mat-app .cb input[type=checkbox]:checked::after {\n  content: '';\n  position: absolute; inset: 4px;\n  background: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'><path fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M5 13l4 4L19 7'\/><\/svg>\") center\/contain no-repeat;\n}\n#pia-mat-app .cb .cb-label { flex: 1; font-size: 13px; line-height: 1.5; color: var(--ink); }\n#pia-mat-app .cb .cb-label strong { color: var(--p); }\n#pia-mat-app .cb .cb-sub { display: block; color: var(--faint); font-size: 11.5px; margin-top: 2px; }\n#pia-mat-app .cb .cb-sub a { color: var(--faint); }\n#pia-mat-app .cb.required .cb-label::after { content: ' *'; color: var(--err); font-weight: 700; }\n\n#pia-mat-app .legal { font-size: 11.5px; color: var(--faint); margin-top: clamp(10px, 1.4vh, 16px); line-height: 1.55; }\n#pia-mat-app .legal a { color: var(--faint); text-decoration: underline; }\n#pia-mat-app .legal a:hover { color: var(--a); }\n\n#pia-mat-app .screen p.intro-legal {\n  display: inline-flex; align-items: center; gap: 7px;\n  font-size: 11.5px; font-weight: 500; color: var(--faint);\n  line-height: 1.4;\n  margin: clamp(26px, 4vh, 44px) auto 0 0;\n  width: max-content; max-width: 100%;\n}\n#pia-mat-app .intro-legal svg { color: var(--lav); flex-shrink: 0; }\n#pia-mat-app .intro-legal span { text-wrap: balance; }\n\n\/* Progress bar *\/\n#pia-mat-app .pia-mat-progress-bar {\n  position: absolute; top: 0; left: 0; right: 0;\n  height: 3px;\n  background: rgba(25,41,221,.06);\n  z-index: 100;\n  pointer-events: none;\n}\n#pia-mat-app #pia-mat-progress {\n  height: 100%; width: 0%;\n  background: linear-gradient(90deg, var(--p), var(--a));\n  transition: width .35s cubic-bezier(.16,.84,.32,1);\n}\n\n\/* ===================== Result ===================== *\/\n#pia-mat-app .result-grid {\n  display: grid;\n  grid-template-columns: 0.9fr 1fr 1.05fr;\n  gap: clamp(22px, 3vw, 48px);\n  align-items: start;\n}\n#pia-mat-app .col-score { display: flex; flex-direction: column; align-items: center; text-align: center; }\n#pia-mat-app .score-ring { width: clamp(150px, 21vh, 200px); height: clamp(150px, 21vh, 200px); display: block; }\n#pia-mat-app .score-level {\n  display: inline-flex; align-items: center;\n  height: 32px; padding: 0 15px;\n  border-radius: 999px;\n  background: color-mix(in srgb, var(--lvl-color, var(--lav)) 18%, #fff);\n  color: var(--ink);\n  border: 1px solid color-mix(in srgb, var(--lvl-color, var(--lav)) 50%, #fff);\n  font-weight: 700; font-size: 13px; line-height: 1;\n}\n#pia-mat-app .level-row { display: inline-flex; align-items: center; gap: 9px; margin-top: 12px; flex-wrap: wrap; justify-content: center; }\n#pia-mat-app .level-help {\n  display: inline-flex; align-items: center; gap: 6px;\n  height: 32px; padding: 0 13px;\n  font-family: inherit; font-size: 12px; font-weight: 600;\n  color: var(--a);\n  background: transparent;\n  border: 1px dashed var(--border);\n  border-radius: 999px;\n  line-height: 1; cursor: pointer;\n  transition: background .15s, border-color .15s, transform .15s;\n}\n#pia-mat-app .level-help:hover { background: var(--pale); border-color: var(--a); transform: translateY(-1px); }\n\n\/* Journey track *\/\n#pia-mat-app .journey { width: 100%; margin: clamp(16px, 2.4vh, 26px) 0 4px; }\n#pia-mat-app .journey-track { display: flex; gap: 4px; }\n#pia-mat-app .journey-seg { flex: 1; height: 6px; border-radius: 99px; background: var(--border); }\n#pia-mat-app .journey-seg.done { background: color-mix(in srgb, var(--a) 45%, var(--border)); }\n#pia-mat-app .journey-seg.active { background: var(--a); box-shadow: 0 0 0 3px rgba(44,85,251,.15); }\n#pia-mat-app .journey-labels { display: flex; gap: 4px; margin-top: 6px; }\n#pia-mat-app .journey-labels span { flex: 1; font-size: 9px; letter-spacing: .02em; color: var(--faint); text-align: center; line-height: 1.25; }\n#pia-mat-app .journey-labels span.active { color: var(--p); font-weight: 700; }\n\n#pia-mat-app .screen p.score-tagline {\n  font-size: clamp(15px, 2vh, 18px);\n  font-weight: 700; color: var(--ink);\n  margin: clamp(12px, 1.8vh, 18px) 0 6px;\n  letter-spacing: -.01em; text-wrap: balance; line-height: 1.3;\n}\n#pia-mat-app .screen p.score-description { font-size: 13px; color: var(--muted); margin: 0; line-height: 1.55; text-wrap: pretty; }\n\n\/* Radar column *\/\n#pia-mat-app .radar-wrap {\n  background: var(--pale);\n  border-radius: 18px;\n  padding: 20px;\n  border: 1px solid var(--border);\n}\n#pia-mat-app .radar-wrap svg { width: 100%; max-width: 320px; height: auto; display: block; margin: 0 auto; }\n#pia-mat-app .axis-list { display: grid; gap: 0; margin-top: 18px; border-top: 1px solid var(--border); text-align: left; }\n#pia-mat-app .axis-row {\n  display: grid;\n  grid-template-columns: 12px 1fr auto;\n  align-items: center; gap: 12px;\n  font-size: 13px;\n  padding: 11px 2px;\n  border-bottom: 1px solid var(--border);\n}\n#pia-mat-app .axis-dot { width: 9px; height: 9px; border-radius: 50%; }\n#pia-mat-app .axis-name { color: var(--ink); font-weight: 500; letter-spacing: -.005em; }\n#pia-mat-app .axis-score { text-align: right; font-weight: 700; color: var(--p); font-family: var(--mono); font-size: 12px; }\n#pia-mat-app .axis-row.unrated .axis-name { color: var(--faint); }\n#pia-mat-app .axis-row.unrated .axis-score { color: var(--faint); }\n\n\/* Diagnostics + recos column *\/\n#pia-mat-app .diag-block { margin-bottom: clamp(18px, 2.8vh, 32px); }\n#pia-mat-app .diag-title {\n  font-size: 11px; margin: 0 0 12px;\n  color: var(--a); font-weight: 700;\n  text-transform: uppercase; letter-spacing: .13em;\n}\n#pia-mat-app .diag {\n  display: flex; gap: 11px; align-items: flex-start;\n  padding: 13px 16px;\n  border-radius: 13px;\n  background: var(--pale);\n  border: 1px solid var(--border);\n  margin-bottom: 10px;\n}\n#pia-mat-app .diag-dot { width: 9px; height: 9px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; }\n#pia-mat-app .diag-text { font-size: 13px; line-height: 1.55; color: var(--ink); }\n#pia-mat-app .diag-text strong { color: var(--p); }\n#pia-mat-app .diag.uncertain { background: #FFF8F0; border-color: #F4DFC8; }\n#pia-mat-app .diag-inline { width: 100%; text-align: left; margin: clamp(14px, 2vh, 22px) 0 0; }\n#pia-mat-app .diag-inline .diag { margin-bottom: 0; }\n\n#pia-mat-app .recos { display: flex; flex-direction: column; gap: 12px; }\n#pia-mat-app .recos h3 {\n  font-size: 11px; margin: 0 0 6px;\n  color: var(--a); font-weight: 700;\n  text-transform: uppercase; letter-spacing: .13em;\n}\n#pia-mat-app .reco {\n  display: block;\n  padding: 15px 19px;\n  border-radius: 14px;\n  border: 1px solid var(--border);\n  background: #fff;\n  text-decoration: none;\n  color: inherit;\n  transition: transform .18s, box-shadow .18s, border-color .18s;\n}\n#pia-mat-app .reco:hover { transform: translateY(-2px); border-color: var(--a); box-shadow: 0 10px 22px -10px rgba(44,85,251,.2); text-decoration: none; }\n#pia-mat-app .reco-title { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-weight: 700; color: var(--ink); font-size: 13.5px; }\n#pia-mat-app .reco-arrow { color: var(--a); transition: transform .2s; }\n#pia-mat-app .reco:hover .reco-arrow { transform: translateX(4px); }\n#pia-mat-app .reco-desc { font-size: 12px; color: var(--muted); margin-top: 3px; line-height: 1.45; }\n#pia-mat-app .reco.primary { border-color: var(--a); background: linear-gradient(135deg, rgba(44,85,251,.04), rgba(145,177,255,.10)); }\n#pia-mat-app .reco.primary .reco-title { color: var(--p); }\n\n\/* Final CTA \u2014 full-width deep navy band like site .cta-panel *\/\n#pia-mat-app .result-foot { margin-top: clamp(18px, 2.8vh, 32px); }\n#pia-mat-app .cta-final {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: clamp(14px, 2vw, 28px);\n  padding: clamp(16px, 2.2vh, 22px) clamp(18px, 2.4vw, 28px);\n  background:\n    radial-gradient(70% 160% at 100% 0%, rgba(44,85,251,.4), transparent 55%),\n    linear-gradient(120deg, var(--deep) 0%, var(--p) 140%);\n  border-radius: 18px;\n  color: #fff;\n  text-align: left;\n  position: relative;\n  overflow: hidden;\n}\n#pia-mat-app .cta-final h3 { margin: 0 0 3px; font-size: clamp(15px, 2.1vh, 19px); font-weight: 800; color: #fff; letter-spacing: -.01em; }\n#pia-mat-app .cta-final p { color: rgba(255,255,255,.82); margin: 0; font-size: 12.5px; line-height: 1.45; }\n#pia-mat-app .cta-btns { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }\n#pia-mat-app .cta-final .btn { background: #fff; color: var(--p); box-shadow: 0 12px 28px -10px rgba(0,0,0,.3); padding: 12px 20px; font-size: 13.5px; }\n#pia-mat-app .cta-final .btn:hover { background: var(--pale); color: var(--p); transform: translateY(-1px); }\n#pia-mat-app .btn-pdf { background: transparent; color: #fff; border-color: rgba(255,255,255,.35); font-size: 13px; padding: 11px 16px; }\n#pia-mat-app .btn-pdf:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.6); color: #fff; }\n@media (max-width: 860px) {\n  #pia-mat-app .cta-final { flex-direction: column; text-align: center; }\n  #pia-mat-app .cta-btns { width: 100%; flex-direction: column; }\n  #pia-mat-app .cta-btns .btn { width: 100%; justify-content: center; }\n}\n\n#pia-mat-app .screen p.result-legal {\n  font-size: 10.5px;\n  text-align: center;\n  margin: clamp(16px, 2.4vh, 26px) auto 0;\n  color: var(--faint);\n  line-height: 1.5;\n  letter-spacing: .015em;\n  max-width: 100%;\n}\n#pia-mat-app .result-legal strong { color: var(--p); font-weight: 600; }\n\n\/* Modals *\/\n#pia-mat-app .pia-mat-modal {\n  border: 1px solid var(--border);\n  padding: 30px;\n  border-radius: 20px;\n  max-width: 460px; width: 92%;\n  box-shadow: 0 24px 64px -16px rgba(10,18,64,.3);\n  background: #fff;\n  font-family: var(--sans);\n  color: var(--ink);\n}\n#pia-mat-app .pia-mat-modal::backdrop { background: rgba(10,15,46,.5); backdrop-filter: blur(6px); }\n#pia-mat-app .pia-mat-modal h2 { margin: 0 0 8px; font-size: 21px; color: var(--ink); font-weight: 800; letter-spacing: -.015em; }\n#pia-mat-app .pia-mat-modal p { font-size: 13.5px; color: var(--muted); margin: 0 0 14px; }\n#pia-mat-app .pia-mat-modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 12px; }\n#pia-mat-app .pia-mat-modal-wide { max-width: 640px; width: 94%; padding: 26px 26px 20px; }\n#pia-mat-app .pia-mat-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; }\n#pia-mat-app .pia-mat-modal-head h2 { margin: 0 0 3px; }\n#pia-mat-app .pia-mat-modal-sub { font-size: 11.5px; color: var(--faint); margin: 0; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; }\n#pia-mat-app .pia-mat-modal-close {\n  background: var(--pale);\n  border: 1px solid var(--border);\n  border-radius: 50%; width: 34px; height: 34px; cursor: pointer;\n  color: var(--ink);\n  display: inline-flex; align-items: center; justify-content: center;\n  transition: background .15s, color .15s, transform .15s;\n  flex-shrink: 0;\n}\n#pia-mat-app .pia-mat-modal-close:hover { background: var(--a); border-color: var(--a); color: #fff; transform: rotate(90deg); }\n#pia-mat-app .pia-mat-levels-list { display: flex; flex-direction: column; gap: 9px; max-height: 56vh; overflow-y: auto; padding-right: 4px; margin-bottom: 6px; }\n#pia-mat-app .level-card { border: 1.5px solid var(--border); border-radius: 13px; padding: 13px 16px; background: #fff; transition: border-color .18s, box-shadow .18s; }\n#pia-mat-app .level-card.active {\n  border-color: var(--lvl-color, var(--a));\n  background: linear-gradient(135deg, color-mix(in srgb, var(--lvl-color, var(--a)) 7%, white), #fff);\n  box-shadow: 0 8px 20px -10px color-mix(in srgb, var(--lvl-color, var(--a)) 45%, transparent);\n}\n#pia-mat-app .level-card-head { display: flex; align-items: center; gap: 11px; margin-bottom: 5px; }\n#pia-mat-app .level-dot { width: 11px; height: 11px; border-radius: 50%; background: var(--lvl-color, var(--a)); flex-shrink: 0; }\n#pia-mat-app .level-card-titles { display: flex; flex-direction: column; gap: 1px; flex: 1; }\n#pia-mat-app .level-card-label { font-size: 14.5px; font-weight: 800; color: var(--ink); letter-spacing: -.005em; }\n#pia-mat-app .level-card-range { font-size: 11px; font-weight: 600; color: var(--faint); font-family: var(--mono); }\n#pia-mat-app .level-badge-active { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; background: var(--lvl-color, var(--a)); color: #fff; padding: 4px 10px; border-radius: 999px; flex-shrink: 0; }\n#pia-mat-app .level-card-tagline { font-size: 13px; font-weight: 700; color: var(--ink); margin: 3px 0; }\n#pia-mat-app .level-card-desc { font-size: 12px; color: var(--muted); margin: 0; line-height: 1.5; }\n#pia-mat-app .method-note { font-size: 10.5px; color: var(--faint); line-height: 1.5; margin: 6px 0 10px; }\n\n\/* Responsive *\/\n@media (max-width: 1100px) {\n  #pia-mat-app { overflow: visible; }\n  #pia-mat-app .result-grid { grid-template-columns: 1fr 1fr; }\n  #pia-mat-app .col-score { grid-column: 1 \/ -1; }\n}\n@media (max-width: 860px) {\n  #pia-mat-app .result-grid { grid-template-columns: 1fr; gap: 18px; }\n}\n@media (max-width: 720px) {\n  #pia-mat-app .pia-mat-stage { padding: 14px 10px; }\n  #pia-mat-app .screen { padding: 26px 20px; border-radius: 20px; }\n  #pia-mat-app .intro-perks { grid-template-columns: 1fr 1fr; gap: 9px; }\n  #pia-mat-app .perk { padding: 11px 13px; }\n  #pia-mat-app .option { padding: 12px 14px; gap: 11px; }\n  #pia-mat-app .cta-row { flex-direction: column; }\n  #pia-mat-app .cta-row .btn { width: 100%; }\n}\n@media (max-height: 760px) {\n  #pia-mat-app .screen { padding: 22px 30px; }\n  #pia-mat-app .screen h1 { font-size: 25px; margin-bottom: 10px; }\n  #pia-mat-app .screen h2 { font-size: 19px; margin-bottom: 8px; }\n  #pia-mat-app .subtitle { margin-bottom: 14px !important; }\n  #pia-mat-app .intro-perks { margin: 14px 0 18px; }\n  #pia-mat-app .options { gap: 6px; }\n  #pia-mat-app .option { padding: 10px 14px; }\n  #pia-mat-app .q-hint { display: none; }\n}\n\/* Palier interm\u00e9diaire (901-1150px utiles) : on bride seulement la colonne score\n   (le ring et les encarts gonflent en vh) \u2014 les colonnes droites gardent leur a\u00e9ration *\/\n@media (min-width: 861px) and (min-height: 901px) and (max-height: 1150px) {\n  #pia-mat-app .pia-mat-stage:has(.screen-wide) { padding-top: 20px; padding-bottom: 16px; }\n  #pia-mat-app .screen-wide { padding: 32px 46px; }\n  #pia-mat-app .score-ring { width: 156px; height: 156px; }\n  #pia-mat-app .journey { margin: 14px 0 3px; }\n  #pia-mat-app .diag-inline { margin-top: 13px; }\n  #pia-mat-app .screen p.score-tagline { margin-top: 13px; }\n  #pia-mat-app .result-foot { margin-top: 20px; }\n  #pia-mat-app .screen p.result-legal { margin-top: 15px; }\n}\n\/* Compact result on shorter desktops \u2014 keep the one-pager promise\n   (palier DOUX : \u00e9crans ~850-900px utiles, ex. laptop 1080p avec barre des t\u00e2ches) *\/\n@media (min-width: 861px) and (max-height: 900px) {\n  #pia-mat-app .pia-mat-stage:has(.screen-wide) { padding-top: 16px; padding-bottom: 14px; }\n  #pia-mat-app .screen-wide { padding: 24px 36px; }\n  #pia-mat-app .screen-wide .eyebrow { margin-bottom: 10px; }\n  #pia-mat-app .score-ring { width: 150px; height: 150px; }\n  #pia-mat-app .journey { margin: 12px 0 3px; }\n  #pia-mat-app .diag-inline { margin-top: 12px; }\n  #pia-mat-app .result-foot { margin-top: 14px; }\n  #pia-mat-app .screen p.score-tagline { font-size: 14.5px; margin-top: 12px; }\n  #pia-mat-app .screen p.score-description { font-size: 12.5px; }\n  #pia-mat-app .radar-wrap { padding: 15px; }\n  #pia-mat-app .radar-wrap svg { max-width: 262px; }\n  #pia-mat-app .axis-row { padding: 7.5px 2px; font-size: 12.5px; gap: 11px; }\n  #pia-mat-app .diag { padding: 10px 13px; margin-bottom: 7px; }\n  #pia-mat-app .diag-text { font-size: 12.5px; }\n  #pia-mat-app .diag-block { margin-bottom: 14px; }\n  #pia-mat-app .diag-title { margin-bottom: 8px; }\n  #pia-mat-app .reco { padding: 11px 16px; }\n  #pia-mat-app .reco-desc { font-size: 11.5px; }\n  #pia-mat-app .recos { gap: 8px; }\n  #pia-mat-app .cta-final { padding: 14px 20px; }\n  #pia-mat-app .screen p.result-legal { margin-top: 12px; }\n}\n\/* Even shorter viewports \u2014 squeeze the result harder *\/\n@media (min-width: 861px) and (max-height: 850px) {\n  #pia-mat-app .pia-mat-stage:has(.screen-wide) { padding-top: 14px; padding-bottom: 12px; }\n  #pia-mat-app .score-ring { width: 132px; height: 132px; }\n  #pia-mat-app .journey { margin: 8px 0 2px; }\n  #pia-mat-app .diag-inline { margin-top: 8px; }\n  #pia-mat-app .screen p.score-tagline { font-size: 14px; margin-top: 8px; }\n  #pia-mat-app .radar-wrap { padding: 12px; }\n  #pia-mat-app .radar-wrap svg { max-width: 235px; }\n  #pia-mat-app .axis-row { padding: 5px 2px; font-size: 12px; gap: 10px; }\n  #pia-mat-app .diag { padding: 7px 10px; margin-bottom: 5px; }\n  #pia-mat-app .diag-text { font-size: 12px; }\n  #pia-mat-app .diag-block { margin-bottom: 10px; }\n  #pia-mat-app .reco { padding: 9px 14px; }\n  #pia-mat-app .recos { gap: 6px; }\n  #pia-mat-app .result-foot { margin-top: 10px; }\n}\n@media (min-width: 861px) and (max-height: 800px) {\n  #pia-mat-app .screen-wide { padding: 18px 28px; }\n  #pia-mat-app .eyebrow { margin-bottom: 8px; }\n  #pia-mat-app .score-ring { width: 118px; height: 118px; }\n  #pia-mat-app .screen p.score-description { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }\n  #pia-mat-app .radar-wrap { padding: 10px; }\n  #pia-mat-app .radar-wrap svg { max-width: 205px; }\n  #pia-mat-app .axis-row { padding: 3.5px 2px; font-size: 11.5px; }\n  #pia-mat-app .diag { padding: 5px 9px; margin-bottom: 4px; }\n  #pia-mat-app .diag-text { font-size: 11.5px; line-height: 1.4; }\n  #pia-mat-app .diag-block { margin-bottom: 8px; }\n  #pia-mat-app .diag-title { margin-bottom: 5px; }\n  #pia-mat-app .reco { padding: 7px 12px; }\n  #pia-mat-app .reco-title { font-size: 12.5px; }\n  #pia-mat-app .reco-desc { font-size: 11px; margin-top: 1px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n  #pia-mat-app .recos { gap: 6px; }\n  #pia-mat-app .cta-final { padding: 11px 18px; border-radius: 14px; }\n  #pia-mat-app .cta-final p { font-size: 11.5px; }\n  #pia-mat-app .cta-final .btn { padding: 10px 16px; font-size: 12.5px; }\n  #pia-mat-app .btn-pdf { padding: 9px 13px; font-size: 12px; }\n  #pia-mat-app .result-foot { margin-top: 10px; }\n  #pia-mat-app .screen p.result-legal { margin-top: 8px; font-size: 9.5px; }\n}\n@media (prefers-reduced-motion: reduce) {\n  #pia-mat-app *, #pia-mat-app *::before, #pia-mat-app *::after {\n    animation-duration: .01ms !important;\n    transition-duration: .01ms !important;\n  }\n}\n\n\/* ===================== Print (PDF) ===================== *\/\n#pia-mat-app [data-print-only] { display: none; }\n@media print {\n  body *:not(:has(#pia-mat-app), #pia-mat-app, #pia-mat-app *) { display: none !important; }\n  html, body { margin: 0 !important; padding: 0 !important; background: #fff !important; height: auto !important; min-height: 0 !important; }\n  @page { size: A4; margin: 12mm 14mm; }\n\n  #pia-mat-app { background: #fff !important; min-height: 0 !important; overflow: visible !important; }\n  \/* les couleurs de marque (chips, dots, segments, fonds) s'impriment telles quelles *\/\n  #pia-mat-app, #pia-mat-app * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }\n  #pia-mat-app a[href]::after, #pia-mat-app a[href]::before { content: \"\" !important; display: none !important; }\n  #pia-mat-app a { text-decoration: none !important; color: inherit !important; }\n  #pia-mat-app .no-print, #pia-mat-app .pia-mat-progress-bar, #pia-mat-app .btn-back,\n  #pia-mat-app .btn-pdf, #pia-mat-app .level-help, #pia-mat-app .screen-lang,\n  #pia-mat-app .cta-final, #pia-mat-app dialog, #pia-mat-app .pia-mat-modal { display: none !important; }\n  #pia-mat-app .pia-mat-stage { padding: 0 !important; overflow: visible !important; min-height: 0 !important; display: block !important; }\n  #pia-mat-app .pia-mat-stage-inner { max-width: none !important; width: 100% !important; }\n  #pia-mat-app .screen, #pia-mat-app .screen-wide {\n    box-shadow: none !important; border: none !important; border-radius: 0 !important;\n    padding: 0 0 88px !important; \/* r\u00e9serve pour le footer fix\u00e9 en bas de page *\/\n    max-width: none !important; width: 100% !important;\n    animation: none !important; background: #fff !important; display: block !important; min-height: 0 !important;\n  }\n  #pia-mat-app [data-print-only] { display: block !important; }\n  #pia-mat-app .result-head { margin-bottom: 12px; padding: 0; border: none; }\n  #pia-mat-app .print-meta-row { display: flex !important; justify-content: space-between; align-items: center; margin: 0 0 16px; }\n  #pia-mat-app .print-logo { height: 30px; width: auto; }\n  #pia-mat-app .print-date { font-size: 9.5px; color: #8B95BC; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }\n  #pia-mat-app .print-titles { display: flex !important; justify-content: space-between; align-items: center; gap: 16px; text-align: left; margin-bottom: 8px; }\n  #pia-mat-app .print-title { font-size: 24px; font-weight: 800; color: #0A0F2E; margin: 0 0 4px; letter-spacing: -.02em; line-height: 1.08; }\n  #pia-mat-app .print-identity { font-size: 10.5px; color: #4E5A85; margin: 0; font-weight: 500; min-height: 1.2em; }\n  #pia-mat-app .print-score-chip {\n    display: inline-flex; align-items: center; white-space: nowrap; flex-shrink: 0;\n    background: #1929DD; color: #fff; border-radius: 999px;\n    padding: 9px 18px; font-size: 13px; font-weight: 800; letter-spacing: .01em;\n  }\n  #pia-mat-app .print-divider { height: 3px; border-radius: 99px; background: linear-gradient(90deg, #1929DD 0%, #2C55FB 45%, #E4E9F7 100%); margin: 12px 0 16px; }\n  #pia-mat-app .result-grid { display: grid !important; grid-template-columns: 0.85fr 1fr !important; gap: 16px !important; page-break-inside: avoid; align-items: start !important; }\n  #pia-mat-app .col-score, #pia-mat-app .col-radar, #pia-mat-app .col-actions { display: block !important; }\n  #pia-mat-app .col-score { text-align: center; grid-column: auto !important; }\n  #pia-mat-app .col-actions { grid-column: 1 \/ -1 !important; margin-top: 8px; }\n  #pia-mat-app .score-ring { width: 120px !important; height: 120px !important; margin: 0 auto 6px !important; }\n  #pia-mat-app .level-row { margin-top: 0 !important; justify-content: center !important; gap: 8px !important; }\n  #pia-mat-app .score-level { font-size: 11px !important; padding: 4px 12px !important; height: auto !important; }\n  #pia-mat-app .journey { margin: 8px 0 2px !important; }\n  #pia-mat-app .journey-labels span { font-size: 7.5px !important; }\n  #pia-mat-app .score-tagline { font-size: 12.5px !important; font-weight: 700 !important; margin: 6px 0 4px !important; color: #0A0F2E !important; }\n  #pia-mat-app .score-description { font-size: 9.5px !important; color: #4E5A85 !important; margin: 0 auto !important; line-height: 1.45 !important; max-width: 240px; }\n  #pia-mat-app .radar-wrap { background: transparent !important; border: none !important; padding: 0 !important; margin-top: 0 !important; }\n  #pia-mat-app .radar-wrap svg { max-width: 170px !important; width: 100% !important; margin: 0 auto !important; }\n  #pia-mat-app .axis-list { margin-top: 8px !important; border-top: 1px solid #E4E9F7 !important; }\n  #pia-mat-app .axis-row { padding: 5px 2px !important; border-bottom: 1px solid #E4E9F7 !important; font-size: 9px !important; gap: 8px !important; }\n  #pia-mat-app .axis-dot { width: 7px !important; height: 7px !important; }\n  #pia-mat-app .axis-name { font-size: 9px !important; }\n  #pia-mat-app .axis-score { font-size: 9px !important; }\n  #pia-mat-app .diag-block { margin: 8px 0 !important; }\n  #pia-mat-app .diag-title { font-size: 8.5px !important; margin-bottom: 4px !important; }\n  #pia-mat-app .diag { padding: 6px 9px !important; margin-bottom: 4px !important; background: #F7F9FF !important; border: 1px solid #E4E9F7 !important; }\n  #pia-mat-app .diag-text { font-size: 9px !important; line-height: 1.45 !important; }\n  #pia-mat-app .recos { gap: 5px !important; }\n  #pia-mat-app .recos h3 { font-size: 8.5px !important; margin: 6px 0 4px !important; }\n  #pia-mat-app .reco { page-break-inside: avoid; box-shadow: none !important; transform: none !important; padding: 8px 11px !important; border-radius: 8px !important; border: 1px solid #E4E9F7 !important; background: #fff !important; }\n  #pia-mat-app .reco.primary { background: linear-gradient(135deg, rgba(44,85,251,.04), rgba(145,177,255,.1)) !important; border-color: #2C55FB !important; }\n  #pia-mat-app .reco-title { font-size: 10px !important; color: #0A0F2E !important; }\n  #pia-mat-app .reco-arrow { display: none !important; }\n  #pia-mat-app .reco-desc { font-size: 9px !important; margin-top: 2px !important; color: #4E5A85 !important; line-height: 1.4 !important; }\n  #pia-mat-app .result-legal { display: none !important; }\n  \/* Footer ancr\u00e9 en bas de la page A4 (fixed s'imprime en bas de chaque page) *\/\n  #pia-mat-app .print-footer {\n    position: fixed !important; bottom: 0; left: 0; right: 0;\n    margin: 0 !important; padding: 10px 0 0; background: #fff;\n    page-break-inside: avoid;\n  }\n  #pia-mat-app .print-footer-divider { height: 2px; border-radius: 99px; background: linear-gradient(90deg, #E4E9F7 0%, #2C55FB 55%, #1929DD 100%); margin: 0 0 10px; }\n  #pia-mat-app .print-footer-row { display: flex !important; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 6px; }\n  #pia-mat-app .print-footer-brand { display: flex !important; align-items: flex-start !important; gap: 8px; font-size: 9.5px; color: #0A0F2E; font-weight: 600; }\n  #pia-mat-app .print-footer-mark { height: 16px; width: 16px; margin-top: 1px; flex-shrink: 0; }\n  #pia-mat-app .print-footer-info { display: flex !important; flex-direction: column !important; gap: 1px !important; line-height: 1.25 !important; }\n  #pia-mat-app .print-footer-info strong { color: #1929DD !important; font-weight: 700 !important; font-size: 9.5px !important; }\n  #pia-mat-app .print-footer-addr { color: #4E5A85 !important; font-weight: 400 !important; font-size: 8.5px !important; }\n  #pia-mat-app .print-footer-contact { display: inline-flex !important; align-items: center !important; gap: 6px !important; font-size: 9.5px !important; color: #2C55FB !important; font-weight: 500 !important; }\n  #pia-mat-app .print-footer-meta { font-size: 7.5px !important; color: #8B95BC !important; margin: 8px 0 0 !important; text-align: center !important; line-height: 1.35 !important; letter-spacing: .03em !important; }\n}\n<\/style>\n\n<div id=\"pia-mat-app\">\n  <main class=\"pia-mat-stage\">\n    <div class=\"pia-mat-stage-inner\">\n      <div id=\"pia-mat-app-inner\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/main>\n\n  <div class=\"pia-mat-progress-bar\" aria-hidden=\"true\">\n    <div id=\"pia-mat-progress\"><\/div>\n  <\/div>\n\n  <dialog id=\"pia-mat-levels-modal\" class=\"pia-mat-modal pia-mat-modal-wide\" aria-labelledby=\"pia-mat-levels-modal-title\">\n    <div class=\"pia-mat-modal-head\">\n      <div>\n        <h2 id=\"pia-mat-levels-modal-title\" data-i18n=\"levels_modal_title\">Les 5 niveaux de maturit\u00e9 IA<\/h2>\n        <p class=\"pia-mat-modal-sub\" data-i18n=\"levels_modal_subtitle\">M\u00e9thodologie Journey to AI \u00b7 PrismIA<\/p>\n      <\/div>\n      <button type=\"button\" class=\"pia-mat-modal-close\" id=\"pia-mat-levels-close\" aria-label=\"Fermer\">\n        <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" d=\"M6 6l12 12M6 18L18 6\"\/><\/svg>\n      <\/button>\n    <\/div>\n    <div class=\"pia-mat-levels-list\" id=\"pia-mat-levels-list\"><\/div>\n    <p class=\"method-note\" data-i18n=\"levels_method_note\"><\/p>\n    <div class=\"pia-mat-modal-actions\">\n      <button type=\"button\" class=\"btn btn-ghost\" id=\"pia-mat-levels-close-2\" data-i18n=\"levels_modal_close\">Fermer<\/button>\n    <\/div>\n  <\/dialog>\n\n  <dialog id=\"pia-mat-audio-modal\" class=\"pia-mat-modal\">\n    <form method=\"dialog\" id=\"pia-mat-audio-form\">\n      <h2 data-i18n=\"audio_modal_title\">Notre agent vocal arrive bient\u00f4t<\/h2>\n      <p data-i18n=\"audio_modal_desc\"><\/p>\n      <label class=\"field\">\n        <span data-i18n=\"audio_modal_email\">Votre email<\/span>\n        <input type=\"email\" id=\"pia-mat-audio-email\" required placeholder=\"vous@entreprise.ch\" \/>\n      <\/label>\n      <div class=\"pia-mat-modal-actions\">\n        <button type=\"button\" class=\"btn btn-ghost\" id=\"pia-mat-audio-cancel\" data-i18n=\"audio_modal_cancel\">Plus tard<\/button>\n        <button type=\"submit\" class=\"btn btn-default\" data-i18n=\"audio_modal_submit\">Me pr\u00e9venir<\/button>\n      <\/div>\n      <p class=\"legal\" id=\"pia-mat-audio-status\"><\/p>\n    <\/form>\n  <\/dialog>\n<\/div>\n\n<script>\n(function () {\n  \/\/ ============================================================\n  \/\/ CONFIGURATION\n  \/\/ ============================================================\n  const POWER_AUTOMATE_SUBMIT_URL         = \"https:\/\/defaultbdab758db3cf49d2a7ce518beb5b2e.b1.environment.api.powerplatform.com:443\/powerautomate\/automations\/direct\/workflows\/2e34a4a195b246bab9a9d616fe73fa39\/triggers\/manual\/paths\/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=zvoNffnLBXNGRExRO7wDEtxZ_QMGNKIPfcK3wziNG1o\";\n  const POWER_AUTOMATE_AUDIO_WAITLIST_URL = POWER_AUTOMATE_SUBMIT_URL;\n  const LOGO_BLUE_URL = \"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PRISMIA_logo_couleur_20241105.svg\";\n  const MARK_BLUE_URL = \"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PIA_logo_square.svg\";\n  const CONTACT_EMAIL = \"contact@prismia.ch\";\n\n  \/\/ ============================================================\n  \/\/ CONTENT \u2014 injected at build time from content\/questions.json\n  \/\/ ============================================================\n  const CONTENT = {\n  \"version\": \"3.0.0\",\n  \"languages\": [\n    \"fr\",\n    \"en\"\n  ],\n  \"default_language\": \"fr\",\n  \"source\": \"Documentation JTAI \/ 01_cadre\/03_modele_maturite_ia.md \u2014 mod\u00e8le 6 axes \/ 30 crit\u00e8res. v3 : r\u00e9ponses ancr\u00e9es (5 situations par question), scoring pond\u00e9r\u00e9 par crit\u00e8res, diagnostics par axe, recos par axes faibles + profil. 27\/30 crit\u00e8res couverts (B5, C2, C3 exclus : ing\u00e9nierie ML, rarement applicables aux PME).\",\n  \"ui\": {\n    \"fr\": {\n      \"audio_btn\": \"Faire le test \u00e0 l'oral\",\n      \"audio_modal_title\": \"Notre agent vocal arrive bient\u00f4t\",\n      \"audio_modal_desc\": \"Passez le test en discutant de vive voix avec un assistant PrismIA, \u00e0 votre rythme. Laissez votre email \u2014 vous serez pr\u00e9venu\u00b7e d\u00e8s le lancement.\",\n      \"audio_modal_email\": \"Votre email\",\n      \"audio_modal_cancel\": \"Plus tard\",\n      \"audio_modal_submit\": \"Me pr\u00e9venir\",\n      \"audio_modal_success\": \"Merci ! Nous vous \u00e9crivons au lancement.\",\n      \"audio_modal_error\": \"D\u00e9sol\u00e9, une erreur s'est produite.\",\n      \"footer_privacy\": \"Confidentialit\u00e9\",\n      \"footer_copy\": \"\u00a9 PrismIA S\u00e0rl \u00b7 Gen\u00e8ve\",\n      \"intro_eyebrow\": \"Test de maturit\u00e9 IA \u00b7 Gratuit\",\n      \"intro_title\": \"O\u00f9 en est votre organisation avec l'IA&nbsp;?\",\n      \"intro_subtitle\": \"14 questions, 5 minutes. Vous obtenez un score sur 5, un radar par axe et 3 recommandations adapt\u00e9es \u00e0 votre profil.\",\n      \"perk1_value\": \"5 min\",\n      \"perk1_label\": \"Le temps d'un caf\u00e9\",\n      \"perk2_value\": \"6 axes\",\n      \"perk2_label\": \"M\u00e9thodologie Journey to AI\",\n      \"perk3_value\": \"Sur-mesure\",\n      \"perk3_label\": \"Recos selon vos points faibles\",\n      \"btn_start\": \"Commencer le test\",\n      \"btn_audio_intro\": \"Je pr\u00e9f\u00e8re le faire \u00e0 l'oral\",\n      \"intro_legal\": \"Vos r\u00e9ponses sont confidentielles. Email demand\u00e9 \u00e0 la fin du test pour recevoir votre rapport.\",\n      \"back\": \"Retour\",\n      \"skip\": \"Passer\",\n      \"email_invalid\": \"Email invalide. V\u00e9rifiez le format (ex. : vous@entreprise.ch).\",\n      \"email_disposable\": \"Cet email ressemble \u00e0 une adresse temporaire. Utilisez votre email pro pour recevoir le rapport.\",\n      \"email_unreachable\": \"Ce domaine ne semble pas exister. V\u00e9rifiez la saisie.\",\n      \"profile_eyebrow\": \"Profil \u00b7 {idx} \/ {total}\",\n      \"maturity_eyebrow\": \"{axis} \u00b7 Question {idx} \/ {total}\",\n      \"question_hint\": \"Choisissez la situation la plus proche de la v\u00f4tre.\",\n      \"email_eyebrow\": \"Derni\u00e8re \u00e9tape \u00b7 Votre rapport\",\n      \"email_title\": \"O\u00f9 envoyons-nous votre rapport&nbsp;?\",\n      \"email_subtitle\": \"Votre score s'affiche juste apr\u00e8s. Un email r\u00e9cap (score, axes, recommandations) vous est envoy\u00e9 pour le partager avec vos \u00e9quipes.\",\n      \"email_field\": \"Email professionnel *\",\n      \"email_placeholder\": \"vous@entreprise.ch\",\n      \"toggle_optional\": \"+ Ajouter mon nom & entreprise (optionnel)\",\n      \"name_field\": \"Nom (optionnel)\",\n      \"company_field\": \"Entreprise (optionnel)\",\n      \"consent_terms_label\": \"J'accepte que PrismIA S\u00e0rl traite mon email pour m'envoyer mon rapport personnalis\u00e9.\",\n      \"consent_terms_sub\": \"Conforme \u00e0 la LPD suisse et au RGPD. Vous pouvez demander la suppression \u00e0 tout moment via <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\n      \"consent_newsletter_label\": \"<strong>Recevoir \u00ab Le monde de demAIn \u00bb<\/strong> \u2014 notre newsletter mensuelle sur l'IA en entreprise.\",\n      \"consent_newsletter_sub\": \"D\u00e9sinscription en un clic dans chaque email.\",\n      \"consent_events_label\": \"<strong>\u00catre invit\u00e9\u00b7e \u00e0 nos webinars et \u00e9v\u00e9nements IA.<\/strong>\",\n      \"consent_events_sub\": \"2 \u00e0 4 invitations par an, jamais plus.\",\n      \"btn_view_score\": \"Voir mon score\",\n      \"submit_error\": \"D\u00e9sol\u00e9, l'envoi a \u00e9chou\u00e9. R\u00e9essayez ou contactez-nous \u00e0 contact@prismia.ch.\",\n      \"loading\": \"Chargement\u2026\",\n      \"load_error_title\": \"Oups, impossible de charger le test.\",\n      \"load_error_desc\": \"Rechargez la page ou contactez-nous \u00e0 <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\n      \"result_eyebrow\": \"Votre r\u00e9sultat\",\n      \"result_on\": \"sur 5\",\n      \"strength_title\": \"Votre point d'appui\",\n      \"priorities_title\": \"Vos priorit\u00e9s\",\n      \"axis_not_rated\": \"Non \u00e9valu\u00e9\",\n      \"uncertain_note\": \"Vous avez r\u00e9pondu \u00ab je ne sais pas \u00bb \u00e0 {n} questions. Cette incertitude est d\u00e9j\u00e0 un enseignement : un audit sert pr\u00e9cis\u00e9ment \u00e0 lever ces zones d'ombre.\",\n      \"recos_title\": \"Vos 3 prochaines \u00e9tapes\",\n      \"cta_final_title\": \"On en parle&nbsp;?\",\n      \"cta_final_desc\": \"30&nbsp;min avec un expert PrismIA pour d\u00e9cortiquer votre score et discuter de la suite. Sans engagement.\",\n      \"cta_final_btn\": \"R\u00e9server mon appel d\u00e9couverte\",\n      \"result_legal\": \"Rapport envoy\u00e9 \u00e0 <strong>{email}<\/strong> \u00b7 M\u00e9thodologie <em>Journey to AI<\/em> \u00b7 6 axes \/ 30 crit\u00e8res (version simplifi\u00e9e)\",\n      \"result_axis_score\": \"{score} \/ 5\",\n      \"download_pdf\": \"T\u00e9l\u00e9charger en PDF\",\n      \"understand_levels\": \"Comprendre votre niveau\",\n      \"levels_modal_title\": \"Les 5 niveaux de maturit\u00e9 IA\",\n      \"levels_modal_subtitle\": \"M\u00e9thodologie Journey to AI \u00b7 PrismIA\",\n      \"levels_modal_close\": \"Fermer\",\n      \"levels_method_note\": \"Version en ligne simplifi\u00e9e du mod\u00e8le Journey to AI : 27 des 30 crit\u00e8res sont \u00e9valu\u00e9s \u2014 les 3 crit\u00e8res d'ing\u00e9nierie ML (pipelines d'entra\u00eenement, infrastructure, MLOps), rarement applicables aux PME, sont exclus du calcul.\",\n      \"your_level_badge\": \"Votre niveau\",\n      \"level_range\": \"Score {min} \u2013 {max}\",\n      \"email_subject\": \"Votre maturit\u00e9 IA : {score}\/5 \u00b7 {level} \u2014 rapport PrismIA\",\n      \"print_header_title\": \"Test de maturit\u00e9 IA\",\n      \"print_header_subtitle\": \"Rapport personnalis\u00e9 \u00b7 Journey to AI\",\n      \"print_prepared_for\": \"Pr\u00e9par\u00e9 pour {email}\",\n      \"print_legal_meta\": \"M\u00e9thodologie Journey to AI \u00b7 6 axes \/ 30 crit\u00e8res (version simplifi\u00e9e)\"\n    },\n    \"en\": {\n      \"audio_btn\": \"Take it by voice\",\n      \"audio_modal_title\": \"Our voice agent is coming soon\",\n      \"audio_modal_desc\": \"Take the test by talking out loud with a PrismIA assistant, at your own pace. Leave your email \u2014 we'll let you know at launch.\",\n      \"audio_modal_email\": \"Your email\",\n      \"audio_modal_cancel\": \"Later\",\n      \"audio_modal_submit\": \"Notify me\",\n      \"audio_modal_success\": \"Thanks! We'll write to you at launch.\",\n      \"audio_modal_error\": \"Sorry, something went wrong.\",\n      \"footer_privacy\": \"Privacy\",\n      \"footer_copy\": \"\u00a9 PrismIA S\u00e0rl \u00b7 Geneva\",\n      \"intro_eyebrow\": \"AI Maturity Test \u00b7 Free\",\n      \"intro_title\": \"Where does your organization stand with AI?\",\n      \"intro_subtitle\": \"14 questions, 5 minutes. You get a score out of 5, a radar by axis and 3 recommendations tailored to your profile.\",\n      \"perk1_value\": \"5 min\",\n      \"perk1_label\": \"Coffee-break short\",\n      \"perk2_value\": \"6 axes\",\n      \"perk2_label\": \"Journey to AI methodology\",\n      \"perk3_value\": \"Tailored\",\n      \"perk3_label\": \"Recos based on your gaps\",\n      \"btn_start\": \"Start the test\",\n      \"btn_audio_intro\": \"I'd rather do it by voice\",\n      \"intro_legal\": \"Your answers are confidential. Email asked at the end to send you the report.\",\n      \"back\": \"Back\",\n      \"skip\": \"Skip\",\n      \"email_invalid\": \"Invalid email. Check the format (e.g. you@company.com).\",\n      \"email_disposable\": \"This looks like a disposable address. Please use your work email to receive the report.\",\n      \"email_unreachable\": \"This domain doesn't seem to exist. Please double-check.\",\n      \"profile_eyebrow\": \"Profile \u00b7 {idx} \/ {total}\",\n      \"maturity_eyebrow\": \"{axis} \u00b7 Question {idx} \/ {total}\",\n      \"question_hint\": \"Pick the situation closest to yours.\",\n      \"email_eyebrow\": \"Last step \u00b7 Your report\",\n      \"email_title\": \"Where should we send your report?\",\n      \"email_subtitle\": \"Your score shows up right after. A recap email (score, axes, recommendations) is sent so you can share it with your teams.\",\n      \"email_field\": \"Work email *\",\n      \"email_placeholder\": \"you@company.com\",\n      \"toggle_optional\": \"+ Add name & company (optional)\",\n      \"name_field\": \"Name (optional)\",\n      \"company_field\": \"Company (optional)\",\n      \"consent_terms_label\": \"I agree that PrismIA S\u00e0rl may process my email to send me my personalized report.\",\n      \"consent_terms_sub\": \"Compliant with Swiss FADP and EU GDPR. You can request deletion at any time via <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\n      \"consent_newsletter_label\": \"<strong>Subscribe to \u201cTomorrow's World of AI\u201d<\/strong> \u2014 our monthly newsletter on AI in business.\",\n      \"consent_newsletter_sub\": \"One-click unsubscribe in every email.\",\n      \"consent_events_label\": \"<strong>Receive invites to our AI webinars and events.<\/strong>\",\n      \"consent_events_sub\": \"2 to 4 invitations a year, never more.\",\n      \"btn_view_score\": \"View my score\",\n      \"submit_error\": \"Sorry, submission failed. Please retry or contact us at contact@prismia.ch.\",\n      \"loading\": \"Loading\u2026\",\n      \"load_error_title\": \"Oops, the test couldn't load.\",\n      \"load_error_desc\": \"Reload the page or contact us at <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\n      \"result_eyebrow\": \"Your result\",\n      \"result_on\": \"out of 5\",\n      \"strength_title\": \"Your strongest asset\",\n      \"priorities_title\": \"Your priorities\",\n      \"axis_not_rated\": \"Not assessed\",\n      \"uncertain_note\": \"You answered \u201cI don't know\u201d to {n} questions. That uncertainty is a finding in itself: an audit exists precisely to clear those blind spots.\",\n      \"recos_title\": \"Your 3 next steps\",\n      \"cta_final_title\": \"Let's talk?\",\n      \"cta_final_desc\": \"30&nbsp;minutes with a PrismIA expert to unpack your score and discuss next steps. No commitment.\",\n      \"cta_final_btn\": \"Book my discovery call\",\n      \"result_legal\": \"Report sent to <strong>{email}<\/strong> \u00b7 <em>Journey to AI<\/em> methodology \u00b7 6 axes \/ 30 criteria (simplified version)\",\n      \"result_axis_score\": \"{score} \/ 5\",\n      \"download_pdf\": \"Download as PDF\",\n      \"understand_levels\": \"Understand your level\",\n      \"levels_modal_title\": \"The 5 AI Maturity Levels\",\n      \"levels_modal_subtitle\": \"Journey to AI methodology \u00b7 PrismIA\",\n      \"levels_modal_close\": \"Close\",\n      \"levels_method_note\": \"Simplified online version of the Journey to AI model: 27 of the 30 criteria are assessed \u2014 the 3 ML-engineering criteria (training pipelines, infrastructure, MLOps), rarely applicable to SMEs, are excluded from the calculation.\",\n      \"your_level_badge\": \"Your level\",\n      \"level_range\": \"Score {min} \u2013 {max}\",\n      \"email_subject\": \"Your AI maturity: {score}\/5 \u00b7 {level} \u2014 PrismIA report\",\n      \"print_header_title\": \"AI Maturity Test\",\n      \"print_header_subtitle\": \"Personalized report \u00b7 Journey to AI\",\n      \"print_prepared_for\": \"Prepared for {email}\",\n      \"print_legal_meta\": \"Journey to AI methodology \u00b7 6 axes \/ 30 criteria (simplified version)\"\n    }\n  },\n  \"scale\": {\n    \"na\": {\n      \"short\": {\n        \"fr\": \"Je ne sais pas \/ pas applicable\",\n        \"en\": \"I don't know \/ not applicable\"\n      }\n    }\n  },\n  \"axes\": [\n    {\n      \"id\": \"A\",\n      \"color\": \"#1929DD\",\n      \"name\": {\n        \"fr\": \"Strat\u00e9gie & Gouvernance\",\n        \"en\": \"Strategy & Governance\"\n      },\n      \"short\": {\n        \"fr\": \"Strat\u00e9gie\",\n        \"en\": \"Strategy\"\n      }\n    },\n    {\n      \"id\": \"B\",\n      \"color\": \"#2C55FB\",\n      \"name\": {\n        \"fr\": \"Fondations Donn\u00e9es\",\n        \"en\": \"Data Foundations\"\n      },\n      \"short\": {\n        \"fr\": \"Donn\u00e9es\",\n        \"en\": \"Data\"\n      }\n    },\n    {\n      \"id\": \"C\",\n      \"color\": \"#0A1240\",\n      \"name\": {\n        \"fr\": \"Technologie & Architecture\",\n        \"en\": \"Technology & Architecture\"\n      },\n      \"short\": {\n        \"fr\": \"Technologie\",\n        \"en\": \"Technology\"\n      }\n    },\n    {\n      \"id\": \"D\",\n      \"color\": \"#91B1FF\",\n      \"name\": {\n        \"fr\": \"Personnes & Comp\u00e9tences\",\n        \"en\": \"People & Skills\"\n      },\n      \"short\": {\n        \"fr\": \"\u00c9quipes\",\n        \"en\": \"People\"\n      }\n    },\n    {\n      \"id\": \"E\",\n      \"color\": \"#FFBC7D\",\n      \"name\": {\n        \"fr\": \"Adoption & Cr\u00e9ation de valeur\",\n        \"en\": \"Adoption & Value Creation\"\n      },\n      \"short\": {\n        \"fr\": \"Valeur\",\n        \"en\": \"Value\"\n      }\n    },\n    {\n      \"id\": \"F\",\n      \"color\": \"#4E5A85\",\n      \"name\": {\n        \"fr\": \"Mod\u00e8le Op\u00e9rationnel & Conduite du changement\",\n        \"en\": \"Operating Model & Change Management\"\n      },\n      \"short\": {\n        \"fr\": \"Op\u00e9rations\",\n        \"en\": \"Operations\"\n      }\n    }\n  ],\n  \"profile_questions\": [\n    {\n      \"id\": \"role\",\n      \"type\": \"single\",\n      \"title\": {\n        \"fr\": \"Quel est votre r\u00f4le ?\",\n        \"en\": \"What's your role?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Pour adapter nos recommandations\",\n        \"en\": \"So we can tailor our recommendations\"\n      },\n      \"options\": [\n        {\n          \"value\": \"dirigeant\",\n          \"icon\": \"briefcase\",\n          \"label\": {\n            \"fr\": \"Dirigeant\u00b7e \/ CEO\",\n            \"en\": \"CEO \/ Executive\"\n          }\n        },\n        {\n          \"value\": \"dsi\",\n          \"icon\": \"monitor\",\n          \"label\": {\n            \"fr\": \"DSI \/ Responsable IT\",\n            \"en\": \"CIO \/ IT Lead\"\n          }\n        },\n        {\n          \"value\": \"metier\",\n          \"icon\": \"chart\",\n          \"label\": {\n            \"fr\": \"Responsable m\u00e9tier\",\n            \"en\": \"Business Lead\"\n          }\n        },\n        {\n          \"value\": \"independant\",\n          \"icon\": \"rocket\",\n          \"label\": {\n            \"fr\": \"Ind\u00e9pendant\u00b7e\",\n            \"en\": \"Independent\"\n          }\n        },\n        {\n          \"value\": \"autre\",\n          \"icon\": \"spark\",\n          \"label\": {\n            \"fr\": \"Autre\",\n            \"en\": \"Other\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"size\",\n      \"type\": \"single\",\n      \"title\": {\n        \"fr\": \"Quelle est la taille de votre organisation ?\",\n        \"en\": \"How big is your organization?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"On ne juge pas \u2014 on calibre\",\n        \"en\": \"No judgment \u2014 just for calibration\"\n      },\n      \"options\": [\n        {\n          \"value\": \"solo\",\n          \"icon\": \"user\",\n          \"label\": {\n            \"fr\": \"Ind\u00e9pendant\u00b7e (1 personne)\",\n            \"en\": \"Solo (1 person)\"\n          }\n        },\n        {\n          \"value\": \"tpe\",\n          \"icon\": \"users\",\n          \"label\": {\n            \"fr\": \"TPE (2 \u00e0 10 personnes)\",\n            \"en\": \"Small (2\u201310)\"\n          }\n        },\n        {\n          \"value\": \"pme\",\n          \"icon\": \"building\",\n          \"label\": {\n            \"fr\": \"PME (11 \u00e0 250 personnes)\",\n            \"en\": \"Medium (11\u2013250)\"\n          }\n        },\n        {\n          \"value\": \"eti\",\n          \"icon\": \"columns\",\n          \"label\": {\n            \"fr\": \"ETI (251 \u00e0 5 000)\",\n            \"en\": \"Large (251\u20135,000)\"\n          }\n        },\n        {\n          \"value\": \"grand\",\n          \"icon\": \"city\",\n          \"label\": {\n            \"fr\": \"Grand groupe (5 000+)\",\n            \"en\": \"Enterprise (5,000+)\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"sector\",\n      \"type\": \"single\",\n      \"skippable\": true,\n      \"title\": {\n        \"fr\": \"Dans quel secteur ?\",\n        \"en\": \"Which sector?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Optionnel \u2014 pour affiner les recommandations\",\n        \"en\": \"Optional \u2014 to refine recommendations\"\n      },\n      \"options\": [\n        {\n          \"value\": \"finance\",\n          \"icon\": \"bank\",\n          \"label\": {\n            \"fr\": \"Finance \/ Assurance\",\n            \"en\": \"Finance \/ Insurance\"\n          }\n        },\n        {\n          \"value\": \"industrie\",\n          \"icon\": \"factory\",\n          \"label\": {\n            \"fr\": \"Industrie \/ Manufacturing\",\n            \"en\": \"Manufacturing\"\n          }\n        },\n        {\n          \"value\": \"services\",\n          \"icon\": \"briefcase\",\n          \"label\": {\n            \"fr\": \"Services \/ Conseil\",\n            \"en\": \"Services \/ Consulting\"\n          }\n        },\n        {\n          \"value\": \"sante\",\n          \"icon\": \"health\",\n          \"label\": {\n            \"fr\": \"Sant\u00e9 \/ Pharma\",\n            \"en\": \"Healthcare \/ Pharma\"\n          }\n        },\n        {\n          \"value\": \"public\",\n          \"icon\": \"columns\",\n          \"label\": {\n            \"fr\": \"Secteur public\",\n            \"en\": \"Public Sector\"\n          }\n        },\n        {\n          \"value\": \"retail\",\n          \"icon\": \"cart\",\n          \"label\": {\n            \"fr\": \"Commerce \/ Retail\",\n            \"en\": \"Retail\"\n          }\n        },\n        {\n          \"value\": \"tech\",\n          \"icon\": \"bulb\",\n          \"label\": {\n            \"fr\": \"Tech \/ Logiciel\",\n            \"en\": \"Tech \/ Software\"\n          }\n        },\n        {\n          \"value\": \"autre\",\n          \"icon\": \"spark\",\n          \"label\": {\n            \"fr\": \"Autre\",\n            \"en\": \"Other\"\n          }\n        }\n      ]\n    }\n  ],\n  \"maturity_questions\": [\n    {\n      \"id\": \"Q1\",\n      \"axis\": \"A\",\n      \"weight_on\": [\n        \"A1\",\n        \"A2\"\n      ],\n      \"title\": {\n        \"fr\": \"Quelle place l'IA occupe-t-elle dans votre strat\u00e9gie ?\",\n        \"en\": \"What place does AI hold in your strategy?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Vision, ambition, portage par la direction\",\n        \"en\": \"Vision, ambition, leadership ownership\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"On n'en a jamais vraiment parl\u00e9 en direction\",\n            \"en\": \"It has never really been discussed at leadership level\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"On en discute, mais rien d'\u00e9crit ni de budg\u00e9t\u00e9\",\n            \"en\": \"We talk about it, but nothing written or budgeted\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Une ambition existe, port\u00e9e par quelques convaincus\",\n            \"en\": \"An ambition exists, carried by a few believers\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Vision \u00e9crite, sponsor clair, budget d\u00e9di\u00e9\",\n            \"en\": \"Written vision, clear sponsor, dedicated budget\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"L'IA est un pilier strat\u00e9gique, revu r\u00e9guli\u00e8rement\",\n            \"en\": \"AI is a strategic pillar, reviewed regularly\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q2\",\n      \"axis\": \"A\",\n      \"weight_on\": [\n        \"A3\",\n        \"A4\",\n        \"A5\"\n      ],\n      \"title\": {\n        \"fr\": \"Qui d\u00e9cide des projets IA, et avec quelles r\u00e8gles ?\",\n        \"en\": \"Who decides on AI projects, and under what rules?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"R\u00f4les, arbitrages, r\u00e8gles d'usage responsable\",\n        \"en\": \"Roles, decision-making, responsible-use rules\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Personne en particulier : chacun fait ses essais dans son coin\",\n            \"en\": \"No one in particular: everyone experiments on their own\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Les d\u00e9cisions se prennent au cas par cas, sans r\u00e8gles \u00e9crites\",\n            \"en\": \"Decisions are made case by case, with no written rules\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Un responsable arbitre, premi\u00e8res r\u00e8gles d'usage pos\u00e9es\",\n            \"en\": \"One person arbitrates, first usage rules in place\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"R\u00f4les d\u00e9finis, charte IA appliqu\u00e9e, projets prioris\u00e9s\",\n            \"en\": \"Defined roles, an applied AI charter, prioritized projects\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Gouvernance rod\u00e9e : comit\u00e9, politiques, conformit\u00e9 suivie (LPD, AI Act)\",\n            \"en\": \"Mature governance: committee, policies, tracked compliance (FADP, AI Act)\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q3\",\n      \"axis\": \"B\",\n      \"weight_on\": [\n        \"B1\",\n        \"B3\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos donn\u00e9es sont-elles faciles \u00e0 exploiter ?\",\n        \"en\": \"Is your data easy to work with?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Disponibilit\u00e9, centralisation, \u00e9changes entre syst\u00e8mes\",\n        \"en\": \"Availability, centralization, flows between systems\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"\u00c9parpill\u00e9es : fichiers, bo\u00eetes mail, m\u00e9moire des gens\",\n            \"en\": \"Scattered: files, inboxes, people's memory\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Quelques syst\u00e8mes centraux, beaucoup de ressaisie manuelle\",\n            \"en\": \"A few central systems, lots of manual re-entry\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Les donn\u00e9es cl\u00e9s sont centralis\u00e9es et \u00e0 peu pr\u00e8s \u00e0 jour\",\n            \"en\": \"Key data is centralized and reasonably up to date\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Syst\u00e8mes connect\u00e9s, donn\u00e9es accessibles l\u00e0 o\u00f9 on en a besoin\",\n            \"en\": \"Connected systems, data available where it's needed\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Donn\u00e9es disponibles en continu, \u00e9changes automatis\u00e9s entre syst\u00e8mes\",\n            \"en\": \"Data continuously available, automated flows between systems\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q4\",\n      \"axis\": \"B\",\n      \"weight_on\": [\n        \"B2\",\n        \"B4\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos donn\u00e9es sont-elles fiables et bien prot\u00e9g\u00e9es ?\",\n        \"en\": \"Is your data reliable and well protected?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Qualit\u00e9, responsabilit\u00e9s, s\u00e9curit\u00e9, donn\u00e9es personnelles\",\n        \"en\": \"Quality, ownership, security, personal data\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"On d\u00e9couvre les erreurs quand quelqu'un tombe dessus\",\n            \"en\": \"Errors get found when someone stumbles on them\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"La qualit\u00e9 d\u00e9pend des personnes, la s\u00e9curit\u00e9 reste basique\",\n            \"en\": \"Quality depends on individuals, security is basic\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Contr\u00f4les en place sur les donn\u00e9es sensibles, responsables identifi\u00e9s\",\n            \"en\": \"Controls on sensitive data, identified owners\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Qualit\u00e9 suivie, acc\u00e8s ma\u00eetris\u00e9s, LPD\/RGPD sous contr\u00f4le\",\n            \"en\": \"Tracked quality, controlled access, FADP\/GDPR under control\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Qualit\u00e9 mesur\u00e9e en continu, tra\u00e7abilit\u00e9 compl\u00e8te, audits r\u00e9guliers\",\n            \"en\": \"Continuously measured quality, full traceability, regular audits\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q5\",\n      \"axis\": \"C\",\n      \"weight_on\": [\n        \"C1\",\n        \"C4\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos outils IA sont-ils int\u00e9gr\u00e9s \u00e0 vos syst\u00e8mes ?\",\n        \"en\": \"Are your AI tools integrated with your systems?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Du chacun-son-outil aux outils branch\u00e9s sur votre informatique\",\n        \"en\": \"From everyone-picks-their-own to tools plugged into your IT\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Pas d'outils IA, ou des comptes perso non d\u00e9clar\u00e9s\",\n            \"en\": \"No AI tools, or undeclared personal accounts\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Des outils \u00e9pars, choisis par chacun, non connect\u00e9s\",\n            \"en\": \"Scattered tools, individually chosen, not connected\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Des outils valid\u00e9s, mais encore \u00e0 c\u00f4t\u00e9 de nos logiciels m\u00e9tier\",\n            \"en\": \"Approved tools, but still sitting beside our business software\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Outils standardis\u00e9s, connect\u00e9s \u00e0 nos syst\u00e8mes principaux\",\n            \"en\": \"Standardized tools, connected to our main systems\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"L'IA s'ins\u00e8re nativement dans nos flux et logiciels m\u00e9tier\",\n            \"en\": \"AI fits natively into our workflows and business software\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q6\",\n      \"axis\": \"C\",\n      \"weight_on\": [\n        \"C5\"\n      ],\n      \"title\": {\n        \"fr\": \"Comment choisissez-vous vos solutions IA ?\",\n        \"en\": \"How do you choose your AI solutions?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"S\u00e9curit\u00e9, conformit\u00e9, co\u00fbts : \u00e9valu\u00e9s avant d'adopter\",\n        \"en\": \"Security, compliance, costs: assessed before adopting\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"On prend ce qui passe, sans \u00e9valuation particuli\u00e8re\",\n            \"en\": \"We take whatever comes along, no real assessment\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"On regarde surtout le prix ou la popularit\u00e9\",\n            \"en\": \"We mostly look at price or popularity\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"S\u00e9curit\u00e9 et conformit\u00e9 v\u00e9rifi\u00e9es pour les projets sensibles\",\n            \"en\": \"Security and compliance checked for sensitive projects\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Grille syst\u00e9matique : s\u00e9curit\u00e9, conformit\u00e9, co\u00fbts, r\u00e9versibilit\u00e9\",\n            \"en\": \"Systematic checklist: security, compliance, costs, exit options\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"\u00c9valuation continue : co\u00fbts optimis\u00e9s, risques revus, veille active\",\n            \"en\": \"Continuous evaluation: optimized costs, reviewed risks, active watch\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q7\",\n      \"axis\": \"D\",\n      \"weight_on\": [\n        \"D1\",\n        \"D2\"\n      ],\n      \"title\": {\n        \"fr\": \"Avez-vous les comp\u00e9tences IA qu'il vous faut ?\",\n        \"en\": \"Do you have the AI skills you need?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"En interne ou via des partenaires de confiance\",\n        \"en\": \"In-house or through trusted partners\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Personne n'a vraiment de comp\u00e9tences IA chez nous\",\n            \"en\": \"No one here really has AI skills\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Quelques autodidactes motiv\u00e9s, sans r\u00f4le officiel\",\n            \"en\": \"A few motivated self-learners, no official role\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Des r\u00e9f\u00e9rents identifi\u00e9s, appuy\u00e9s par des partenaires\",\n            \"en\": \"Identified go-to people, supported by partners\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Comp\u00e9tences couvertes en interne et via partenaires, r\u00f4les clairs\",\n            \"en\": \"Skills covered in-house and via partners, clear roles\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"\u00c9quipe IA structur\u00e9e, plan de comp\u00e9tences anticip\u00e9\",\n            \"en\": \"Structured AI team, skills planned ahead\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q8\",\n      \"axis\": \"D\",\n      \"weight_on\": [\n        \"D3\",\n        \"D4\",\n        \"D5\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos \u00e9quipes sont-elles \u00e0 l'aise avec l'IA ?\",\n        \"en\": \"Are your teams comfortable with AI?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Sensibilisation, formation, collaboration m\u00e9tier-IT\",\n        \"en\": \"Awareness, training, business-IT collaboration\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"L'IA inqui\u00e8te ou n'int\u00e9resse pas grand monde\",\n            \"en\": \"AI worries people, or hardly anyone cares\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Quelques curieux l'utilisent, sans cadre ni formation\",\n            \"en\": \"A few curious people use it, no framework or training\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Premi\u00e8res formations faites, des \u00e9quipes pilotes actives\",\n            \"en\": \"First trainings done, active pilot teams\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Formations r\u00e9guli\u00e8res, m\u00e9tiers et IT travaillent ensemble\",\n            \"en\": \"Regular training, business and IT working together\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Culture IA install\u00e9e : les \u00e9quipes proposent leurs propres cas d'usage\",\n            \"en\": \"AI culture in place: teams bring their own use cases\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q9\",\n      \"axis\": \"E\",\n      \"weight_on\": [\n        \"E1\",\n        \"E4\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos usages IA rapportent-ils, preuves \u00e0 l'appui ?\",\n        \"en\": \"Is your AI paying off, with proof?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Lien avec vos objectifs, gains mesur\u00e9s\",\n        \"en\": \"Link to your goals, measured gains\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Aucun usage IA r\u00e9el \u00e0 ce jour\",\n            \"en\": \"No real AI usage yet\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Des usages existent, mais personne ne mesure les gains\",\n            \"en\": \"Some usage exists, but nobody measures the gains\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Les gains sont estim\u00e9s sur quelques cas d'usage cl\u00e9s\",\n            \"en\": \"Gains are estimated on a few key use cases\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Chaque projet IA a des objectifs chiffr\u00e9s et suivis\",\n            \"en\": \"Every AI project has tracked, quantified goals\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Le retour sur investissement de l'IA est pilot\u00e9 en direction\",\n            \"en\": \"AI return on investment is steered at leadership level\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q10\",\n      \"axis\": \"E\",\n      \"weight_on\": [\n        \"E2\",\n        \"E3\"\n      ],\n      \"title\": {\n        \"fr\": \"Vos pilotes IA deviennent-ils des usages g\u00e9n\u00e9ralis\u00e9s ?\",\n        \"en\": \"Do your AI pilots become widespread usage?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Du test qui tra\u00eene au d\u00e9ploiement pour tous\",\n        \"en\": \"From stalled tests to rollout for everyone\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Nous n'avons encore rien test\u00e9\",\n            \"en\": \"We haven't tested anything yet\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Des tests ont eu lieu, rest\u00e9s sans suite\",\n            \"en\": \"Tests happened, then went nowhere\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Un ou deux pilotes sont pass\u00e9s en usage r\u00e9el\",\n            \"en\": \"One or two pilots made it into real use\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Un chemin clair existe du pilote au d\u00e9ploiement\",\n            \"en\": \"A clear path exists from pilot to rollout\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Le passage \u00e0 l'\u00e9chelle est un processus rod\u00e9\",\n            \"en\": \"Scaling up is a well-oiled process\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q11\",\n      \"axis\": \"E\",\n      \"weight_on\": [\n        \"E5\"\n      ],\n      \"title\": {\n        \"fr\": \"Tirez-vous les le\u00e7ons de vos projets IA ?\",\n        \"en\": \"Do you learn from your AI projects?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Succ\u00e8s comme \u00e9checs : document\u00e9s et r\u00e9utilis\u00e9s\",\n        \"en\": \"Wins and failures: documented and reused\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Chaque projet repart de z\u00e9ro\",\n            \"en\": \"Every project starts from scratch\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Les le\u00e7ons restent dans la t\u00eate des participants\",\n            \"en\": \"Lessons stay in participants' heads\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Les projets cl\u00e9s font l'objet d'un bilan \u00e9crit\",\n            \"en\": \"Key projects get a written debrief\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Bilans syst\u00e9matiques, bonnes pratiques partag\u00e9es\",\n            \"en\": \"Systematic debriefs, shared best practices\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Retours d'exp\u00e9rience organis\u00e9s et r\u00e9utilis\u00e9s dans chaque projet\",\n            \"en\": \"Lessons organized and reused in every project\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q12\",\n      \"axis\": \"F\",\n      \"weight_on\": [\n        \"F1\",\n        \"F5\"\n      ],\n      \"title\": {\n        \"fr\": \"L'IA fait-elle partie de votre quotidien op\u00e9rationnel ?\",\n        \"en\": \"Is AI part of your daily operations?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Int\u00e9gr\u00e9e aux processus standards, pas un projet \u00e0 part\",\n        \"en\": \"Built into standard processes, not a side project\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"L'IA reste un sujet de discussion, pas une pratique\",\n            \"en\": \"AI is still a talking point, not a practice\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Quelques usages individuels, hors des processus officiels\",\n            \"en\": \"A few individual uses, outside official processes\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"L'IA est int\u00e9gr\u00e9e \u00e0 certains processus cibl\u00e9s\",\n            \"en\": \"AI is built into a few targeted processes\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"L'IA fait partie des processus standards de plusieurs \u00e9quipes\",\n            \"en\": \"AI is part of standard processes across several teams\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Nos processus sont pens\u00e9s avec l'IA par d\u00e9faut\",\n            \"en\": \"Our processes are designed with AI by default\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q13\",\n      \"axis\": \"F\",\n      \"weight_on\": [\n        \"F2\",\n        \"F4\"\n      ],\n      \"title\": {\n        \"fr\": \"Accompagnez-vous vos \u00e9quipes dans le changement ?\",\n        \"en\": \"Do you support your teams through change?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Communication, accompagnement, retours utilisateurs\",\n        \"en\": \"Communication, support, user feedback\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Les outils arrivent sans explication ni accompagnement\",\n            \"en\": \"Tools show up with no explanation or support\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"Une communication minimale, puis chacun se d\u00e9brouille\",\n            \"en\": \"Minimal communication, then everyone fends for themselves\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Accompagnement organis\u00e9 sur les projets importants\",\n            \"en\": \"Organized support on major projects\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Conduite du changement syst\u00e9matique, retours collect\u00e9s\",\n            \"en\": \"Systematic change management, feedback collected\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Boucle continue : les retours utilisateurs am\u00e9liorent les solutions\",\n            \"en\": \"Continuous loop: user feedback improves the solutions\"\n          }\n        }\n      ]\n    },\n    {\n      \"id\": \"Q14\",\n      \"axis\": \"F\",\n      \"weight_on\": [\n        \"F3\"\n      ],\n      \"title\": {\n        \"fr\": \"Surveillez-vous vos solutions IA une fois lanc\u00e9es ?\",\n        \"en\": \"Do you keep an eye on your AI once it's live?\"\n      },\n      \"subtitle\": {\n        \"fr\": \"Performance, d\u00e9rives, incidents : suivis dans la dur\u00e9e\",\n        \"en\": \"Performance, drift, incidents: tracked over time\"\n      },\n      \"options\": [\n        {\n          \"score\": 1,\n          \"label\": {\n            \"fr\": \"Rien n'est surveill\u00e9 apr\u00e8s le lancement\",\n            \"en\": \"Nothing is monitored after launch\"\n          }\n        },\n        {\n          \"score\": 2,\n          \"label\": {\n            \"fr\": \"On r\u00e9agit quand un probl\u00e8me remonte\",\n            \"en\": \"We react when a problem gets reported\"\n          }\n        },\n        {\n          \"score\": 3,\n          \"label\": {\n            \"fr\": \"Contr\u00f4les ponctuels sur les solutions critiques\",\n            \"en\": \"Spot checks on critical solutions\"\n          }\n        },\n        {\n          \"score\": 4,\n          \"label\": {\n            \"fr\": \"Suivi r\u00e9gulier : performance, erreurs, risques\",\n            \"en\": \"Regular tracking: performance, errors, risks\"\n          }\n        },\n        {\n          \"score\": 5,\n          \"label\": {\n            \"fr\": \"Surveillance continue avec alertes et revues planifi\u00e9es\",\n            \"en\": \"Continuous monitoring with alerts and scheduled reviews\"\n          }\n        }\n      ]\n    }\n  ],\n  \"diagnostics\": {\n    \"bands\": {\n      \"low_max\": 2.4,\n      \"mid_max\": 3.4\n    },\n    \"axes\": {\n      \"A\": {\n        \"low\": {\n          \"fr\": \"Sans cap ni r\u00e8gles du jeu, chaque initiative IA repart de z\u00e9ro : c'est le premier verrou \u00e0 lever.\",\n          \"en\": \"Without direction or ground rules, every AI initiative starts from scratch: this is the first lock to open.\"\n        },\n        \"mid\": {\n          \"fr\": \"Une ambition existe mais le cadre reste flou : formalisez vision, r\u00f4les et r\u00e8gles du jeu.\",\n          \"en\": \"An ambition exists but the framework is fuzzy: formalize vision, roles and ground rules.\"\n        },\n        \"high\": {\n          \"fr\": \"Cap clair : votre direction porte l'IA \u2014 un atout rare qui acc\u00e9l\u00e8re tout le reste.\",\n          \"en\": \"Clear direction: your leadership owns AI \u2014 a rare asset that speeds up everything else.\"\n        }\n      },\n      \"B\": {\n        \"low\": {\n          \"fr\": \"Donn\u00e9es \u00e9parpill\u00e9es ou peu fiables : tout projet IA butera dessus tant que ce socle n'est pas pos\u00e9.\",\n          \"en\": \"Scattered or unreliable data: every AI project will hit this wall until the foundation is laid.\"\n        },\n        \"mid\": {\n          \"fr\": \"Des donn\u00e9es exploitables mais in\u00e9gales : fiabilisez et connectez les sources cl\u00e9s.\",\n          \"en\": \"Usable but uneven data: make key sources reliable and connected.\"\n        },\n        \"high\": {\n          \"fr\": \"Vos donn\u00e9es sont pr\u00eates : le carburant de vos futurs projets IA est disponible.\",\n          \"en\": \"Your data is ready: the fuel for your future AI projects is available.\"\n        }\n      },\n      \"C\": {\n        \"low\": {\n          \"fr\": \"Outils \u00e9pars ou absents : des choix structur\u00e9s (s\u00e9curit\u00e9, co\u00fbts, int\u00e9gration) s'imposent.\",\n          \"en\": \"Scattered or missing tools: structured choices (security, costs, integration) are needed.\"\n        },\n        \"mid\": {\n          \"fr\": \"Des outils en place mais encore \u00e0 c\u00f4t\u00e9 de vos syst\u00e8mes : l'int\u00e9gration d\u00e9multiplierait leur valeur.\",\n          \"en\": \"Tools are in place but still sit beside your systems: integration would multiply their value.\"\n        },\n        \"high\": {\n          \"fr\": \"Des outils bien choisis et int\u00e9gr\u00e9s : votre informatique est un tremplin, pas un frein.\",\n          \"en\": \"Well-chosen, integrated tools: your IT is a springboard, not a brake.\"\n        }\n      },\n      \"D\": {\n        \"low\": {\n          \"fr\": \"Le facteur humain freine : sans comp\u00e9tences ni aisance des \u00e9quipes, rien ne tiendra dans la dur\u00e9e.\",\n          \"en\": \"The human factor is the brake: without skills and team confidence, nothing will last.\"\n        },\n        \"mid\": {\n          \"fr\": \"Des comp\u00e9tences \u00e9mergent : formez plus large pour d\u00e9passer le cercle des convaincus.\",\n          \"en\": \"Skills are emerging: train more widely to get beyond the circle of believers.\"\n        },\n        \"high\": {\n          \"fr\": \"Vos \u00e9quipes sont votre force : comp\u00e9tences pr\u00e9sentes et culture IA vivante.\",\n          \"en\": \"Your teams are your strength: skills on board and a living AI culture.\"\n        }\n      },\n      \"E\": {\n        \"low\": {\n          \"fr\": \"Peu ou pas de valeur d\u00e9montr\u00e9e : ciblez un premier cas d'usage rentable et mesurez-le.\",\n          \"en\": \"Little or no proven value: target one profitable use case first, and measure it.\"\n        },\n        \"mid\": {\n          \"fr\": \"Des usages r\u00e9els mais une valeur peu mesur\u00e9e : chiffrez les gains pour arbitrer et \u00e9tendre.\",\n          \"en\": \"Real usage but little measured value: quantify the gains to prioritize and expand.\"\n        },\n        \"high\": {\n          \"fr\": \"L'IA d\u00e9livre une valeur mesur\u00e9e : vous savez transformer les usages en r\u00e9sultats.\",\n          \"en\": \"AI delivers measured value: you know how to turn usage into results.\"\n        }\n      },\n      \"F\": {\n        \"low\": {\n          \"fr\": \"Sans accompagnement ni suivi, les usages IA resteront des initiatives isol\u00e9es.\",\n          \"en\": \"Without support and monitoring, AI usage will remain isolated initiatives.\"\n        },\n        \"mid\": {\n          \"fr\": \"L'IA entre dans vos processus, mais l'accompagnement et le suivi restent partiels.\",\n          \"en\": \"AI is entering your processes, but support and monitoring are still partial.\"\n        },\n        \"high\": {\n          \"fr\": \"L'IA est ancr\u00e9e dans vos op\u00e9rations, suivie et am\u00e9lior\u00e9e en continu.\",\n          \"en\": \"AI is anchored in your operations, monitored and continuously improved.\"\n        }\n      }\n    },\n    \"not_rated\": {\n      \"fr\": \"Axe non \u00e9valu\u00e9 (r\u00e9ponses \u00ab je ne sais pas \u00bb) \u2014 c'est en soi un signal.\",\n      \"en\": \"Axis not assessed (\u201cI don't know\u201d answers) \u2014 which is a signal in itself.\"\n    }\n  },\n  \"reco_axis\": {\n    \"A\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"Journey to AI : l'audit strat\u00e9gique\",\n          \"en\": \"Journey to AI: the strategic audit\"\n        },\n        \"desc\": {\n          \"fr\": \"4 \u00e0 6 semaines pour poser vision, gouvernance et feuille de route IA prioris\u00e9e, valid\u00e9es par votre direction.\",\n          \"en\": \"4 to 6 weeks to set vision, governance and a prioritized AI roadmap, validated by your leadership.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/audit-conseil\/journey-to-ai\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/audit-consulting\/journey-to-ai\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Atelier de cadrage strat\u00e9gique\",\n          \"en\": \"Strategic framing workshop\"\n        },\n        \"desc\": {\n          \"fr\": \"Une demi-journ\u00e9e avec un expert pour poser votre cap IA : ambition, premiers cas d'usage, r\u00e8gles simples.\",\n          \"en\": \"Half a day with an expert to set your AI course: ambition, first use cases, simple rules.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n        }\n      }\n    },\n    \"B\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"AI Foundation : posez vos fondations\",\n          \"en\": \"AI Foundation: lay your groundwork\"\n        },\n        \"desc\": {\n          \"fr\": \"Structurer vos donn\u00e9es, votre socle technique et vos r\u00e8gles d'acc\u00e8s pour rendre vos projets IA possibles et s\u00fbrs.\",\n          \"en\": \"Structure your data, technical base and access rules to make your AI projects possible and safe.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/ai-foundation\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/ai-foundation\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Mise \u00e0 niveau de vos donn\u00e9es\",\n          \"en\": \"Get your data up to speed\"\n        },\n        \"desc\": {\n          \"fr\": \"Centraliser et fiabiliser vos donn\u00e9es cl\u00e9s, sans chantier pharaonique : le pr\u00e9requis de tout usage IA utile.\",\n          \"en\": \"Centralize and clean up your key data, without a mega-project: the prerequisite for any useful AI.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/ai-foundation\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/ai-foundation\/\"\n        }\n      }\n    },\n    \"C\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"Int\u00e9gration IA sur mesure\",\n          \"en\": \"Tailored AI integration\"\n        },\n        \"desc\": {\n          \"fr\": \"Connecter l'IA \u00e0 vos logiciels m\u00e9tier (Microsoft 365, ERP, CRM) avec des choix technos s\u00fbrs, conformes et ma\u00eetris\u00e9s en co\u00fbts.\",\n          \"en\": \"Plug AI into your business software (Microsoft 365, ERP, CRM) with safe, compliant, cost-controlled tech choices.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/integration\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/integration\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Des outils IA bien choisis, bien branch\u00e9s\",\n          \"en\": \"AI tools well chosen, well connected\"\n        },\n        \"desc\": {\n          \"fr\": \"S\u00e9lectionner les bons outils IA et les brancher sur votre quotidien (Microsoft 365, email, documents), sans usine \u00e0 gaz.\",\n          \"en\": \"Pick the right AI tools and plug them into your daily work (Microsoft 365, email, documents), no over-engineering.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/integration\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/integration\/\"\n        }\n      }\n    },\n    \"D\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"Formations IA cibl\u00e9es\",\n          \"en\": \"Targeted AI training\"\n        },\n        \"desc\": {\n          \"fr\": \"Monter vos \u00e9quipes en comp\u00e9tence sur leurs outils r\u00e9els (Copilot, ChatGPT, Claude, Gemini), du collaborateur au comit\u00e9 de direction.\",\n          \"en\": \"Skill up your teams on their real tools (Copilot, ChatGPT, Claude, Gemini), from staff to the executive board.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/formations-ia\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/ai-training\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Formation IA pour votre \u00e9quipe\",\n          \"en\": \"AI training for your team\"\n        },\n        \"desc\": {\n          \"fr\": \"Une base commune et la ma\u00eetrise des outils du quotidien (Copilot, ChatGPT, Claude), en une \u00e0 deux sessions pragmatiques.\",\n          \"en\": \"A shared foundation and mastery of everyday tools (Copilot, ChatGPT, Claude), in one or two hands-on sessions.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/formations-ia\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/ai-training\/\"\n        }\n      }\n    },\n    \"E\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"Deep Dive cas d'usage\",\n          \"en\": \"Use-case Deep Dive\"\n        },\n        \"desc\": {\n          \"fr\": \"Choisir le cas d'usage \u00e0 plus fort retour et le cadrer jusqu'au plan de d\u00e9ploiement : business case, architecture, mesure des gains.\",\n          \"en\": \"Pick the highest-return use case and frame it through to rollout: business case, architecture, measured gains.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/audit-conseil\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/audit-consulting\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Vos 3 premiers cas d'usage rentables\",\n          \"en\": \"Your first 3 profitable use cases\"\n        },\n        \"desc\": {\n          \"fr\": \"Identifier ensemble les usages IA qui font gagner du temps d\u00e8s le premier mois, et les mettre en route.\",\n          \"en\": \"Identify together the AI uses that save time from month one, and get them running.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n        }\n      }\n    },\n    \"F\": {\n      \"large\": {\n        \"title\": {\n          \"fr\": \"Ancrage & conduite du changement\",\n          \"en\": \"Anchoring & change management\"\n        },\n        \"desc\": {\n          \"fr\": \"Ancrer l'IA dans vos processus : adoption accompagn\u00e9e, boucles de retours, suivi de la performance et des risques.\",\n          \"en\": \"Anchor AI in your processes: supported adoption, feedback loops, performance and risk monitoring.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n        }\n      },\n      \"small\": {\n        \"title\": {\n          \"fr\": \"Ancrer l'IA dans vos routines\",\n          \"en\": \"Anchor AI in your routines\"\n        },\n        \"desc\": {\n          \"fr\": \"Passer des essais individuels \u00e0 des pratiques d'\u00e9quipe : rituels simples, suivi des usages, retours r\u00e9guliers.\",\n          \"en\": \"Move from individual experiments to team practices: simple rituals, usage tracking, regular feedback.\"\n        },\n        \"url\": {\n          \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n          \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n        }\n      }\n    }\n  },\n  \"reco_closing\": {\n    \"initial\": {\n      \"title\": {\n        \"fr\": \"L'\u00e9tape d'apr\u00e8s : Journey to AI\",\n        \"en\": \"The next step: Journey to AI\"\n      },\n      \"desc\": {\n        \"fr\": \"Quand vous serez pr\u00eat : notre audit complet pour transformer ces constats en feuille de route prioris\u00e9e.\",\n        \"en\": \"When you're ready: our full audit to turn these findings into a prioritized roadmap.\"\n      },\n      \"url\": {\n        \"fr\": \"https:\/\/www.prismia.ch\/audit-conseil\/journey-to-ai\/\",\n        \"en\": \"https:\/\/www.prismia.ch\/en\/audit-consulting\/journey-to-ai\/\"\n      }\n    },\n    \"emergent\": {\n      \"title\": {\n        \"fr\": \"Journey to AI : structurez la suite\",\n        \"en\": \"Journey to AI: structure what's next\"\n      },\n      \"desc\": {\n        \"fr\": \"4 \u00e0 6 semaines, 8 entretiens, une feuille de route prioris\u00e9e : le bon levier \u00e0 votre stade.\",\n        \"en\": \"4 to 6 weeks, 8 interviews, a prioritized roadmap: the right lever at your stage.\"\n      },\n      \"url\": {\n        \"fr\": \"https:\/\/www.prismia.ch\/audit-conseil\/journey-to-ai\/\",\n        \"en\": \"https:\/\/www.prismia.ch\/en\/audit-consulting\/journey-to-ai\/\"\n      }\n    },\n    \"etabli\": {\n      \"title\": {\n        \"fr\": \"Journey to AI : passez \u00e0 l'\u00e9chelle\",\n        \"en\": \"Journey to AI: scale it up\"\n      },\n      \"desc\": {\n        \"fr\": \"Un audit cibl\u00e9 pour combler vos angles morts et transformer vos acquis en avantage durable.\",\n        \"en\": \"A focused audit to close your blind spots and turn what works into a lasting advantage.\"\n      },\n      \"url\": {\n        \"fr\": \"https:\/\/www.prismia.ch\/audit-conseil\/journey-to-ai\/\",\n        \"en\": \"https:\/\/www.prismia.ch\/en\/audit-consulting\/journey-to-ai\/\"\n      }\n    },\n    \"deploye\": {\n      \"title\": {\n        \"fr\": \"Sparring strat\u00e9gique\",\n        \"en\": \"Strategic sparring\"\n      },\n      \"desc\": {\n        \"fr\": \"Un bin\u00f4me PrismIA pour challenger votre feuille de route IA chaque trimestre et garder un coup d'avance.\",\n        \"en\": \"A PrismIA duo to challenge your AI roadmap every quarter and stay one move ahead.\"\n      },\n      \"url\": {\n        \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n        \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n      }\n    },\n    \"leader\": {\n      \"title\": {\n        \"fr\": \"Partenariat strat\u00e9gique\",\n        \"en\": \"Strategic partnership\"\n      },\n      \"desc\": {\n        \"fr\": \"Sparring de direction, veille technologique, anticipation des ruptures IA : gardons votre avance.\",\n        \"en\": \"Board-level sparring, tech intelligence, anticipating AI disruptions: let's keep your lead.\"\n      },\n      \"url\": {\n        \"fr\": \"https:\/\/www.prismia.ch\/contact\/\",\n        \"en\": \"https:\/\/www.prismia.ch\/en\/contact\/\"\n      }\n    }\n  },\n  \"reco_fallbacks\": [\n    \"D\",\n    \"A\",\n    \"B\",\n    \"C\",\n    \"E\",\n    \"F\"\n  ],\n  \"levels\": [\n    {\n      \"id\": \"initial\",\n      \"min\": 1,\n      \"max\": 1.9,\n      \"color\": \"#FFBC7D\",\n      \"label\": {\n        \"fr\": \"Initial\",\n        \"en\": \"Initial\"\n      },\n      \"tagline\": {\n        \"fr\": \"Vous \u00eates au tout d\u00e9but du voyage IA.\",\n        \"en\": \"You're at the very start of the AI journey.\"\n      },\n      \"description\": {\n        \"fr\": \"Quelques exp\u00e9rimentations isol\u00e9es, sans cadre ni vision partag\u00e9e. Excellente nouvelle : tout est encore possible et chaque action structurante aura un fort impact.\",\n        \"en\": \"A few scattered experiments, no framework or shared vision. Good news: everything is still on the table, and every structuring action will have high impact.\"\n      }\n    },\n    {\n      \"id\": \"emergent\",\n      \"min\": 2,\n      \"max\": 2.9,\n      \"color\": \"#91B1FF\",\n      \"label\": {\n        \"fr\": \"\u00c9mergent\",\n        \"en\": \"Emerging\"\n      },\n      \"tagline\": {\n        \"fr\": \"Les fondations se posent, l'impact reste limit\u00e9.\",\n        \"en\": \"Foundations are forming, impact is still limited.\"\n      },\n      \"description\": {\n        \"fr\": \"Vous avez d\u00e9marr\u00e9, mais les pilotes peinent \u00e0 se transformer en valeur business. C'est le moment de structurer pour passer \u00e0 la vitesse sup\u00e9rieure.\",\n        \"en\": \"You've started, but pilots struggle to turn into business value. Time to structure and shift up a gear.\"\n      }\n    },\n    {\n      \"id\": \"etabli\",\n      \"min\": 3,\n      \"max\": 3.9,\n      \"color\": \"#2C55FB\",\n      \"label\": {\n        \"fr\": \"\u00c9tabli\",\n        \"en\": \"Established\"\n      },\n      \"tagline\": {\n        \"fr\": \"L'IA est int\u00e9gr\u00e9e \u00e0 certains processus cl\u00e9s.\",\n        \"en\": \"AI is embedded in some key processes.\"\n      },\n      \"description\": {\n        \"fr\": \"Vous avez prouv\u00e9 la valeur. Le d\u00e9fi : passer \u00e0 l'\u00e9chelle, capitaliser les apprentissages et combler les angles morts (gouvernance, donn\u00e9es, conduite du changement).\",\n        \"en\": \"You've proven the value. The challenge: scale, capture lessons, and close blind spots (governance, data, change management).\"\n      }\n    },\n    {\n      \"id\": \"deploye\",\n      \"min\": 4,\n      \"max\": 4.4,\n      \"color\": \"#1929DD\",\n      \"label\": {\n        \"fr\": \"D\u00e9ploy\u00e9 \u00e0 l'\u00e9chelle\",\n        \"en\": \"Scaled\"\n      },\n      \"tagline\": {\n        \"fr\": \"Adoption large, valeur mesurable.\",\n        \"en\": \"Broad adoption, measurable value.\"\n      },\n      \"description\": {\n        \"fr\": \"Bravo \u2014 vous \u00eates parmi les organisations matures. La marge de progression se joue maintenant sur l'optimisation, l'innovation et le diff\u00e9renciateur comp\u00e9titif.\",\n        \"en\": \"Well done \u2014 you're among the mature organizations. The next gains come from optimization, innovation, and competitive differentiation.\"\n      }\n    },\n    {\n      \"id\": \"leader\",\n      \"min\": 4.5,\n      \"max\": 5,\n      \"color\": \"#0A1240\",\n      \"label\": {\n        \"fr\": \"Leader\",\n        \"en\": \"Leader\"\n      },\n      \"tagline\": {\n        \"fr\": \"L'IA est un diff\u00e9renciateur strat\u00e9gique.\",\n        \"en\": \"AI is a strategic differentiator.\"\n      },\n      \"description\": {\n        \"fr\": \"Vous \u00eates dans le top 5%. La priorit\u00e9 : maintenir l'avance, anticiper les ruptures et exporter votre savoir-faire.\",\n        \"en\": \"You're in the top 5%. Priorities: hold the lead, anticipate disruptions, and export your know-how.\"\n      }\n    }\n  ]\n};\n\n  \/\/ ============================================================\n  \/\/ Profile icons (stroke SVG, currentColor)\n  \/\/ ============================================================\n  const ICONS = {\n    briefcase: '<rect x=\"3.5\" y=\"7.5\" width=\"17\" height=\"12\" rx=\"2.5\"\/><path d=\"M9 7.5V6a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1.5M3.5 12.5h17\"\/>',\n    monitor:   '<rect x=\"3.5\" y=\"4.5\" width=\"17\" height=\"12\" rx=\"2\"\/><path d=\"M9 20h6m-3-3.5V20\"\/>',\n    chart:     '<path d=\"M4 20h16M7 20v-6m5 6V9m5 11v-9\"\/>',\n    rocket:    '<path d=\"M12 15c4.5-2 7-6 7-11-5 0-9 2.5-11 7m4 4-4-4m4 4-1.5 4L8 16.5 4.5 15 8 13.5M6 18l-2 2\"\/>',\n    spark:     '<path d=\"M12 3v4m0 10v4M3 12h4m10 0h4M6 6l2.5 2.5m7 7L18 18M18 6l-2.5 2.5m-7 7L6 18\"\/>',\n    user:      '<circle cx=\"12\" cy=\"8\" r=\"3.5\"\/><path d=\"M5 20c1-3.5 3.8-5 7-5s6 1.5 7 5\"\/>',\n    users:     '<circle cx=\"9\" cy=\"8.5\" r=\"3\"\/><path d=\"M3.5 19c.8-3 3-4.5 5.5-4.5s4.7 1.5 5.5 4.5M15.5 6a3 3 0 1 1 1 5.8m1 2.4c1.6.7 2.7 2 3.2 4\"\/>',\n    building:  '<rect x=\"5.5\" y=\"4\" width=\"13\" height=\"16\" rx=\"1.5\"\/><path d=\"M9 8h2m2 0h2M9 12h2m2 0h2M9 16h2m2 0h2\"\/>',\n    columns:   '<path d=\"M4 20h16M5 9.5h14M12 4 4.5 9.5h15L12 4ZM7 9.5V20m5-10.5V20m5-10.5V20\"\/>',\n    city:      '<path d=\"M3.5 20h17M5.5 20V8l4-2v14m0 0V10l5 1.5V20m0 0v-7l4 1v6\"\/>',\n    bank:      '<path d=\"M4 20h16M5 9.5h14M12 4 4.5 9.5h15L12 4ZM7 9.5V17m5-7.5V17m5-7.5V17M5.5 20v-3h13v3\"\/>',\n    factory:   '<path d=\"M4 20V9l5 3.5V9l5 3.5V6.5A1.5 1.5 0 0 1 15.5 5h2A1.5 1.5 0 0 1 19 6.5V20H4Zm4-4h2m4 0h2\"\/>',\n    health:    '<path d=\"M12 4.5c5-4.5 12 2 0 11-12-9-5-15.5 0-11Zm-4 3.5h2.5l1.5 3 2-5 1.5 2H18\"\/>',\n    cart:      '<path d=\"M4 5h2l2.2 10.5a1.5 1.5 0 0 0 1.5 1.2h7.6a1.5 1.5 0 0 0 1.5-1.2L20 8H7\"\/><circle cx=\"10\" cy=\"20\" r=\"1.3\"\/><circle cx=\"17\" cy=\"20\" r=\"1.3\"\/>',\n    bulb:      '<path d=\"M9.5 18h5m-4.5 2.5h4M12 3.5a5.5 5.5 0 0 1 3 10.1c-.6.5-1 1.2-1 1.9h-4c0-.7-.4-1.4-1-1.9a5.5 5.5 0 0 1 3-10.1Z\"\/>'\n  };\n  function icon(name, size) {\n    const p = ICONS[name] || ICONS.spark;\n    return '<svg viewBox=\"0 0 24 24\" width=\"' + (size||18) + '\" height=\"' + (size||18) + '\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">' + p + '<\/svg>';\n  }\n\n  \/\/ ============================================================\n  \/\/ State + i18n\n  \/\/ ============================================================\n  const $app      = document.getElementById(\"pia-mat-app-inner\");\n  const $progress = document.getElementById(\"pia-mat-progress\");\n  const SUPPORTED_LANGS = [\"fr\", \"en\"];\n\n  \/\/ La langue suit la PAGE (le toggle FR\/EN du site navigue entre les deux\n  \/\/ pages WPML) \u2014 pas de s\u00e9lecteur dans l'app. ?lang=xx sert au banc local.\n  function detectInitialLang() {\n    try {\n      const q = new URLSearchParams(location.search).get(\"lang\");\n      if (q && SUPPORTED_LANGS.includes(q)) return q;\n    } catch (_) {}\n    const htmlLang = (document.documentElement.lang || \"\").toLowerCase().slice(0, 2);\n    if (SUPPORTED_LANGS.includes(htmlLang)) return htmlLang;\n    const nav = (navigator.language || \"fr\").toLowerCase();\n    return nav.startsWith(\"en\") ? \"en\" : \"fr\";\n  }\n\n  const state = {\n    step: 0,\n    lang: detectInitialLang(),\n    content: CONTENT,\n    profile: { role: null, size: null, sector: null, name: \"\", company: \"\" },\n    answers: {},\n    scores: null,\n    level: null,\n    naCount: 0,\n    email: \"\",\n    consent: { terms: false, newsletter: false, events: false },\n    submissionId: null\n  };\n\n  function t(v) {\n    if (v == null) return \"\";\n    if (typeof v === \"string\") return v;\n    if (typeof v === \"object\" && (v.fr !== undefined || v.en !== undefined)) return v[state.lang] ?? v.fr ?? v.en ?? \"\";\n    return String(v);\n  }\n  function tUI(key, vars = {}) {\n    const dict = state.content?.ui?.[state.lang] ?? state.content?.ui?.fr ?? {};\n    const txt = dict[key] ?? key;\n    return txt.replace(\/\\{(\\w+)\\}\/g, (_, k) => vars[k] ?? \"\");\n  }\n  function applyStaticI18n() {\n    document.querySelectorAll(\"#pia-mat-app [data-i18n]\").forEach(el => { el.innerHTML = tUI(el.getAttribute(\"data-i18n\")); });\n  }\n  function fmtScore(n) {\n    if (n === null || n === undefined) return \"\u2014\";\n    const s = n.toFixed(1);\n    return state.lang === \"fr\" ? s.replace(\".\", \",\") : s;\n  }\n  function escapeHtml(s) {\n    return String(s).replace(\/[&<>\"']\/g, c => ({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\"\":\"&quot;\",\"'\":\"&#39;\"}[c]));\n  }\n\n  \/\/ ============================================================\n  \/\/ Steps\n  \/\/ ============================================================\n  function totalSteps() {\n    const p = state.content.profile_questions.length;\n    const q = state.content.maturity_questions.length;\n    return 1 + p + q + 1 + 1;\n  }\n  function currentStepKind() {\n    const p = state.content.profile_questions.length;\n    const q = state.content.maturity_questions.length;\n    if (state.step === 0) return \"intro\";\n    if (state.step <= p) return \"profile\";\n    if (state.step <= p + q) return \"maturity\";\n    if (state.step === p + q + 1) return \"email\";\n    return \"result\";\n  }\n  let advancing = false;\n  let navDir = 1;       \/\/ 1 = avance, -1 = retour (direction du slide)\n  let firstRender = true;\n  function go(delta) {\n    const next = state.step + delta;\n    if (next < 0 || next > totalSteps() - 1) return;\n    navDir = delta < 0 ? -1 : 1;\n    state.step = next;\n    render();\n  }\n  \/\/ S\u00e9lection refl\u00e9t\u00e9e EN PLACE (pas de re-render = pas de flash), puis avance.\n  function answerAndAdvance(btn, setter) {\n    if (advancing) return;\n    advancing = true;\n    setter();\n    const list = btn.closest(\".options\");\n    if (list) list.querySelectorAll(\".option\").forEach(b => {\n      b.classList.toggle(\"selected\", b === btn);\n      b.setAttribute(\"aria-selected\", b === btn ? \"true\" : \"false\");\n    });\n    setTimeout(() => { advancing = false; go(1); }, 170);\n  }\n  function updateProgress() {\n    const total = totalSteps() - 1;\n    $progress.style.width = (total > 0 ? (state.step \/ total) * 100 : 0) + \"%\";\n  }\n\n  \/\/ ============================================================\n  \/\/ Scoring \u2014 weighted by number of covered criteria, 1-decimal,\n  \/\/ gap-free level match (per JTAI model: rounding to 1 decimal)\n  \/\/ ============================================================\n  function computeScores() {\n    const { axes, maturity_questions } = state.content;\n    const per = {};\n    axes.forEach(a => (per[a.id] = { sum: 0, w: 0 }));\n    let naCount = 0;\n    for (const q of maturity_questions) {\n      const v = state.answers[q.id];\n      const w = (q.weight_on || []).length || 1;\n      if (v === \"na\") { naCount++; continue; }\n      if (typeof v !== \"number\") continue;\n      per[q.axis].sum += v * w;\n      per[q.axis].w += w;\n    }\n    const byAxis = {};\n    axes.forEach(a => {\n      const x = per[a.id];\n      byAxis[a.id] = x.w > 0 ? Math.round((x.sum \/ x.w) * 10) \/ 10 : null;\n    });\n    const valid = Object.values(byAxis).filter(v => v !== null);\n    const global = valid.length ? Math.round((valid.reduce((s, v) => s + v, 0) \/ valid.length) * 10) \/ 10 : 0;\n    const levels = state.content.levels;\n    const level = levels.find(l => global >= l.min && global <= l.max)\n      || (global < levels[0].min ? levels[0] : levels[levels.length - 1]);\n    state.scores = { byAxis, global };\n    state.level = level;\n    state.naCount = naCount;\n  }\n  function bandOf(score) {\n    const b = state.content.diagnostics.bands;\n    if (score <= b.low_max) return \"low\";\n    if (score <= b.mid_max) return \"mid\";\n    return \"high\";\n  }\n\n  \/\/ ============================================================\n  \/\/ Recommendations \u2014 2 weakest axes + level closing, dedup, size-aware\n  \/\/ ============================================================\n  function ratedAxesSorted() {\n    return state.content.axes\n      .filter(a => state.scores.byAxis[a.id] !== null)\n      .sort((x, y) => state.scores.byAxis[x.id] - state.scores.byAxis[y.id]);\n  }\n  function buildRecos() {\n    const sizeClass = (state.profile.size === \"solo\" || state.profile.size === \"tpe\") ? \"small\" : \"large\";\n    const rated = ratedAxesSorted();\n    const weakest = rated.slice(0, 2);\n    const candidates = [];\n    \/\/ L'offre phare d'abord (Journey to AI jusqu'\u00e0 \u00c9tabli), puis les recos par axes faibles.\n    candidates.push(state.content.reco_closing[state.level.id]);\n    weakest.forEach(a => candidates.push(state.content.reco_axis[a.id][sizeClass]));\n    (state.content.reco_fallbacks || []).forEach(id => candidates.push(state.content.reco_axis[id][sizeClass]));\n    const seen = new Set(), recos = [];\n    for (const c of candidates) {\n      const u = t(c.url);\n      if (seen.has(u)) continue;\n      seen.add(u);\n      recos.push(c);\n      if (recos.length === 3) break;\n    }\n    return { recos, weakest, strongest: rated.length ? rated[rated.length - 1] : null, rated };\n  }\n  function buildDiagnostics(weakest, strongest) {\n    const D = state.content.diagnostics.axes;\n    const by = state.scores.byAxis;\n    const out = { strength: null, priorities: [], unrated: [] };\n    if (strongest && bandOf(by[strongest.id]) !== \"low\") {\n      out.strength = { axis: strongest, text: t(D[strongest.id][bandOf(by[strongest.id])]) };\n    }\n    weakest.forEach(a => {\n      const band = bandOf(by[a.id]);\n      if (band !== \"high\") out.priorities.push({ axis: a, text: t(D[a.id][band]) });\n    });\n    state.content.axes.forEach(a => { if (by[a.id] === null) out.unrated.push(a); });\n    return out;\n  }\n\n  \/\/ ============================================================\n  \/\/ Render dispatch\n  \/\/ ============================================================\n  function render() {\n    updateProgress();\n    const kind = currentStepKind();\n    if (kind === \"intro\") renderIntro();\n    else if (kind === \"profile\") renderProfile();\n    else if (kind === \"maturity\") renderMaturity();\n    else if (kind === \"email\") renderEmail();\n    else renderResult();\n    animateScreenIn();\n  }\n\n  \/\/ Premi\u00e8re apparition : rise complet de la carte. \u00c9tapes suivantes : la carte\n  \/\/ reste en place, seul le contenu glisse (direction-aware) \u2014 pas d'effet\n  \/\/ \u00ab refresh de page \u00bb entre deux questions.\n  function animateScreenIn() {\n    const sc = $app.querySelector(\".screen\");\n    if (!sc) return;\n    if (firstRender) { firstRender = false; return; }\n    sc.classList.add(\"no-rise\");\n    if (window.matchMedia && matchMedia(\"(prefers-reduced-motion: reduce)\").matches) return;\n    sc.animate(\n      [{ opacity: 0.25, transform: \"translateX(\" + (14 * navDir) + \"px)\" },\n       { opacity: 1, transform: \"translateX(0)\" }],\n      { duration: 230, easing: \"cubic-bezier(.2,.7,.3,1)\" }\n    );\n  }\n  function backButton() {\n    return '<button class=\"btn-back\" id=\"pia-btn-back\" type=\"button\" aria-label=\"' + tUI(\"back\") + '\">'\n      + '<span class=\"btn-back-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M15 18 9 12l6-6\"\/><\/svg><\/span>'\n      + '<span>' + tUI(\"back\") + '<\/span><\/button>';\n  }\n\n  \/\/ ===================== Intro =====================\n  function renderIntro() {\n    $app.innerHTML = `\n      <section class=\"screen\">\n        <p class=\"eyebrow\">${tUI(\"intro_eyebrow\")}<\/p>\n        <h1>${tUI(\"intro_title\")}<\/h1>\n        <p class=\"subtitle\">${tUI(\"intro_subtitle\")}<\/p>\n        <div class=\"intro-perks\">\n          <div class=\"perk\"><div class=\"perk-value\">${tUI(\"perk1_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk1_label\")}<\/div><\/div>\n          <div class=\"perk\"><div class=\"perk-value\">${tUI(\"perk2_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk2_label\")}<\/div><\/div>\n          <div class=\"perk\"><div class=\"perk-value\">${tUI(\"perk3_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk3_label\")}<\/div><\/div>\n        <\/div>\n        <div class=\"cta-row\">\n          <button class=\"btn btn-default\" id=\"pia-btn-start\">\n            ${tUI(\"btn_start\")}\n            <svg viewBox=\"0 0 24 24\" width=\"17\" height=\"17\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M5 12h14m0 0-6-6m6 6-6 6\"\/><\/svg>\n          <\/button>\n          <button class=\"btn btn-ghost\" id=\"pia-btn-audio\">\n            <svg viewBox=\"0 0 24 24\" width=\"17\" height=\"17\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Zm-7 9v1a7 7 0 0 0 14 0v-1h-2v1a5 5 0 0 1-10 0v-1H5Zm6 9v2h2v-2h-2Z\"\/><\/svg>\n            ${tUI(\"btn_audio_intro\")}\n          <\/button>\n        <\/div>\n        <p class=\"intro-legal\">\n          <svg viewBox=\"0 0 24 24\" width=\"13\" height=\"13\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M12 3l8 4v5c0 4.5-3.5 8-8 9-4.5-1-8-4.5-8-9V7l8-4z\"\/><\/svg>\n          <span>${tUI(\"intro_legal\")}<\/span>\n        <\/p>\n      <\/section>\n    `;\n    document.getElementById(\"pia-btn-start\").addEventListener(\"click\", () => go(1));\n    document.getElementById(\"pia-btn-audio\").addEventListener(\"click\", openAudioModal);\n  }\n\n  \/\/ ===================== Profile =====================\n  function renderProfile() {\n    const idx = state.step - 1;\n    const q = state.content.profile_questions[idx];\n    const selected = state.profile[q.id];\n    const total = state.content.profile_questions.length;\n    $app.innerHTML = `\n      <section class=\"screen\">\n        ${backButton()}\n        <p class=\"eyebrow\">${tUI(\"profile_eyebrow\", { idx: idx + 1, total })}<\/p>\n        <h2>${t(q.title)}<\/h2>\n        <p class=\"subtitle\">${t(q.subtitle)}<\/p>\n        <div class=\"options\" role=\"listbox\">\n          ${q.options.map(opt => `\n            <button type=\"button\" class=\"option ${selected === opt.value ? \"selected\" : \"\"}\" data-value=\"${opt.value}\" role=\"option\" aria-selected=\"${selected === opt.value}\">\n              <span class=\"opt-icon\">${icon(opt.icon)}<\/span>\n              <span class=\"opt-label\">${t(opt.label)}<\/span>\n            <\/button>\n          `).join(\"\")}\n        <\/div>\n        ${q.skippable ? `<div class=\"cta-row\" style=\"margin-top:16px;\"><button class=\"btn btn-ghost\" id=\"pia-btn-skip\" style=\"padding:11px 20px;font-size:13px;\">${tUI(\"skip\")}<\/button><\/div>` : \"\"}\n      <\/section>\n    `;\n    $app.querySelectorAll(\".option\").forEach(btn => {\n      btn.addEventListener(\"click\", () => answerAndAdvance(btn, () => { state.profile[q.id] = btn.dataset.value; }));\n    });\n    document.getElementById(\"pia-btn-back\").addEventListener(\"click\", () => go(-1));\n    document.getElementById(\"pia-btn-skip\")?.addEventListener(\"click\", () => go(1));\n  }\n\n  \/\/ ===================== Maturity (anchored options) =====================\n  function renderMaturity() {\n    const pCount = state.content.profile_questions.length;\n    const idx = state.step - 1 - pCount;\n    const q = state.content.maturity_questions[idx];\n    const axis = state.content.axes.find(a => a.id === q.axis);\n    const total = state.content.maturity_questions.length;\n    const current = state.answers[q.id];\n    $app.innerHTML = `\n      <section class=\"screen\">\n        ${backButton()}\n        <p class=\"eyebrow\" style=\"color:${axis.color}\">${tUI(\"maturity_eyebrow\", { axis: t(axis.name), idx: idx + 1, total })}<\/p>\n        <h2>${t(q.title)}<\/h2>\n        <p class=\"subtitle\">${t(q.subtitle)}<\/p>\n        <div class=\"options\" role=\"listbox\">\n          ${q.options.map(opt => `\n            <button type=\"button\" class=\"option ${current === opt.score ? \"selected\" : \"\"}\" data-value=\"${opt.score}\" role=\"option\" aria-selected=\"${current === opt.score}\">\n              <span class=\"opt-key\">${opt.score}<\/span>\n              <span class=\"opt-label\">${t(opt.label)}<\/span>\n            <\/button>\n          `).join(\"\")}\n          <button type=\"button\" class=\"option na ${current === \"na\" ? \"selected\" : \"\"}\" data-value=\"na\" role=\"option\" aria-selected=\"${current === \"na\"}\">\n            <span class=\"opt-key\">\u00b7<\/span>\n            <span class=\"opt-label\">${t(state.content.scale.na.short)}<\/span>\n          <\/button>\n        <\/div>\n        <p class=\"q-hint\">${tUI(\"question_hint\")}<\/p>\n      <\/section>\n    `;\n    $app.querySelectorAll(\".option\").forEach(btn => {\n      btn.addEventListener(\"click\", () => {\n        answerAndAdvance(btn, () => {\n          const v = btn.dataset.value;\n          state.answers[q.id] = v === \"na\" ? \"na\" : Number(v);\n        });\n      });\n    });\n    document.getElementById(\"pia-btn-back\").addEventListener(\"click\", () => go(-1));\n  }\n\n  \/\/ ===================== Email gate =====================\n  const DISPOSABLE_DOMAINS = new Set([\n    \"mailinator.com\",\"yopmail.com\",\"yopmail.fr\",\"tempmail.com\",\"temp-mail.org\",\"temp-mail.io\",\n    \"guerrillamail.com\",\"guerrillamail.net\",\"guerrillamail.org\",\"guerrillamailblock.com\",\n    \"10minutemail.com\",\"10minutemail.net\",\"20minutemail.com\",\"30minutemail.com\",\n    \"throwawaymail.com\",\"trashmail.com\",\"trashmail.net\",\"trashmail.de\",\"trashmail.io\",\n    \"dispostable.com\",\"getnada.com\",\"nada.email\",\"emailondeck.com\",\"fakeinbox.com\",\n    \"maildrop.cc\",\"mailnesia.com\",\"sharklasers.com\",\"spambox.us\",\"spam4.me\",\n    \"mohmal.com\",\"mailcatch.com\",\"mintemail.com\",\"mytrashmail.com\",\n    \"tempr.email\",\"mvrht.com\",\"grr.la\",\"tempinbox.com\",\"disposablemail.com\",\n    \"anonbox.net\",\"jetable.org\",\"jetable.fr.nf\",\"spambog.com\"\n  ]);\n  function isDisposableEmail(email) {\n    const m = email.toLowerCase().match(\/@([^@\\s]+)$\/);\n    return m ? DISPOSABLE_DOMAINS.has(m[1]) : false;\n  }\n\n  function renderEmail() {\n    computeScores();\n    $app.innerHTML = `\n      <section class=\"screen\">\n        ${backButton()}\n        <p class=\"eyebrow\">${tUI(\"email_eyebrow\")}<\/p>\n        <h2>${tUI(\"email_title\")}<\/h2>\n        <p class=\"subtitle\">${tUI(\"email_subtitle\")}<\/p>\n        <form id=\"pia-email-form\" novalidate>\n          <label class=\"field\">\n            <span>${tUI(\"email_field\")}<\/span>\n            <input type=\"email\" id=\"pia-f-email\" required placeholder=\"${tUI(\"email_placeholder\")}\" autocomplete=\"email\" value=\"${escapeHtml(state.email)}\" \/>\n          <\/label>\n          <div class=\"field\">\n            <button type=\"button\" class=\"btn btn-ghost\" id=\"pia-toggle-optional\" style=\"font-size:12.5px;padding:8px 14px;\">${tUI(\"toggle_optional\")}<\/button>\n          <\/div>\n          <div id=\"pia-optional-fields\" style=\"display:none;\">\n            <label class=\"field\"><span>${tUI(\"name_field\")}<\/span><input type=\"text\" id=\"pia-f-name\" autocomplete=\"name\" value=\"${escapeHtml(state.profile.name || \"\")}\" \/><\/label>\n            <label class=\"field\"><span>${tUI(\"company_field\")}<\/span><input type=\"text\" id=\"pia-f-company\" autocomplete=\"organization\" value=\"${escapeHtml(state.profile.company || \"\")}\" \/><\/label>\n          <\/div>\n          <div class=\"checkboxes\">\n            <label class=\"cb required\">\n              <input type=\"checkbox\" id=\"pia-cb-terms\" ${state.consent.terms ? \"checked\" : \"\"} \/>\n              <span class=\"cb-label\">${tUI(\"consent_terms_label\")}<span class=\"cb-sub\">${tUI(\"consent_terms_sub\")}<\/span><\/span>\n            <\/label>\n            <label class=\"cb\">\n              <input type=\"checkbox\" id=\"pia-cb-newsletter\" ${state.consent.newsletter ? \"checked\" : \"\"} \/>\n              <span class=\"cb-label\">${tUI(\"consent_newsletter_label\")}<span class=\"cb-sub\">${tUI(\"consent_newsletter_sub\")}<\/span><\/span>\n            <\/label>\n            <label class=\"cb\">\n              <input type=\"checkbox\" id=\"pia-cb-events\" ${state.consent.events ? \"checked\" : \"\"} \/>\n              <span class=\"cb-label\">${tUI(\"consent_events_label\")}<span class=\"cb-sub\">${tUI(\"consent_events_sub\")}<\/span><\/span>\n            <\/label>\n          <\/div>\n          <div class=\"cta-row\" style=\"margin-top:20px;\">\n            <button class=\"btn btn-default\" id=\"pia-btn-submit\" type=\"submit\" disabled>\n              ${tUI(\"btn_view_score\")}\n              <svg viewBox=\"0 0 24 24\" width=\"17\" height=\"17\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M5 12h14m0 0-6-6m6 6-6 6\"\/><\/svg>\n            <\/button>\n          <\/div>\n          <p class=\"legal\" id=\"pia-form-error\" style=\"color:var(--err);display:none;\"><\/p>\n        <\/form>\n      <\/section>\n    `;\n    document.getElementById(\"pia-toggle-optional\").addEventListener(\"click\", () => {\n      const d = document.getElementById(\"pia-optional-fields\");\n      d.style.display = d.style.display === \"none\" ? \"block\" : \"none\";\n    });\n    const $email = document.getElementById(\"pia-f-email\");\n    const $terms = document.getElementById(\"pia-cb-terms\");\n    const $submit = document.getElementById(\"pia-btn-submit\");\n    const refresh = () => {\n      $submit.disabled = !(\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test($email.value.trim()) && $terms.checked);\n    };\n    $email.addEventListener(\"input\", refresh);\n    $terms.addEventListener(\"change\", refresh);\n    refresh();\n    function showErr(key) {\n      const errBox = document.getElementById(\"pia-form-error\");\n      errBox.innerHTML = tUI(key);\n      errBox.style.display = \"block\";\n    }\n    document.getElementById(\"pia-email-form\").addEventListener(\"submit\", async (e) => {\n      e.preventDefault();\n      const errBox = document.getElementById(\"pia-form-error\");\n      errBox.style.display = \"none\";\n      const emailRaw = $email.value.trim();\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[a-z]{2,}$\/i.test(emailRaw)) { showErr(\"email_invalid\"); return; }\n      if (isDisposableEmail(emailRaw)) { showErr(\"email_disposable\"); return; }\n      $submit.disabled = true;\n      state.email = emailRaw;\n      state.profile.name = document.getElementById(\"pia-f-name\")?.value.trim() || \"\";\n      state.profile.company = document.getElementById(\"pia-f-company\")?.value.trim() || \"\";\n      state.consent.terms = $terms.checked;\n      state.consent.newsletter = document.getElementById(\"pia-cb-newsletter\").checked;\n      state.consent.events = document.getElementById(\"pia-cb-events\").checked;\n      try {\n        const { recos, weakest, strongest } = buildRecos();\n        const diags = buildDiagnostics(weakest, strongest);\n        const report = buildReport(recos, diags);\n        const res = await fetch(POWER_AUTOMATE_SUBMIT_URL, {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application\/json\" },\n          body: JSON.stringify({\n            email: state.email,\n            profile: state.profile,\n            answers: state.answers,\n            scores: state.scores,\n            level: state.level?.id,\n            consent: state.consent,\n            meta: { lang: state.lang, source: \"maturity-form\", version: CONTENT.version, ts: new Date().toISOString() },\n            report\n          })\n        });\n        if (!res.ok && res.status !== 202) throw new Error(\"submit_failed_\" + res.status);\n        state.submissionId = \"pa-\" + res.status;\n        go(1);\n      } catch (err) {\n        errBox.textContent = tUI(\"submit_error\");\n        errBox.style.display = \"block\";\n        $submit.disabled = false;\n      }\n    });\n    document.getElementById(\"pia-btn-back\").addEventListener(\"click\", () => go(-1));\n  }\n\n  function identityLine() {\n    const name = (state.profile.name || \"\").trim();\n    const company = (state.profile.company || \"\").trim();\n    if (name && company) return escapeHtml(name) + \" \u00b7 \" + escapeHtml(company);\n    return escapeHtml(name || company || \"\");\n  }\n\n  \/\/ ===================== Report payload + email HTML =====================\n  function buildReport(recos, diags) {\n    const by = state.scores.byAxis;\n    const axesOut = state.content.axes.map(a => ({\n      id: a.id,\n      name: t(a.name),\n      score: by[a.id],\n      score_display: by[a.id] === null ? \"\u2014\" : fmtScore(by[a.id])\n    }));\n    const subject = tUI(\"email_subject\", { score: fmtScore(state.scores.global), level: t(state.level.label) });\n    return {\n      score: state.scores.global,\n      score_display: fmtScore(state.scores.global),\n      level_id: state.level.id,\n      level_label: t(state.level.label),\n      axes: axesOut,\n      strength: diags.strength ? diags.strength.text : \"\",\n      priorities: diags.priorities.map(p => p.text),\n      na_count: state.naCount,\n      recos: recos.map(r => ({ title: t(r.title), desc: t(r.desc), url: t(r.url) })),\n      email_subject: subject,\n      email_html: buildEmailHtml(recos, diags)\n    };\n  }\n\n  function buildEmailHtml(recos, diags) {\n    const by = state.scores.byAxis;\n    const L = state.lang;\n    const s = (fr, en) => (L === \"fr\" ? fr : en);\n    const axisRows = state.content.axes.map(a => {\n      const sc = by[a.id];\n      const pct = sc === null ? 0 : Math.round((sc \/ 5) * 100);\n      \/\/ Espaces ins\u00e9cables : Hotmail\/Outlook ignorent white-space:nowrap \u2192 force \u00ab 2,0 \/ 5 \u00bb sur une ligne\n      const val = sc === null ? \"\u2014\" : fmtScore(sc) + \"&nbsp;\/&nbsp;5\";\n      return '<tr>'\n        + '<td style=\"padding:7px 10px 7px 0;font-size:13px;color:#0A0F2E;\">' + escapeHtml(t(a.name)) + '<\/td>'\n        + '<td style=\"padding:7px 0;width:40%;\"><div style=\"background:#E4E9F7;border-radius:99px;height:8px;\"><div style=\"background:' + a.color + ';border-radius:99px;height:8px;width:' + pct + '%;\"><\/div><\/div><\/td>'\n        + '<td style=\"padding:7px 0 7px 12px;font-size:13px;font-weight:700;color:#1929DD;text-align:right;white-space:nowrap;\">' + val + '<\/td>'\n        + '<\/tr>';\n    }).join(\"\");\n    const prioBlocks = diags.priorities.map(p =>\n      '<p style=\"margin:0 0 8px;padding:10px 14px;background:#F7F9FF;border:1px solid #E4E9F7;border-radius:10px;font-size:13px;line-height:1.5;color:#0A0F2E;\">' + escapeHtml(p.text) + '<\/p>'\n    ).join(\"\");\n    const strengthBlock = diags.strength\n      ? '<p style=\"margin:0 0 8px;padding:10px 14px;background:#F0FAF4;border:1px solid #D6EFDF;border-radius:10px;font-size:13px;line-height:1.5;color:#0A0F2E;\">' + escapeHtml(diags.strength.text) + '<\/p>'\n      : \"\";\n    const recoBlocks = recos.map((r, i) =>\n      '<a href=\"' + t(r.url) + '\" style=\"display:block;text-decoration:none;margin:0 0 8px;padding:12px 16px;border:1px solid ' + (i === 0 ? '#2C55FB' : '#E4E9F7') + ';border-radius:10px;\">'\n      + '<span style=\"display:block;font-size:14px;font-weight:700;color:#1929DD;\">' + escapeHtml(t(r.title)) + '<\/span>'\n      + '<span style=\"display:block;font-size:12.5px;color:#4E5A85;margin-top:3px;line-height:1.45;\">' + escapeHtml(t(r.desc)) + '<\/span>'\n      + '<\/a>'\n    ).join(\"\");\n    return '<!doctype html><html><body style=\"margin:0;padding:0;background:#F7F9FF;\">'\n      + '<div style=\"max-width:560px;margin:0 auto;padding:28px 18px;font-family:\\'Plus Jakarta Sans\\',\\'Segoe UI\\',system-ui,sans-serif;\">'\n      + '<p style=\"margin:0 0 4px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#2C55FB;\">PrismIA \u00b7 ' + s(\"Test de maturit\u00e9 IA\", \"AI Maturity Test\") + '<\/p>'\n      + '<h1 style=\"margin:0 0 18px;font-size:24px;line-height:1.15;color:#0A0F2E;letter-spacing:-.02em;\">' + s(\"Votre rapport de maturit\u00e9 IA\", \"Your AI maturity report\") + '<\/h1>'\n      + '<div style=\"background:#ffffff;border:1px solid #E4E9F7;border-radius:14px;padding:22px;margin-bottom:14px;text-align:center;\">'\n      + '<p style=\"margin:0;font-size:44px;font-weight:800;color:#1929DD;line-height:1;\">' + fmtScore(state.scores.global) + '<span style=\"font-size:18px;color:#8B95BC;font-weight:600;\"> \/ 5<\/span><\/p>'\n      + '<p style=\"margin:8px 0 0;font-size:15px;font-weight:700;color:#0A0F2E;\">' + escapeHtml(t(state.level.label)) + '<\/p>'\n      + '<p style=\"margin:6px 0 0;font-size:13px;color:#4E5A85;line-height:1.5;\">' + escapeHtml(t(state.level.tagline)) + '<\/p>'\n      + '<\/div>'\n      + '<div style=\"background:#ffffff;border:1px solid #E4E9F7;border-radius:14px;padding:20px 22px;margin-bottom:14px;\">'\n      + '<p style=\"margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#2C55FB;\">' + s(\"Vos 6 axes\", \"Your 6 axes\") + '<\/p>'\n      + '<table style=\"width:100%;border-collapse:collapse;\">' + axisRows + '<\/table>'\n      + '<\/div>'\n      + (strengthBlock || prioBlocks\n        ? '<div style=\"background:#ffffff;border:1px solid #E4E9F7;border-radius:14px;padding:20px 22px;margin-bottom:14px;\">'\n          + (strengthBlock ? '<p style=\"margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#2C55FB;\">' + tUI(\"strength_title\") + '<\/p>' + strengthBlock : \"\")\n          + (prioBlocks ? '<p style=\"margin:' + (strengthBlock ? '14px' : '0') + ' 0 8px;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#2C55FB;\">' + tUI(\"priorities_title\") + '<\/p>' + prioBlocks : \"\")\n          + '<\/div>'\n        : \"\")\n      + '<div style=\"background:#ffffff;border:1px solid #E4E9F7;border-radius:14px;padding:20px 22px;margin-bottom:18px;\">'\n      + '<p style=\"margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#2C55FB;\">' + tUI(\"recos_title\") + '<\/p>'\n      + recoBlocks\n      + '<\/div>'\n      + '<div style=\"text-align:center;margin-bottom:18px;\">'\n      + '<a href=\"' + s(\"https:\/\/www.prismia.ch\/contact\/\", \"https:\/\/www.prismia.ch\/en\/contact\/\") + '\" style=\"display:inline-block;background:#2C55FB;color:#ffffff;text-decoration:none;font-size:14px;font-weight:700;padding:13px 26px;border-radius:10px;\">' + tUI(\"cta_final_btn\") + '<\/a>'\n      + '<p style=\"margin:10px 0 0;font-size:12px;color:#8B95BC;\">' + s(\"30 min avec un expert PrismIA, sans engagement.\", \"30 minutes with a PrismIA expert, no commitment.\") + '<\/p>'\n      + '<\/div>'\n      + '<p style=\"margin:0;font-size:10.5px;color:#8B95BC;text-align:center;line-height:1.5;\">'\n      + s(\"M\u00e9thodologie <em>Journey to AI<\/em> \u00b7 6 axes \/ 30 crit\u00e8res (version simplifi\u00e9e)\", \"<em>Journey to AI<\/em> methodology \u00b7 6 axes \/ 30 criteria (simplified version)\")\n      + '<br>PrismIA S\u00e0rl \u00b7 Ch. Frank-Thomas 32, 1208 ' + s(\"Gen\u00e8ve\", \"Geneva\") + ' \u00b7 Rue de l\\'Avenir 28, 1020 Renens'\n      + '<br><a href=\"https:\/\/www.prismia.ch\/\" style=\"color:#2C55FB;\">prismia.ch<\/a> \u00b7 <a href=\"mailto:' + CONTACT_EMAIL + '\" style=\"color:#8B95BC;\">' + CONTACT_EMAIL + '<\/a>'\n      + '<\/p>'\n      + '<\/div><\/body><\/html>';\n  }\n\n  \/\/ ===================== Result =====================\n  function renderResult() {\n    if (!state.email || !state.consent.terms || !state.submissionId) {\n      state.step = state.content.profile_questions.length + state.content.maturity_questions.length + 1;\n      return render();\n    }\n    if (!state.scores) computeScores();\n    const { scores, level } = state;\n    const axes = state.content.axes;\n    const { recos, weakest, strongest } = buildRecos();\n    const diags = buildDiagnostics(weakest, strongest);\n\n    $app.innerHTML = `\n      <section class=\"screen screen-wide\" id=\"pia-result-screen\">\n        <div class=\"result-head\" data-print-only>\n          <div class=\"print-meta-row\">\n            <img decoding=\"async\" src=\"${LOGO_BLUE_URL}\" alt=\"PrismIA\" class=\"print-logo\" \/>\n            <span class=\"print-date\">${escapeHtml(new Date().toLocaleDateString(state.lang === \"en\" ? \"en-GB\" : \"fr-CH\", { year: \"numeric\", month: \"long\", day: \"numeric\" }))}<\/span>\n          <\/div>\n          <div class=\"print-titles\">\n            <div>\n              <h1 class=\"print-title\">${tUI(\"print_header_title\")}<\/h1>\n              <p class=\"print-identity\">${identityLine() || tUI(\"print_prepared_for\", { email: escapeHtml(state.email) })}<\/p>\n            <\/div>\n            <span class=\"print-score-chip\">${fmtScore(scores.global)} \/ 5 \u00b7 ${t(level.label)}<\/span>\n          <\/div>\n          <div class=\"print-divider\"><\/div>\n        <\/div>\n\n        <p class=\"eyebrow no-print\">${tUI(\"result_eyebrow\")}<\/p>\n\n        <div class=\"result-grid\">\n          <div class=\"col-score\">\n            ${renderScoreRing(scores.global)}\n            <div class=\"level-row\">\n              <span class=\"score-level\" style=\"--lvl-color:${level.color}\">${t(level.label)}<\/span>\n              <button type=\"button\" class=\"level-help no-print\" id=\"pia-open-levels\" aria-label=\"${tUI(\"understand_levels\")}\">\n                <svg viewBox=\"0 0 24 24\" width=\"13\" height=\"13\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\/><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" d=\"M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.8.4-1 .8-1 1.7M12 17h.01\"\/><\/svg>\n                <span>${tUI(\"understand_levels\")}<\/span>\n              <\/button>\n            <\/div>\n            ${renderJourney(level)}\n            <p class=\"score-tagline\">${t(level.tagline)}<\/p>\n            <p class=\"score-description\">${t(level.description)}<\/p>\n            ${diags.strength ? `\n              <div class=\"diag-block diag-inline\">\n                <p class=\"diag-title\">${tUI(\"strength_title\")}<\/p>\n                <div class=\"diag\">\n                  <span class=\"diag-dot\" style=\"background:${diags.strength.axis.color}\"><\/span>\n                  <span class=\"diag-text\"><strong>${t(diags.strength.axis.short)}<\/strong> \u2014 ${diags.strength.text}<\/span>\n                <\/div>\n              <\/div>` : \"\"}\n            ${state.naCount >= 3 ? `\n              <div class=\"diag-block diag-inline\">\n                <div class=\"diag uncertain\">\n                  <span class=\"diag-dot\" style=\"background:var(--warm)\"><\/span>\n                  <span class=\"diag-text\">${tUI(\"uncertain_note\", { n: state.naCount })}<\/span>\n                <\/div>\n              <\/div>` : \"\"}\n          <\/div>\n\n          <div class=\"col-radar\">\n            <div class=\"radar-wrap\">\n              ${renderRadar(axes, scores.byAxis)}\n              <div class=\"axis-list\">\n                ${axes.map(a => {\n                  const s = scores.byAxis[a.id];\n                  const unrated = s === null;\n                  return `<div class=\"axis-row ${unrated ? \"unrated\" : \"\"}\">\n                    <span class=\"axis-dot\" style=\"background:${unrated ? \"#E4E9F7\" : a.color}\"><\/span>\n                    <span class=\"axis-name\">${t(a.name)}<\/span>\n                    <span class=\"axis-score\">${unrated ? tUI(\"axis_not_rated\") : tUI(\"result_axis_score\", { score: fmtScore(s) })}<\/span>\n                  <\/div>`;\n                }).join(\"\")}\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"col-actions\">\n            ${diags.priorities.length ? `\n              <div class=\"diag-block\">\n                <p class=\"diag-title\">${tUI(\"priorities_title\")}<\/p>\n                ${diags.priorities.map(p => `\n                  <div class=\"diag\">\n                    <span class=\"diag-dot\" style=\"background:${p.axis.color}\"><\/span>\n                    <span class=\"diag-text\"><strong>${t(p.axis.short)}<\/strong> \u2014 ${p.text}<\/span>\n                  <\/div>`).join(\"\")}\n              <\/div>` : \"\"}\n            <div class=\"recos\">\n              <h3>${tUI(\"recos_title\")}<\/h3>\n              ${recos.map((r, i) => `\n                <a class=\"reco ${i === 0 ? \"primary\" : \"\"}\" href=\"${t(r.url)}\" target=\"_top\">\n                  <div class=\"reco-title\"><span>${t(r.title)}<\/span><span class=\"reco-arrow\">\u2192<\/span><\/div>\n                  <div class=\"reco-desc\">${t(r.desc)}<\/div>\n                <\/a>`).join(\"\")}\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"result-foot no-print\">\n          <div class=\"cta-final\">\n            <div class=\"cta-text\">\n              <h3>${tUI(\"cta_final_title\")}<\/h3>\n              <p>${tUI(\"cta_final_desc\")}<\/p>\n            <\/div>\n            <div class=\"cta-btns\">\n              <a class=\"btn\" href=\"${state.lang === \"en\" ? \"https:\/\/www.prismia.ch\/en\/contact\/\" : \"https:\/\/www.prismia.ch\/contact\/\"}\" target=\"_top\">\n                ${tUI(\"cta_final_btn\")}\n                <svg viewBox=\"0 0 24 24\" width=\"17\" height=\"17\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M5 12h14m0 0-6-6m6 6-6 6\"\/><\/svg>\n              <\/a>\n              <button type=\"button\" class=\"btn btn-ghost btn-pdf\" id=\"pia-btn-pdf\">\n                <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M12 4v11m0 0l-4-4m4 4l4-4M5 19h14\"\/><\/svg>\n                ${tUI(\"download_pdf\")}\n              <\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <p class=\"legal result-legal no-print\">${tUI(\"result_legal\", { email: escapeHtml(state.email) })}<\/p>\n\n        <footer class=\"print-footer\" data-print-only>\n          <div class=\"print-footer-divider\"><\/div>\n          <div class=\"print-footer-row\">\n            <div class=\"print-footer-brand\">\n              <img decoding=\"async\" src=\"${MARK_BLUE_URL}\" class=\"print-footer-mark\" alt=\"\" \/>\n              <div class=\"print-footer-info\">\n                <strong>PrismIA S\u00e0rl<\/strong>\n                <span class=\"print-footer-addr\">Ch. Frank-Thomas 32, 1208 Gen\u00e8ve \u00b7 Rue de l'Avenir 28, 1020 Renens<\/span>\n              <\/div>\n            <\/div>\n            <a class=\"print-footer-contact\" href=\"mailto:${CONTACT_EMAIL}\">\n              <svg viewBox=\"0 0 24 24\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M3 7l9 6 9-6M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\"\/><\/svg>\n              ${CONTACT_EMAIL}\n            <\/a>\n          <\/div>\n          <p class=\"print-footer-meta\">${tUI(\"print_legal_meta\")}<\/p>\n        <\/footer>\n      <\/section>\n    `;\n    document.getElementById(\"pia-open-levels\").addEventListener(\"click\", openLevelsModal);\n    document.getElementById(\"pia-btn-pdf\").addEventListener(\"click\", () => window.print());\n  }\n\n  \/\/ ===================== Journey track =====================\n  function renderJourney(level) {\n    const levels = state.content.levels;\n    const activeIdx = levels.findIndex(l => l.id === level.id);\n    return `\n      <div class=\"journey\" aria-hidden=\"true\">\n        <div class=\"journey-track\">\n          ${levels.map((l, i) => `<span class=\"journey-seg ${i < activeIdx ? \"done\" : \"\"} ${i === activeIdx ? \"active\" : \"\"}\"><\/span>`).join(\"\")}\n        <\/div>\n        <div class=\"journey-labels\">\n          ${levels.map((l, i) => `<span class=\"${i === activeIdx ? \"active\" : \"\"}\">${t(l.label)}<\/span>`).join(\"\")}\n        <\/div>\n      <\/div>\n    `;\n  }\n\n  \/\/ ===================== Charts =====================\n  function renderScoreRing(score) {\n    const pct = score \/ 5;\n    const r = 80, cx = 100, cy = 100;\n    const c = 2 * Math.PI * r;\n    const off = c * (1 - pct);\n    return `\n      <svg class=\"score-ring\" viewBox=\"0 0 200 200\" aria-label=\"Score ${fmtScore(score)} \/ 5\">\n        <defs>\n          <linearGradient id=\"pia-ringG\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n            <stop offset=\"0%\" stop-color=\"#1929DD\"\/>\n            <stop offset=\"65%\" stop-color=\"#2C55FB\"\/>\n            <stop offset=\"100%\" stop-color=\"#91B1FF\"\/>\n          <\/linearGradient>\n        <\/defs>\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"${r}\" stroke=\"#E4E9F7\" stroke-width=\"13\" fill=\"none\"\/>\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"${r}\" stroke=\"url(#pia-ringG)\" stroke-width=\"13\" stroke-linecap=\"round\"\n                fill=\"none\" stroke-dasharray=\"${c}\" stroke-dashoffset=\"${off}\"\n                transform=\"rotate(-90 ${cx} ${cy})\" style=\"transition: stroke-dashoffset 1.2s cubic-bezier(.16,.84,.32,1)\"\/>\n        <text x=\"${cx}\" y=\"${cy + 8}\" text-anchor=\"middle\" font-family=\"Geist Mono, ui-monospace, Consolas, monospace\" font-weight=\"700\" font-size=\"42\" fill=\"#0A0F2E\">${fmtScore(score)}<\/text>\n        <text x=\"${cx}\" y=\"${cy + 32}\" text-anchor=\"middle\" font-family=\"Plus Jakarta Sans, sans-serif\" font-weight=\"500\" font-size=\"13\" fill=\"#8B95BC\">${tUI(\"result_on\")}<\/text>\n      <\/svg>\n    `;\n  }\n\n  function renderRadar(axes, scoresByAxis) {\n    \/\/ viewBox large (360) pour que les labels lat\u00e9raux (\u00ab Op\u00e9rations \u00bb, \u00ab Technologie \u00bb) ne soient pas rogn\u00e9s\n    const size = 360, cx = size \/ 2, cy = size \/ 2, R = 104;\n    const N = axes.length;\n    const angle = (i) => (-Math.PI \/ 2) + (i * 2 * Math.PI) \/ N;\n    const pt = (i, r) => [cx + r * Math.cos(angle(i)), cy + r * Math.sin(angle(i))];\n\n    const grids = [1, 2, 3, 4, 5].map(level => {\n      const r = (level \/ 5) * R;\n      const pts = axes.map((_, i) => pt(i, r).join(\",\")).join(\" \");\n      return `<polygon points=\"${pts}\" fill=\"none\" stroke=\"#E4E9F7\" stroke-width=\"1\"\/>`;\n    }).join(\"\");\n    const axesLines = axes.map((_, i) => {\n      const [x, y] = pt(i, R);\n      return `<line x1=\"${cx}\" y1=\"${cy}\" x2=\"${x}\" y2=\"${y}\" stroke=\"#E4E9F7\" stroke-width=\"1\"\/>`;\n    }).join(\"\");\n\n    const rated = axes.map((a, i) => ({ a, i, s: scoresByAxis[a.id] })).filter(x => x.s !== null);\n    const scorePts = rated.map(x => pt(x.i, (x.s \/ 5) * R).join(\",\")).join(\" \");\n    const polygon = rated.length >= 3\n      ? `<polygon points=\"${scorePts}\" fill=\"url(#pia-radarFill)\" stroke=\"#2C55FB\" stroke-width=\"2.5\" stroke-linejoin=\"round\"\/>`\n      : (rated.length ? `<polyline points=\"${scorePts}\" fill=\"none\" stroke=\"#2C55FB\" stroke-width=\"2.5\" stroke-linecap=\"round\"\/>` : \"\");\n\n    const labels = axes.map((a, i) => {\n      const [x, y] = pt(i, R + 18);\n      const anchor = Math.abs(Math.cos(angle(i))) < 0.2 ? \"middle\" : (Math.cos(angle(i)) > 0 ? \"start\" : \"end\");\n      const unrated = scoresByAxis[a.id] === null;\n      return `<text x=\"${x}\" y=\"${y}\" text-anchor=\"${anchor}\" font-family=\"Plus Jakarta Sans, sans-serif\" font-size=\"10.5\" font-weight=\"600\" fill=\"${unrated ? \"#C6CDE6\" : \"#4E5A85\"}\">${t(a.short)}<\/text>`;\n    }).join(\"\");\n\n    return `\n      <svg viewBox=\"0 0 ${size} ${size}\" aria-label=\"Radar \u2014 6 axes\">\n        <defs>\n          <radialGradient id=\"pia-radarFill\">\n            <stop offset=\"0%\" stop-color=\"#1929DD\" stop-opacity=\"0.32\"\/>\n            <stop offset=\"100%\" stop-color=\"#2C55FB\" stop-opacity=\"0.12\"\/>\n          <\/radialGradient>\n        <\/defs>\n        ${grids}\n        ${axesLines}\n        ${polygon}\n        ${rated.map(x => {\n          const [px, py] = pt(x.i, (x.s \/ 5) * R);\n          return `<circle cx=\"${px}\" cy=\"${py}\" r=\"4\" fill=\"${x.a.color}\" stroke=\"#fff\" stroke-width=\"2\"\/>`;\n        }).join(\"\")}\n        ${labels}\n      <\/svg>\n    `;\n  }\n\n  \/\/ ===================== Levels modal =====================\n  function openLevelsModal() {\n    const modal = document.getElementById(\"pia-mat-levels-modal\");\n    const list = document.getElementById(\"pia-mat-levels-list\");\n    const activeId = state.level?.id;\n    list.innerHTML = state.content.levels.map(lv => {\n      const isActive = lv.id === activeId;\n      const range = tUI(\"level_range\", { min: fmtScore(lv.min), max: fmtScore(lv.max) });\n      return `\n        <div class=\"level-card ${isActive ? \"active\" : \"\"}\" style=\"--lvl-color:${lv.color}\">\n          <div class=\"level-card-head\">\n            <span class=\"level-dot\" aria-hidden=\"true\"><\/span>\n            <div class=\"level-card-titles\">\n              <span class=\"level-card-label\">${t(lv.label)}<\/span>\n              <span class=\"level-card-range\">${range}<\/span>\n            <\/div>\n            ${isActive ? `<span class=\"level-badge-active\">${tUI(\"your_level_badge\")}<\/span>` : \"\"}\n          <\/div>\n          <p class=\"level-card-tagline\">${t(lv.tagline)}<\/p>\n          <p class=\"level-card-desc\">${t(lv.description)}<\/p>\n        <\/div>\n      `;\n    }).join(\"\");\n    applyStaticI18n();\n    if (typeof modal.showModal === \"function\") modal.showModal();\n    else modal.setAttribute(\"open\", \"\");\n  }\n  document.getElementById(\"pia-mat-levels-close\").addEventListener(\"click\", () => document.getElementById(\"pia-mat-levels-modal\").close());\n  document.getElementById(\"pia-mat-levels-close-2\").addEventListener(\"click\", () => document.getElementById(\"pia-mat-levels-modal\").close());\n\n  \/\/ ===================== Audio modal =====================\n  const audioModal = document.getElementById(\"pia-mat-audio-modal\");\n  function openAudioModal() {\n    document.getElementById(\"pia-mat-audio-status\").textContent = \"\";\n    document.getElementById(\"pia-mat-audio-email\").value = \"\";\n    if (typeof audioModal.showModal === \"function\") audioModal.showModal();\n    else audioModal.setAttribute(\"open\", \"\");\n  }\n  document.getElementById(\"pia-mat-audio-cancel\").addEventListener(\"click\", () => audioModal.close());\n  document.getElementById(\"pia-mat-audio-form\").addEventListener(\"submit\", async (e) => {\n    e.preventDefault();\n    const email = document.getElementById(\"pia-mat-audio-email\").value.trim();\n    const status = document.getElementById(\"pia-mat-audio-status\");\n    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n      status.textContent = state.lang === \"en\" ? \"Invalid email.\" : \"Email invalide.\";\n      return;\n    }\n    try {\n      const res = await fetch(POWER_AUTOMATE_AUDIO_WAITLIST_URL, {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application\/json\" },\n        body: JSON.stringify({ email, meta: { lang: state.lang, source: \"audio-waitlist\", ts: new Date().toISOString() } })\n      });\n      if (!res.ok && res.status !== 202) throw new Error();\n      status.textContent = tUI(\"audio_modal_success\");\n      setTimeout(() => audioModal.close(), 1400);\n    } catch {\n      status.textContent = tUI(\"audio_modal_error\");\n    }\n  });\n\n  \/\/ ===================== Keyboard =====================\n  document.addEventListener(\"keydown\", (e) => {\n    const kind = currentStepKind();\n    const tag = (e.target?.tagName || \"\").toLowerCase();\n    if (tag === \"input\" || tag === \"textarea\") return;\n    if (e.key === \"Enter\" && kind === \"intro\") document.getElementById(\"pia-btn-start\")?.click();\n    if (e.key === \"ArrowLeft\" && state.step > 0) document.getElementById(\"pia-btn-back\")?.click();\n    if (kind === \"maturity\") {\n      const n = Number(e.key);\n      if (n >= 1 && n <= 5) $app.querySelector(`.option[data-value=\"${n}\"]`)?.click();\n      else if (e.key === \"0\" || e.key.toLowerCase() === \"n\") $app.querySelector(\".option.na\")?.click();\n    }\n  });\n\n  \/\/ ===================== Init =====================\n  applyStaticI18n();\n  render();\n})();\n<\/script>\n<!-- ===== ELEMENTOR PASTE END ============================================== -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PrismIA Maturity Form \u2014 WordPress Elementor Embed The 5 levels of AI maturity Journey to AI Methodology \u00b7 PrismIA Close Our audio agent is coming soon To take the test by speaking, at your own pace, with a PrismIA assistant. Leave your email \u2014 you\u2019ll be notified as soon as it launches. Your email address [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_yoast_wpseo_focuskw":"AI maturity assessment","_yoast_wpseo_title":"AI Maturity Assessment \u2013 Free self-test | PrismIA","_yoast_wpseo_metadesc":"Assess your organization's AI maturity with PrismIA's free interactive test. Get a tailored readiness snapshot in minutes. Geneva.","_yoast_wpseo_linkdex":"","_yoast_wpseo_content_score":"","_elementor_version":"4.1.5","_elementor_pro_version":"4.1.3","_elementor_css":null,"footnotes":""},"class_list":["post-2774","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI Maturity Assessment \u2013 Free self-test | PrismIA<\/title>\n<meta name=\"description\" content=\"Assess your organization&#039;s AI maturity with PrismIA&#039;s free interactive test. Get a tailored readiness snapshot in minutes. Geneva.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI Maturity Assessment \u2013 Free self-test | PrismIA\" \/>\n<meta property=\"og:description\" content=\"Assess your organization&#039;s AI maturity with PrismIA&#039;s free interactive test. Get a tailored readiness snapshot in minutes. Geneva.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/\" \/>\n<meta property=\"og:site_name\" content=\"PrismIA\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-20T16:16:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.prismia.ch\/wp-content\/uploads\/2026\/07\/prismia-og-default.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/ai-maturity-assessment\\\/\",\"url\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/ai-maturity-assessment\\\/\",\"name\":\"AI Maturity Assessment \u2013 Free self-test | PrismIA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#website\"},\"datePublished\":\"2026-05-18T07:01:42+00:00\",\"dateModified\":\"2026-07-20T16:16:54+00:00\",\"description\":\"Assess your organization's AI maturity with PrismIA's free interactive test. Get a tailored readiness snapshot in minutes. Geneva.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/ai-maturity-assessment\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.prismia.ch\\\/en\\\/ai-maturity-assessment\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/ai-maturity-assessment\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI Maturity Assessment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/\",\"name\":\"PrismIA\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"ProfessionalService\"],\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#organization\",\"name\":\"PrismIA S\u00e0rl\",\"url\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.prismia.ch\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/PIA_logo_415x90-e1739004471809.webp\",\"contentUrl\":\"https:\\\/\\\/www.prismia.ch\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/PIA_logo_415x90-e1739004471809.webp\",\"width\":200,\"height\":43,\"caption\":\"PrismIA S\u00e0rl\"},\"image\":{\"@id\":\"https:\\\/\\\/www.prismia.ch\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"description\":\"PrismIA est une agence d'intelligence artificielle bas\u00e9e \u00e0 Gen\u00e8ve. Nous accompagnons les PME et grandes entreprises suisses dans l'adoption responsable de l'IA : conseil strat\u00e9gique, formations sur mesure, audit et int\u00e9gration de solutions.\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Chemin Frank-Thomas 32\",\"postalCode\":\"1208\",\"addressLocality\":\"Gen\u00e8ve\",\"addressRegion\":\"GE\",\"addressCountry\":\"CH\"},\"telephone\":\"+41 22 566 94 00\",\"email\":\"info@prismia.ch\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":46.203807649278424,\"longitude\":6.1732832963451445},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/prismia-ch\"],\"areaServed\":[{\"@type\":\"Country\",\"name\":\"Switzerland\"},{\"@type\":\"AdministrativeArea\",\"name\":\"Suisse romande\"},{\"@type\":\"AdministrativeArea\",\"name\":\"Vaud\"},{\"@type\":\"City\",\"name\":\"Gen\u00e8ve\"},{\"@type\":\"City\",\"name\":\"Lausanne\"}],\"location\":[{\"@type\":\"Place\",\"name\":\"PrismIA Gen\u00e8ve\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Chemin Frank-Thomas 32\",\"postalCode\":\"1208\",\"addressLocality\":\"Gen\u00e8ve\",\"addressRegion\":\"GE\",\"addressCountry\":\"CH\"}},{\"@type\":\"Place\",\"name\":\"PrismIA Renens\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Rue de l'Avenir 28\",\"postalCode\":\"1020\",\"addressLocality\":\"Renens\",\"addressRegion\":\"VD\",\"addressCountry\":\"CH\"}}],\"knowsAbout\":[\"Intelligence artificielle\",\"Formation IA\",\"Audit IA\",\"Int\u00e9gration IA\",\"Conseil IA\",\"Gouvernance IA\",\"IA g\u00e9n\u00e9rative\",\"Strat\u00e9gie IA\",\"IA en entreprise\",\"IA responsable\"],\"priceRange\":\"$$\",\"openingHoursSpecification\":{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"18:00\"},\"foundingDate\":\"2024\",\"slogan\":\"B\u00e2tissez le futur de votre entreprise avec des solutions IA s\u00e9curis\u00e9es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI Maturity Assessment \u2013 Free self-test | PrismIA","description":"Assess your organization's AI maturity with PrismIA's free interactive test. Get a tailored readiness snapshot in minutes. Geneva.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/","og_locale":"en_US","og_type":"article","og_title":"AI Maturity Assessment \u2013 Free self-test | PrismIA","og_description":"Assess your organization's AI maturity with PrismIA's free interactive test. Get a tailored readiness snapshot in minutes. Geneva.","og_url":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/","og_site_name":"PrismIA","article_modified_time":"2026-07-20T16:16:54+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.prismia.ch\/wp-content\/uploads\/2026\/07\/prismia-og-default.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/","url":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/","name":"AI Maturity Assessment \u2013 Free self-test | PrismIA","isPartOf":{"@id":"https:\/\/www.prismia.ch\/en\/#website"},"datePublished":"2026-05-18T07:01:42+00:00","dateModified":"2026-07-20T16:16:54+00:00","description":"Assess your organization's AI maturity with PrismIA's free interactive test. Get a tailored readiness snapshot in minutes. Geneva.","breadcrumb":{"@id":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.prismia.ch\/en\/ai-maturity-assessment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.prismia.ch\/en\/home\/"},{"@type":"ListItem","position":2,"name":"AI Maturity Assessment"}]},{"@type":"WebSite","@id":"https:\/\/www.prismia.ch\/en\/#website","url":"https:\/\/www.prismia.ch\/en\/","name":"PrismIA","description":"","publisher":{"@id":"https:\/\/www.prismia.ch\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.prismia.ch\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","ProfessionalService"],"@id":"https:\/\/www.prismia.ch\/en\/#organization","name":"PrismIA S\u00e0rl","url":"https:\/\/www.prismia.ch\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.prismia.ch\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PIA_logo_415x90-e1739004471809.webp","contentUrl":"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PIA_logo_415x90-e1739004471809.webp","width":200,"height":43,"caption":"PrismIA S\u00e0rl"},"image":{"@id":"https:\/\/www.prismia.ch\/en\/#\/schema\/logo\/image\/"},"description":"PrismIA est une agence d'intelligence artificielle bas\u00e9e \u00e0 Gen\u00e8ve. Nous accompagnons les PME et grandes entreprises suisses dans l'adoption responsable de l'IA : conseil strat\u00e9gique, formations sur mesure, audit et int\u00e9gration de solutions.","address":{"@type":"PostalAddress","streetAddress":"Chemin Frank-Thomas 32","postalCode":"1208","addressLocality":"Gen\u00e8ve","addressRegion":"GE","addressCountry":"CH"},"telephone":"+41 22 566 94 00","email":"info@prismia.ch","geo":{"@type":"GeoCoordinates","latitude":46.203807649278424,"longitude":6.1732832963451445},"sameAs":["https:\/\/www.linkedin.com\/company\/prismia-ch"],"areaServed":[{"@type":"Country","name":"Switzerland"},{"@type":"AdministrativeArea","name":"Suisse romande"},{"@type":"AdministrativeArea","name":"Vaud"},{"@type":"City","name":"Gen\u00e8ve"},{"@type":"City","name":"Lausanne"}],"location":[{"@type":"Place","name":"PrismIA Gen\u00e8ve","address":{"@type":"PostalAddress","streetAddress":"Chemin Frank-Thomas 32","postalCode":"1208","addressLocality":"Gen\u00e8ve","addressRegion":"GE","addressCountry":"CH"}},{"@type":"Place","name":"PrismIA Renens","address":{"@type":"PostalAddress","streetAddress":"Rue de l'Avenir 28","postalCode":"1020","addressLocality":"Renens","addressRegion":"VD","addressCountry":"CH"}}],"knowsAbout":["Intelligence artificielle","Formation IA","Audit IA","Int\u00e9gration IA","Conseil IA","Gouvernance IA","IA g\u00e9n\u00e9rative","Strat\u00e9gie IA","IA en entreprise","IA responsable"],"priceRange":"$$","openingHoursSpecification":{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"18:00"},"foundingDate":"2024","slogan":"B\u00e2tissez le futur de votre entreprise avec des solutions IA s\u00e9curis\u00e9es"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/pages\/2774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/comments?post=2774"}],"version-history":[{"count":5,"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/pages\/2774\/revisions"}],"predecessor-version":[{"id":2945,"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/pages\/2774\/revisions\/2945"}],"wp:attachment":[{"href":"https:\/\/www.prismia.ch\/en\/wp-json\/wp\/v2\/media?parent=2774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}