{"id":19432,"date":"2026-09-24T12:14:15","date_gmt":"2026-09-24T16:14:15","guid":{"rendered":"https:\/\/www.dialoginsight.com\/assistant-di\/"},"modified":"2026-10-01T08:46:49","modified_gmt":"2026-10-01T12:46:49","slug":"dia-assistant","status":"publish","type":"page","link":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/","title":{"rendered":"DiA Assistant"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"19432\" class=\"elementor elementor-19432 elementor-19298\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-674aeee3 dia-gradient-1 e-flex e-con-boxed e-con e-child\" data-id=\"674aeee3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f2318f6 e-flex e-con-boxed e-con e-child\" data-id=\"f2318f6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1fe47139 e-con-full e-flex e-con e-child\" data-id=\"1fe47139\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-26615e5a elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"26615e5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">DIA \u00b7 Dialog Insight AI Assistant<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c2ae72d elementor-widget elementor-widget-heading\" data-id=\"7c2ae72d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Create hyper-personalized campaigns faster with AI.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5129b543 elementor-widget elementor-widget-text-editor\" data-id=\"5129b543\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"a_GcMg font-feature-liga-off font-feature-clig-off font-feature-calt-off text-decoration-none text-strikethrough-none\">The DiA assistant isn\u2019t a chatbot simply added to your platform. It\u2019s an assistant that understands your business context and customer data.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4541aafe e-con-full e-flex e-con e-child\" data-id=\"4541aafe\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43267374 elementor-widget elementor-widget-image\" data-id=\"43267374\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"815\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant-1005x1024.webp\" class=\"attachment-large size-large wp-image-19450\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant-1005x1024.webp 1005w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant-294x300.webp 294w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant-768x783.webp 768w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant-1508x1536.webp 1508w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dialog-insight-dia-ai-assistant.webp 2010w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-65b6f906 dia-gradient-2 e-flex e-con-boxed e-con e-parent\" data-id=\"65b6f906\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1cea4f1c elementor-absolute elementor-widget elementor-widget-image\" data-id=\"1cea4f1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:2,&quot;sizes&quot;:[]},&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1-768x1024.webp\" class=\"attachment-large size-large wp-image-19281\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1-768x1024.webp 768w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1-225x300.webp 225w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1-1152x1536.webp 1152w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1-1536x2048.webp 1536w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_Icone_MauvePale-Blanc-scaled-1.webp 1920w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7728ccf6 e-con-full e-flex e-con e-child\" data-id=\"7728ccf6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a4f808b elementor-hidden-mobile elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"1a4f808b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">THE DIALOG INSIGHT AI ASSISTANT<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46f03c6e elementor-hidden-desktop elementor-hidden-tablet elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"46f03c6e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">THE DIALOG INSIGHT AI ASSISTANT<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-57ffe0e4 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"57ffe0e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:250}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">AI doesn\u2019t replace marketers. It gives them time back.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dab3bff elementor-widget__width-initial animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"3dab3bff\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:350}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"a_GcMg font-feature-liga-off font-feature-clig-off font-feature-calt-off text-decoration-none text-strikethrough-none\">These are not isolated features; rather, they constitute a unified assistant that supports you from the initial customer signal to the final delivery. This results in reduced manual and repetitive tasks, allowing for greater focus on strategy, optimization, and creativity.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-43feb8c6 e-flex e-con-boxed e-con e-parent\" data-id=\"43feb8c6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-abd4ba5 elementor-widget-mobile__width-inherit elementor-widget elementor-widget-html\" data-id=\"abd4ba5\" 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<style>\n\n.dia-process{\n    --dia-dark:#0c2734;\n    --dia-white:#ffffff;\n    --dia-purple-dark:#4b17a1;\n    --dia-purple-light:#c6a9ff;\n    --dia-purple-pale:#f3ebfe;\n    --dia-green-dark:#05D17D;\n    --dia-green-light:#A5F46E;\n\n    width:100%;\n    max-width:100%;\n    position:relative;\n    background:transparent;\n    padding:55px 0;\n    overflow:visible;\n}\n\n.dia-process-inner{\n    width:100%;\n    max-width:100%;\n    position:relative;\n\n    display:grid;\n\n    grid-template-columns:\n        minmax(0,1fr)\n        28px\n        minmax(0,1fr)\n        28px\n        minmax(0,1fr)\n        28px\n        minmax(0,1fr)\n        28px\n        minmax(0,1fr);\n\n    align-items:center;\n    gap:0;\n\n    isolation:isolate;\n    overflow:visible;\n}\n\n\n\/* ==========================================================\n   GRADIENT\n   ========================================================== *\/\n\n.dia-active-gradient{\n    position:absolute;\n    z-index:0;\n\n    top:-95px;\n    left:0;\n\n    width:38%;\n    height:calc(100% + 190px);\n\n    pointer-events:none;\n\n    border-radius:50%;\n\n    background:\n        radial-gradient(\n            ellipse at 50% 48%,\n            rgba(198,169,255,.96) 0%,\n            rgba(198,169,255,.72) 18%,\n            rgba(75,23,161,.56) 38%,\n            rgba(75,23,161,.28) 56%,\n            rgba(75,23,161,.10) 68%,\n            rgba(75,23,161,0) 80%\n        );\n\n    filter:blur(38px);\n\n    opacity:.95;\n\n    transform:\n        translate3d(\n            var(--dia-gradient-x,0px),\n            0,\n            0\n        );\n\n    transition:\n        transform .85s cubic-bezier(.22,.78,.2,1),\n        opacity .5s ease;\n}\n\n.dia-active-gradient::after{\n    content:\"\";\n\n    position:absolute;\n\n    inset:5% -22%;\n\n    border-radius:50%;\n\n    background:\n        radial-gradient(\n            ellipse at center,\n            rgba(198,169,255,.48) 0%,\n            rgba(75,23,161,.24) 42%,\n            rgba(75,23,161,0) 74%\n        );\n\n    filter:blur(38px);\n}\n\n\n\/* ==========================================================\n   CARTES\n   ========================================================== *\/\n\n.dia-card-shell{\n    width:100%;\n    min-width:0;\n\n    height:560px;\n\n    position:relative;\n\n    z-index:2;\n}\n\n.dia-card{\n    width:100%;\n    height:100%;\n\n    min-width:0;\n\n    position:relative;\n\n    display:flex;\n    flex-direction:column;\n\n    padding:\n        22px\n        18px;\n\n    border-radius:26px;\n\n    background:\n        linear-gradient(\n            145deg,\n            #ffffff 0%,\n            #ffffff 80%,\n            #f3ebfe 100%\n        );\n\n    border:\n        1px solid rgba(198,169,255,.34);\n\n    box-shadow:\n        0 14px 34px rgba(12,39,52,.09);\n\n    opacity:.70;\n\n    transform:\n        scale(.99);\n\n    transition:\n        opacity .6s ease,\n        transform .6s cubic-bezier(.2,.8,.2,1),\n        border-color .6s ease,\n        box-shadow .6s ease;\n\n    overflow:hidden;\n}\n\n.dia-card-shell.is-past .dia-card{\n    opacity:.84;\n}\n\n.dia-card-shell.is-active{\n    z-index:5;\n}\n\n.dia-card-shell.is-active .dia-card{\n    opacity:1;\n\n    transform:\n        translateY(-4px)\n        scale(1.01);\n\n    border-color:\n        rgba(198,169,255,.70);\n\n    box-shadow:\n        0 16px 38px rgba(12,39,52,.10);\n}\n\n\n\/* ==========================================================\n   HEADER\n   ========================================================== *\/\n\n.dia-card-header{\n    display:flex;\n    align-items:center;\n    gap:12px;\n    flex:0 0 auto;\n}\n\n.dia-card-badge{\n    width:38px;\n    height:38px;\n\n    flex:0 0 auto;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    border-radius:50%;\n\n    color:\n        var(--dia-white);\n\n    font-size:16px;\n    line-height:1;\n\n    font-weight:700;\n\n    background:\n        linear-gradient(\n            135deg,\n            var(--dia-purple-light) 0%,\n            var(--dia-purple-dark) 100%\n        );\n\n    box-shadow:none;\n\n    transition:\n        transform .5s cubic-bezier(.2,.8,.2,1);\n}\n\n.dia-card-shell.is-active .dia-card-badge{\n    transform:\n        scale(1.06);\n\n    box-shadow:none;\n}\n\n.dia-card h3{\n    margin:0;\n\n    color:\n        var(--dia-dark);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(17px,1.25vw,23px);\n\n    line-height:1.15;\n\n    font-weight:700;\n\n    white-space:nowrap;\n}\n\n\n\/* ==========================================================\n   FL\u00c8CHES\n   ========================================================== *\/\n\n.dia-arrow{\n    width:36px;\n    height:36px;\n\n    justify-self:center;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    position:relative;\n\n    z-index:8;\n\n    margin-left:-5px;\n    margin-right:-5px;\n\n    border-radius:50%;\n\n    color:\n        var(--dia-white);\n\n    font-size:27px;\n    line-height:1;\n\n    background:\n        linear-gradient(\n            135deg,\n            var(--dia-purple-light) 0%,\n            var(--dia-purple-dark) 100%\n        );\n\n    opacity:.45;\n\n    transform:\n        scale(.90);\n\n    box-shadow:\n        0 4px 14px rgba(75,23,161,.16);\n\n    transition:\n        opacity .45s ease,\n        transform .45s cubic-bezier(.2,.8,.2,1),\n        box-shadow .45s ease;\n}\n\n.dia-arrow.is-active{\n    opacity:1;\n\n    transform:\n        scale(1.04);\n\n    box-shadow:\n        0 0 22px rgba(198,169,255,.58);\n}\n\n\n\/* ==========================================================\n   1 \u2014 CADRER\n   ========================================================== *\/\n\n.dia-card--cadrer{\n    display:flex;\n    flex-direction:column;\n}\n\n.dia-cadrer-content{\n    flex:1;\n    min-height:0;\n\n    display:flex;\n    flex-direction:column;\n\n    padding-top:\n        clamp(42px,3vw,54px);\n}\n\n.dia-cadrer-list{\n    display:grid;\n\n    gap:\n        clamp(10px,.85vw,13px);\n}\n\n.dia-cadrer-item{\n    width:100%;\n\n    min-height:\n        clamp(43px,3.25vw,50px);\n\n    display:flex;\n    align-items:center;\n\n    gap:\n        clamp(9px,.8vw,12px);\n\n    padding:\n        9px\n        clamp(10px,.85vw,14px);\n\n    border-radius:10px;\n\n    border:\n        1px solid rgba(198,169,255,.58);\n\n    background:\n        linear-gradient(\n            180deg,\n            rgba(255,255,255,.99) 0%,\n            rgba(243,235,254,.48) 100%\n        );\n\n    color:\n        var(--dia-dark);\n\n    opacity:.52;\n\n    transform:\n        translateY(0);\n\n    transition:\n        opacity .35s ease,\n        transform .35s ease,\n        border-color .35s ease,\n        background .35s ease;\n}\n\n.dia-cadrer-icon{\n    width:\n        clamp(23px,1.8vw,29px);\n\n    height:\n        clamp(23px,1.8vw,29px);\n\n    flex:0 0 auto;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    color:\n        var(--dia-purple-dark);\n}\n\n.dia-cadrer-icon svg{\n    display:block;\n    width:100%;\n    height:100%;\n    overflow:visible;\n}\n\n.dia-cadrer-label{\n    color:\n        rgba(12,39,52,.76);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(12px,.92vw,15px);\n\n    line-height:1.15;\n\n    font-weight:600;\n}\n\n.dia-cadrer-bottom{\n    margin-top:auto;\n\n    padding-top:\n        clamp(20px,1.8vw,28px);\n}\n\n.dia-cadrer-divider,\n.dia-comprendre-divider{\n    width:100%;\n    height:1px;\n\n    position:relative;\n\n    overflow:hidden;\n\n    background:\n        rgba(198,169,255,.35);\n}\n\n.dia-cadrer-divider::after,\n.dia-comprendre-divider::after{\n    content:\"\";\n\n    position:absolute;\n    inset:0;\n\n    background:\n        var(--dia-purple-light);\n\n    transform:\n        scaleX(0);\n\n    transform-origin:\n        left center;\n}\n\n.dia-cadrer-description,\n.dia-comprendre-description{\n    margin:\n        clamp(18px,1.6vw,24px)\n        4px\n        0;\n\n    color:\n        rgba(12,39,52,.74);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(11.5px,.86vw,14px);\n\n    line-height:1.48;\n\n    font-weight:400;\n\n    opacity:.52;\n\n    transform:\n        translateY(0);\n}\n\n\n\/* ==========================================================\n   ANIMATION CADRER\n   ========================================================== *\/\n\n.dia-card-shell.is-active .dia-cadrer-item{\n    animation:\n        diaCadrerItemIn\n        .48s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .14s +\n            (var(--item-index) * .14s)\n        );\n}\n\n.dia-card-shell.is-active .dia-cadrer-icon{\n    animation:\n        diaCadrerIconIn\n        .42s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .20s +\n            (var(--item-index) * .14s)\n        );\n}\n\n.dia-card-shell.is-active .dia-cadrer-divider::after{\n    animation:\n        diaCadrerDividerIn\n        .55s\n        cubic-bezier(.2,.8,.2,1)\n        1.02s\n        both;\n}\n\n.dia-card-shell.is-active .dia-cadrer-description{\n    animation:\n        diaCadrerDescriptionIn\n        .58s\n        cubic-bezier(.2,.8,.2,1)\n        1.14s\n        both;\n}\n\n@keyframes diaCadrerItemIn{\n\n    0%{\n        opacity:.12;\n\n        transform:\n            translateY(10px)\n            scale(.985);\n\n        border-color:\n            rgba(198,169,255,.22);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0)\n            scale(1);\n\n        border-color:\n            rgba(198,169,255,.62);\n    }\n}\n\n@keyframes diaCadrerIconIn{\n\n    0%{\n        opacity:.20;\n\n        transform:\n            scale(.78);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            scale(1);\n    }\n}\n\n@keyframes diaCadrerDividerIn{\n\n    from{\n        transform:\n            scaleX(0);\n    }\n\n    to{\n        transform:\n            scaleX(1);\n    }\n}\n\n@keyframes diaCadrerDescriptionIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            translateY(8px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0);\n    }\n}\n\n\n\/* ==========================================================\n   2 \u2014 COMPRENDRE\n   ========================================================== *\/\n\n.dia-card--comprendre{\n    display:flex;\n    flex-direction:column;\n}\n\n.dia-comprendre-content{\n    flex:1;\n    min-height:0;\n\n    display:flex;\n    flex-direction:column;\n\n    padding-top:\n        clamp(42px,3.25vw,56px);\n}\n\n.dia-comprendre-visual{\n    width:100%;\n\n    flex:0 0 auto;\n\n    display:flex;\n    justify-content:center;\n    align-items:flex-start;\n}\n\n.dia-comprendre-diagram{\n    display:block;\n\n    width:\n        min(100%,240px);\n\n    height:auto;\n\n    overflow:visible;\n}\n\n.dia-comprendre-line{\n    fill:none;\n\n    stroke:\n        rgba(198,169,255,.78);\n\n    stroke-width:2.2;\n\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:\n        non-scaling-stroke;\n\n    stroke-dasharray:1;\n    stroke-dashoffset:0;\n\n    opacity:.48;\n}\n\n.dia-comprendre-person-node,\n.dia-comprendre-reaction-node{\n    transform-box:\n        fill-box;\n\n    transform-origin:\n        center;\n}\n\n.dia-comprendre-person-node{\n    opacity:.52;\n}\n\n.dia-comprendre-person-ring{\n    fill:\n        rgba(243,235,254,.12);\n\n    stroke:\n        rgba(198,169,255,.78);\n\n    stroke-width:2;\n\n    vector-effect:\n        non-scaling-stroke;\n}\n\n.dia-comprendre-person-shape{\n    fill:\n        var(--dia-purple-dark);\n}\n\n.dia-comprendre-reaction-mask{\n    fill:\n        var(--dia-white);\n}\n\n.dia-comprendre-reaction-node{\n    opacity:.48;\n}\n\n.dia-comprendre-reaction-heart{\n    fill:\n        var(--dia-green-dark);\n}\n\n.dia-comprendre-reaction-star{\n    fill:\n        var(--dia-purple-light);\n}\n\n.dia-comprendre-reaction-check-bg{\n    fill:\n        var(--dia-green-light);\n}\n\n.dia-comprendre-reaction-icon{\n    fill:\n        var(--dia-white);\n}\n\n.dia-comprendre-reaction-icon,\n.dia-comprendre-check-icon{\n    transform-box:\n        fill-box;\n\n    transform-origin:\n        center;\n}\n\n.dia-comprendre-check-icon{\n    fill:none;\n\n    stroke:\n        var(--dia-white);\n\n    stroke-width:5;\n\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:\n        non-scaling-stroke;\n}\n\n.dia-comprendre-bottom{\n    margin-top:auto;\n\n    padding-top:\n        clamp(16px,1.5vw,22px);\n}\n\n\n\/* ==========================================================\n   ANIMATION COMPRENDRE\n   ========================================================== *\/\n\n.dia-card-shell.is-active .dia-comprendre-person-node{\n    animation:\n        diaComprendrePersonIn\n        .48s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .12s +\n            (var(--person-index) * .12s)\n        );\n}\n\n.dia-card-shell.is-active .dia-comprendre-line{\n    animation:\n        diaComprendreLineIn\n        .78s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .58s +\n            (var(--line-index) * .10s)\n        );\n}\n\n.dia-card-shell.is-active .dia-comprendre-reaction-node{\n    animation:\n        diaComprendreReactionIn\n        .48s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            1.20s +\n            (var(--reaction-index) * .12s)\n        );\n}\n\n.dia-card-shell.is-active\n.dia-comprendre-reaction-icon,\n\n.dia-card-shell.is-active\n.dia-comprendre-check-icon{\n\n    animation:\n        diaComprendreReactionIconIn\n        .38s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            1.30s +\n            (var(--reaction-index) * .12s)\n        );\n}\n\n.dia-card-shell.is-active .dia-comprendre-divider::after{\n    animation:\n        diaComprendreDividerIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        1.78s\n        both;\n}\n\n.dia-card-shell.is-active .dia-comprendre-description{\n    animation:\n        diaComprendreDescriptionIn\n        .56s\n        cubic-bezier(.2,.8,.2,1)\n        1.90s\n        both;\n}\n\n@keyframes diaComprendrePersonIn{\n\n    0%{\n        opacity:.10;\n\n        transform:\n            translateY(8px)\n            scale(.95);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaComprendreLineIn{\n\n    0%{\n        opacity:.16;\n        stroke-dashoffset:1;\n    }\n\n    100%{\n        opacity:.82;\n        stroke-dashoffset:0;\n    }\n}\n\n@keyframes diaComprendreReactionIn{\n\n    0%{\n        opacity:.08;\n\n        transform:\n            translateY(8px)\n            scale(.90);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaComprendreReactionIconIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            scale(.84);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            scale(1);\n    }\n}\n\n@keyframes diaComprendreDividerIn{\n\n    from{\n        transform:\n            scaleX(0);\n    }\n\n    to{\n        transform:\n            scaleX(1);\n    }\n}\n\n@keyframes diaComprendreDescriptionIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            translateY(8px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0);\n    }\n}\n\n\n\/* ==========================================================\n   3 \u2014 CIBLER\n   ========================================================== *\/\n\n.dia-card--cibler{\n    display:flex;\n    flex-direction:column;\n}\n\n.dia-cibler-content{\n    flex:1;\n    min-height:0;\n\n    display:flex;\n    flex-direction:column;\n\n    padding-top:\n        clamp(34px,2.7vw,46px);\n}\n\n.dia-cibler-visual{\n    width:100%;\n\n    flex:0 0 auto;\n\n    display:flex;\n    justify-content:center;\n    align-items:flex-start;\n}\n\n.dia-cibler-diagram{\n    display:block;\n\n    width:\n        min(100%,250px);\n\n    height:auto;\n\n    overflow:visible;\n}\n\n\n\/* ==========================================================\n   CONNECTEURS CIBLER\n   ========================================================== *\/\n\n.dia-cibler-connector{\n    fill:none;\n\n    stroke:\n        rgba(198,169,255,.78);\n\n    stroke-width:2;\n\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:\n        non-scaling-stroke;\n\n    stroke-dasharray:1;\n    stroke-dashoffset:0;\n\n    opacity:.46;\n}\n\n\n\/* ==========================================================\n   PERSONNAGE\n   ========================================================== *\/\n\n.dia-cibler-person-node,\n.dia-cibler-criterion{\n    transform-box:\n        fill-box;\n\n    transform-origin:\n        center;\n\n    opacity:.52;\n}\n\n.dia-cibler-person-ring{\n    fill:\n        rgba(243,235,254,.12);\n\n    stroke:\n        rgba(198,169,255,.78);\n\n    stroke-width:2;\n\n    vector-effect:\n        non-scaling-stroke;\n}\n\n.dia-cibler-person-shape{\n    fill:\n        var(--dia-purple-dark);\n}\n\n\n\/* ==========================================================\n   CARTES CRIT\u00c8RES\n   ========================================================== *\/\n\n.dia-cibler-criterion-box{\n    fill:url(#diaCiblerBoxGradient);\n\n    stroke:\n        rgba(198,169,255,.58);\n\n    stroke-width:1.8;\n\n    vector-effect:\n        non-scaling-stroke;\n}\n\n\n\/*\n * Toutes les ic\u00f4nes sont maintenant confin\u00e9es\n * entre environ X=122 et X=150.\n *\n * Tous les textes commencent \u00e0 X=160.\n *\n * Il y a donc toujours une vraie zone de s\u00e9curit\u00e9.\n *\/\n\n.dia-cibler-criterion-icon{\n    fill:none;\n\n    stroke:\n        var(--dia-purple-dark);\n\n    stroke-width:2.1;\n\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:\n        non-scaling-stroke;\n\n    transform-box:fill-box;\n    transform-origin:center;\n    transform:scale(.60);\n}\n\n.dia-cibler-criterion-fill{\n    fill:\n        var(--dia-purple-dark);\n}\n\n.dia-cibler-criterion-text{\n    fill:\n        rgba(12,39,52,.76);\n\n    font-family:inherit;\n\n    font-size:18px;\n\n    font-weight:600;\n\n    dominant-baseline:middle;\n}\n\n\n\/* ==========================================================\n   R\u00c9SUM\u00c9 PAR IA\n   ========================================================== *\/\n\n.dia-cibler-summary{\n    min-height:42px;\n\n    width:\n        min(90%,236px);\n\n    margin:\n        clamp(16px,1.3vw,20px)\n        auto\n        0;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    gap:7px;\n\n    padding:\n        8px\n        12px;\n\n    border-radius:999px;\n\n    border:\n        1px solid rgba(198,169,255,.78);\n\n    background:\n        rgba(255,255,255,.94);\n\n    color:\n        var(--dia-purple-dark);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(12px,.86vw,14px);\n\n    line-height:1;\n\n    font-weight:700;\n\n    white-space:nowrap;\n\n    opacity:.52;\n\n    transform:\n        translateY(0);\n}\n\n.dia-cibler-summary-logo{\n    width:15px;\n    height:20px;\n\n    flex:0 0 auto;\n\n    display:block;\n\n    transform-box:\n        fill-box;\n\n    transform-origin:\n        center;\n}\n\n.dia-cibler-summary-logo svg{\n    display:block;\n    width:100%;\n    height:100%;\n}\n\n.dia-cibler-summary-logo-dot{\n    fill:\n        var(--dia-purple-light);\n}\n\n.dia-cibler-summary-logo-star{\n    fill:\n        var(--dia-purple-dark);\n}\n\n\n\/* ==========================================================\n   BAS CIBLER\n   ========================================================== *\/\n\n.dia-cibler-bottom{\n    margin-top:auto;\n\n    padding-top:\n        clamp(18px,1.6vw,24px);\n}\n\n.dia-cibler-divider{\n    width:100%;\n    height:1px;\n\n    position:relative;\n\n    overflow:hidden;\n\n    background:\n        rgba(198,169,255,.35);\n}\n\n.dia-cibler-divider::after{\n    content:\"\";\n\n    position:absolute;\n    inset:0;\n\n    background:\n        var(--dia-purple-light);\n\n    transform:\n        scaleX(0);\n\n    transform-origin:\n        left center;\n}\n\n.dia-cibler-description{\n    margin:\n        clamp(18px,1.6vw,24px)\n        4px\n        0;\n\n    color:\n        rgba(12,39,52,.74);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(11.5px,.86vw,14px);\n\n    line-height:1.48;\n\n    font-weight:400;\n\n    opacity:.52;\n\n    transform:\n        translateY(0);\n}\n\n\n\/* ==========================================================\n   ANIMATION CIBLER\n   ========================================================== *\/\n\n.dia-card-shell.is-active .dia-cibler-person-node{\n    animation:\n        diaCiblerPersonIn\n        .46s\n        cubic-bezier(.2,.8,.2,1)\n        both\n        .12s;\n}\n\n.dia-card-shell.is-active .dia-cibler-connector{\n    animation:\n        diaCiblerConnectorIn\n        .72s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .46s +\n            (var(--line-index) * .08s)\n        );\n}\n\n.dia-card-shell.is-active .dia-cibler-criterion{\n    animation:\n        diaCiblerCriterionIn\n        .46s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .78s +\n            (var(--criterion-index) * .14s)\n        );\n}\n\n.dia-card-shell.is-active .dia-cibler-summary{\n    animation:\n        diaCiblerSummaryIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        1.38s\n        both;\n}\n\n.dia-card-shell.is-active .dia-cibler-summary-logo{\n    animation:\n        diaCiblerLogoIn\n        .42s\n        cubic-bezier(.2,.8,.2,1)\n        1.52s\n        both;\n}\n\n.dia-card-shell.is-active .dia-cibler-divider::after{\n    animation:\n        diaCiblerDividerIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        1.82s\n        both;\n}\n\n.dia-card-shell.is-active .dia-cibler-description{\n    animation:\n        diaCiblerDescriptionIn\n        .56s\n        cubic-bezier(.2,.8,.2,1)\n        1.94s\n        both;\n}\n\n@keyframes diaCiblerPersonIn{\n\n    0%{\n        opacity:.10;\n\n        transform:\n            translateX(-7px)\n            scale(.96);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateX(0)\n            scale(1);\n    }\n}\n\n@keyframes diaCiblerConnectorIn{\n\n    0%{\n        opacity:.12;\n        stroke-dashoffset:1;\n    }\n\n    100%{\n        opacity:.82;\n        stroke-dashoffset:0;\n    }\n}\n\n@keyframes diaCiblerCriterionIn{\n\n    0%{\n        opacity:.10;\n\n        transform:\n            translateX(8px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateX(0);\n    }\n}\n\n@keyframes diaCiblerSummaryIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            translateY(7px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0);\n    }\n}\n\n@keyframes diaCiblerLogoIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            scale(.82);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            scale(1);\n    }\n}\n\n@keyframes diaCiblerDividerIn{\n\n    from{\n        transform:\n            scaleX(0);\n    }\n\n    to{\n        transform:\n            scaleX(1);\n    }\n}\n\n@keyframes diaCiblerDescriptionIn{\n\n    0%{\n        opacity:0;\n\n        transform:\n            translateY(8px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0);\n    }\n}\n\n\n\n\n\/* ==========================================================\n   4 \u2014 CR\u00c9ER\n   Ic\u00f4nes vectoris\u00e9es directement depuis l\u2019aper\u00e7u approuv\u00e9\n   ========================================================== *\/\n\n.dia-card--creer{\n    display:flex;\n    flex-direction:column;\n}\n\n.dia-creer-content{\n    flex:1;\n    min-height:0;\n\n    display:flex;\n    flex-direction:column;\n\n    padding-top:\n        clamp(28px,2.35vw,40px);\n}\n\n.dia-creer-visual{\n    width:100%;\n    flex:0 0 auto;\n\n    display:flex;\n    justify-content:center;\n    align-items:flex-start;\n}\n\n.dia-creer-diagram{\n    display:block;\n\n    width:\n        min(100%,252px);\n\n    height:auto;\n    overflow:visible;\n}\n\n.dia-creer-flow-line{\n    fill:none;\n\n    stroke:\n        rgba(198,169,255,.78);\n\n    stroke-width:2;\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:\n        non-scaling-stroke;\n\n    stroke-dasharray:1;\n    stroke-dashoffset:0;\n\n    opacity:.46;\n}\n\n.dia-creer-goal-node,\n.dia-creer-item-node{\n    transform-box:fill-box;\n    transform-origin:center;\n    opacity:.52;\n}\n\n.dia-creer-box{\n    fill:url(#diaCreerBoxGradient);\n\n    stroke:\n        rgba(198,169,255,.58);\n\n    stroke-width:1.8;\n\n    vector-effect:\n        non-scaling-stroke;\n}\n\n\/* Masques opaques sous les 3 blocs :\n   la ligne reste derri\u00e8re m\u00eame lorsque la carte est inactive. *\/\n.dia-creer-line-mask{\n    fill:\n        var(--dia-white);\n}\n\n.dia-creer-approved-icon{\n    fill:\n        var(--dia-purple-dark);\n\n    fill-rule:evenodd;\n    clip-rule:evenodd;\n}\n\n.dia-creer-text{\n    fill:\n        rgba(12,39,52,.80);\n\n    font-family:inherit;\n    font-size:18px;\n    font-weight:600;\n\n    dominant-baseline:middle;\n}\n\n.dia-creer-bottom{\n    margin-top:auto;\n\n    padding-top:\n        clamp(16px,1.45vw,22px);\n}\n\n.dia-creer-divider{\n    width:100%;\n    height:1px;\n\n    position:relative;\n    overflow:hidden;\n\n    background:\n        rgba(198,169,255,.35);\n}\n\n.dia-creer-divider::after{\n    content:\"\";\n\n    position:absolute;\n    inset:0;\n\n    background:\n        var(--dia-purple-light);\n\n    transform:\n        scaleX(0);\n\n    transform-origin:\n        left center;\n}\n\n.dia-creer-description{\n    margin:\n        clamp(18px,1.6vw,24px)\n        4px\n        0;\n\n    color:\n        rgba(12,39,52,.74);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(11.5px,.86vw,14px);\n\n    line-height:1.48;\n    font-weight:400;\n\n    opacity:.52;\n\n    transform:\n        translateY(0);\n}\n\n\n\/* ==========================================================\n   ANIMATION CR\u00c9ER\n   ========================================================== *\/\n\n.dia-card-shell.is-active\n.dia-creer-goal-node{\n    animation:\n        diaCreerGoalIn\n        .50s\n        cubic-bezier(.2,.8,.2,1)\n        both\n        .12s;\n}\n\n.dia-card-shell.is-active\n.dia-creer-flow-line{\n    animation:\n        diaCreerLineIn\n        .78s\n        cubic-bezier(.2,.8,.2,1)\n        both\n        .48s;\n}\n\n.dia-card-shell.is-active\n.dia-creer-item-node{\n    animation:\n        diaCreerItemIn\n        .46s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .82s +\n            (var(--item-index) * .16s)\n        );\n}\n\n.dia-card-shell.is-active\n.dia-creer-divider::after{\n    animation:\n        diaCreerDividerIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        1.52s\n        both;\n}\n\n.dia-card-shell.is-active\n.dia-creer-description{\n    animation:\n        diaCreerDescriptionIn\n        .56s\n        cubic-bezier(.2,.8,.2,1)\n        1.66s\n        both;\n}\n\n@keyframes diaCreerGoalIn{\n    0%{\n        opacity:.10;\n\n        transform:\n            translateY(8px)\n            scale(.95);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaCreerLineIn{\n    0%{\n        opacity:.16;\n        stroke-dashoffset:1;\n    }\n\n    100%{\n        opacity:.82;\n        stroke-dashoffset:0;\n    }\n}\n\n@keyframes diaCreerItemIn{\n    0%{\n        opacity:.10;\n\n        transform:\n            translateY(8px)\n            scale(.985);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaCreerDividerIn{\n    from{\n        transform:\n            scaleX(0);\n    }\n\n    to{\n        transform:\n            scaleX(1);\n    }\n}\n\n@keyframes diaCreerDescriptionIn{\n    0%{\n        opacity:0;\n\n        transform:\n            translateY(8px);\n    }\n\n    100%{\n        opacity:1;\n\n        transform:\n            translateY(0);\n    }\n}\n\n\n\/* ==========================================================\n   CR\u00c9ER \u2014 RESPONSIVE\n   ========================================================== *\/\n\n@media (max-width:1350px){\n    .dia-creer-content{\n        padding-top:24px;\n    }\n\n    .dia-creer-diagram{\n        width:\n            min(100%,238px);\n    }\n}\n\n@media (max-width:1100px){\n    .dia-creer-content{\n        padding-top:34px;\n    }\n\n    .dia-creer-diagram{\n        width:\n            min(100%,258px);\n    }\n\n    .dia-creer-description{\n        font-size:15px;\n    }\n}\n\n@media (max-width:767px){\n    .dia-creer-content{\n        padding-top:24px;\n    }\n\n    .dia-creer-diagram{\n        width:\n            min(100%,236px);\n    }\n\n    .dia-creer-bottom{\n        padding-top:18px;\n    }\n\n    .dia-creer-description{\n        margin-top:18px;\n        font-size:14px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-creer-content{\n        padding-top:20px;\n    }\n\n    .dia-creer-diagram{\n        width:\n            min(100%,215px);\n    }\n\n    .dia-creer-description{\n        font-size:13.5px;\n    }\n}\n\n\n\/* ==========================================================\n   5 \u2014 R\u00c9DIGER\n   ========================================================== *\/\n\n.dia-card--rediger{\n    display:flex;\n    flex-direction:column;\n}\n\n.dia-rediger-content{\n    flex:1;\n    min-height:0;\n\n    display:flex;\n    flex-direction:column;\n\n    padding-top:\n        clamp(28px,2.35vw,40px);\n}\n\n.dia-rediger-visual{\n    width:100%;\n    flex:0 0 auto;\n\n    display:flex;\n    justify-content:center;\n    align-items:flex-start;\n}\n\n.dia-rediger-diagram{\n    display:block;\n\n    width:\n        min(100%,252px);\n\n    height:auto;\n    overflow:visible;\n}\n\n.dia-rediger-editor,\n.dia-rediger-image-node,\n.dia-rediger-toolbar-item,\n.dia-rediger-button{\n    transform-box:fill-box;\n    transform-origin:center;\n    opacity:.52;\n}\n\n.dia-rediger-editor-box,\n.dia-rediger-button-secondary{\n    fill:\n        rgba(255,255,255,.94);\n\n    stroke:\n        rgba(198,169,255,.72);\n\n    stroke-width:1.8;\n    vector-effect:non-scaling-stroke;\n}\n\n.dia-rediger-copy-line,\n.dia-rediger-separator-line{\n    fill:none;\n\n    stroke:\n        var(--dia-purple-light);\n\n    stroke-width:3.4;\n    stroke-linecap:round;\n\n    vector-effect:non-scaling-stroke;\n\n    stroke-dasharray:1;\n    stroke-dashoffset:0;\n\n    opacity:.62;\n}\n\n.dia-rediger-image-box,\n.dia-rediger-image-shape,\n.dia-rediger-link-icon{\n    fill:none;\n\n    stroke:\n        var(--dia-purple-dark);\n\n    stroke-linecap:round;\n    stroke-linejoin:round;\n\n    vector-effect:non-scaling-stroke;\n}\n\n.dia-rediger-image-box{\n    stroke-width:3.5;\n}\n\n.dia-rediger-image-shape{\n    stroke-width:3.4;\n}\n\n.dia-rediger-image-dot{\n    fill:\n        var(--dia-purple-dark);\n}\n\n.dia-rediger-toolbar-text{\n    fill:\n        rgba(12,39,52,.80);\n\n    font-family:inherit;\n    font-size:22px;\n}\n\n.dia-rediger-toolbar-bold{\n    font-weight:700;\n}\n\n.dia-rediger-toolbar-italic{\n    font-style:italic;\n}\n\n.dia-rediger-toolbar-underline{\n    fill:none;\n    stroke:rgba(12,39,52,.80);\n    stroke-width:2;\n    stroke-linecap:round;\n    vector-effect:non-scaling-stroke;\n}\n\n.dia-rediger-link-icon{\n    stroke:\n        rgba(12,39,52,.80);\n    stroke-width:2.1;\n}\n\n.dia-rediger-button-primary{\n    fill:\n        var(--dia-purple-dark);\n}\n\n.dia-rediger-button-text-secondary{\n    fill:\n        var(--dia-purple-dark);\n\n    font-family:inherit;\n    font-size:17px;\n    font-weight:700;\n}\n\n.dia-rediger-button-text-primary{\n    fill:\n        var(--dia-white);\n\n    font-family:inherit;\n    font-size:17px;\n    font-weight:700;\n}\n\n.dia-rediger-bottom{\n    margin-top:auto;\n\n    padding-top:\n        clamp(16px,1.45vw,22px);\n}\n\n.dia-rediger-divider{\n    width:100%;\n    height:1px;\n\n    position:relative;\n    overflow:hidden;\n\n    background:\n        rgba(198,169,255,.35);\n}\n\n.dia-rediger-divider::after{\n    content:\"\";\n\n    position:absolute;\n    inset:0;\n\n    background:\n        var(--dia-purple-light);\n\n    transform:scaleX(0);\n    transform-origin:left center;\n}\n\n.dia-rediger-description{\n    margin:\n        clamp(18px,1.6vw,24px)\n        4px\n        0;\n\n    color:\n        rgba(12,39,52,.74);\n\n    font-family:inherit;\n\n    font-size:\n        clamp(11.5px,.86vw,14px);\n\n    line-height:1.48;\n    font-weight:400;\n\n    opacity:.52;\n    transform:translateY(0);\n}\n\n\n\/* ==========================================================\n   ANIMATION R\u00c9DIGER\n   ========================================================== *\/\n\n.dia-card-shell.is-active .dia-rediger-editor{\n    animation:\n        diaRedigerEditorIn\n        .50s\n        cubic-bezier(.2,.8,.2,1)\n        both\n        .12s;\n}\n\n.dia-card-shell.is-active .dia-rediger-copy-line{\n    animation:\n        diaRedigerLineIn\n        .56s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            .38s +\n            (var(--line-index) * .09s)\n        );\n}\n\n.dia-card-shell.is-active .dia-rediger-image-node{\n    animation:\n        diaRedigerImageIn\n        .48s\n        cubic-bezier(.2,.8,.2,1)\n        .62s\n        both;\n}\n\n.dia-card-shell.is-active .dia-rediger-separator-line{\n    animation:\n        diaRedigerLineIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        .84s\n        both;\n}\n\n.dia-card-shell.is-active .dia-rediger-toolbar-item{\n    animation:\n        diaRedigerToolbarIn\n        .40s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            1.00s +\n            (var(--tool-index) * .10s)\n        );\n}\n\n.dia-card-shell.is-active .dia-rediger-button{\n    animation:\n        diaRedigerButtonIn\n        .46s\n        cubic-bezier(.2,.8,.2,1)\n        both;\n\n    animation-delay:\n        calc(\n            1.46s +\n            (var(--button-index) * .14s)\n        );\n}\n\n.dia-card-shell.is-active .dia-rediger-divider::after{\n    animation:\n        diaRedigerDividerIn\n        .52s\n        cubic-bezier(.2,.8,.2,1)\n        1.88s\n        both;\n}\n\n.dia-card-shell.is-active .dia-rediger-description{\n    animation:\n        diaRedigerDescriptionIn\n        .56s\n        cubic-bezier(.2,.8,.2,1)\n        2.02s\n        both;\n}\n\n@keyframes diaRedigerEditorIn{\n    0%{\n        opacity:.10;\n        transform:\n            translateY(8px)\n            scale(.985);\n    }\n\n    100%{\n        opacity:1;\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaRedigerLineIn{\n    0%{\n        opacity:.12;\n        stroke-dashoffset:1;\n    }\n\n    100%{\n        opacity:.76;\n        stroke-dashoffset:0;\n    }\n}\n\n@keyframes diaRedigerImageIn{\n    0%{\n        opacity:.08;\n        transform:\n            translateY(5px)\n            scale(.94);\n    }\n\n    100%{\n        opacity:1;\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaRedigerToolbarIn{\n    0%{\n        opacity:0;\n        transform:\n            translateY(5px)\n            scale(.92);\n    }\n\n    100%{\n        opacity:1;\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaRedigerButtonIn{\n    0%{\n        opacity:0;\n        transform:\n            translateY(7px)\n            scale(.98);\n    }\n\n    100%{\n        opacity:1;\n        transform:\n            translateY(0)\n            scale(1);\n    }\n}\n\n@keyframes diaRedigerDividerIn{\n    from{\n        transform:scaleX(0);\n    }\n\n    to{\n        transform:scaleX(1);\n    }\n}\n\n@keyframes diaRedigerDescriptionIn{\n    0%{\n        opacity:0;\n        transform:translateY(8px);\n    }\n\n    100%{\n        opacity:1;\n        transform:translateY(0);\n    }\n}\n\n\n\/* ==========================================================\n   R\u00c9DIGER \u2014 RESPONSIVE\n   ========================================================== *\/\n\n@media (max-width:1350px){\n    .dia-rediger-content{\n        padding-top:24px;\n    }\n\n    .dia-rediger-diagram{\n        width:min(100%,238px);\n    }\n}\n\n@media (max-width:1100px){\n    .dia-rediger-content{\n        padding-top:34px;\n    }\n\n    .dia-rediger-diagram{\n        width:min(100%,258px);\n    }\n\n    .dia-rediger-description{\n        font-size:15px;\n    }\n}\n\n@media (max-width:767px){\n    .dia-rediger-content{\n        padding-top:24px;\n    }\n\n    .dia-rediger-diagram{\n        width:min(100%,236px);\n    }\n\n    .dia-rediger-bottom{\n        padding-top:18px;\n    }\n\n    .dia-rediger-description{\n        margin-top:18px;\n        font-size:14px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-rediger-content{\n        padding-top:20px;\n    }\n\n    .dia-rediger-diagram{\n        width:min(100%,215px);\n    }\n\n    .dia-rediger-description{\n        font-size:13.5px;\n    }\n}\n\n\n\/* ==========================================================\n   DESKTOP MOYEN\n   ========================================================== *\/\n\n@media (max-width:1350px){\n\n    .dia-process-inner{\n        grid-template-columns:\n            minmax(0,1fr)\n            22px\n            minmax(0,1fr)\n            22px\n            minmax(0,1fr)\n            22px\n            minmax(0,1fr)\n            22px\n            minmax(0,1fr);\n    }\n\n    .dia-card-shell{\n        height:520px;\n    }\n\n    .dia-card{\n        padding:\n            18px\n            14px;\n    }\n\n    .dia-card-header{\n        gap:9px;\n    }\n\n    .dia-card-badge{\n        width:32px;\n        height:32px;\n\n        font-size:14px;\n    }\n\n    .dia-card h3{\n        font-size:16px;\n    }\n\n    .dia-arrow{\n        width:30px;\n        height:30px;\n\n        font-size:22px;\n    }\n\n    .dia-active-gradient{\n        width:42%;\n\n        filter:\n            blur(32px);\n    }\n\n    .dia-cadrer-content{\n        padding-top:34px;\n    }\n\n    .dia-cadrer-item{\n        min-height:41px;\n    }\n}\n\n\n\/* ==========================================================\n   TABLETTE\n   ========================================================== *\/\n\n@media (max-width:1100px){\n\n    .dia-process{\n        padding:\n            55px\n            18px;\n    }\n\n    .dia-process-inner{\n        grid-template-columns:\n            minmax(0,1fr);\n\n        grid-template-rows:\n            1fr;\n\n        width:100%;\n        max-width:580px;\n\n        margin:\n            0 auto;\n    }\n\n    .dia-active-gradient{\n        width:130%;\n\n        height:\n            calc(100% + 150px);\n\n        top:-75px;\n        left:50%;\n\n        transform:\n            translate3d(\n                -50%,\n                0,\n                0\n            ) !important;\n\n        filter:\n            blur(34px);\n    }\n\n    .dia-card-shell{\n        grid-column:1;\n        grid-row:1;\n\n        width:100%;\n        height:560px;\n\n        opacity:0;\n\n        visibility:hidden;\n\n        pointer-events:none;\n\n        transform:\n            translateX(22px);\n\n        transition:\n            opacity .5s ease,\n            transform .6s cubic-bezier(.2,.8,.2,1),\n            visibility .5s ease;\n    }\n\n    .dia-card-shell.is-past{\n        opacity:0;\n\n        visibility:hidden;\n\n        pointer-events:none;\n\n        transform:\n            translateX(-22px);\n    }\n\n    .dia-card-shell.is-active{\n        opacity:1;\n\n        visibility:visible;\n\n        pointer-events:auto;\n\n        transform:\n            translateX(0);\n    }\n\n    .dia-card-shell.is-active .dia-card{\n        transform:none;\n    }\n\n    .dia-card{\n        padding:\n            28px\n            26px;\n    }\n\n    .dia-card-header{\n        gap:14px;\n    }\n\n    .dia-card-badge{\n        width:40px;\n        height:40px;\n\n        font-size:17px;\n    }\n\n    .dia-card h3{\n        font-size:24px;\n    }\n\n    .dia-arrow{\n        display:none;\n    }\n\n\n    \/* CADRER *\/\n\n    .dia-cadrer-content{\n        padding-top:45px;\n    }\n\n    .dia-cadrer-list{\n        gap:13px;\n    }\n\n    .dia-cadrer-item{\n        min-height:52px;\n\n        padding:\n            10px\n            14px;\n    }\n\n    .dia-cadrer-icon{\n        width:28px;\n        height:28px;\n    }\n\n    .dia-cadrer-label{\n        font-size:15px;\n    }\n\n    .dia-cadrer-description{\n        font-size:15px;\n    }\n\n\n    \/* COMPRENDRE *\/\n\n    .dia-comprendre-content{\n        padding-top:42px;\n    }\n\n    .dia-comprendre-diagram{\n        width:\n            min(100%,235px);\n    }\n\n    .dia-comprendre-description{\n        font-size:15px;\n    }\n\n\n    \/* CIBLER *\/\n\n    .dia-cibler-content{\n        padding-top:38px;\n    }\n\n    .dia-cibler-diagram{\n        width:\n            min(100%,260px);\n    }\n\n    .dia-cibler-summary{\n        width:\n            min(80%,236px);\n\n        font-size:14px;\n    }\n\n    .dia-cibler-description{\n        font-size:15px;\n    }\n}\n\n\n\/* ==========================================================\n   MOBILE\n   ========================================================== *\/\n\n@media (max-width:767px){\n\n    .dia-process{\n        padding:\n            48px\n            10px;\n    }\n\n    .dia-card-shell{\n        height:520px;\n    }\n\n    .dia-card{\n        padding:\n            22px\n            18px;\n\n        border-radius:22px;\n    }\n\n    .dia-card-header{\n        gap:11px;\n    }\n\n    .dia-card-badge{\n        width:36px;\n        height:36px;\n\n        font-size:15px;\n    }\n\n    .dia-card h3{\n        font-size:21px;\n    }\n\n    .dia-active-gradient{\n        width:145%;\n\n        filter:\n            blur(28px);\n    }\n\n\n    \/* CADRER *\/\n\n    .dia-cadrer-content{\n        padding-top:32px;\n    }\n\n    .dia-cadrer-list{\n        gap:10px;\n    }\n\n    .dia-cadrer-item{\n        min-height:47px;\n\n        padding:\n            8px\n            12px;\n    }\n\n    .dia-cadrer-label{\n        font-size:14px;\n    }\n\n    .dia-cadrer-bottom{\n        padding-top:20px;\n    }\n\n    .dia-cadrer-description{\n        margin-top:18px;\n\n        font-size:14px;\n    }\n\n\n    \/* COMPRENDRE *\/\n\n    .dia-comprendre-content{\n        padding-top:30px;\n    }\n\n    .dia-comprendre-diagram{\n        width:\n            min(100%,220px);\n    }\n\n    .dia-comprendre-bottom{\n        padding-top:18px;\n    }\n\n    .dia-comprendre-description{\n        margin-top:18px;\n\n        font-size:14px;\n    }\n\n\n    \/* CIBLER *\/\n\n    .dia-cibler-content{\n        padding-top:26px;\n    }\n\n    .dia-cibler-diagram{\n        width:\n            min(100%,238px);\n    }\n\n    .dia-cibler-summary{\n        width:\n            min(88%,225px);\n\n        margin-top:14px;\n\n        font-size:13px;\n    }\n\n    .dia-cibler-bottom{\n        padding-top:18px;\n    }\n\n    .dia-cibler-description{\n        margin-top:18px;\n\n        font-size:14px;\n    }\n}\n\n\n\/* ==========================================================\n   PETIT MOBILE\n   ========================================================== *\/\n\n@media (max-width:480px){\n\n    .dia-card-shell{\n        height:500px;\n    }\n\n    .dia-card{\n        padding:\n            20px\n            16px;\n    }\n\n    .dia-card h3{\n        font-size:20px;\n    }\n\n\n    \/* CADRER *\/\n\n    .dia-cadrer-content{\n        padding-top:26px;\n    }\n\n    .dia-cadrer-item{\n        min-height:44px;\n    }\n\n    .dia-cadrer-label{\n        font-size:13.5px;\n    }\n\n    .dia-cadrer-description{\n        font-size:13.5px;\n    }\n\n\n    \/* COMPRENDRE *\/\n\n    .dia-comprendre-content{\n        padding-top:24px;\n    }\n\n    .dia-comprendre-diagram{\n        width:\n            min(100%,205px);\n    }\n\n    .dia-comprendre-description{\n        font-size:13.5px;\n    }\n\n\n    \/* CIBLER *\/\n\n    .dia-cibler-content{\n        padding-top:22px;\n    }\n\n    .dia-cibler-diagram{\n        width:\n            min(100%,220px);\n    }\n\n    .dia-cibler-summary{\n        width:\n            min(90%,210px);\n\n        min-height:40px;\n\n        padding:\n            7px\n            10px;\n\n        font-size:12.5px;\n    }\n\n    .dia-cibler-description{\n        font-size:13.5px;\n    }\n}\n\n\n\n\n\/* ==========================================================\n   TYPOGRAPHIE UI \u2014 HARMONISATION FINALE\n\n   Les libell\u00e9s des cartes 3 et 4 ainsi que les boutons\n   de la carte 5 sont volontairement un peu plus grands\n   que dans la version pr\u00e9c\u00e9dente afin d'avoir la m\u00eame\n   pr\u00e9sence visuelle que les libell\u00e9s de la carte 1.\n   ========================================================== *\/\n\n.dia-cadrer-label{\n    font-weight:600;\n    letter-spacing:0;\n}\n\n.dia-cibler-criterion-text,\n.dia-creer-text{\n    font-size:20px;\n    font-weight:600;\n    letter-spacing:0;\n}\n\n.dia-cibler-summary{\n    font-size:clamp(13px,.95vw,15px);\n    font-weight:700;\n    letter-spacing:0;\n}\n\n.dia-rediger-button-text-secondary,\n.dia-rediger-button-text-primary{\n    font-size:19px;\n    font-weight:700;\n    letter-spacing:0;\n}\n\n\/* Tablette\/mobile : on conserve une bonne pr\u00e9sence sans\n   laisser les libell\u00e9s devenir trop imposants. *\/\n@media (max-width:1100px){\n    .dia-cibler-criterion-text,\n    .dia-creer-text{\n        font-size:19px;\n    }\n\n    .dia-rediger-button-text-secondary,\n    .dia-rediger-button-text-primary{\n        font-size:18px;\n    }\n}\n\n\n\/* ==========================================================\n   FINE TUNE GLOBAL \u2014 DESKTOP LARGE\n\n   On \u00e9galise la \"zone de contenu\" de chaque carte sans\n   forcer les illustrations \u00e0 avoir la m\u00eame forme :\n\n   - Cadrer : sa liste fait naturellement ~300 px de haut.\n   - Comprendre : son diagramme occupe une sc\u00e8ne de 298 px.\n   - Cibler : diagramme + R\u00e9sum\u00e9 par IA = ~296 px.\n   - Cr\u00e9er : diagramme centr\u00e9 dans une sc\u00e8ne de 298 px.\n   - R\u00e9diger : \u00e9diteur + boutons centr\u00e9s dans une sc\u00e8ne de 298 px.\n\n   La zone du bas fait aussi la m\u00eame hauteur sur les 5 cartes,\n   ce qui aligne pr\u00e9cis\u00e9ment les s\u00e9parateurs et les textes.\n   ========================================================== *\/\n\n@media (min-width:1351px){\n\n    \/* -------- ZONE VISUELLE COMMUNE -------- *\/\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:298px;\n        align-items:center;\n    }\n\n    \/* Cibler a le bouton \"R\u00e9sum\u00e9 par IA\" sous son SVG :\n       236 + ~60 = environ la m\u00eame hauteur visuelle. *\/\n    .dia-cibler-visual{\n        min-height:236px;\n        align-items:center;\n    }\n\n\n    \/* -------- ZONE TEXTE COMMUNE -------- *\/\n\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        height:122px;\n        min-height:122px;\n        padding-top:0;\n        flex:0 0 122px;\n    }\n\n    .dia-cadrer-description,\n    .dia-comprendre-description,\n    .dia-cibler-description,\n    .dia-creer-description,\n    .dia-rediger-description{\n        margin-top:17px;\n    }\n\n\n    \/* -------- MICRO-AJUSTEMENTS OPTIQUES -------- *\/\n\n    \/* Les trois crit\u00e8res restent \u00e0 la taille que tu as valid\u00e9e.\n       On agrandit seulement tr\u00e8s l\u00e9g\u00e8rement le diagramme global. *\/\n    .dia-cibler-diagram{\n        width:min(100%,254px);\n    }\n\n    \/* Cr\u00e9er et R\u00e9diger utilisent la m\u00eame largeur optique. *\/\n    .dia-creer-diagram,\n    .dia-rediger-diagram{\n        width:min(100%,252px);\n    }\n}\n\n\n\n\/* ==========================================================\n   STABILISATION DESKTOP INTERM\u00c9DIAIRE \u2014 1101 \u00e0 1350 px\n\n   \u00c0 cette largeur, les 5 cartes restent c\u00f4te \u00e0 c\u00f4te mais leur\n   hauteur passe de 560 px \u00e0 520 px. On conserve donc une vraie\n   sc\u00e8ne visuelle commune au lieu de laisser chaque illustration\n   reprendre sa hauteur naturelle et remonter vers le header.\n\n   R\u00e9sultat :\n   - les visuels restent centr\u00e9s verticalement;\n   - les s\u00e9parateurs restent au m\u00eame niveau;\n   - la composition garde pratiquement le m\u00eame \u00e9quilibre quand\n     on redimensionne la fen\u00eatre;\n   - le mode tablette\/mobile n'est pas touch\u00e9.\n   ========================================================== *\/\n\n@media (min-width:1101px) and (max-width:1350px){\n\n    \/* -------- ESPACE AVANT LES VISUELS -------- *\/\n\n    .dia-comprendre-content{\n        padding-top:36px;\n    }\n\n    .dia-cibler-content{\n        padding-top:30px;\n    }\n\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:24px;\n    }\n\n\n    \/* -------- SC\u00c8NE VISUELLE STABLE -------- *\/\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:276px;\n        height:276px;\n        flex:0 0 276px;\n        align-items:center;\n    }\n\n    \/* Comprendre est naturellement beaucoup plus vertical.\n       On r\u00e9duit l\u00e9g\u00e8rement le SVG pour qu'il entre dans la\n       m\u00eame sc\u00e8ne sans pousser tout le reste de la carte. *\/\n    .dia-comprendre-diagram{\n        width:min(100%,224px);\n    }\n\n    \/* Cibler poss\u00e8de aussi le bouton R\u00e9sum\u00e9 par IA sous le SVG.\n       217 px de sc\u00e8ne + le bouton donnent une masse visuelle\n       comparable aux autres cartes. *\/\n    .dia-cibler-visual{\n        min-height:217px;\n        height:217px;\n        flex:0 0 217px;\n        align-items:center;\n    }\n\n    .dia-cibler-diagram{\n        width:min(100%,250px);\n    }\n\n    .dia-creer-diagram,\n    .dia-rediger-diagram{\n        width:min(100%,238px);\n    }\n\n\n    \/* -------- ZONE TEXTE DU BAS COMMUNE -------- *\/\n\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        height:110px;\n        min-height:110px;\n        flex:0 0 110px;\n        padding-top:0;\n    }\n\n    .dia-cadrer-description,\n    .dia-comprendre-description,\n    .dia-cibler-description,\n    .dia-creer-description,\n    .dia-rediger-description{\n        margin-top:15px;\n    }\n}\n\n\n\/* ==========================================================\n   ACCESSIBILIT\u00c9\n   ========================================================== *\/\n\n@media (prefers-reduced-motion:reduce){\n\n    .dia-active-gradient,\n    .dia-card-shell,\n    .dia-card,\n    .dia-card-badge,\n    .dia-arrow,\n\n    .dia-card-shell.is-active\n    .dia-cadrer-item,\n\n    .dia-card-shell.is-active\n    .dia-cadrer-icon,\n\n    .dia-card-shell.is-active\n    .dia-cadrer-divider::after,\n\n    .dia-card-shell.is-active\n    .dia-cadrer-description,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-person-node,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-line,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-reaction-node,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-reaction-icon,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-check-icon,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-divider::after,\n\n    .dia-card-shell.is-active\n    .dia-comprendre-description,\n\n    .dia-card-shell.is-active\n    .dia-cibler-person-node,\n\n    .dia-card-shell.is-active\n    .dia-cibler-connector,\n\n    .dia-card-shell.is-active\n    .dia-cibler-criterion,\n\n    .dia-card-shell.is-active\n    .dia-cibler-summary,\n\n    .dia-card-shell.is-active\n    .dia-cibler-summary-logo,\n\n    .dia-card-shell.is-active\n    .dia-cibler-divider::after,\n\n    .dia-card-shell.is-active\n    .dia-cibler-description{\n\n        transition:none !important;\n\n        animation:none !important;\n    }\n\n\n    .dia-cadrer-item,\n    .dia-cadrer-description,\n    .dia-comprendre-person-node,\n    .dia-comprendre-line,\n    .dia-comprendre-reaction-node,\n    .dia-comprendre-description,\n    .dia-cibler-person-node,\n    .dia-cibler-connector,\n    .dia-cibler-criterion,\n    .dia-cibler-summary,\n    .dia-cibler-description{\n\n        opacity:1;\n    }\n\n\n    .dia-cadrer-divider::after,\n    .dia-comprendre-divider::after,\n    .dia-cibler-divider::after{\n\n        transform:\n            scaleX(1);\n    }\n\n\n    .dia-comprendre-line,\n    .dia-cibler-connector{\n\n        stroke-dashoffset:0;\n    }\n}\n\n\n\n@media (prefers-reduced-motion:reduce){\n    .dia-card-shell.is-active .dia-creer-goal-node,\n    .dia-card-shell.is-active .dia-creer-flow-line,\n    .dia-card-shell.is-active .dia-creer-item-node,\n    .dia-card-shell.is-active .dia-creer-divider::after,\n    .dia-card-shell.is-active .dia-creer-description,\n    .dia-card-shell.is-active .dia-rediger-editor,\n    .dia-card-shell.is-active .dia-rediger-copy-line,\n    .dia-card-shell.is-active .dia-rediger-image-node,\n    .dia-card-shell.is-active .dia-rediger-separator-line,\n    .dia-card-shell.is-active .dia-rediger-toolbar-item,\n    .dia-card-shell.is-active .dia-rediger-button,\n    .dia-card-shell.is-active .dia-rediger-divider::after,\n    .dia-card-shell.is-active .dia-rediger-description{\n        transition:none !important;\n        animation:none !important;\n    }\n\n    .dia-creer-goal-node,\n    .dia-creer-flow-line,\n    .dia-creer-item-node,\n    .dia-creer-description,\n    .dia-rediger-editor,\n    .dia-rediger-copy-line,\n    .dia-rediger-image-node,\n    .dia-rediger-separator-line,\n    .dia-rediger-toolbar-item,\n    .dia-rediger-button,\n    .dia-rediger-description{\n        opacity:1;\n    }\n\n    .dia-creer-divider::after,\n    .dia-rediger-divider::after{\n        transform:scaleX(1);\n    }\n\n    .dia-creer-flow-line,\n    .dia-rediger-copy-line,\n    .dia-rediger-separator-line{\n        stroke-dashoffset:0;\n    }\n}\n\n\n\n\/* ==========================================================\n   PASSE FINALE \u2014 STABILISATION TABLETTE \/ MOBILE\n   + FONDS DES BLOCS CIBLER \/ CR\u00c9ER\n   ========================================================== *\/\n\n\/* Les bo\u00eetes SVG de Cibler et Cr\u00e9er utilisent maintenant\n   le m\u00eame esprit de fond que la carte 1 : blanc -> mauve p\u00e2le. *\/\n\n\/* -------- TABLETTE -------- *\/\n@media (max-width:1100px){\n\n    .dia-comprendre-content{\n        padding-top:36px;\n    }\n\n    .dia-cibler-content{\n        padding-top:30px;\n    }\n\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:28px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:262px;\n        height:262px;\n        flex:0 0 262px;\n        align-items:center;\n    }\n\n    .dia-cibler-visual{\n        min-height:208px;\n        height:208px;\n        flex:0 0 208px;\n        align-items:center;\n    }\n\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        height:112px;\n        min-height:112px;\n        flex:0 0 112px;\n        padding-top:0;\n    }\n\n    .dia-cadrer-description,\n    .dia-comprendre-description,\n    .dia-cibler-description,\n    .dia-creer-description,\n    .dia-rediger-description{\n        margin-top:15px;\n    }\n}\n\n\/* -------- MOBILE -------- *\/\n@media (max-width:767px){\n\n    .dia-comprendre-content{\n        padding-top:30px;\n    }\n\n    .dia-cibler-content{\n        padding-top:24px;\n    }\n\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:24px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:226px;\n        height:226px;\n        flex:0 0 226px;\n        align-items:center;\n    }\n\n    .dia-cibler-visual{\n        min-height:176px;\n        height:176px;\n        flex:0 0 176px;\n        align-items:center;\n    }\n\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        height:100px;\n        min-height:100px;\n        flex:0 0 100px;\n        padding-top:0;\n    }\n\n    .dia-cadrer-description,\n    .dia-comprendre-description,\n    .dia-cibler-description,\n    .dia-creer-description,\n    .dia-rediger-description{\n        margin-top:14px;\n    }\n}\n\n\/* -------- PETIT MOBILE -------- *\/\n@media (max-width:480px){\n\n    .dia-comprendre-content{\n        padding-top:24px;\n    }\n\n    .dia-cibler-content{\n        padding-top:20px;\n    }\n\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:20px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:210px;\n        height:210px;\n        flex:0 0 210px;\n        align-items:center;\n    }\n\n    .dia-cibler-visual{\n        min-height:164px;\n        height:164px;\n        flex:0 0 164px;\n        align-items:center;\n    }\n\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        height:94px;\n        min-height:94px;\n        flex:0 0 94px;\n        padding-top:0;\n    }\n\n    .dia-cadrer-description,\n    .dia-comprendre-description,\n    .dia-cibler-description,\n    .dia-creer-description,\n    .dia-rediger-description{\n        margin-top:12px;\n    }\n}\n\n\n\n\/* ==========================================================\n   PASSE FINALE \u2014 CENTRAGE VERTICAL TABLETTE \/ MOBILE\n   ========================================================== *\/\n@media (max-width:1100px){\n    .dia-comprendre-content,\n    .dia-cibler-content,\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:14px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        flex:1 1 auto;\n        min-height:250px;\n        height:auto;\n        align-items:center;\n        justify-content:center;\n    }\n\n    .dia-cibler-visual{\n        flex:1 1 auto;\n        min-height:200px;\n        height:auto;\n        align-items:center;\n        justify-content:center;\n    }\n\n    .dia-cibler-summary{\n        margin-top:10px;\n    }\n}\n\n@media (max-width:767px){\n    .dia-comprendre-content,\n    .dia-cibler-content,\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:12px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:238px;\n    }\n\n    .dia-cibler-visual{\n        min-height:188px;\n    }\n\n    .dia-cibler-summary{\n        margin-top:8px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-comprendre-content,\n    .dia-cibler-content,\n    .dia-creer-content,\n    .dia-rediger-content{\n        padding-top:10px;\n    }\n\n    .dia-comprendre-visual,\n    .dia-creer-visual,\n    .dia-rediger-visual{\n        min-height:224px;\n    }\n\n    .dia-cibler-visual{\n        min-height:178px;\n    }\n\n    .dia-cibler-summary{\n        margin-top:8px;\n    }\n}\n\n\n\n\/* ==========================================================\n   FIX ESPACEMENT \u2014 CIBLER TABLETTE \/ MOBILE\n\n   Cibler est la seule carte avec un \u00e9l\u00e9ment interm\u00e9diaire\n   (\"R\u00e9sum\u00e9 par IA\") entre le visuel principal et le s\u00e9parateur.\n   On lui r\u00e9serve donc un vrai espace de s\u00e9curit\u00e9 afin que la\n   pastille ne touche jamais la ligne du bas.\n   ========================================================== *\/\n\n@media (max-width:1100px){\n    .dia-cibler-visual{\n        min-height:182px;\n    }\n\n    .dia-cibler-summary{\n        margin-top:10px;\n        margin-bottom:18px;\n    }\n}\n\n@media (max-width:767px){\n    .dia-cibler-visual{\n        min-height:172px;\n    }\n\n    .dia-cibler-summary{\n        margin-top:8px;\n        margin-bottom:16px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-cibler-visual{\n        min-height:162px;\n    }\n\n    .dia-cibler-summary{\n        margin-top:8px;\n        margin-bottom:14px;\n    }\n}\n\n\n\n\/* ==========================================================\n   PASSE FINALE \u2014 ESPACE S\u00c9CURIT\u00c9 AVANT LE S\u00c9PARATEUR\n   SUR TOUTES LES CARTES EN TABLETTE \/ MOBILE\n   ========================================================== *\/\n@media (max-width:1100px){\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        padding-top:18px;\n        height:128px;\n        min-height:128px;\n        flex:0 0 128px;\n    }\n}\n\n@media (max-width:767px){\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        padding-top:16px;\n        height:116px;\n        min-height:116px;\n        flex:0 0 116px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        padding-top:14px;\n        height:108px;\n        min-height:108px;\n        flex:0 0 108px;\n    }\n}\n\n\n\n\/* ==========================================================\n   FIX FINAL \u2014 ESPACE DE S\u00c9CURIT\u00c9 AVANT LE S\u00c9PARATEUR\n   QUAND LE NAVIGATEUR EST D\u00c9ZOOM\u00c9 \/ DESKTOP LARGE\n\n   Les zones du bas ont une hauteur fixe. On garde cette hauteur,\n   mais on r\u00e9serve un vrai espace AVANT la ligne afin qu'elle ne\n   puisse jamais s'accoter au dernier \u00e9l\u00e9ment visuel.\n   ========================================================== *\/\n\n@media (min-width:1351px){\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        box-sizing:border-box;\n        padding-top:14px;\n    }\n}\n\n@media (min-width:1101px) and (max-width:1350px){\n    .dia-cadrer-bottom,\n    .dia-comprendre-bottom,\n    .dia-cibler-bottom,\n    .dia-creer-bottom,\n    .dia-rediger-bottom{\n        box-sizing:border-box;\n        padding-top:12px;\n    }\n}\n\n\n\n\/* ==========================================================\n   UX \/ INTERACTIONS \u2014 VIEWPORT, CONTR\u00d4LES, NAVIGATION MOBILE\n   ========================================================== *\/\n\n\/* Met r\u00e9ellement en pause les animations internes seulement lorsque\n   la section est hors viewport ou que l\u2019onglet est inactif.\n   Sur desktop, le hover ne met plus l\u2019autoplay en pause. *\/\n.dia-process.is-paused *,\n.dia-process.is-paused *::before,\n.dia-process.is-paused *::after{\n    animation-play-state:paused !important;\n}\n\n\/* Desktop : les cartes deviennent des \u00e9tapes s\u00e9lectionnables. *\/\n@media (min-width:1101px){\n    .dia-card-shell{\n        cursor:pointer;\n        outline:none;\n    }\n\n    .dia-card-shell:focus-visible .dia-card{\n        border-color:rgba(75,23,161,.78);\n        box-shadow:\n            0 0 0 3px rgba(198,169,255,.26),\n            0 16px 38px rgba(12,39,52,.10);\n    }\n}\n\n\/* Navigation tactile : dots uniquement sur tablette \/ mobile. *\/\n.dia-process-nav{\n    display:none;\n}\n\n@media (max-width:1100px){\n    .dia-process-inner{\n        touch-action:pan-y;\n    }\n\n    .dia-process-nav{\n        width:100%;\n        max-width:580px;\n        min-height:42px;\n        margin:16px auto 0;\n\n        display:flex;\n        align-items:center;\n        justify-content:center;\n\n        position:relative;\n        z-index:12;\n    }\n\n    .dia-process-dots{\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        gap:2px;\n    }\n\n    \/* Grande zone tactile, petit indicateur visuel. *\/\n    .dia-process-dot{\n        width:34px;\n        height:34px;\n        flex:0 0 34px;\n\n        position:relative;\n\n        padding:0;\n        border:0;\n        border-radius:999px;\n\n        background:transparent !important;\n        box-shadow:none !important;\n        cursor:pointer;\n\n        -webkit-tap-highlight-color:transparent;\n        touch-action:manipulation;\n    }\n\n    .dia-process-dot::before{\n        content:\"\";\n\n        width:11px;\n        height:11px;\n\n        position:absolute;\n        left:50%;\n        top:50%;\n\n        border-radius:999px;\n\n        background:rgba(75,23,161,.24);\n\n        transform:translate(-50%,-50%);\n\n        transition:\n            width .35s cubic-bezier(.2,.8,.2,1),\n            background .35s ease,\n            transform .22s ease;\n    }\n\n    .dia-process-dot.is-active::before{\n        width:28px;\n        background:\n            linear-gradient(\n                90deg,\n                var(--dia-purple-light),\n                var(--dia-purple-dark)\n            );\n    }\n\n    .dia-process-dot:active::before{\n        transform:translate(-50%,-50%) scale(.88);\n    }\n\n    .dia-process-dot:focus-visible{\n        outline:3px solid rgba(198,169,255,.55);\n        outline-offset:1px;\n    }\n}\n\n@media (max-width:480px){\n    .dia-process-nav{\n        margin-top:12px;\n    }\n\n    .dia-process-dot{\n        width:32px;\n        height:32px;\n        flex-basis:32px;\n    }\n\n    .dia-process-dot::before{\n        width:10px;\n        height:10px;\n    }\n\n    .dia-process-dot.is-active::before{\n        width:26px;\n    }\n}\n<\/style>\n\n\n<section class=\"dia-process\">\n\n<div class=\"dia-process-inner\">\n\n\n<div\n    class=\"dia-active-gradient\"\n    aria-hidden=\"true\">\n<\/div>\n\n\n<!-- ==================================================\n     1 \u2014 CADRER\n     ================================================== -->\n\n<div\n    class=\"dia-card-shell\"\n    data-step=\"0\">\n\n<article\n    class=\"dia-card dia-card--cadrer\">\n\n\n<div class=\"dia-card-header\">\n\n    <div class=\"dia-card-badge\">\n        1\n    <\/div>\n\n    <h3>\n        Define\n    <\/h3>\n\n<\/div>\n\n\n<div class=\"dia-cadrer-content\">\n\n\n<div class=\"dia-cadrer-list\">\n\n\n<div\n    class=\"dia-cadrer-item\"\n    style=\"--item-index:0;\">\n\n<span class=\"dia-cadrer-icon\">\n\n<svg\n    viewBox=\"0 0 32 32\"\n    aria-hidden=\"true\">\n\n<path\n    d=\"M6 10.5 16 5l10 5.5v11L16 27 6 21.5Z\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linejoin=\"round\"\n\/>\n\n<path\n    d=\"M6 10.5 16 16l10-5.5\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linejoin=\"round\"\n\/>\n\n<path\n    d=\"M16 16v11\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n\/>\n\n<path\n    d=\"m11 8 10 5.5\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n\/>\n\n<\/svg>\n\n<\/span>\n\n<span class=\"dia-cadrer-label\">\n    Offer\n<\/span>\n\n<\/div>\n\n\n<div\n    class=\"dia-cadrer-item\"\n    style=\"--item-index:1;\">\n\n<span class=\"dia-cadrer-icon\">\n\n<svg\n    viewBox=\"0 0 32 32\"\n    aria-hidden=\"true\">\n\n<circle\n    cx=\"12\"\n    cy=\"11\"\n    r=\"5\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n\/>\n\n<circle\n    cx=\"21.5\"\n    cy=\"13\"\n    r=\"4\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n\/>\n\n<path\n    d=\"M3.5 26c0-5 3.5-8 8.5-8s8.5 3 8.5 8\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n\/>\n\n<path\n    d=\"M19 19c1-.8 2.2-1.2 3.6-1.2 3.7 0 6.4 2.7 6.4 6.2\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n\/>\n\n<\/svg>\n\n<\/span>\n\n<span class=\"dia-cadrer-label\">\n    Target audience\n<\/span>\n\n<\/div>\n\n\n<div\n    class=\"dia-cadrer-item\"\n    style=\"--item-index:2;\">\n\n<span class=\"dia-cadrer-icon\">\n\n<svg\n    viewBox=\"0 0 32 32\"\n    aria-hidden=\"true\">\n\n<path\n    d=\"M6 7h20v15H14l-5 5v-5H6Z\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linejoin=\"round\"\n\/>\n\n<circle\n    cx=\"12\"\n    cy=\"14.5\"\n    r=\"1.5\"\n    fill=\"currentColor\"\n\/>\n\n<circle\n    cx=\"16\"\n    cy=\"14.5\"\n    r=\"1.5\"\n    fill=\"currentColor\"\n\/>\n\n<circle\n    cx=\"20\"\n    cy=\"14.5\"\n    r=\"1.5\"\n    fill=\"currentColor\"\n\/>\n\n<\/svg>\n\n<\/span>\n\n<span class=\"dia-cadrer-label\">\n    Tone\n<\/span>\n\n<\/div>\n\n\n<div\n    class=\"dia-cadrer-item\"\n    style=\"--item-index:3;\">\n\n<span class=\"dia-cadrer-icon\">\n\n<svg\n    viewBox=\"0 0 32 32\"\n    aria-hidden=\"true\">\n\n<path\n    d=\"M16 4 26 8v7c0 6.4-4.1 10.5-10 13-5.9-2.5-10-6.6-10-13V8Z\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linejoin=\"round\"\n\/>\n\n<path\n    d=\"m11 16 3.2 3.2L21 12.5\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n    stroke-linejoin=\"round\"\n\/>\n\n<\/svg>\n\n<\/span>\n\n<span class=\"dia-cadrer-label\">\n    Rules\n<\/span>\n\n<\/div>\n\n\n<div\n    class=\"dia-cadrer-item\"\n    style=\"--item-index:4;\">\n\n<span class=\"dia-cadrer-icon\">\n\n<svg\n    viewBox=\"0 0 32 32\"\n    aria-hidden=\"true\">\n\n<circle\n    cx=\"16\"\n    cy=\"16\"\n    r=\"11\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n\/>\n\n<path\n    d=\"M8 24 24 8\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n\/>\n\n<\/svg>\n\n<\/span>\n\n<span class=\"dia-cadrer-label\">\n    Avoid\n<\/span>\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"dia-cadrer-bottom\">\n\n<div\n    class=\"dia-cadrer-divider\"\n    aria-hidden=\"true\">\n<\/div>\n\n<p class=\"dia-cadrer-description\">\n    Define your offer, audiences, tone, and rules once. DiA uses them to personalize what it generates.\n<\/p>\n\n<\/div>\n\n\n<\/div>\n\n\n<\/article>\n\n<\/div>\n\n\n<div class=\"dia-arrow\">\n    \u203a\n<\/div>\n\n\n<!-- ==================================================\n     2 \u2014 COMPRENDRE\n     ================================================== -->\n\n<div\n    class=\"dia-card-shell\"\n    data-step=\"1\">\n\n<article\n    class=\"dia-card dia-card--comprendre\">\n\n\n<div class=\"dia-card-header\">\n\n    <div class=\"dia-card-badge\">\n        2\n    <\/div>\n\n    <h3>\n        Understand\n    <\/h3>\n\n<\/div>\n\n\n<div class=\"dia-comprendre-content\">\n\n\n<div\n    class=\"dia-comprendre-visual\"\n    aria-hidden=\"true\">\n\n\n<svg\n    class=\"dia-comprendre-diagram\"\n    viewBox=\"0 0 300 370\"\n    role=\"presentation\"\n    aria-hidden=\"true\">\n\n\n<path\n    class=\"dia-comprendre-line\"\n    style=\"--line-index:0;\"\n    pathLength=\"1\"\n    d=\"M45 88 V178 C45 198 54 210 71 210 H75 C83 210 82 222 82 240 V316\"\n\/>\n\n<path\n    class=\"dia-comprendre-line\"\n    style=\"--line-index:1;\"\n    pathLength=\"1\"\n    d=\"M150 88 V316\"\n\/>\n\n<path\n    class=\"dia-comprendre-line\"\n    style=\"--line-index:2;\"\n    pathLength=\"1\"\n    d=\"M255 88 V178 C255 198 246 210 229 210 H225 C217 210 218 222 218 240 V316\"\n\/>\n\n\n<g\n    class=\"dia-comprendre-person-node\"\n    style=\"--person-index:0;\">\n\n<circle\n    class=\"dia-comprendre-person-ring\"\n    cx=\"45\"\n    cy=\"52\"\n    r=\"36\"\n\/>\n\n<circle\n    class=\"dia-comprendre-person-shape\"\n    cx=\"45\"\n    cy=\"43\"\n    r=\"12\"\n\/>\n\n<path\n    class=\"dia-comprendre-person-shape\"\n    d=\"M24 75v-7c0-9 7.4-14.5 21-14.5S66 59 66 68v7c-5.7 4.3-12.7 6.5-21 6.5S29.7 79.3 24 75Z\"\n\/>\n\n<\/g>\n\n\n<g\n    class=\"dia-comprendre-person-node\"\n    style=\"--person-index:1;\">\n\n<circle\n    class=\"dia-comprendre-person-ring\"\n    cx=\"150\"\n    cy=\"52\"\n    r=\"36\"\n\/>\n\n<circle\n    class=\"dia-comprendre-person-shape\"\n    cx=\"150\"\n    cy=\"43\"\n    r=\"12\"\n\/>\n\n<path\n    class=\"dia-comprendre-person-shape\"\n    d=\"M129 75v-7c0-9 7.4-14.5 21-14.5S171 59 171 68v7c-5.7 4.3-12.7 6.5-21 6.5S134.7 79.3 129 75Z\"\n\/>\n\n<\/g>\n\n\n<g\n    class=\"dia-comprendre-person-node\"\n    style=\"--person-index:2;\">\n\n<circle\n    class=\"dia-comprendre-person-ring\"\n    cx=\"255\"\n    cy=\"52\"\n    r=\"36\"\n\/>\n\n<circle\n    class=\"dia-comprendre-person-shape\"\n    cx=\"255\"\n    cy=\"43\"\n    r=\"12\"\n\/>\n\n<path\n    class=\"dia-comprendre-person-shape\"\n    d=\"M234 75v-7c0-9 7.4-14.5 21-14.5S276 59 276 68v7c-5.7 4.3-12.7 6.5-21 6.5S239.7 79.3 234 75Z\"\n\/>\n\n<\/g>\n\n\n<circle\n    class=\"dia-comprendre-reaction-mask\"\n    cx=\"82\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n<circle\n    class=\"dia-comprendre-reaction-mask\"\n    cx=\"150\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n<circle\n    class=\"dia-comprendre-reaction-mask\"\n    cx=\"218\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n\n<g\n    class=\"dia-comprendre-reaction-node\"\n    style=\"--reaction-index:0;\">\n\n<circle\n    class=\"dia-comprendre-reaction-heart\"\n    cx=\"82\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n<path\n    class=\"dia-comprendre-reaction-icon\"\n    style=\"--reaction-index:0;\"\n    d=\"M82 329.7 70.8 318.9c-4.7-4.5-1.9-12 4.7-12 2.9 0 5.2 1.5 6.5 3.9 1.3-2.4 3.6-3.9 6.5-3.9 6.6 0 9.4 7.5 4.7 12Z\"\n\/>\n\n<\/g>\n\n\n<g\n    class=\"dia-comprendre-reaction-node\"\n    style=\"--reaction-index:1;\">\n\n<circle\n    class=\"dia-comprendre-reaction-star\"\n    cx=\"150\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n<path\n    class=\"dia-comprendre-reaction-icon\"\n    style=\"--reaction-index:1;\"\n    d=\"m150 300 4.8 9.7 10.7 1.6-7.8 7.6 1.9 10.7-9.6-5.1-9.6 5.1 1.9-10.7-7.8-7.6 10.7-1.6Z\"\n\/>\n\n<\/g>\n\n\n<g\n    class=\"dia-comprendre-reaction-node\"\n    style=\"--reaction-index:2;\">\n\n<circle\n    class=\"dia-comprendre-reaction-check-bg\"\n    cx=\"218\"\n    cy=\"316\"\n    r=\"25\"\n\/>\n\n<path\n    class=\"dia-comprendre-check-icon\"\n    style=\"--reaction-index:2;\"\n    d=\"m206.5 316.5 7.6 7.4 15.9-16.5\"\n\/>\n\n<\/g>\n\n\n<\/svg>\n\n\n<\/div>\n\n\n<div class=\"dia-comprendre-bottom\">\n\n<div\n    class=\"dia-comprendre-divider\"\n    aria-hidden=\"true\">\n<\/div>\n\n<p class=\"dia-comprendre-description\">\n    DiA analyzes the content behind your contacts\u2019 interactions to uncover what interests them.\n<\/p>\n\n<\/div>\n\n\n<\/div>\n\n\n<\/article>\n\n<\/div>\n\n\n<div class=\"dia-arrow\">\n    \u203a\n<\/div>\n\n\n<!-- ==================================================\n     3 \u2014 CIBLER\n     ================================================== -->\n\n<div\n    class=\"dia-card-shell\"\n    data-step=\"2\">\n\n<article\n    class=\"dia-card dia-card--cibler\">\n\n\n<div class=\"dia-card-header\">\n\n    <div class=\"dia-card-badge\">\n        3\n    <\/div>\n\n    <h3>\n        Target\n    <\/h3>\n\n<\/div>\n\n\n<div class=\"dia-cibler-content\">\n\n\n<div\n    class=\"dia-cibler-visual\"\n    aria-hidden=\"true\">\n\n\n<svg\n    class=\"dia-cibler-diagram\"\n    viewBox=\"0 0 300 260\"\n    role=\"presentation\"\n    aria-hidden=\"true\">\n\n<defs>\n\n<linearGradient id=\"diaCiblerBoxGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n    <stop offset=\"0%\" stop-color=\"#ffffff\"\/>\n    <stop offset=\"100%\" stop-color=\"#f9f5fe\"\/>\n<\/linearGradient>\n\n<\/defs>\n\n\n<!-- CONNECTEUR PERSONNE -> TRONC -->\n\n<path\n    class=\"dia-cibler-connector\"\n    style=\"--line-index:0;\"\n    pathLength=\"1\"\n    d=\"M83 130 H100\"\n\/>\n\n\n<!-- TRONC -->\n\n<path\n    class=\"dia-cibler-connector\"\n    style=\"--line-index:1;\"\n    pathLength=\"1\"\n    d=\"M100 45 V215\"\n\/>\n\n\n<!-- BRANCHES -->\n\n<path\n    class=\"dia-cibler-connector\"\n    style=\"--line-index:2;\"\n    pathLength=\"1\"\n    d=\"\n        M100 45 H114\n        M100 130 H114\n        M100 215 H114\n    \"\n\/>\n\n\n<!-- PERSONNE -->\n\n<g class=\"dia-cibler-person-node\">\n\n<circle\n    class=\"dia-cibler-person-ring\"\n    cx=\"48\"\n    cy=\"130\"\n    r=\"35\"\n\/>\n\n<circle\n    class=\"dia-cibler-person-shape\"\n    cx=\"48\"\n    cy=\"120\"\n    r=\"11.5\"\n\/>\n\n<path\n    class=\"dia-cibler-person-shape\"\n    d=\"\n        M27 152\n        v-7\n        c0-8.7 7.3-14 21-14\n        s21 5.3 21 14\n        v7\n        c-5.7 4.1-12.7 6.3-21 6.3\n        S32.7 156.1 27 152Z\n    \"\n\/>\n\n<\/g>\n\n\n<!-- ==================================================\n     \u00c2GE\n     ================================================== -->\n\n<g\n    class=\"dia-cibler-criterion\"\n    style=\"--criterion-index:0;\">\n\n\n<rect\n    class=\"dia-cibler-criterion-box\"\n    fill=\"url(#diaCiblerBoxGradient)\"\n    x=\"114\"\n    y=\"20\"\n    width=\"174\"\n    height=\"50\"\n    rx=\"10\"\n\/>\n\n\n<g class=\"dia-cibler-criterion-icon\">\n\n<circle\n    cx=\"136\"\n    cy=\"37\"\n    r=\"6\"\n\/>\n\n<path\n    d=\"\n        M126.5 57\n        c0-7.5 4-11.5 9.5-11.5\n        s9.5 4 9.5 11.5\n    \"\n\/>\n\n<\/g>\n\n\n<text\n    class=\"dia-cibler-criterion-text\"\n    x=\"160\"\n    y=\"46\">\n    Age\n<\/text>\n\n\n<\/g>\n\n\n<!-- ==================================================\n     LOCALISATION\n     ================================================== -->\n\n<g\n    class=\"dia-cibler-criterion\"\n    style=\"--criterion-index:1;\">\n\n\n<rect\n    class=\"dia-cibler-criterion-box\"\n    fill=\"url(#diaCiblerBoxGradient)\"\n    x=\"114\"\n    y=\"105\"\n    width=\"174\"\n    height=\"50\"\n    rx=\"10\"\n\/>\n\n\n<g class=\"dia-cibler-criterion-icon\">\n\n\n<path\n    d=\"\n        M136 117\n        c-6.5 0-11 5.1-11 11.6\n        0 8.5 11 20.5 11 20.5\n        s11-12 11-20.5\n        c0-6.5-4.5-11.6-11-11.6Z\n    \"\n\/>\n\n\n<circle\n    cx=\"136\"\n    cy=\"128.5\"\n    r=\"3.8\"\n\/>\n\n\n<\/g>\n\n\n<text\n    class=\"dia-cibler-criterion-text\"\n    x=\"160\"\n    y=\"131\">\n    Location\n<\/text>\n\n\n<\/g>\n\n\n<!-- ==================================================\n     ACHAT \/ INT\u00c9R\u00caT\n     Panier compact\u00e9 pour \u00e9viter tout chevauchement\n     ================================================== -->\n\n<g\n    class=\"dia-cibler-criterion\"\n    style=\"--criterion-index:2;\">\n\n\n<rect\n    class=\"dia-cibler-criterion-box\"\n    fill=\"url(#diaCiblerBoxGradient)\"\n    x=\"114\"\n    y=\"190\"\n    width=\"174\"\n    height=\"50\"\n    rx=\"10\"\n\/>\n\n\n<g class=\"dia-cibler-criterion-icon\">\n\n\n<path\n    d=\"\n        M124 201\n        h4\n        l3.6 21\n        h20\n        l3.7-15\n        h-25.2\n    \"\n\/>\n\n\n<path\n    d=\"\n        M132 226\n        H152\n    \"\n\/>\n\n\n<circle\n    class=\"dia-cibler-criterion-fill\"\n    cx=\"135.5\"\n    cy=\"231\"\n    r=\"2\"\n\/>\n\n\n<circle\n    class=\"dia-cibler-criterion-fill\"\n    cx=\"149\"\n    cy=\"231\"\n    r=\"2\"\n\/>\n\n\n<\/g>\n\n\n<text\n    class=\"dia-cibler-criterion-text\"\n    x=\"160\"\n    y=\"216\"\n    style=\"font-size:14px;\">\n    Purchase\/Interest\n<\/text>\n\n\n<\/g>\n\n\n<\/svg>\n\n\n<\/div>\n\n\n<!-- ==================================================\n     R\u00c9SUM\u00c9 PAR IA\n     ================================================== -->\n\n<div class=\"dia-cibler-summary\">\n\n\n<span\n    class=\"dia-cibler-summary-logo\"\n    aria-hidden=\"true\">\n\n\n<svg\n    viewBox=\"0 0 1080 1440\"\n    aria-hidden=\"true\">\n\n\n<ellipse\n    class=\"dia-cibler-summary-logo-dot\"\n    cx=\"540\"\n    cy=\"144.07\"\n    rx=\"135.33\"\n    ry=\"135.2\"\n\/>\n\n\n<path\n    class=\"dia-cibler-summary-logo-star\"\n    d=\"\n        M419.14,497.85\n        l-12.03,77.61\n        c-16.33,105.36-98.99,188.01-204.34,204.34\n        l-77.61,12.03\n        c-138.1,21.4-138.1,220.32,0,241.73\n        l77.61,12.03\n        c105.36,16.33,188.01,98.99,204.34,204.34\n        l12.03,77.61\n        c21.4,138.1,220.32,138.1,241.73,0\n        l12.03-77.61\n        c16.33-105.35,98.99-188.01,204.34-204.34\n        l77.61-12.03\n        c138.1-21.41,138.1-220.33,0-241.73\n        l-77.61-12.03\n        c-105.35-16.33-188.01-98.99-204.34-204.34\n        l-12.03-77.61\n        c-21.41-138.1-220.33-138.1-241.73,0Z\n    \"\n\/>\n\n\n<\/svg>\n\n\n<\/span>\n\n\n<span>\n    AI summary\n<\/span>\n\n\n<\/div>\n\n\n<div class=\"dia-cibler-bottom\">\n\n\n<div\n    class=\"dia-cibler-divider\"\n    aria-hidden=\"true\">\n<\/div>\n\n\n<p class=\"dia-cibler-description\">\n    Describe your audience. DiA turns your intent into segmentation criteria and summarizes the targeting.\n<\/p>\n\n\n<\/div>\n\n\n<\/div>\n\n\n<\/article>\n\n<\/div>\n\n\n<div class=\"dia-arrow\">\n    \u203a\n<\/div>\n\n\n<!-- ==================================================\n     4 \u2014 CR\u00c9ER\n     ================================================== -->\n\n<div\n    class=\"dia-card-shell\"\n    data-step=\"3\">\n\n<article class=\"dia-card dia-card--creer\">\n\n<div class=\"dia-card-header\">\n\n    <div class=\"dia-card-badge\">\n        4\n    <\/div>\n\n    <h3>\n        Create\n    <\/h3>\n\n<\/div>\n\n\n<div class=\"dia-creer-content\">\n\n<div\n    class=\"dia-creer-visual\"\n    aria-hidden=\"true\">\n\n<svg\n    class=\"dia-creer-diagram\"\n    viewBox=\"0 0 300 305\"\n    role=\"presentation\"\n    aria-hidden=\"true\">\n\n<defs>\n\n<linearGradient id=\"diaCreerBoxGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n    <stop offset=\"0%\" stop-color=\"#ffffff\"\/>\n    <stop offset=\"100%\" stop-color=\"#f9f5fe\"\/>\n<\/linearGradient>\n\n<\/defs>\n\n\n<!-- Ligne verticale derri\u00e8re les blocs -->\n\n<path\n    class=\"dia-creer-flow-line\"\n    pathLength=\"1\"\n    d=\"M150 86 V284\"\n\/>\n\n\n<!-- Masques opaques : cachent la ligne sous les blocs m\u00eame en \u00e9tat inactif -->\n<rect\n    class=\"dia-creer-line-mask\"\n    x=\"26\"\n    y=\"124\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n<rect\n    class=\"dia-creer-line-mask\"\n    x=\"26\"\n    y=\"184\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n<rect\n    class=\"dia-creer-line-mask\"\n    x=\"26\"\n    y=\"244\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n\n<!-- OBJECTIF -->\n\n<g class=\"dia-creer-goal-node\">\n\n<rect\n    class=\"dia-creer-box\"\n    fill=\"url(#diaCreerBoxGradient)\"\n    x=\"103\"\n    y=\"8\"\n    width=\"94\"\n    height=\"78\"\n    rx=\"11\"\n\/>\n\n<!-- Ic\u00f4ne cible approuv\u00e9e, vectoris\u00e9e depuis l'aper\u00e7u -->\n<g transform=\"translate(125 20) scale(.29)\">\n    <path\n        class=\"dia-creer-approved-icon\"\n        d=\"M65 48L50 56L43 63L39 69L34 80L32 89L32 97L34 107L41 122L51 132L63 138L71 140L87 140L98 137L106 132L116 123L124 107L125 84L120 72L113 78L116 90L114 107L109 116L101 124L94 128L85 131L73 131L62 127L47 113L47 111L43 104L42 88L46 76L55 65L66 58L72 56L83 56L93 59L100 52L93 48L88 47ZM65 15L51 19L37 26L30 31L17 44L9 56L3 71L0 86L0 102L2 108L2 113L11 135L19 146L27 154L38 162L53 169L72 173L90 173L108 168L125 159L138 147L146 136L153 122L157 107L158 88L155 72L149 58L144 57L138 59L144 69L148 83L148 103L146 113L138 131L132 139L120 150L105 159L90 163L67 163L55 160L43 154L36 149L22 134L14 119L10 104L10 83L13 71L19 58L24 51L38 37L51 29L69 24L91 24L96 26L100 26L111 32L113 32L113 28L115 25L114 22L98 16L83 15L82 14ZM154 0L123 29L121 44L91 75L89 76L84 74L73 74L66 78L62 82L59 91L59 98L62 105L66 109L76 114L77 113L85 113L91 110L96 105L99 97L99 90L96 82L123 55L129 51L142 49L172 21L171 20L154 20L152 18L155 3Z\"\n    \/>\n<\/g>\n\n<\/g>\n\n\n<!-- SEGMENT -->\n\n<g\n    class=\"dia-creer-item-node\"\n    style=\"--item-index:0;\">\n\n<rect\n    class=\"dia-creer-box\"\n    fill=\"url(#diaCreerBoxGradient)\"\n    x=\"26\"\n    y=\"124\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n<!-- Ic\u00f4ne 2 avatars approuv\u00e9e -->\n<g transform=\"translate(52 130) scale(.20)\">\n    <path\n        class=\"dia-creer-approved-icon\"\n        d=\"M42 26L31 36L26 45L25 70L32 84L49 96L47 98L38 99L23 105L7 120L0 136L1 137L2 162L7 167L15 170L110 170L118 167L123 162L124 159L124 136L117 119L101 105L77 97L79 94L92 85L100 69L100 50L95 39L83 27L67 21L56 21ZM108 1L100 5L93 13L93 15L108 31L108 33L115 47L115 71L106 91L118 98L126 106L137 124L138 132L160 131L164 129L169 123L168 95L161 83L155 77L144 70L128 66L145 49L149 38L148 22L141 10L135 5L120 0Z\"\n    \/>\n<\/g>\n\n<text\n    class=\"dia-creer-text\"\n    x=\"118\"\n    y=\"148\">\n    Segment\n<\/text>\n\n<\/g>\n\n\n<!-- SC\u00c9NARIO -->\n\n<g\n    class=\"dia-creer-item-node\"\n    style=\"--item-index:1;\">\n\n<rect\n    class=\"dia-creer-box\"\n    fill=\"url(#diaCreerBoxGradient)\"\n    x=\"26\"\n    y=\"184\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n<!-- Ic\u00f4ne sc\u00e9nario approuv\u00e9e -->\n<g transform=\"translate(48 195) scale(.22)\">\n    <path\n        class=\"dia-creer-approved-icon\"\n        d=\"M147 78L158 78L166 84L169 90L169 98L167 103L162 108L155 111L150 111L145 109L137 101L136 98L136 91L138 86ZM0 89L1 102L7 110L14 113L24 113L30 110L36 104L40 95L131 95L135 105L142 112L147 114L159 114L165 111L170 106L172 102L172 86L163 76L158 74L148 74L141 77L135 83L133 90L131 92L89 92L87 90L87 43L88 38L96 34L100 30L103 24L102 9L95 2L90 0L79 0L75 2L69 8L67 12L68 27L75 34L82 36L84 39L84 90L82 92L40 92L38 90L35 82L31 78L25 75L15 75L9 77L3 83Z\"\n    \/>\n<\/g>\n\n<text\n    class=\"dia-creer-text\"\n    x=\"118\"\n    y=\"208\">\n    Scenario\n<\/text>\n\n<\/g>\n\n\n<!-- CAMPAGNE -->\n\n<g\n    class=\"dia-creer-item-node\"\n    style=\"--item-index:2;\">\n\n<rect\n    class=\"dia-creer-box\"\n    fill=\"url(#diaCreerBoxGradient)\"\n    x=\"26\"\n    y=\"244\"\n    width=\"248\"\n    height=\"46\"\n    rx=\"10\"\n\/>\n\n<!-- Ic\u00f4ne avion approuv\u00e9e -->\n<g transform=\"translate(50 252) scale(.20)\">\n    <path\n        class=\"dia-creer-approved-icon\"\n        d=\"M168 0L164 0L144 10L134 12L102 27L11 62L0 68L0 72L6 77L28 92L35 93L131 30L134 31L132 35L120 47L50 109L50 150L55 151L81 123L95 130L116 145L121 145L123 143L170 9L170 4Z\"\n    \/>\n<\/g>\n\n<text\n    class=\"dia-creer-text\"\n    x=\"118\"\n    y=\"268\">\n    Campaign\n<\/text>\n\n<\/g>\n\n\n<\/svg>\n\n<\/div>\n\n\n<div class=\"dia-creer-bottom\">\n\n<div\n    class=\"dia-creer-divider\"\n    aria-hidden=\"true\">\n<\/div>\n\n<p class=\"dia-creer-description\">\n    Tell DiA your objective. It suggests a segment and campaign scenario that you can adjust and approve.\n<\/p>\n\n<\/div>\n\n<\/div>\n\n<\/article>\n\n<\/div>\n\n\n<div class=\"dia-arrow\">\n    \u203a\n<\/div>\n\n\n<!-- ==================================================\n     5 \u2014 R\u00c9DIGER\n     ================================================== -->\n\n<div\n    class=\"dia-card-shell\"\n    data-step=\"4\">\n\n<article class=\"dia-card dia-card--rediger\">\n\n<div class=\"dia-card-header\">\n\n    <div class=\"dia-card-badge\">\n        5\n    <\/div>\n\n    <h3>\n        Write\n    <\/h3>\n\n<\/div>\n\n\n<div class=\"dia-rediger-content\">\n\n<div\n    class=\"dia-rediger-visual\"\n    aria-hidden=\"true\">\n\n<svg\n    class=\"dia-rediger-diagram\"\n    viewBox=\"0 0 300 280\"\n    role=\"presentation\"\n    aria-hidden=\"true\">\n\n\n<!-- \u00c9DITEUR -->\n<g class=\"dia-rediger-editor\">\n\n<rect\n    class=\"dia-rediger-editor-box\"\n    x=\"24\"\n    y=\"10\"\n    width=\"252\"\n    height=\"168\"\n    rx=\"10\"\n\/>\n\n<\/g>\n\n\n<!-- LIGNES DE TEXTE -->\n<path\n    class=\"dia-rediger-copy-line\"\n    style=\"--line-index:0;\"\n    pathLength=\"1\"\n    d=\"M42 38 H145\"\n\/>\n\n<path\n    class=\"dia-rediger-copy-line\"\n    style=\"--line-index:1;\"\n    pathLength=\"1\"\n    d=\"M42 58 H145\"\n\/>\n\n<path\n    class=\"dia-rediger-copy-line\"\n    style=\"--line-index:2;\"\n    pathLength=\"1\"\n    d=\"M42 78 H145\"\n\/>\n\n<path\n    class=\"dia-rediger-copy-line\"\n    style=\"--line-index:3;\"\n    pathLength=\"1\"\n    d=\"M42 98 H145\"\n\/>\n\n\n<!-- IMAGE -->\n<g class=\"dia-rediger-image-node\">\n\n<rect\n    class=\"dia-rediger-image-box\"\n    x=\"166\"\n    y=\"29\"\n    width=\"87\"\n    height=\"68\"\n    rx=\"5\"\n\/>\n\n<circle\n    class=\"dia-rediger-image-dot\"\n    cx=\"226\"\n    cy=\"48\"\n    r=\"6.5\"\n\/>\n\n<path\n    class=\"dia-rediger-image-shape\"\n    d=\"M171 86 L193 62 L220 86 L233 74 L249 88\"\n\/>\n\n<\/g>\n\n\n<!-- S\u00c9PARATEUR INTERNE -->\n<path\n    class=\"dia-rediger-separator-line\"\n    pathLength=\"1\"\n    d=\"M42 116 H257\"\n\/>\n\n<path\n    class=\"dia-rediger-copy-line\"\n    style=\"--line-index:4;\"\n    pathLength=\"1\"\n    d=\"M42 135 H184\"\n\/>\n\n\n<!-- BARRE D\u2019OUTILS -->\n<g\n    class=\"dia-rediger-toolbar-item\"\n    style=\"--tool-index:0;\">\n\n<text\n    class=\"dia-rediger-toolbar-text dia-rediger-toolbar-bold\"\n    x=\"44\"\n    y=\"163\">\n    B\n<\/text>\n\n<\/g>\n\n<g\n    class=\"dia-rediger-toolbar-item\"\n    style=\"--tool-index:1;\">\n\n<text\n    class=\"dia-rediger-toolbar-text dia-rediger-toolbar-italic\"\n    x=\"91\"\n    y=\"163\">\n    I\n<\/text>\n\n<\/g>\n\n<g\n    class=\"dia-rediger-toolbar-item\"\n    style=\"--tool-index:2;\">\n\n<text\n    class=\"dia-rediger-toolbar-text\"\n    x=\"135\"\n    y=\"163\">\n    U\n<\/text>\n\n<path\n    class=\"dia-rediger-toolbar-underline\"\n    d=\"M135 168 H151\"\n\/>\n\n<\/g>\n\n<g\n    class=\"dia-rediger-toolbar-item\"\n    style=\"--tool-index:3;\">\n\n<g transform=\"translate(186.2 143.2) scale(.96)\">\n\n<path\n    class=\"dia-rediger-link-icon\"\n    d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n\/>\n\n<path\n    class=\"dia-rediger-link-icon\"\n    d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n\/>\n\n<\/g>\n\n<\/g>\n\n\n<!-- BOUTONS -->\n<g\n    class=\"dia-rediger-button\"\n    style=\"--button-index:0;\">\n\n<rect\n    class=\"dia-rediger-button-secondary\"\n    x=\"31\"\n    y=\"209\"\n    width=\"108\"\n    height=\"45\"\n    rx=\"10\"\n\/>\n\n<text\n    class=\"dia-rediger-button-text-secondary\"\n    x=\"85\"\n    y=\"236\"\n    text-anchor=\"middle\">\n    Review\n<\/text>\n\n<\/g>\n\n<g\n    class=\"dia-rediger-button\"\n    style=\"--button-index:1;\">\n\n<rect\n    class=\"dia-rediger-button-primary\"\n    x=\"161\"\n    y=\"209\"\n    width=\"108\"\n    height=\"45\"\n    rx=\"10\"\n\/>\n\n<text\n    class=\"dia-rediger-button-text-primary\"\n    x=\"215\"\n    y=\"236\"\n    text-anchor=\"middle\">\n    Approve\n<\/text>\n\n<\/g>\n\n\n<\/svg>\n\n<\/div>\n\n\n<div class=\"dia-rediger-bottom\">\n\n<div\n    class=\"dia-rediger-divider\"\n    aria-hidden=\"true\">\n<\/div>\n\n<p class=\"dia-rediger-description\">\n    DiA writes your messages in the context of your campaign. You review and approve them before sending.\n<\/p>\n\n<\/div>\n\n<\/div>\n\n<\/article>\n\n<\/div>\n\n\n<\/div>\n\n<\/section>\n\n\n<script>\n(function(){\n\nfunction initDiaProcess(){\n\n    const sections = document.querySelectorAll('.dia-process');\n\n    if(!sections.length){\n        return;\n    }\n\n    sections.forEach(function(section){\n\n        if(section.dataset.diaInitialized === 'true'){\n            return;\n        }\n\n        section.dataset.diaInitialized = 'true';\n\n        const inner = section.querySelector('.dia-process-inner');\n        const gradient = section.querySelector('.dia-active-gradient');\n        const cards = Array.from(section.querySelectorAll('.dia-card-shell'));\n        const arrows = Array.from(section.querySelectorAll('.dia-arrow'));\n\n        if(!inner || !gradient || !cards.length){\n            return;\n        }\n\n        let currentStep = 0;\n        let timer = null;\n        let resizeTimer = null;\n\n        let isInViewport = false;\n        let isHoveringActive = false;\n        let isTouchingActive = false;\n        let hasStarted = false;\n\n        let touchStartX = 0;\n        let touchStartY = 0;\n\n        \/* Temps de lecture uniforme APR\u00c8S la fin de l'animation\n           de contenu de chaque carte. Les vitesses CSS restent intactes. *\/\n        const readingDelay = 2800;\n\n        \/* Dur\u00e9e r\u00e9elle de l'animation de contenu de chaque carte :\n           1 Cadrer     : 1.72 s\n           2 Comprendre : 2.46 s\n           3 Cibler     : 2.50 s\n           4 Cr\u00e9er      : 2.22 s\n           5 R\u00e9diger    : 2.58 s *\/\n        const contentAnimationDurations = [\n            1720,\n            2460,\n            2500,\n            2220,\n            2580\n        ];\n\n        const viewportThreshold = 0.35;\n\n        const reduceMotion = window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n        const finePointer = window.matchMedia(\n            '(hover: hover) and (pointer: fine)'\n        );\n\n\n        \/* ==================================================\n           NAVIGATION MOBILE \/ TABLETTE\n           ================================================== *\/\n\n        const nav = document.createElement('div');\n        nav.className = 'dia-process-nav';\n        nav.setAttribute('aria-label', 'Choose a step in the DiA process');\n\n        const dotsWrap = document.createElement('div');\n        dotsWrap.className = 'dia-process-dots';\n\n        const dots = cards.map(function(card,index){\n            const dot = document.createElement('button');\n            const title = card.querySelector('h3');\n            const label = title ? title.textContent.trim() : ('Step ' + (index + 1));\n\n            dot.type = 'button';\n            dot.className = 'dia-process-dot';\n            dot.setAttribute(\n                'aria-label',\n                'Show step ' + (index + 1) + ': ' + label\n            );\n\n            dotsWrap.appendChild(dot);\n            return dot;\n        });\n\n        nav.appendChild(dotsWrap);\n        section.appendChild(nav);\n\n\n        \/* ==================================================\n           OUTILS TIMER \/ \u00c9TAT\n           ================================================== *\/\n\n        function stopTimer(){\n            if(timer !== null){\n                window.clearTimeout(timer);\n                timer = null;\n            }\n        }\n\n        function currentDelay(){\n            const animationDuration = reduceMotion\n                ? 0\n                : (contentAnimationDurations[currentStep] || 0);\n\n            return animationDuration + readingDelay;\n        }\n\n        function canAutoplay(){\n            return (\n                hasStarted &&\n                isInViewport &&\n                !isHoveringActive &&\n                !isTouchingActive &&\n                !document.hidden &&\n                !reduceMotion\n            );\n        }\n\n        function syncPausedState(){\n            const shouldPauseAnimations = (\n                !isInViewport ||\n                document.hidden\n            );\n\n            section.classList.toggle(\n                'is-paused',\n                shouldPauseAnimations\n            );\n        }\n\n        function scheduleNext(delay){\n            stopTimer();\n\n            if(!canAutoplay()){\n                return;\n            }\n\n            timer = window.setTimeout(\n                nextStep,\n                typeof delay === 'number' ? delay : currentDelay()\n            );\n        }\n\n\n        \/* ==================================================\n           POSITION DU GRADIENT\n           ================================================== *\/\n\n        function positionGradient(step){\n\n            if(window.innerWidth <= 1100){\n                return;\n            }\n\n            const card = cards[step];\n            const innerRect = inner.getBoundingClientRect();\n            const cardRect = card.getBoundingClientRect();\n            const gradientWidth = gradient.offsetWidth;\n\n            const cardCenter =\n                cardRect.left -\n                innerRect.left +\n                (cardRect.width \/ 2);\n\n            const x = cardCenter - (gradientWidth \/ 2);\n\n            inner.style.setProperty(\n                '--dia-gradient-x',\n                x + 'px'\n            );\n        }\n\n\n        \/* ==================================================\n           ACCESSIBILIT\u00c9 + CONTR\u00d4LES\n           ================================================== *\/\n\n        function syncCardAccessibility(){\n            const desktop = window.innerWidth > 1100;\n\n            cards.forEach(function(card,index){\n                const title = card.querySelector('h3');\n                const label = title ? title.textContent.trim() : ('Step ' + (index + 1));\n\n                if(desktop){\n                    card.setAttribute('tabindex','0');\n                    card.setAttribute('role','button');\n                    card.setAttribute(\n                        'aria-label',\n                        'Show step ' + (index + 1) + ': ' + label\n                    );\n                }else{\n                    card.setAttribute('tabindex','-1');\n                    card.removeAttribute('role');\n                    card.removeAttribute('aria-label');\n                }\n            });\n        }\n\n        function updateControls(){\n            dots.forEach(function(dot,index){\n                const active = index === currentStep;\n\n                dot.classList.toggle('is-active', active);\n\n                if(active){\n                    dot.setAttribute('aria-current','step');\n                }else{\n                    dot.removeAttribute('aria-current');\n                }\n            });\n        }\n\n\n        \/* ==================================================\n           ACTIVE UNE CARTE\n           ================================================== *\/\n\n        function activateStep(step){\n\n            if(step < 0){\n                step = cards.length - 1;\n            }\n\n            if(step >= cards.length){\n                step = 0;\n            }\n\n            currentStep = step;\n\n            cards.forEach(function(card,index){\n                card.classList.toggle(\n                    'is-active',\n                    index === step\n                );\n\n                card.classList.toggle(\n                    'is-past',\n                    index < step\n                );\n            });\n\n            arrows.forEach(function(arrow,index){\n                arrow.classList.toggle(\n                    'is-active',\n                    index === step\n                );\n            });\n\n            updateControls();\n            positionGradient(step);\n        }\n\n\n        \/* ==================================================\n           AUTO PLAY\n           ================================================== *\/\n\n        function nextStep(){\n            if(!canAutoplay()){\n                stopTimer();\n                return;\n            }\n\n            activateStep(currentStep + 1);\n\n            if(\n                window.innerWidth > 1100 &&\n                finePointer.matches &&\n                cards[currentStep] &&\n                cards[currentStep].matches(':hover')\n            ){\n                isHoveringActive = true;\n                stopTimer();\n                return;\n            }\n\n            isHoveringActive = false;\n            scheduleNext(currentDelay());\n        }\n\n\n        \/* ==================================================\n           PRISE DE CONTR\u00d4LE MANUELLE\n           ================================================== *\/\n\n        function manualStep(step){\n            stopTimer();\n            activateStep(step);\n\n            if(\n                window.innerWidth > 1100 &&\n                finePointer.matches &&\n                cards[step] &&\n                cards[step].matches(':hover')\n            ){\n                isHoveringActive = true;\n                return;\n            }\n\n            isHoveringActive = false;\n            scheduleNext(currentDelay());\n        }\n\n        dots.forEach(function(dot,index){\n            dot.addEventListener('click', function(){\n                manualStep(index);\n            });\n        });\n\n        cards.forEach(function(card,index){\n            card.addEventListener('click', function(){\n                if(window.innerWidth > 1100){\n                    manualStep(index);\n                }\n            });\n\n            card.addEventListener('keydown', function(event){\n                if(\n                    window.innerWidth > 1100 &&\n                    (event.key === 'Enter' || event.key === ' ')\n                ){\n                    event.preventDefault();\n                    manualStep(index);\n                }\n            });\n        });\n\n\n        \/* ==================================================\n           PAUSE AU HOVER \u2014 CARTE ACTIVE DESKTOP UNIQUEMENT\n           ================================================== *\/\n\n        cards.forEach(function(card){\n            card.addEventListener('mouseenter', function(){\n                if(!finePointer.matches || window.innerWidth <= 1100){\n                    return;\n                }\n\n                if(!card.classList.contains('is-active')){\n                    return;\n                }\n\n                isHoveringActive = true;\n                stopTimer();\n            });\n\n            card.addEventListener('mouseleave', function(){\n                if(!finePointer.matches || window.innerWidth <= 1100){\n                    return;\n                }\n\n                if(isHoveringActive){\n                    isHoveringActive = false;\n                    scheduleNext(currentDelay());\n                }\n            });\n        });\n\n\n        \/* ==================================================\n           SWIPE MOBILE \/ TABLETTE\n           ================================================== *\/\n\n        inner.addEventListener(\n            'touchstart',\n            function(event){\n                if(window.innerWidth > 1100 || !event.touches.length){\n                    return;\n                }\n\n                touchStartX = event.touches[0].clientX;\n                touchStartY = event.touches[0].clientY;\n\n                const touchedCard = event.target.closest('.dia-card-shell');\n\n                if(\n                    touchedCard &&\n                    touchedCard.classList.contains('is-active')\n                ){\n                    isTouchingActive = true;\n                    stopTimer();\n                }\n            },\n            {passive:true}\n        );\n\n        inner.addEventListener(\n            'touchend',\n            function(event){\n                if(window.innerWidth > 1100 || !event.changedTouches.length){\n                    return;\n                }\n\n                const endX = event.changedTouches[0].clientX;\n                const endY = event.changedTouches[0].clientY;\n\n                const deltaX = endX - touchStartX;\n                const deltaY = endY - touchStartY;\n\n                const horizontalSwipe =\n                    Math.abs(deltaX) >= 52 &&\n                    Math.abs(deltaX) > Math.abs(deltaY) * 1.25;\n\n                const wasTouchingActive = isTouchingActive;\n                isTouchingActive = false;\n\n                if(horizontalSwipe){\n                    if(deltaX < 0){\n                        manualStep(currentStep + 1);\n                    }else{\n                        manualStep(currentStep - 1);\n                    }\n                    return;\n                }\n\n                if(wasTouchingActive){\n                    scheduleNext(currentDelay());\n                }\n            },\n            {passive:true}\n        );\n\n        inner.addEventListener(\n            'touchcancel',\n            function(){\n                if(window.innerWidth > 1100){\n                    return;\n                }\n\n                if(isTouchingActive){\n                    isTouchingActive = false;\n                    scheduleNext(currentDelay());\n                }\n            },\n            {passive:true}\n        );\n\n\n        \/* ==================================================\n           VIEWPORT \u2014 D\u00c9MARRAGE \/ PAUSE INTELLIGENTE\n           ================================================== *\/\n\n        const observer = new IntersectionObserver(\n            function(entries){\n                entries.forEach(function(entry){\n\n                    const visible =\n                        entry.isIntersecting &&\n                        entry.intersectionRatio >= viewportThreshold;\n\n                    if(visible){\n                        isInViewport = true;\n\n                        if(!hasStarted){\n                            hasStarted = true;\n                            activateStep(currentStep);\n                        }\n\n                        syncPausedState();\n                        scheduleNext(currentDelay());\n\n                    }else{\n                        const wasInViewport = isInViewport;\n\n                        isInViewport = false;\n                        stopTimer();\n                        syncPausedState();\n\n                        \/* Hors viewport, le timer est simplement arr\u00eat\u00e9.\n                           Il repartira au prochain passage, quel que soit l\u2019appareil. *\/\n                        void wasInViewport;\n                    }\n                });\n            },\n            {\n                threshold:[0, viewportThreshold, .60, 1]\n            }\n        );\n\n        observer.observe(section);\n\n\n        \/* ==================================================\n           RESIZE\n           ================================================== *\/\n\n        window.addEventListener('resize', function(){\n            window.clearTimeout(resizeTimer);\n\n            resizeTimer = window.setTimeout(function(){\n                syncCardAccessibility();\n                positionGradient(currentStep);\n\n                isHoveringActive = (\n                    window.innerWidth > 1100 &&\n                    finePointer.matches &&\n                    cards[currentStep] &&\n                    cards[currentStep].matches(':hover')\n                );\n\n                scheduleNext(currentDelay());\n            },100);\n        });\n\n\n        \/* ==================================================\n           ONGLET INACTIF\n           ================================================== *\/\n\n        document.addEventListener('visibilitychange', function(){\n            stopTimer();\n            syncPausedState();\n\n            if(!document.hidden){\n                positionGradient(currentStep);\n                scheduleNext(currentDelay());\n            }\n        });\n\n\n        \/* ==================================================\n           \u00c9TAT INITIAL\n           ================================================== *\/\n\n        syncCardAccessibility();\n        updateControls();\n        syncPausedState();\n    });\n}\n\nif(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initDiaProcess);\n}else{\n    initDiaProcess();\n}\n\n})();\n<\/script>\n\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<div class=\"elementor-element elementor-element-76eb2e4 dia-gradient-2 e-flex e-con-boxed e-con e-parent\" data-id=\"76eb2e4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-0faf298 e-con-full e-flex e-con e-child\" data-id=\"0faf298\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-78ea3b5 elementor-invisible elementor-widget elementor-widget-image\" data-id=\"78ea3b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"416\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-1024x532.webp\" class=\"attachment-large size-large wp-image-19305\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-1024x532.webp 1024w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-300x156.webp 300w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-768x399.webp 768w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-1536x799.webp 1536w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/DI_AgentIA_DIA_MauvePale-Blanc-2048x1065.webp 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-960c91e elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"960c91e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:250}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">One assistant, numerous capabilities<\/h2>\t\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-2b6b1119 dia-scroll-section e-flex e-con-boxed e-con e-parent\" data-id=\"2b6b1119\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-32e8f902 e-con-full dia-left elementor-hidden-mobile e-flex e-con e-child\" data-id=\"32e8f902\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3604d7b9 dia-video-widget elementor-widget elementor-widget-html\" data-id=\"3604d7b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_parent&quot;:&quot;yes&quot;,&quot;sticky_offset&quot;:120,&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\n     DiA \u2014 SECTION STICKY FINALE \u00b7 5 ANIMATIONS HTML\n     \u00c0 coller dans le widget HTML sticky gauche existant.\n     Les 5 \u00e9l\u00e9ments .dia-step \u00e0 droite restent dans Elementor.\n     ========================================================= -->\n\n<style>\n\/* =========================================================\n   DiA \u2014 INT\u00c9GRATION STICKY DES 5 MODULES\n   ========================================================= *\/\n\n.dia-videos.dia-ai-stage,\n.dia-ai-stage {\n  position: relative;\n  width: 100%;\n  min-width: 0;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  background: transparent !important;\n}\n\n\/* Le spacer commun impose physiquement le ratio final 3264 \u00d7 2538.\n   Il garde donc exactement la m\u00eame hauteur pendant les 5 steps. *\/\n.dia-ai-stage__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n.dia-ai-layer {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n  visibility: hidden;\n  pointer-events: none;\n  z-index: 0;\n  will-change: opacity;\n  transition: none !important;\n}\n\n\/*\n * IMPORTANT :\n * Contrairement au crossfade pr\u00e9c\u00e9dent, deux interfaces compl\u00e8tes\n * ne sont JAMAIS visibles en m\u00eame temps.\n *\n * Le scroll fait :\n * module A -> fade vers 0 -> swap invisible -> module B -> fade vers 1.\n *\n * C'est ce qui \u00e9vite d\u00e9finitivement la double fen\u00eatre \/ double bulle.\n *\/\n.dia-ai-layer.is-active {\n  visibility: visible;\n  z-index: 2;\n}\n\n.dia-ai-layer.is-preview {\n  opacity: 1;\n  visibility: visible;\n  z-index: 2;\n}\n\n.dia-ai-layer > .dia-ai-module {\n  width: 100%;\n  max-width: 100%;\n}\n\n\n\/* =========================================================\n   BULLE DE PROMPT \u2014 MICRO-MOUVEMENT DE PASSAGE D'\u00c9TAT\n\n   La bulle devient le point d'ancrage visuel du nouveau module :\n   - ancien module : elle monte de quelques pixels pendant le fade-out;\n   - nouveau module : elle revient doucement en place pendant le fade-in.\n\n   Pas de bounce, pas de gros scale : volontairement subtil\/premium.\n   ========================================================= *\/\n\n.dia-context-ai__prompt,\n.dia-interests-ai__prompt,\n.dia-seg-ai__prompt,\n.dia-campaign-ai__prompt,\n.dia-message-ai__prompt {\n  transform:\n    translate3d(0, var(--dia-prompt-y, 0px), 0)\n    scale(var(--dia-prompt-scale, 1));\n  transform-origin: center center;\n  will-change: transform;\n}\n\n\/* diaStop() coupe les timers JS et fige les keyframes pendant le crossfade.\n   diaReset() enl\u00e8ve ensuite cette classe une fois la couche invisible. *\/\n.dia-ai-module.dia-module-paused *,\n.dia-ai-module.dia-module-paused *::before,\n.dia-ai-module.dia-module-paused *::after {\n  animation-play-state: paused !important;\n}\n\n\/* =========================================================\n   STEPS \u00c0 DROITE \u2014 logique visuelle conserv\u00e9e\n   ========================================================= *\/\n\n.dia-step {\n  --step-blur: 6px;\n  --step-opacity: .45;\n  --step-shift: 0px;\n  filter: blur(var(--step-blur));\n  opacity: var(--step-opacity);\n  transform: translate3d(0, var(--step-shift), 0);\n  will-change: filter, opacity, transform;\n}\n\n\/* =========================================================\n   MOBILE \u2014 FOCUS SANS BLUR\n\n   Sur petit \u00e9cran, le texte reste toujours net.\n   Le focus se fait avec :\n   - l'opacit\u00e9;\n   - un tr\u00e8s l\u00e9ger d\u00e9placement vertical li\u00e9 au scroll.\n\n   --step-blur reste calcul\u00e9 en arri\u00e8re-plan uniquement comme\n   signal logique pour les modules individuels mobile.\n   ========================================================= *\/\n@media (max-width: 767px) {\n  .dia-step {\n    filter: none !important;\n  }\n}\n\n\/* Le site applique un fond aux widgets sticky; on l'annule ici comme avant. *\/\n.dia-video-widget.elementor-sticky--effects {\n  background: transparent !important;\n}\n\n\/* =========================================================\n   ELEMENTOR STICKY \u2014 NE JAMAIS PEINDRE LE SPACER CLON\u00c9\n\n   Elementor Pro duplique le widget sticky dans un \u00e9l\u00e9ment\n   .elementor-sticky__spacer pour conserver sa place dans le flux.\n   Cette copie contient aussi notre animation et peut devenir visible\n   pendant le passage en sticky. On garde sa hauteur, mais on rend\n   son stage totalement transparent\/non-interactif.\n   ========================================================= *\/\n.elementor-sticky__spacer .dia-ai-stage,\n.elementor-sticky__spacer [data-dia-ai-stack] {\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n}\n\n.elementor-sticky__spacer .dia-ai-layer {\n  opacity: 0 !important;\n  visibility: hidden !important;\n  transition: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-step {\n    filter: none !important;\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-ai-layer {\n    transition: none !important;\n  }\n}\n\n\/* =========================================================\n   DiA \u2014 01 \u00b7 CONTEXTE IA\n   ========================================================= *\/\n\n.dia-context-ai,\n.dia-context-ai * {\n  box-sizing: border-box;\n}\n\n.dia-context-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-context-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n\n  \/*\n   * IMPORTANT ELEMENTOR \/ MOBILE\n   * La hauteur n'est plus simul\u00e9e avec aspect-ratio ou padding-top\n   * sur le conteneur principal. Un SVG invisible en flux normal\n   * impose physiquement le ratio 3264 x 2538 et Elementor mesure\n   * donc toujours la bonne hauteur du widget.\n   *\/\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* \u00c9l\u00e9ment de ratio en FLUX NORMAL : c'est lui qui donne sa hauteur au widget. *\/\n.dia-context-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-context-ai__prompt {\n  position: absolute;\n  top: 12.2%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 17.3%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-context-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-context-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-context-ai.is-typing-prompt .dia-context-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaContextCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 position exacte de la vid\u00e9o : bas \/ gauche\n   Il annonce l'endroit o\u00f9 la r\u00e9ponse IA va appara\u00eetre.\n   ========================================================= *\/\n\n.dia-context-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 43.45%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-context-ai.show-loader .dia-context-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaContextDot .72s ease-in-out infinite alternate;\n}\n\n.dia-context-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-context-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA \u2014 bas \/ gauche\n   Les proportions suivent la vid\u00e9o de r\u00e9f\u00e9rence.\n   ========================================================= *\/\n\n.dia-context-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 36.45%;\n  width: 72.15%;\n  height: 50.55%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-context-ai.show-card .dia-context-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 SVG inline, exact path fourni\n   ========================================================= *\/\n\n.dia-context-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 7.35%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark {\n  opacity: 1;\n}\n\n.dia-context-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n\/*\n * Le logo arrive en deux temps :\n * 1) l'\u00e9toile monte \/ se d\u00e9ploie l\u00e9g\u00e8rement;\n * 2) le point blanc appara\u00eet juste apr\u00e8s.\n * Les keyframes terminent avec transform:none pour garder le SVG net.\n *\/\n.dia-context-ai__mark-spark,\n.dia-context-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark-spark {\n  animation: diaContextMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark-dot {\n  animation: diaContextMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n.dia-context-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 11.0%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n  transition: opacity .28s ease .03s, transform .4s cubic-bezier(.2,.82,.2,1) .03s;\n}\n\n.dia-context-ai.show-title .dia-context-ai__title {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   BLOC CONTEXTE\n   ========================================================= *\/\n\n.dia-context-ai__context-box {\n  position: absolute;\n  left: 12.85%;\n  top: 28.8%;\n  width: 79.2%;\n  height: 37.3%;\n  overflow: hidden;\n  border-radius: var(--dia-context-radius);\n  background: linear-gradient(112deg, #5A18CA 0%, #641CDA 100%);\n  opacity: 0;\n  transform: translateY(.72cqw);\n  transition:\n    opacity .38s ease,\n    transform .48s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-context-ai__context-box::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  background: var(--dia-lime);\n  border-top-left-radius: var(--dia-context-radius);\n  border-bottom-left-radius: var(--dia-context-radius);\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-box {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-box::before {\n  transform: scaleY(1);\n}\n\n.dia-context-ai__context-copy {\n  position: absolute;\n  inset: 8.0% 5.0% 8% 7.4%;\n  color: #fff;\n}\n\n.dia-context-ai__eyebrow {\n  margin: 0;\n  color: var(--dia-lime);\n  font-size: 2.34cqw;\n  font-weight: 800;\n  line-height: 1;\n  letter-spacing: -.02em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .16s, transform .36s cubic-bezier(.2,.82,.2,1) .16s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__eyebrow {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai__context-text {\n  margin: 1.18cqw 0 0;\n  max-width: 96%;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 650;\n  line-height: 1.32;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.36cqw);\n  transition: opacity .30s ease .24s, transform .40s cubic-bezier(.2,.82,.2,1) .24s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-text {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   BOUTONS OUI \/ NON\n   ========================================================= *\/\n\n.dia-context-ai__answers {\n  position: absolute;\n  left: 12.85%;\n  bottom: 7.65%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-context-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-context-ai.show-yes .dia-context-ai__choice--yes {\n  animation: diaContextChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-context-ai.show-no .dia-context-ai__choice--no {\n  animation: diaContextChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-context-ai.fade-out .dia-context-ai__card,\n.dia-context-ai.fade-out .dia-context-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-context-ai.fade-out .dia-context-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaContextDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaContextCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaContextMarkSparkIn {\n  0% {\n    opacity: 0;\n    transform: translateY(10%) scale(.72) rotate(-7deg);\n  }\n  62% {\n    opacity: 1;\n    transform: translateY(-2%) scale(1.045) rotate(1.5deg);\n  }\n  100% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes diaContextMarkDotIn {\n  0% {\n    opacity: 0;\n    transform: translateY(18%) scale(.35);\n  }\n  72% {\n    opacity: 1;\n    transform: translateY(-4%) scale(1.12);\n  }\n  100% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes diaContextChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* Mobile : garder des coins proportionnels au module.\n   Les anciennes valeurs fixes 15\/16px arrondissaient beaucoup trop\n   les cartes quand le widget devenait \u00e9troit. *\/\n@media (max-width: 767px) {\n  .dia-context-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-context-ai__prompt {\n    border-radius: 2.05cqw;\n  }\n\n  .dia-context-ai__card {\n    border-radius: 2.35cqw;\n  }\n\n  .dia-context-ai__context-box {\n    border-radius: var(--dia-context-radius);\n  }\n\n  .dia-context-ai__choice {\n    border-radius: 2.05cqw;\n  }\n}\n\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n\n   Sur certains layouts Elementor, le widget HTML ou son\n   .elementor-widget-container peut rester hors du flux \/ trop court\n   m\u00eame si .dia-context-ai poss\u00e8de la bonne hauteur.\n\n   Le JS plus bas ajoute deux classes aux wrappers r\u00e9els et leur passe\n   la hauteur mesur\u00e9e du module dans --dia-flow-height.\n   Ce correctif ne s'applique QUE sous 767 px et seulement quand\n   data-dia-elementor-flow-fix est pr\u00e9sent sur ce module.\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-context-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-context-ai *,\n  .dia-context-ai *::before,\n  .dia-context-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-context-ai__card,\n  .dia-context-ai__mark,\n  .dia-context-ai__title,\n  .dia-context-ai__context-box,\n  .dia-context-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-context-ai__loader {\n    display: none !important;\n  }\n}\n\n\/* =========================================================\n   DiA \u2014 02 \u00b7 CENTRES D\u2019INT\u00c9R\u00caT PAR IA\n   ========================================================= *\/\n\n.dia-interests-ai,\n.dia-interests-ai * {\n  box-sizing: border-box;\n}\n\n.dia-interests-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Spacer r\u00e9el en flux normal pour qu\u2019Elementor mesure toujours la hauteur. *\/\n.dia-interests-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-interests-ai__prompt {\n  position: absolute;\n  top: 8.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 17.3%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-interests-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-interests-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-interests-ai.is-typing-prompt .dia-interests-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaInterestsCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 m\u00eame langage visuel que 01\n   ========================================================= *\/\n\n.dia-interests-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-interests-ai.show-loader .dia-interests-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-interests-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaInterestsDot .72s ease-in-out infinite alternate;\n}\n\n.dia-interests-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-interests-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   Plus haute que la carte Contexte, comme dans la vid\u00e9o source.\n   ========================================================= *\/\n\n.dia-interests-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 31.5%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-interests-ai.show-card .dia-interests-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 m\u00eame SVG\/path que la base 01\n   ========================================================= *\/\n\n.dia-interests-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark {\n  opacity: 1;\n}\n\n.dia-interests-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-interests-ai__mark-spark,\n.dia-interests-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark-spark {\n  animation: diaInterestsMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark-dot {\n  animation: diaInterestsMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   CONTENU DE LA R\u00c9PONSE\n   ========================================================= *\/\n\n.dia-interests-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-interests-ai.show-title .dia-interests-ai__title {\n  animation: diaInterestsTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n.dia-interests-ai__list {\n  position: absolute;\n  left: 13.15%;\n  top: 27.2%;\n  width: 76%;\n  display: grid;\n  gap: 1.18cqw;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n\n.dia-interests-ai__interest {\n  display: flex;\n  align-items: center;\n  gap: 1.25cqw;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 500;\n  line-height: 1.2;\n  letter-spacing: -.012em;\n  opacity: 0;\n  transform: translateY(.6cqw);\n}\n\n.dia-interests-ai__medal {\n  width: 3.0cqw;\n  flex: 0 0 3.0cqw;\n  font-family: \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", sans-serif;\n  font-size: 2.75cqw;\n  line-height: 1;\n  text-align: center;\n}\n\n.dia-interests-ai.show-interest-1 .dia-interests-ai__interest--1,\n.dia-interests-ai.show-interest-2 .dia-interests-ai__interest--2,\n.dia-interests-ai.show-interest-3 .dia-interests-ai__interest--3 {\n  animation: diaInterestsItemIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n.dia-interests-ai__question {\n  position: absolute;\n  left: 13.15%;\n  top: 61.5%;\n  width: 73%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 700;\n  line-height: 1.34;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.5cqw);\n}\n\n.dia-interests-ai.show-question .dia-interests-ai__question {\n  animation: diaInterestsTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   BOUTONS OUI \/ NON\n   ========================================================= *\/\n\n.dia-interests-ai__answers {\n  position: absolute;\n  left: 13.15%;\n  bottom: 6.8%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-interests-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-interests-ai.show-yes .dia-interests-ai__choice--yes {\n  animation: diaInterestsChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-interests-ai.show-no .dia-interests-ai__choice--no {\n  animation: diaInterestsChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-interests-ai.fade-out .dia-interests-ai__card,\n.dia-interests-ai.fade-out .dia-interests-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-interests-ai.fade-out .dia-interests-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaInterestsDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaInterestsCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaInterestsMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaInterestsMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaInterestsTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaInterestsItemIn {\n  0% { opacity: 0; transform: translateX(-.7cqw) translateY(.25cqw); }\n  70% { opacity: 1; transform: translateX(.08cqw) translateY(0); }\n  100% { opacity: 1; transform: translateX(0) translateY(0); }\n}\n\n@keyframes diaInterestsChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* Mobile : garder les m\u00eames proportions\/radius que la base officielle. *\/\n@media (max-width: 767px) {\n  .dia-interests-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-interests-ai__prompt { border-radius: 2.05cqw; }\n  .dia-interests-ai__card { border-radius: 2.35cqw; }\n  .dia-interests-ai__choice { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   M\u00eame syst\u00e8me que 01 \u00b7 CONTEXTE IA V10\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-interests-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-interests-ai *,\n  .dia-interests-ai *::before,\n  .dia-interests-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-interests-ai__card,\n  .dia-interests-ai__mark,\n  .dia-interests-ai__title,\n  .dia-interests-ai__interest,\n  .dia-interests-ai__question,\n  .dia-interests-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-interests-ai__loader {\n    display: none !important;\n  }\n}\n\n\/* =========================================================\n   DiA \u2014 03 \u00b7 SEGMENTATION PAR IA\n   ========================================================= *\/\n\n.dia-seg-ai,\n.dia-seg-ai * {\n  box-sizing: border-box;\n}\n\n.dia-seg-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Vraie hauteur mesurable par Elementor. *\/\n.dia-seg-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-seg-ai__prompt {\n  position: absolute;\n  top: 8.9%;\n  right: 5.1%;\n  width: 50.7%;\n  min-height: 20.6%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-seg-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-seg-ai__prompt-text::after,\n.dia-seg-ai__title-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-seg-ai.is-typing-prompt .dia-seg-ai__prompt-text::after,\n.dia-seg-ai.is-typing-title .dia-seg-ai__title-text::after {\n  opacity: .72;\n  animation: diaSegCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 syst\u00e8me commun aux modules 01 \/ 02 \/ 03\n   M\u00eame ancrage horizontal, m\u00eames dimensions, m\u00eame rythme.\n   Position du loader align\u00e9e sur le module 02 pour garder le m\u00eame rythme visuel.\n   ========================================================= *\/\n\n.dia-seg-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-seg-ai.show-loader .dia-seg-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaSegDot .72s ease-in-out infinite alternate;\n}\n\n.dia-seg-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-seg-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-seg-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 38.3%;\n  width: 72.15%;\n  height: 55.1%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-seg-ai.show-card .dia-seg-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 meme SVG inline que la base\n   ========================================================= *\/\n\n.dia-seg-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 6.65%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark {\n  opacity: 1;\n}\n\n.dia-seg-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-seg-ai__mark-spark,\n.dia-seg-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark-spark {\n  animation: diaSegMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark-dot {\n  animation: diaSegMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-seg-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 11.0%;\n  width: 76%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n}\n\n.dia-seg-ai__title-text {\n  display: inline;\n}\n\n\/* =========================================================\n   RESULTAT DU SEGMENT\n   ========================================================= *\/\n\n.dia-seg-ai__result {\n  position: absolute;\n  left: 12.85%;\n  top: 25.6%;\n  width: 79.2%;\n  height: 25.9%;\n  overflow: hidden;\n  border-radius: var(--dia-radius);\n  background: linear-gradient(112deg, #5A18CA 0%, #641CDA 100%);\n  opacity: 0;\n  transform: translateY(.72cqw);\n  transition:\n    opacity .38s ease,\n    transform .48s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-seg-ai__result::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  background: var(--dia-lime);\n  border-top-left-radius: var(--dia-radius);\n  border-bottom-left-radius: var(--dia-radius);\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__result {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__result::before {\n  transform: scaleY(1);\n}\n\n.dia-seg-ai__result-copy {\n  position: absolute;\n  left: 7.6%;\n  top: 23%;\n  right: 37%;\n  color: #fff;\n}\n\n.dia-seg-ai__count {\n  margin: 0;\n  color: var(--dia-lime);\n  font-size: 3.18cqw;\n  font-weight: 800;\n  white-space: nowrap;\n  line-height: 1;\n  letter-spacing: -.025em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .16s, transform .36s cubic-bezier(.2,.82,.2,1) .16s;\n}\n\n.dia-seg-ai__count-sub {\n  margin: .72cqw 0 0;\n  color: #fff;\n  font-size: 2.48cqw;\n  font-weight: 650;\n  line-height: 1.1;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .23s, transform .36s cubic-bezier(.2,.82,.2,1) .23s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__count,\n.dia-seg-ai.show-result .dia-seg-ai__count-sub {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__summary {\n  position: absolute;\n  right: 4.8%;\n  top: 50%;\n  transform: translateY(-50%) scale(.92);\n  min-width: 21.4cqw;\n  min-height: 6.05cqw;\n  padding: .9cqw 1.65cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: .85cqw;\n  border-radius: 999px;\n  background: var(--dia-lavender);\n  color: var(--dia-purple);\n  font-size: 2.02cqw;\n  font-weight: 700;\n  white-space: nowrap;\n  line-height: 1;\n  opacity: 0;\n  transition: opacity .28s ease .30s, transform .40s cubic-bezier(.2,.82,.2,1) .30s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary {\n  opacity: 1;\n  transform: translateY(-50%) scale(1);\n}\n\n.dia-seg-ai__summary-mark {\n  width: 2.15cqw;\n  height: 2.86cqw;\n  flex: 0 0 auto;\n}\n\n.dia-seg-ai__summary-mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n}\n\n\/* Le petit logo du badge reprend le m\u00eame langage d\u2019entr\u00e9e que le logo principal. *\/\n.dia-seg-ai__summary-spark,\n.dia-seg-ai__summary-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary-spark {\n  animation: diaSegMarkSparkIn .46s cubic-bezier(.16,.9,.24,1.18) .34s both;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary-dot {\n  animation: diaSegMarkDotIn .28s cubic-bezier(.2,.9,.3,1.35) .51s both;\n}\n\n\/* =========================================================\n   QUESTION + REPONSES\n   ========================================================= *\/\n\n.dia-seg-ai__question {\n  position: absolute;\n  left: 12.85%;\n  top: 57.8%;\n  width: 78%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 650;\n  line-height: 1.23;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n  transition: opacity .30s ease, transform .42s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-seg-ai.show-question .dia-seg-ai__question {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__answers {\n  position: absolute;\n  left: 12.85%;\n  bottom: 6.7%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-seg-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-seg-ai.show-yes .dia-seg-ai__choice--yes {\n  animation: diaSegChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-seg-ai.show-no .dia-seg-ai__choice--no {\n  animation: diaSegChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-seg-ai.fade-out .dia-seg-ai__card,\n.dia-seg-ai.fade-out .dia-seg-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-seg-ai.fade-out .dia-seg-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaSegDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaSegCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaSegMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaSegMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaSegChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@media (max-width: 767px) {\n  .dia-seg-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-seg-ai__prompt { border-radius: 2.05cqw; }\n  .dia-seg-ai__card { border-radius: 2.35cqw; }\n  .dia-seg-ai__result { border-radius: var(--dia-radius); }\n  .dia-seg-ai__choice { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   Meme logique que 01 \u00b7 CONTEXTE IA V10\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-seg-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-seg-ai *,\n  .dia-seg-ai *::before,\n  .dia-seg-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-seg-ai__card,\n  .dia-seg-ai__mark,\n  .dia-seg-ai__result,\n  .dia-seg-ai__question,\n  .dia-seg-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-seg-ai__summary {\n    opacity: 1 !important;\n    transform: translateY(-50%) scale(1) !important;\n  }\n\n  .dia-seg-ai__loader {\n    display: none !important;\n  }\n}\n\n\/* =========================================================\n   DiA \u2014 04 \u00b7 G\u00c9N\u00c9RATION DE CAMPAGNES PAR IA\n   ========================================================= *\/\n\n.dia-campaign-ai,\n.dia-campaign-ai * {\n  box-sizing: border-box;\n}\n\n.dia-campaign-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Vraie hauteur mesurable par Elementor. *\/\n.dia-campaign-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 m\u00eame langage que 01 \/ 02 \/ 03\n   ========================================================= *\/\n\n.dia-campaign-ai__prompt {\n  position: absolute;\n  top: 5.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 21.0%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-campaign-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-campaign-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-campaign-ai.is-typing-prompt .dia-campaign-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaCampaignCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 strictement uniforme avec les modules 02 \/ 03\n   ========================================================= *\/\n\n.dia-campaign-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-campaign-ai.show-loader .dia-campaign-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-campaign-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaCampaignDot .72s ease-in-out infinite alternate;\n}\n\n.dia-campaign-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-campaign-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-campaign-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 34.3%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-campaign-ai.show-card .dia-campaign-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 EXACTEMENT la m\u00eame structure \/ animation que la base\n   ========================================================= *\/\n\n.dia-campaign-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark {\n  opacity: 1;\n}\n\n.dia-campaign-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-campaign-ai__mark-spark,\n.dia-campaign-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark-spark {\n  animation: diaCampaignMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark-dot {\n  animation: diaCampaignMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-campaign-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  width: 76%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-campaign-ai.show-title .dia-campaign-ai__title {\n  animation: diaCampaignTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   \u00c9TAPES DE CAMPAGNE\n   ========================================================= *\/\n\n.dia-campaign-ai__flow {\n  position: absolute;\n  left: 13.15%;\n  top: 25.0%;\n  width: 68.8%;\n}\n\n.dia-campaign-ai__step {\n  position: relative;\n  width: 100%;\n  min-height: 10.1cqw;\n  padding: 1.55cqw 2.15cqw 1.55cqw 8.7cqw;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  border-radius: var(--dia-radius);\n  background: var(--dia-pale);\n  color: var(--dia-purple);\n  opacity: 0;\n  transform: translateY(.8cqw) scale(.985);\n  transition:\n    opacity .34s ease,\n    transform .46s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-campaign-ai__step--sms {\n  margin-top: 5.15cqw;\n}\n\n.dia-campaign-ai.show-email .dia-campaign-ai__step--email,\n.dia-campaign-ai.show-sms .dia-campaign-ai__step--sms {\n  opacity: 1;\n  transform: translateY(0) scale(1);\n}\n\n.dia-campaign-ai__step-icon {\n  position: absolute;\n  left: 3.0cqw;\n  top: 50%;\n  width: 4.2cqw;\n  height: 4.2cqw;\n  transform: translateY(-50%);\n  color: var(--dia-purple);\n}\n\n.dia-campaign-ai__step-icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n\n.dia-campaign-ai__step-title {\n  margin: 0;\n  color: var(--dia-purple);\n  font-size: 3.00cqw;\n  font-weight: 700;\n  line-height: 1.04;\n  letter-spacing: -.018em;\n}\n\n.dia-campaign-ai__step-subtitle {\n  margin: .62cqw 0 0;\n  color: var(--dia-purple);\n  font-size: 2.36cqw;\n  font-weight: 500;\n  line-height: 1.15;\n  letter-spacing: -.012em;\n}\n\n\/* Liaison verte pointill\u00e9e entre Courriel et SMS. *\/\n.dia-campaign-ai__connector {\n  position: absolute;\n  left: 50%;\n  top: calc(10.1cqw + .25cqw);\n  width: .34cqw;\n  height: 4.95cqw;\n  transform: translateX(-50%) scaleY(0);\n  transform-origin: top center;\n  opacity: 0;\n  background: repeating-linear-gradient(\n    to bottom,\n    var(--dia-lime) 0 .78cqw,\n    transparent .78cqw 1.28cqw\n  );\n  transition:\n    opacity .18s ease,\n    transform .34s cubic-bezier(.2,.82,.2,1);\n  z-index: 0;\n}\n\n.dia-campaign-ai.show-connector .dia-campaign-ai__connector {\n  opacity: 1;\n  transform: translateX(-50%) scaleY(1);\n}\n\n\/* =========================================================\n   CTA\n   ========================================================= *\/\n\n.dia-campaign-ai__cta {\n  position: absolute;\n  left: 13.15%;\n  bottom: 5.9%;\n  min-width: 24.3cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.55cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: var(--dia-lime);\n  color: var(--dia-dark);\n  font-size: 2.30cqw;\n  font-weight: 800;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-campaign-ai.show-cta .dia-campaign-ai__cta {\n  animation: diaCampaignChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-campaign-ai.fade-out .dia-campaign-ai__card,\n.dia-campaign-ai.fade-out .dia-campaign-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-campaign-ai.fade-out .dia-campaign-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaCampaignDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaCampaignCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaCampaignMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaCampaignMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaCampaignTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaCampaignChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@media (max-width: 767px) {\n  .dia-campaign-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-campaign-ai__prompt { border-radius: 2.05cqw; }\n  .dia-campaign-ai__card { border-radius: 2.35cqw; }\n  .dia-campaign-ai__step { border-radius: var(--dia-radius); }\n  .dia-campaign-ai__cta { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   M\u00eame syst\u00e8me que 01 \/ 02 \/ 03\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-campaign-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-campaign-ai *,\n  .dia-campaign-ai *::before,\n  .dia-campaign-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-campaign-ai__card,\n  .dia-campaign-ai__mark,\n  .dia-campaign-ai__title,\n  .dia-campaign-ai__step,\n  .dia-campaign-ai__connector,\n  .dia-campaign-ai__cta {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-campaign-ai__loader {\n    display: none !important;\n  }\n}\n\n\/* =========================================================\n   DiA \u2014 05 \u00b7 G\u00c9N\u00c9RATION DE MESSAGES PAR IA\n   ========================================================= *\/\n\n.dia-message-ai,\n.dia-message-ai * {\n  box-sizing: border-box;\n}\n\n.dia-message-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-lavender-2: #C9B1F2;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n.dia-message-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 coh\u00e9rent avec les autres modules\n   ========================================================= *\/\n\n.dia-message-ai__prompt {\n  position: absolute;\n  top: 5.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 21.0%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-message-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-message-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-message-ai.is-typing-prompt .dia-message-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaMessageCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 identique \u00e0 02 \/ 03 \/ 04\n   ========================================================= *\/\n\n.dia-message-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-message-ai.show-loader .dia-message-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-message-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaMessageDot .72s ease-in-out infinite alternate;\n}\n\n.dia-message-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-message-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-message-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 34.3%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-message-ai.show-card .dia-message-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 m\u00eame construction \/ animation que la base\n   ========================================================= *\/\n\n.dia-message-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark {\n  opacity: 1;\n}\n\n.dia-message-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-message-ai__mark-spark,\n.dia-message-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark-spark {\n  animation: diaMessageMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark-dot {\n  animation: diaMessageMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-message-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  width: 78.2%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 700;\n  line-height: 1.17;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-message-ai.show-title .dia-message-ai__title {\n  animation: diaMessageTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   CONTENU DU MESSAGE\n   ========================================================= *\/\n\n.dia-message-ai__mail {\n  position: absolute;\n  left: 10.5%;\n  top: 31.6%;\n  width: 79.0%;\n  height: 41.2%;\n  border-radius: 2.05cqw;\n  background: var(--dia-pale);\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(.9cqw) scale(.985);\n  transition:\n    opacity .34s ease,\n    transform .46s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-message-ai.show-mail .dia-message-ai__mail {\n  opacity: 1;\n  transform: translateY(0) scale(1);\n}\n\n.dia-message-ai.show-mail .dia-message-ai__mail::before {\n  transform: scaleY(1);\n}\n\n.dia-message-ai__mail::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  min-width: 8px;\n  background: var(--dia-lime);\n  border-top-left-radius: 2.05cqw;\n  border-bottom-left-radius: 2.05cqw;\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-message-ai__mail-inner {\n  position: absolute;\n  left: 5.9%;\n  right: 4.8%;\n  top: 9.8%;\n  bottom: 8.8%;\n}\n\n.dia-message-ai__line {\n  height: 7.2%;\n  min-height: 6px;\n  margin-bottom: 5.35%;\n  border-radius: 999px;\n  background: rgba(198,169,255,.78);\n  opacity: 0;\n  transform: scaleX(.08);\n  transform-origin: left center;\n}\n\n.dia-message-ai__line--1 { width: 44%; }\n.dia-message-ai__line--2 { width: 95%; }\n.dia-message-ai__line--3 { width: 70%; margin-bottom: 11.2%; }\n\n.dia-message-ai.show-lines .dia-message-ai__line {\n  animation: diaMessageLineIn .42s cubic-bezier(.2,.82,.2,1) forwards;\n}\n\n.dia-message-ai.show-lines .dia-message-ai__line--1 { animation-delay: .08s; }\n.dia-message-ai.show-lines .dia-message-ai__line--2 { animation-delay: .24s; }\n.dia-message-ai.show-lines .dia-message-ai__line--3 { animation-delay: .40s; }\n\n.dia-message-ai__thumbs {\n  position: absolute;\n  left: 7.0%;\n  right: 5.0%;\n  bottom: 0;\n  height: 39.5%;\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 7.2%;\n}\n\n.dia-message-ai__thumb {\n  position: relative;\n  border-radius: 1.0cqw;\n  background: linear-gradient(180deg, #C6A9FF 0%, #B48DF7 100%);\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(.85cqw) scale(.9);\n}\n\n.dia-message-ai.show-thumbs .dia-message-ai__thumb {\n  animation: diaMessageThumbIn .42s cubic-bezier(.18,.9,.22,1.22) forwards;\n}\n\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(1) { animation-delay: .00s; }\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(2) { animation-delay: .16s; }\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(3) { animation-delay: .32s; }\n\n.dia-message-ai__thumb::before,\n.dia-message-ai__thumb::after {\n  content: \"\";\n  position: absolute;\n  bottom: -1px;\n  background: #fff;\n  clip-path: polygon(50% 0, 100% 100%, 0 100%);\n}\n\n.dia-message-ai__thumb::before {\n  left: 11%;\n  width: 59%;\n  height: 57%;\n}\n\n.dia-message-ai__thumb::after {\n  right: 7%;\n  width: 48%;\n  height: 72%;\n  opacity: .95;\n}\n\n\/* =========================================================\n   CTA\n   ========================================================= *\/\n\n.dia-message-ai__cta {\n  position: absolute;\n  left: 5.4%;\n  bottom: 3.7%;\n  width: 56.0%;\n  min-height: 7.1cqw;\n  padding: 1.55cqw 2.55cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: var(--dia-lime);\n  color: var(--dia-dark);\n  font-size: 2.30cqw;\n  font-weight: 800;\n  line-height: 1;\n  text-align: center;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-message-ai.show-cta .dia-message-ai__cta {\n  animation: diaMessageChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-message-ai.fade-out .dia-message-ai__card,\n.dia-message-ai.fade-out .dia-message-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-message-ai.fade-out .dia-message-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaMessageDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaMessageCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaMessageMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaMessageMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaMessageTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaMessageLineIn {\n  0% { opacity: 0; transform: scaleX(.08); }\n  100% { opacity: 1; transform: scaleX(1); }\n}\n\n@keyframes diaMessageThumbIn {\n  0%   { opacity: 0; transform: translateY(.85cqw) scale(.88); }\n  72%  { opacity: 1; transform: translateY(-.06cqw) scale(1.04); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@keyframes diaMessageChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* =========================================================\n   MODULE 05 \u2014 FIX RESPONSIVE PAR LARGEUR R\u00c9ELLE DU MODULE\n\n   IMPORTANT :\n   le probl\u00e8me d\u00e9pend de la largeur du panneau gauche, pas de la\n   largeur totale de l'\u00e9cran. Sur iPad, le viewport peut \u00eatre large\n   alors que le module sticky reste \u00e9troit.\n\n   .dia-message-ai poss\u00e8de d\u00e9j\u00e0 container-type:inline-size;\n   on peut donc corriger les miniatures selon la largeur R\u00c9ELLE\n   du module.\n   ========================================================= *\/\n@container (max-width: 650px) {\n  .dia-message-ai__thumbs {\n    height: 29% !important;\n  }\n}\n\n\/* Fallback pour les navigateurs sans container queries. *\/\n@media (max-width: 1024px) {\n  .dia-message-ai__thumbs {\n    height: 29%;\n  }\n}\n\n@media (max-width: 767px) {\n  .dia-message-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-message-ai__prompt { border-radius: 2.05cqw; }\n  .dia-message-ai__card { border-radius: 2.35cqw; }\n  .dia-message-ai__mail,\n  .dia-message-ai__mail::before,\n  .dia-message-ai__cta { border-radius: 2.05cqw; }\n  .dia-message-ai__thumb { border-radius: 1.0cqw; }\n  .dia-message-ai__title { font-size: 2.9cqw; width: 78.5%; }\n\n  \/* M\u00eame protection responsive sur mobile. *\/\n  .dia-message-ai__thumbs {\n    height: 29%;\n  }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-message-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-message-ai *,\n  .dia-message-ai *::before,\n  .dia-message-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-message-ai__card,\n  .dia-message-ai__mark,\n  .dia-message-ai__title,\n  .dia-message-ai__mail,\n  .dia-message-ai__line,\n  .dia-message-ai__thumb,\n  .dia-message-ai__cta {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-message-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-videos dia-ai-stage\" data-dia-ai-stack>\n\n  <svg class=\"dia-ai-stage__ratio-spacer\" width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n\n  <!-- 01 \u00b7 CONTEXT -->\n  <div class=\"dia-ai-layer\" data-dia-ai-layer=\"1\">\n    <div class=\"dia-ai-module dia-ai-module--context dia-context-ai\" data-dia-ai-module data-dia-context-ai data-dia-step=\"context\">\n    \n      <!--\n        Spacer de ratio en flux normal.\n        Contrairement aux \u00e9l\u00e9ments anim\u00e9s (absolute), celui-ci donne une vraie\n        hauteur au widget Elementor sur desktop, tablette et mobile.\n      -->\n      <svg class=\"dia-context-ai__ratio-spacer\" width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\" focusable=\"false\"><\/svg>\n    \n      <div class=\"dia-context-ai__prompt\">\n        <span class=\"dia-context-ai__prompt-text\" data-dia-context-prompt><\/span>\n      <\/div>\n    \n      <div class=\"dia-context-ai__loader\" aria-hidden=\"true\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/div>\n    \n      <div class=\"dia-context-ai__card\">\n    \n        <!-- Logo IA : ellipse + path EXACTS du SVG fourni -->\n        <div class=\"dia-context-ai__mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-hidden=\"true\">\n            <ellipse class=\"dia-context-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n            <path class=\"dia-context-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n          <\/svg>\n        <\/div>\n    \n        <p class=\"dia-context-ai__title\">Apply this context:<\/p>\n    \n        <div class=\"dia-context-ai__context-box\">\n          <div class=\"dia-context-ai__context-copy\">\n            <p class=\"dia-context-ai__eyebrow\">SUMMER BOUTIQUE<\/p>\n            <p class=\"dia-context-ai__context-text\">Audience aged 25\u201340, upbeat tone,<br>and no discounts in the subject line<\/p>\n          <\/div>\n        <\/div>\n    \n        <div class=\"dia-context-ai__answers\" aria-hidden=\"true\">\n          <div class=\"dia-context-ai__choice dia-context-ai__choice--yes\">YES<\/div>\n          <div class=\"dia-context-ai__choice dia-context-ai__choice--no\">NO<\/div>\n        <\/div>\n    \n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <!-- 02 \u00b7 INTERESTS -->\n  <div class=\"dia-ai-layer\" data-dia-ai-layer=\"2\">\n    <div class=\"dia-ai-module dia-ai-module--interests dia-interests-ai\"\n         data-dia-ai-module\n         data-dia-interests-ai\n         data-dia-step=\"interests\">\n    \n      <svg class=\"dia-interests-ai__ratio-spacer\"\n           width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           aria-hidden=\"true\" focusable=\"false\"><\/svg>\n    \n      <div class=\"dia-interests-ai__prompt\">\n        <span class=\"dia-interests-ai__prompt-text\" data-dia-interests-prompt><\/span>\n      <\/div>\n    \n      <div class=\"dia-interests-ai__loader\" aria-hidden=\"true\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/div>\n    \n      <div class=\"dia-interests-ai__card\">\n    \n        <div class=\"dia-interests-ai__mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n               preserveAspectRatio=\"xMidYMid meet\"\n               shape-rendering=\"geometricPrecision\"\n               xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n               role=\"img\" aria-hidden=\"true\">\n            <ellipse class=\"dia-interests-ai__mark-dot\"\n                     cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n            <path class=\"dia-interests-ai__mark-spark\"\n                  d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\"\n                  fill=\"#C6A9FF\"\/>\n          <\/svg>\n        <\/div>\n    \n        <p class=\"dia-interests-ai__title\">The top interests are:<\/p>\n    \n        <ul class=\"dia-interests-ai__list\" aria-hidden=\"true\">\n          <li class=\"dia-interests-ai__interest dia-interests-ai__interest--1\">\n            <span class=\"dia-interests-ai__medal\">\ud83e\udd47<\/span>\n            <span>Buying a first home<\/span>\n          <\/li>\n          <li class=\"dia-interests-ai__interest dia-interests-ai__interest--2\">\n            <span class=\"dia-interests-ai__medal\">\ud83e\udd48<\/span>\n            <span>Savings and TFSA<\/span>\n          <\/li>\n          <li class=\"dia-interests-ai__interest dia-interests-ai__interest--3\">\n            <span class=\"dia-interests-ai__medal\">\ud83e\udd49<\/span>\n            <span>Retirement planning<\/span>\n          <\/li>\n        <\/ul>\n    \n        <p class=\"dia-interests-ai__question\">Would you like to create 3 segments<br>from these interests?<\/p>\n    \n        <div class=\"dia-interests-ai__answers\" aria-hidden=\"true\">\n          <div class=\"dia-interests-ai__choice dia-interests-ai__choice--yes\">YES<\/div>\n          <div class=\"dia-interests-ai__choice dia-interests-ai__choice--no\">NO<\/div>\n        <\/div>\n    \n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <!-- 03 \u00b7 SEGMENTATION -->\n  <div class=\"dia-ai-layer\" data-dia-ai-layer=\"3\">\n    <div class=\"dia-ai-module dia-ai-module--segmentation dia-seg-ai\" data-dia-ai-module data-dia-seg-ai data-dia-step=\"segmentation\">\n    \n      <svg class=\"dia-seg-ai__ratio-spacer\" width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\" focusable=\"false\"><\/svg>\n    \n      <div class=\"dia-seg-ai__prompt\">\n        <span class=\"dia-seg-ai__prompt-text\" data-dia-seg-prompt><\/span>\n      <\/div>\n    \n      <div class=\"dia-seg-ai__loader\" aria-hidden=\"true\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/div>\n    \n      <div class=\"dia-seg-ai__card\">\n    \n        <div class=\"dia-seg-ai__mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-hidden=\"true\">\n            <ellipse class=\"dia-seg-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n            <path class=\"dia-seg-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n          <\/svg>\n        <\/div>\n    \n        <p class=\"dia-seg-ai__title\">\n          <span class=\"dia-seg-ai__title-text\" data-dia-seg-title><\/span>\n        <\/p>\n    \n        <div class=\"dia-seg-ai__result\">\n          <div class=\"dia-seg-ai__result-copy\">\n            <p class=\"dia-seg-ai__count\">2,438 CONTACTS<\/p>\n            <p class=\"dia-seg-ai__count-sub\">ready to be targeted.<\/p>\n          <\/div>\n    \n          <div class=\"dia-seg-ai__summary\">\n            <span class=\"dia-seg-ai__summary-mark\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 1080 1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <ellipse class=\"dia-seg-ai__summary-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#4B17A1\"\/>\n                <path class=\"dia-seg-ai__summary-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#4B17A1\"\/>\n              <\/svg>\n            <\/span>\n            <span>AI summary<\/span>\n          <\/div>\n        <\/div>\n    \n        <p class=\"dia-seg-ai__question\">Would you like to create a campaign<br>with this segment?<\/p>\n    \n        <div class=\"dia-seg-ai__answers\" aria-hidden=\"true\">\n          <div class=\"dia-seg-ai__choice dia-seg-ai__choice--yes\">YES<\/div>\n          <div class=\"dia-seg-ai__choice dia-seg-ai__choice--no\">NO<\/div>\n        <\/div>\n    \n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <!-- 04 \u00b7 CAMPAIGN -->\n  <div class=\"dia-ai-layer\" data-dia-ai-layer=\"4\">\n    <div class=\"dia-ai-module dia-ai-module--campaign dia-campaign-ai\"\n         data-dia-ai-module\n         data-dia-campaign-ai\n         data-dia-step=\"campaign\">\n    \n      <svg class=\"dia-campaign-ai__ratio-spacer\"\n           width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           aria-hidden=\"true\" focusable=\"false\"><\/svg>\n    \n      <div class=\"dia-campaign-ai__prompt\">\n        <span class=\"dia-campaign-ai__prompt-text\" data-dia-campaign-prompt><\/span>\n      <\/div>\n    \n      <div class=\"dia-campaign-ai__loader\" aria-hidden=\"true\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/div>\n    \n      <div class=\"dia-campaign-ai__card\">\n    \n        <!-- Logo IA : ellipse + path EXACTS du SVG de la base -->\n        <div class=\"dia-campaign-ai__mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n               preserveAspectRatio=\"xMidYMid meet\"\n               shape-rendering=\"geometricPrecision\"\n               xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n               role=\"img\" aria-hidden=\"true\">\n            <ellipse class=\"dia-campaign-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n            <path class=\"dia-campaign-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n          <\/svg>\n        <\/div>\n    \n        <p class=\"dia-campaign-ai__title\">Suggested campaign:<\/p>\n    \n        <div class=\"dia-campaign-ai__flow\" aria-hidden=\"true\">\n          <div class=\"dia-campaign-ai__step dia-campaign-ai__step--email\">\n            <span class=\"dia-campaign-ai__step-icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <rect x=\"7\" y=\"13\" width=\"50\" height=\"38\" rx=\"3\" stroke=\"currentColor\" stroke-width=\"3.2\"\/>\n                <path d=\"M9.5 17L32 36L54.5 17\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                <path d=\"M9 48L25.5 31.5M55 48L38.5 31.5\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\"\/>\n              <\/svg>\n            <\/span>\n            <p class=\"dia-campaign-ai__step-title\">Email<\/p>\n            <p class=\"dia-campaign-ai__step-subtitle\">2h after an abandoned cart<\/p>\n          <\/div>\n    \n          <div class=\"dia-campaign-ai__connector\" aria-hidden=\"true\"><\/div>\n    \n          <div class=\"dia-campaign-ai__step dia-campaign-ai__step--sms\">\n            <span class=\"dia-campaign-ai__step-icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <path d=\"M10 12H54C56.2 12 58 13.8 58 16V43C58 45.2 56.2 47 54 47H30L20 55V47H10C7.8 47 6 45.2 6 43V16C6 13.8 7.8 12 10 12Z\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linejoin=\"round\"\/>\n                <circle cx=\"22\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n                <circle cx=\"32\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n                <circle cx=\"42\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n              <\/svg>\n            <\/span>\n            <p class=\"dia-campaign-ai__step-title\">SMS<\/p>\n            <p class=\"dia-campaign-ai__step-subtitle\">24h after the email, no purchase<\/p>\n          <\/div>\n        <\/div>\n    \n        <div class=\"dia-campaign-ai__cta\">VIEW CAMPAIGN<\/div>\n    \n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <!-- 05 \u00b7 MESSAGE -->\n  <div class=\"dia-ai-layer\" data-dia-ai-layer=\"5\">\n    <div class=\"dia-ai-module dia-ai-module--message dia-message-ai\"\n         data-dia-ai-module\n         data-dia-message-ai\n         data-dia-step=\"message\">\n    \n      <svg class=\"dia-message-ai__ratio-spacer\"\n           width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           aria-hidden=\"true\" focusable=\"false\"><\/svg>\n    \n      <div class=\"dia-message-ai__prompt\">\n        <span class=\"dia-message-ai__prompt-text\" data-dia-message-prompt><\/span>\n      <\/div>\n    \n      <div class=\"dia-message-ai__loader\" aria-hidden=\"true\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/div>\n    \n      <div class=\"dia-message-ai__card\">\n    \n        <div class=\"dia-message-ai__mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n               preserveAspectRatio=\"xMidYMid meet\"\n               shape-rendering=\"geometricPrecision\"\n               xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n               role=\"img\" aria-hidden=\"true\">\n            <ellipse class=\"dia-message-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n            <path class=\"dia-message-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n          <\/svg>\n        <\/div>\n    \n        <p class=\"dia-message-ai__title\">First version created in your template,<br>with the blocks and content adapted.<\/p>\n    \n        <div class=\"dia-message-ai__mail\" aria-hidden=\"true\">\n          <div class=\"dia-message-ai__mail-inner\">\n            <div class=\"dia-message-ai__line dia-message-ai__line--1\"><\/div>\n            <div class=\"dia-message-ai__line dia-message-ai__line--2\"><\/div>\n            <div class=\"dia-message-ai__line dia-message-ai__line--3\"><\/div>\n    \n            <div class=\"dia-message-ai__thumbs\">\n              <div class=\"dia-message-ai__thumb\"><\/div>\n              <div class=\"dia-message-ai__thumb\"><\/div>\n              <div class=\"dia-message-ai__thumb\"><\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n    \n        <div class=\"dia-message-ai__cta\">REVISE THE MESSAGE<\/div>\n    \n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-context-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaContextReady === '1') return;\n    module.dataset.diaContextReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-context-prompt]');\n    const promptText = 'Prepare a campaign for our new summer collection.';\n\n    \/*\n     * \u00c9TAT D'ATTENTE AVANT LE PREMIER STEP\n     *\n     * On montre volontairement le d\u00e9but de la commande pour que\n     * le visuel semble d\u00e9j\u00e0 \"vivant\" avant que l'animation d\u00e9marre.\n     * Lorsque diaPlay() est appel\u00e9, le typing reprend exactement ici.\n     *\/\n    const previewText = 'Prepare a campaign for';\n\n    \/* Hauteur g\u00e9r\u00e9e par le stage commun de la section sticky. *\/\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n    let resumeFromPreview = false;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id, startIndex = 0) => {\n      let i = startIndex;\n\n      module.classList.add('is-typing-prompt');\n\n      \/*\n       * Si on reprend depuis le preview, le texte d\u00e9j\u00e0 pr\u00e9sent\n       * reste exactement en place : aucun flash \/ aucun retour \u00e0 vide.\n       *\/\n      promptEl.textContent = promptText.slice(0, i);\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        \n        'dia-module-paused','is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-context',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      \/*\n       * On m\u00e9morise la position AVANT reset(), puis on continue\n       * exactement apr\u00e8s les quelques mots d\u00e9j\u00e0 affich\u00e9s.\n       *\/\n      const startIndex = resumeFromPreview\n        ? previewText.length\n        : 0;\n\n      resumeFromPreview = false;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id, startIndex);\n\n      later(() => module.classList.add('show-loader'), 2300, id);\n      later(() => module.classList.remove('show-loader'), 3260, id);\n\n      later(() => module.classList.add('show-card'), 3270, id);\n      later(() => module.classList.add('show-mark'), 3360, id);\n      later(() => module.classList.add('show-title'), 3650, id);\n      later(() => module.classList.add('show-context'), 3920, id);\n      later(() => module.classList.add('show-yes'), 4680, id);\n      later(() => module.classList.add('show-no'), 5070, id);\n\n      later(() => module.classList.add('fade-out'), 8350, id);\n      later(play, 8850, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add('show-card', 'show-mark', 'show-title', 'show-context', 'show-yes', 'show-no');\n    };\n\n    \/* API minimale pour l'int\u00e9gration future \u00e0 la section scrollable. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      clearTimers();\n      module.classList.add('dia-module-paused');\n    };\n\n    \/*\n     * Preview utilis\u00e9 uniquement par le contr\u00f4leur sticky :\n     * - bulle visible;\n     * - quelques mots d\u00e9j\u00e0 tap\u00e9s;\n     * - curseur clignotant;\n     * - aucun timer de l'animation principale ne tourne.\n     *\/\n    module.diaPreview = () => {\n      active = false;\n      runId += 1;\n      reset();\n\n      resumeFromPreview = true;\n      promptEl.textContent = previewText;\n\n      \/*\n       * On r\u00e9utilise le caret existant comme \u00e9tat d'attente.\n       * Il clignote, mais aucun caract\u00e8re suppl\u00e9mentaire n'est tap\u00e9.\n       *\/\n      module.classList.add('is-typing-prompt');\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      resumeFromPreview = false;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* Pour l'instant : lecture automatique lorsque le module est visible.\n       Plus tard, la section scrollable appellera directement diaPlay\/diaStop.\n\n       Mobile-safe : on ne demande plus 22 % de visibilit\u00e9. Dans certains\n       layouts Elementor\/sticky, ce seuil peut ne jamais \u00eatre atteint et le\n       reset rend alors tout le module transparent. *\/\n    if (!module.closest('[data-dia-ai-stack]')) {\n  if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting && entry.intersectionRatio > 0) {\n              module.diaPlay();\n            } else {\n              module.diaStop();\n            }\n          });\n        }, {\n          threshold: [0, .01],\n          rootMargin: '8% 0px 8% 0px'\n        });\n  \n        observer.observe(module);\n      } else {\n        \/* Fallback vieux Safari \/ WebView. *\/\n        module.diaPlay();\n      }\n    }\n  });\n})();\n<\/script>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-interests-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaInterestsReady === '1') return;\n    module.dataset.diaInterestsReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-interests-prompt]');\n    const promptText = 'What are the interests in my database?';\n\n    \/* Elementor mobile \u2014 m\u00eame correction de hauteur que notre base. *\/\n\n    \/* Hauteur g\u00e9r\u00e9e par le stage commun de la section sticky. *\/\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n    let titleTypingTimer = null;\n\n    const titleEl = module.querySelector('.dia-interests-ai__title');\n    const titleText = 'The top interests are:';\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n\n      if (titleTypingTimer) {\n        window.clearTimeout(titleTypingTimer);\n        titleTypingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typeText = (el, text, speed, id, timerName) => {\n      let i = 0;\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        el.textContent = text.slice(0, i);\n        i += 1;\n\n        if (i <= text.length) {\n          const timer = window.setTimeout(tick, speed);\n          if (timerName === 'prompt') typingTimer = timer;\n          if (timerName === 'title') titleTypingTimer = timer;\n        } else {\n          if (timerName === 'prompt') typingTimer = null;\n          if (timerName === 'title') titleTypingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        \n        'dia-module-paused','is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-interest-1',\n        'show-interest-2',\n        'show-interest-3',\n        'show-question',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n\n      promptEl.textContent = '';\n      titleEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      module.classList.add('is-typing-prompt');\n      typeText(promptEl, promptText, 31, id, 'prompt');\n      later(() => module.classList.remove('is-typing-prompt'), 1650, id);\n\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n\n      later(() => {\n        module.classList.add('show-title');\n        typeText(titleEl, titleText, 26, id, 'title');\n      }, 3470, id);\n\n      later(() => module.classList.add('show-interest-1'), 4260, id);\n      later(() => module.classList.add('show-interest-2'), 4620, id);\n      later(() => module.classList.add('show-interest-3'), 4980, id);\n      later(() => module.classList.add('show-question'), 5480, id);\n      later(() => module.classList.add('show-yes'), 6100, id);\n      later(() => module.classList.add('show-no'), 6500, id);\n\n      \/* Plus de temps de lecture final, comme notre base 01. *\/\n      later(() => module.classList.add('fade-out'), 9600, id);\n      later(play, 10100, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      titleEl.textContent = titleText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-interest-1',\n        'show-interest-2',\n        'show-interest-3',\n        'show-question',\n        'show-yes',\n        'show-no'\n      );\n    };\n\n    \/* API commune aux 5 modules. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      clearTimers();\n      module.classList.add('dia-module-paused');\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* Lecture autonome pour le fine-tuning.\n       Le scroll parent appellera diaPlay\/diaStop plus tard. *\/\n    if (!module.closest('[data-dia-ai-stack]')) {\n  if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting && entry.intersectionRatio > 0) {\n              module.diaPlay();\n            } else {\n              module.diaStop();\n            }\n          });\n        }, {\n          threshold: [0, .01],\n          rootMargin: '8% 0px 8% 0px'\n        });\n  \n        observer.observe(module);\n      } else {\n        module.diaPlay();\n      }\n    }\n  });\n})();\n<\/script>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-seg-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaSegReady === '1') return;\n    module.dataset.diaSegReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-seg-prompt]');\n    const titleEl = module.querySelector('[data-dia-seg-title]');\n\n    const promptText = 'Target Montrealers who clicked on an offer but didn\u2019t book.';\n    const titleText = 'Okay, segment created:';\n\n    \/* Hauteur g\u00e9r\u00e9e par le stage commun de la section sticky. *\/\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typeText = (el, text, className, speed, id, onDone) => {\n      let i = 0;\n      module.classList.add(className);\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        el.textContent = text.slice(0, i);\n        i += 1;\n\n        if (i <= text.length) {\n          typingTimer = window.setTimeout(tick, speed);\n        } else {\n          module.classList.remove(className);\n          typingTimer = null;\n          if (onDone) onDone();\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        \n        'dia-module-paused','is-typing-prompt',\n        'is-typing-title',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-result',\n        'show-question',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n      titleEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typeText(promptEl, promptText, 'is-typing-prompt', 31, id);\n\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n      \/* Le logo garde exactement le m\u00eame temps de respiration que notre base V10. *\/\n      later(() => typeText(titleEl, titleText, 'is-typing-title', 34, id), 3470, id);\n\n      later(() => module.classList.add('show-result'), 4480, id);\n      later(() => module.classList.add('show-question'), 5250, id);\n      later(() => module.classList.add('show-yes'), 5850, id);\n      later(() => module.classList.add('show-no'), 6200, id);\n\n      \/* Plus de temps de lecture, comme la base finale du 01. *\/\n      later(() => module.classList.add('fade-out'), 9300, id);\n      later(play, 9800, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      titleEl.textContent = titleText;\n      module.classList.add('show-card', 'show-mark', 'show-result', 'show-question', 'show-yes', 'show-no');\n    };\n\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      clearTimers();\n      module.classList.add('dia-module-paused');\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    if (!module.closest('[data-dia-ai-stack]')) {\n  if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting && entry.intersectionRatio > 0) {\n              module.diaPlay();\n            } else {\n              module.diaStop();\n            }\n          });\n        }, {\n          threshold: [0, .01],\n          rootMargin: '8% 0px 8% 0px'\n        });\n  \n        observer.observe(module);\n      } else {\n        module.diaPlay();\n      }\n    }\n  });\n})();\n<\/script>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-campaign-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaCampaignReady === '1') return;\n    module.dataset.diaCampaignReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-campaign-prompt]');\n    const promptText = 'Create a campaign to recover abandoned carts.';\n\n    \/* Hauteur g\u00e9r\u00e9e par le stage commun de la section sticky. *\/\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id) => {\n      let i = 0;\n      module.classList.add('is-typing-prompt');\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        \n        'dia-module-paused','is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-email',\n        'show-connector',\n        'show-sms',\n        'show-cta',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id);\n\n      \/* Loader strictement align\u00e9 avec 02 \/ 03. *\/\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      \/* Entr\u00e9e de la carte et du logo = m\u00eame rythme que 02 \/ 03. *\/\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n      later(() => module.classList.add('show-title'), 3470, id);\n\n      \/* Construction progressive de la campagne. *\/\n      later(() => module.classList.add('show-email'), 3920, id);\n      later(() => module.classList.add('show-connector'), 4250, id);\n      later(() => module.classList.add('show-sms'), 4360, id);\n      later(() => module.classList.add('show-cta'), 5250, id);\n\n      \/* Temps de lecture final coh\u00e9rent avec la base. *\/\n      later(() => module.classList.add('fade-out'), 8600, id);\n      later(play, 9100, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-email',\n        'show-connector',\n        'show-sms',\n        'show-cta'\n      );\n    };\n\n    \/* API commune aux 5 modules. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      clearTimers();\n      module.classList.add('dia-module-paused');\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* Lecture autonome pour le fine-tuning.\n       Le scroll parent appellera diaPlay\/diaStop plus tard. *\/\n    if (!module.closest('[data-dia-ai-stack]')) {\n  if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting && entry.intersectionRatio > 0) {\n              module.diaPlay();\n            } else {\n              module.diaStop();\n            }\n          });\n        }, {\n          threshold: [0, .01],\n          rootMargin: '8% 0px 8% 0px'\n        });\n  \n        observer.observe(module);\n      } else {\n        module.diaPlay();\n      }\n    }\n  });\n})();\n<\/script>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-message-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaMessageReady === '1') return;\n    module.dataset.diaMessageReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-message-prompt]');\n    const promptText = 'Create an email to launch our Summer collection';\n\n    \/* Hauteur g\u00e9r\u00e9e par le stage commun de la section sticky. *\/\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id) => {\n      let i = 0;\n      module.classList.add('is-typing-prompt');\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        \n        'dia-module-paused','is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-mail',\n        'show-lines',\n        'show-thumbs',\n        'show-cta',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id);\n\n      later(() => module.classList.add('show-loader'), 2100, id);\n      later(() => module.classList.remove('show-loader'), 3080, id);\n\n      later(() => module.classList.add('show-card'), 3100, id);\n      later(() => module.classList.add('show-mark'), 3190, id);\n      later(() => module.classList.add('show-title'), 3320, id);\n\n      later(() => module.classList.add('show-mail'), 3720, id);\n      later(() => module.classList.add('show-lines'), 3920, id);\n      later(() => module.classList.add('show-thumbs'), 4550, id);\n      later(() => module.classList.add('show-cta'), 5350, id);\n\n      later(() => module.classList.add('fade-out'), 9000, id);\n      later(play, 9500, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-mail',\n        'show-lines',\n        'show-thumbs',\n        'show-cta'\n      );\n    };\n\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      clearTimers();\n      module.classList.add('dia-module-paused');\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    if (!module.closest('[data-dia-ai-stack]')) {\n  if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting && entry.intersectionRatio > 0) {\n              module.diaPlay();\n            } else {\n              module.diaStop();\n            }\n          });\n        }, {\n          threshold: [0, .01],\n          rootMargin: '8% 0px 8% 0px'\n        });\n  \n        observer.observe(module);\n      } else {\n        module.diaPlay();\n      }\n    }\n  });\n})();\n<\/script>\n\n<script>\n(function () {\n\n  function initDiaScrollSection(section) {\n\n    if (\n      !section ||\n      section.dataset.diaAiScrollReady === '1'\n    ) {\n      return;\n    }\n\n\n    \/* =====================================================\n       ELEMENTOR \u2014 PROTECTION DOUBLE STICKY CONSERV\u00c9E\n       ===================================================== *\/\n\n    \/*\n     * Elementor peut cr\u00e9er une copie du widget dans\n     * .elementor-sticky__spacer.\n     *\n     * On pilote UNIQUEMENT le vrai stage.\n     *\/\n    const stack = Array.from(\n      section.querySelectorAll(\n        '[data-dia-ai-stack]'\n      )\n    ).find(function (candidate) {\n      return !candidate.closest(\n        '.elementor-sticky__spacer'\n      );\n    });\n\n\n    const steps = Array.from(\n      section.querySelectorAll(\n        '.dia-step'\n      )\n    ).filter(function (step) {\n      return !step.closest(\n        '.elementor-sticky__spacer'\n      );\n    });\n\n\n    if (\n      !stack ||\n      !steps.length\n    ) {\n      return;\n    }\n\n\n    const layers = Array.from(\n      stack.querySelectorAll(\n        '[data-dia-ai-layer]'\n      )\n    );\n\n\n    const modules = layers.map(\n      function (layer) {\n        return layer.querySelector(\n          '[data-dia-ai-module]'\n        );\n      }\n    );\n\n\n    const prompts = modules.map(\n      function (module) {\n        return module.querySelector(\n          '.dia-context-ai__prompt,' +\n          '.dia-interests-ai__prompt,' +\n          '.dia-seg-ai__prompt,' +\n          '.dia-campaign-ai__prompt,' +\n          '.dia-message-ai__prompt'\n        );\n      }\n    );\n\n\n    if (\n      !layers.length ||\n      layers.length !== modules.length ||\n      modules.some(function (module) {\n        return !module;\n      })\n    ) {\n      return;\n    }\n\n\n    section.dataset.diaAiScrollReady = '1';\n\n\n    \/* =====================================================\n       DROITE \u2014 LOGIQUE VISUELLE EXISTANTE CONSERV\u00c9E\n       ===================================================== *\/\n\n    const MAX_BLUR = 6;\n    const MIN_OPACITY = 0.45;\n    const CLEAR_ZONE = 0.10;\n    const MAX_DISTANCE = 0.55;\n\n    \/*\n     * MOBILE \u2014 aucun blur visuel.\n     * La transition est volontairement courte pour ne pas fatiguer l'\u0153il.\n     *\/\n    const MOBILE_MIN_OPACITY = 0.58;\n    const MOBILE_CLEAR_ZONE = 0.10;\n    const MOBILE_MAX_DISTANCE = 0.22;\n    const MOBILE_MAX_SHIFT = 10;\n\n\n\n    \/* =====================================================\n       GAUCHE \u2014 TRANSITION SCRUBB\u00c9E PAR LE SCROLL\n       ===================================================== *\/\n\n    \/*\n     * Entre le centre de deux steps :\n     *\n     * 0% -------- 32% ------- 50% ------- 68% -------- 100%\n     * A plein      A fade       swap        B fade        B plein\n     *\n     * Le swap se fait \u00e0 opacity 0.\n     * R\u00e9sultat : aucune superposition de deux fen\u00eatres.\n     *\/\n    const FADE_OUT_START = 0.32;\n    const SWAP_POINT = 0.50;\n    const FADE_IN_END = 0.68;\n\n    \/*\n     * Le typing du nouveau module commence lorsqu'il est d\u00e9j\u00e0\n     * suffisamment visible. Avant \u00e7a, la bulle reste au premier frame.\n     *\/\n    const PLAY_OPACITY = 0.34;\n\n    \/*\n     * Le premier module ne joue pas juste parce qu'il existe.\n     * Il commence seulement lorsque son step approche r\u00e9ellement\n     * de la zone de lecture.\n     *\/\n    const FIRST_PLAY_DISTANCE = 0.18;\n\n    \/*\n     * IMPORTANT :\n     * ce seuil garde le timing V10.2 du premier module.\n     * Seule la ligne de r\u00e9f\u00e9rence est maintenant la vraie position\n     * du panneau gauche, donc le comportement reste coh\u00e9rent sur iPad.\n     *\/\n\n\n    let visibleIndex = -1;\n    let playingIndex = -1;\n    let previewMode = false;\n    let ticking = false;\n\n\n    \/* =====================================================\n       HELPERS\n       ===================================================== *\/\n\n    function clamp(value, min, max) {\n      return Math.min(\n        Math.max(value, min),\n        max\n      );\n    }\n\n\n    function smoothstep(value) {\n      value = clamp(value, 0, 1);\n\n      return (\n        value *\n        value *\n        (3 - 2 * value)\n      );\n    }\n\n\n    function callModule(\n      module,\n      method\n    ) {\n\n      if (\n        module &&\n        typeof module[method] ===\n          'function'\n      ) {\n\n        module[method]();\n\n      }\n\n    }\n\n\n    function setPromptMotion(\n      index,\n      y,\n      scale\n    ) {\n\n      const prompt =\n        prompts[index];\n\n      if (!prompt) return;\n\n      prompt.style.setProperty(\n        '--dia-prompt-y',\n        y.toFixed(2) + 'px'\n      );\n\n      prompt.style.setProperty(\n        '--dia-prompt-scale',\n        scale.toFixed(4)\n      );\n\n    }\n\n\n    function resetPromptMotion(index) {\n\n      const prompt =\n        prompts[index];\n\n      if (!prompt) return;\n\n      prompt.style.removeProperty(\n        '--dia-prompt-y'\n      );\n\n      prompt.style.removeProperty(\n        '--dia-prompt-scale'\n      );\n\n    }\n\n\n    \/* =====================================================\n       STEPS \u00c0 DROITE\n       ===================================================== *\/\n\n    function updateStepVisuals(\n      triggerPoint\n    ) {\n\n      const isMobile =\n        window.matchMedia(\n          '(max-width: 767px)'\n        ).matches;\n\n\n      \/* ===================================================\n         MOBILE \u2014 OPACIT\u00c9 + TRANSLATE, AUCUN BLUR VISUEL\n         =================================================== *\/\n\n      if (isMobile) {\n\n        const clearDistance =\n          window.innerHeight *\n          MOBILE_CLEAR_ZONE;\n\n\n        const maxDistance =\n          window.innerHeight *\n          MOBILE_MAX_DISTANCE;\n\n\n        let mobileClosestIndex = 0;\n        let mobileClosestDistance =\n          Infinity;\n\n\n        steps.forEach(\n          function (\n            step,\n            index\n          ) {\n\n            const rect =\n              step.getBoundingClientRect();\n\n\n            const stepCenter =\n              rect.top +\n              (\n                rect.height \/\n                2\n              );\n\n\n            const signedDistance =\n              stepCenter -\n              triggerPoint;\n\n\n            const distance =\n              Math.abs(\n                signedDistance\n              );\n\n\n            if (\n              distance <\n              mobileClosestDistance\n            ) {\n\n              mobileClosestDistance =\n                distance;\n\n              mobileClosestIndex =\n                index;\n\n            }\n\n\n            let progress = 0;\n\n\n            if (\n              distance >\n              clearDistance\n            ) {\n\n              progress =\n                (\n                  distance -\n                  clearDistance\n                )\n                \/\n                (\n                  maxDistance -\n                  clearDistance\n                );\n\n\n              progress =\n                clamp(\n                  progress,\n                  0,\n                  1\n                );\n\n            }\n\n\n            const smoothProgress =\n              smoothstep(\n                progress\n              );\n\n\n            const opacity =\n              1 -\n              (\n                smoothProgress *\n                (\n                  1 -\n                  MOBILE_MIN_OPACITY\n                )\n              );\n\n\n            const direction =\n              signedDistance === 0\n                ? 0\n                : (\n                    signedDistance > 0\n                      ? 1\n                      : -1\n                  );\n\n\n            const shift =\n              direction *\n              MOBILE_MAX_SHIFT *\n              smoothProgress;\n\n\n            step.style.setProperty(\n              '--step-opacity',\n              opacity.toFixed(3)\n            );\n\n\n            step.style.setProperty(\n              '--step-shift',\n              shift.toFixed(2) +\n                'px'\n            );\n\n\n            \/*\n             * Signal logique invisible :\n             * les modules individuels mobile peuvent continuer \u00e0 lire\n             * --step-blur pour d\u00e9cider quand diaPlay() d\u00e9marre.\n             *\/\n            step.style.setProperty(\n              '--step-blur',\n              (\n                smoothProgress *\n                1.25\n              ).toFixed(2) +\n                'px'\n            );\n\n          }\n        );\n\n\n        \/*\n         * Le step r\u00e9ellement vis-\u00e0-vis devient aussi .active.\n         * Utile pour les modules individuels plac\u00e9s sous leur texte.\n         *\/\n        steps.forEach(\n          function (\n            step,\n            index\n          ) {\n\n            step.classList.toggle(\n              'active',\n              index ===\n                mobileClosestIndex\n            );\n\n          }\n        );\n\n\n        return;\n\n      }\n\n\n      \/* ===================================================\n         DESKTOP \/ TABLETTE \u2014 TIMING ORIGINAL\n\n         02 \/ 03 \/ 04 gardent exactement la courbe d'origine.\n         Seules les deux extr\u00e9mit\u00e9s sont trait\u00e9es naturellement :\n         01 net \u00e0 l'entr\u00e9e, 05 net \u00e0 la sortie.\n         =================================================== *\/\n\n      const clearDistance =\n        window.innerHeight *\n        CLEAR_ZONE;\n\n\n      const maxDistance =\n        window.innerHeight *\n        MAX_DISTANCE;\n\n\n      steps.forEach(\n        function (\n          step,\n          index\n        ) {\n\n          const rect =\n            step.getBoundingClientRect();\n\n\n          const stepCenter =\n            rect.top +\n            (\n              rect.height \/\n              2\n            );\n\n\n          const signedDistance =\n            stepCenter -\n            triggerPoint;\n\n\n          const distance =\n            Math.abs(\n              signedDistance\n            );\n\n\n          let blur = 0;\n          let opacity = 1;\n\n\n          \/*\n           * EXTR\u00c9MIT\u00c9S DE LA S\u00c9QUENCE\n           *\n           * 01 n'a pas de step pr\u00e9c\u00e9dent :\n           * il reste donc NET pendant toute son entr\u00e9e.\n           * Il utilisera la courbe normale seulement lorsqu'il\n           * commencera \u00e0 quitter le focus vers le step 02.\n           *\n           * 05 n'a pas de step suivant :\n           * il utilise la courbe normale \u00e0 l'approche, puis reste\n           * NET une fois la ligne de focus d\u00e9pass\u00e9e.\n           *\n           * Le timing des steps 02 \/ 03 \/ 04 reste identique.\n           *\/\n          const isFirstEntering =\n            index === 0 &&\n            signedDistance >= 0;\n\n\n          const isLastLeaving =\n            index ===\n              (steps.length - 1) &&\n            signedDistance <= 0;\n\n\n          if (\n            isFirstEntering ||\n            isLastLeaving\n          ) {\n\n            step.style.setProperty(\n              '--step-blur',\n              '0px'\n            );\n\n\n            step.style.setProperty(\n              '--step-opacity',\n              '1'\n            );\n\n\n            step.style.setProperty(\n              '--step-shift',\n              '0px'\n            );\n\n\n            return;\n\n          }\n\n\n          if (\n            distance >\n            clearDistance\n          ) {\n\n            let progress =\n              (\n                distance -\n                clearDistance\n              )\n              \/\n              (\n                maxDistance -\n                clearDistance\n              );\n\n\n            progress =\n              clamp(\n                progress,\n                0,\n                1\n              );\n\n\n            const smoothProgress =\n              smoothstep(\n                progress\n              );\n\n\n            blur =\n              smoothProgress *\n              MAX_BLUR;\n\n\n            opacity =\n              1 -\n              (\n                smoothProgress *\n                (\n                  1 -\n                  MIN_OPACITY\n                )\n              );\n\n          }\n\n\n          step.style.setProperty(\n            '--step-blur',\n            blur.toFixed(2) +\n              'px'\n          );\n\n\n          step.style.setProperty(\n            '--step-opacity',\n            opacity.toFixed(3)\n          );\n\n\n          step.style.setProperty(\n            '--step-shift',\n            '0px'\n          );\n\n        }\n      );\n\n    }\n\n\n    \/* =====================================================\n       LAYERS \u2014 UN SEUL VISIBLE \u00c0 LA FOIS\n       ===================================================== *\/\n\n    function hideLayer(index) {\n\n      if (\n        index < 0 ||\n        index >= layers.length\n      ) {\n        return;\n      }\n\n\n      layers[index].classList.remove(\n        'is-active',\n        'is-preview'\n      );\n\n\n      layers[index].style.removeProperty(\n        'opacity'\n      );\n\n\n      resetPromptMotion(\n        index\n      );\n\n    }\n\n\n    function resetLayer(index) {\n\n      if (\n        index < 0 ||\n        index >= layers.length\n      ) {\n        return;\n      }\n\n\n      hideLayer(index);\n\n\n      callModule(\n        modules[index],\n        'diaReset'\n      );\n\n    }\n\n\n    function stopPlayingModule() {\n\n      if (\n        playingIndex < 0 ||\n        playingIndex >= modules.length\n      ) {\n        playingIndex = -1;\n        return;\n      }\n\n\n      callModule(\n        modules[playingIndex],\n        'diaStop'\n      );\n\n\n      playingIndex = -1;\n\n    }\n\n\n    function showOnlyLayer(\n      index,\n      opacity,\n      promptY,\n      promptScale\n    ) {\n\n      index =\n        clamp(\n          index,\n          0,\n          layers.length - 1\n        );\n\n\n      \/*\n       * IMPORTANT :\n       * au changement d'index, l'ancienne couche est d\u00e9j\u00e0\n       * pratiquement invisible. On la reset AVANT d'afficher\n       * la suivante. Il n'y a donc jamais deux interfaces.\n       *\/\n      if (\n        visibleIndex !== index\n      ) {\n\n        const oldIndex =\n          visibleIndex;\n\n\n        stopPlayingModule();\n\n\n        layers.forEach(\n          function (\n            layer,\n            i\n          ) {\n\n            if (\n              i !== index\n            ) {\n\n              resetLayer(i);\n\n            }\n\n          }\n        );\n\n\n        callModule(\n          modules[index],\n          'diaReset'\n        );\n\n\n        visibleIndex =\n          index;\n\n\n        previewMode =\n          false;\n\n\n        if (\n          oldIndex >= 0 &&\n          oldIndex !== index\n        ) {\n\n          resetLayer(\n            oldIndex\n          );\n\n        }\n\n      }\n\n\n      layers[index].classList.remove(\n        'is-preview'\n      );\n\n\n      layers[index].classList.add(\n        'is-active'\n      );\n\n\n      layers[index].style.opacity =\n        opacity.toFixed(4);\n\n\n      setPromptMotion(\n        index,\n        promptY,\n        promptScale\n      );\n\n    }\n\n\n    \/* =====================================================\n       PREVIEW 01\n       ===================================================== *\/\n\n    function showFirstPreview() {\n\n      if (\n        previewMode &&\n        visibleIndex === 0\n      ) {\n        return;\n      }\n\n\n      stopPlayingModule();\n\n\n      layers.forEach(\n        function (\n          layer,\n          index\n        ) {\n\n          resetLayer(\n            index\n          );\n\n        }\n      );\n\n\n      visibleIndex = 0;\n      previewMode = true;\n\n\n      layers[0].classList.add(\n        'is-preview'\n      );\n\n\n      layers[0].style.opacity =\n        '1';\n\n\n      resetPromptMotion(\n        0\n      );\n\n\n      \/*\n       * Au lieu d'un premier frame compl\u00e8tement vide,\n       * on affiche le d\u00e9but de la commande en attente.\n       *\/\n      callModule(\n        modules[0],\n        'diaPreview'\n      );\n\n    }\n\n\n    \/* =====================================================\n       LANCER L'ANIMATION INTERNE\n       ===================================================== *\/\n\n    function ensurePlaying(index) {\n\n      if (\n        playingIndex === index\n      ) {\n        return;\n      }\n\n\n      stopPlayingModule();\n\n\n      callModule(\n        modules[index],\n        'diaPlay'\n      );\n\n\n      playingIndex =\n        index;\n\n    }\n\n\n    \/* =====================================================\n       CALCUL DE L'\u00c9TAT VISUEL GAUCHE\n       ===================================================== *\/\n\n    function getScrollState(\n      triggerPoint\n    ) {\n\n      const centers =\n        steps.map(\n          function (step) {\n\n            const rect =\n              step.getBoundingClientRect();\n\n\n            return (\n              rect.top +\n              (rect.height \/ 2)\n            );\n\n          }\n        );\n\n\n      \/*\n       * Avant le centre du premier step.\n       *\/\n      if (\n        triggerPoint <=\n        centers[0]\n      ) {\n\n        return {\n          index: 0,\n          opacity: 1,\n          promptY: 0,\n          promptScale: 1,\n          phase: 'stable',\n          distanceToStep:\n            Math.abs(\n              centers[0] -\n              triggerPoint\n            )\n        };\n\n      }\n\n\n      const lastIndex =\n        centers.length - 1;\n\n\n      \/*\n       * Apr\u00e8s le centre du dernier step.\n       *\/\n      if (\n        triggerPoint >=\n        centers[lastIndex]\n      ) {\n\n        return {\n          index: lastIndex,\n          opacity: 1,\n          promptY: 0,\n          promptScale: 1,\n          phase: 'stable',\n          distanceToStep:\n            Math.abs(\n              centers[lastIndex] -\n              triggerPoint\n            )\n        };\n\n      }\n\n\n      \/*\n       * Entre deux steps.\n       *\/\n      for (\n        let i = 0;\n        i < centers.length - 1;\n        i += 1\n      ) {\n\n        const currentCenter =\n          centers[i];\n\n\n        const nextCenter =\n          centers[i + 1];\n\n\n        if (\n          triggerPoint >=\n            currentCenter &&\n          triggerPoint <=\n            nextCenter\n        ) {\n\n          const distance =\n            nextCenter -\n            currentCenter;\n\n\n          const progress =\n            clamp(\n              (\n                triggerPoint -\n                currentCenter\n              )\n              \/\n              distance,\n              0,\n              1\n            );\n\n\n          \/*\n           * Zone stable A.\n           *\/\n          if (\n            progress <=\n            FADE_OUT_START\n          ) {\n\n            return {\n              index: i,\n              opacity: 1,\n              promptY: 0,\n              promptScale: 1,\n              phase: 'stable',\n              distanceToStep:\n                Math.abs(\n                  currentCenter -\n                  triggerPoint\n                )\n            };\n\n          }\n\n\n          \/*\n           * Fade OUT de A.\n           *\n           * Uniquement A est visible.\n           *\/\n          if (\n            progress <\n            SWAP_POINT\n          ) {\n\n            const q =\n              smoothstep(\n                (\n                  progress -\n                  FADE_OUT_START\n                )\n                \/\n                (\n                  SWAP_POINT -\n                  FADE_OUT_START\n                )\n              );\n\n\n            return {\n              index: i,\n              opacity:\n                1 - q,\n              promptY:\n                -6 * q,\n              promptScale:\n                1 -\n                (\n                  0.012 *\n                  q\n                ),\n              phase: 'out',\n              distanceToStep:\n                Math.abs(\n                  currentCenter -\n                  triggerPoint\n                )\n            };\n\n          }\n\n\n          \/*\n           * Fade IN de B.\n           *\n           * A est d\u00e9j\u00e0 cach\u00e9\/reset.\n           * Uniquement B est visible.\n           *\/\n          if (\n            progress <\n            FADE_IN_END\n          ) {\n\n            const q =\n              smoothstep(\n                (\n                  progress -\n                  SWAP_POINT\n                )\n                \/\n                (\n                  FADE_IN_END -\n                  SWAP_POINT\n                )\n              );\n\n\n            return {\n              index: i + 1,\n              opacity: q,\n              promptY:\n                10 *\n                (1 - q),\n              promptScale:\n                0.985 +\n                (\n                  0.015 *\n                  q\n                ),\n              phase: 'in',\n              distanceToStep:\n                Math.abs(\n                  nextCenter -\n                  triggerPoint\n                )\n            };\n\n          }\n\n\n          \/*\n           * Zone stable B.\n           *\/\n          return {\n            index: i + 1,\n            opacity: 1,\n            promptY: 0,\n            promptScale: 1,\n            phase: 'stable',\n            distanceToStep:\n              Math.abs(\n                nextCenter -\n                triggerPoint\n              )\n          };\n\n        }\n\n      }\n\n\n      \/*\n       * S\u00e9curit\u00e9.\n       *\/\n      return {\n        index: 0,\n        opacity: 1,\n        promptY: 0,\n        promptScale: 1,\n        phase: 'stable',\n        distanceToStep: 0\n      };\n\n    }\n\n\n    \/* =====================================================\n       RENDU DE L'\u00c9TAT\n       ===================================================== *\/\n\n    function renderScrollState(\n      state\n    ) {\n\n      showOnlyLayer(\n        state.index,\n        state.opacity,\n        state.promptY,\n        state.promptScale\n      );\n\n\n      \/*\n       * MOBILE UNIQUEMENT :\n       * .active reste disponible pour les modules individuels\n       * et le focus mobile.\n       *\n       * DESKTOP \/ TABLETTE :\n       * on retire volontairement .active des .dia-step.\n       * Le blur\/opacit\u00e9 est pilot\u00e9 UNIQUEMENT par la distance au scroll.\n       * Le d\u00e9marrage de diaPlay() ne peut donc plus provoquer un \"snap\"\n       * du texte vers l'\u00e9tat clair.\n       *\/\n      const isMobileStepMode =\n        window.matchMedia(\n          '(max-width: 767px)'\n        ).matches;\n\n\n      steps.forEach(\n        function (\n          step,\n          index\n        ) {\n\n          if (isMobileStepMode) {\n\n            step.classList.toggle(\n              'active',\n              index ===\n                state.index\n            );\n\n          } else {\n\n            step.classList.remove(\n              'active'\n            );\n\n          }\n\n        }\n      );\n\n\n      \/*\n       * Pendant le fade OUT :\n       * on laisse le module fig\u00e9\/arr\u00eat\u00e9 seulement lorsqu'il\n       * est d\u00e9j\u00e0 assez avanc\u00e9 dans sa sortie.\n       *\n       * Cela \u00e9vite de voir une UI continuer \u00e0 \"travailler\"\n       * alors qu'elle est en train de dispara\u00eetre.\n       *\/\n      if (\n        state.phase === 'out' &&\n        state.opacity < 0.78 &&\n        playingIndex ===\n          state.index\n      ) {\n\n        stopPlayingModule();\n\n      }\n\n\n      \/*\n       * Nouveau module :\n       * diaPlay() commence lorsque la bulle est suffisamment visible.\n       *\n       * C'est ce qui donne le feeling :\n       * \"nouvelle bulle -> nouveau typing -> nouvelle r\u00e9ponse\".\n       *\/\n      if (\n        (\n          state.phase === 'in' &&\n          state.opacity >=\n            PLAY_OPACITY\n        )\n        ||\n        state.phase ===\n          'stable'\n      ) {\n\n        ensurePlaying(\n          state.index\n        );\n\n      }\n\n    }\n\n\n    \/* =====================================================\n       TOUT D\u00c9SACTIVER\n       ===================================================== *\/\n\n    function deactivateAll() {\n\n      stopPlayingModule();\n\n\n      layers.forEach(\n        function (\n          layer,\n          index\n        ) {\n\n          resetLayer(\n            index\n          );\n\n        }\n      );\n\n\n      visibleIndex = -1;\n      previewMode = false;\n\n\n      steps.forEach(\n        function (step) {\n\n          step.classList.remove(\n            'active'\n          );\n\n        }\n      );\n\n    }\n\n\n    \/* =====================================================\n       LIGNE DE SYNCHRONISATION \"VIS-\u00c0-VIS\"\n       ===================================================== *\/\n\n    \/*\n     * Au lieu de supposer que le panneau gauche est toujours centr\u00e9\n     * \u00e0 50vh, on mesure SA vraie position dans le viewport.\n     *\n     * C'est cette ligne qui devient la r\u00e9f\u00e9rence pour :\n     * - le blur \/ focus des steps de droite;\n     * - le changement du module de gauche;\n     * - le scrub de transition entre deux modules.\n     *\n     * Donc desktop, iPad, tablette, laptop :\n     * le module change quand le centre du step droit passe r\u00e9ellement\n     * vis-\u00e0-vis du centre du visuel sticky gauche.\n     *\/\n    function getVisualTriggerPoint() {\n\n      const rect =\n        stack.getBoundingClientRect();\n\n      if (\n        rect &&\n        rect.height > 0 &&\n        Number.isFinite(rect.top) &&\n        Number.isFinite(rect.height)\n      ) {\n\n        const point =\n          rect.top +\n          (rect.height \/ 2);\n\n        \/*\n         * Si Elementor est en train de d\u00e9placer le sticky et que le centre\n         * sort momentan\u00e9ment du viewport, on retombe proprement sur 50vh.\n         *\/\n        if (\n          point >= 0 &&\n          point <= window.innerHeight\n        ) {\n          return point;\n        }\n\n      }\n\n      return (\n        window.innerHeight *\n        0.5\n      );\n\n    }\n\n\n    \/* =====================================================\n       SCROLL\n       ===================================================== *\/\n\n    function checkScroll() {\n\n      \/*\n       * Ligne r\u00e9elle du centre du module sticky gauche.\n       * Ce n'est plus un 50vh arbitraire.\n       *\/\n      const triggerPoint =\n        getVisualTriggerPoint();\n\n\n      const sectionRect =\n        section.getBoundingClientRect();\n\n\n      updateStepVisuals(\n        triggerPoint\n      );\n\n\n      const sectionHasStarted =\n        sectionRect.top <=\n        triggerPoint;\n\n\n      const sectionHasEnded =\n        sectionRect.bottom <= 0;\n\n\n      \/*\n       * AVANT la section :\n       * le module 01 est d\u00e9j\u00e0 l\u00e0, premier frame,\n       * mais aucun typing \/ aucune boucle.\n       *\/\n      if (\n        !sectionHasStarted\n      ) {\n\n        showFirstPreview();\n\n        return;\n\n      }\n\n\n      \/*\n       * APR\u00c8S la section.\n       *\/\n      if (\n        sectionHasEnded\n      ) {\n\n        deactivateAll();\n\n        return;\n\n      }\n\n\n      const state =\n        getScrollState(\n          triggerPoint\n        );\n\n\n      \/*\n       * Cas sp\u00e9cial du module 01 :\n       * il reste immobile tant que le premier step\n       * est encore trop loin du centre.\n       *\/\n      if (\n        state.index === 0 &&\n        visibleIndex === 0 &&\n        previewMode\n      ) {\n\n        const firstRect =\n          steps[0]\n            .getBoundingClientRect();\n\n\n        const firstCenter =\n          firstRect.top +\n          (\n            firstRect.height \/\n            2\n          );\n\n\n        const firstDistance =\n          Math.abs(\n            firstCenter -\n            triggerPoint\n          );\n\n\n        if (\n          firstDistance >\n          (\n            window.innerHeight *\n            FIRST_PLAY_DISTANCE\n          )\n        ) {\n\n          layers[0].style.opacity =\n            '1';\n\n          resetPromptMotion(\n            0\n          );\n\n          return;\n\n        }\n\n\n        previewMode =\n          false;\n\n      }\n\n\n      renderScrollState(\n        state\n      );\n\n    }\n\n\n    \/* =====================================================\n       PERFORMANCE\n       ===================================================== *\/\n\n    function onScroll() {\n\n      if (\n        ticking\n      ) {\n        return;\n      }\n\n\n      ticking = true;\n\n\n      window.requestAnimationFrame(\n        function () {\n\n          checkScroll();\n\n          ticking = false;\n\n        }\n      );\n\n    }\n\n\n    \/* =====================================================\n       INITIALISATION\n       ===================================================== *\/\n\n    layers.forEach(\n      function (\n        layer,\n        index\n      ) {\n\n        layer.classList.remove(\n          'is-active',\n          'is-preview'\n        );\n\n\n        layer.style.removeProperty(\n          'opacity'\n        );\n\n\n        resetPromptMotion(\n          index\n        );\n\n\n        callModule(\n          modules[index],\n          'diaReset'\n        );\n\n      }\n    );\n\n\n    \/*\n     * Le module 01 existe visuellement d\u00e8s le d\u00e9part.\n     *\/\n    visibleIndex = 0;\n    previewMode = true;\n\n\n    layers[0].classList.add(\n      'is-preview'\n    );\n\n\n    layers[0].style.opacity =\n      '1';\n\n\n    \/*\n     * Le module 01 est visible d\u00e8s le chargement avec quelques mots\n     * d\u00e9j\u00e0 saisis, mais l'animation compl\u00e8te attend toujours le\n     * m\u00eame seuil que la V10 originale.\n     *\/\n    callModule(\n      modules[0],\n      'diaPreview'\n    );\n\n\n    checkScroll();\n\n\n    window.addEventListener(\n      'scroll',\n      onScroll,\n      {\n        passive: true\n      }\n    );\n\n\n    window.addEventListener(\n      'resize',\n      onScroll,\n      {\n        passive: true\n      }\n    );\n\n  }\n\n\n  function initDiaScroll() {\n\n    document\n      .querySelectorAll(\n        '.dia-scroll-section'\n      )\n      .forEach(\n        initDiaScrollSection\n      );\n\n  }\n\n\n  if (\n    document.readyState ===\n    'loading'\n  ) {\n\n    document.addEventListener(\n      'DOMContentLoaded',\n      initDiaScroll,\n      {\n        once: true\n      }\n    );\n\n  } else {\n\n    initDiaScroll();\n\n  }\n\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-39edd241 e-con-full e-flex e-con e-child\" data-id=\"39edd241\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t<div class=\"elementor-element elementor-element-5e378f1a e-con-full dia-step dia-step-1 e-flex e-con e-child\" data-id=\"5e378f1a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e2141a7 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"7e2141a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">01 \u00b7 AI CONTEXT<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4aaf716b elementor-widget elementor-widget-heading\" data-id=\"4aaf716b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">DiA understands your organization.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ca30157 elementor-widget elementor-widget-text-editor\" data-id=\"6ca30157\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Give DiA your brand, audience, and objectives once. Then reuse the right context to get more consistent, relevant results without repeating your instructions.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-646c3c16 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"646c3c16\" 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<style>\n\/* =========================================================\n   DiA \u2014 01 \u00b7 CONTEXTE IA\n   ========================================================= *\/\n\n.dia-context-ai,\n.dia-context-ai * {\n  box-sizing: border-box;\n}\n\n.dia-context-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-context-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n\n  \/*\n   * IMPORTANT ELEMENTOR \/ MOBILE\n   * La hauteur n'est plus simul\u00e9e avec aspect-ratio ou padding-top\n   * sur le conteneur principal. Un SVG invisible en flux normal\n   * impose physiquement le ratio 3264 x 2538 et Elementor mesure\n   * donc toujours la bonne hauteur du widget.\n   *\/\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* \u00c9l\u00e9ment de ratio en FLUX NORMAL : c'est lui qui donne sa hauteur au widget. *\/\n.dia-context-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-context-ai__prompt {\n  position: absolute;\n  top: 12.2%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 17.3%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-context-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-context-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-context-ai.is-typing-prompt .dia-context-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaContextCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 position exacte de la vid\u00e9o : bas \/ gauche\n   Il annonce l'endroit o\u00f9 la r\u00e9ponse IA va appara\u00eetre.\n   ========================================================= *\/\n\n.dia-context-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 43.45%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-context-ai.show-loader .dia-context-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaContextDot .72s ease-in-out infinite alternate;\n}\n\n.dia-context-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-context-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA \u2014 bas \/ gauche\n   Les proportions suivent la vid\u00e9o de r\u00e9f\u00e9rence.\n   ========================================================= *\/\n\n.dia-context-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 36.45%;\n  width: 72.15%;\n  height: 50.55%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-context-ai.show-card .dia-context-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 SVG inline, exact path fourni\n   ========================================================= *\/\n\n.dia-context-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 7.35%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark {\n  opacity: 1;\n}\n\n.dia-context-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n\/*\n * Le logo arrive en deux temps :\n * 1) l'\u00e9toile monte \/ se d\u00e9ploie l\u00e9g\u00e8rement;\n * 2) le point blanc appara\u00eet juste apr\u00e8s.\n * Les keyframes terminent avec transform:none pour garder le SVG net.\n *\/\n.dia-context-ai__mark-spark,\n.dia-context-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark-spark {\n  animation: diaContextMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-context-ai.show-mark .dia-context-ai__mark-dot {\n  animation: diaContextMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n.dia-context-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 11.0%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n  transition: opacity .28s ease .03s, transform .4s cubic-bezier(.2,.82,.2,1) .03s;\n}\n\n.dia-context-ai.show-title .dia-context-ai__title {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   BLOC CONTEXTE\n   ========================================================= *\/\n\n.dia-context-ai__context-box {\n  position: absolute;\n  left: 12.85%;\n  top: 28.8%;\n  width: 79.2%;\n  height: 37.3%;\n  overflow: hidden;\n  border-radius: var(--dia-context-radius);\n  background: linear-gradient(112deg, #5A18CA 0%, #641CDA 100%);\n  opacity: 0;\n  transform: translateY(.72cqw);\n  transition:\n    opacity .38s ease,\n    transform .48s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-context-ai__context-box::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  background: var(--dia-lime);\n  border-top-left-radius: var(--dia-context-radius);\n  border-bottom-left-radius: var(--dia-context-radius);\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-box {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-box::before {\n  transform: scaleY(1);\n}\n\n.dia-context-ai__context-copy {\n  position: absolute;\n  inset: 8.0% 5.0% 8% 7.4%;\n  color: #fff;\n}\n\n.dia-context-ai__eyebrow {\n  margin: 0;\n  color: var(--dia-lime);\n  font-size: 2.34cqw;\n  font-weight: 800;\n  line-height: 1;\n  letter-spacing: -.02em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .16s, transform .36s cubic-bezier(.2,.82,.2,1) .16s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__eyebrow {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-context-ai__context-text {\n  margin: 1.18cqw 0 0;\n  max-width: 96%;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 650;\n  line-height: 1.32;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.36cqw);\n  transition: opacity .30s ease .24s, transform .40s cubic-bezier(.2,.82,.2,1) .24s;\n}\n\n.dia-context-ai.show-context .dia-context-ai__context-text {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   BOUTONS OUI \/ NON\n   ========================================================= *\/\n\n.dia-context-ai__answers {\n  position: absolute;\n  left: 12.85%;\n  bottom: 7.65%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-context-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-context-ai.show-yes .dia-context-ai__choice--yes {\n  animation: diaContextChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-context-ai.show-no .dia-context-ai__choice--no {\n  animation: diaContextChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-context-ai.fade-out .dia-context-ai__card,\n.dia-context-ai.fade-out .dia-context-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-context-ai.fade-out .dia-context-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaContextDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaContextCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaContextMarkSparkIn {\n  0% {\n    opacity: 0;\n    transform: translateY(10%) scale(.72) rotate(-7deg);\n  }\n  62% {\n    opacity: 1;\n    transform: translateY(-2%) scale(1.045) rotate(1.5deg);\n  }\n  100% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes diaContextMarkDotIn {\n  0% {\n    opacity: 0;\n    transform: translateY(18%) scale(.35);\n  }\n  72% {\n    opacity: 1;\n    transform: translateY(-4%) scale(1.12);\n  }\n  100% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes diaContextChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* Mobile : garder des coins proportionnels au module.\n   Les anciennes valeurs fixes 15\/16px arrondissaient beaucoup trop\n   les cartes quand le widget devenait \u00e9troit. *\/\n@media (max-width: 767px) {\n  .dia-context-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-context-ai__prompt {\n    border-radius: 2.05cqw;\n  }\n\n  .dia-context-ai__card {\n    border-radius: 2.35cqw;\n  }\n\n  .dia-context-ai__context-box {\n    border-radius: var(--dia-context-radius);\n  }\n\n  .dia-context-ai__choice {\n    border-radius: 2.05cqw;\n  }\n}\n\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n\n   Sur certains layouts Elementor, le widget HTML ou son\n   .elementor-widget-container peut rester hors du flux \/ trop court\n   m\u00eame si .dia-context-ai poss\u00e8de la bonne hauteur.\n\n   Le JS plus bas ajoute deux classes aux wrappers r\u00e9els et leur passe\n   la hauteur mesur\u00e9e du module dans --dia-flow-height.\n   Ce correctif ne s'applique QUE sous 767 px et seulement quand\n   data-dia-elementor-flow-fix est pr\u00e9sent sur ce module.\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-context-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-context-ai *,\n  .dia-context-ai *::before,\n  .dia-context-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-context-ai__card,\n  .dia-context-ai__mark,\n  .dia-context-ai__title,\n  .dia-context-ai__context-box,\n  .dia-context-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-context-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-ai-module dia-ai-module--context dia-context-ai\" data-dia-ai-module data-dia-context-ai data-dia-step=\"context\" data-dia-elementor-flow-fix>\n\n  <!--\n    Spacer de ratio en flux normal.\n    Contrairement aux \u00e9l\u00e9ments anim\u00e9s (absolute), celui-ci donne une vraie\n    hauteur au widget Elementor sur desktop, tablette et mobile.\n  -->\n  <svg class=\"dia-context-ai__ratio-spacer\" width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n  <div class=\"dia-context-ai__prompt\">\n    <span class=\"dia-context-ai__prompt-text\" data-dia-context-prompt><\/span>\n  <\/div>\n\n  <div class=\"dia-context-ai__loader\" aria-hidden=\"true\">\n    <span><\/span><span><\/span><span><\/span>\n  <\/div>\n\n  <div class=\"dia-context-ai__card\">\n\n    <!-- Logo IA : ellipse + path EXACTS du SVG fourni -->\n    <div class=\"dia-context-ai__mark\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-hidden=\"true\">\n        <ellipse class=\"dia-context-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n        <path class=\"dia-context-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n      <\/svg>\n    <\/div>\n\n    <p class=\"dia-context-ai__title\">Apply this context:<\/p>\n\n    <div class=\"dia-context-ai__context-box\">\n      <div class=\"dia-context-ai__context-copy\">\n        <p class=\"dia-context-ai__eyebrow\">SUMMER BOUTIQUE<\/p>\n        <p class=\"dia-context-ai__context-text\">Audience aged 25\u201340, upbeat tone,<br>and no discounts in the subject line<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"dia-context-ai__answers\" aria-hidden=\"true\">\n      <div class=\"dia-context-ai__choice dia-context-ai__choice--yes\">YES<\/div>\n      <div class=\"dia-context-ai__choice dia-context-ai__choice--no\">NO<\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-context-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaContextReady === '1') return;\n    module.dataset.diaContextReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-context-prompt]');\n    const promptText = 'Prepare a campaign for our new summer collection.';\n\n    \/* =======================================================\n       ELEMENTOR MOBILE \u2014 SYNCHRONISATION DE LA HAUTEUR\n\n       Le module conna\u00eet sa vraie hauteur. On la transmet aux deux\n       wrappers Elementor qui peuvent autrement rester trop courts\n       dans l'\u00e9diteur \/ sur mobile.\n       ======================================================= *\/\n    const flowFixEnabled = module.hasAttribute('data-dia-elementor-flow-fix');\n    const elementorContainer = module.closest('.elementor-widget-container');\n    const elementorWidget = module.closest('.elementor-widget-html');\n\n    const syncElementorFlowHeight = () => {\n      if (!flowFixEnabled || !elementorContainer || !elementorWidget) return;\n\n      const height = Math.ceil(module.getBoundingClientRect().height);\n      if (!height) return;\n\n      const value = height + 'px';\n\n      elementorWidget.classList.add('dia-elementor-flow-host');\n      elementorContainer.classList.add('dia-elementor-flow-container');\n\n      elementorWidget.style.setProperty('--dia-flow-height', value);\n      elementorContainer.style.setProperty('--dia-flow-height', value);\n    };\n\n    \/* Une premi\u00e8re mesure apr\u00e8s le layout, puis \u00e0 chaque resize r\u00e9el. *\/\n    requestAnimationFrame(() => {\n      syncElementorFlowHeight();\n      requestAnimationFrame(syncElementorFlowHeight);\n    });\n\n    if ('ResizeObserver' in window) {\n      const flowResizeObserver = new ResizeObserver(syncElementorFlowHeight);\n      flowResizeObserver.observe(module);\n    } else {\n      window.addEventListener('resize', syncElementorFlowHeight, { passive: true });\n    }\n\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id) => {\n      let i = 0;\n      module.classList.add('is-typing-prompt');\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        'is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-context',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id);\n\n      later(() => module.classList.add('show-loader'), 2300, id);\n      later(() => module.classList.remove('show-loader'), 3260, id);\n\n      later(() => module.classList.add('show-card'), 3270, id);\n      later(() => module.classList.add('show-mark'), 3360, id);\n      later(() => module.classList.add('show-title'), 3650, id);\n      later(() => module.classList.add('show-context'), 3920, id);\n      later(() => module.classList.add('show-yes'), 4680, id);\n      later(() => module.classList.add('show-no'), 5070, id);\n\n      later(() => module.classList.add('fade-out'), 8350, id);\n      later(play, 8850, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add('show-card', 'show-mark', 'show-title', 'show-context', 'show-yes', 'show-no');\n    };\n\n    \/* API minimale pour l'int\u00e9gration future \u00e0 la section scrollable. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* =======================================================\n       MOBILE \/ MODULE INDIVIDUEL \u2014 PLAY QUAND LE STEP EST D\u00c9BLURR\u00c9\n       =======================================================\n\n       IMPORTANT :\n       ce bloc ne change AUCUN CSS, AUCUNE dimension et AUCUNE apparence.\n       Il remplace seulement l'ancien autoplay \"d\u00e8s que le module est visible\".\n\n       Id\u00e9alement, place ce widget HTML dans le m\u00eame conteneur .dia-step\n       que le texte correspondant.\n       ======================================================= *\/\n\n    const activationStep =\n      module.closest('.dia-step') ||\n      module;\n\n    let focusTicking = false;\n    let focusState = false;\n\n    const readBlurPx = (el) => {\n      const styles =\n        window.getComputedStyle(el);\n\n      \/*\n       * Ton contr\u00f4leur principal pilote d\u00e9j\u00e0 --step-blur.\n       * C'est la source la plus fid\u00e8le \u00e0 ce qui est r\u00e9ellement affich\u00e9.\n       *\/\n      const cssVar = styles\n        .getPropertyValue('--step-blur')\n        .trim();\n\n      if (cssVar) {\n        const value =\n          parseFloat(cssVar);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      \/*\n       * Fallback si le blur vient directement de filter: blur(...).\n       *\/\n      const filter =\n        styles.filter || '';\n\n      const match =\n        filter.match(\n          \/blur\\(([-\\d.]+)px\\)\/i\n        );\n\n      if (match) {\n        const value =\n          parseFloat(match[1]);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      return null;\n    };\n\n    const isSectionFocused = () => {\n\n      \/*\n       * 1) Si un blur existe, on suit EXACTEMENT son \u00e9tat visuel.\n       *    Le module ne part que lorsque la section est pratiquement nette.\n       *\/\n      if (activationStep !== module) {\n        const blurPx =\n          readBlurPx(\n            activationStep\n          );\n\n        if (blurPx !== null) {\n          const styles =\n            window.getComputedStyle(\n              activationStep\n            );\n\n          const opacity =\n            parseFloat(\n              styles.opacity || '1'\n            );\n\n          return (\n            blurPx <= 0.75 &&\n            (\n              !Number.isFinite(opacity) ||\n              opacity >= 0.90\n            )\n          );\n        }\n      }\n\n      \/*\n       * 2) Si aucun blur mesurable n'existe mais que ton contr\u00f4leur\n       *    ajoute .active, on utilise cette classe.\n       *\/\n      if (\n        activationStep !== module &&\n        activationStep.classList.contains(\n          'active'\n        )\n      ) {\n        return true;\n      }\n\n      \/*\n       * 3) Fallback autonome :\n       *    si ce module est utilis\u00e9 sans le contr\u00f4leur de blur,\n       *    il joue seulement lorsque sa section est dans la zone centrale.\n       *\n       *    Cette logique ne modifie aucun style.\n       *\/\n      const rect =\n        activationStep\n          .getBoundingClientRect();\n\n      if (\n        rect.bottom <= 0 ||\n        rect.top >=\n          window.innerHeight\n      ) {\n        return false;\n      }\n\n      const center =\n        rect.top +\n        (\n          rect.height \/\n          2\n        );\n\n      return (\n        center >=\n          window.innerHeight * 0.34 &&\n        center <=\n          window.innerHeight * 0.66\n      );\n    };\n\n    const syncPlayWithFocus = () => {\n      const shouldPlay =\n        isSectionFocused();\n\n      if (\n        shouldPlay ===\n        focusState\n      ) {\n        return;\n      }\n\n      focusState =\n        shouldPlay;\n\n      if (shouldPlay) {\n        module.diaPlay();\n      } else {\n        \/*\n         * En quittant le focus, on remet le module au d\u00e9but.\n         * Il rejouera proprement lors du prochain d\u00e9blur.\n         *\/\n        module.diaReset();\n      }\n    };\n\n    const requestFocusSync = () => {\n      if (focusTicking) {\n        return;\n      }\n\n      focusTicking = true;\n\n      window.requestAnimationFrame(\n        () => {\n          syncPlayWithFocus();\n          focusTicking = false;\n        }\n      );\n    };\n\n    \/*\n     * Suit le scroll et le resize.\n     *\/\n    window.addEventListener(\n      'scroll',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    window.addEventListener(\n      'resize',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    \/*\n     * R\u00e9agit imm\u00e9diatement lorsque le contr\u00f4leur change\n     * le style inline (--step-blur \/ opacity) ou la classe active.\n     *\/\n    if (\n      activationStep !== module &&\n      'MutationObserver' in window\n    ) {\n      const focusObserver =\n        new MutationObserver(\n          requestFocusSync\n        );\n\n      focusObserver.observe(\n        activationStep,\n        {\n          attributes: true,\n          attributeFilter: [\n            'class',\n            'style'\n          ]\n        }\n      );\n    }\n\n    \/*\n     * Premi\u00e8re v\u00e9rification apr\u00e8s le layout Elementor.\n     *\/\n    window.requestAnimationFrame(\n      () => {\n        window.requestAnimationFrame(\n          syncPlayWithFocus\n        );\n      }\n    );\n\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5635deac e-con-full dia-step dia-step-1 e-flex e-con e-child\" data-id=\"5635deac\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30a1d352 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"30a1d352\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">02 \u00b7 AI DETECTED INTERESTS<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-559157d1 elementor-widget elementor-widget-heading\" data-id=\"559157d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Uncover the interests of your contacts.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-57513973 elementor-widget elementor-widget-text-editor\" data-id=\"57513973\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>DiA analyzes the content your contacts view to identify what they\u2019re genuinely interested in. Afterward, it converts these insights into more targeted audiences and more pertinent emails.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5ebd9892 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"5ebd9892\" 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<style>\n\/* =========================================================\n   DiA \u2014 02 \u00b7 CENTRES D\u2019INT\u00c9R\u00caT PAR IA\n   ========================================================= *\/\n\n.dia-interests-ai,\n.dia-interests-ai * {\n  box-sizing: border-box;\n}\n\n.dia-interests-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Spacer r\u00e9el en flux normal pour qu\u2019Elementor mesure toujours la hauteur. *\/\n.dia-interests-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-interests-ai__prompt {\n  position: absolute;\n  top: 8.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 17.3%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-interests-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-interests-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-interests-ai.is-typing-prompt .dia-interests-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaInterestsCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 m\u00eame langage visuel que 01\n   ========================================================= *\/\n\n.dia-interests-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-interests-ai.show-loader .dia-interests-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-interests-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaInterestsDot .72s ease-in-out infinite alternate;\n}\n\n.dia-interests-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-interests-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   Plus haute que la carte Contexte, comme dans la vid\u00e9o source.\n   ========================================================= *\/\n\n.dia-interests-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 31.5%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-interests-ai.show-card .dia-interests-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 m\u00eame SVG\/path que la base 01\n   ========================================================= *\/\n\n.dia-interests-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark {\n  opacity: 1;\n}\n\n.dia-interests-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-interests-ai__mark-spark,\n.dia-interests-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark-spark {\n  animation: diaInterestsMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-interests-ai.show-mark .dia-interests-ai__mark-dot {\n  animation: diaInterestsMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   CONTENU DE LA R\u00c9PONSE\n   ========================================================= *\/\n\n.dia-interests-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-interests-ai.show-title .dia-interests-ai__title {\n  animation: diaInterestsTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n.dia-interests-ai__list {\n  position: absolute;\n  left: 13.15%;\n  top: 27.2%;\n  width: 76%;\n  display: grid;\n  gap: 1.18cqw;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n\n.dia-interests-ai__interest {\n  display: flex;\n  align-items: center;\n  gap: 1.25cqw;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 500;\n  line-height: 1.2;\n  letter-spacing: -.012em;\n  opacity: 0;\n  transform: translateY(.6cqw);\n}\n\n.dia-interests-ai__medal {\n  width: 3.0cqw;\n  flex: 0 0 3.0cqw;\n  font-family: \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", sans-serif;\n  font-size: 2.75cqw;\n  line-height: 1;\n  text-align: center;\n}\n\n.dia-interests-ai.show-interest-1 .dia-interests-ai__interest--1,\n.dia-interests-ai.show-interest-2 .dia-interests-ai__interest--2,\n.dia-interests-ai.show-interest-3 .dia-interests-ai__interest--3 {\n  animation: diaInterestsItemIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n.dia-interests-ai__question {\n  position: absolute;\n  left: 13.15%;\n  top: 61.5%;\n  width: 73%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 700;\n  line-height: 1.34;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.5cqw);\n}\n\n.dia-interests-ai.show-question .dia-interests-ai__question {\n  animation: diaInterestsTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   BOUTONS OUI \/ NON\n   ========================================================= *\/\n\n.dia-interests-ai__answers {\n  position: absolute;\n  left: 13.15%;\n  bottom: 6.8%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-interests-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-interests-ai.show-yes .dia-interests-ai__choice--yes {\n  animation: diaInterestsChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-interests-ai.show-no .dia-interests-ai__choice--no {\n  animation: diaInterestsChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-interests-ai.fade-out .dia-interests-ai__card,\n.dia-interests-ai.fade-out .dia-interests-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-interests-ai.fade-out .dia-interests-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaInterestsDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaInterestsCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaInterestsMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaInterestsMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaInterestsTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaInterestsItemIn {\n  0% { opacity: 0; transform: translateX(-.7cqw) translateY(.25cqw); }\n  70% { opacity: 1; transform: translateX(.08cqw) translateY(0); }\n  100% { opacity: 1; transform: translateX(0) translateY(0); }\n}\n\n@keyframes diaInterestsChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* Mobile : garder les m\u00eames proportions\/radius que la base officielle. *\/\n@media (max-width: 767px) {\n  .dia-interests-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-interests-ai__prompt { border-radius: 2.05cqw; }\n  .dia-interests-ai__card { border-radius: 2.35cqw; }\n  .dia-interests-ai__choice { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   M\u00eame syst\u00e8me que 01 \u00b7 CONTEXTE IA V10\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-interests-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-interests-ai *,\n  .dia-interests-ai *::before,\n  .dia-interests-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-interests-ai__card,\n  .dia-interests-ai__mark,\n  .dia-interests-ai__title,\n  .dia-interests-ai__interest,\n  .dia-interests-ai__question,\n  .dia-interests-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-interests-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-ai-module dia-ai-module--interests dia-interests-ai\"\n     data-dia-ai-module\n     data-dia-interests-ai\n     data-dia-step=\"interests\"\n     data-dia-elementor-flow-fix>\n\n  <svg class=\"dia-interests-ai__ratio-spacer\"\n       width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n       preserveAspectRatio=\"xMidYMid meet\"\n       aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n  <div class=\"dia-interests-ai__prompt\">\n    <span class=\"dia-interests-ai__prompt-text\" data-dia-interests-prompt><\/span>\n  <\/div>\n\n  <div class=\"dia-interests-ai__loader\" aria-hidden=\"true\">\n    <span><\/span><span><\/span><span><\/span>\n  <\/div>\n\n  <div class=\"dia-interests-ai__card\">\n\n    <div class=\"dia-interests-ai__mark\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           shape-rendering=\"geometricPrecision\"\n           xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n           role=\"img\" aria-hidden=\"true\">\n        <ellipse class=\"dia-interests-ai__mark-dot\"\n                 cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n        <path class=\"dia-interests-ai__mark-spark\"\n              d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\"\n              fill=\"#C6A9FF\"\/>\n      <\/svg>\n    <\/div>\n\n    <p class=\"dia-interests-ai__title\">The top interests are:<\/p>\n\n    <ul class=\"dia-interests-ai__list\" aria-hidden=\"true\">\n      <li class=\"dia-interests-ai__interest dia-interests-ai__interest--1\">\n        <span class=\"dia-interests-ai__medal\">\ud83e\udd47<\/span>\n        <span>Buying a first home<\/span>\n      <\/li>\n      <li class=\"dia-interests-ai__interest dia-interests-ai__interest--2\">\n        <span class=\"dia-interests-ai__medal\">\ud83e\udd48<\/span>\n        <span>Savings and TFSA<\/span>\n      <\/li>\n      <li class=\"dia-interests-ai__interest dia-interests-ai__interest--3\">\n        <span class=\"dia-interests-ai__medal\">\ud83e\udd49<\/span>\n        <span>Retirement planning<\/span>\n      <\/li>\n    <\/ul>\n\n    <p class=\"dia-interests-ai__question\">Would you like to create 3 segments<br>from these interests?<\/p>\n\n    <div class=\"dia-interests-ai__answers\" aria-hidden=\"true\">\n      <div class=\"dia-interests-ai__choice dia-interests-ai__choice--yes\">YES<\/div>\n      <div class=\"dia-interests-ai__choice dia-interests-ai__choice--no\">NO<\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-interests-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaInterestsReady === '1') return;\n    module.dataset.diaInterestsReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-interests-prompt]');\n    const promptText = 'What are the interests in my database?';\n\n    \/* Elementor mobile \u2014 m\u00eame correction de hauteur que notre base. *\/\n    const flowFixEnabled = module.hasAttribute('data-dia-elementor-flow-fix');\n    const elementorContainer = module.closest('.elementor-widget-container');\n    const elementorWidget = module.closest('.elementor-widget-html');\n\n    const syncElementorFlowHeight = () => {\n      if (!flowFixEnabled || !elementorContainer || !elementorWidget) return;\n\n      const height = Math.ceil(module.getBoundingClientRect().height);\n      if (!height) return;\n\n      const value = height + 'px';\n      elementorWidget.classList.add('dia-elementor-flow-host');\n      elementorContainer.classList.add('dia-elementor-flow-container');\n      elementorWidget.style.setProperty('--dia-flow-height', value);\n      elementorContainer.style.setProperty('--dia-flow-height', value);\n    };\n\n    requestAnimationFrame(() => {\n      syncElementorFlowHeight();\n      requestAnimationFrame(syncElementorFlowHeight);\n    });\n\n    if ('ResizeObserver' in window) {\n      const flowResizeObserver = new ResizeObserver(syncElementorFlowHeight);\n      flowResizeObserver.observe(module);\n    } else {\n      window.addEventListener('resize', syncElementorFlowHeight, { passive: true });\n    }\n\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n    let titleTypingTimer = null;\n\n    const titleEl = module.querySelector('.dia-interests-ai__title');\n    const titleText = 'The top interests are:';\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n\n      if (titleTypingTimer) {\n        window.clearTimeout(titleTypingTimer);\n        titleTypingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typeText = (el, text, speed, id, timerName) => {\n      let i = 0;\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        el.textContent = text.slice(0, i);\n        i += 1;\n\n        if (i <= text.length) {\n          const timer = window.setTimeout(tick, speed);\n          if (timerName === 'prompt') typingTimer = timer;\n          if (timerName === 'title') titleTypingTimer = timer;\n        } else {\n          if (timerName === 'prompt') typingTimer = null;\n          if (timerName === 'title') titleTypingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        'is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-interest-1',\n        'show-interest-2',\n        'show-interest-3',\n        'show-question',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n\n      promptEl.textContent = '';\n      titleEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      module.classList.add('is-typing-prompt');\n      typeText(promptEl, promptText, 31, id, 'prompt');\n      later(() => module.classList.remove('is-typing-prompt'), 1650, id);\n\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n\n      later(() => {\n        module.classList.add('show-title');\n        typeText(titleEl, titleText, 26, id, 'title');\n      }, 3470, id);\n\n      later(() => module.classList.add('show-interest-1'), 4260, id);\n      later(() => module.classList.add('show-interest-2'), 4620, id);\n      later(() => module.classList.add('show-interest-3'), 4980, id);\n      later(() => module.classList.add('show-question'), 5480, id);\n      later(() => module.classList.add('show-yes'), 6100, id);\n      later(() => module.classList.add('show-no'), 6500, id);\n\n      \/* Plus de temps de lecture final, comme notre base 01. *\/\n      later(() => module.classList.add('fade-out'), 9600, id);\n      later(play, 10100, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      titleEl.textContent = titleText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-interest-1',\n        'show-interest-2',\n        'show-interest-3',\n        'show-question',\n        'show-yes',\n        'show-no'\n      );\n    };\n\n    \/* API commune aux 5 modules. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* =======================================================\n       MOBILE \/ MODULE INDIVIDUEL \u2014 PLAY QUAND LE STEP EST D\u00c9BLURR\u00c9\n       =======================================================\n\n       IMPORTANT :\n       ce bloc ne change AUCUN CSS, AUCUNE dimension et AUCUNE apparence.\n       Il remplace seulement l'ancien autoplay \"d\u00e8s que le module est visible\".\n\n       Id\u00e9alement, place ce widget HTML dans le m\u00eame conteneur .dia-step\n       que le texte correspondant.\n       ======================================================= *\/\n\n    const activationStep =\n      module.closest('.dia-step') ||\n      module;\n\n    let focusTicking = false;\n    let focusState = false;\n\n    const readBlurPx = (el) => {\n      const styles =\n        window.getComputedStyle(el);\n\n      \/*\n       * Ton contr\u00f4leur principal pilote d\u00e9j\u00e0 --step-blur.\n       * C'est la source la plus fid\u00e8le \u00e0 ce qui est r\u00e9ellement affich\u00e9.\n       *\/\n      const cssVar = styles\n        .getPropertyValue('--step-blur')\n        .trim();\n\n      if (cssVar) {\n        const value =\n          parseFloat(cssVar);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      \/*\n       * Fallback si le blur vient directement de filter: blur(...).\n       *\/\n      const filter =\n        styles.filter || '';\n\n      const match =\n        filter.match(\n          \/blur\\(([-\\d.]+)px\\)\/i\n        );\n\n      if (match) {\n        const value =\n          parseFloat(match[1]);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      return null;\n    };\n\n    const isSectionFocused = () => {\n\n      \/*\n       * 1) Si un blur existe, on suit EXACTEMENT son \u00e9tat visuel.\n       *    Le module ne part que lorsque la section est pratiquement nette.\n       *\/\n      if (activationStep !== module) {\n        const blurPx =\n          readBlurPx(\n            activationStep\n          );\n\n        if (blurPx !== null) {\n          const styles =\n            window.getComputedStyle(\n              activationStep\n            );\n\n          const opacity =\n            parseFloat(\n              styles.opacity || '1'\n            );\n\n          return (\n            blurPx <= 0.75 &&\n            (\n              !Number.isFinite(opacity) ||\n              opacity >= 0.90\n            )\n          );\n        }\n      }\n\n      \/*\n       * 2) Si aucun blur mesurable n'existe mais que ton contr\u00f4leur\n       *    ajoute .active, on utilise cette classe.\n       *\/\n      if (\n        activationStep !== module &&\n        activationStep.classList.contains(\n          'active'\n        )\n      ) {\n        return true;\n      }\n\n      \/*\n       * 3) Fallback autonome :\n       *    si ce module est utilis\u00e9 sans le contr\u00f4leur de blur,\n       *    il joue seulement lorsque sa section est dans la zone centrale.\n       *\n       *    Cette logique ne modifie aucun style.\n       *\/\n      const rect =\n        activationStep\n          .getBoundingClientRect();\n\n      if (\n        rect.bottom <= 0 ||\n        rect.top >=\n          window.innerHeight\n      ) {\n        return false;\n      }\n\n      const center =\n        rect.top +\n        (\n          rect.height \/\n          2\n        );\n\n      return (\n        center >=\n          window.innerHeight * 0.34 &&\n        center <=\n          window.innerHeight * 0.66\n      );\n    };\n\n    const syncPlayWithFocus = () => {\n      const shouldPlay =\n        isSectionFocused();\n\n      if (\n        shouldPlay ===\n        focusState\n      ) {\n        return;\n      }\n\n      focusState =\n        shouldPlay;\n\n      if (shouldPlay) {\n        module.diaPlay();\n      } else {\n        \/*\n         * En quittant le focus, on remet le module au d\u00e9but.\n         * Il rejouera proprement lors du prochain d\u00e9blur.\n         *\/\n        module.diaReset();\n      }\n    };\n\n    const requestFocusSync = () => {\n      if (focusTicking) {\n        return;\n      }\n\n      focusTicking = true;\n\n      window.requestAnimationFrame(\n        () => {\n          syncPlayWithFocus();\n          focusTicking = false;\n        }\n      );\n    };\n\n    \/*\n     * Suit le scroll et le resize.\n     *\/\n    window.addEventListener(\n      'scroll',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    window.addEventListener(\n      'resize',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    \/*\n     * R\u00e9agit imm\u00e9diatement lorsque le contr\u00f4leur change\n     * le style inline (--step-blur \/ opacity) ou la classe active.\n     *\/\n    if (\n      activationStep !== module &&\n      'MutationObserver' in window\n    ) {\n      const focusObserver =\n        new MutationObserver(\n          requestFocusSync\n        );\n\n      focusObserver.observe(\n        activationStep,\n        {\n          attributes: true,\n          attributeFilter: [\n            'class',\n            'style'\n          ]\n        }\n      );\n    }\n\n    \/*\n     * Premi\u00e8re v\u00e9rification apr\u00e8s le layout Elementor.\n     *\/\n    window.requestAnimationFrame(\n      () => {\n        window.requestAnimationFrame(\n          syncPlayWithFocus\n        );\n      }\n    );\n\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-47e196 e-con-full dia-step dia-step-1 e-flex e-con e-child\" data-id=\"47e196\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d2e8247 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"1d2e8247\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">03 \u00b7 AI SEGMENTATION<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-571894d8 elementor-widget elementor-widget-heading\" data-id=\"571894d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Create your segments in moments.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-310cb999 elementor-widget elementor-widget-text-editor\" data-id=\"310cb999\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Clearly articulate the audience you aim to engage. The DiA assistant converts your request into segmentation criteria and presents the outcome in natural language to assist you in validating your targeting.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44eadc88 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"44eadc88\" 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<style>\n\/* =========================================================\n   DiA \u2014 03 \u00b7 SEGMENTATION PAR IA\n   ========================================================= *\/\n\n.dia-seg-ai,\n.dia-seg-ai * {\n  box-sizing: border-box;\n}\n\n.dia-seg-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Vraie hauteur mesurable par Elementor. *\/\n.dia-seg-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 haut \/ droite\n   ========================================================= *\/\n\n.dia-seg-ai__prompt {\n  position: absolute;\n  top: 8.9%;\n  right: 5.1%;\n  width: 50.7%;\n  min-height: 20.6%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-seg-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-seg-ai__prompt-text::after,\n.dia-seg-ai__title-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-seg-ai.is-typing-prompt .dia-seg-ai__prompt-text::after,\n.dia-seg-ai.is-typing-title .dia-seg-ai__title-text::after {\n  opacity: .72;\n  animation: diaSegCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 syst\u00e8me commun aux modules 01 \/ 02 \/ 03\n   M\u00eame ancrage horizontal, m\u00eames dimensions, m\u00eame rythme.\n   Position du loader align\u00e9e sur le module 02 pour garder le m\u00eame rythme visuel.\n   ========================================================= *\/\n\n.dia-seg-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-seg-ai.show-loader .dia-seg-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaSegDot .72s ease-in-out infinite alternate;\n}\n\n.dia-seg-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-seg-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-seg-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 38.3%;\n  width: 72.15%;\n  height: 55.1%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-seg-ai.show-card .dia-seg-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 meme SVG inline que la base\n   ========================================================= *\/\n\n.dia-seg-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 6.65%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark {\n  opacity: 1;\n}\n\n.dia-seg-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-seg-ai__mark-spark,\n.dia-seg-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark-spark {\n  animation: diaSegMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-seg-ai.show-mark .dia-seg-ai__mark-dot {\n  animation: diaSegMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-seg-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 11.0%;\n  width: 76%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n}\n\n.dia-seg-ai__title-text {\n  display: inline;\n}\n\n\/* =========================================================\n   RESULTAT DU SEGMENT\n   ========================================================= *\/\n\n.dia-seg-ai__result {\n  position: absolute;\n  left: 12.85%;\n  top: 25.6%;\n  width: 79.2%;\n  height: 25.9%;\n  overflow: hidden;\n  border-radius: var(--dia-radius);\n  background: linear-gradient(112deg, #5A18CA 0%, #641CDA 100%);\n  opacity: 0;\n  transform: translateY(.72cqw);\n  transition:\n    opacity .38s ease,\n    transform .48s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-seg-ai__result::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  background: var(--dia-lime);\n  border-top-left-radius: var(--dia-radius);\n  border-bottom-left-radius: var(--dia-radius);\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__result {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__result::before {\n  transform: scaleY(1);\n}\n\n.dia-seg-ai__result-copy {\n  position: absolute;\n  left: 7.6%;\n  top: 23%;\n  right: 37%;\n  color: #fff;\n}\n\n.dia-seg-ai__count {\n  margin: 0;\n  color: var(--dia-lime);\n  font-size: 3.18cqw;\n  font-weight: 800;\n  white-space: nowrap;\n  line-height: 1;\n  letter-spacing: -.025em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .16s, transform .36s cubic-bezier(.2,.82,.2,1) .16s;\n}\n\n.dia-seg-ai__count-sub {\n  margin: .72cqw 0 0;\n  color: #fff;\n  font-size: 2.48cqw;\n  font-weight: 650;\n  line-height: 1.1;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.34cqw);\n  transition: opacity .28s ease .23s, transform .36s cubic-bezier(.2,.82,.2,1) .23s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__count,\n.dia-seg-ai.show-result .dia-seg-ai__count-sub {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__summary {\n  position: absolute;\n  right: 4.8%;\n  top: 50%;\n  transform: translateY(-50%) scale(.92);\n  min-width: 21.4cqw;\n  min-height: 6.05cqw;\n  padding: .9cqw 1.65cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: .85cqw;\n  border-radius: 999px;\n  background: var(--dia-lavender);\n  color: var(--dia-purple);\n  font-size: 2.02cqw;\n  font-weight: 700;\n  white-space: nowrap;\n  line-height: 1;\n  opacity: 0;\n  transition: opacity .28s ease .30s, transform .40s cubic-bezier(.2,.82,.2,1) .30s;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary {\n  opacity: 1;\n  transform: translateY(-50%) scale(1);\n}\n\n.dia-seg-ai__summary-mark {\n  width: 2.15cqw;\n  height: 2.86cqw;\n  flex: 0 0 auto;\n}\n\n.dia-seg-ai__summary-mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n}\n\n\/* Le petit logo du badge reprend le m\u00eame langage d\u2019entr\u00e9e que le logo principal. *\/\n.dia-seg-ai__summary-spark,\n.dia-seg-ai__summary-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary-spark {\n  animation: diaSegMarkSparkIn .46s cubic-bezier(.16,.9,.24,1.18) .34s both;\n}\n\n.dia-seg-ai.show-result .dia-seg-ai__summary-dot {\n  animation: diaSegMarkDotIn .28s cubic-bezier(.2,.9,.3,1.35) .51s both;\n}\n\n\/* =========================================================\n   QUESTION + REPONSES\n   ========================================================= *\/\n\n.dia-seg-ai__question {\n  position: absolute;\n  left: 12.85%;\n  top: 57.8%;\n  width: 78%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 650;\n  line-height: 1.23;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n  transition: opacity .30s ease, transform .42s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-seg-ai.show-question .dia-seg-ai__question {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-seg-ai__answers {\n  position: absolute;\n  left: 12.85%;\n  bottom: 6.7%;\n  display: flex;\n  align-items: center;\n  gap: 3.9cqw;\n}\n\n.dia-seg-ai__choice {\n  min-width: 11.0cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.45cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: #050505;\n  font-size: 2.48cqw;\n  font-weight: 700;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-seg-ai.show-yes .dia-seg-ai__choice--yes {\n  animation: diaSegChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n.dia-seg-ai.show-no .dia-seg-ai__choice--no {\n  animation: diaSegChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-seg-ai.fade-out .dia-seg-ai__card,\n.dia-seg-ai.fade-out .dia-seg-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-seg-ai.fade-out .dia-seg-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaSegDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaSegCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaSegMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaSegMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaSegChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@media (max-width: 767px) {\n  .dia-seg-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-seg-ai__prompt { border-radius: 2.05cqw; }\n  .dia-seg-ai__card { border-radius: 2.35cqw; }\n  .dia-seg-ai__result { border-radius: var(--dia-radius); }\n  .dia-seg-ai__choice { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   Meme logique que 01 \u00b7 CONTEXTE IA V10\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-seg-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-seg-ai *,\n  .dia-seg-ai *::before,\n  .dia-seg-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-seg-ai__card,\n  .dia-seg-ai__mark,\n  .dia-seg-ai__result,\n  .dia-seg-ai__question,\n  .dia-seg-ai__choice {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-seg-ai__summary {\n    opacity: 1 !important;\n    transform: translateY(-50%) scale(1) !important;\n  }\n\n  .dia-seg-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-ai-module dia-ai-module--segmentation dia-seg-ai\" data-dia-ai-module data-dia-seg-ai data-dia-step=\"segmentation\" data-dia-elementor-flow-fix>\n\n  <svg class=\"dia-seg-ai__ratio-spacer\" width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n  <div class=\"dia-seg-ai__prompt\">\n    <span class=\"dia-seg-ai__prompt-text\" data-dia-seg-prompt><\/span>\n  <\/div>\n\n  <div class=\"dia-seg-ai__loader\" aria-hidden=\"true\">\n    <span><\/span><span><\/span><span><\/span>\n  <\/div>\n\n  <div class=\"dia-seg-ai__card\">\n\n    <div class=\"dia-seg-ai__mark\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-hidden=\"true\">\n        <ellipse class=\"dia-seg-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n        <path class=\"dia-seg-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n      <\/svg>\n    <\/div>\n\n    <p class=\"dia-seg-ai__title\">\n      <span class=\"dia-seg-ai__title-text\" data-dia-seg-title><\/span>\n    <\/p>\n\n    <div class=\"dia-seg-ai__result\">\n      <div class=\"dia-seg-ai__result-copy\">\n        <p class=\"dia-seg-ai__count\">2,438 CONTACTS<\/p>\n        <p class=\"dia-seg-ai__count-sub\">ready to be targeted.<\/p>\n      <\/div>\n\n      <div class=\"dia-seg-ai__summary\">\n        <span class=\"dia-seg-ai__summary-mark\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1080 1440\" preserveAspectRatio=\"xMidYMid meet\" shape-rendering=\"geometricPrecision\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <ellipse class=\"dia-seg-ai__summary-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#4B17A1\"\/>\n            <path class=\"dia-seg-ai__summary-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#4B17A1\"\/>\n          <\/svg>\n        <\/span>\n        <span>AI summary<\/span>\n      <\/div>\n    <\/div>\n\n    <p class=\"dia-seg-ai__question\">Would you like to create a campaign<br>with this segment?<\/p>\n\n    <div class=\"dia-seg-ai__answers\" aria-hidden=\"true\">\n      <div class=\"dia-seg-ai__choice dia-seg-ai__choice--yes\">YES<\/div>\n      <div class=\"dia-seg-ai__choice dia-seg-ai__choice--no\">NO<\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-seg-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaSegReady === '1') return;\n    module.dataset.diaSegReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-seg-prompt]');\n    const titleEl = module.querySelector('[data-dia-seg-title]');\n\n    const promptText = 'Target Montrealers who clicked on an offer but didn\u2019t book.';\n    const titleText = 'Okay, segment created:';\n\n    \/* =======================================================\n       ELEMENTOR MOBILE \u2014 SYNCHRONISATION DE LA HAUTEUR\n       ======================================================= *\/\n    const flowFixEnabled = module.hasAttribute('data-dia-elementor-flow-fix');\n    const elementorContainer = module.closest('.elementor-widget-container');\n    const elementorWidget = module.closest('.elementor-widget-html');\n\n    const syncElementorFlowHeight = () => {\n      if (!flowFixEnabled || !elementorContainer || !elementorWidget) return;\n\n      const height = Math.ceil(module.getBoundingClientRect().height);\n      if (!height) return;\n\n      const value = height + 'px';\n\n      elementorWidget.classList.add('dia-elementor-flow-host');\n      elementorContainer.classList.add('dia-elementor-flow-container');\n\n      elementorWidget.style.setProperty('--dia-flow-height', value);\n      elementorContainer.style.setProperty('--dia-flow-height', value);\n    };\n\n    requestAnimationFrame(() => {\n      syncElementorFlowHeight();\n      requestAnimationFrame(syncElementorFlowHeight);\n    });\n\n    if ('ResizeObserver' in window) {\n      const flowResizeObserver = new ResizeObserver(syncElementorFlowHeight);\n      flowResizeObserver.observe(module);\n    } else {\n      window.addEventListener('resize', syncElementorFlowHeight, { passive: true });\n    }\n\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typeText = (el, text, className, speed, id, onDone) => {\n      let i = 0;\n      module.classList.add(className);\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        el.textContent = text.slice(0, i);\n        i += 1;\n\n        if (i <= text.length) {\n          typingTimer = window.setTimeout(tick, speed);\n        } else {\n          module.classList.remove(className);\n          typingTimer = null;\n          if (onDone) onDone();\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        'is-typing-prompt',\n        'is-typing-title',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-result',\n        'show-question',\n        'show-yes',\n        'show-no',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n      titleEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typeText(promptEl, promptText, 'is-typing-prompt', 31, id);\n\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n      \/* Le logo garde exactement le m\u00eame temps de respiration que notre base V10. *\/\n      later(() => typeText(titleEl, titleText, 'is-typing-title', 34, id), 3470, id);\n\n      later(() => module.classList.add('show-result'), 4480, id);\n      later(() => module.classList.add('show-question'), 5250, id);\n      later(() => module.classList.add('show-yes'), 5850, id);\n      later(() => module.classList.add('show-no'), 6200, id);\n\n      \/* Plus de temps de lecture, comme la base finale du 01. *\/\n      later(() => module.classList.add('fade-out'), 9300, id);\n      later(play, 9800, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      titleEl.textContent = titleText;\n      module.classList.add('show-card', 'show-mark', 'show-result', 'show-question', 'show-yes', 'show-no');\n    };\n\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* =======================================================\n       MOBILE \/ MODULE INDIVIDUEL \u2014 PLAY QUAND LE STEP EST D\u00c9BLURR\u00c9\n       =======================================================\n\n       IMPORTANT :\n       ce bloc ne change AUCUN CSS, AUCUNE dimension et AUCUNE apparence.\n       Il remplace seulement l'ancien autoplay \"d\u00e8s que le module est visible\".\n\n       Id\u00e9alement, place ce widget HTML dans le m\u00eame conteneur .dia-step\n       que le texte correspondant.\n       ======================================================= *\/\n\n    const activationStep =\n      module.closest('.dia-step') ||\n      module;\n\n    let focusTicking = false;\n    let focusState = false;\n\n    const readBlurPx = (el) => {\n      const styles =\n        window.getComputedStyle(el);\n\n      \/*\n       * Ton contr\u00f4leur principal pilote d\u00e9j\u00e0 --step-blur.\n       * C'est la source la plus fid\u00e8le \u00e0 ce qui est r\u00e9ellement affich\u00e9.\n       *\/\n      const cssVar = styles\n        .getPropertyValue('--step-blur')\n        .trim();\n\n      if (cssVar) {\n        const value =\n          parseFloat(cssVar);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      \/*\n       * Fallback si le blur vient directement de filter: blur(...).\n       *\/\n      const filter =\n        styles.filter || '';\n\n      const match =\n        filter.match(\n          \/blur\\(([-\\d.]+)px\\)\/i\n        );\n\n      if (match) {\n        const value =\n          parseFloat(match[1]);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      return null;\n    };\n\n    const isSectionFocused = () => {\n\n      \/*\n       * 1) Si un blur existe, on suit EXACTEMENT son \u00e9tat visuel.\n       *    Le module ne part que lorsque la section est pratiquement nette.\n       *\/\n      if (activationStep !== module) {\n        const blurPx =\n          readBlurPx(\n            activationStep\n          );\n\n        if (blurPx !== null) {\n          const styles =\n            window.getComputedStyle(\n              activationStep\n            );\n\n          const opacity =\n            parseFloat(\n              styles.opacity || '1'\n            );\n\n          return (\n            blurPx <= 0.75 &&\n            (\n              !Number.isFinite(opacity) ||\n              opacity >= 0.90\n            )\n          );\n        }\n      }\n\n      \/*\n       * 2) Si aucun blur mesurable n'existe mais que ton contr\u00f4leur\n       *    ajoute .active, on utilise cette classe.\n       *\/\n      if (\n        activationStep !== module &&\n        activationStep.classList.contains(\n          'active'\n        )\n      ) {\n        return true;\n      }\n\n      \/*\n       * 3) Fallback autonome :\n       *    si ce module est utilis\u00e9 sans le contr\u00f4leur de blur,\n       *    il joue seulement lorsque sa section est dans la zone centrale.\n       *\n       *    Cette logique ne modifie aucun style.\n       *\/\n      const rect =\n        activationStep\n          .getBoundingClientRect();\n\n      if (\n        rect.bottom <= 0 ||\n        rect.top >=\n          window.innerHeight\n      ) {\n        return false;\n      }\n\n      const center =\n        rect.top +\n        (\n          rect.height \/\n          2\n        );\n\n      return (\n        center >=\n          window.innerHeight * 0.34 &&\n        center <=\n          window.innerHeight * 0.66\n      );\n    };\n\n    const syncPlayWithFocus = () => {\n      const shouldPlay =\n        isSectionFocused();\n\n      if (\n        shouldPlay ===\n        focusState\n      ) {\n        return;\n      }\n\n      focusState =\n        shouldPlay;\n\n      if (shouldPlay) {\n        module.diaPlay();\n      } else {\n        \/*\n         * En quittant le focus, on remet le module au d\u00e9but.\n         * Il rejouera proprement lors du prochain d\u00e9blur.\n         *\/\n        module.diaReset();\n      }\n    };\n\n    const requestFocusSync = () => {\n      if (focusTicking) {\n        return;\n      }\n\n      focusTicking = true;\n\n      window.requestAnimationFrame(\n        () => {\n          syncPlayWithFocus();\n          focusTicking = false;\n        }\n      );\n    };\n\n    \/*\n     * Suit le scroll et le resize.\n     *\/\n    window.addEventListener(\n      'scroll',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    window.addEventListener(\n      'resize',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    \/*\n     * R\u00e9agit imm\u00e9diatement lorsque le contr\u00f4leur change\n     * le style inline (--step-blur \/ opacity) ou la classe active.\n     *\/\n    if (\n      activationStep !== module &&\n      'MutationObserver' in window\n    ) {\n      const focusObserver =\n        new MutationObserver(\n          requestFocusSync\n        );\n\n      focusObserver.observe(\n        activationStep,\n        {\n          attributes: true,\n          attributeFilter: [\n            'class',\n            'style'\n          ]\n        }\n      );\n    }\n\n    \/*\n     * Premi\u00e8re v\u00e9rification apr\u00e8s le layout Elementor.\n     *\/\n    window.requestAnimationFrame(\n      () => {\n        window.requestAnimationFrame(\n          syncPlayWithFocus\n        );\n      }\n    );\n\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-767d8bfd e-con-full dia-step dia-step-1 e-flex e-con e-child\" data-id=\"767d8bfd\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1ba5572f elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"1ba5572f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">04 \u00b7 AI CAMPAIGN GENERATION<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fe1cb10 elementor-widget elementor-widget-heading\" data-id=\"5fe1cb10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Bring your campaigns to life, faster.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e7d596 elementor-widget elementor-widget-text-editor\" data-id=\"2e7d596\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Begin with a marketing objective rather than an empty scenario. The DiA assistant recommends an appropriate audience and campaign structure, which you can subsequently validate and modify prior to execution.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cd59486 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"5cd59486\" 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<style>\n\/* =========================================================\n   DiA \u2014 04 \u00b7 G\u00c9N\u00c9RATION DE CAMPAGNES PAR IA\n   ========================================================= *\/\n\n.dia-campaign-ai,\n.dia-campaign-ai * {\n  box-sizing: border-box;\n}\n\n.dia-campaign-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n\/* Vraie hauteur mesurable par Elementor. *\/\n.dia-campaign-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 m\u00eame langage que 01 \/ 02 \/ 03\n   ========================================================= *\/\n\n.dia-campaign-ai__prompt {\n  position: absolute;\n  top: 5.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 21.0%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-campaign-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-campaign-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-campaign-ai.is-typing-prompt .dia-campaign-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaCampaignCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 strictement uniforme avec les modules 02 \/ 03\n   ========================================================= *\/\n\n.dia-campaign-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-campaign-ai.show-loader .dia-campaign-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-campaign-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaCampaignDot .72s ease-in-out infinite alternate;\n}\n\n.dia-campaign-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-campaign-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-campaign-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 34.3%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-campaign-ai.show-card .dia-campaign-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 EXACTEMENT la m\u00eame structure \/ animation que la base\n   ========================================================= *\/\n\n.dia-campaign-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark {\n  opacity: 1;\n}\n\n.dia-campaign-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-campaign-ai__mark-spark,\n.dia-campaign-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark-spark {\n  animation: diaCampaignMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-campaign-ai.show-mark .dia-campaign-ai__mark-dot {\n  animation: diaCampaignMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-campaign-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  width: 76%;\n  margin: 0;\n  color: #fff;\n  font-size: 3.16cqw;\n  font-weight: 700;\n  line-height: 1.15;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-campaign-ai.show-title .dia-campaign-ai__title {\n  animation: diaCampaignTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   \u00c9TAPES DE CAMPAGNE\n   ========================================================= *\/\n\n.dia-campaign-ai__flow {\n  position: absolute;\n  left: 13.15%;\n  top: 25.0%;\n  width: 68.8%;\n}\n\n.dia-campaign-ai__step {\n  position: relative;\n  width: 100%;\n  min-height: 10.1cqw;\n  padding: 1.55cqw 2.15cqw 1.55cqw 8.7cqw;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  border-radius: var(--dia-radius);\n  background: var(--dia-pale);\n  color: var(--dia-purple);\n  opacity: 0;\n  transform: translateY(.8cqw) scale(.985);\n  transition:\n    opacity .34s ease,\n    transform .46s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-campaign-ai__step--sms {\n  margin-top: 5.15cqw;\n}\n\n.dia-campaign-ai.show-email .dia-campaign-ai__step--email,\n.dia-campaign-ai.show-sms .dia-campaign-ai__step--sms {\n  opacity: 1;\n  transform: translateY(0) scale(1);\n}\n\n.dia-campaign-ai__step-icon {\n  position: absolute;\n  left: 3.0cqw;\n  top: 50%;\n  width: 4.2cqw;\n  height: 4.2cqw;\n  transform: translateY(-50%);\n  color: var(--dia-purple);\n}\n\n.dia-campaign-ai__step-icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n\n.dia-campaign-ai__step-title {\n  margin: 0;\n  color: var(--dia-purple);\n  font-size: 3.00cqw;\n  font-weight: 700;\n  line-height: 1.04;\n  letter-spacing: -.018em;\n}\n\n.dia-campaign-ai__step-subtitle {\n  margin: .62cqw 0 0;\n  color: var(--dia-purple);\n  font-size: 2.36cqw;\n  font-weight: 500;\n  line-height: 1.15;\n  letter-spacing: -.012em;\n}\n\n\/* Liaison verte pointill\u00e9e entre Courriel et SMS. *\/\n.dia-campaign-ai__connector {\n  position: absolute;\n  left: 50%;\n  top: calc(10.1cqw + .25cqw);\n  width: .34cqw;\n  height: 4.95cqw;\n  transform: translateX(-50%) scaleY(0);\n  transform-origin: top center;\n  opacity: 0;\n  background: repeating-linear-gradient(\n    to bottom,\n    var(--dia-lime) 0 .78cqw,\n    transparent .78cqw 1.28cqw\n  );\n  transition:\n    opacity .18s ease,\n    transform .34s cubic-bezier(.2,.82,.2,1);\n  z-index: 0;\n}\n\n.dia-campaign-ai.show-connector .dia-campaign-ai__connector {\n  opacity: 1;\n  transform: translateX(-50%) scaleY(1);\n}\n\n\/* =========================================================\n   CTA\n   ========================================================= *\/\n\n.dia-campaign-ai__cta {\n  position: absolute;\n  left: 13.15%;\n  bottom: 5.9%;\n  min-width: 24.3cqw;\n  min-height: 6.85cqw;\n  padding: 1.55cqw 2.55cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: var(--dia-lime);\n  color: var(--dia-dark);\n  font-size: 2.30cqw;\n  font-weight: 800;\n  line-height: 1;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-campaign-ai.show-cta .dia-campaign-ai__cta {\n  animation: diaCampaignChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-campaign-ai.fade-out .dia-campaign-ai__card,\n.dia-campaign-ai.fade-out .dia-campaign-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-campaign-ai.fade-out .dia-campaign-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaCampaignDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaCampaignCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaCampaignMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaCampaignMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaCampaignTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaCampaignChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@media (max-width: 767px) {\n  .dia-campaign-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-campaign-ai__prompt { border-radius: 2.05cqw; }\n  .dia-campaign-ai__card { border-radius: 2.35cqw; }\n  .dia-campaign-ai__step { border-radius: var(--dia-radius); }\n  .dia-campaign-ai__cta { border-radius: 2.05cqw; }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   M\u00eame syst\u00e8me que 01 \/ 02 \/ 03\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-campaign-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-campaign-ai *,\n  .dia-campaign-ai *::before,\n  .dia-campaign-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-campaign-ai__card,\n  .dia-campaign-ai__mark,\n  .dia-campaign-ai__title,\n  .dia-campaign-ai__step,\n  .dia-campaign-ai__connector,\n  .dia-campaign-ai__cta {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-campaign-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-ai-module dia-ai-module--campaign dia-campaign-ai\"\n     data-dia-ai-module\n     data-dia-campaign-ai\n     data-dia-step=\"campaign\"\n     data-dia-elementor-flow-fix>\n\n  <svg class=\"dia-campaign-ai__ratio-spacer\"\n       width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n       preserveAspectRatio=\"xMidYMid meet\"\n       aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n  <div class=\"dia-campaign-ai__prompt\">\n    <span class=\"dia-campaign-ai__prompt-text\" data-dia-campaign-prompt><\/span>\n  <\/div>\n\n  <div class=\"dia-campaign-ai__loader\" aria-hidden=\"true\">\n    <span><\/span><span><\/span><span><\/span>\n  <\/div>\n\n  <div class=\"dia-campaign-ai__card\">\n\n    <!-- Logo IA : ellipse + path EXACTS du SVG de la base -->\n    <div class=\"dia-campaign-ai__mark\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           shape-rendering=\"geometricPrecision\"\n           xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n           role=\"img\" aria-hidden=\"true\">\n        <ellipse class=\"dia-campaign-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n        <path class=\"dia-campaign-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n      <\/svg>\n    <\/div>\n\n    <p class=\"dia-campaign-ai__title\">Suggested campaign:<\/p>\n\n    <div class=\"dia-campaign-ai__flow\" aria-hidden=\"true\">\n      <div class=\"dia-campaign-ai__step dia-campaign-ai__step--email\">\n        <span class=\"dia-campaign-ai__step-icon\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <rect x=\"7\" y=\"13\" width=\"50\" height=\"38\" rx=\"3\" stroke=\"currentColor\" stroke-width=\"3.2\"\/>\n            <path d=\"M9.5 17L32 36L54.5 17\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n            <path d=\"M9 48L25.5 31.5M55 48L38.5 31.5\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\"\/>\n          <\/svg>\n        <\/span>\n        <p class=\"dia-campaign-ai__step-title\">Email<\/p>\n        <p class=\"dia-campaign-ai__step-subtitle\">2h after an abandoned cart<\/p>\n      <\/div>\n\n      <div class=\"dia-campaign-ai__connector\" aria-hidden=\"true\"><\/div>\n\n      <div class=\"dia-campaign-ai__step dia-campaign-ai__step--sms\">\n        <span class=\"dia-campaign-ai__step-icon\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <path d=\"M10 12H54C56.2 12 58 13.8 58 16V43C58 45.2 56.2 47 54 47H30L20 55V47H10C7.8 47 6 45.2 6 43V16C6 13.8 7.8 12 10 12Z\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linejoin=\"round\"\/>\n            <circle cx=\"22\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n            <circle cx=\"32\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n            <circle cx=\"42\" cy=\"30\" r=\"2.8\" fill=\"currentColor\"\/>\n          <\/svg>\n        <\/span>\n        <p class=\"dia-campaign-ai__step-title\">SMS<\/p>\n        <p class=\"dia-campaign-ai__step-subtitle\">24h after the email, no purchase<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"dia-campaign-ai__cta\">VIEW CAMPAIGN<\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-campaign-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaCampaignReady === '1') return;\n    module.dataset.diaCampaignReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-campaign-prompt]');\n    const promptText = 'Create a campaign to recover abandoned carts.';\n\n    \/* =======================================================\n       ELEMENTOR MOBILE \u2014 SYNCHRONISATION DE LA HAUTEUR\n       M\u00eame logique que 01 \/ 02 \/ 03.\n       ======================================================= *\/\n    const flowFixEnabled = module.hasAttribute('data-dia-elementor-flow-fix');\n    const elementorContainer = module.closest('.elementor-widget-container');\n    const elementorWidget = module.closest('.elementor-widget-html');\n\n    const syncElementorFlowHeight = () => {\n      if (!flowFixEnabled || !elementorContainer || !elementorWidget) return;\n\n      const height = Math.ceil(module.getBoundingClientRect().height);\n      if (!height) return;\n\n      const value = height + 'px';\n\n      elementorWidget.classList.add('dia-elementor-flow-host');\n      elementorContainer.classList.add('dia-elementor-flow-container');\n\n      elementorWidget.style.setProperty('--dia-flow-height', value);\n      elementorContainer.style.setProperty('--dia-flow-height', value);\n    };\n\n    requestAnimationFrame(() => {\n      syncElementorFlowHeight();\n      requestAnimationFrame(syncElementorFlowHeight);\n    });\n\n    if ('ResizeObserver' in window) {\n      const flowResizeObserver = new ResizeObserver(syncElementorFlowHeight);\n      flowResizeObserver.observe(module);\n    } else {\n      window.addEventListener('resize', syncElementorFlowHeight, { passive: true });\n    }\n\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id) => {\n      let i = 0;\n      module.classList.add('is-typing-prompt');\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        'is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-email',\n        'show-connector',\n        'show-sms',\n        'show-cta',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id);\n\n      \/* Loader strictement align\u00e9 avec 02 \/ 03. *\/\n      later(() => module.classList.add('show-loader'), 2250, id);\n      later(() => module.classList.remove('show-loader'), 3230, id);\n\n      \/* Entr\u00e9e de la carte et du logo = m\u00eame rythme que 02 \/ 03. *\/\n      later(() => module.classList.add('show-card'), 3250, id);\n      later(() => module.classList.add('show-mark'), 3340, id);\n      later(() => module.classList.add('show-title'), 3470, id);\n\n      \/* Construction progressive de la campagne. *\/\n      later(() => module.classList.add('show-email'), 3920, id);\n      later(() => module.classList.add('show-connector'), 4250, id);\n      later(() => module.classList.add('show-sms'), 4360, id);\n      later(() => module.classList.add('show-cta'), 5250, id);\n\n      \/* Temps de lecture final coh\u00e9rent avec la base. *\/\n      later(() => module.classList.add('fade-out'), 8600, id);\n      later(play, 9100, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-email',\n        'show-connector',\n        'show-sms',\n        'show-cta'\n      );\n    };\n\n    \/* API commune aux 5 modules. *\/\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* =======================================================\n       MOBILE \/ MODULE INDIVIDUEL \u2014 PLAY QUAND LE STEP EST D\u00c9BLURR\u00c9\n       =======================================================\n\n       IMPORTANT :\n       ce bloc ne change AUCUN CSS, AUCUNE dimension et AUCUNE apparence.\n       Il remplace seulement l'ancien autoplay \"d\u00e8s que le module est visible\".\n\n       Id\u00e9alement, place ce widget HTML dans le m\u00eame conteneur .dia-step\n       que le texte correspondant.\n       ======================================================= *\/\n\n    const activationStep =\n      module.closest('.dia-step') ||\n      module;\n\n    let focusTicking = false;\n    let focusState = false;\n\n    const readBlurPx = (el) => {\n      const styles =\n        window.getComputedStyle(el);\n\n      \/*\n       * Ton contr\u00f4leur principal pilote d\u00e9j\u00e0 --step-blur.\n       * C'est la source la plus fid\u00e8le \u00e0 ce qui est r\u00e9ellement affich\u00e9.\n       *\/\n      const cssVar = styles\n        .getPropertyValue('--step-blur')\n        .trim();\n\n      if (cssVar) {\n        const value =\n          parseFloat(cssVar);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      \/*\n       * Fallback si le blur vient directement de filter: blur(...).\n       *\/\n      const filter =\n        styles.filter || '';\n\n      const match =\n        filter.match(\n          \/blur\\(([-\\d.]+)px\\)\/i\n        );\n\n      if (match) {\n        const value =\n          parseFloat(match[1]);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      return null;\n    };\n\n    const isSectionFocused = () => {\n\n      \/*\n       * 1) Si un blur existe, on suit EXACTEMENT son \u00e9tat visuel.\n       *    Le module ne part que lorsque la section est pratiquement nette.\n       *\/\n      if (activationStep !== module) {\n        const blurPx =\n          readBlurPx(\n            activationStep\n          );\n\n        if (blurPx !== null) {\n          const styles =\n            window.getComputedStyle(\n              activationStep\n            );\n\n          const opacity =\n            parseFloat(\n              styles.opacity || '1'\n            );\n\n          return (\n            blurPx <= 0.75 &&\n            (\n              !Number.isFinite(opacity) ||\n              opacity >= 0.90\n            )\n          );\n        }\n      }\n\n      \/*\n       * 2) Si aucun blur mesurable n'existe mais que ton contr\u00f4leur\n       *    ajoute .active, on utilise cette classe.\n       *\/\n      if (\n        activationStep !== module &&\n        activationStep.classList.contains(\n          'active'\n        )\n      ) {\n        return true;\n      }\n\n      \/*\n       * 3) Fallback autonome :\n       *    si ce module est utilis\u00e9 sans le contr\u00f4leur de blur,\n       *    il joue seulement lorsque sa section est dans la zone centrale.\n       *\n       *    Cette logique ne modifie aucun style.\n       *\/\n      const rect =\n        activationStep\n          .getBoundingClientRect();\n\n      if (\n        rect.bottom <= 0 ||\n        rect.top >=\n          window.innerHeight\n      ) {\n        return false;\n      }\n\n      const center =\n        rect.top +\n        (\n          rect.height \/\n          2\n        );\n\n      return (\n        center >=\n          window.innerHeight * 0.34 &&\n        center <=\n          window.innerHeight * 0.66\n      );\n    };\n\n    const syncPlayWithFocus = () => {\n      const shouldPlay =\n        isSectionFocused();\n\n      if (\n        shouldPlay ===\n        focusState\n      ) {\n        return;\n      }\n\n      focusState =\n        shouldPlay;\n\n      if (shouldPlay) {\n        module.diaPlay();\n      } else {\n        \/*\n         * En quittant le focus, on remet le module au d\u00e9but.\n         * Il rejouera proprement lors du prochain d\u00e9blur.\n         *\/\n        module.diaReset();\n      }\n    };\n\n    const requestFocusSync = () => {\n      if (focusTicking) {\n        return;\n      }\n\n      focusTicking = true;\n\n      window.requestAnimationFrame(\n        () => {\n          syncPlayWithFocus();\n          focusTicking = false;\n        }\n      );\n    };\n\n    \/*\n     * Suit le scroll et le resize.\n     *\/\n    window.addEventListener(\n      'scroll',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    window.addEventListener(\n      'resize',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    \/*\n     * R\u00e9agit imm\u00e9diatement lorsque le contr\u00f4leur change\n     * le style inline (--step-blur \/ opacity) ou la classe active.\n     *\/\n    if (\n      activationStep !== module &&\n      'MutationObserver' in window\n    ) {\n      const focusObserver =\n        new MutationObserver(\n          requestFocusSync\n        );\n\n      focusObserver.observe(\n        activationStep,\n        {\n          attributes: true,\n          attributeFilter: [\n            'class',\n            'style'\n          ]\n        }\n      );\n    }\n\n    \/*\n     * Premi\u00e8re v\u00e9rification apr\u00e8s le layout Elementor.\n     *\/\n    window.requestAnimationFrame(\n      () => {\n        window.requestAnimationFrame(\n          syncPlayWithFocus\n        );\n      }\n    );\n\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b40eef6 e-con-full dia-step dia-step-1 e-flex e-con e-child\" data-id=\"7b40eef6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1c56aadc elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"1c56aadc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">05 \u00b7 AI MESSAGE GENERATION<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-691a47d0 elementor-widget elementor-widget-heading\" data-id=\"691a47d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Go from idea to message, faster.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b1cabf0 elementor-widget elementor-widget-text-editor\" data-id=\"5b1cabf0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The DiA Assistant generates your message directly within the selected template, taking into account your context and campaign. You can review and edit everything without leaving Dialog Insight.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20f66a53 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"20f66a53\" 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<style>\n\/* =========================================================\n   DiA \u2014 05 \u00b7 G\u00c9N\u00c9RATION DE MESSAGES PAR IA\n   ========================================================= *\/\n\n.dia-message-ai,\n.dia-message-ai * {\n  box-sizing: border-box;\n}\n\n.dia-message-ai {\n  --dia-dark: #0C2734;\n  --dia-purple: #4B17A1;\n  --dia-purple-2: #6219D8;\n  --dia-lavender: #C6A9FF;\n  --dia-lavender-2: #C9B1F2;\n  --dia-pale: #F3EBFE;\n  --dia-green: #05D17D;\n  --dia-lime: #A5F46E;\n  --dia-radius: 2.05cqw;\n\n  position: relative;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  overflow: visible;\n  isolation: isolate;\n  container-type: inline-size;\n  background: transparent !important;\n  font-family: inherit, Arial, sans-serif;\n  pointer-events: none;\n}\n\n.dia-message-ai__ratio-spacer {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  user-select: none !important;\n}\n\n\/* =========================================================\n   PROMPT \u2014 coh\u00e9rent avec les autres modules\n   ========================================================= *\/\n\n.dia-message-ai__prompt {\n  position: absolute;\n  top: 5.0%;\n  right: 4.2%;\n  width: 50.3%;\n  min-height: 21.0%;\n  padding: 3.0% 4.7%;\n  display: flex;\n  align-items: center;\n  border-radius: 2.05cqw;\n  background: #fff;\n  color: var(--dia-purple);\n  box-shadow: 0 2.1cqw 4.3cqw rgba(3, 18, 26, .17);\n  z-index: 3;\n}\n\n.dia-message-ai__prompt-text {\n  display: block;\n  max-width: 100%;\n  font-size: 2.98cqw;\n  font-weight: 700;\n  line-height: 1.28;\n  letter-spacing: -.018em;\n}\n\n.dia-message-ai__prompt-text::after {\n  content: \"\";\n  display: inline-block;\n  width: .09em;\n  height: .92em;\n  margin-left: .08em;\n  vertical-align: -.07em;\n  border-radius: 999px;\n  background: currentColor;\n  opacity: 0;\n}\n\n.dia-message-ai.is-typing-prompt .dia-message-ai__prompt-text::after {\n  opacity: .72;\n  animation: diaMessageCaret .68s steps(1,end) infinite;\n}\n\n\/* =========================================================\n   LOADER \u2014 identique \u00e0 02 \/ 03 \/ 04\n   ========================================================= *\/\n\n.dia-message-ai__loader {\n  position: absolute;\n  left: 6.65%;\n  top: 42.0%;\n  display: flex;\n  align-items: center;\n  gap: .56cqw;\n  opacity: 0;\n  transform: translateY(.28cqw);\n  transition: opacity .16s ease, transform .22s ease;\n  z-index: 4;\n}\n\n.dia-message-ai.show-loader .dia-message-ai__loader {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.dia-message-ai__loader span {\n  width: 1.42cqw;\n  height: 1.42cqw;\n  min-width: 7px;\n  min-height: 7px;\n  border-radius: 50%;\n  background: var(--dia-lavender);\n  animation: diaMessageDot .72s ease-in-out infinite alternate;\n}\n\n.dia-message-ai__loader span:nth-child(2) { animation-delay: .11s; }\n.dia-message-ai__loader span:nth-child(3) { animation-delay: .22s; }\n\n\/* =========================================================\n   CARTE IA\n   ========================================================= *\/\n\n.dia-message-ai__card {\n  position: absolute;\n  left: 5.15%;\n  top: 34.3%;\n  width: 72.15%;\n  height: 62.0%;\n  border-radius: 2.35cqw;\n  background:\n    radial-gradient(90% 100% at 70% 20%, rgba(198,169,255,.055), transparent 62%),\n    var(--dia-purple);\n  box-shadow: 0 2.55cqw 4.3cqw rgba(4, 21, 30, .20);\n  opacity: 0;\n  transform: translateY(2.1cqw);\n  transition:\n    opacity .34s ease,\n    transform .52s cubic-bezier(.2,.82,.22,1);\n  z-index: 1;\n}\n\n.dia-message-ai.show-card .dia-message-ai__card {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* =========================================================\n   LOGO IA \u2014 m\u00eame construction \/ animation que la base\n   ========================================================= *\/\n\n.dia-message-ai__mark {\n  position: absolute;\n  left: 3.85%;\n  top: 5.6%;\n  width: 5.95%;\n  aspect-ratio: 3 \/ 4;\n  height: auto;\n  opacity: 0;\n  transition: opacity .14s ease;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark {\n  opacity: 1;\n}\n\n.dia-message-ai__mark svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  overflow: visible;\n  shape-rendering: geometricPrecision;\n  text-rendering: geometricPrecision;\n}\n\n.dia-message-ai__mark-spark,\n.dia-message-ai__mark-dot {\n  opacity: 0;\n  transform-box: fill-box;\n  transform-origin: center;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark-spark {\n  animation: diaMessageMarkSparkIn .54s cubic-bezier(.16,.9,.24,1.18) both;\n}\n\n.dia-message-ai.show-mark .dia-message-ai__mark-dot {\n  animation: diaMessageMarkDotIn .32s cubic-bezier(.2,.9,.3,1.35) .23s both;\n}\n\n\/* =========================================================\n   TITRE IA\n   ========================================================= *\/\n\n.dia-message-ai__title {\n  position: absolute;\n  left: 13.15%;\n  top: 8.5%;\n  width: 78.2%;\n  margin: 0;\n  color: #fff;\n  font-size: 2.72cqw;\n  font-weight: 700;\n  line-height: 1.17;\n  letter-spacing: -.018em;\n  opacity: 0;\n  transform: translateY(.55cqw);\n}\n\n.dia-message-ai.show-title .dia-message-ai__title {\n  animation: diaMessageTextIn .42s cubic-bezier(.2,.82,.2,1) both;\n}\n\n\/* =========================================================\n   CONTENU DU MESSAGE\n   ========================================================= *\/\n\n.dia-message-ai__mail {\n  position: absolute;\n  left: 10.5%;\n  top: 31.6%;\n  width: 79.0%;\n  height: 41.2%;\n  border-radius: 2.05cqw;\n  background: var(--dia-pale);\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(.9cqw) scale(.985);\n  transition:\n    opacity .34s ease,\n    transform .46s cubic-bezier(.2,.82,.2,1);\n}\n\n.dia-message-ai.show-mail .dia-message-ai__mail {\n  opacity: 1;\n  transform: translateY(0) scale(1);\n}\n\n.dia-message-ai.show-mail .dia-message-ai__mail::before {\n  transform: scaleY(1);\n}\n\n.dia-message-ai__mail::before {\n  content: \"\";\n  position: absolute;\n  inset: 0 auto 0 0;\n  width: 2.05cqw;\n  min-width: 8px;\n  background: var(--dia-lime);\n  border-top-left-radius: 2.05cqw;\n  border-bottom-left-radius: 2.05cqw;\n  transform: scaleY(.08);\n  transform-origin: 50% 50%;\n  transition: transform .46s cubic-bezier(.18,.88,.22,1) .08s;\n}\n\n.dia-message-ai__mail-inner {\n  position: absolute;\n  left: 5.9%;\n  right: 4.8%;\n  top: 9.8%;\n  bottom: 8.8%;\n}\n\n.dia-message-ai__line {\n  height: 7.2%;\n  min-height: 6px;\n  margin-bottom: 5.35%;\n  border-radius: 999px;\n  background: rgba(198,169,255,.78);\n  opacity: 0;\n  transform: scaleX(.08);\n  transform-origin: left center;\n}\n\n.dia-message-ai__line--1 { width: 44%; }\n.dia-message-ai__line--2 { width: 95%; }\n.dia-message-ai__line--3 { width: 70%; margin-bottom: 11.2%; }\n\n.dia-message-ai.show-lines .dia-message-ai__line {\n  animation: diaMessageLineIn .42s cubic-bezier(.2,.82,.2,1) forwards;\n}\n\n.dia-message-ai.show-lines .dia-message-ai__line--1 { animation-delay: .08s; }\n.dia-message-ai.show-lines .dia-message-ai__line--2 { animation-delay: .24s; }\n.dia-message-ai.show-lines .dia-message-ai__line--3 { animation-delay: .40s; }\n\n.dia-message-ai__thumbs {\n  position: absolute;\n  left: 7.0%;\n  right: 5.0%;\n  bottom: 0;\n  height: 39.5%;\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 7.2%;\n}\n\n.dia-message-ai__thumb {\n  position: relative;\n  border-radius: 1.0cqw;\n  background: linear-gradient(180deg, #C6A9FF 0%, #B48DF7 100%);\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(.85cqw) scale(.9);\n}\n\n.dia-message-ai.show-thumbs .dia-message-ai__thumb {\n  animation: diaMessageThumbIn .42s cubic-bezier(.18,.9,.22,1.22) forwards;\n}\n\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(1) { animation-delay: .00s; }\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(2) { animation-delay: .16s; }\n.dia-message-ai.show-thumbs .dia-message-ai__thumb:nth-child(3) { animation-delay: .32s; }\n\n.dia-message-ai__thumb::before,\n.dia-message-ai__thumb::after {\n  content: \"\";\n  position: absolute;\n  bottom: -1px;\n  background: #fff;\n  clip-path: polygon(50% 0, 100% 100%, 0 100%);\n}\n\n.dia-message-ai__thumb::before {\n  left: 11%;\n  width: 59%;\n  height: 57%;\n}\n\n.dia-message-ai__thumb::after {\n  right: 7%;\n  width: 48%;\n  height: 72%;\n  opacity: .95;\n}\n\n\/* =========================================================\n   CTA\n   ========================================================= *\/\n\n.dia-message-ai__cta {\n  position: absolute;\n  left: 5.4%;\n  bottom: 3.7%;\n  width: 56.0%;\n  min-height: 7.1cqw;\n  padding: 1.55cqw 2.55cqw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 2.05cqw;\n  background: var(--dia-lime);\n  color: var(--dia-dark);\n  font-size: 2.30cqw;\n  font-weight: 800;\n  line-height: 1;\n  text-align: center;\n  opacity: 0;\n  transform: translateY(.75cqw) scale(.18);\n  transform-origin: center;\n  box-shadow: 0 .5cqw 1.2cqw rgba(23, 5, 55, .06);\n}\n\n.dia-message-ai.show-cta .dia-message-ai__cta {\n  animation: diaMessageChoiceIn .44s cubic-bezier(.18,.9,.22,1.28) forwards;\n}\n\n\/* =========================================================\n   SORTIE \/ BOUCLE\n   ========================================================= *\/\n\n.dia-message-ai.fade-out .dia-message-ai__card,\n.dia-message-ai.fade-out .dia-message-ai__loader {\n  opacity: 0;\n  transform: translateY(1.35cqw) scale(.99);\n  transition-duration: .3s;\n}\n\n.dia-message-ai.fade-out .dia-message-ai__prompt {\n  opacity: .96;\n}\n\n@keyframes diaMessageDot {\n  from { opacity: .38; transform: translateY(.12cqw) scale(.82); }\n  to   { opacity: 1; transform: translateY(-.12cqw) scale(1.12); }\n}\n\n@keyframes diaMessageCaret {\n  0%, 48% { opacity: .72; }\n  49%, 100% { opacity: 0; }\n}\n\n@keyframes diaMessageMarkSparkIn {\n  0% { opacity: 0; transform: translateY(10%) scale(.72) rotate(-7deg); }\n  62% { opacity: 1; transform: translateY(-2%) scale(1.045) rotate(1.5deg); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaMessageMarkDotIn {\n  0% { opacity: 0; transform: translateY(18%) scale(.35); }\n  72% { opacity: 1; transform: translateY(-4%) scale(1.12); }\n  100% { opacity: 1; transform: none; }\n}\n\n@keyframes diaMessageTextIn {\n  0% { opacity: 0; transform: translateY(.6cqw); }\n  100% { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes diaMessageLineIn {\n  0% { opacity: 0; transform: scaleX(.08); }\n  100% { opacity: 1; transform: scaleX(1); }\n}\n\n@keyframes diaMessageThumbIn {\n  0%   { opacity: 0; transform: translateY(.85cqw) scale(.88); }\n  72%  { opacity: 1; transform: translateY(-.06cqw) scale(1.04); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@keyframes diaMessageChoiceIn {\n  0%   { opacity: 0; transform: translateY(.08cqw) scale(.10); }\n  58%  { opacity: 1; transform: translateY(-.06cqw) scale(1.075); }\n  78%  { opacity: 1; transform: translateY(.02cqw) scale(.985); }\n  100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n\/* =========================================================\n   MODULE 05 \u2014 FIX RESPONSIVE UNIFORMIS\u00c9\n\n   Le chevauchement d\u00e9pend de la largeur R\u00c9ELLE du module,\n   pas uniquement de la largeur du viewport.\n\n   .dia-message-ai utilise d\u00e9j\u00e0 container-type:inline-size;\n   on applique donc le m\u00eame fix que dans le mega code.\n   ========================================================= *\/\n@container (max-width: 650px) {\n  .dia-message-ai__thumbs {\n    height: 29% !important;\n  }\n}\n\n\/* Fallback si les container queries ne sont pas disponibles. *\/\n@media (max-width: 1024px) {\n  .dia-message-ai__thumbs {\n    height: 29%;\n  }\n}\n\n@media (max-width: 767px) {\n  .dia-message-ai {\n    min-width: 0;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .dia-message-ai__prompt { border-radius: 2.05cqw; }\n  .dia-message-ai__card { border-radius: 2.35cqw; }\n  .dia-message-ai__mail,\n  .dia-message-ai__mail::before,\n  .dia-message-ai__cta { border-radius: 2.05cqw; }\n  .dia-message-ai__thumb { border-radius: 1.0cqw; }\n  .dia-message-ai__title { font-size: 2.9cqw; width: 78.5%; }\n\n  .dia-message-ai__thumbs {\n    height: 29%;\n  }\n}\n\n\/* =========================================================\n   ELEMENTOR \u2014 FIX DE FLUX MOBILE\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n  .elementor-widget-html.dia-elementor-flow-host,\n  .elementor-widget-container.dia-elementor-flow-container {\n    position: relative !important;\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n    inset: auto !important;\n    width: 100% !important;\n    height: auto !important;\n    min-height: var(--dia-flow-height, 1px) !important;\n    overflow: visible !important;\n  }\n\n  .elementor-widget-html.dia-elementor-flow-host {\n    align-self: stretch !important;\n    flex: 0 0 auto !important;\n  }\n\n  .elementor-widget-container.dia-elementor-flow-container {\n    display: block !important;\n  }\n\n  .dia-message-ai[data-dia-elementor-flow-fix] {\n    display: block !important;\n    position: relative !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .dia-message-ai *,\n  .dia-message-ai *::before,\n  .dia-message-ai *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .dia-message-ai__card,\n  .dia-message-ai__mark,\n  .dia-message-ai__title,\n  .dia-message-ai__mail,\n  .dia-message-ai__line,\n  .dia-message-ai__thumb,\n  .dia-message-ai__cta {\n    opacity: 1 !important;\n    transform: none !important;\n  }\n\n  .dia-message-ai__loader {\n    display: none !important;\n  }\n}\n<\/style>\n\n<div class=\"dia-ai-module dia-ai-module--message dia-message-ai\"\n     data-dia-ai-module\n     data-dia-message-ai\n     data-dia-step=\"message\"\n     data-dia-elementor-flow-fix>\n\n  <svg class=\"dia-message-ai__ratio-spacer\"\n       width=\"3264\" height=\"2538\" viewBox=\"0 0 3264 2538\"\n       preserveAspectRatio=\"xMidYMid meet\"\n       aria-hidden=\"true\" focusable=\"false\"><\/svg>\n\n  <div class=\"dia-message-ai__prompt\">\n    <span class=\"dia-message-ai__prompt-text\" data-dia-message-prompt><\/span>\n  <\/div>\n\n  <div class=\"dia-message-ai__loader\" aria-hidden=\"true\">\n    <span><\/span><span><\/span><span><\/span>\n  <\/div>\n\n  <div class=\"dia-message-ai__card\">\n\n    <div class=\"dia-message-ai__mark\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1080 1440\" width=\"1080\" height=\"1440\"\n           preserveAspectRatio=\"xMidYMid meet\"\n           shape-rendering=\"geometricPrecision\"\n           xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n           role=\"img\" aria-hidden=\"true\">\n        <ellipse class=\"dia-message-ai__mark-dot\" cx=\"540\" cy=\"144.07\" rx=\"135.33\" ry=\"135.2\" fill=\"#fff\"\/>\n        <path class=\"dia-message-ai__mark-spark\" d=\"M419.14,497.85l-12.03,77.61c-16.33,105.36-98.99,188.01-204.34,204.34l-77.61,12.03c-138.1,21.4-138.1,220.32,0,241.73l77.61,12.03c105.36,16.33,188.01,98.99,204.34,204.34l12.03,77.61c21.4,138.1,220.32,138.1,241.73,0l12.03-77.61c16.33-105.35,98.99-188.01,204.34-204.34l77.61-12.03c138.1-21.41,138.1-220.33,0-241.73l-77.61-12.03c-105.35-16.33-188.01-98.99-204.34-204.34l-12.03-77.61c-21.41-138.1-220.33-138.1-241.73,0Z\" fill=\"#C6A9FF\"\/>\n      <\/svg>\n    <\/div>\n\n    <p class=\"dia-message-ai__title\">First version created in your template,<br>with the blocks and content adapted.<\/p>\n\n    <div class=\"dia-message-ai__mail\" aria-hidden=\"true\">\n      <div class=\"dia-message-ai__mail-inner\">\n        <div class=\"dia-message-ai__line dia-message-ai__line--1\"><\/div>\n        <div class=\"dia-message-ai__line dia-message-ai__line--2\"><\/div>\n        <div class=\"dia-message-ai__line dia-message-ai__line--3\"><\/div>\n\n        <div class=\"dia-message-ai__thumbs\">\n          <div class=\"dia-message-ai__thumb\"><\/div>\n          <div class=\"dia-message-ai__thumb\"><\/div>\n          <div class=\"dia-message-ai__thumb\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"dia-message-ai__cta\">REVISE THE MESSAGE<\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(() => {\n  const modules = document.querySelectorAll('[data-dia-message-ai]');\n  if (!modules.length) return;\n\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  modules.forEach((module) => {\n    if (module.dataset.diaMessageReady === '1') return;\n    module.dataset.diaMessageReady = '1';\n\n    const promptEl = module.querySelector('[data-dia-message-prompt]');\n    const promptText = 'Create an email to launch our Summer collection';\n\n    const flowFixEnabled = module.hasAttribute('data-dia-elementor-flow-fix');\n    const elementorContainer = module.closest('.elementor-widget-container');\n    const elementorWidget = module.closest('.elementor-widget-html');\n\n    const syncElementorFlowHeight = () => {\n      if (!flowFixEnabled || !elementorContainer || !elementorWidget) return;\n\n      const height = Math.ceil(module.getBoundingClientRect().height);\n      if (!height) return;\n\n      const value = height + 'px';\n\n      elementorWidget.classList.add('dia-elementor-flow-host');\n      elementorContainer.classList.add('dia-elementor-flow-container');\n\n      elementorWidget.style.setProperty('--dia-flow-height', value);\n      elementorContainer.style.setProperty('--dia-flow-height', value);\n    };\n\n    requestAnimationFrame(() => {\n      syncElementorFlowHeight();\n      requestAnimationFrame(syncElementorFlowHeight);\n    });\n\n    if ('ResizeObserver' in window) {\n      const flowResizeObserver = new ResizeObserver(syncElementorFlowHeight);\n      flowResizeObserver.observe(module);\n    } else {\n      window.addEventListener('resize', syncElementorFlowHeight, { passive: true });\n    }\n\n    let active = false;\n    let runId = 0;\n    let timers = [];\n    let typingTimer = null;\n\n    const clearTimers = () => {\n      timers.forEach(window.clearTimeout);\n      timers = [];\n      if (typingTimer) {\n        window.clearTimeout(typingTimer);\n        typingTimer = null;\n      }\n    };\n\n    const later = (fn, delay, id) => {\n      const timer = window.setTimeout(() => {\n        if (active && id === runId) fn();\n      }, delay);\n      timers.push(timer);\n    };\n\n    const typePrompt = (id) => {\n      let i = 0;\n      module.classList.add('is-typing-prompt');\n\n      const tick = () => {\n        if (!active || id !== runId) return;\n        promptEl.textContent = promptText.slice(0, i);\n        i += 1;\n\n        if (i <= promptText.length) {\n          typingTimer = window.setTimeout(tick, 31);\n        } else {\n          module.classList.remove('is-typing-prompt');\n          typingTimer = null;\n        }\n      };\n\n      tick();\n    };\n\n    const reset = () => {\n      clearTimers();\n      module.classList.remove(\n        'is-typing-prompt',\n        'show-loader',\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-mail',\n        'show-lines',\n        'show-thumbs',\n        'show-cta',\n        'fade-out'\n      );\n      promptEl.textContent = '';\n    };\n\n    const play = () => {\n      if (!active) return;\n\n      reset();\n      const id = ++runId;\n\n      typePrompt(id);\n\n      later(() => module.classList.add('show-loader'), 2100, id);\n      later(() => module.classList.remove('show-loader'), 3080, id);\n\n      later(() => module.classList.add('show-card'), 3100, id);\n      later(() => module.classList.add('show-mark'), 3190, id);\n      later(() => module.classList.add('show-title'), 3320, id);\n\n      later(() => module.classList.add('show-mail'), 3720, id);\n      later(() => module.classList.add('show-lines'), 3920, id);\n      later(() => module.classList.add('show-thumbs'), 4550, id);\n      later(() => module.classList.add('show-cta'), 5350, id);\n\n      later(() => module.classList.add('fade-out'), 9000, id);\n      later(play, 9500, id);\n    };\n\n    const showStatic = () => {\n      active = false;\n      reset();\n      promptEl.textContent = promptText;\n      module.classList.add(\n        'show-card',\n        'show-mark',\n        'show-title',\n        'show-mail',\n        'show-lines',\n        'show-thumbs',\n        'show-cta'\n      );\n    };\n\n    module.diaPlay = () => {\n      if (reduceMotion) {\n        showStatic();\n        return;\n      }\n\n      if (!active) {\n        active = true;\n        play();\n      }\n    };\n\n    module.diaStop = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    module.diaReset = () => {\n      active = false;\n      runId += 1;\n      reset();\n    };\n\n    if (reduceMotion) {\n      showStatic();\n      return;\n    }\n\n    \/* =======================================================\n       MOBILE \/ MODULE INDIVIDUEL \u2014 PLAY QUAND LE STEP EST D\u00c9BLURR\u00c9\n       =======================================================\n\n       IMPORTANT :\n       ce bloc ne change AUCUN CSS, AUCUNE dimension et AUCUNE apparence.\n       Il remplace seulement l'ancien autoplay \"d\u00e8s que le module est visible\".\n\n       Id\u00e9alement, place ce widget HTML dans le m\u00eame conteneur .dia-step\n       que le texte correspondant.\n       ======================================================= *\/\n\n    const activationStep =\n      module.closest('.dia-step') ||\n      module;\n\n    let focusTicking = false;\n    let focusState = false;\n\n    const readBlurPx = (el) => {\n      const styles =\n        window.getComputedStyle(el);\n\n      \/*\n       * Ton contr\u00f4leur principal pilote d\u00e9j\u00e0 --step-blur.\n       * C'est la source la plus fid\u00e8le \u00e0 ce qui est r\u00e9ellement affich\u00e9.\n       *\/\n      const cssVar = styles\n        .getPropertyValue('--step-blur')\n        .trim();\n\n      if (cssVar) {\n        const value =\n          parseFloat(cssVar);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      \/*\n       * Fallback si le blur vient directement de filter: blur(...).\n       *\/\n      const filter =\n        styles.filter || '';\n\n      const match =\n        filter.match(\n          \/blur\\(([-\\d.]+)px\\)\/i\n        );\n\n      if (match) {\n        const value =\n          parseFloat(match[1]);\n\n        if (Number.isFinite(value)) {\n          return value;\n        }\n      }\n\n      return null;\n    };\n\n    const isSectionFocused = () => {\n\n      \/*\n       * 1) Si un blur existe, on suit EXACTEMENT son \u00e9tat visuel.\n       *    Le module ne part que lorsque la section est pratiquement nette.\n       *\/\n      if (activationStep !== module) {\n        const blurPx =\n          readBlurPx(\n            activationStep\n          );\n\n        if (blurPx !== null) {\n          const styles =\n            window.getComputedStyle(\n              activationStep\n            );\n\n          const opacity =\n            parseFloat(\n              styles.opacity || '1'\n            );\n\n          return (\n            blurPx <= 0.75 &&\n            (\n              !Number.isFinite(opacity) ||\n              opacity >= 0.90\n            )\n          );\n        }\n      }\n\n      \/*\n       * 2) Si aucun blur mesurable n'existe mais que ton contr\u00f4leur\n       *    ajoute .active, on utilise cette classe.\n       *\/\n      if (\n        activationStep !== module &&\n        activationStep.classList.contains(\n          'active'\n        )\n      ) {\n        return true;\n      }\n\n      \/*\n       * 3) Fallback autonome :\n       *    si ce module est utilis\u00e9 sans le contr\u00f4leur de blur,\n       *    il joue seulement lorsque sa section est dans la zone centrale.\n       *\n       *    Cette logique ne modifie aucun style.\n       *\/\n      const rect =\n        activationStep\n          .getBoundingClientRect();\n\n      if (\n        rect.bottom <= 0 ||\n        rect.top >=\n          window.innerHeight\n      ) {\n        return false;\n      }\n\n      const center =\n        rect.top +\n        (\n          rect.height \/\n          2\n        );\n\n      return (\n        center >=\n          window.innerHeight * 0.34 &&\n        center <=\n          window.innerHeight * 0.66\n      );\n    };\n\n    const syncPlayWithFocus = () => {\n      const shouldPlay =\n        isSectionFocused();\n\n      if (\n        shouldPlay ===\n        focusState\n      ) {\n        return;\n      }\n\n      focusState =\n        shouldPlay;\n\n      if (shouldPlay) {\n        module.diaPlay();\n      } else {\n        \/*\n         * En quittant le focus, on remet le module au d\u00e9but.\n         * Il rejouera proprement lors du prochain d\u00e9blur.\n         *\/\n        module.diaReset();\n      }\n    };\n\n    const requestFocusSync = () => {\n      if (focusTicking) {\n        return;\n      }\n\n      focusTicking = true;\n\n      window.requestAnimationFrame(\n        () => {\n          syncPlayWithFocus();\n          focusTicking = false;\n        }\n      );\n    };\n\n    \/*\n     * Suit le scroll et le resize.\n     *\/\n    window.addEventListener(\n      'scroll',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    window.addEventListener(\n      'resize',\n      requestFocusSync,\n      { passive: true }\n    );\n\n    \/*\n     * R\u00e9agit imm\u00e9diatement lorsque le contr\u00f4leur change\n     * le style inline (--step-blur \/ opacity) ou la classe active.\n     *\/\n    if (\n      activationStep !== module &&\n      'MutationObserver' in window\n    ) {\n      const focusObserver =\n        new MutationObserver(\n          requestFocusSync\n        );\n\n      focusObserver.observe(\n        activationStep,\n        {\n          attributes: true,\n          attributeFilter: [\n            'class',\n            'style'\n          ]\n        }\n      );\n    }\n\n    \/*\n     * Premi\u00e8re v\u00e9rification apr\u00e8s le layout Elementor.\n     *\/\n    window.requestAnimationFrame(\n      () => {\n        window.requestAnimationFrame(\n          syncPlayWithFocus\n        );\n      }\n    );\n\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-2d14d495 e-con-full e-flex e-con e-child\" data-id=\"2d14d495\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-440e86c6 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"440e86c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:250}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Your rules first. Our best practices next.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1fad9546 e-grid e-con-boxed e-con e-child\" data-id=\"1fad9546\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-419e0599 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"419e0599\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:250}\">\n\t\t<div class=\"elementor-element elementor-element-6eac12ab e-con-full e-flex e-con e-child\" data-id=\"6eac12ab\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6bb421d8 elementor-widget elementor-widget-image\" data-id=\"6bb421d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-demande-utilisateur-assistant-ia.webp\" class=\"attachment-large size-large wp-image-19283\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-demande-utilisateur-assistant-ia.webp 500w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-demande-utilisateur-assistant-ia-300x300.webp 300w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-demande-utilisateur-assistant-ia-150x150.webp 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-33042d07 e-con-full e-flex e-con e-child\" data-id=\"33042d07\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21d1d541 elementor-widget elementor-widget-heading\" data-id=\"21d1d541\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Your inquiry<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcac362 elementor-widget elementor-widget-text-editor\" data-id=\"dcac362\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>what you explicitly ask for comes first.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-335310b2 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"335310b2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:350}\">\n\t\t<div class=\"elementor-element elementor-element-7a604288 e-con-full e-flex e-con e-child\" data-id=\"7a604288\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-410a57f9 elementor-widget elementor-widget-image\" data-id=\"410a57f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-regles-affaires-assistant-ia.webp\" class=\"attachment-large size-large wp-image-19285\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-regles-affaires-assistant-ia.webp 500w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-regles-affaires-assistant-ia-300x300.webp 300w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-regles-affaires-assistant-ia-150x150.webp 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-21afdab5 e-con-full e-flex e-con e-child\" data-id=\"21afdab5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ad47d47 elementor-widget elementor-widget-heading\" data-id=\"5ad47d47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Your business rules<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36a4da7f elementor-widget elementor-widget-text-editor\" data-id=\"36a4da7f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>those defined in the selected context.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e8547c0 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"5e8547c0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:450}\">\n\t\t<div class=\"elementor-element elementor-element-7b1fda13 e-con-full e-flex e-con e-child\" data-id=\"7b1fda13\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-26734fe2 elementor-widget elementor-widget-image\" data-id=\"26734fe2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-bonnes-pratiques-ia-dialog-insight.webp\" class=\"attachment-large size-large wp-image-19287\" alt=\"\" srcset=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-bonnes-pratiques-ia-dialog-insight.webp 500w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-bonnes-pratiques-ia-dialog-insight-300x300.webp 300w, https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/09\/dia-bonnes-pratiques-ia-dialog-insight-150x150.webp 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4ebe4d66 e-con-full e-flex e-con e-child\" data-id=\"4ebe4d66\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7bfcaf23 elementor-widget elementor-widget-heading\" data-id=\"7bfcaf23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">AI best practices<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-312fb0b0 elementor-widget elementor-widget-text-editor\" data-id=\"312fb0b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>used to fill in what you haven\u2019t specified.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-28c572e8 e-con-full e-flex e-con e-child\" data-id=\"28c572e8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-677d3d6b elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"677d3d6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:250}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">AI best practices<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-46b4e495 e-grid e-con-boxed e-con e-child\" data-id=\"46b4e495\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-90d0bc9 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"90d0bc9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;,&quot;animation_delay&quot;:350}\">\n\t\t<div class=\"elementor-element elementor-element-5c9398c5 e-con-full e-flex e-con e-child\" data-id=\"5c9398c5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5737b05a elementor-widget elementor-widget-heading\" data-id=\"5737b05a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Generic AI Assistant<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d8f7121 e-con-full e-flex e-con e-child\" data-id=\"4d8f7121\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-64f76565 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"64f76565\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Context<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6119590f elementor-widget elementor-widget-heading\" data-id=\"6119590f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cCould you remind me of the target audience for your offer?\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e618a93 elementor-widget elementor-widget-heading\" data-id=\"3e618a93\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cAnd what was the tone?\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6b784714 e-con-full e-flex e-con e-child\" data-id=\"6b784714\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16312826 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"16312826\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Data<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4874a7c9 elementor-widget elementor-widget-heading\" data-id=\"4874a7c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Generic recommendations, unconnected to your customer data.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4da974d9 e-con-full e-flex e-con e-child\" data-id=\"4da974d9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10f89a09 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"10f89a09\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Trust<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4688376e elementor-widget elementor-widget-heading\" data-id=\"4688376e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cAre you certain this is the appropriate audience?\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-180668e3 elementor-widget elementor-widget-heading\" data-id=\"180668e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Result generated<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-501f21f2 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"501f21f2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;,&quot;animation_delay&quot;:350}\">\n\t\t<div class=\"elementor-element elementor-element-4664bbde e-con-full e-flex e-con e-child\" data-id=\"4664bbde\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a5ad4f6 elementor-widget elementor-widget-heading\" data-id=\"1a5ad4f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">DiA Integrated Assistant<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-700d3cb7 e-con-full e-flex e-con e-child\" data-id=\"700d3cb7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ffc9997 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"4ffc9997\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Context<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f6f3237 elementor-widget elementor-widget-heading\" data-id=\"f6f3237\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cGot it \u2014 I\u2019ll keep the Summer Boutique context throughout the campaign.\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c4a677e e-con-full e-flex e-con e-child\" data-id=\"3c4a677e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40706fb2 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"40706fb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Data<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-51045160 elementor-widget elementor-widget-heading\" data-id=\"51045160\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Based on the content that your contacts have actually viewed.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-59fea415 e-con-full e-flex e-con e-child\" data-id=\"59fea415\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6f4947 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"a6f4947\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Trust<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33a91be2 elementor-widget elementor-widget-heading\" data-id=\"33a91be2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cAre you certain this is the appropriate audience?\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70b8957c elementor-widget elementor-widget-heading\" data-id=\"70b8957c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">\u201cYes \u2014 segment according to recent purchases and travel interests. 312 contacts, prepared for validation.\u201d<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-46b4c06c dia-gradient-2 e-flex e-con-boxed e-con e-parent\" data-id=\"46b4c06c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40442179 elementor-widget elementor-widget-heading\" data-id=\"40442179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">FAQ<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f959435 elementor-widget__width-initial elementor-widget-tablet__width-initial custom-accordion custom-accordion-no-border-desk custom-accordion-no-border-mob elementor-widget elementor-widget-jet-accordion\" data-id=\"2f959435\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"jet-accordion\" data-settings=\"{&quot;collapsible&quot;:false,&quot;ajaxTemplate&quot;:false,&quot;switchScrolling&quot;:false,&quot;switchScrollingOffset&quot;:0,&quot;switchScrollingDelay&quot;:500}\">\n\t\t\t<div class=\"jet-accordion__inner\">\n\t\t\t\t<div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7981\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"1\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7981\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Does Dialog Insight's AI utilize my customer data?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7981\" class=\"jet-toggle__content\" data-toggle=\"1\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>DiA depends on the organization of your data, the interactions among your contacts, and the business context you have established. However, no personal information from your contacts is shared with external language models, and your data is never utilized for model training.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7982\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"2\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7982\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Do I need to know the exact criteria for creating a segment?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7982\" class=\"jet-toggle__content\" data-toggle=\"2\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>No. Simply describe the audience you want to reach. DiA translates your intent into segmentation criteria, and the AI Summary explains the segment logic in natural language.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7983\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"3\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7983\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Can I modify the AI\u2019s suggestions?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7983\" class=\"jet-toggle__content\" data-toggle=\"3\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>Yes, certainly. You can manually adjust a segment, request DiA to enhance it, modify a campaign scenario, or revise a generated message. To refine a segment using AI, ensure that all criteria are included in your new request, as it supersedes the previous criteria.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7984\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"4\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7984\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Can I see the size of my segment?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7984\" class=\"jet-toggle__content\" data-toggle=\"4\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>Yes. When you save it, you\u2019ll see the number of contacts that match the generated criteria.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7985\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"5\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7985\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Does AI generate and dispatch my campaigns on my behalf?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7985\" class=\"jet-toggle__content\" data-toggle=\"5\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>No. DiA presents a segment and a campaign scenario for your review. You will complete the necessary steps that require your judgment and provide approval prior to activation. The elements generated by AI are clearly identified, ensuring you are always aware of what needs validation.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7986\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"6\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7986\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Does AI also create the images in my emails?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7986\" class=\"jet-toggle__content\" data-toggle=\"6\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>Not at this time. DiA composes and organizes the content of your messages, while your team incorporates the visuals.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7987\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"7\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7987\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Must I configure a context prior to utilizing AI?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7987\" class=\"jet-toggle__content\" data-toggle=\"7\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>No, DiA is beneficial from the outset due to its repository of best practices. However, the more specific your context, the more closely the results will align with your brand and business guidelines.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7988\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"8\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7988\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>What distinguishes this from a generic AI tool?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7988\" class=\"jet-toggle__content\" data-toggle=\"8\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>A generic tool lacks familiarity with your data and organization; thus, you must reiterate all information and manually transfer the results. In contrast, DiA is seamlessly integrated with your marketing platform, considers the context you have established, and generates segments, scenarios, and messages that can be utilized directly.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-7989\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"9\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-7989\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Does this replace manual segmentation or my marketing team?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-7989\" class=\"jet-toggle__content\" data-toggle=\"9\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>No. DiA streamlines and expedites workflows by minimizing manual and repetitive tasks, allowing your team to focus more on strategy, optimization, and creativity. You maintain control over criteria, scenarios, and content.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\" jet-accordion__item jet-toggle jet-toggle-fall-perspective-effect \">\n\t\t\t\t\t\t\t<div id=\"jet-toggle-control-79810\" class=\"jet-toggle__control elementor-menu-anchor\" data-toggle=\"10\" role=\"button\" tabindex=\"0\" aria-controls=\"jet-toggle-content-79810\" aria-expanded=\"false\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__label-icon jet-toggle-icon-position-right\"><span class=\"jet-toggle__icon icon-normal jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(-982.731 -51.586)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><span class=\"jet-toggle__icon icon-active jet-tabs-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26.828\" height=\"14.414\" viewBox=\"0 0 26.828 14.414\"><path id=\"Ressources-Fleche\" d=\"M984.146,53l12,12,12-12\" transform=\"translate(1009.56 66) rotate(180)\" fill=\"none\" stroke=\"#0c2734\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"2\"><\/path><\/svg><\/span><\/div><div class=\"jet-toggle__label-text\"><h3>Is it possible to disable the AI features?<\/h3><\/div>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div id=\"jet-toggle-content-79810\" class=\"jet-toggle__content\" data-toggle=\"10\" role=\"region\" data-template-id=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"jet-toggle__content-inner\"><p>Yes. They are disabled by default and can be enabled as needed. Access is regulated at both the account and user levels.<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b95d58c e-con-full e-flex e-con e-child\" data-id=\"7b95d58c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40e065b3 elementor-widget elementor-widget-heading\" data-id=\"40e065b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Prepared to experiment with DiA using your data?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52642fc6 elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"52642fc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.dialoginsight.com\/en\/demo\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book a demo<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\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>DIA \u00b7 Dialog Insight AI Assistant Create hyper-personalized campaigns faster with AI. The DiA assistant isn\u2019t a chatbot simply added to your platform. It\u2019s an assistant that understands your business context and customer data. THE DIALOG INSIGHT AI ASSISTANT THE DIALOG INSIGHT AI ASSISTANT AI doesn\u2019t replace marketers. It gives them time back. These are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":16297,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"page-type":[],"audience-page":[],"class_list":["post-19432","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DiA AI Marketing Assistant | Dialog Insight<\/title>\n<meta name=\"description\" content=\"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.\" \/>\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.dialoginsight.com\/en\/dia-assistant\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DiA AI Marketing Assistant | Dialog Insight\" \/>\n<meta property=\"og:description\" content=\"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/\" \/>\n<meta property=\"og:site_name\" content=\"Dialog Insight\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-01T12:46:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-MS-900-x-600-px.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/\",\"url\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/\",\"name\":\"DiA AI Marketing Assistant | Dialog Insight\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialoginsight.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png\",\"datePublished\":\"2026-09-24T16:14:15+00:00\",\"dateModified\":\"2026-10-01T12:46:49+00:00\",\"description\":\"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage\",\"url\":\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png\",\"contentUrl\":\"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png\",\"width\":600,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dialoginsight.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DiA Assistant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialoginsight.com\/en\/#website\",\"url\":\"https:\/\/www.dialoginsight.com\/en\/\",\"name\":\"Dialog Insight\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dialoginsight.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DiA AI Marketing Assistant | Dialog Insight","description":"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.","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.dialoginsight.com\/en\/dia-assistant\/","og_locale":"en_US","og_type":"article","og_title":"DiA AI Marketing Assistant | Dialog Insight","og_description":"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.","og_url":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/","og_site_name":"Dialog Insight","article_modified_time":"2026-10-01T12:46:49+00:00","og_image":[{"width":900,"height":600,"url":"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-MS-900-x-600-px.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/","url":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/","name":"DiA AI Marketing Assistant | Dialog Insight","isPartOf":{"@id":"https:\/\/www.dialoginsight.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage"},"image":{"@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png","datePublished":"2026-09-24T16:14:15+00:00","dateModified":"2026-10-01T12:46:49+00:00","description":"Create hyper-personalized campaigns faster with DiA, Dialog Insight\u2019s AI assistant for audience segmentation, campaign creation and email messages.","breadcrumb":{"@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dialoginsight.com\/en\/dia-assistant\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#primaryimage","url":"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png","contentUrl":"https:\/\/www.dialoginsight.com\/wp-content\/uploads\/2026\/02\/Logo-SEO-600-x-600-px.png","width":600,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.dialoginsight.com\/en\/dia-assistant\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dialoginsight.com\/en\/"},{"@type":"ListItem","position":2,"name":"DiA Assistant"}]},{"@type":"WebSite","@id":"https:\/\/www.dialoginsight.com\/en\/#website","url":"https:\/\/www.dialoginsight.com\/en\/","name":"Dialog Insight","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dialoginsight.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/pages\/19432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/comments?post=19432"}],"version-history":[{"count":3,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/pages\/19432\/revisions"}],"predecessor-version":[{"id":19557,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/pages\/19432\/revisions\/19557"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/media\/16297"}],"wp:attachment":[{"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/media?parent=19432"}],"wp:term":[{"taxonomy":"page-type","embeddable":true,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/page-type?post=19432"},{"taxonomy":"audience-page","embeddable":true,"href":"https:\/\/www.dialoginsight.com\/en\/wp-json\/wp\/v2\/audience-page?post=19432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}