{"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-10T22:08:22","modified_gmt":"2026-07-10T21:08:22","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<div>\r\n\r\n\r\n  <meta charset=\"utf-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\r\n  <title>PrismIA Maturity Form \u2014 WordPress Elementor Embed<\/title>\r\n\r\n\r\n\r\n<!-- ============================================================================\r\n     PrismIA AI Maturity Form \u2014 WordPress Elementor Embed (self-contained)\r\n     ============================================================================\r\n     Open this file locally in a browser to preview the form.\r\n     To deploy: follow the SETUP STEPS in the ELEMENTOR PASTE BEGIN block below,\r\n     then copy everything between BEGIN and END into an Elementor HTML widget.\r\n     ============================================================================ -->\r\n\r\n<!-- ===== ELEMENTOR PASTE BEGIN ================================================\r\n     SETUP STEPS (one-time, ~5 minutes):\r\n\r\n     1. Upload 2 logo PNGs to WP Media Library, copy each URL:\r\n          - prismia-logo-blue.png   \u2192  replace https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PRISMIA_logo_couleur_20241105.svg\r\n          - prismia-mark-blue.png   \u2192  replace https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PIA_logo_square.svg\r\n\r\n     2. Create a new Power Automate Flow that accepts the full quiz payload.\r\n        Trigger: \"When an HTTP request is received\". Sample request body to\r\n        paste into the trigger to auto-generate the schema:\r\n\r\n        {\r\n          \"email\": \"you@company.com\",\r\n          \"profile\": { \"role\":\"dsi\", \"size\":\"pme\", \"sector\":\"tech\", \"name\":\"\", \"company\":\"\" },\r\n          \"answers\": { \"Q1\":4, \"Q2\":3, \"Q3\":\"na\" },\r\n          \"scores\":  { \"byAxis\": { \"A\":3.5, \"B\":3.0 }, \"global\": 3.2 },\r\n          \"level\":   \"etabli\",\r\n          \"consent\": { \"terms\":true, \"newsletter\":false, \"events\":false },\r\n          \"meta\":    { \"lang\":\"fr\", \"source\":\"maturity-form\" }\r\n        }\r\n\r\n        Save, copy the HTTP POST URL, paste into 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.\r\n\r\n     3. (Optional) Audio waitlist: paste your existing webinar Flow URL\r\n        (it already accepts { \"email\": \"...\" }) into https:\/\/defaultbdab758db3cf49d2a7ce518beb5b2e.b1.environment.api.powerplatform.com:443\/powerautomate\/automations\/direct\/workflows\/1920621233e342ffaa8234fb53d6c64a\/triggers\/manual\/paths\/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=B1_j2J4IwxmuYoyFdQihyBFy_WuaIdmBS_P3VNuT_ZU.\r\n        If you don't want the audio waitlist, leave the placeholder \u2014 the\r\n        button will still appear but submissions will silently fail.\r\n\r\n     4. In WordPress: edit the page in Elementor, drop an HTML widget where\r\n        the form should appear, copy everything between BEGIN and END below\r\n        into the widget. Use the \"Elementor Canvas\" page template for a\r\n        full-screen feel.\r\n\r\n     5. Plus Jakarta Sans is loaded by your theme \u2014 no extra step.\r\n        If it's not, add to the theme <head>:\r\n        <link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap\">\r\n\r\n     NOTES \/ LIMITATIONS:\r\n     - DNS\/MX server check is removed. Client-side regex + disposable-domain\r\n       blacklist still apply; your ESP will bounce bad addresses.\r\n     - \"Download PDF\" calls window.print() on the entire WP page. WP header \/\r\n       footer will print too unless your theme has a print stylesheet that\r\n       hides them. Easy fix: add to the WP page's custom CSS:\r\n         @media print { body > *:not(.elementor) { display:none } }\r\n     - Place the embed on ONE page only \u2014 duplicate IDs across two embeds\r\n       on the same page will break.\r\n============================================================================ -->\r\n\r\n<style>\r\n\/* =================================================================\r\n   PrismIA Maturity Form \u2014 embed styles (all scoped to #pia-mat-app)\r\n   ================================================================= *\/\r\n\r\n#pia-mat-app {\r\n  \/* Brand variables (subset of brand-kit.css) *\/\r\n  --brand-dark:    #1929DD;\r\n  --brand-primary: #2C55FB;\r\n  --brand-light:   #91B1FF;\r\n  --brand-pale:    #DAE3FF;\r\n  --brand-gradient: linear-gradient(45deg, #1929DD 0%, #2C55FB 100%);\r\n  --font-sans: \"Plus Jakarta Sans\", system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\r\n  --radius: 0.625rem;\r\n  --radius-md: calc(var(--radius) - 2px);\r\n  --radius-lg: var(--radius);\r\n  --foreground: oklch(0.145 0 0);\r\n  --muted-foreground: oklch(0.556 0 0);\r\n  --border: oklch(0.922 0 0);\r\n  --destructive: oklch(0.577 0.245 27.325);\r\n\r\n  \/* Container *\/\r\n  position: relative;\r\n  display: block;\r\n  min-height: 100dvh;\r\n  background:\r\n    radial-gradient(60% 60% at 12% 8%, rgba(145, 177, 255, 0.28), transparent 60%),\r\n    radial-gradient(50% 50% at 100% 20%, rgba(44, 85, 251, 0.10), transparent 60%),\r\n    radial-gradient(80% 60% at 50% 110%, rgba(218, 227, 255, 0.55), transparent 60%),\r\n    #FAFBFF;\r\n  font-family: var(--font-sans);\r\n  color: var(--foreground);\r\n  -webkit-font-smoothing: antialiased;\r\n  text-rendering: optimizeLegibility;\r\n  isolation: isolate;\r\n  overflow: hidden;\r\n}\r\n#pia-mat-app *, #pia-mat-app *::before, #pia-mat-app *::after { box-sizing: border-box; }\r\n#pia-mat-app [hidden] { display: none !important; }\r\n\r\n\/* Stage *\/\r\n#pia-mat-app .pia-mat-stage {\r\n  display: flex;\r\n  align-items: flex-start;\r\n  justify-content: center;\r\n  padding: clamp(20px, 3.5vh, 44px) clamp(16px, 4vw, 48px) clamp(20px, 3vh, 36px);\r\n  min-height: 100dvh;\r\n}\r\n#pia-mat-app .pia-mat-stage-inner {\r\n  width: 100%;\r\n  max-width: 820px;\r\n  display: flex;\r\n  flex-direction: column;\r\n}\r\n#pia-mat-app .pia-mat-stage-inner:has(.screen-wide) { max-width: 1100px; }\r\n\r\n\/* Lang toggle *\/\r\n#pia-mat-app .lang-toggle {\r\n  display: inline-flex;\r\n  background: rgba(25, 41, 221, 0.07);\r\n  border-radius: 999px;\r\n  padding: 4px;\r\n  gap: 2px;\r\n}\r\n#pia-mat-app .screen-lang {\r\n  position: absolute;\r\n  top: clamp(16px, 2vh, 22px);\r\n  right: clamp(16px, 2vw, 24px);\r\n  z-index: 5;\r\n  background: rgba(255, 255, 255, 0.92);\r\n  backdrop-filter: blur(6px);\r\n  -webkit-backdrop-filter: blur(6px);\r\n  box-shadow: 0 2px 6px rgba(25, 41, 221, 0.08);\r\n  border: 1px solid var(--brand-pale);\r\n}\r\n@media (max-width: 720px) {\r\n  #pia-mat-app .screen-lang { top: 14px; right: 14px; }\r\n}\r\n#pia-mat-app .lang-btn {\r\n  background: transparent;\r\n  border: none;\r\n  font-family: inherit;\r\n  font-size: 12.5px;\r\n  font-weight: 700;\r\n  padding: 7px 14px;\r\n  border-radius: 999px;\r\n  cursor: pointer;\r\n  color: var(--muted-foreground);\r\n  letter-spacing: 0.04em;\r\n  transition: background .15s ease, color .15s ease, box-shadow .15s ease;\r\n}\r\n#pia-mat-app .lang-btn:hover:not([aria-pressed=\"true\"]) { color: var(--brand-dark); }\r\n#pia-mat-app .lang-btn[aria-pressed=\"true\"] {\r\n  background: #fff;\r\n  color: var(--brand-dark);\r\n  box-shadow: 0 1px 3px rgba(25, 41, 221, 0.14);\r\n}\r\n\r\n\/* Screen tile *\/\r\n#pia-mat-app .screen {\r\n  position: relative;\r\n  width: 100%;\r\n  max-width: 820px;\r\n  background: #ffffff;\r\n  border-radius: 28px;\r\n  box-shadow:\r\n    0 1px 2px rgba(25, 41, 221, 0.04),\r\n    0 24px 48px -16px rgba(25, 41, 221, 0.18),\r\n    0 8px 16px -8px rgba(25, 41, 221, 0.10);\r\n  padding: clamp(32px, 5.5vh, 56px) clamp(28px, 5vw, 64px);\r\n  animation: pia-mat-rise .42s cubic-bezier(.16,.84,.32,1) both;\r\n  border: 1px solid rgba(25, 41, 221, 0.06);\r\n}\r\n#pia-mat-app .screen-wide { max-width: 1100px; }\r\n@keyframes pia-mat-rise {\r\n  from { opacity: 0; transform: translateY(14px) scale(.985); }\r\n  to   { opacity: 1; transform: translateY(0)    scale(1); }\r\n}\r\n\/* Direction-aware fade\/slide between steps. render() wraps each new screen's\r\n   content in a .screen-content div, then uses the Web Animations API\r\n   (element.animate) to fade\/slide it. WAAPI runs animations on the JS\r\n   compositor directly and is not suppressed by Windows' \"Animation effects\"\r\n   off setting (which kills CSS @keyframes + transitions in Edge\/Chrome). *\/\r\n#pia-mat-app .screen.has-direction {\r\n  animation: none !important;\r\n}\r\n#pia-mat-app .screen-content {\r\n  will-change: opacity, transform;\r\n}\r\n\r\n\/* Typography *\/\r\n#pia-mat-app .eyebrow {\r\n  font-size: 12px;\r\n  font-weight: 700;\r\n  color: var(--brand-primary);\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.14em;\r\n  margin: 0 0 18px;\r\n}\r\n#pia-mat-app .screen h1 {\r\n  font-size: clamp(28px, 4vh, 40px);\r\n  line-height: 1.12;\r\n  letter-spacing: -0.02em;\r\n  margin: 0 0 18px;\r\n  font-weight: 800;\r\n  color: var(--brand-dark);\r\n  text-wrap: balance;\r\n}\r\n#pia-mat-app .screen h2 {\r\n  font-size: clamp(20px, 2.9vh, 26px);\r\n  line-height: 1.2;\r\n  letter-spacing: -0.012em;\r\n  margin: 0 0 14px;\r\n  font-weight: 700;\r\n  color: var(--brand-dark);\r\n  text-wrap: balance;\r\n  max-width: 100%;\r\n}\r\n#pia-mat-app .screen p {\r\n  color: var(--muted-foreground);\r\n  margin: 0 0 18px;\r\n  font-size: clamp(15px, 1.9vh, 17px);\r\n  line-height: 1.55;\r\n}\r\n#pia-mat-app .subtitle {\r\n  font-size: clamp(15px, 1.9vh, 17px);\r\n  color: var(--muted-foreground);\r\n  margin: 0 0 clamp(20px, 3vh, 36px) !important;\r\n  max-width: 60ch;\r\n}\r\n\r\n\/* Intro perks *\/\r\n#pia-mat-app .intro-perks {\r\n  display: grid;\r\n  grid-template-columns: repeat(3, 1fr);\r\n  gap: 14px;\r\n  margin: clamp(20px, 3vh, 32px) 0 clamp(24px, 3.5vh, 40px);\r\n}\r\n#pia-mat-app .perk {\r\n  background: var(--brand-pale);\r\n  border-radius: 16px;\r\n  padding: clamp(14px, 1.8vh, 20px) clamp(14px, 1.6vw, 18px);\r\n  text-align: left;\r\n}\r\n#pia-mat-app .perk-emoji { font-size: 24px; line-height: 1; }\r\n#pia-mat-app .perk-value {\r\n  font-size: clamp(15px, 1.9vh, 17px);\r\n  font-weight: 700;\r\n  color: var(--brand-dark);\r\n  margin-top: 6px;\r\n  letter-spacing: -0.01em;\r\n}\r\n#pia-mat-app .perk-label {\r\n  font-size: 13px;\r\n  color: var(--muted-foreground);\r\n  margin-top: 2px;\r\n  line-height: 1.4;\r\n}\r\n\r\n#pia-mat-app .cta-row {\r\n  display: flex;\r\n  gap: 14px;\r\n  flex-wrap: wrap;\r\n  margin-top: 8px;\r\n}\r\n\r\n\/* Buttons *\/\r\n#pia-mat-app .btn {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  gap: 10px;\r\n  font-family: inherit;\r\n  height: auto;\r\n  padding: 16px 28px;\r\n  font-size: 15px;\r\n  font-weight: 600;\r\n  border-radius: 14px;\r\n  border: 1px solid transparent;\r\n  cursor: pointer;\r\n  white-space: nowrap;\r\n  line-height: 1;\r\n  transition: background-color 150ms, color 150ms, border-color 150ms, box-shadow 200ms, transform 150ms;\r\n}\r\n#pia-mat-app .btn-default {\r\n  background: var(--brand-primary);\r\n  color: #fff;\r\n  box-shadow: 0 10px 24px -8px rgba(44, 85, 251, 0.45);\r\n}\r\n#pia-mat-app .btn-default:hover {\r\n  background: var(--brand-dark);\r\n  transform: translateY(-1px);\r\n  box-shadow: 0 14px 28px -8px rgba(25, 41, 221, 0.50);\r\n}\r\n#pia-mat-app .btn-default:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }\r\n#pia-mat-app .btn-ghost {\r\n  background: transparent;\r\n  color: var(--brand-dark);\r\n  border: 1px solid var(--brand-pale);\r\n}\r\n#pia-mat-app .btn-ghost:hover {\r\n  background: var(--brand-pale);\r\n  border-color: var(--brand-light);\r\n}\r\n\r\n#pia-mat-app .btn-back {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 8px;\r\n  background: transparent;\r\n  border: 1px solid var(--border);\r\n  color: var(--muted-foreground);\r\n  font-family: inherit;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n  cursor: pointer;\r\n  padding: 7px 14px 7px 10px;\r\n  border-radius: 999px;\r\n  margin-bottom: clamp(10px, 1.5vh, 18px);\r\n  transition: transform .18s cubic-bezier(.16,.84,.32,1),\r\n              background .18s ease,\r\n              border-color .18s ease,\r\n              color .18s ease,\r\n              box-shadow .18s ease;\r\n}\r\n#pia-mat-app .btn-back .btn-back-icon {\r\n  width: 22px;\r\n  height: 22px;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  border-radius: 50%;\r\n  background: var(--brand-pale);\r\n  color: var(--brand-dark);\r\n  transition: transform .18s cubic-bezier(.16,.84,.32,1), background .18s ease;\r\n}\r\n#pia-mat-app .btn-back .btn-back-icon svg { width: 12px; height: 12px; }\r\n#pia-mat-app .btn-back:hover {\r\n  border-color: var(--brand-light);\r\n  color: var(--brand-dark);\r\n  background: #fff;\r\n  box-shadow: 0 4px 12px -4px rgba(25, 41, 221, 0.18);\r\n  transform: translateX(-2px);\r\n}\r\n#pia-mat-app .btn-back:hover .btn-back-icon {\r\n  background: var(--brand-primary);\r\n  color: #fff;\r\n  transform: translateX(-2px);\r\n}\r\n#pia-mat-app .btn-back:focus-visible {\r\n  outline: none;\r\n  border-color: var(--brand-primary);\r\n  box-shadow: 0 0 0 4px rgba(44, 85, 251, 0.18);\r\n}\r\n\r\n\/* Option cards *\/\r\n#pia-mat-app .options {\r\n  display: grid;\r\n  gap: clamp(8px, 1.1vh, 12px);\r\n  margin-top: clamp(14px, 2vh, 20px);\r\n}\r\n#pia-mat-app .option {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 16px;\r\n  padding: clamp(14px, 1.8vh, 20px) clamp(18px, 2vw, 24px);\r\n  background: #fff;\r\n  border: 1.5px solid var(--border);\r\n  border-radius: 16px;\r\n  cursor: pointer;\r\n  text-align: left;\r\n  font-family: inherit;\r\n  font-size: 15px;\r\n  font-weight: 500;\r\n  color: var(--foreground);\r\n  transition: transform .18s cubic-bezier(.16,.84,.32,1), border-color .18s ease, background .18s ease, box-shadow .18s ease;\r\n  position: relative;\r\n  min-height: 0;\r\n}\r\n#pia-mat-app .option:hover {\r\n  border-color: var(--brand-light);\r\n  background: #FBFCFF;\r\n  transform: translateX(4px);\r\n  box-shadow: 0 6px 18px -8px rgba(25, 41, 221, 0.18);\r\n}\r\n#pia-mat-app .option .opt-emoji { font-size: 22px; line-height: 1; flex-shrink: 0; }\r\n#pia-mat-app .option .opt-label { flex: 1; line-height: 1.35; }\r\n#pia-mat-app .option .opt-key {\r\n  font-size: 13px;\r\n  font-weight: 700;\r\n  color: var(--brand-dark);\r\n  background: var(--brand-pale);\r\n  border-radius: 8px;\r\n  padding: 6px 12px;\r\n  font-variant-numeric: tabular-nums;\r\n  flex-shrink: 0;\r\n  min-width: 32px;\r\n  text-align: center;\r\n}\r\n#pia-mat-app .option.selected,\r\n#pia-mat-app .option:focus-visible {\r\n  border-color: var(--brand-primary);\r\n  background: linear-gradient(135deg, rgba(44, 85, 251, .03), rgba(145, 177, 255, .10));\r\n  outline: none;\r\n  box-shadow: 0 10px 24px -10px rgba(44, 85, 251, 0.30);\r\n}\r\n#pia-mat-app .option.selected .opt-key {\r\n  background: var(--brand-primary);\r\n  color: #fff;\r\n}\r\n#pia-mat-app .option.na .opt-label { color: var(--muted-foreground); font-style: italic; }\r\n\r\n\/* Form fields *\/\r\n#pia-mat-app .field { display: block; margin-bottom: clamp(12px, 1.6vh, 18px); }\r\n#pia-mat-app .field > span {\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n  color: var(--foreground);\r\n  display: block;\r\n  margin-bottom: 8px;\r\n  letter-spacing: 0.01em;\r\n}\r\n#pia-mat-app .field input[type=email],\r\n#pia-mat-app .field input[type=text] {\r\n  width: 100%;\r\n  font-family: inherit;\r\n  font-size: 16px;\r\n  padding: 14px 18px;\r\n  border: 1.5px solid var(--border);\r\n  border-radius: 12px;\r\n  background: #fff;\r\n  color: var(--foreground);\r\n  transition: border-color .15s ease, box-shadow .15s ease;\r\n}\r\n#pia-mat-app .field input:focus {\r\n  outline: none;\r\n  border-color: var(--brand-primary);\r\n  box-shadow: 0 0 0 4px rgba(44, 85, 251, 0.14);\r\n}\r\n\r\n#pia-mat-app .checkboxes { display: grid; gap: 10px; margin: clamp(16px, 2vh, 22px) 0 8px; }\r\n#pia-mat-app .cb {\r\n  display: flex;\r\n  gap: 14px;\r\n  align-items: flex-start;\r\n  padding: 14px 16px;\r\n  border-radius: 14px;\r\n  border: 1px solid transparent;\r\n  cursor: pointer;\r\n  transition: background .15s ease, border-color .15s ease;\r\n}\r\n#pia-mat-app .cb:hover { background: #FBFCFF; border-color: var(--brand-pale); }\r\n#pia-mat-app .cb input[type=checkbox] {\r\n  appearance: none;\r\n  -webkit-appearance: none;\r\n  width: 22px;\r\n  height: 22px;\r\n  border: 1.5px solid var(--border);\r\n  border-radius: 6px;\r\n  cursor: pointer;\r\n  flex-shrink: 0;\r\n  background: #fff;\r\n  position: relative;\r\n  margin: 2px 0 0;\r\n  transition: all .15s ease;\r\n}\r\n#pia-mat-app .cb input[type=checkbox]:checked {\r\n  background: var(--brand-primary);\r\n  border-color: var(--brand-primary);\r\n}\r\n#pia-mat-app .cb input[type=checkbox]:checked::after {\r\n  content: '';\r\n  position: absolute;\r\n  inset: 4px;\r\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;\r\n}\r\n#pia-mat-app .cb .cb-label { flex: 1; font-size: 13.5px; line-height: 1.5; color: var(--foreground); }\r\n#pia-mat-app .cb .cb-label strong { color: var(--brand-dark); }\r\n#pia-mat-app .cb .cb-sub { display: block; color: var(--muted-foreground); font-size: 12px; margin-top: 2px; }\r\n#pia-mat-app .cb.required .cb-label::after { content: ' *'; color: var(--destructive); font-weight: 700; }\r\n\r\n#pia-mat-app .legal {\r\n  font-size: 12px;\r\n  color: var(--muted-foreground);\r\n  margin-top: clamp(12px, 1.6vh, 18px);\r\n  line-height: 1.55;\r\n}\r\n#pia-mat-app .legal a { color: var(--muted-foreground); text-decoration: underline; }\r\n#pia-mat-app .legal a:hover { color: var(--brand-primary); }\r\n\r\n#pia-mat-app .screen p.result-legal {\r\n  font-size: 10.5px;\r\n  text-align: center;\r\n  margin: clamp(80px, 11vh, 130px) auto 0;\r\n  color: var(--muted-foreground);\r\n  line-height: 1.4;\r\n  letter-spacing: 0.015em;\r\n  white-space: nowrap;\r\n  overflow: hidden;\r\n  text-overflow: ellipsis;\r\n  max-width: 100%;\r\n}\r\n#pia-mat-app .result-legal strong { color: var(--brand-dark); font-weight: 600; }\r\n#pia-mat-app .result-legal em { font-style: italic; }\r\n@media (max-width: 860px) {\r\n  #pia-mat-app .screen p.result-legal {\r\n    white-space: normal;\r\n    font-size: 10.5px;\r\n    line-height: 1.5;\r\n    max-width: 92%;\r\n    margin-top: clamp(48px, 7vh, 72px);\r\n  }\r\n}\r\n\r\n#pia-mat-app .screen p.intro-legal {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 7px;\r\n  font-size: 11.5px;\r\n  font-weight: 500;\r\n  color: var(--muted-foreground);\r\n  line-height: 1.4;\r\n  margin: clamp(32px, 5vh, 52px) auto 0 0;\r\n  padding: 0;\r\n  background: none;\r\n  border: none;\r\n  width: max-content;\r\n  max-width: 100%;\r\n}\r\n#pia-mat-app .intro-legal svg { color: var(--brand-light); flex-shrink: 0; opacity: 0.85; }\r\n#pia-mat-app .intro-legal span { text-wrap: balance; }\r\n@media (max-width: 720px) {\r\n  #pia-mat-app .screen p.intro-legal { font-size: 11px; margin-top: 28px; }\r\n}\r\n\r\n\/* Progress bar \u2014 anchored to top of embed (not viewport) *\/\r\n#pia-mat-app .pia-mat-progress-bar {\r\n  position: absolute;\r\n  top: 0; left: 0; right: 0;\r\n  height: 3px;\r\n  background: rgba(25, 41, 221, 0.06);\r\n  z-index: 100;\r\n  pointer-events: none;\r\n}\r\n#pia-mat-app #pia-mat-progress {\r\n  height: 100%;\r\n  width: 0%;\r\n  background: var(--brand-gradient);\r\n  transition: width .35s cubic-bezier(.16,.84,.32,1);\r\n}\r\n\r\n\/* Result *\/\r\n#pia-mat-app .result-grid {\r\n  display: grid;\r\n  grid-template-columns: minmax(280px, 1fr) minmax(280px, 1fr);\r\n  gap: clamp(20px, 2.5vw, 36px);\r\n  align-items: start;\r\n}\r\n#pia-mat-app .result-grid > .col-left { display: flex; flex-direction: column; align-items: center; text-align: center; }\r\n#pia-mat-app .score-ring {\r\n  width: clamp(180px, 24vh, 240px);\r\n  height: clamp(180px, 24vh, 240px);\r\n  display: block;\r\n}\r\n#pia-mat-app .score-level {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  height: 34px;\r\n  padding: 0 16px;\r\n  border-radius: 999px;\r\n  background: color-mix(in srgb, var(--lvl-color, var(--brand-light)) 22%, #fff);\r\n  color: var(--brand-dark);\r\n  border: 1px solid color-mix(in srgb, var(--lvl-color, var(--brand-light)) 55%, #fff);\r\n  font-weight: 700;\r\n  font-size: 13.5px;\r\n  letter-spacing: 0.005em;\r\n  line-height: 1;\r\n}\r\n#pia-mat-app .screen p.score-tagline {\r\n  font-size: clamp(17px, 2.2vh, 22px);\r\n  font-weight: 700;\r\n  color: var(--foreground);\r\n  margin: clamp(36px, 5.5vh, 56px) 0 10px;\r\n  letter-spacing: -0.01em;\r\n  text-wrap: balance;\r\n  line-height: 1.25;\r\n}\r\n#pia-mat-app .screen p.score-description {\r\n  font-size: 14px;\r\n  color: var(--muted-foreground);\r\n  margin: 0 0 16px;\r\n  line-height: 1.55;\r\n  text-wrap: pretty;\r\n}\r\n\r\n#pia-mat-app .radar-wrap {\r\n  background: #FBFCFF;\r\n  border-radius: 18px;\r\n  padding: 18px;\r\n  border: 1px solid var(--brand-pale);\r\n}\r\n#pia-mat-app .radar-wrap svg { width: 100%; max-width: 320px; height: auto; display: block; margin: 0 auto; }\r\n\r\n#pia-mat-app .axis-list {\r\n  display: grid;\r\n  gap: 0;\r\n  margin-top: 18px;\r\n  border-top: 1px solid var(--brand-pale);\r\n  text-align: left;\r\n}\r\n#pia-mat-app .axis-row {\r\n  display: grid;\r\n  grid-template-columns: 14px 1fr auto;\r\n  align-items: center;\r\n  gap: 14px;\r\n  font-size: 13px;\r\n  padding: 9px 4px;\r\n  border-bottom: 1px solid var(--brand-pale);\r\n}\r\n#pia-mat-app .axis-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }\r\n#pia-mat-app .axis-name { text-align: left; color: var(--foreground); font-weight: 500; letter-spacing: -0.005em; }\r\n#pia-mat-app .axis-score { text-align: right; font-weight: 700; color: var(--brand-dark); font-variant-numeric: tabular-nums; font-size: 13px; letter-spacing: 0.01em; }\r\n\r\n#pia-mat-app .recos { display: flex; flex-direction: column; gap: 10px; }\r\n#pia-mat-app .recos h3 {\r\n  font-size: 14px;\r\n  margin: 0 0 4px;\r\n  color: var(--brand-primary);\r\n  font-weight: 700;\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.12em;\r\n}\r\n#pia-mat-app .reco {\r\n  display: block;\r\n  padding: 14px 18px;\r\n  border-radius: 14px;\r\n  border: 1px solid var(--border);\r\n  background: #fff;\r\n  text-decoration: none;\r\n  color: inherit;\r\n  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;\r\n}\r\n#pia-mat-app .reco:hover {\r\n  transform: translateY(-2px);\r\n  border-color: var(--brand-primary);\r\n  box-shadow: 0 10px 24px -8px rgba(44, 85, 251, 0.20);\r\n  text-decoration: none;\r\n}\r\n#pia-mat-app .reco-title { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-weight: 700; color: var(--brand-dark); font-size: 14px; }\r\n#pia-mat-app .reco-arrow { color: var(--brand-primary); transition: transform .2s ease; }\r\n#pia-mat-app .reco:hover .reco-arrow { transform: translateX(4px); }\r\n#pia-mat-app .reco-desc { font-size: 12.5px; color: var(--muted-foreground); margin-top: 4px; line-height: 1.45; }\r\n#pia-mat-app .reco.primary {\r\n  border-color: var(--brand-primary);\r\n  background: linear-gradient(135deg, rgba(44, 85, 251, .04), rgba(145, 177, 255, .12));\r\n}\r\n\r\n#pia-mat-app .cta-final {\r\n  margin-top: clamp(18px, 2.5vh, 28px);\r\n  padding: clamp(22px, 3vh, 32px);\r\n  background: var(--brand-gradient);\r\n  border-radius: 22px;\r\n  color: #fff;\r\n  text-align: center;\r\n  position: relative;\r\n  overflow: hidden;\r\n}\r\n#pia-mat-app .cta-final h3 { margin: 0 0 8px; font-size: clamp(18px, 2.4vh, 22px); font-weight: 700; color: #fff; }\r\n#pia-mat-app .cta-final p { color: rgba(255,255,255,0.88); margin: 0 0 16px; font-size: 14px; }\r\n#pia-mat-app .cta-final .btn { background: #fff; color: var(--brand-dark); box-shadow: 0 12px 32px -8px rgba(0,0,0,0.25); }\r\n#pia-mat-app .cta-final .btn:hover { background: var(--brand-pale); color: var(--brand-dark); }\r\n\r\n#pia-mat-app .level-row { display: inline-flex; align-items: center; gap: 10px; margin-top: 12px; flex-wrap: wrap; justify-content: center; }\r\n#pia-mat-app .level-help {\r\n  display: inline-flex; align-items: center; gap: 6px;\r\n  height: 34px; padding: 0 14px;\r\n  font-family: inherit; font-size: 12.5px; font-weight: 600;\r\n  color: var(--brand-primary);\r\n  background: transparent;\r\n  border: 1px dashed var(--brand-pale);\r\n  border-radius: 999px;\r\n  line-height: 1;\r\n  cursor: pointer;\r\n  transition: background .15s ease, border-color .15s ease, transform .15s ease;\r\n}\r\n#pia-mat-app .level-help:hover { background: var(--brand-pale); border-color: var(--brand-primary); transform: translateY(-1px); }\r\n#pia-mat-app .level-help svg { color: var(--brand-primary); }\r\n#pia-mat-app .btn-pdf { width: 100%; margin-top: 14px; justify-content: center; font-size: 14px; padding: 12px 22px; }\r\n\r\n\/* Modals (scoped) *\/\r\n#pia-mat-app .pia-mat-modal {\r\n  border: none;\r\n  padding: 32px;\r\n  border-radius: 22px;\r\n  max-width: 460px;\r\n  width: 92%;\r\n  box-shadow: 0 24px 64px -16px rgba(25, 41, 221, 0.30);\r\n  background: #fff;\r\n  font-family: var(--font-sans);\r\n  color: var(--foreground);\r\n}\r\n#pia-mat-app .pia-mat-modal::backdrop { background: rgba(15, 18, 38, 0.50); backdrop-filter: blur(6px); }\r\n#pia-mat-app .pia-mat-modal h2 { margin: 0 0 8px; font-size: 22px; color: var(--brand-dark); font-weight: 700; }\r\n#pia-mat-app .pia-mat-modal p { font-size: 14px; color: var(--muted-foreground); margin: 0 0 16px; }\r\n#pia-mat-app .pia-mat-modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 14px; }\r\n#pia-mat-app .pia-mat-modal-wide { max-width: 640px; width: 94%; padding: 28px 28px 22px; }\r\n#pia-mat-app .pia-mat-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }\r\n#pia-mat-app .pia-mat-modal-head h2 { margin: 0 0 4px; font-size: 22px; font-weight: 700; color: var(--brand-dark); letter-spacing: -0.01em; }\r\n#pia-mat-app .pia-mat-modal-sub { font-size: 12.5px; color: var(--muted-foreground); margin: 0; letter-spacing: 0.04em; text-transform: uppercase; font-weight: 600; }\r\n#pia-mat-app .pia-mat-modal-close {\r\n  background: var(--brand-pale);\r\n  border: none; border-radius: 50%; width: 34px; height: 34px; cursor: pointer;\r\n  color: var(--brand-dark);\r\n  display: inline-flex; align-items: center; justify-content: center;\r\n  transition: background .15s ease, color .15s ease, transform .15s ease;\r\n  flex-shrink: 0;\r\n}\r\n#pia-mat-app .pia-mat-modal-close:hover { background: var(--brand-primary); color: #fff; transform: rotate(90deg); }\r\n\r\n#pia-mat-app .pia-mat-levels-list { display: flex; flex-direction: column; gap: 10px; max-height: 60vh; overflow-y: auto; padding-right: 4px; margin-bottom: 14px; }\r\n#pia-mat-app .level-card { border: 1.5px solid var(--border); border-radius: 14px; padding: 14px 18px; background: #fff; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }\r\n#pia-mat-app .level-card.active {\r\n  border-color: var(--lvl-color, var(--brand-primary));\r\n  background: linear-gradient(135deg, color-mix(in srgb, var(--lvl-color, var(--brand-primary)) 8%, white), #fff);\r\n  box-shadow: 0 8px 22px -10px color-mix(in srgb, var(--lvl-color, var(--brand-primary)) 50%, transparent);\r\n}\r\n#pia-mat-app .level-card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }\r\n#pia-mat-app .level-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--lvl-color, var(--brand-primary)); flex-shrink: 0; }\r\n#pia-mat-app .level-card-titles { display: flex; flex-direction: column; gap: 1px; flex: 1; }\r\n#pia-mat-app .level-card-label { font-size: 15px; font-weight: 700; color: var(--brand-dark); letter-spacing: -0.005em; }\r\n#pia-mat-app .level-card-range { font-size: 11.5px; font-weight: 600; color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\r\n#pia-mat-app .level-badge-active { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; background: var(--lvl-color, var(--brand-primary)); color: #fff; padding: 4px 10px; border-radius: 999px; flex-shrink: 0; }\r\n#pia-mat-app .level-card-tagline { font-size: 13.5px; font-weight: 600; color: var(--foreground); margin: 4px 0 4px; }\r\n#pia-mat-app .level-card-desc { font-size: 12.5px; color: var(--muted-foreground); margin: 0; line-height: 1.5; }\r\n\r\n\/* Responsive *\/\r\n@media (max-width: 860px) {\r\n  #pia-mat-app .result-grid { grid-template-columns: 1fr; gap: 20px; }\r\n  #pia-mat-app .result-grid > .col-left { order: 1; }\r\n  #pia-mat-app .result-grid > .col-right { order: 2; }\r\n}\r\n@media (max-width: 720px) {\r\n  #pia-mat-app .pia-mat-stage { padding: 16px 12px; }\r\n  #pia-mat-app .screen { padding: 28px 22px; border-radius: 22px; }\r\n  #pia-mat-app .intro-perks { grid-template-columns: 1fr 1fr; gap: 10px; }\r\n  #pia-mat-app .perk { padding: 12px 14px; }\r\n  #pia-mat-app .lang-btn { padding: 6px 10px; font-size: 12px; }\r\n  #pia-mat-app .option { padding: 14px 16px; gap: 12px; }\r\n  #pia-mat-app .option .opt-emoji { font-size: 20px; }\r\n  #pia-mat-app .cta-row { flex-direction: column; }\r\n  #pia-mat-app .cta-row .btn { width: 100%; }\r\n}\r\n@media (max-height: 720px) {\r\n  #pia-mat-app .screen { padding: 26px 32px; }\r\n  #pia-mat-app .screen h1 { font-size: 26px; margin-bottom: 12px; }\r\n  #pia-mat-app .screen h2 { font-size: 21px; margin-bottom: 10px; }\r\n  #pia-mat-app .intro-perks { margin: 16px 0 20px; }\r\n  #pia-mat-app .options { gap: 8px; }\r\n  #pia-mat-app .option { padding: 12px 16px; }\r\n}\r\n@media (prefers-reduced-motion: reduce) {\r\n  #pia-mat-app *, #pia-mat-app *::before, #pia-mat-app *::after {\r\n    animation-duration: 0.01ms !important;\r\n    transition-duration: 0.01ms !important;\r\n  }\r\n}\r\n\r\n\/* Print \u2014 best-effort. WP page chrome will still print unless your theme\r\n   has a print stylesheet. See SETUP NOTES at the top of this file. *\/\r\n#pia-mat-app [data-print-only] { display: none; }\r\n@media print {\r\n  \/* Print ONLY the maturity form \u2014 hide WP\/Elementor page chrome.\r\n     :has() keeps the embed's ancestor chain visible (header \u2192 main \u2192 section\r\n     \u2192 widget wrapper \u2192 #pia-mat-app), hides everything else. *\/\r\n  body *:not(:has(#pia-mat-app), #pia-mat-app, #pia-mat-app *) {\r\n    display: none !important;\r\n  }\r\n  html, body {\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    background: #fff !important;\r\n    height: auto !important;\r\n    min-height: 0 !important;\r\n  }\r\n  @page { size: A4; margin: 12mm 14mm; }\r\n\r\n  #pia-mat-app { background: #fff !important; min-height: 0 !important; overflow: visible !important; }\r\n  \/* Suppress browser's default \"(http:\/\/...)\" appended after every <a> in print *\/\r\n  #pia-mat-app a[href]::after,\r\n  #pia-mat-app a[href]::before { content: \"\" !important; display: none !important; }\r\n  #pia-mat-app a { text-decoration: none !important; color: inherit !important; }\r\n  #pia-mat-app .no-print,\r\n  #pia-mat-app .pia-mat-progress-bar,\r\n  #pia-mat-app .btn-back,\r\n  #pia-mat-app .btn-pdf,\r\n  #pia-mat-app .level-help,\r\n  #pia-mat-app .screen-lang,\r\n  #pia-mat-app .cta-final,\r\n  #pia-mat-app dialog,\r\n  #pia-mat-app .pia-mat-modal { display: none !important; }\r\n  #pia-mat-app .pia-mat-stage {\r\n    padding: 0 !important;\r\n    overflow: visible !important;\r\n    min-height: 0 !important;\r\n    display: block !important;\r\n  }\r\n  #pia-mat-app .pia-mat-stage-inner { max-width: none !important; width: 100% !important; }\r\n  #pia-mat-app .screen, #pia-mat-app .screen-wide {\r\n    box-shadow: none !important; border: none !important; border-radius: 0 !important;\r\n    padding: 0 !important; max-width: none !important; width: 100% !important;\r\n    animation: none !important; background: #fff !important;\r\n    display: block !important;\r\n    min-height: 0 !important;\r\n  }\r\n  #pia-mat-app [data-print-only] { display: block !important; }\r\n  #pia-mat-app .result-head { margin-bottom: 10px; padding: 0; border: none; }\r\n  #pia-mat-app .print-meta-row { display: flex !important; justify-content: space-between; align-items: center; margin: 0 0 14px; }\r\n  #pia-mat-app .print-logo { height: 26px; width: auto; }\r\n  #pia-mat-app .print-date { font-size: 9.5px; color: #5B6079; font-weight: 500; letter-spacing: 0.04em; }\r\n  #pia-mat-app .print-titles { text-align: left; margin-bottom: 6px; }\r\n  #pia-mat-app .print-title { font-size: 22px; font-weight: 800; color: #1929DD; margin: 0 0 4px; letter-spacing: -0.018em; line-height: 1.1; }\r\n  #pia-mat-app .print-identity { font-size: 11px; color: #5B6079; margin: 0; font-weight: 500; min-height: 1.2em; }\r\n  #pia-mat-app .print-divider { height: 1px; background: linear-gradient(90deg, transparent 0%, #DAE3FF 18%, #DAE3FF 82%, transparent 100%); margin: 10px 0 14px; }\r\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; }\r\n  #pia-mat-app .col-left, #pia-mat-app .col-right { display: block !important; }\r\n  #pia-mat-app .col-left { text-align: center; }\r\n  #pia-mat-app .score-ring { width: 130px !important; height: 130px !important; margin: 0 auto 8px !important; }\r\n  #pia-mat-app .level-row { margin-top: 0 !important; justify-content: center !important; gap: 8px !important; }\r\n  #pia-mat-app .score-level { font-size: 11px !important; padding: 4px 12px !important; }\r\n  #pia-mat-app .score-tagline { font-size: 13px !important; font-weight: 700 !important; margin: 8px 0 4px !important; color: #0F1226 !important; }\r\n  #pia-mat-app .score-description { font-size: 10px !important; color: #5B6079 !important; margin: 0 auto !important; line-height: 1.45 !important; max-width: 240px; }\r\n  #pia-mat-app .radar-wrap { background: transparent !important; border: none !important; padding: 0 !important; margin-top: 10px !important; }\r\n  #pia-mat-app .radar-wrap svg { max-width: 180px !important; width: 100% !important; margin: 0 auto !important; }\r\n  #pia-mat-app .axis-list { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 0 16px !important; margin-top: 12px !important; border-top: 1px solid #DAE3FF !important; }\r\n  #pia-mat-app .axis-row { display: grid !important; grid-template-columns: 9px 1fr auto !important; gap: 10px !important; align-items: center !important; padding: 6px 2px !important; border-bottom: 1px solid #DAE3FF !important; font-size: 9.5px !important; }\r\n  #pia-mat-app .axis-dot { width: 8px !important; height: 8px !important; }\r\n  #pia-mat-app .axis-name { font-size: 9.5px !important; color: #0F1226 !important; font-weight: 500 !important; }\r\n  #pia-mat-app .axis-score { font-size: 9.5px !important; font-weight: 700 !important; color: #1929DD !important; }\r\n  #pia-mat-app .recos { display: flex; flex-direction: column; gap: 6px !important; }\r\n  #pia-mat-app .recos h3 { font-size: 9px !important; margin: 0 0 6px !important; color: #2C55FB !important; }\r\n  #pia-mat-app .reco { page-break-inside: avoid; box-shadow: none !important; transform: none !important; padding: 9px 12px !important; border-radius: 8px !important; border: 1px solid #DAE3FF !important; background: #fff !important; }\r\n  #pia-mat-app .reco.primary { background: linear-gradient(135deg, rgba(44,85,251,0.04), rgba(145,177,255,0.10)) !important; border-color: #2C55FB !important; }\r\n  #pia-mat-app .reco-title { font-size: 10.5px !important; font-weight: 700 !important; color: #1929DD !important; }\r\n  #pia-mat-app .reco-arrow { display: none !important; }\r\n  #pia-mat-app .reco-desc { font-size: 9.5px !important; margin-top: 2px !important; color: #5B6079 !important; line-height: 1.4 !important; }\r\n  #pia-mat-app .print-footer { margin-top: 24px !important; padding-top: 14px; page-break-inside: avoid; }\r\n  #pia-mat-app .print-footer-divider { height: 1px; background: linear-gradient(90deg, transparent 0%, #DAE3FF 18%, #DAE3FF 82%, transparent 100%); margin: 0 0 10px; }\r\n  #pia-mat-app .print-footer-row { display: flex !important; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 6px; }\r\n  #pia-mat-app .print-footer-brand { display: flex !important; align-items: flex-start !important; gap: 8px; font-size: 9.5px; color: #1929DD; font-weight: 600; }\r\n  #pia-mat-app .print-footer-mark { height: 16px; width: 16px; margin-top: 1px; flex-shrink: 0; }\r\n  #pia-mat-app .print-footer-info { display: flex !important; flex-direction: column !important; gap: 1px !important; line-height: 1.25 !important; }\r\n  #pia-mat-app .print-footer-info strong { color: #1929DD !important; font-weight: 700 !important; font-size: 9.5px !important; }\r\n  #pia-mat-app .print-footer-addr { color: #5B6079 !important; font-weight: 400 !important; font-size: 8.5px !important; }\r\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; text-decoration: none !important; font-weight: 500 !important; }\r\n  #pia-mat-app .print-footer-meta { font-size: 7.5px !important; color: #5B6079 !important; margin: 8px 0 0 !important; text-align: center !important; line-height: 1.35 !important; letter-spacing: 0.03em !important; opacity: 0.75 !important; }\r\n}\r\n<\/style>\r\n\r\n<div id=\"pia-mat-app\">\r\n  <main class=\"pia-mat-stage\">\r\n    <div class=\"pia-mat-stage-inner\">\r\n      <div id=\"pia-mat-app-inner\" aria-live=\"polite\"><\/div>\r\n    <\/div>\r\n  <\/main>\r\n\r\n  <div class=\"pia-mat-progress-bar\" aria-hidden=\"true\">\r\n    <div id=\"pia-mat-progress\"><\/div>\r\n  <\/div>\r\n\r\n  <dialog id=\"pia-mat-levels-modal\" class=\"pia-mat-modal pia-mat-modal-wide\" aria-labelledby=\"pia-mat-levels-modal-title\">\r\n    <div class=\"pia-mat-modal-head\">\r\n      <div>\r\n        <h2 id=\"pia-mat-levels-modal-title\" data-i18n=\"levels_modal_title\">The 5 levels of AI maturity<\/h2>\r\n        <p class=\"pia-mat-modal-sub\" data-i18n=\"levels_modal_subtitle\">Journey to AI Methodology \u00b7 PrismIA<\/p>\r\n      <\/div>\r\n      <button type=\"button\" class=\"pia-mat-modal-close\" id=\"pia-mat-levels-close\" aria-label=\"Fermer\">\r\n        <svg viewbox=\"0 0 24 24\" width=\"20\" height=\"20\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" d=\"M6 6l12 12M6 18L18 6\"><\/path><\/svg>\r\n      <\/button>\r\n    <\/div>\r\n    <div class=\"pia-mat-levels-list\" id=\"pia-mat-levels-list\"><\/div>\r\n    <div class=\"pia-mat-modal-actions\">\r\n      <button type=\"button\" class=\"btn btn-ghost\" id=\"pia-mat-levels-close-2\" data-i18n=\"levels_modal_close\">Close<\/button>\r\n    <\/div>\r\n  <\/dialog>\r\n\r\n  <dialog id=\"pia-mat-audio-modal\" class=\"pia-mat-modal\">\r\n    <form method=\"dialog\" id=\"pia-mat-audio-form\">\r\n      <h2 data-i18n=\"audio_modal_title\">Our audio agent is coming soon<\/h2>\r\n      <p data-i18n=\"audio_modal_desc\">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. <\/p>\r\n      <label class=\"field\">\r\n        <span data-i18n=\"audio_modal_email\">Your email address<\/span>\r\n        <input type=\"email\" id=\"pia-mat-audio-email\" required=\"\" placeholder=\"you@company.ch\">\r\n      <\/label>\r\n      <div class=\"pia-mat-modal-actions\">\r\n        <button type=\"button\" class=\"btn btn-ghost\" id=\"pia-mat-audio-cancel\" data-i18n=\"audio_modal_cancel\">Later<\/button>\r\n<button type=\"submit\" class=\"btn btn-default\" data-i18n=\"audio_modal_submit\">Notify me<\/button>\r\n      <\/div>\r\n      <p class=\"legal\" id=\"pia-mat-audio-status\"><\/p>\r\n    <\/form>\r\n  <\/dialog>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  \/\/ ============================================================\r\n  \/\/ CONFIGURATION \u2014 replace these placeholders before going live\r\n  \/\/ ============================================================\r\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\";\r\n  const POWER_AUTOMATE_AUDIO_WAITLIST_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\";\r\n  const LOGO_BLUE_URL                     = \"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PRISMIA_logo_couleur_20241105.svg\";\r\n  const MARK_BLUE_URL                     = \"https:\/\/www.prismia.ch\/wp-content\/uploads\/2024\/11\/PIA_logo_square.svg\";\r\n\r\n  \/\/ ============================================================\r\n  \/\/ CONTENT \u2014 inlined from content\/questions.json (v2.0.0)\r\n  \/\/ Edit text \/ scoring thresholds \/ recommendations here.\r\n  \/\/ ============================================================\r\n  const CONTENT = {\r\n    \"version\": \"2.0.0\",\r\n    \"languages\": [\"fr\", \"en\"],\r\n    \"default_language\": \"fr\",\r\n    \"ui\": {\r\n      \"fr\": {\r\n        \"audio_btn\": \"Faire le test \u00e0 l'oral\",\r\n        \"audio_modal_title\": \"Notre agent vocal arrive bient\u00f4t\",\r\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.\",\r\n        \"audio_modal_email\": \"Votre email\",\r\n        \"audio_modal_cancel\": \"Plus tard\",\r\n        \"audio_modal_submit\": \"Me pr\u00e9venir\",\r\n        \"audio_modal_success\": \"Merci ! Nous vous \u00e9crivons au lancement.\",\r\n        \"audio_modal_error\": \"D\u00e9sol\u00e9, une erreur s'est produite.\",\r\n        \"footer_privacy\": \"Confidentialit\u00e9\",\r\n        \"footer_copy\": \"\u00a9 PrismIA S\u00e0rl \u00b7 Gen\u00e8ve\",\r\n        \"intro_eyebrow\": \"Test de maturit\u00e9 IA \u00b7 Gratuit\",\r\n        \"intro_title\": \"O\u00f9 en est votre organisation avec l'IA&nbsp;?\",\r\n        \"intro_subtitle\": \"14 questions, 5 minutes. Vous obtenez un score sur 5, un radar par axe, et 3 recommandations concr\u00e8tes adapt\u00e9es \u00e0 votre situation.\",\r\n        \"perk1_value\": \"5 min\",\r\n        \"perk1_label\": \"Le temps d'un caf\u00e9\",\r\n        \"perk2_value\": \"6 axes\",\r\n        \"perk2_label\": \"M\u00e9thodologie PrismIA\",\r\n        \"perk3_value\": \"Sur-mesure\",\r\n        \"perk3_label\": \"Recos selon votre score\",\r\n        \"btn_start\": \"Commencer le test\",\r\n        \"btn_audio_intro\": \"Je pr\u00e9f\u00e8re le faire \u00e0 l'oral\",\r\n        \"intro_legal\": \"Vos r\u00e9ponses sont confidentielles. Email demand\u00e9 \u00e0 la fin du test pour recevoir votre rapport.\",\r\n        \"back\": \"Retour\",\r\n        \"skip\": \"Passer\",\r\n        \"email_invalid\": \"Email invalide. V\u00e9rifiez le format (ex. : vous@entreprise.ch).\",\r\n        \"email_disposable\": \"Cet email ressemble \u00e0 une adresse temporaire. Utilisez votre email pro pour recevoir le rapport.\",\r\n        \"email_unreachable\": \"Ce domaine ne semble pas exister. V\u00e9rifiez la saisie.\",\r\n        \"profile_eyebrow\": \"Profil \u00b7 {idx} \/ {total}\",\r\n        \"maturity_eyebrow\": \"{axis} \u00b7 Question {idx} \/ {total}\",\r\n        \"email_eyebrow\": \"Derni\u00e8re \u00e9tape \u00b7 Votre rapport\",\r\n        \"email_title\": \"O\u00f9 envoyons-nous votre rapport&nbsp;?\",\r\n        \"email_subtitle\": \"Votre score s'affiche juste apr\u00e8s. Un email r\u00e9cap (radar, axes, recos) vous est envoy\u00e9 pour le partager avec vos \u00e9quipes.\",\r\n        \"email_field\": \"Email professionnel *\",\r\n        \"email_placeholder\": \"vous@entreprise.ch\",\r\n        \"toggle_optional\": \"+ Ajouter mon nom & entreprise (optionnel)\",\r\n        \"name_field\": \"Nom (optionnel)\",\r\n        \"company_field\": \"Entreprise (optionnel)\",\r\n        \"consent_terms_label\": \"J'accepte que PrismIA SA traite mon email pour m'envoyer mon rapport personnalis\u00e9.\",\r\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>.\",\r\n        \"consent_newsletter_label\": \"<strong>Recevoir \u00ab Le monde de demAIn \u00bb<\/strong> \u2014 notre newsletter mensuelle sur l'IA en entreprise.\",\r\n        \"consent_newsletter_sub\": \"D\u00e9sinscription en un clic dans chaque email.\",\r\n        \"consent_events_label\": \"<strong>\u00catre invit\u00e9\u00b7e \u00e0 nos webinars et \u00e9v\u00e9nements IA.<\/strong>\",\r\n        \"consent_events_sub\": \"2 \u00e0 4 invitations par an, jamais plus.\",\r\n        \"btn_view_score\": \"Voir mon score\",\r\n        \"submit_error\": \"D\u00e9sol\u00e9, l'envoi a \u00e9chou\u00e9. R\u00e9essayez ou contactez-nous \u00e0 contact@prismia.ch.\",\r\n        \"loading\": \"Chargement\u2026\",\r\n        \"load_error_title\": \"Oups, impossible de charger le test.\",\r\n        \"load_error_desc\": \"Rechargez la page ou contactez-nous \u00e0 <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\r\n        \"result_eyebrow\": \"Votre r\u00e9sultat\",\r\n        \"result_on\": \"sur 5\",\r\n        \"recos_title\": \"Vos 3 prochaines \u00e9tapes\",\r\n        \"cta_final_title\": \"On en parle&nbsp;?\",\r\n        \"cta_final_desc\": \"30&nbsp;min avec un expert PrismIA pour d\u00e9cortiquer votre score et discuter de la suite. Sans engagement.\",\r\n        \"cta_final_btn\": \"R\u00e9server mon appel d\u00e9couverte\",\r\n        \"result_legal\": \"Rapport d\u00e9taill\u00e9 envoy\u00e9 \u00e0 <strong>{email}<\/strong> \u00b7 M\u00e9thodologie <em>Journey to AI<\/em> \u00b7 6 axes \/ 30 crit\u00e8res (version simplifi\u00e9e)\",\r\n        \"result_axis_score\": \"{score} \/ 5\",\r\n        \"download_pdf\": \"T\u00e9l\u00e9charger en PDF\",\r\n        \"understand_levels\": \"Comprendre votre niveau\",\r\n        \"levels_modal_title\": \"Les 5 niveaux de maturit\u00e9 IA\",\r\n        \"levels_modal_subtitle\": \"M\u00e9thodologie Journey to AI \u00b7 PrismIA\",\r\n        \"levels_modal_close\": \"Fermer\",\r\n        \"your_level_badge\": \"Votre niveau\",\r\n        \"level_range\": \"Score {min} \u2013 {max}\",\r\n        \"print_header_title\": \"Test de maturit\u00e9 IA\",\r\n        \"print_header_subtitle\": \"Rapport personnalis\u00e9 \u00b7 Journey to AI\",\r\n        \"print_prepared_for\": \"Pr\u00e9par\u00e9 pour {email}\",\r\n        \"print_legal_meta\": \"M\u00e9thodologie Journey to AI \u00b7 6 axes \/ 30 crit\u00e8res (version simplifi\u00e9e)\"\r\n      },\r\n      \"en\": {\r\n        \"audio_btn\": \"Take it by voice\",\r\n        \"audio_modal_title\": \"Our voice agent is coming soon\",\r\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.\",\r\n        \"audio_modal_email\": \"Your email\",\r\n        \"audio_modal_cancel\": \"Later\",\r\n        \"audio_modal_submit\": \"Notify me\",\r\n        \"audio_modal_success\": \"Thanks! We'll write to you at launch.\",\r\n        \"audio_modal_error\": \"Sorry, something went wrong.\",\r\n        \"footer_privacy\": \"Privacy\",\r\n        \"footer_copy\": \"\u00a9 PrismIA S\u00e0rl \u00b7 Geneva\",\r\n        \"intro_eyebrow\": \"AI Maturity Test \u00b7 Free\",\r\n        \"intro_title\": \"Where does your organization stand with AI?\",\r\n        \"intro_subtitle\": \"14 questions, 5 minutes. Get a score out of 5, a radar by axis, and 3 concrete recommendations tailored to your situation.\",\r\n        \"perk1_value\": \"5 min\",\r\n        \"perk1_label\": \"Coffee-break short\",\r\n        \"perk2_value\": \"6 axes\",\r\n        \"perk2_label\": \"PrismIA methodology\",\r\n        \"perk3_value\": \"Tailored\",\r\n        \"perk3_label\": \"Recos based on score\",\r\n        \"btn_start\": \"Start the test\",\r\n        \"btn_audio_intro\": \"I'd rather do it by voice\",\r\n        \"intro_legal\": \"Your answers are confidential. Email asked at the end to send you the report.\",\r\n        \"back\": \"Back\",\r\n        \"skip\": \"Skip\",\r\n        \"email_invalid\": \"Invalid email. Check the format (e.g. you@company.com).\",\r\n        \"email_disposable\": \"This looks like a disposable address. Please use your work email to receive the report.\",\r\n        \"email_unreachable\": \"This domain doesn't seem to exist. Please double-check.\",\r\n        \"profile_eyebrow\": \"Profile \u00b7 {idx} \/ {total}\",\r\n        \"maturity_eyebrow\": \"{axis} \u00b7 Question {idx} \/ {total}\",\r\n        \"email_eyebrow\": \"Last step \u00b7 Your report\",\r\n        \"email_title\": \"Where should we send your report?\",\r\n        \"email_subtitle\": \"Your score shows up right after. A recap email (radar, axes, recos) is sent so you can share it with your teams.\",\r\n        \"email_field\": \"Work email *\",\r\n        \"email_placeholder\": \"you@company.com\",\r\n        \"toggle_optional\": \"+ Add name & company (optional)\",\r\n        \"name_field\": \"Name (optional)\",\r\n        \"company_field\": \"Company (optional)\",\r\n        \"consent_terms_label\": \"I agree that PrismIA SA may process my email to send me my personalized report.\",\r\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>.\",\r\n        \"consent_newsletter_label\": \"<strong>Subscribe to \u201cTomorrow's World of AI\u201d<\/strong> \u2014 our monthly newsletter on AI in business.\",\r\n        \"consent_newsletter_sub\": \"One-click unsubscribe in every email.\",\r\n        \"consent_events_label\": \"<strong>Receive invites to our AI webinars and events.<\/strong>\",\r\n        \"consent_events_sub\": \"2 to 4 invitations a year, never more.\",\r\n        \"btn_view_score\": \"View my score\",\r\n        \"submit_error\": \"Sorry, submission failed. Please retry or contact us at contact@prismia.ch.\",\r\n        \"loading\": \"Loading\u2026\",\r\n        \"load_error_title\": \"Oops, the test couldn't load.\",\r\n        \"load_error_desc\": \"Reload the page or contact us at <a href=\\\"mailto:contact@prismia.ch\\\">contact@prismia.ch<\/a>.\",\r\n        \"result_eyebrow\": \"Your result\",\r\n        \"result_on\": \"out of 5\",\r\n        \"recos_title\": \"Your 3 next steps\",\r\n        \"cta_final_title\": \"Let's talk?\",\r\n        \"cta_final_desc\": \"30&nbsp;minutes with a PrismIA expert to unpack your score and discuss next steps. No commitment.\",\r\n        \"cta_final_btn\": \"Book my discovery call\",\r\n        \"result_legal\": \"Detailed report sent to <strong>{email}<\/strong> \u00b7 <em>Journey to AI<\/em> methodology \u00b7 6 axes \/ 30 criteria (simplified version)\",\r\n        \"result_axis_score\": \"{score} \/ 5\",\r\n        \"download_pdf\": \"Download as PDF\",\r\n        \"understand_levels\": \"Understand your level\",\r\n        \"levels_modal_title\": \"The 5 AI Maturity Levels\",\r\n        \"levels_modal_subtitle\": \"Journey to AI methodology \u00b7 PrismIA\",\r\n        \"levels_modal_close\": \"Close\",\r\n        \"your_level_badge\": \"Your level\",\r\n        \"level_range\": \"Score {min} \u2013 {max}\",\r\n        \"print_header_title\": \"AI Maturity Test\",\r\n        \"print_header_subtitle\": \"Personalized report \u00b7 Journey to AI\",\r\n        \"print_prepared_for\": \"Prepared for {email}\",\r\n        \"print_legal_meta\": \"Journey to AI methodology \u00b7 6 axes \/ 30 criteria (simplified version)\"\r\n      }\r\n    },\r\n    \"scale\": {\r\n      \"labels\": [\r\n        { \"score\": 1, \"emoji\": \"\ud83d\udd34\", \"short\": { \"fr\": \"Pas du tout\",   \"en\": \"Not at all\" } },\r\n        { \"score\": 2, \"emoji\": \"\ud83d\udfe0\", \"short\": { \"fr\": \"Tout d\u00e9but\",    \"en\": \"Early stage\" } },\r\n        { \"score\": 3, \"emoji\": \"\ud83d\udfe1\", \"short\": { \"fr\": \"En cours\",      \"en\": \"In progress\" } },\r\n        { \"score\": 4, \"emoji\": \"\ud83d\udfe2\", \"short\": { \"fr\": \"Bien \u00e9tabli\",   \"en\": \"Well established\" } },\r\n        { \"score\": 5, \"emoji\": \"\ud83d\udc8e\", \"short\": { \"fr\": \"Exemplaire\",    \"en\": \"Best-in-class\" } }\r\n      ],\r\n      \"na\": { \"emoji\": \"\u26aa\", \"short\": { \"fr\": \"Je ne sais pas \/ pas applicable\", \"en\": \"I don't know \/ not applicable\" } }\r\n    },\r\n    \"axes\": [\r\n      { \"id\": \"A\", \"color\": \"#1929DD\", \"name\":  { \"fr\": \"Strat\u00e9gie & Gouvernance\", \"en\": \"Strategy & Governance\" }, \"short\": { \"fr\": \"Strat\u00e9gie\", \"en\": \"Strategy\" } },\r\n      { \"id\": \"B\", \"color\": \"#2C55FB\", \"name\":  { \"fr\": \"Fondations Donn\u00e9es\", \"en\": \"Data Foundations\" }, \"short\": { \"fr\": \"Donn\u00e9es\", \"en\": \"Data\" } },\r\n      { \"id\": \"C\", \"color\": \"#00096F\", \"name\":  { \"fr\": \"Technologie & Architecture\", \"en\": \"Technology & Architecture\" }, \"short\": { \"fr\": \"Technologie\", \"en\": \"Technology\" } },\r\n      { \"id\": \"D\", \"color\": \"#91B1FF\", \"name\":  { \"fr\": \"Personnes & Comp\u00e9tences\", \"en\": \"People & Skills\" }, \"short\": { \"fr\": \"\u00c9quipes\", \"en\": \"People\" } },\r\n      { \"id\": \"E\", \"color\": \"#FFBC7D\", \"name\":  { \"fr\": \"Adoption & Cr\u00e9ation de valeur\", \"en\": \"Adoption & Value Creation\" }, \"short\": { \"fr\": \"Valeur\", \"en\": \"Value\" } },\r\n      { \"id\": \"F\", \"color\": \"#666666\", \"name\":  { \"fr\": \"Mod\u00e8le Op\u00e9rationnel & Conduite du changement\", \"en\": \"Operating Model & Change Management\" }, \"short\": { \"fr\": \"Op\u00e9rations\", \"en\": \"Operations\" } }\r\n    ],\r\n    \"profile_questions\": [\r\n      {\r\n        \"id\": \"role\", \"type\": \"single\",\r\n        \"title\":    { \"fr\": \"Quel est votre r\u00f4le ?\", \"en\": \"What's your role?\" },\r\n        \"subtitle\": { \"fr\": \"Pour adapter nos recommandations\", \"en\": \"So we can tailor our recommendations\" },\r\n        \"options\": [\r\n          { \"value\": \"dirigeant\",  \"emoji\": \"\ud83d\udc54\", \"label\": { \"fr\": \"Dirigeant\u00b7e \/ CEO\", \"en\": \"CEO \/ Executive\" } },\r\n          { \"value\": \"dsi\",        \"emoji\": \"\ud83d\udcbb\", \"label\": { \"fr\": \"DSI \/ Responsable IT\", \"en\": \"CIO \/ IT Lead\" } },\r\n          { \"value\": \"metier\",     \"emoji\": \"\ud83d\udcca\", \"label\": { \"fr\": \"Responsable m\u00e9tier\", \"en\": \"Business Lead\" } },\r\n          { \"value\": \"independant\",\"emoji\": \"\ud83d\ude80\", \"label\": { \"fr\": \"Ind\u00e9pendant\u00b7e\", \"en\": \"Independent\" } },\r\n          { \"value\": \"autre\",      \"emoji\": \"\u2728\", \"label\": { \"fr\": \"Autre\", \"en\": \"Other\" } }\r\n        ]\r\n      },\r\n      {\r\n        \"id\": \"size\", \"type\": \"single\",\r\n        \"title\":    { \"fr\": \"Quelle est la taille de votre organisation ?\", \"en\": \"How big is your organization?\" },\r\n        \"subtitle\": { \"fr\": \"On ne juge pas \u2014 on calibre\", \"en\": \"No judgment \u2014 just for calibration\" },\r\n        \"options\": [\r\n          { \"value\": \"solo\",  \"emoji\": \"\ud83d\udc64\", \"label\": { \"fr\": \"Ind\u00e9pendant\u00b7e (1 personne)\", \"en\": \"Solo (1 person)\" } },\r\n          { \"value\": \"tpe\",   \"emoji\": \"\ud83d\udc65\", \"label\": { \"fr\": \"TPE (2 \u00e0 10 personnes)\", \"en\": \"Small (2\u201310)\" } },\r\n          { \"value\": \"pme\",   \"emoji\": \"\ud83c\udfe2\", \"label\": { \"fr\": \"PME (11 \u00e0 250 personnes)\", \"en\": \"Medium (11\u2013250)\" } },\r\n          { \"value\": \"eti\",   \"emoji\": \"\ud83c\udfdb\ufe0f\", \"label\": { \"fr\": \"ETI (251 \u00e0 5 000)\", \"en\": \"Large (251\u20135,000)\" } },\r\n          { \"value\": \"grand\", \"emoji\": \"\ud83c\udf06\", \"label\": { \"fr\": \"Grand groupe (5 000+)\", \"en\": \"Enterprise (5,000+)\" } }\r\n        ]\r\n      },\r\n      {\r\n        \"id\": \"sector\", \"type\": \"single\", \"skippable\": true,\r\n        \"title\":    { \"fr\": \"Dans quel secteur ?\", \"en\": \"Which sector?\" },\r\n        \"subtitle\": { \"fr\": \"Optionnel \u2014 pour affiner les recommandations\", \"en\": \"Optional \u2014 to refine recommendations\" },\r\n        \"options\": [\r\n          { \"value\": \"finance\",   \"emoji\": \"\ud83c\udfe6\", \"label\": { \"fr\": \"Finance \/ Assurance\", \"en\": \"Finance \/ Insurance\" } },\r\n          { \"value\": \"industrie\", \"emoji\": \"\ud83c\udfed\", \"label\": { \"fr\": \"Industrie \/ Manufacturing\", \"en\": \"Manufacturing\" } },\r\n          { \"value\": \"services\",  \"emoji\": \"\ud83d\udcbc\", \"label\": { \"fr\": \"Services \/ Conseil\", \"en\": \"Services \/ Consulting\" } },\r\n          { \"value\": \"sante\",     \"emoji\": \"\ud83c\udfe5\", \"label\": { \"fr\": \"Sant\u00e9 \/ Pharma\", \"en\": \"Healthcare \/ Pharma\" } },\r\n          { \"value\": \"public\",    \"emoji\": \"\ud83c\udfdb\ufe0f\", \"label\": { \"fr\": \"Secteur public\", \"en\": \"Public Sector\" } },\r\n          { \"value\": \"retail\",    \"emoji\": \"\ud83d\udecd\ufe0f\", \"label\": { \"fr\": \"Commerce \/ Retail\", \"en\": \"Retail\" } },\r\n          { \"value\": \"tech\",      \"emoji\": \"\ud83d\udca1\", \"label\": { \"fr\": \"Tech \/ Logiciel\", \"en\": \"Tech \/ Software\" } },\r\n          { \"value\": \"autre\",     \"emoji\": \"\u2728\", \"label\": { \"fr\": \"Autre\", \"en\": \"Other\" } }\r\n        ]\r\n      }\r\n    ],\r\n    \"maturity_questions\": [\r\n      { \"id\": \"Q1\",  \"axis\": \"A\", \"title\": { \"fr\": \"Votre direction a-t-elle une vision IA claire et partag\u00e9e ?\", \"en\": \"Does your leadership have a clear, shared AI vision?\" }, \"subtitle\": { \"fr\": \"Sponsoring ex\u00e9cutif, ambition affich\u00e9e, int\u00e9gr\u00e9e \u00e0 la strat\u00e9gie business\", \"en\": \"Executive sponsorship, stated ambition, embedded in business strategy\" } },\r\n      { \"id\": \"Q2\",  \"axis\": \"A\", \"title\": { \"fr\": \"Qui d\u00e9cide des projets IA, et selon quelles r\u00e8gles ?\", \"en\": \"Who decides on AI projects, and under what rules?\" }, \"subtitle\": { \"fr\": \"R\u00f4les, comit\u00e9 IA, politiques d'IA responsable, conformit\u00e9 (RGPD\/LPD\/AI Act)\", \"en\": \"Roles, AI steering committee, responsible-AI policies, compliance (GDPR\/FADP\/AI Act)\" } },\r\n      { \"id\": \"Q3\",  \"axis\": \"B\", \"title\": { \"fr\": \"Vos donn\u00e9es m\u00e9tier sont-elles facilement accessibles ?\", \"en\": \"Is your business data easy to access and use?\" }, \"subtitle\": { \"fr\": \"Centralis\u00e9es, \u00e0 jour, int\u00e9gr\u00e9es entre syst\u00e8mes\", \"en\": \"Centralized, up to date, integrated across systems\" } },\r\n      { \"id\": \"Q4\",  \"axis\": \"B\", \"title\": { \"fr\": \"Ma\u00eetrisez-vous qualit\u00e9, tra\u00e7abilit\u00e9 et s\u00e9curit\u00e9 des donn\u00e9es ?\", \"en\": \"Do you control data quality, lineage and security?\" }, \"subtitle\": { \"fr\": \"Qualit\u00e9, ownership, s\u00e9curit\u00e9, protection des donn\u00e9es personnelles\", \"en\": \"Quality, ownership, security, personal-data protection\" } },\r\n      { \"id\": \"Q5\",  \"axis\": \"C\", \"title\": { \"fr\": \"Vos outils IA s'int\u00e8grent-ils \u00e0 vos syst\u00e8mes m\u00e9tier ?\", \"en\": \"Do your AI tools plug into your business systems?\" }, \"subtitle\": { \"fr\": \"Outils standardis\u00e9s, interconnect\u00e9s \u00e0 votre SI (existants ou pressentis)\", \"en\": \"Standardized tools plugged into your IT landscape (existing or planned)\" } },\r\n      { \"id\": \"Q6\",  \"axis\": \"C\", \"title\": { \"fr\": \"Vos choix techno couvrent-ils s\u00e9curit\u00e9, conformit\u00e9 et co\u00fbts ?\", \"en\": \"Do your tech choices cover security, compliance and cost?\" }, \"subtitle\": { \"fr\": \"Gouvernance des choix techno, FinOps, s\u00e9curit\u00e9 by design\", \"en\": \"Tech-choice governance, FinOps, security by design\" } },\r\n      { \"id\": \"Q7\",  \"axis\": \"D\", \"title\": { \"fr\": \"Disposez-vous des comp\u00e9tences IA et data n\u00e9cessaires ?\", \"en\": \"Do you have the AI and data skills you need?\" }, \"subtitle\": { \"fr\": \"En interne ou via partenaires : r\u00f4les d\u00e9finis, talents identifi\u00e9s\", \"en\": \"In-house or via partners: defined roles, identified talents\" } },\r\n      { \"id\": \"Q8\",  \"axis\": \"D\", \"title\": { \"fr\": \"Vos \u00e9quipes m\u00e9tier sont-elles \u00e0 l'aise avec l'IA ?\", \"en\": \"Are your business teams comfortable with AI?\" }, \"subtitle\": { \"fr\": \"Sensibilisation, formations en place, collaboration avec l'IT \/ data\", \"en\": \"Awareness, training in place, collaboration with IT \/ data\" } },\r\n      { \"id\": \"Q9\",  \"axis\": \"E\", \"title\": { \"fr\": \"Vos usages IA d\u00e9livrent-ils une valeur business mesur\u00e9e ?\", \"en\": \"Do your AI use cases deliver measured business value?\" }, \"subtitle\": { \"fr\": \"Cas d'usage align\u00e9s \u00e0 la valeur, ROI suivi\", \"en\": \"Value-aligned use cases, tracked ROI\" } },\r\n      { \"id\": \"Q10\", \"axis\": \"E\", \"title\": { \"fr\": \"Vos initiatives IA passent-elles du pilote \u00e0 la g\u00e9n\u00e9ralisation ?\", \"en\": \"Do your AI initiatives go from pilot to wide adoption?\" }, \"subtitle\": { \"fr\": \"Passage du PoC \u00e0 la production, scaling \u00e0 l'organisation\", \"en\": \"PoC-to-production, org-wide scaling\" } },\r\n      { \"id\": \"Q11\", \"axis\": \"E\", \"title\": { \"fr\": \"Capitalisez-vous sur les retours d'exp\u00e9rience IA ?\", \"en\": \"Do you capitalize on AI lessons learned?\" }, \"subtitle\": { \"fr\": \"REX document\u00e9s, patterns r\u00e9utilis\u00e9s (succ\u00e8s comme \u00e9checs)\", \"en\": \"Documented post-mortems, reusable patterns (wins and failures)\" } },\r\n      { \"id\": \"Q12\", \"axis\": \"F\", \"title\": { \"fr\": \"L'IA est-elle int\u00e9gr\u00e9e \u00e0 vos processus quotidiens ?\", \"en\": \"Is AI embedded in your daily processes?\" }, \"subtitle\": { \"fr\": \"Cycle de vie d\u00e9fini, IA dans les processus standards (pas un projet \u00e0 part)\", \"en\": \"Defined lifecycle, AI within standard processes (not a side project)\" } },\r\n      { \"id\": \"Q13\", \"axis\": \"F\", \"title\": { \"fr\": \"Accompagnez-vous le changement, \u00e9coutez-vous les utilisateurs ?\", \"en\": \"Do you support change and listen to users?\" }, \"subtitle\": { \"fr\": \"Conduite du changement, boucles de feedback\", \"en\": \"Change management, feedback loops\" } },\r\n      { \"id\": \"Q14\", \"axis\": \"F\", \"title\": { \"fr\": \"Surveillez-vous performance et risques de vos solutions IA ?\", \"en\": \"Do you monitor the performance and risks of your AI?\" }, \"subtitle\": { \"fr\": \"Monitoring, alerting, gestion des risques en production\", \"en\": \"Monitoring, alerting, in-production risk management\" } }\r\n    ],\r\n    \"levels\": [\r\n      { \"id\": \"initial\",  \"min\": 1.0, \"max\": 1.9, \"color\": \"#FFBC7D\", \"label\": { \"fr\": \"Initial\", \"en\": \"Initial\" }, \"tagline\": { \"fr\": \"Vous \u00eates au tout d\u00e9but du voyage IA.\", \"en\": \"You're at the very start of the AI journey.\" }, \"description\": { \"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.\", \"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.\" } },\r\n      { \"id\": \"emergent\", \"min\": 2.0, \"max\": 2.9, \"color\": \"#91B1FF\", \"label\": { \"fr\": \"\u00c9mergent\", \"en\": \"Emerging\" }, \"tagline\": { \"fr\": \"Les fondations se posent, l'impact reste limit\u00e9.\", \"en\": \"Foundations are forming, impact is still limited.\" }, \"description\": { \"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.\", \"en\": \"You've started, but pilots struggle to turn into business value. Time to structure and shift up a gear.\" } },\r\n      { \"id\": \"etabli\",   \"min\": 3.0, \"max\": 3.9, \"color\": \"#2C55FB\", \"label\": { \"fr\": \"\u00c9tabli\", \"en\": \"Established\" }, \"tagline\": { \"fr\": \"L'IA est int\u00e9gr\u00e9e \u00e0 certains processus cl\u00e9s.\", \"en\": \"AI is embedded in some key processes.\" }, \"description\": { \"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).\", \"en\": \"You've proven the value. The challenge: scale, capture lessons, and close blind spots (governance, data, change management).\" } },\r\n      { \"id\": \"deploye\",  \"min\": 4.0, \"max\": 4.4, \"color\": \"#1929DD\", \"label\": { \"fr\": \"D\u00e9ploy\u00e9 \u00e0 l'\u00e9chelle\", \"en\": \"Scaled\" }, \"tagline\": { \"fr\": \"Adoption large, valeur mesurable.\", \"en\": \"Broad adoption, measurable value.\" }, \"description\": { \"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.\", \"en\": \"Well done \u2014 you're among the mature organizations. The next gains come from optimization, innovation, and competitive differentiation.\" } },\r\n      { \"id\": \"leader\",   \"min\": 4.5, \"max\": 5.0, \"color\": \"#00096F\", \"label\": { \"fr\": \"Leader\", \"en\": \"Leader\" }, \"tagline\": { \"fr\": \"L'IA est un diff\u00e9renciateur strat\u00e9gique.\", \"en\": \"AI is a strategic differentiator.\" }, \"description\": { \"fr\": \"Vous \u00eates dans le top 5%. La priorit\u00e9 : maintenir l'avance, anticiper les ruptures et exporter votre savoir-faire.\", \"en\": \"You're in the top 5%. Priorities: hold the lead, anticipate disruptions, and export your know-how.\" } }\r\n    ],\r\n    \"service_recommendations\": {\r\n      \"initial\": [\r\n        { \"url\": \"https:\/\/prismia.ch\/formations-ia\/\", \"priority\": 1, \"title\": { \"fr\": \"Formation IA cibl\u00e9e\", \"en\": \"Targeted AI training\" }, \"desc\": { \"fr\": \"Donnez \u00e0 vos \u00e9quipes une connaissance commune de l'IA et la ma\u00eetrise des outils du quotidien (Microsoft Copilot, ChatGPT, Claude, Gemini, etc.).\", \"en\": \"Give your teams shared AI knowledge and mastery of their daily tools (Microsoft Copilot, ChatGPT, Claude, Gemini, etc.).\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/contact\/\", \"priority\": 2, \"title\": { \"fr\": \"Atelier de cadrage IA\", \"en\": \"AI framing workshop\" }, \"desc\": { \"fr\": \"Une demi-journ\u00e9e avec un expert PrismIA pour d\u00e9finir vos 3 premiers cas d'usage prioritaires.\", \"en\": \"Half a day with a PrismIA expert to define your first 3 priority use cases.\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/audit-conseil\/\", \"priority\": 3, \"title\": { \"fr\": \"Audit Journey to AI\", \"en\": \"Journey to AI audit\" }, \"desc\": { \"fr\": \"Quand vous serez pr\u00eat : un audit complet pour construire votre feuille de route IA.\", \"en\": \"When you're ready: a complete audit to build your AI roadmap.\" } }\r\n      ],\r\n      \"emergent\": [\r\n        { \"url\": \"https:\/\/prismia.ch\/audit-conseil\/\", \"priority\": 1, \"title\": { \"fr\": \"Audit Journey to AI\", \"en\": \"Journey to AI audit\" }, \"desc\": { \"fr\": \"Notre offre phare : 4 \u00e0 6 semaines, 8 entretiens, feuille de route prioris\u00e9e. Le bon levier \u00e0 votre stade.\", \"en\": \"Our flagship offering: 4\u20136 weeks, 8 interviews, prioritized roadmap. The right lever at your stage.\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/formations-ia\/\", \"priority\": 2, \"title\": { \"fr\": \"Formation IA cibl\u00e9e\", \"en\": \"Targeted AI training\" }, \"desc\": { \"fr\": \"\u00c9quipez vos \u00e9quipes pour passer du PoC \u00e0 l'usage quotidien : connaissance commune de l'IA + ma\u00eetrise des outils (Copilot, ChatGPT, Claude, Gemini).\", \"en\": \"Equip your teams to move from PoC to daily use: shared AI knowledge + tool mastery (Copilot, ChatGPT, Claude, Gemini).\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/contact\/\", \"priority\": 3, \"title\": { \"fr\": \"Coaching gouvernance IA\", \"en\": \"AI governance coaching\" }, \"desc\": { \"fr\": \"6 mois pour structurer votre comit\u00e9 IA, vos politiques et votre pilotage portefeuille.\", \"en\": \"6 months to structure your AI steering committee, policies and portfolio management.\" } }\r\n      ],\r\n      \"etabli\": [\r\n        { \"url\": \"https:\/\/prismia.ch\/audit-conseil\/\", \"priority\": 1, \"title\": { \"fr\": \"Deep Dive cas d'usage\", \"en\": \"Use-case Deep Dive\" }, \"desc\": { \"fr\": \"Un cas d'usage majeur approfondi : business case, archi, ROI, plan de d\u00e9ploiement.\", \"en\": \"One key use case explored in depth: business case, architecture, ROI, rollout plan.\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/formations-ia\/\", \"priority\": 2, \"title\": { \"fr\": \"Formation IA cibl\u00e9e\", \"en\": \"Targeted AI training\" }, \"desc\": { \"fr\": \"Diffusez les bonnes pratiques au-del\u00e0 des early adopters : mont\u00e9e en comp\u00e9tence sur les outils du quotidien (Copilot, ChatGPT, Claude, Gemini).\", \"en\": \"Spread best practices beyond early adopters: skill-up on daily tools (Copilot, ChatGPT, Claude, Gemini).\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/contact\/\", \"priority\": 3, \"title\": { \"fr\": \"Coaching gouvernance cibl\u00e9\", \"en\": \"Targeted governance coaching\" }, \"desc\": { \"fr\": \"Combler les angles morts sp\u00e9cifiques (data, change, MLOps) identifi\u00e9s dans votre score.\", \"en\": \"Close the specific blind spots (data, change, MLOps) your score highlights.\" } }\r\n      ],\r\n      \"deploye\": [\r\n        { \"url\": \"https:\/\/prismia.ch\/integration\/\", \"priority\": 1, \"title\": { \"fr\": \"Optimisation & scaling\", \"en\": \"Optimization & scaling\" }, \"desc\": { \"fr\": \"Industrialisation MLOps, monitoring, r\u00e9duction des co\u00fbts d'inf\u00e9rence.\", \"en\": \"MLOps industrialization, monitoring, inference-cost optimization.\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/formations-ia\/\", \"priority\": 2, \"title\": { \"fr\": \"Formation IA avanc\u00e9e\", \"en\": \"Advanced AI training\" }, \"desc\": { \"fr\": \"Allez plus loin sur les outils et les usages m\u00e9tier : agents, RAG, IA g\u00e9n\u00e9rative avanc\u00e9e (Copilot, ChatGPT, Claude, Gemini).\", \"en\": \"Go deeper on tools and business use cases: agents, RAG, advanced GenAI (Copilot, ChatGPT, Claude, Gemini).\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/contact\/\", \"priority\": 3, \"title\": { \"fr\": \"Sparring strat\u00e9gique\", \"en\": \"Strategic sparring\" }, \"desc\": { \"fr\": \"Un bin\u00f4me PrismIA pour challenger votre roadmap IA tous les trimestres.\", \"en\": \"A PrismIA duo to challenge your AI roadmap every quarter.\" } }\r\n      ],\r\n      \"leader\": [\r\n        { \"url\": \"https:\/\/prismia.ch\/contact\/\", \"priority\": 1, \"title\": { \"fr\": \"Partenariat strat\u00e9gique\", \"en\": \"Strategic partnership\" }, \"desc\": { \"fr\": \"Sparring board-level, veille techno, accompagnement sur les ruptures IA.\", \"en\": \"Board-level sparring, tech intelligence, support on AI disruptions.\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/formations-ia\/\", \"priority\": 2, \"title\": { \"fr\": \"Formation IA avanc\u00e9e\", \"en\": \"Advanced AI training\" }, \"desc\": { \"fr\": \"Programmes sur-mesure : agents, s\u00e9curit\u00e9 IA, gouvernance avanc\u00e9e, ma\u00eetrise des outils du quotidien (Copilot, ChatGPT, Claude, Gemini).\", \"en\": \"Tailored programs: agents, AI security, advanced governance, daily-tools mastery (Copilot, ChatGPT, Claude, Gemini).\" } },\r\n        { \"url\": \"https:\/\/prismia.ch\/integration\/\", \"priority\": 3, \"title\": { \"fr\": \"Innovation & R&D IA\", \"en\": \"AI innovation & R&D\" }, \"desc\": { \"fr\": \"Co-construction d'offres IA diff\u00e9renciantes pour votre march\u00e9.\", \"en\": \"Co-building differentiating AI offerings for your market.\" } }\r\n      ]\r\n    }\r\n  };\r\n\r\n  \/\/ ============================================================\r\n  \/\/ STATE + i18n + APP LOGIC (adapted from public\/app.js)\r\n  \/\/ ============================================================\r\n  const $app      = document.getElementById(\"pia-mat-app-inner\");\r\n  const $progress = document.getElementById(\"pia-mat-progress\");\r\n\r\n  const SUPPORTED_LANGS = [\"fr\", \"en\"];\r\n  const LANG_KEY = \"prismia.maturity.lang\";\r\n\r\n  function detectInitialLang() {\r\n    \/\/ 1. WordPress page language \u2014 <html lang=\"fr-FR\"> \/ \"en\" \/ \"en-US\" etc.\r\n    \/\/    WPML \/ Polylang \/ TranslatePress all set this per page. Wins by default\r\n    \/\/    so a user landing on \/fr\/... sees French even after a prior \/en toggle.\r\n    const htmlLang = (document.documentElement.lang || \"\").toLowerCase().slice(0, 2);\r\n    if (SUPPORTED_LANGS.includes(htmlLang)) return htmlLang;\r\n\r\n    \/\/ 2. User's prior toggle (localStorage) \u2014 fallback when WP lang isn't usable\r\n    try {\r\n      const saved = localStorage.getItem(LANG_KEY);\r\n      if (saved && SUPPORTED_LANGS.includes(saved)) return saved;\r\n    } catch (_) { \/* localStorage blocked \u2014 fall through *\/ }\r\n\r\n    \/\/ 3. Browser preference\r\n    const nav = (navigator.language || \"fr\").toLowerCase();\r\n    return nav.startsWith(\"en\") ? \"en\" : \"fr\";\r\n  }\r\n\r\n  const state = {\r\n    step: 0,\r\n    lang: detectInitialLang(),\r\n    content: null,\r\n    profile: { role: null, size: null, sector: null, name: \"\", company: \"\" },\r\n    answers: {},\r\n    scores: null,\r\n    level: null,\r\n    email: \"\",\r\n    consent: { terms: false, newsletter: false, events: false },\r\n    submissionId: null\r\n  };\r\n\r\n  function t(v) {\r\n    if (v == null) return \"\";\r\n    if (typeof v === \"string\") return v;\r\n    if (typeof v === \"object\" && (v.fr !== undefined || v.en !== undefined)) {\r\n      return v[state.lang] ?? v.fr ?? v.en ?? \"\";\r\n    }\r\n    return String(v);\r\n  }\r\n  function tUI(key, vars = {}) {\r\n    const dict = state.content?.ui?.[state.lang] ?? state.content?.ui?.fr ?? {};\r\n    const txt = dict[key] ?? key;\r\n    return txt.replace(\/\\{(\\w+)\\}\/g, (_, k) => vars[k] ?? \"\");\r\n  }\r\n  function applyStaticI18n() {\r\n    document.querySelectorAll(\"#pia-mat-app [data-i18n]\").forEach(el => {\r\n      const k = el.getAttribute(\"data-i18n\");\r\n      el.innerHTML = tUI(k);\r\n    });\r\n  }\r\n  function setLang(newLang) {\r\n    if (!SUPPORTED_LANGS.includes(newLang)) return;\r\n    if (newLang === state.lang) return;\r\n    state.lang = newLang;\r\n    try { localStorage.setItem(LANG_KEY, newLang); } catch (_) {}\r\n    applyStaticI18n();\r\n    render();\r\n  }\r\n\r\n  function totalSteps() {\r\n    if (!state.content) return 1;\r\n    const p = state.content.profile_questions.length;\r\n    const q = state.content.maturity_questions.length;\r\n    return 1 + p + q + 1 + 1;\r\n  }\r\n  function currentStepKind() {\r\n    if (!state.content) return \"loading\";\r\n    const p = state.content.profile_questions.length;\r\n    const q = state.content.maturity_questions.length;\r\n    if (state.step === 0) return \"intro\";\r\n    if (state.step <= p) return \"profile\";\r\n    if (state.step <= p + q) return \"maturity\";\r\n    if (state.step === p + q + 1) return \"email\";\r\n    return \"result\";\r\n  }\r\n  let advancing = false;\r\n  function go(delta) {\r\n    const next = state.step + delta;\r\n    if (next < 0) return;\r\n    if (next > totalSteps() - 1) return;\r\n    state.step = next;\r\n    render();\r\n  }\r\n  function answerAndAdvance(setter) {\r\n    if (advancing) return;\r\n    advancing = true;\r\n    setter();\r\n    setTimeout(() => { advancing = false; go(1); }, 180);\r\n  }\r\n  function updateProgress() {\r\n    const total = totalSteps() - 1;\r\n    const pct = total > 0 ? (state.step \/ total) * 100 : 0;\r\n    $progress.style.width = pct + \"%\";\r\n  }\r\n\r\n  function computeScores() {\r\n    const { axes, maturity_questions } = state.content;\r\n    const perAxis = {};\r\n    axes.forEach(a => (perAxis[a.id] = { sum: 0, count: 0 }));\r\n    for (const q of maturity_questions) {\r\n      const v = state.answers[q.id];\r\n      if (v === undefined || v === \"na\") continue;\r\n      if (typeof v !== \"number\") continue;\r\n      perAxis[q.axis].sum += v;\r\n      perAxis[q.axis].count += 1;\r\n    }\r\n    const scoresByAxis = {};\r\n    axes.forEach(a => {\r\n      const x = perAxis[a.id];\r\n      scoresByAxis[a.id] = x.count > 0 ? +(x.sum \/ x.count).toFixed(2) : null;\r\n    });\r\n    const valid = Object.values(scoresByAxis).filter(v => v !== null);\r\n    const global = valid.length\r\n      ? +(valid.reduce((s, v) => s + v, 0) \/ valid.length).toFixed(2)\r\n      : 0;\r\n    const level = state.content.levels.find(l => global >= l.min && global <= l.max + 0.0001)\r\n      || state.content.levels[0];\r\n    state.scores = { byAxis: scoresByAxis, global };\r\n    state.level = level;\r\n  }\r\n\r\n  let lastRenderedStep = -1;\r\n  function render() {\r\n    updateProgress();\r\n    const direction =\r\n      lastRenderedStep === -1 ? null :\r\n      state.step > lastRenderedStep ? \"forward\" :\r\n      state.step < lastRenderedStep ? \"back\" : null;\r\n    lastRenderedStep = state.step;\r\n    const kind = currentStepKind();\r\n    if (kind === \"loading\") renderLoading();\r\n    else if (kind === \"intro\") renderIntro();\r\n    else if (kind === \"profile\") renderProfile();\r\n    else if (kind === \"maturity\") renderMaturity();\r\n    else if (kind === \"email\") renderEmail();\r\n    else if (kind === \"result\") renderResult();\r\n    if (direction) {\r\n      const scr = $app.querySelector(\".screen\");\r\n      if (scr) {\r\n        scr.classList.add(\"has-direction\");\r\n        const wrap = document.createElement(\"div\");\r\n        wrap.className = \"screen-content\";\r\n        const offset = direction === \"forward\" ? 24 : -24;\r\n        while (scr.firstChild) wrap.appendChild(scr.firstChild);\r\n        scr.appendChild(wrap);\r\n        if (typeof wrap.animate === \"function\") {\r\n          \/\/ Two animations so we can give each property its own easing.\r\n          \/\/ - Opacity: linear so the fade is perceptible across the full duration.\r\n          \/\/   (An aggressive ease-out collapses 80%+ of the fade into the first 70ms,\r\n          \/\/   which reads as \"no fade\" alongside a still-running slide.)\r\n          \/\/ - Transform: ease-out so the slide decelerates into place.\r\n          wrap.animate(\r\n            [{ opacity: 0 }, { opacity: 1 }],\r\n            { duration: 450, easing: \"linear\", fill: \"both\" }\r\n          );\r\n          wrap.animate(\r\n            [\r\n              { transform: \"translateX(\" + offset + \"px)\" },\r\n              { transform: \"translateX(0)\" }\r\n            ],\r\n            { duration: 450, easing: \"cubic-bezier(.22,.84,.32,1)\", fill: \"both\" }\r\n          );\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ Language toggle removed \u2014 WP language switcher in the nav drives the\r\n  \/\/ page lang, and detectInitialLang() reads <html lang>. Keeping the function\r\n  \/\/ as a no-op so the call sites in each render function still resolve.\r\n  function langToggleHTML() { return \"\"; }\r\n  function renderLoading() {\r\n    $app.innerHTML = `<div class=\"screen\"><p>${tUI(\"loading\")}<\/p><\/div>`;\r\n  }\r\n  function backButton() {\r\n    return `\r\n      <button class=\"btn-back\" id=\"btn-back\" type=\"button\" aria-label=\"${tUI(\"back\")}\">\r\n        <span class=\"btn-back-icon\" aria-hidden=\"true\">\r\n          <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>\r\n        <\/span>\r\n        <span>${tUI(\"back\")}<\/span>\r\n      <\/button>\r\n    `;\r\n  }\r\n\r\n  const DISPOSABLE_DOMAINS = new Set([\r\n    \"mailinator.com\",\"yopmail.com\",\"yopmail.fr\",\"tempmail.com\",\"temp-mail.org\",\"temp-mail.io\",\r\n    \"guerrillamail.com\",\"guerrillamail.net\",\"guerrillamail.org\",\"guerrillamailblock.com\",\r\n    \"10minutemail.com\",\"10minutemail.net\",\"20minutemail.com\",\"30minutemail.com\",\r\n    \"throwawaymail.com\",\"trashmail.com\",\"trashmail.net\",\"trashmail.de\",\"trashmail.io\",\r\n    \"dispostable.com\",\"getnada.com\",\"nada.email\",\"emailondeck.com\",\"fakeinbox.com\",\r\n    \"maildrop.cc\",\"mailnesia.com\",\"sharklasers.com\",\"spambox.us\",\"spam4.me\",\r\n    \"mohmal.com\",\"mailcatch.com\",\"mintemail.com\",\"mytrashmail.com\",\r\n    \"tempr.email\",\"mvrht.com\",\"grr.la\",\"tempinbox.com\",\"disposablemail.com\",\r\n    \"anonbox.net\",\"jetable.org\",\"jetable.fr.nf\",\"spambog.com\"\r\n  ]);\r\n  function isDisposableEmail(email) {\r\n    const m = email.toLowerCase().match(\/@([^@\\s]+)$\/);\r\n    if (!m) return false;\r\n    return DISPOSABLE_DOMAINS.has(m[1]);\r\n  }\r\n\r\n  function renderIntro() {\r\n    $app.innerHTML = `\r\n      <section class=\"screen\">\r\n        ${langToggleHTML()}\r\n        <p class=\"eyebrow\">${tUI(\"intro_eyebrow\")}<\/p>\r\n        <h1>${tUI(\"intro_title\")}<\/h1>\r\n        <p class=\"subtitle\">${tUI(\"intro_subtitle\")}<\/p>\r\n        <div class=\"intro-perks\">\r\n          <div class=\"perk\"><div class=\"perk-emoji\">\u23f1\ufe0f<\/div><div class=\"perk-value\">${tUI(\"perk1_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk1_label\")}<\/div><\/div>\r\n          <div class=\"perk\"><div class=\"perk-emoji\">\ud83d\udcca<\/div><div class=\"perk-value\">${tUI(\"perk2_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk2_label\")}<\/div><\/div>\r\n          <div class=\"perk\"><div class=\"perk-emoji\">\ud83c\udfaf<\/div><div class=\"perk-value\">${tUI(\"perk3_value\")}<\/div><div class=\"perk-label\">${tUI(\"perk3_label\")}<\/div><\/div>\r\n        <\/div>\r\n        <div class=\"cta-row\">\r\n          <button class=\"btn btn-default\" id=\"btn-start\">\r\n            ${tUI(\"btn_start\")}\r\n            <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" 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>\r\n          <\/button>\r\n          <button class=\"btn btn-ghost\" id=\"btn-audio\">\r\n            <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" 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>\r\n            ${tUI(\"btn_audio_intro\")}\r\n          <\/button>\r\n        <\/div>\r\n        <p class=\"intro-legal\">\r\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>\r\n          <span>${tUI(\"intro_legal\")}<\/span>\r\n        <\/p>\r\n      <\/section>\r\n    `;\r\n    $app.querySelector(\"#btn-start\").addEventListener(\"click\", () => go(1));\r\n    $app.querySelector(\"#btn-audio\").addEventListener(\"click\", openAudioModal);\r\n  }\r\n\r\n  function renderProfile() {\r\n    const idx = state.step - 1;\r\n    const q = state.content.profile_questions[idx];\r\n    const selected = state.profile[q.id];\r\n    const total = state.content.profile_questions.length;\r\n    $app.innerHTML = `\r\n      <section class=\"screen\">\r\n        ${langToggleHTML()}\r\n        ${backButton()}\r\n        <p class=\"eyebrow\">${tUI(\"profile_eyebrow\", { idx: idx + 1, total })}<\/p>\r\n        <h2>${t(q.title)}<\/h2>\r\n        <p class=\"subtitle\">${t(q.subtitle)}<\/p>\r\n        <div class=\"options\" role=\"listbox\">\r\n          ${q.options.map(opt => `\r\n            <button type=\"button\" class=\"option ${selected === opt.value ? \"selected\" : \"\"}\" data-value=\"${opt.value}\">\r\n              <span class=\"opt-emoji\" aria-hidden=\"true\">${opt.emoji || \"\u2022\"}<\/span>\r\n              <span class=\"opt-label\">${t(opt.label)}<\/span>\r\n            <\/button>\r\n          `).join(\"\")}\r\n        <\/div>\r\n        ${q.skippable ? `<div class=\"cta-row\" style=\"margin-top:20px;\"><button class=\"btn btn-ghost\" id=\"btn-skip\">${tUI(\"skip\")}<\/button><\/div>` : \"\"}\r\n      <\/section>\r\n    `;\r\n    $app.querySelectorAll(\".option\").forEach(btn => {\r\n      btn.addEventListener(\"click\", () => {\r\n        answerAndAdvance(() => { state.profile[q.id] = btn.dataset.value; });\r\n      });\r\n    });\r\n    $app.querySelector(\"#btn-back\").addEventListener(\"click\", () => go(-1));\r\n    $app.querySelector(\"#btn-skip\")?.addEventListener(\"click\", () => go(1));\r\n  }\r\n\r\n  function renderMaturity() {\r\n    const pCount = state.content.profile_questions.length;\r\n    const idx = state.step - 1 - pCount;\r\n    const q = state.content.maturity_questions[idx];\r\n    const axis = state.content.axes.find(a => a.id === q.axis);\r\n    const total = state.content.maturity_questions.length;\r\n    const current = state.answers[q.id];\r\n    $app.innerHTML = `\r\n      <section class=\"screen\">\r\n        ${langToggleHTML()}\r\n        ${backButton()}\r\n        <p class=\"eyebrow\" style=\"color:${axis.color}\">${tUI(\"maturity_eyebrow\", { axis: t(axis.name), idx: idx + 1, total })}<\/p>\r\n        <h2>${t(q.title)}<\/h2>\r\n        <p class=\"subtitle\">${t(q.subtitle)}<\/p>\r\n        <div class=\"options\" role=\"listbox\">\r\n          ${state.content.scale.labels.map(l => `\r\n            <button type=\"button\" class=\"option ${current === l.score ? \"selected\" : \"\"}\" data-value=\"${l.score}\">\r\n              <span class=\"opt-key\">${l.score}<\/span>\r\n              <span class=\"opt-label\">${t(l.short)}<\/span>\r\n              <span class=\"opt-emoji\" aria-hidden=\"true\">${l.emoji}<\/span>\r\n            <\/button>\r\n          `).join(\"\")}\r\n          <button type=\"button\" class=\"option na ${current === \"na\" ? \"selected\" : \"\"}\" data-value=\"na\">\r\n            <span class=\"opt-emoji\" aria-hidden=\"true\">${state.content.scale.na.emoji}<\/span>\r\n            <span class=\"opt-label\">${t(state.content.scale.na.short)}<\/span>\r\n          <\/button>\r\n        <\/div>\r\n      <\/section>\r\n    `;\r\n    $app.querySelectorAll(\".option\").forEach(btn => {\r\n      btn.addEventListener(\"click\", () => {\r\n        answerAndAdvance(() => {\r\n          const v = btn.dataset.value;\r\n          state.answers[q.id] = v === \"na\" ? \"na\" : Number(v);\r\n        });\r\n      });\r\n    });\r\n    $app.querySelector(\"#btn-back\").addEventListener(\"click\", () => go(-1));\r\n  }\r\n\r\n  function renderEmail() {\r\n    computeScores();\r\n    $app.innerHTML = `\r\n      <section class=\"screen\">\r\n        ${langToggleHTML()}\r\n        ${backButton()}\r\n        <p class=\"eyebrow\">${tUI(\"email_eyebrow\")}<\/p>\r\n        <h2>${tUI(\"email_title\")}<\/h2>\r\n        <p class=\"subtitle\">${tUI(\"email_subtitle\")}<\/p>\r\n        <form id=\"email-form\" novalidate>\r\n          <label class=\"field\">\r\n            <span>${tUI(\"email_field\")}<\/span>\r\n            <input type=\"email\" id=\"f-email\" required placeholder=\"${tUI(\"email_placeholder\")}\" autocomplete=\"email\" value=\"${escapeHtml(state.email)}\" \/>\r\n          <\/label>\r\n          <div class=\"field\">\r\n            <button type=\"button\" class=\"btn btn-ghost\" id=\"toggle-optional\" style=\"font-size:13px;padding:8px 14px;\">${tUI(\"toggle_optional\")}<\/button>\r\n          <\/div>\r\n          <div id=\"optional-fields\" style=\"display:none;\">\r\n            <label class=\"field\"><span>${tUI(\"name_field\")}<\/span><input type=\"text\" id=\"f-name\" autocomplete=\"name\" value=\"${escapeHtml(state.profile.name || \"\")}\" \/><\/label>\r\n            <label class=\"field\"><span>${tUI(\"company_field\")}<\/span><input type=\"text\" id=\"f-company\" autocomplete=\"organization\" value=\"${escapeHtml(state.profile.company || \"\")}\" \/><\/label>\r\n          <\/div>\r\n          <div class=\"checkboxes\">\r\n            <label class=\"cb required\">\r\n              <input type=\"checkbox\" id=\"cb-terms\" ${state.consent.terms ? \"checked\" : \"\"} \/>\r\n              <span class=\"cb-label\">${tUI(\"consent_terms_label\")}<span class=\"cb-sub\">${tUI(\"consent_terms_sub\")}<\/span><\/span>\r\n            <\/label>\r\n            <label class=\"cb\">\r\n              <input type=\"checkbox\" id=\"cb-newsletter\" ${state.consent.newsletter ? \"checked\" : \"\"} \/>\r\n              <span class=\"cb-label\">${tUI(\"consent_newsletter_label\")}<span class=\"cb-sub\">${tUI(\"consent_newsletter_sub\")}<\/span><\/span>\r\n            <\/label>\r\n            <label class=\"cb\">\r\n              <input type=\"checkbox\" id=\"cb-events\" ${state.consent.events ? \"checked\" : \"\"} \/>\r\n              <span class=\"cb-label\">${tUI(\"consent_events_label\")}<span class=\"cb-sub\">${tUI(\"consent_events_sub\")}<\/span><\/span>\r\n            <\/label>\r\n          <\/div>\r\n          <div class=\"cta-row\" style=\"margin-top:24px;\">\r\n            <button class=\"btn btn-default\" id=\"btn-submit\" type=\"submit\" disabled>\r\n              ${tUI(\"btn_view_score\")}\r\n              <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" 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>\r\n            <\/button>\r\n          <\/div>\r\n          <p class=\"legal\" id=\"form-error\" style=\"color:var(--destructive);display:none;\"><\/p>\r\n        <\/form>\r\n      <\/section>\r\n    `;\r\n    $app.querySelector(\"#toggle-optional\").addEventListener(\"click\", () => {\r\n      const d = $app.querySelector(\"#optional-fields\");\r\n      d.style.display = d.style.display === \"none\" ? \"block\" : \"none\";\r\n    });\r\n    const $email = $app.querySelector(\"#f-email\");\r\n    const $terms = $app.querySelector(\"#cb-terms\");\r\n    const $submit = $app.querySelector(\"#btn-submit\");\r\n    const refresh = () => {\r\n      const ok = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test($email.value.trim()) && $terms.checked;\r\n      $submit.disabled = !ok;\r\n    };\r\n    $email.addEventListener(\"input\", refresh);\r\n    $terms.addEventListener(\"change\", refresh);\r\n    refresh();\r\n\r\n    function showErr(key) {\r\n      const errBox = $app.querySelector(\"#form-error\");\r\n      errBox.innerHTML = tUI(key);\r\n      errBox.style.display = \"block\";\r\n    }\r\n\r\n    $app.querySelector(\"#email-form\").addEventListener(\"submit\", async (e) => {\r\n      e.preventDefault();\r\n      const errBox = $app.querySelector(\"#form-error\");\r\n      errBox.style.display = \"none\";\r\n      const emailRaw = $email.value.trim();\r\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[a-z]{2,}$\/i.test(emailRaw)) { showErr(\"email_invalid\"); return; }\r\n      if (isDisposableEmail(emailRaw)) { showErr(\"email_disposable\"); return; }\r\n\r\n      $submit.disabled = true;\r\n      state.email = emailRaw;\r\n      state.profile.name = $app.querySelector(\"#f-name\")?.value.trim() || \"\";\r\n      state.profile.company = $app.querySelector(\"#f-company\")?.value.trim() || \"\";\r\n      state.consent.terms = $terms.checked;\r\n      state.consent.newsletter = $app.querySelector(\"#cb-newsletter\").checked;\r\n      state.consent.events = $app.querySelector(\"#cb-events\").checked;\r\n\r\n      try {\r\n        const res = await fetch(POWER_AUTOMATE_SUBMIT_URL, {\r\n          method: \"POST\",\r\n          headers: { \"Content-Type\": \"application\/json\" },\r\n          body: JSON.stringify({\r\n            email: state.email,\r\n            profile: state.profile,\r\n            answers: state.answers,\r\n            scores: state.scores,\r\n            level: state.level?.id,\r\n            consent: state.consent,\r\n            meta: { lang: state.lang, source: \"maturity-form\", ts: new Date().toISOString() }\r\n          })\r\n        });\r\n        if (!res.ok) throw new Error(\"submit_failed\");\r\n        state.submissionId = \"submitted\";\r\n        go(1);\r\n      } catch (err) {\r\n        errBox.textContent = tUI(\"submit_error\");\r\n        errBox.style.display = \"block\";\r\n        $submit.disabled = false;\r\n      }\r\n    });\r\n\r\n    $app.querySelector(\"#btn-back\").addEventListener(\"click\", () => go(-1));\r\n  }\r\n\r\n  function identityLine() {\r\n    const name = (state.profile.name || \"\").trim();\r\n    const company = (state.profile.company || \"\").trim();\r\n    if (name && company) return `${escapeHtml(name)} \u00b7 ${escapeHtml(company)}`;\r\n    if (name) return escapeHtml(name);\r\n    if (company) return escapeHtml(company);\r\n    return \"\";\r\n  }\r\n\r\n  function renderResult() {\r\n    if (!state.email || !state.consent.terms || !state.submissionId) {\r\n      state.step = state.content.profile_questions.length + state.content.maturity_questions.length + 1;\r\n      return render();\r\n    }\r\n    if (!state.scores) computeScores();\r\n    const { scores, level } = state;\r\n    const { axes, service_recommendations } = state.content;\r\n    const recos = service_recommendations[level.id] || [];\r\n    $app.innerHTML = `\r\n      <section class=\"screen screen-wide\" id=\"result-screen\">\r\n        ${langToggleHTML()}\r\n        <div class=\"result-head\" data-print-only>\r\n          <div class=\"print-meta-row\">\r\n            <img decoding=\"async\" src=\"${LOGO_BLUE_URL}\" alt=\"PrismIA\" class=\"print-logo\" \/>\r\n            <span class=\"print-date\">${escapeHtml(new Date().toLocaleDateString(state.lang === \"en\" ? \"en-GB\" : \"fr-CH\", { year: \"numeric\", month: \"long\", day: \"numeric\" }))}<\/span>\r\n          <\/div>\r\n          <div class=\"print-titles\">\r\n            <h1 class=\"print-title\">${tUI(\"print_header_title\")}<\/h1>\r\n            <p class=\"print-identity\">${identityLine() || \"&nbsp;\"}<\/p>\r\n          <\/div>\r\n          <div class=\"print-divider\"><\/div>\r\n        <\/div>\r\n        <p class=\"eyebrow no-print\">${tUI(\"result_eyebrow\")}<\/p>\r\n        <div class=\"result-grid\">\r\n          <div class=\"col-left\">\r\n            ${renderScoreRing(scores.global)}\r\n            <div class=\"level-row\">\r\n              <span class=\"score-level\" style=\"--lvl-color:${level.color}\">${t(level.label)}<\/span>\r\n              <button type=\"button\" class=\"level-help\" id=\"open-levels\" aria-label=\"${tUI(\"understand_levels\")}\">\r\n                <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" 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>\r\n                <span>${tUI(\"understand_levels\")}<\/span>\r\n              <\/button>\r\n            <\/div>\r\n            <p class=\"score-tagline\">${t(level.tagline)}<\/p>\r\n            <p class=\"score-description\">${t(level.description)}<\/p>\r\n            <div class=\"radar-wrap\">\r\n              ${renderRadar(axes, scores.byAxis)}\r\n              <div class=\"axis-list\">\r\n                ${axes.map(a => {\r\n                  const s = scores.byAxis[a.id];\r\n                  return `\r\n                    <div class=\"axis-row\">\r\n                      <span class=\"axis-dot\" style=\"background:${a.color}\"><\/span>\r\n                      <span class=\"axis-name\">${t(a.name)}<\/span>\r\n                      <span class=\"axis-score\">${s === null ? \"\u2014\" : tUI(\"result_axis_score\", { score: s.toFixed(1) })}<\/span>\r\n                    <\/div>\r\n                  `;\r\n                }).join(\"\")}\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"col-right\">\r\n            <div class=\"recos\">\r\n              <h3>${tUI(\"recos_title\")}<\/h3>\r\n              ${recos.map((r, i) => `\r\n                <a class=\"reco ${i === 0 ? \"primary\" : \"\"}\" href=\"${r.url}\" target=\"_blank\" rel=\"noopener\">\r\n                  <div class=\"reco-title\"><span>${i === 0 ? \"\ud83c\udfaf \" : \"\"}${t(r.title)}<\/span><span class=\"reco-arrow\">\u2192<\/span><\/div>\r\n                  <div class=\"reco-desc\">${t(r.desc)}<\/div>\r\n                <\/a>\r\n              `).join(\"\")}\r\n            <\/div>\r\n            <div class=\"cta-final no-print\">\r\n              <h3>${tUI(\"cta_final_title\")}<\/h3>\r\n              <p>${tUI(\"cta_final_desc\")}<\/p>\r\n              <a class=\"btn\" href=\"https:\/\/prismia.ch\/contact\/\" target=\"_blank\" rel=\"noopener\">\r\n                ${tUI(\"cta_final_btn\")}\r\n                <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\"><path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" d=\"M5 12h14m0 0-6-6m6 6-6 6\"\/><\/svg>\r\n              <\/a>\r\n            <\/div>\r\n            <button type=\"button\" class=\"btn btn-ghost btn-pdf no-print\" id=\"btn-pdf\">\r\n              <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" 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>\r\n              ${tUI(\"download_pdf\")}\r\n            <\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"legal result-legal no-print\">\r\n          ${tUI(\"result_legal\", { email: escapeHtml(state.email) })}\r\n        <\/p>\r\n        <footer class=\"print-footer\" data-print-only>\r\n          <div class=\"print-footer-divider\"><\/div>\r\n          <div class=\"print-footer-row\">\r\n            <div class=\"print-footer-brand\">\r\n              <img decoding=\"async\" src=\"${MARK_BLUE_URL}\" class=\"print-footer-mark\" alt=\"\" \/>\r\n              <div class=\"print-footer-info\">\r\n                <strong>PrismIA S\u00e0rl<\/strong>\r\n                <span class=\"print-footer-addr\">Ch. Frank-Thomas 32 \u00b7 1208 Gen\u00e8ve<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <a class=\"print-footer-contact\" href=\"mailto:care@prismia.ch\">\r\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>\r\n              care@prismia.ch\r\n            <\/a>\r\n          <\/div>\r\n          <p class=\"print-footer-meta\">${tUI(\"print_legal_meta\")}<\/p>\r\n        <\/footer>\r\n      <\/section>\r\n    `;\r\n    $app.querySelector(\"#open-levels\").addEventListener(\"click\", openLevelsModal);\r\n    $app.querySelector(\"#btn-pdf\").addEventListener(\"click\", () => window.print());\r\n  }\r\n\r\n  function openLevelsModal() {\r\n    const modal = document.getElementById(\"pia-mat-levels-modal\");\r\n    const list  = document.getElementById(\"pia-mat-levels-list\");\r\n    const activeId = state.level?.id;\r\n    list.innerHTML = state.content.levels.map(lv => {\r\n      const isActive = lv.id === activeId;\r\n      const range = tUI(\"level_range\", { min: lv.min.toFixed(1), max: lv.max.toFixed(1) });\r\n      return `\r\n        <div class=\"level-card ${isActive ? \"active\" : \"\"}\" style=\"--lvl-color:${lv.color}\">\r\n          <div class=\"level-card-head\">\r\n            <span class=\"level-dot\" aria-hidden=\"true\"><\/span>\r\n            <div class=\"level-card-titles\">\r\n              <span class=\"level-card-label\">${t(lv.label)}<\/span>\r\n              <span class=\"level-card-range\">${range}<\/span>\r\n            <\/div>\r\n            ${isActive ? `<span class=\"level-badge-active\">${tUI(\"your_level_badge\")}<\/span>` : \"\"}\r\n          <\/div>\r\n          <p class=\"level-card-tagline\">${t(lv.tagline)}<\/p>\r\n          <p class=\"level-card-desc\">${t(lv.description)}<\/p>\r\n        <\/div>\r\n      `;\r\n    }).join(\"\");\r\n    if (typeof modal.showModal === \"function\") modal.showModal();\r\n    else modal.setAttribute(\"open\", \"\");\r\n  }\r\n  document.getElementById(\"pia-mat-levels-close\").addEventListener(\"click\", () => document.getElementById(\"pia-mat-levels-modal\").close());\r\n  document.getElementById(\"pia-mat-levels-close-2\").addEventListener(\"click\", () => document.getElementById(\"pia-mat-levels-modal\").close());\r\n\r\n  function renderScoreRing(score) {\r\n    const pct = score \/ 5;\r\n    const r = 80, cx = 100, cy = 100;\r\n    const c = 2 * Math.PI * r;\r\n    const off = c * (1 - pct);\r\n    return `\r\n      <svg class=\"score-ring\" viewBox=\"0 0 200 200\" aria-label=\"Score ${score} \/ 5\">\r\n        <defs>\r\n          <linearGradient id=\"ringG\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\r\n            <stop offset=\"0%\" stop-color=\"#1929DD\"\/>\r\n            <stop offset=\"60%\" stop-color=\"#2C55FB\"\/>\r\n            <stop offset=\"100%\" stop-color=\"#FFBC7D\"\/>\r\n          <\/linearGradient>\r\n        <\/defs>\r\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"${r}\" stroke=\"#E5E7F2\" stroke-width=\"14\" fill=\"none\"\/>\r\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"${r}\" stroke=\"url(#ringG)\" stroke-width=\"14\" stroke-linecap=\"round\" fill=\"none\" stroke-dasharray=\"${c}\" stroke-dashoffset=\"${off}\" transform=\"rotate(-90 ${cx} ${cy})\" style=\"transition: stroke-dashoffset 1.2s cubic-bezier(.16,.84,.32,1)\"\/>\r\n        <text x=\"${cx}\" y=\"${cy + 6}\" text-anchor=\"middle\" font-family=\"Plus Jakarta Sans\" font-weight=\"800\" font-size=\"44\" fill=\"#00096F\">${score.toFixed(2)}<\/text>\r\n        <text x=\"${cx}\" y=\"${cy + 30}\" text-anchor=\"middle\" font-family=\"Plus Jakarta Sans\" font-weight=\"500\" font-size=\"14\" fill=\"#5B6079\">${tUI(\"result_on\")}<\/text>\r\n      <\/svg>\r\n    `;\r\n  }\r\n  function renderRadar(axes, scoresByAxis) {\r\n    const size = 320, cx = size \/ 2, cy = size \/ 2, R = 120;\r\n    const N = axes.length;\r\n    const angle = (i) => (-Math.PI \/ 2) + (i * 2 * Math.PI) \/ N;\r\n    const pt = (i, r) => [cx + r * Math.cos(angle(i)), cy + r * Math.sin(angle(i))];\r\n    const grids = [1, 2, 3, 4, 5].map(level => {\r\n      const r = (level \/ 5) * R;\r\n      const pts = axes.map((_, i) => pt(i, r).join(\",\")).join(\" \");\r\n      return `<polygon points=\"${pts}\" fill=\"none\" stroke=\"#E5E7F2\" stroke-width=\"1\"\/>`;\r\n    }).join(\"\");\r\n    const axesLines = axes.map((_, i) => {\r\n      const [x, y] = pt(i, R);\r\n      return `<line x1=\"${cx}\" y1=\"${cy}\" x2=\"${x}\" y2=\"${y}\" stroke=\"#E5E7F2\" stroke-width=\"1\"\/>`;\r\n    }).join(\"\");\r\n    const scorePts = axes.map((a, i) => {\r\n      const s = scoresByAxis[a.id] ?? 0;\r\n      return pt(i, (s \/ 5) * R).join(\",\");\r\n    }).join(\" \");\r\n    const labels = axes.map((a, i) => {\r\n      const [x, y] = pt(i, R + 22);\r\n      const anchor = Math.abs(Math.cos(angle(i))) < 0.2 ? \"middle\" : (Math.cos(angle(i)) > 0 ? \"start\" : \"end\");\r\n      return `<text x=\"${x}\" y=\"${y}\" text-anchor=\"${anchor}\" font-family=\"Plus Jakarta Sans\" font-size=\"11\" font-weight=\"600\" fill=\"#5B6079\">${t(a.short)}<\/text>`;\r\n    }).join(\"\");\r\n    return `\r\n      <svg viewBox=\"0 0 ${size} ${size}\" aria-label=\"Radar \u2014 6 axes\">\r\n        <defs>\r\n          <radialGradient id=\"radarFill\">\r\n            <stop offset=\"0%\" stop-color=\"#1929DD\" stop-opacity=\"0.35\"\/>\r\n            <stop offset=\"100%\" stop-color=\"#2C55FB\" stop-opacity=\"0.15\"\/>\r\n          <\/radialGradient>\r\n        <\/defs>\r\n        ${grids}\r\n        ${axesLines}\r\n        <polygon points=\"${scorePts}\" fill=\"url(#radarFill)\" stroke=\"#1929DD\" stroke-width=\"2.5\" stroke-linejoin=\"round\"\/>\r\n        ${axes.map((a, i) => {\r\n          const s = scoresByAxis[a.id] ?? 0;\r\n          const [x, y] = pt(i, (s \/ 5) * R);\r\n          return `<circle cx=\"${x}\" cy=\"${y}\" r=\"4\" fill=\"${a.color}\" stroke=\"#fff\" stroke-width=\"2\"\/>`;\r\n        }).join(\"\")}\r\n        ${labels}\r\n      <\/svg>\r\n    `;\r\n  }\r\n  function escapeHtml(s) {\r\n    return String(s).replace(\/[&<>\"']\/g, c => ({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\"\":\"&quot;\",\"'\":\"&#39;\"}[c]));\r\n  }\r\n\r\n  \/\/ Audio modal\r\n  const audioModal = document.getElementById(\"pia-mat-audio-modal\");\r\n  function openAudioModal() {\r\n    document.getElementById(\"pia-mat-audio-status\").textContent = \"\";\r\n    document.getElementById(\"pia-mat-audio-email\").value = \"\";\r\n    if (typeof audioModal.showModal === \"function\") audioModal.showModal();\r\n    else audioModal.setAttribute(\"open\", \"\");\r\n  }\r\n  document.getElementById(\"pia-mat-audio-cancel\").addEventListener(\"click\", () => audioModal.close());\r\n  document.getElementById(\"pia-mat-audio-form\").addEventListener(\"submit\", async (e) => {\r\n    e.preventDefault();\r\n    const email = document.getElementById(\"pia-mat-audio-email\").value.trim();\r\n    const status = document.getElementById(\"pia-mat-audio-status\");\r\n    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\r\n      status.textContent = state.lang === \"en\" ? \"Invalid email.\" : \"Email invalide.\";\r\n      return;\r\n    }\r\n    try {\r\n      const res = await fetch(POWER_AUTOMATE_AUDIO_WAITLIST_URL, {\r\n        method: \"POST\",\r\n        headers: { \"Content-Type\": \"application\/json\" },\r\n        body: JSON.stringify({ email, meta: { source: \"audio-waitlist\", lang: state.lang, ts: new Date().toISOString() } })\r\n      });\r\n      if (!res.ok) throw new Error();\r\n      status.textContent = tUI(\"audio_modal_success\");\r\n      setTimeout(() => audioModal.close(), 1400);\r\n    } catch {\r\n      status.textContent = tUI(\"audio_modal_error\");\r\n    }\r\n  });\r\n\r\n  \/\/ Language toggle (event delegation, scoped to #pia-mat-app)\r\n  document.getElementById(\"pia-mat-app\").addEventListener(\"click\", (e) => {\r\n    const langBtn = e.target.closest(\".lang-btn\");\r\n    if (langBtn) setLang(langBtn.dataset.lang);\r\n  });\r\n\r\n  \/\/ Init\r\n  state.content = CONTENT;\r\n  applyStaticI18n();\r\n  render();\r\n})();\r\n<\/script>\r\n\r\n<!-- ===== ELEMENTOR PASTE END ================================================ -->\r\n\r\n\r\n\r\n<\/div>\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":"","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.4","_elementor_pro_version":"4.1.2","_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.0 - 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-10T21:08:22+00:00\" \/>\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-10T21:08:22+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\":\"City\",\"name\":\"Gen\u00e8ve\"}],\"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-10T21:08:22+00:00","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-10T21:08:22+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":"City","name":"Gen\u00e8ve"}],"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}]}}