{"id":15,"date":"2025-05-06T12:47:26","date_gmt":"2025-05-06T12:47:26","guid":{"rendered":"https:\/\/drcuno.aif-staging.com\/?page_id=15"},"modified":"2025-08-25T14:37:56","modified_gmt":"2025-08-25T14:37:56","slug":"home","status":"publish","type":"page","link":"https:\/\/drcuno.aif-staging.com\/fr\/","title":{"rendered":"Accueil"},"content":{"rendered":"<p>[et_pb_section fb_built=\u201d1\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#000000\u2033 custom_margin=\u201d-80px||||false|false\u201d custom_padding=\u201d0px||0px||false|false\u201d custom_css_main_element=\u201dheight: 100px;\u201d global_colors_info=\u201d{}\u201d][et_pb_row _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d0px||0px||true|false\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 custom_padding_last_edited=\u201don|phone\u201d module_id=\u201dhome-hero\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#000000\u2033 background_enable_image=\u201doff\u201d background_size=\u201dcontain\u201d custom_margin=\u201d||||false|false\u201d custom_padding=\u201d100px||||false|false\u201d custom_padding_tablet=\u201d80px||||false|false\u201d custom_padding_phone=\u201d50px||0px||false|false\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201don|phone\u201d custom_css_main_element_phone=\u201dheight: calc(100vh \u2013 100px) !important;||\u201d][et_pb_row column_structure=\u201d2_3,1_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text module_class=\u201dgsap-diapo-up play-again revert\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_heading_font||||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_font_size=\u201d32px\u201d text_letter_spacing=\u201d0.2em\u201d text_line_height=\u201d1em\u201d text_font_size_tablet=\u201d27px\u201d text_font_size_phone=\u201d22px\u201d text_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Dr.<br \/>Alexandre<br \/>Cuno<\/p>\n<p>[\/et_pb_text][et_pb_text module_class=\u201dgsap-diapo-up play-again revert\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|300|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_font_size=\u201d20px\u201d text_letter_spacing=\u201d1px\u201d header_font=\u201d|300|||||||\u201d header_text_color=\u201d#FFFFFF\u201d header_font_size=\u201d70px\u201d max_width=\u201d480px\u201d max_width_tablet=\u201d480px\u201d max_width_phone=\u201d480px\u201d max_width_last_edited=\u201don|desktop\u201d custom_margin=\u201d150px||150px||true|false\u201d custom_margin_tablet=\u201d100px||100px||true|false\u201d custom_margin_phone=\u201d80px||80px||true|false\u201d custom_margin_last_edited=\u201don|phone\u201d header_font_size_tablet=\u201d55px\u201d header_font_size_phone=\u201d35px\u201d header_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h1>Plastique facial<br \/>\n<strong>&amp; Chirurgien ORL<\/strong><br \/>\n<em>\u00e0 Gen\u00e8ve<\/em><\/h1>\n<p>Esth\u00e9tique raffin\u00e9e et excellence chirurgicale<\/p>\n    <!-- HTML -->\r\n    <div class=\"consultation-block\" onclick=\"window.location.href='\/contact-us\/';\">\r\n        <div class=\"line\">\r\n            <span class=\"arrow-head\"><\/span>\r\n        <\/div>\r\n        <img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white.png\" alt=\"Book a consultation\" class=\"consultation-icon\">\r\n        <p class=\"consultation-text\">R\u00e9server une consultation<\/p>\r\n    <\/div>\r\n\r\n    <!-- CSS -->\r\n    <style>\r\n        .consultation-block {\r\n            position: relative;\r\n            width: 100px;\r\n            height: 180px;\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            justify-content: center;\r\n            text-align: center;\r\n            overflow: hidden;\r\n            cursor: pointer;\r\n            background-color: transparent;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-left: auto;\r\n        }\r\n\r\n        .line {\r\n            position: absolute;\r\n            top: 10px;\r\n            left: calc(50% - 0.5px);\r\n            width: 1px;\r\n            height: 35px;\r\n            background-color: #fff;\r\n            will-change: top;\r\n\t\t\ttransform: translateX(-50%);\r\n        }\r\n\r\n        .arrow-head {\r\n            position: absolute;\r\n            width: 8px;\r\n            height: 8px;\r\n            top: -5px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            background: url('https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/arrow-top-2.png') no-repeat center center;\r\n            background-size: contain;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n        }\r\n\r\n        .consultation-icon {\r\n            width: 35px;\r\n            height: 35px;\r\n            transition: transform 0.15s ease;\r\n        }\r\n\r\n        .consultation-text {\r\n            font-weight: bold;\r\n            margin-top: 5px;\r\n            color: #fff;\r\n            font-size: 13px !important;\r\n            transition: opacity 0.3s ease;\r\n            line-height: 1.3em !important;\r\n        }\r\n\r\n        .consultation-block:hover .consultation-text {\r\n            opacity: 1;\r\n        }\r\n\r\n        .consultation-block:hover .consultation-icon {\r\n            transform: scale(1.1);\r\n        }\r\n    <\/style>\r\n\r\n    <!-- JS -->\r\n    <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n        const block = document.querySelector('.consultation-block');\r\n        const line = document.querySelector('.line');\r\n        const icon = document.querySelector('.consultation-icon');\r\n        const arrowHead = document.querySelector('.arrow-head');\r\n\r\n        let lineTimeline = null;\r\n        let arrowTween = null;\r\n        let iconTween = null;\r\n\r\n        block.addEventListener('mouseenter', () => {\r\n            \/\/ Stop les animations pr\u00e9c\u00e9dentes\r\n            if (lineTimeline) lineTimeline.kill();\r\n            if (arrowTween) arrowTween.kill();\r\n            if (iconTween) iconTween.kill();\r\n\r\n            \/\/ Cr\u00e9e une nouvelle timeline pour la ligne avec rebond\r\n            lineTimeline = gsap.timeline();\r\n\r\n            lineTimeline.to(line, {\r\n                duration: 0.5,\r\n                top: '147px',\r\n                ease: 'power2.out'\r\n            }).to(line, {\r\n                duration: 0.2,\r\n                top: '144px',\r\n                ease: 'power1.out'\r\n            }, \">0\");\r\n\r\n            \/\/ Fl\u00e8che : apparition diff\u00e9r\u00e9e\r\n            arrowTween = gsap.to(arrowHead, {\r\n                delay: 0.4,\r\n                duration: 0.2,\r\n                opacity: 1,\r\n                ease: 'power1.out'\r\n            });\r\n\r\n            \/\/ Ic\u00f4ne : changement rapide\r\n            iconTween = gsap.to(icon, {\r\n                duration: 0.1,\r\n                onComplete: () => {\r\n                    icon.src = \"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white-hover.png\";\r\n                }\r\n            });\r\n        });\r\n\r\n        block.addEventListener('mouseleave', () => {\r\n            \/\/ Stop les animations pr\u00e9c\u00e9dentes\r\n            if (lineTimeline) lineTimeline.kill();\r\n            if (arrowTween) arrowTween.kill();\r\n            if (iconTween) iconTween.kill();\r\n\r\n            \/\/ Ligne retour vers le haut\r\n            lineTimeline = gsap.timeline();\r\n\r\n            lineTimeline.to(line, {\r\n                duration: 0.2,\r\n                top: '10px',\r\n                ease: 'bounce.out'\r\n            });\r\n\r\n            \/\/ Fl\u00e8che disparition imm\u00e9diate\r\n            arrowTween = gsap.to(arrowHead, {\r\n                duration: 0.15,\r\n                opacity: 0\r\n            });\r\n\r\n            \/\/ Ic\u00f4ne retour\r\n            iconTween = gsap.to(icon, {\r\n                duration: 0.1,\r\n                onComplete: () => {\r\n                    icon.src = \"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white.png\";\r\n                }\r\n            });\r\n        });\r\n    });\r\n<\/script>\r\n\r\n    \n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_row _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text module_class=\u201dlined-title\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_2_text_align=\u201dcenter\u201d header_2_font_size=\u201d80px\u201d header_2_line_height=\u201d1.3em\u201d max_width=\u201d650px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201don|tablet\u201d module_alignment=\u201dcenter\u201d header_2_font_size_tablet=\u201d55px\u201d header_2_font_size_phone=\u201d35px\u201d header_2_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h2><span class=\"gsap-diapo-up play-again\">La chirurgie faciale est une<\/span><br \/><span class=\"gsap-diapo-up play-again\">une question de confiance.<\/span><br \/><span class=\"gsap-diapo-up play-again\">Voici pourquoi vous \u00eates l\u00e0<\/span><br \/><span class=\"gsap-diapo-up play-again\">de bonnes mains.<\/span><\/h2>\n<p>[\/et_pb_text][et_pb_text module_class=\u201dgsap-diapo-up play-again revert\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|\u2013et_global_body_font_weight|||||||\u201d text_line_height=\u201d1.6em\u201d text_orientation=\u201dcenter\u201d max_width=\u201d500px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201don|tablet\u201d module_alignment=\u201dcenter\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>En tant que chirurgien facial doublement certifi\u00e9, le docteur Cuno est sp\u00e9cialis\u00e9 dans la rhinoplastie primaire et la rhinoplastie de r\u00e9vision. Sa philosophie ? Le naturel, la pr\u00e9cision, l'art et la discr\u00e9tion.<\/p>\n<p>Le Dr Cuno et son \u00e9quipe d'experts veilleront \u00e0 ce que vous vous sentiez \u00e0 l'aise, inform\u00e9 et en s\u00e9curit\u00e9 tout au long de votre parcours.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 custom_padding_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding_tablet=\u201d\u201d custom_padding_phone=\u201d0px||||false|false\u201d global_colors_info=\u201d{}\u201d][et_pb_row custom_padding_last_edited=\u201don|phone\u201d module_class=\u201doffer-clinic\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#000000\u2033 custom_padding=\u201d50px|70px|50px|70px|true|true\u201d custom_padding_tablet=\u201d50px|70px|50px|70px|true|true\u201d custom_padding_phone=\u201d50px|30px|50px|30px|true|true\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d max_width=\u201d500px\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Dans la clinique du Dr Cuno \u00e0 Gen\u00e8ve, nous combinons l'expertise, la pr\u00e9cision et les derni\u00e8res technologies pour vous offrir des r\u00e9sultats de chirurgie plastique faciale qui sont naturels et adapt\u00e9s \u00e0 vos besoins uniques.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d330px\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h2>Notre <strong>clinique de pointe au c\u0153ur de Gen\u00e8ve<\/strong> offres :<\/h2>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-1%22>Une technologie de pointe<\/span><\/h3>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-1%22>De pointe<br \/>technologie<\/span><\/h3>\n<p>\u201d content_last_edited=\u201don|desktop\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_3_font=\u201d|300|||||||\u201d header_3_text_color=\u201d#FFFFFF\u201d header_3_font_size=\u201d50px\u201d header_3_line_height=\u201d1.1em\u201d custom_margin_tablet=\u201d\u201d custom_margin_phone=\u201d||14px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d custom_padding=\u201d20px||||false|false\u201d header_3_font_size_tablet=\u201d35px\u201d header_3_font_size_phone=\u201d28px\u201d header_3_font_size_last_edited=\u201don|phone\u201d border_width_top=\u201d1px\u201d border_color_top=\u201d#FFFFFF\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201doff|phone\u201d custom_css_main_element_phone=\u201dmax-width: 250px !important;\u201d]<\/p>\n<h3><span class=\"to-italic image-change-1\">Une technologie de pointe<\/span><\/h3>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-2%22>Des installations de classe mondiale<\/span><\/h3>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-2%22>De classe mondiale<br \/>\ninstallations<\/span><\/h3>\n<p>\u201d content_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_3_font=\u201d|300|||||||\u201d header_3_text_color=\u201d#FFFFFF\u201d header_3_font_size=\u201d50px\u201d header_3_line_height=\u201d1.1em\u201d custom_margin_tablet=\u201d\u201d custom_margin_phone=\u201d||14px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d custom_padding=\u201d20px||||false|false\u201d header_3_font_size_tablet=\u201d35px\u201d header_3_font_size_phone=\u201d28px\u201d header_3_font_size_last_edited=\u201don|phone\u201d border_width_top=\u201d1px\u201d border_color_top=\u201d#FFFFFF\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h3><span class=\"to-italic image-change-2\">Des installations de classe mondiale<\/span><\/h3>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-3%22>Un engagement envers le confort et la s\u00e9curit\u00e9<\/span><\/h3>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-3%22>Un engagement<br \/>\nr\u00e9conforter<br \/>\n&amp; s\u00e9curit\u00e9<\/span><\/h3>\n<p>\u201d content_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_3_font=\u201d|300|||||||\u201d header_3_text_color=\u201d#FFFFFF\u201d header_3_font_size=\u201d50px\u201d header_3_line_height=\u201d1.1em\u201d custom_margin_tablet=\u201d\u201d custom_margin_phone=\u201d||14px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d custom_padding=\u201d20px||||false|false\u201d header_3_font_size_tablet=\u201d35px\u201d header_3_font_size_phone=\u201d28px\u201d header_3_font_size_last_edited=\u201don|phone\u201d border_width_top=\u201d1px\u201d border_color_top=\u201d#FFFFFF\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h3><span class=\"to-italic image-change-3\">Un engagement pour le confort et la s\u00e9curit\u00e9<\/span><\/h3>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-4%22>Soins personnalis\u00e9s<\/span><\/h3>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<h3><span class=\"%22to-italic\" image-change-4%22>Personnalis\u00e9<br \/>\nCarey<\/span><\/h3>\n<p>\u201d _builder_version=\"4.27.4\" _module_preset=\"default\" header_3_font=\"|300|||||||\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"50px\" header_3_line_height=\"1.1em\" custom_margin_tablet=\"\" custom_margin_phone=\"||||false|false\" custom_margin_last_edited=\"on|phone\" custom_padding=\"20px||20px||true|false\" custom_padding_tablet=\"20px||20px||true|false\" custom_padding_phone=\"||14px||false|false\" custom_padding_last_edited=\"on|phone\" header_3_font_size_tablet=\"35px\" header_3_font_size_phone=\"28px\" header_3_font_size_last_edited=\"on|phone\" border_width_top=\"1px\" border_color_top=\"#FFFFFF\" border_width_bottom=\"1px\" border_color_bottom=\"#FFFFFF\" global_colors_info=\"{}\"]<\/p>\n<h3><span class=\"to-italic image-change-4\">Soins personnalis\u00e9s<\/span><\/h3>\n<p>[\/et_pb_text][et_pb_text disabled_on=\u201doff|off|on\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d module_alignment=\u201dleft\u201d custom_margin=\u201d||||false|false\u201d custom_padding=\u201d15px||||false|false\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Que vous envisagiez de <strong>chirurgie esth\u00e9tique du visage<\/strong> pour la premi\u00e8re fois ou \u00e0 la recherche d'un <strong>proc\u00e9dure de r\u00e9vision<\/strong>Chaque traitement est soigneusement adapt\u00e9 \u00e0 vos besoins individuels afin d'assurer la meilleure qualit\u00e9 de soins possible. <strong>les r\u00e9sultats les plus \u00e9quilibr\u00e9s et les plus naturels.<\/strong><\/p>\n<p>[\/et_pb_text][et_pb_text disabled_on=\u201doff|off|on\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Avec <strong>certification double planche<\/strong> en <strong>plastique du visage<\/strong> et la chirurgie reconstructive et <strong>ORL\/chirurgie de la t\u00eate et du cou<\/strong>Le Dr Cuno allie l'excellence technique \u00e0 un regard artistique dans un cadre discret et luxueux, \u00e9quip\u00e9 des derni\u00e8res avanc\u00e9es en mati\u00e8re de technologie m\u00e9dicale.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=\u201d1_2,1_2\u2033 custom_padding_last_edited=\u201don|phone\u201d disabled_on=\u201don|on|off\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#000000\u2033 custom_padding=\u201d30px|70px|50px|70px|false|true\u201d custom_padding_tablet=\u201d0px||||false|true\u201d custom_padding_phone=\u201d30px|30px|30px|30px|true|true\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d1_2\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Que vous envisagiez de <strong>chirurgie esth\u00e9tique du visage<\/strong> pour la premi\u00e8re fois ou \u00e0 la recherche d'un <strong>proc\u00e9dure de r\u00e9vision<\/strong>Chaque traitement est soigneusement adapt\u00e9 \u00e0 vos besoins individuels afin d'assurer la meilleure qualit\u00e9 de soins possible. <strong>les r\u00e9sultats les plus \u00e9quilibr\u00e9s et les plus naturels.<\/strong><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u201d1_2\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Avec <strong>certification double planche<\/strong> en <strong>plastique du visage<\/strong> et la chirurgie reconstructive et <strong>ORL\/chirurgie de la t\u00eate et du cou<\/strong>Le Dr Cuno allie l'excellence technique \u00e0 un regard artistique dans un cadre discret et luxueux, \u00e9quip\u00e9 des derni\u00e8res avanc\u00e9es en mati\u00e8re de technologie m\u00e9dicale.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 custom_padding_last_edited=\u201don|tablet\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d||0px||false|false\u201d custom_padding_tablet=\u201d||0px||false|false\u201d custom_padding_phone=\u201d0px||0px||false|false\u201d global_colors_info=\u201d{}\u201d][et_pb_row column_structure=\u201d1_2,1_2\u2033 custom_padding_last_edited=\u201don|desktop\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d|5%||5%|false|true\u201d custom_padding_tablet=\u201d|0%||0%|false|true\u201d custom_padding_phone=\u201d|0%||0%|false|true\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d1_2\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_2_text_align=\u201dleft\u201d header_2_font_size=\u201d80px\u201d max_width=\u201d380px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201doff|desktop\u201d module_alignment=\u201dleft\u201d custom_margin_tablet=\u201d\u201d custom_margin_phone=\u201d||-15px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d header_2_font_size_tablet=\u201d55px\u201d header_2_font_size_phone=\u201d35px\u201d header_2_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h2>Ce que disent nos patients<\/h2>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u201d1_2\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d280px\u201d custom_margin=\u201d||15px||false|false\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Exp\u00e9riences authentiques, transformations r\u00e9elles<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|\u2013et_global_body_font_weight|||||||\u201d text_line_height=\u201d1.6em\u201d max_width=\u201d600px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201don|tablet\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>La confiance se construit \u00e0 travers des histoires vraies. Nos patients racontent leur parcours, de leurs pr\u00e9occupations initiales aux soins qu'ils ont re\u00e7us et \u00e0 la confiance qu'ils ont acquise. Leurs paroles refl\u00e8tent la pr\u00e9cision, l'expertise et le d\u00e9vouement qui d\u00e9finissent notre approche.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row custom_padding_last_edited=\u201don|desktop\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d|5%||5%|false|true\u201d custom_padding_tablet=\u201d|0%||0%|false|true\u201d custom_padding_phone=\u201d|0%||0%|false|true\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_slider arrows_custom_color=\u201d#000000\u2033 dot_nav_custom_color=\u201d#000000\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201dRGBA(255,255,255,0)\u201d custom_padding=\u201d0px||70px||false|false\u201d global_colors_info=\u201d{}\u201d][et_pb_slide _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d body_font=\u201d\u2013et_global_heading_font||on||||||\u201d body_text_color=\u201d#000000\u2033 body_font_size=\u201d36px\u201d body_letter_spacing=\u201d1px\u201d body_line_height=\u201d1.5em\u201d body_font_size_tablet=\u201d30px\u201d body_font_size_phone=\u201d22px\u201d body_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d sticky_transition=\u201don\u201d]\u201cI still look like myself, just years younger and more refreshed. The entire process was fantastic. Dr. Cuno and his entire team made me feel comfortable and at ease throughout the process.\u201d<br \/>\n<span class=\"name-review\">Sophie<\/span>[\/et_pb_slide][et_pb_slide _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d body_font=\u201d\u2013et_global_heading_font||on||||||\u201d body_text_color=\u201d#000000\u2033 body_font_size=\u201d36px\u201d body_letter_spacing=\u201d1px\u201d body_line_height=\u201d1.5em\u201d body_font_size_tablet=\u201d30px\u201d body_font_size_phone=\u201d22px\u201d body_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d sticky_transition=\u201don\u201d]\u201cI still look like myself, just years younger and more refreshed. The entire process was fantastic. Dr. Cuno and his entire team made me feel comfortable and at ease throughout the process.\u201d<br \/>\n<span class=\"name-review\">Sophie<\/span>[\/et_pb_slide][\/et_pb_slider][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 use_custom_gutter=\u201don\u201d gutter_width=\u201d1\u2033 specialty=\u201don\u201d custom_padding_last_edited=\u201don|phone\u201d padding_top_2=\u201d0px\u201d padding_right_1=\u201d0px\u201d padding_right_2=\u201d0px\u201d padding_bottom_2=\u201d0px\u201d padding_left_1=\u201d0px\u201d padding_left_2=\u201d0px\u201d padding_top_bottom_link_1=\u201dfalse\u201d padding_top_bottom_link_2=\u201dtrue\u201d padding_left_right_link_1=\u201dtrue\u201d padding_left_right_link_2=\u201dtrue\u201d module_id=\u201dteambloc\u201d module_class=\u201dvcenter-left-col gsap-diapo-up play-again revert\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201dRGBA(255,255,255,0)\u201d inner_width=\u201d100%\u201d inner_width_tablet=\u201d100%\u201d inner_width_phone=\u201d100%\u201d inner_width_last_edited=\u201don|phone\u201d inner_max_width=\u201d100%\u201d inner_max_width_tablet=\u201d1280px\u201d inner_max_width_phone=\u201d1280px\u201d inner_max_width_last_edited=\u201don|tablet\u201d custom_margin=\u201d||||false|false\u201d custom_margin_tablet=\u201d||0px||false|false\u201d custom_margin_phone=\u201d||0px||false|false\u201d custom_margin_last_edited=\u201don|tablet\u201d custom_padding=\u201d|0px|0px|0px|false|true\u201d custom_padding_tablet=\u201d|0px|0px|0px|false|true\u201d custom_padding_phone=\u201d0px|0px|0px|0px|false|true\u201d custom_css_main_element=\u201dz-index: 4;\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d1_2\u2033 specialty_columns=\u201d2\u2033 _builder_version=\u201d4.16\u2033 custom_padding=\u201d|||\u201d global_colors_info=\u201d{}\u201d custom_padding__hover=\u201d|||\u201d][et_pb_row_inner custom_padding_last_edited=\u201don|desktop\u201d module_class=\u201dvcentered-col\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#f1f1f1\u2033 custom_padding=\u201d140px|20%|140px|20%|true|true\u201d custom_padding_tablet=\u201d70px|10%|70px|10%|true|true\u201d custom_padding_phone=\u201d70px|10%|70px|10%|true|true\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201doff|desktop\u201d custom_css_main_element_tablet=\u201dheight: fit-content !important;\u201d][et_pb_column_inner saved_specialty_column_type=\u201d1_2\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_heading_font||||||||\u201d text_font_size=\u201d24px\u201d header_2_font_size=\u201d38px\u201d header_2_line_height=\u201d1.3em\u201d custom_margin=\u201d||3px||false|false\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|phone\u201d header_2_font_size_tablet=\u201d38px\u201d header_2_font_size_phone=\u201d32px\u201d header_2_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Voici le Dr Alexander Cuno :<\/p>\n<h2 style=\"margin-top: 10px;\">Fa\u00e7onner la confiance avec une pr\u00e9cision chirurgicale<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|300|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_letter_spacing=\u201d1px\u201d text_font_size_tablet=\u201d20px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|tablet\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>S\u00e9curit\u00e9, confort et r\u00e9sultats naturels<\/p>\n<p>[\/et_pb_text][et_pb_button button_url=\u201dhttps:\/\/drcuno.aif-staging.com\/alexander-cuno\/\u201d button_text=\u201dKnow more\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_button=\u201don\u201d button_text_size=\u201d14px\u201d button_text_color=\u201d#FFFFFF\u201d button_bg_color=\u201d#000000\u2033 button_border_width=\u201d1px\u201d button_border_color=\u201d#000000\u2033 button_border_radius=\u201d25px\u201d button_letter_spacing=\u201d1px\u201d button_font=\u201d\u2013et_global_body_font|500|||||||\u201d button_use_icon=\u201doff\u201d custom_margin_tablet=\u201d20px||20px||true|false\u201d custom_margin_phone=\u201d20px||20px||true|false\u201d custom_margin_last_edited=\u201don|tablet\u201d custom_padding=\u201d6px|20px|6px|20px|true|true\u201d global_colors_info=\u201d{}\u201d button_text_color__hover=\u201d#000000\u2033 button_text_color__hover_enabled=\u201don|desktop\u201d button_bg_color__hover=\u201dRGBA(255,255,255,0)\u201d button_bg_color__hover_enabled=\u201don|desktop\u201d button_border_color__hover=\u201d#FFFFFF\u201d button_border_color__hover_enabled=\u201doff|desktop\u201d button_bg_enable_color__hover=\u201don\u201d][\/et_pb_button][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d]Dr. Cuno\u2019s extensive international experience in facial plastic and in ENT surgery ensures the highest standards in both function and form. \u2028<\/p>\n<p>Il a suivi une formation sp\u00e9cialis\u00e9e en chirurgie du nez et en chirurgie esth\u00e9tique du visage, y compris un prestigieux fellowship en chirurgie plastique et reconstructive du visage en Australie.[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner disabled_on=\"off|off|on\" admin_label=\"Row\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" background_image=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/07\/dr-cuno-01.jpg\" background_position=\"top_center\" height_last_edited=\"off|phone\" global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_tablet=\"height : 700px\" custom_css_main_element_phone=\"height : 450px\"][et_pb_column_inner saved_specialty_column_type=\"1_2\u2033 _builder_version=\"4.27.4\u2033 _module_preset=\"default\" custom_css_main_element=\"min-height : 550px !important ;\" global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"min-height : 400px !important ;\" custom_css_main_element_tablet=\"min-height : 550px !important ;\"][\/et_pb_column_inner][\/et_pb_row_inner][\/et_pb_column][et_pb_column type=\"1_2\u2033 admin_label=\"Column\" _builder_version=\"4.16\u2033 custom_padding=\"|||\" global_colors_info=\"{}\" custom_padding__hover=\"|||\"][et_pb_image src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/07\/dr-cuno-01.jpg\" alt=\"clinique-chirurgie-en-suisse-geneva\" title_text=\"dr-cuno-01\u2033 disabled_on=\"on|on|off\" admin_label=\"Image\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" width_tablet=\"\" width_phone=\"\" width_last_edited=\"on|phone\" animation_direction=\"right\" custom_css_main_element=\"z-index : 999999999999 !important ;\" global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_tablet=\"z-index : 999999999999 !important ;\" custom_css_main_element_phone=\"z-index : 999999999999 !important ;\"][\/et_pb_image][\/et_pb_column][\/et_pb_section][et_pb_section fb_built=\"1\u2033 disabled_on=\"off|off|off\" module_id=\"head3d\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" background_color=\"#0b0c10\u2033 custom_padding=\"||||false|false\" custom_css_main_element=\"z-index : 5 !important ;\" global_colors_info=\"{}\"][et_pb_row custom_padding_last_edited=\"on|desktop\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" custom_margin=\"||||false|false\" custom_margin_tablet=\"||0px||false|false\" custom_margin_last_edited=\"off|desktop\" custom_padding=\"|5%|0px|5%|false|true\" custom_padding_tablet=\"|0%||0%|false|true\" custom_padding_phone=\"|0%||0%|false|true\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\u2033 _builder_version=\"4.27.4\u2033 _module_preset=\"default\" custom_css_main_element=\"margin-bottom : -180px !important ;\" global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|tablet\" custom_css_main_element_tablet=\"margin-bottom : 0px !important ;\" custom_css_main_element_phone=\"margin-bottom : 0px !important ;\"][et_pb_text _builder_version=\"4.27.4\u2033 _module_preset=\"default\" header_2_text_align=\"left\" header_2_text_color=\"#FFFFFF\" header_2_font_size=\"80px\" max_width=\"380px\" max_width_tablet=\"500px\" max_width_phone=\"500px\" max_width_last_edited=\"off|desktop\" module_alignment=\"left\" custom_margin=\"||10px||false|false\" custom_margin_tablet=\"\" custom_margin_phone=\"||-15px||false|false\" custom_margin_last_edited=\"on|phone\" header_2_font_size_tablet=\"55px\" header_2_font_size_phone=\"35px\" header_2_font_size_last_edited=\"on|phone\" global_colors_info=\"{}\"]<\/p>\n<h2>Traitements<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d\u2013et_global_body_font|500|||||||\u201d text_text_color=\u201d#FFFFFF\u201d text_line_height=\u201d1.6em\u201d max_width=\u201d400px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201don|tablet\u201d module_alignment=\u201dleft\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Chaque visage est unique, tout comme chaque traitement. Qu'il s'agisse de rehausser des traits naturels, de corriger un travail ant\u00e9rieur ou de r\u00e9pondre \u00e0 des pr\u00e9occupations fonctionnelles, notre approche est m\u00e9ticuleuse, personnalis\u00e9e et ax\u00e9e sur l'obtention du meilleur r\u00e9sultat possible pour vous.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d width=\u201d100%\u201d max_width=\u201d1920px\u201d custom_padding=\u201d0px||0px||true|false\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text disabled_on=\u201don|on|off\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_margin=\u201d||||false|false\u201d custom_padding=\u201d||||false|false\u201d custom_css_main_element=\u201dmargin-top: -350px !important;||margin-bottom: -350px !important;\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201doff|desktop\u201d]<\/p>\n    <div id=\"gltf-container-69fb221e5696f\" style=\"width: 100%; height: 2600px; min-height: 2600px; position: relative;\"><\/div>\r\n    <style>\r\n        #gltf-container-69fb221e5696f {\r\n            width: 100% !important;\r\n            height: 2600px !important;\r\n            min-height: 2600px !important;\r\n            position: relative !important;\r\n        }\r\n        #gltf-container-69fb221e5696f canvas {\r\n            width: 100% !important;\r\n            height: 100% !important;\r\n        }\r\n\/* Initialiser l'\u00e9tat d'arriv\u00e9e smooth des textes *\/\r\n.threedmessage-1,\r\n.threedmessage-2,\r\n.threedmessage-3,\r\n.threedmessage-4,\r\n.threedmessage-5 {\r\n    opacity: 0;\r\n    transform: translateY(20px);\r\n    transition: none;\r\n}\t\t\r\n\t\t\r\n        \/* Responsive: toujours afficher les messages *\/\r\n@media screen and (max-width: 981px) {\r\n    .threedmessage-1,\r\n    .threedmessage-2,\r\n    .threedmessage-3,\r\n    .threedmessage-4,\r\n    .threedmessage-5 {\r\n        display: block !important;\r\n        opacity: 1 !important;\r\n        transform: translateY(0) !important;\r\n        pointer-events: auto !important;\r\n    }\r\n}\r\n@-moz-document url-prefix() {\r\n  [class*=\"threedmessage-\"] {\r\n    display: block !important;\r\n  }\r\n}\r\n\r\n\r\n    <\/style>\r\n    <script>\r\n        window.addEventListener('load', function() {\r\n\t\t\tconst isMobile = window.innerWidth <= 981;\r\n\t\t\tconst isFirefox = typeof InstallTrigger !== 'undefined';\r\n\r\nif (isMobile) {\r\n    \/\/ Forcer l'affichage statique des messages sans interactivit\u00e9 pour tablette et mobile, avec ajout de if (isMobile) return; un peu partout\r\n    document.querySelectorAll('[class*=\"threedmessage-\"]').forEach(el => {\r\n        el.style.display = 'block';\r\n        el.style.opacity = '1';\r\n        el.style.transform = 'translateY(0)';\r\n        el.style.pointerEvents = 'none';\r\n    });\r\n}\r\n\r\n            if (typeof THREE === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof THREE.GLTFLoader === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof gsap === 'undefined') {\r\n                return;\r\n            }\r\n\r\n            const container = document.getElementById('gltf-container-69fb221e5696f');\r\n\r\n            if (!container) {\r\n                return;\r\n            }\r\n\t\t\tconst messZoneTop = 350;\r\nconst messZoneBottom = 600;\r\n\r\n            let messageBlocks = [];\r\n            let blockOffsets = [];\r\n            let hoveredBlockIndex = -1;\r\n            let lastHoveredBlockIndex = -1;\r\n            let currentMessageIndex = -1;\r\n            let isHoveringBlock = false;\r\n            let canvasRect = null;\r\n            const zoomMessageFactor = 0.7;\r\n\t\t\tconst zoomMessageSpeed = 1.5;\r\n\t\t\t\r\n            const updateCanvasRect = () => {\r\n                canvasRect = container.getBoundingClientRect();\r\n            };\r\n\r\n            const updateMessageBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                const groupedBlocks = {};\r\n                Array.from(document.querySelectorAll('[class*=\"threedmessage-\"]'))\r\n                    .filter(el => el.className.match(\/threedmessage-\\d+\/))\r\n                    .forEach(el => {\r\n                        const match = el.className.match(\/threedmessage-(\\d+)\/);\r\n                        if (!match) return;\r\n                        const key = match[1];\r\n                        if (!groupedBlocks[key]) {\r\n                            groupedBlocks[key] = [];\r\n                        }\r\n                        groupedBlocks[key].push(el);\r\n                    });\r\n\r\n                const sortedKeys = Object.keys(groupedBlocks).sort((a, b) => parseInt(a) - parseInt(b));\r\n\r\n                messageBlocks = sortedKeys.map(k => groupedBlocks[k]);\r\n                blockOffsets = sortedKeys.map(k => {\r\n                    const group = groupedBlocks[k];\r\n                    const offsets = { top: 0, bottom: 0, left: 0, right: 0 };\r\n                    group.forEach(block => {\r\n                        const classes = block.className.split(' ');\r\n                        classes.forEach(cls => {\r\n                            if (cls.match(\/^zone(top|bottom|left|right)-?\\d+$\/)) {\r\n                                const match = cls.match(\/^zone(top|bottom|left|right)-?(\\d+)$\/);\r\n                                if (match) {\r\n                                    const type = match[1].toLowerCase();\r\n                                    const value = parseFloat(match[2]);\r\n                                    if (!isNaN(value)) {\r\n                                        offsets[type] = value \/ 100;\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    });\r\n                    return offsets;\r\n                });\r\n\r\n                messageBlocks.flat().forEach(block => {\r\n                    block.style.display = 'none';\r\n                    block.style.opacity = '0';\r\n                    block.style.transform = 'translateY(20px)';\r\n                    if (!isFirefox) {\r\n    block.addEventListener('mouseover', () => {\r\n        const match = block.className.match(\/threedmessage-(\\d+)\/);\r\n        if (!match) return;\r\n        const index = sortedKeys.indexOf(match[1]);\r\n        hoveredBlockIndex = index;\r\n        lastHoveredBlockIndex = index;\r\n        if (currentMessageIndex !== index) {\r\n            showMessageBlock(index);\r\n            currentMessageIndex = index;\r\n        }\r\n    });\r\n\r\n    block.addEventListener('mouseout', () => {\r\n        hoveredBlockIndex = -1;\r\n        if (currentMessageIndex !== -1 && messageBlocks[currentMessageIndex]) {\r\n            showMessageBlock(currentMessageIndex);\r\n        }\r\n    });\r\n}\r\nif (isFirefox) {\r\n    block.addEventListener('mouseenter', () => {\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n        block.style.transition = 'opacity 0.4s ease-out, transform 0.4s ease-out';\r\n    });\r\n\r\n    block.addEventListener('mouseleave', () => {\r\n        block.style.opacity = '0';\r\n        block.style.visibility = 'hidden';\r\n        block.style.pointerEvents = 'none';\r\n        block.style.transition = 'opacity 0.3s ease-in, transform 0.3s ease-in';\r\n    });\r\n}\r\n\r\n                });\r\n            };\r\n\r\n            const showMessageBlock = (index) => {\r\n\t\t\t\tif (isMobile) return;\r\n                messageBlocks.forEach((group, i) => {\r\n                    group.forEach(block => {\r\n                        gsap.killTweensOf(block);\r\n                        if (i === index) {\r\n                            if (block.style.display !== 'block') {\r\n    block.style.display = 'block';\r\n    block.style.opacity = '0';\r\n    block.style.transform = 'translateY(20px)';\r\n}\r\n\r\ngsap.killTweensOf(block);\r\ngsap.to(block, {\r\n    autoAlpha: 1,\r\n    y: 0,\r\n    duration: 0.5,\r\n    ease: \"power2.out\"\r\n});\r\n\r\n                        } else {\r\n                            if (block.style.display !== 'none') {\r\n    if (!isFirefox) {\r\n        gsap.to(block, {\r\n            autoAlpha: 0,\r\n            y: -20,\r\n            duration: 0.4,\r\n            ease: \"power2.in\",\r\n            onComplete: () => {\r\n                block.style.display = 'none';\r\n            }\r\n        });\r\n    } else {\r\n        \/\/ Pour Firefox : on garde le bloc visible\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.display = 'block';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n    }\r\n}\r\n\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n\r\n            const hideAllBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                if (currentMessageIndex !== -1 && !isFirefox) {\r\n                    messageBlocks.forEach(group => {\r\n                        group.forEach(block => {\r\n                            if (block.style.display !== 'none') {\r\n                                gsap.killTweensOf(block);\r\n                                gsap.to(block, {\r\n                                    autoAlpha: 0,\r\n                                    y: -20,\r\n                                    duration: 0.4,\r\n                                    ease: \"power2.in\",\r\n                                    onComplete: () => {\r\n                                        block.style.display = 'none';\r\n                                    }\r\n                                });\r\n                            }\r\n                        });\r\n                    });\r\n                    currentMessageIndex = -1;\r\n                    if (isHoveringBlock) {\r\n                        isHoveringBlock = false;\r\n                        gsap.to(camera.position, {\r\n                            x: initialCameraPosition.x,\r\n                            y: initialCameraPosition.y,\r\n                            z: initialCameraPosition.z,\r\n                            duration: zoomMessageSpeed, \/\/ Speed zoom out, qui peut-\u00eatre ajust\u00e9 avec valeur fixe pour \u00eatre d\u00e9solidaris\u00e9 de la vitesse de zoom-in\r\n                            ease: \"power2.out\"\r\n                        });\r\n                    }\r\n                }\r\n            };\r\n\r\n            updateMessageBlocks();\r\n            updateCanvasRect();\r\n\r\n            const observer = new MutationObserver(() => {\r\n                updateMessageBlocks();\r\n            });\r\n            observer.observe(document.body, { childList: true, subtree: true });\r\n\r\n            const scene = new THREE.Scene();\r\n            const camera = new THREE.PerspectiveCamera(75, container.clientWidth \/ container.clientHeight, 0.1, 1000);\r\n            const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n            \r\n            renderer.setSize(container.clientWidth, container.clientHeight);\r\n            container.appendChild(renderer.domElement);\r\n            \r\n            const ambientLight = new THREE.AmbientLight(0xffffff, 0.4);\r\n            scene.add(ambientLight);\r\n            const directionalLight = new THREE.DirectionalLight(0xffffff, 0.6);\r\n            directionalLight.position.set(1, 1, 1);\r\n            scene.add(directionalLight);\r\n            const pointLight = new THREE.PointLight(0xffffff, 0.5, 100);\r\n            pointLight.position.set(0, 5, 5);\r\n            scene.add(pointLight);\r\n            \r\n            let model = null;\r\n            let modelContainer = null;\r\n            let initialCameraPosition = { x: 0, y: 0, z: 0 };\r\n\r\n            const loader = new THREE.GLTFLoader();\r\n            loader.load(\r\n                'https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/Cara.glb',\r\n                function(gltf) {\r\n                    model = gltf.scene;\r\n                    modelContainer = new THREE.Group();\r\n                    modelContainer.add(model);\r\n                    scene.add(modelContainer);\r\n                    \r\n                    let meshCount = 0;\r\n                    model.traverse(function(child) {\r\n                        if (child.isMesh && child.geometry) {\r\n                            meshCount++;\r\n                                                                                                const baseMaterial = new THREE.MeshBasicMaterial({\r\n                                        color: '#0B0C10',\r\n                                        transparent: true,\r\n                                        opacity: 1,\r\n                                        depthWrite: false,\r\n                                        polygonOffset: true,\r\n                                        polygonOffsetFactor: 1,\r\n                                        polygonOffsetUnits: 1\r\n                                    });\r\n                                                                const baseMesh = new THREE.Mesh(child.geometry, baseMaterial);\r\n                                child.parent.add(baseMesh);\r\n\r\n                                                                    const wireframeGeom = new THREE.WireframeGeometry(child.geometry);\r\n                                \r\n                                const wireframeMaterial = new THREE.LineBasicMaterial({\r\n                                    color: '#787a7b',\r\n                                    linewidth: 1                                });\r\n                                const wireframeLines = new THREE.LineSegments(wireframeGeom, wireframeMaterial);\r\n                                child.parent.add(wireframeLines);\r\n\r\n                                child.visible = false;\r\n                                                    }\r\n                    });\r\n                    \r\n                    const box = new THREE.Box3().setFromObject(model);\r\n                    const center = box.getCenter(new THREE.Vector3());\r\n                    const size = box.getSize(new THREE.Vector3());\r\n                    model.position.x -= center.x;\r\n                    model.position.z -= center.z;\r\n                    model.position.y -= (box.min.y + size.y \/ 2);\r\n                    \r\n                    if (false) {\r\n                        gsap.to(modelContainer.rotation, {\r\n                            y: \"+=\" + (Math.PI * 2),\r\n                            duration: 10,\r\n                            repeat: -1,\r\n                            ease: \"none\"\r\n                        });\r\n                    }\r\n                    \r\n                    const fov = camera.fov * (Math.PI \/ 180);\r\n                    const modelHeight = size.y;\r\n                    initialCameraPosition.z = (modelHeight \/ 2) \/ Math.tan(fov \/ 2) * 1.9;\r\n                    camera.position.set(initialCameraPosition.x, initialCameraPosition.y, initialCameraPosition.z);\r\n                },\r\n                undefined,\r\n                function(error) {\r\n                }\r\n            );\r\n\r\n            container.addEventListener('mouseleave', hideAllBlocks);\r\n\r\n            window.addEventListener('resize', () => {\r\n                camera.aspect = container.clientWidth \/ container.clientHeight;\r\n                camera.updateProjectionMatrix();\r\n                renderer.setSize(container.clientWidth, container.clientHeight);\r\n                updateCanvasRect();\r\n            });\r\n\r\n            window.addEventListener('scroll', updateCanvasRect);\r\n            \r\n            function animate() {\r\n                requestAnimationFrame(animate);\r\n                renderer.render(scene, camera);\r\n            }\r\n            animate();\r\n\r\n            document.body.addEventListener('mousemove', function(event) {\r\n                if (!model || !modelContainer || !initialCameraPosition.z) return;\r\n                const mouseX = event.clientX;\r\n                const mouseY = event.clientY;\r\n\r\n                if (mouseX >= canvasRect.left && mouseX <= canvasRect.right && mouseY >= canvasRect.top && mouseY <= canvasRect.bottom) {\r\n                    if (messageBlocks.length > 0) {\r\n                        const relativeMouseY = mouseY - canvasRect.top;\r\n                        const adjustedHeight = canvasRect.height - messZoneTop - messZoneBottom;\r\nconst adjustedY = relativeMouseY - messZoneTop;\r\n\r\nif (adjustedY < 0 || adjustedY > adjustedHeight) {\r\n    if (!isFirefox) {\r\n        hideAllBlocks(); \/\/ En dehors des zones actives\r\n    }\r\n    return;\r\n}\r\n\r\nconst zoneSize = adjustedHeight \/ messageBlocks.length;\r\nlet zoneIndex = Math.floor(adjustedY \/ zoneSize);\r\nzoneIndex = Math.max(0, Math.min(messageBlocks.length - 1, zoneIndex));\r\n\r\n\r\n                        if (hoveredBlockIndex !== -1) {\r\n                            if (currentMessageIndex !== hoveredBlockIndex) {\r\n                                showMessageBlock(hoveredBlockIndex);\r\n                                currentMessageIndex = hoveredBlockIndex;\r\n                            }\r\n                            const group = messageBlocks[hoveredBlockIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[hoveredBlockIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        } else {\r\n                            if (currentMessageIndex !== zoneIndex || lastHoveredBlockIndex !== -1) {\r\n                                showMessageBlock(zoneIndex);\r\n                                currentMessageIndex = zoneIndex;\r\n                            }\r\n                            lastHoveredBlockIndex = -1;\r\n                            const group = messageBlocks[zoneIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock && hoveredBlockIndex === -1) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[zoneIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                                        const relativeMouseX = ((mouseX - canvasRect.left) \/ canvasRect.width) * 2 - 1;\r\n                    const relativeMouseY = ((mouseY - canvasRect.top) \/ canvasRect.height) * 2 - 1;\r\n                    const invert = 1;\r\n                    const tiltFactorX = invert * relativeMouseX;\r\n                    let tiltFactorY = invert * relativeMouseY;\r\n                    let tiltIntensityY = 1;\r\n                    if (tiltFactorY > 0) {\r\n                        tiltIntensityY = 0.2;\r\n                    } else if (tiltFactorY < 0) {\r\n                        tiltIntensityY = 0.5;\r\n                    }\r\n                    tiltFactorY *= tiltIntensityY;\r\n                    gsap.to(modelContainer.rotation, {\r\n                        x: tiltFactorY * -0.5,\r\n                        y: tiltFactorX * -0.5,\r\n                        duration: 0.5,\r\n                        ease: \"power2.out\"\r\n                    });\r\n                                    }\r\n            });\r\n\r\n            document.body.addEventListener('mouseout', function(event) {\r\n\t\t\t\tif (isMobile) return;\r\n                if (event.relatedTarget === null || !container.contains(event.relatedTarget)) {\r\n                    hideAllBlocks();\r\n                }\r\n            });\r\n        });\r\n    <\/script>\r\n    \n<p>[\/et_pb_text][et_pb_text disabled_on=\u201don|off|on\u201d admin_label=\u201dText\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d]<\/p>\n    <div id=\"gltf-container-69fb221e56a28\" style=\"width: 100%; height: 1000px; min-height: 1000px; position: relative;\"><\/div>\r\n    <style>\r\n        #gltf-container-69fb221e56a28 {\r\n            width: 100% !important;\r\n            height: 1000px !important;\r\n            min-height: 1000px !important;\r\n            position: relative !important;\r\n        }\r\n        #gltf-container-69fb221e56a28 canvas {\r\n            width: 100% !important;\r\n            height: 100% !important;\r\n        }\r\n\/* Initialiser l'\u00e9tat d'arriv\u00e9e smooth des textes *\/\r\n.threedmessage-1,\r\n.threedmessage-2,\r\n.threedmessage-3,\r\n.threedmessage-4,\r\n.threedmessage-5 {\r\n    opacity: 0;\r\n    transform: translateY(20px);\r\n    transition: none;\r\n}\t\t\r\n\t\t\r\n        \/* Responsive: toujours afficher les messages *\/\r\n@media screen and (max-width: 981px) {\r\n    .threedmessage-1,\r\n    .threedmessage-2,\r\n    .threedmessage-3,\r\n    .threedmessage-4,\r\n    .threedmessage-5 {\r\n        display: block !important;\r\n        opacity: 1 !important;\r\n        transform: translateY(0) !important;\r\n        pointer-events: auto !important;\r\n    }\r\n}\r\n@-moz-document url-prefix() {\r\n  [class*=\"threedmessage-\"] {\r\n    display: block !important;\r\n  }\r\n}\r\n\r\n\r\n    <\/style>\r\n    <script>\r\n        window.addEventListener('load', function() {\r\n\t\t\tconst isMobile = window.innerWidth <= 981;\r\n\t\t\tconst isFirefox = typeof InstallTrigger !== 'undefined';\r\n\r\nif (isMobile) {\r\n    \/\/ Forcer l'affichage statique des messages sans interactivit\u00e9 pour tablette et mobile, avec ajout de if (isMobile) return; un peu partout\r\n    document.querySelectorAll('[class*=\"threedmessage-\"]').forEach(el => {\r\n        el.style.display = 'block';\r\n        el.style.opacity = '1';\r\n        el.style.transform = 'translateY(0)';\r\n        el.style.pointerEvents = 'none';\r\n    });\r\n}\r\n\r\n            if (typeof THREE === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof THREE.GLTFLoader === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof gsap === 'undefined') {\r\n                return;\r\n            }\r\n\r\n            const container = document.getElementById('gltf-container-69fb221e56a28');\r\n\r\n            if (!container) {\r\n                return;\r\n            }\r\n\t\t\tconst messZoneTop = 0;\r\nconst messZoneBottom = 0;\r\n\r\n            let messageBlocks = [];\r\n            let blockOffsets = [];\r\n            let hoveredBlockIndex = -1;\r\n            let lastHoveredBlockIndex = -1;\r\n            let currentMessageIndex = -1;\r\n            let isHoveringBlock = false;\r\n            let canvasRect = null;\r\n            const zoomMessageFactor = 0.7;\r\n\t\t\tconst zoomMessageSpeed = 1.5;\r\n\t\t\t\r\n            const updateCanvasRect = () => {\r\n                canvasRect = container.getBoundingClientRect();\r\n            };\r\n\r\n            const updateMessageBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                const groupedBlocks = {};\r\n                Array.from(document.querySelectorAll('[class*=\"threedmessage-\"]'))\r\n                    .filter(el => el.className.match(\/threedmessage-\\d+\/))\r\n                    .forEach(el => {\r\n                        const match = el.className.match(\/threedmessage-(\\d+)\/);\r\n                        if (!match) return;\r\n                        const key = match[1];\r\n                        if (!groupedBlocks[key]) {\r\n                            groupedBlocks[key] = [];\r\n                        }\r\n                        groupedBlocks[key].push(el);\r\n                    });\r\n\r\n                const sortedKeys = Object.keys(groupedBlocks).sort((a, b) => parseInt(a) - parseInt(b));\r\n\r\n                messageBlocks = sortedKeys.map(k => groupedBlocks[k]);\r\n                blockOffsets = sortedKeys.map(k => {\r\n                    const group = groupedBlocks[k];\r\n                    const offsets = { top: 0, bottom: 0, left: 0, right: 0 };\r\n                    group.forEach(block => {\r\n                        const classes = block.className.split(' ');\r\n                        classes.forEach(cls => {\r\n                            if (cls.match(\/^zone(top|bottom|left|right)-?\\d+$\/)) {\r\n                                const match = cls.match(\/^zone(top|bottom|left|right)-?(\\d+)$\/);\r\n                                if (match) {\r\n                                    const type = match[1].toLowerCase();\r\n                                    const value = parseFloat(match[2]);\r\n                                    if (!isNaN(value)) {\r\n                                        offsets[type] = value \/ 100;\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    });\r\n                    return offsets;\r\n                });\r\n\r\n                messageBlocks.flat().forEach(block => {\r\n                    block.style.display = 'none';\r\n                    block.style.opacity = '0';\r\n                    block.style.transform = 'translateY(20px)';\r\n                    if (!isFirefox) {\r\n    block.addEventListener('mouseover', () => {\r\n        const match = block.className.match(\/threedmessage-(\\d+)\/);\r\n        if (!match) return;\r\n        const index = sortedKeys.indexOf(match[1]);\r\n        hoveredBlockIndex = index;\r\n        lastHoveredBlockIndex = index;\r\n        if (currentMessageIndex !== index) {\r\n            showMessageBlock(index);\r\n            currentMessageIndex = index;\r\n        }\r\n    });\r\n\r\n    block.addEventListener('mouseout', () => {\r\n        hoveredBlockIndex = -1;\r\n        if (currentMessageIndex !== -1 && messageBlocks[currentMessageIndex]) {\r\n            showMessageBlock(currentMessageIndex);\r\n        }\r\n    });\r\n}\r\nif (isFirefox) {\r\n    block.addEventListener('mouseenter', () => {\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n        block.style.transition = 'opacity 0.4s ease-out, transform 0.4s ease-out';\r\n    });\r\n\r\n    block.addEventListener('mouseleave', () => {\r\n        block.style.opacity = '0';\r\n        block.style.visibility = 'hidden';\r\n        block.style.pointerEvents = 'none';\r\n        block.style.transition = 'opacity 0.3s ease-in, transform 0.3s ease-in';\r\n    });\r\n}\r\n\r\n                });\r\n            };\r\n\r\n            const showMessageBlock = (index) => {\r\n\t\t\t\tif (isMobile) return;\r\n                messageBlocks.forEach((group, i) => {\r\n                    group.forEach(block => {\r\n                        gsap.killTweensOf(block);\r\n                        if (i === index) {\r\n                            if (block.style.display !== 'block') {\r\n    block.style.display = 'block';\r\n    block.style.opacity = '0';\r\n    block.style.transform = 'translateY(20px)';\r\n}\r\n\r\ngsap.killTweensOf(block);\r\ngsap.to(block, {\r\n    autoAlpha: 1,\r\n    y: 0,\r\n    duration: 0.5,\r\n    ease: \"power2.out\"\r\n});\r\n\r\n                        } else {\r\n                            if (block.style.display !== 'none') {\r\n    if (!isFirefox) {\r\n        gsap.to(block, {\r\n            autoAlpha: 0,\r\n            y: -20,\r\n            duration: 0.4,\r\n            ease: \"power2.in\",\r\n            onComplete: () => {\r\n                block.style.display = 'none';\r\n            }\r\n        });\r\n    } else {\r\n        \/\/ Pour Firefox : on garde le bloc visible\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.display = 'block';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n    }\r\n}\r\n\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n\r\n            const hideAllBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                if (currentMessageIndex !== -1 && !isFirefox) {\r\n                    messageBlocks.forEach(group => {\r\n                        group.forEach(block => {\r\n                            if (block.style.display !== 'none') {\r\n                                gsap.killTweensOf(block);\r\n                                gsap.to(block, {\r\n                                    autoAlpha: 0,\r\n                                    y: -20,\r\n                                    duration: 0.4,\r\n                                    ease: \"power2.in\",\r\n                                    onComplete: () => {\r\n                                        block.style.display = 'none';\r\n                                    }\r\n                                });\r\n                            }\r\n                        });\r\n                    });\r\n                    currentMessageIndex = -1;\r\n                    if (isHoveringBlock) {\r\n                        isHoveringBlock = false;\r\n                        gsap.to(camera.position, {\r\n                            x: initialCameraPosition.x,\r\n                            y: initialCameraPosition.y,\r\n                            z: initialCameraPosition.z,\r\n                            duration: zoomMessageSpeed, \/\/ Speed zoom out, qui peut-\u00eatre ajust\u00e9 avec valeur fixe pour \u00eatre d\u00e9solidaris\u00e9 de la vitesse de zoom-in\r\n                            ease: \"power2.out\"\r\n                        });\r\n                    }\r\n                }\r\n            };\r\n\r\n            updateMessageBlocks();\r\n            updateCanvasRect();\r\n\r\n            const observer = new MutationObserver(() => {\r\n                updateMessageBlocks();\r\n            });\r\n            observer.observe(document.body, { childList: true, subtree: true });\r\n\r\n            const scene = new THREE.Scene();\r\n            const camera = new THREE.PerspectiveCamera(75, container.clientWidth \/ container.clientHeight, 0.1, 1000);\r\n            const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n            \r\n            renderer.setSize(container.clientWidth, container.clientHeight);\r\n            container.appendChild(renderer.domElement);\r\n            \r\n            const ambientLight = new THREE.AmbientLight(0xffffff, 0.4);\r\n            scene.add(ambientLight);\r\n            const directionalLight = new THREE.DirectionalLight(0xffffff, 0.6);\r\n            directionalLight.position.set(1, 1, 1);\r\n            scene.add(directionalLight);\r\n            const pointLight = new THREE.PointLight(0xffffff, 0.5, 100);\r\n            pointLight.position.set(0, 5, 5);\r\n            scene.add(pointLight);\r\n            \r\n            let model = null;\r\n            let modelContainer = null;\r\n            let initialCameraPosition = { x: 0, y: 0, z: 0 };\r\n\r\n            const loader = new THREE.GLTFLoader();\r\n            loader.load(\r\n                'https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/Cara.glb',\r\n                function(gltf) {\r\n                    model = gltf.scene;\r\n                    modelContainer = new THREE.Group();\r\n                    modelContainer.add(model);\r\n                    scene.add(modelContainer);\r\n                    \r\n                    let meshCount = 0;\r\n                    model.traverse(function(child) {\r\n                        if (child.isMesh && child.geometry) {\r\n                            meshCount++;\r\n                                                                                                const baseMaterial = new THREE.MeshBasicMaterial({\r\n                                        color: '#0B0C10',\r\n                                        transparent: true,\r\n                                        opacity: 1,\r\n                                        depthWrite: false,\r\n                                        polygonOffset: true,\r\n                                        polygonOffsetFactor: 1,\r\n                                        polygonOffsetUnits: 1\r\n                                    });\r\n                                                                const baseMesh = new THREE.Mesh(child.geometry, baseMaterial);\r\n                                child.parent.add(baseMesh);\r\n\r\n                                                                    const wireframeGeom = new THREE.WireframeGeometry(child.geometry);\r\n                                \r\n                                const wireframeMaterial = new THREE.LineBasicMaterial({\r\n                                    color: '#787a7b',\r\n                                    linewidth: 1                                });\r\n                                const wireframeLines = new THREE.LineSegments(wireframeGeom, wireframeMaterial);\r\n                                child.parent.add(wireframeLines);\r\n\r\n                                child.visible = false;\r\n                                                    }\r\n                    });\r\n                    \r\n                    const box = new THREE.Box3().setFromObject(model);\r\n                    const center = box.getCenter(new THREE.Vector3());\r\n                    const size = box.getSize(new THREE.Vector3());\r\n                    model.position.x -= center.x;\r\n                    model.position.z -= center.z;\r\n                    model.position.y -= (box.min.y + size.y \/ 2);\r\n                    \r\n                    if (false) {\r\n                        gsap.to(modelContainer.rotation, {\r\n                            y: \"+=\" + (Math.PI * 2),\r\n                            duration: 10,\r\n                            repeat: -1,\r\n                            ease: \"none\"\r\n                        });\r\n                    }\r\n                    \r\n                    const fov = camera.fov * (Math.PI \/ 180);\r\n                    const modelHeight = size.y;\r\n                    initialCameraPosition.z = (modelHeight \/ 2) \/ Math.tan(fov \/ 2) * 1.4;\r\n                    camera.position.set(initialCameraPosition.x, initialCameraPosition.y, initialCameraPosition.z);\r\n                },\r\n                undefined,\r\n                function(error) {\r\n                }\r\n            );\r\n\r\n            container.addEventListener('mouseleave', hideAllBlocks);\r\n\r\n            window.addEventListener('resize', () => {\r\n                camera.aspect = container.clientWidth \/ container.clientHeight;\r\n                camera.updateProjectionMatrix();\r\n                renderer.setSize(container.clientWidth, container.clientHeight);\r\n                updateCanvasRect();\r\n            });\r\n\r\n            window.addEventListener('scroll', updateCanvasRect);\r\n            \r\n            function animate() {\r\n                requestAnimationFrame(animate);\r\n                renderer.render(scene, camera);\r\n            }\r\n            animate();\r\n\r\n            document.body.addEventListener('mousemove', function(event) {\r\n                if (!model || !modelContainer || !initialCameraPosition.z) return;\r\n                const mouseX = event.clientX;\r\n                const mouseY = event.clientY;\r\n\r\n                if (mouseX >= canvasRect.left && mouseX <= canvasRect.right && mouseY >= canvasRect.top && mouseY <= canvasRect.bottom) {\r\n                    if (messageBlocks.length > 0) {\r\n                        const relativeMouseY = mouseY - canvasRect.top;\r\n                        const adjustedHeight = canvasRect.height - messZoneTop - messZoneBottom;\r\nconst adjustedY = relativeMouseY - messZoneTop;\r\n\r\nif (adjustedY < 0 || adjustedY > adjustedHeight) {\r\n    if (!isFirefox) {\r\n        hideAllBlocks(); \/\/ En dehors des zones actives\r\n    }\r\n    return;\r\n}\r\n\r\nconst zoneSize = adjustedHeight \/ messageBlocks.length;\r\nlet zoneIndex = Math.floor(adjustedY \/ zoneSize);\r\nzoneIndex = Math.max(0, Math.min(messageBlocks.length - 1, zoneIndex));\r\n\r\n\r\n                        if (hoveredBlockIndex !== -1) {\r\n                            if (currentMessageIndex !== hoveredBlockIndex) {\r\n                                showMessageBlock(hoveredBlockIndex);\r\n                                currentMessageIndex = hoveredBlockIndex;\r\n                            }\r\n                            const group = messageBlocks[hoveredBlockIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[hoveredBlockIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        } else {\r\n                            if (currentMessageIndex !== zoneIndex || lastHoveredBlockIndex !== -1) {\r\n                                showMessageBlock(zoneIndex);\r\n                                currentMessageIndex = zoneIndex;\r\n                            }\r\n                            lastHoveredBlockIndex = -1;\r\n                            const group = messageBlocks[zoneIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock && hoveredBlockIndex === -1) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[zoneIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                                        const relativeMouseX = ((mouseX - canvasRect.left) \/ canvasRect.width) * 2 - 1;\r\n                    const relativeMouseY = ((mouseY - canvasRect.top) \/ canvasRect.height) * 2 - 1;\r\n                    const invert = 1;\r\n                    const tiltFactorX = invert * relativeMouseX;\r\n                    let tiltFactorY = invert * relativeMouseY;\r\n                    let tiltIntensityY = 1;\r\n                    if (tiltFactorY > 0) {\r\n                        tiltIntensityY = 0.2;\r\n                    } else if (tiltFactorY < 0) {\r\n                        tiltIntensityY = 0.5;\r\n                    }\r\n                    tiltFactorY *= tiltIntensityY;\r\n                    gsap.to(modelContainer.rotation, {\r\n                        x: tiltFactorY * -0.5,\r\n                        y: tiltFactorX * -0.5,\r\n                        duration: 0.5,\r\n                        ease: \"power2.out\"\r\n                    });\r\n                                    }\r\n            });\r\n\r\n            document.body.addEventListener('mouseout', function(event) {\r\n\t\t\t\tif (isMobile) return;\r\n                if (event.relatedTarget === null || !container.contains(event.relatedTarget)) {\r\n                    hideAllBlocks();\r\n                }\r\n            });\r\n        });\r\n    <\/script>\r\n    \n<p>[\/et_pb_text][et_pb_text disabled_on=\u201doff|on|on\u201d admin_label=\u201dText\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d]<\/p>\n    <div id=\"gltf-container-69fb221e56aa8\" style=\"width: 100%; height: 600px; min-height: 600px; position: relative;\"><\/div>\r\n    <style>\r\n        #gltf-container-69fb221e56aa8 {\r\n            width: 100% !important;\r\n            height: 600px !important;\r\n            min-height: 600px !important;\r\n            position: relative !important;\r\n        }\r\n        #gltf-container-69fb221e56aa8 canvas {\r\n            width: 100% !important;\r\n            height: 100% !important;\r\n        }\r\n\/* Initialiser l'\u00e9tat d'arriv\u00e9e smooth des textes *\/\r\n.threedmessage-1,\r\n.threedmessage-2,\r\n.threedmessage-3,\r\n.threedmessage-4,\r\n.threedmessage-5 {\r\n    opacity: 0;\r\n    transform: translateY(20px);\r\n    transition: none;\r\n}\t\t\r\n\t\t\r\n        \/* Responsive: toujours afficher les messages *\/\r\n@media screen and (max-width: 981px) {\r\n    .threedmessage-1,\r\n    .threedmessage-2,\r\n    .threedmessage-3,\r\n    .threedmessage-4,\r\n    .threedmessage-5 {\r\n        display: block !important;\r\n        opacity: 1 !important;\r\n        transform: translateY(0) !important;\r\n        pointer-events: auto !important;\r\n    }\r\n}\r\n@-moz-document url-prefix() {\r\n  [class*=\"threedmessage-\"] {\r\n    display: block !important;\r\n  }\r\n}\r\n\r\n\r\n    <\/style>\r\n    <script>\r\n        window.addEventListener('load', function() {\r\n\t\t\tconst isMobile = window.innerWidth <= 981;\r\n\t\t\tconst isFirefox = typeof InstallTrigger !== 'undefined';\r\n\r\nif (isMobile) {\r\n    \/\/ Forcer l'affichage statique des messages sans interactivit\u00e9 pour tablette et mobile, avec ajout de if (isMobile) return; un peu partout\r\n    document.querySelectorAll('[class*=\"threedmessage-\"]').forEach(el => {\r\n        el.style.display = 'block';\r\n        el.style.opacity = '1';\r\n        el.style.transform = 'translateY(0)';\r\n        el.style.pointerEvents = 'none';\r\n    });\r\n}\r\n\r\n            if (typeof THREE === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof THREE.GLTFLoader === 'undefined') {\r\n                return;\r\n            }\r\n            if (typeof gsap === 'undefined') {\r\n                return;\r\n            }\r\n\r\n            const container = document.getElementById('gltf-container-69fb221e56aa8');\r\n\r\n            if (!container) {\r\n                return;\r\n            }\r\n\t\t\tconst messZoneTop = 0;\r\nconst messZoneBottom = 0;\r\n\r\n            let messageBlocks = [];\r\n            let blockOffsets = [];\r\n            let hoveredBlockIndex = -1;\r\n            let lastHoveredBlockIndex = -1;\r\n            let currentMessageIndex = -1;\r\n            let isHoveringBlock = false;\r\n            let canvasRect = null;\r\n            const zoomMessageFactor = 0.7;\r\n\t\t\tconst zoomMessageSpeed = 1.5;\r\n\t\t\t\r\n            const updateCanvasRect = () => {\r\n                canvasRect = container.getBoundingClientRect();\r\n            };\r\n\r\n            const updateMessageBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                const groupedBlocks = {};\r\n                Array.from(document.querySelectorAll('[class*=\"threedmessage-\"]'))\r\n                    .filter(el => el.className.match(\/threedmessage-\\d+\/))\r\n                    .forEach(el => {\r\n                        const match = el.className.match(\/threedmessage-(\\d+)\/);\r\n                        if (!match) return;\r\n                        const key = match[1];\r\n                        if (!groupedBlocks[key]) {\r\n                            groupedBlocks[key] = [];\r\n                        }\r\n                        groupedBlocks[key].push(el);\r\n                    });\r\n\r\n                const sortedKeys = Object.keys(groupedBlocks).sort((a, b) => parseInt(a) - parseInt(b));\r\n\r\n                messageBlocks = sortedKeys.map(k => groupedBlocks[k]);\r\n                blockOffsets = sortedKeys.map(k => {\r\n                    const group = groupedBlocks[k];\r\n                    const offsets = { top: 0, bottom: 0, left: 0, right: 0 };\r\n                    group.forEach(block => {\r\n                        const classes = block.className.split(' ');\r\n                        classes.forEach(cls => {\r\n                            if (cls.match(\/^zone(top|bottom|left|right)-?\\d+$\/)) {\r\n                                const match = cls.match(\/^zone(top|bottom|left|right)-?(\\d+)$\/);\r\n                                if (match) {\r\n                                    const type = match[1].toLowerCase();\r\n                                    const value = parseFloat(match[2]);\r\n                                    if (!isNaN(value)) {\r\n                                        offsets[type] = value \/ 100;\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    });\r\n                    return offsets;\r\n                });\r\n\r\n                messageBlocks.flat().forEach(block => {\r\n                    block.style.display = 'none';\r\n                    block.style.opacity = '0';\r\n                    block.style.transform = 'translateY(20px)';\r\n                    if (!isFirefox) {\r\n    block.addEventListener('mouseover', () => {\r\n        const match = block.className.match(\/threedmessage-(\\d+)\/);\r\n        if (!match) return;\r\n        const index = sortedKeys.indexOf(match[1]);\r\n        hoveredBlockIndex = index;\r\n        lastHoveredBlockIndex = index;\r\n        if (currentMessageIndex !== index) {\r\n            showMessageBlock(index);\r\n            currentMessageIndex = index;\r\n        }\r\n    });\r\n\r\n    block.addEventListener('mouseout', () => {\r\n        hoveredBlockIndex = -1;\r\n        if (currentMessageIndex !== -1 && messageBlocks[currentMessageIndex]) {\r\n            showMessageBlock(currentMessageIndex);\r\n        }\r\n    });\r\n}\r\nif (isFirefox) {\r\n    block.addEventListener('mouseenter', () => {\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n        block.style.transition = 'opacity 0.4s ease-out, transform 0.4s ease-out';\r\n    });\r\n\r\n    block.addEventListener('mouseleave', () => {\r\n        block.style.opacity = '0';\r\n        block.style.visibility = 'hidden';\r\n        block.style.pointerEvents = 'none';\r\n        block.style.transition = 'opacity 0.3s ease-in, transform 0.3s ease-in';\r\n    });\r\n}\r\n\r\n                });\r\n            };\r\n\r\n            const showMessageBlock = (index) => {\r\n\t\t\t\tif (isMobile) return;\r\n                messageBlocks.forEach((group, i) => {\r\n                    group.forEach(block => {\r\n                        gsap.killTweensOf(block);\r\n                        if (i === index) {\r\n                            if (block.style.display !== 'block') {\r\n    block.style.display = 'block';\r\n    block.style.opacity = '0';\r\n    block.style.transform = 'translateY(20px)';\r\n}\r\n\r\ngsap.killTweensOf(block);\r\ngsap.to(block, {\r\n    autoAlpha: 1,\r\n    y: 0,\r\n    duration: 0.5,\r\n    ease: \"power2.out\"\r\n});\r\n\r\n                        } else {\r\n                            if (block.style.display !== 'none') {\r\n    if (!isFirefox) {\r\n        gsap.to(block, {\r\n            autoAlpha: 0,\r\n            y: -20,\r\n            duration: 0.4,\r\n            ease: \"power2.in\",\r\n            onComplete: () => {\r\n                block.style.display = 'none';\r\n            }\r\n        });\r\n    } else {\r\n        \/\/ Pour Firefox : on garde le bloc visible\r\n        block.style.opacity = '1';\r\n        block.style.visibility = 'visible';\r\n        block.style.display = 'block';\r\n        block.style.transform = 'translateY(0)';\r\n        block.style.pointerEvents = 'auto';\r\n    }\r\n}\r\n\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n\r\n            const hideAllBlocks = () => {\r\n\t\t\t\tif (isMobile) return;\r\n                if (currentMessageIndex !== -1 && !isFirefox) {\r\n                    messageBlocks.forEach(group => {\r\n                        group.forEach(block => {\r\n                            if (block.style.display !== 'none') {\r\n                                gsap.killTweensOf(block);\r\n                                gsap.to(block, {\r\n                                    autoAlpha: 0,\r\n                                    y: -20,\r\n                                    duration: 0.4,\r\n                                    ease: \"power2.in\",\r\n                                    onComplete: () => {\r\n                                        block.style.display = 'none';\r\n                                    }\r\n                                });\r\n                            }\r\n                        });\r\n                    });\r\n                    currentMessageIndex = -1;\r\n                    if (isHoveringBlock) {\r\n                        isHoveringBlock = false;\r\n                        gsap.to(camera.position, {\r\n                            x: initialCameraPosition.x,\r\n                            y: initialCameraPosition.y,\r\n                            z: initialCameraPosition.z,\r\n                            duration: zoomMessageSpeed, \/\/ Speed zoom out, qui peut-\u00eatre ajust\u00e9 avec valeur fixe pour \u00eatre d\u00e9solidaris\u00e9 de la vitesse de zoom-in\r\n                            ease: \"power2.out\"\r\n                        });\r\n                    }\r\n                }\r\n            };\r\n\r\n            updateMessageBlocks();\r\n            updateCanvasRect();\r\n\r\n            const observer = new MutationObserver(() => {\r\n                updateMessageBlocks();\r\n            });\r\n            observer.observe(document.body, { childList: true, subtree: true });\r\n\r\n            const scene = new THREE.Scene();\r\n            const camera = new THREE.PerspectiveCamera(75, container.clientWidth \/ container.clientHeight, 0.1, 1000);\r\n            const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n            \r\n            renderer.setSize(container.clientWidth, container.clientHeight);\r\n            container.appendChild(renderer.domElement);\r\n            \r\n            const ambientLight = new THREE.AmbientLight(0xffffff, 0.4);\r\n            scene.add(ambientLight);\r\n            const directionalLight = new THREE.DirectionalLight(0xffffff, 0.6);\r\n            directionalLight.position.set(1, 1, 1);\r\n            scene.add(directionalLight);\r\n            const pointLight = new THREE.PointLight(0xffffff, 0.5, 100);\r\n            pointLight.position.set(0, 5, 5);\r\n            scene.add(pointLight);\r\n            \r\n            let model = null;\r\n            let modelContainer = null;\r\n            let initialCameraPosition = { x: 0, y: 0, z: 0 };\r\n\r\n            const loader = new THREE.GLTFLoader();\r\n            loader.load(\r\n                'https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/Cara.glb',\r\n                function(gltf) {\r\n                    model = gltf.scene;\r\n                    modelContainer = new THREE.Group();\r\n                    modelContainer.add(model);\r\n                    scene.add(modelContainer);\r\n                    \r\n                    let meshCount = 0;\r\n                    model.traverse(function(child) {\r\n                        if (child.isMesh && child.geometry) {\r\n                            meshCount++;\r\n                                                                                                const baseMaterial = new THREE.MeshBasicMaterial({\r\n                                        color: '#0B0C10',\r\n                                        transparent: true,\r\n                                        opacity: 1,\r\n                                        depthWrite: false,\r\n                                        polygonOffset: true,\r\n                                        polygonOffsetFactor: 1,\r\n                                        polygonOffsetUnits: 1\r\n                                    });\r\n                                                                const baseMesh = new THREE.Mesh(child.geometry, baseMaterial);\r\n                                child.parent.add(baseMesh);\r\n\r\n                                                                    const wireframeGeom = new THREE.WireframeGeometry(child.geometry);\r\n                                \r\n                                const wireframeMaterial = new THREE.LineBasicMaterial({\r\n                                    color: '#787a7b',\r\n                                    linewidth: 1                                });\r\n                                const wireframeLines = new THREE.LineSegments(wireframeGeom, wireframeMaterial);\r\n                                child.parent.add(wireframeLines);\r\n\r\n                                child.visible = false;\r\n                                                    }\r\n                    });\r\n                    \r\n                    const box = new THREE.Box3().setFromObject(model);\r\n                    const center = box.getCenter(new THREE.Vector3());\r\n                    const size = box.getSize(new THREE.Vector3());\r\n                    model.position.x -= center.x;\r\n                    model.position.z -= center.z;\r\n                    model.position.y -= (box.min.y + size.y \/ 2);\r\n                    \r\n                    if (false) {\r\n                        gsap.to(modelContainer.rotation, {\r\n                            y: \"+=\" + (Math.PI * 2),\r\n                            duration: 10,\r\n                            repeat: -1,\r\n                            ease: \"none\"\r\n                        });\r\n                    }\r\n                    \r\n                    const fov = camera.fov * (Math.PI \/ 180);\r\n                    const modelHeight = size.y;\r\n                    initialCameraPosition.z = (modelHeight \/ 2) \/ Math.tan(fov \/ 2) * 1.4;\r\n                    camera.position.set(initialCameraPosition.x, initialCameraPosition.y, initialCameraPosition.z);\r\n                },\r\n                undefined,\r\n                function(error) {\r\n                }\r\n            );\r\n\r\n            container.addEventListener('mouseleave', hideAllBlocks);\r\n\r\n            window.addEventListener('resize', () => {\r\n                camera.aspect = container.clientWidth \/ container.clientHeight;\r\n                camera.updateProjectionMatrix();\r\n                renderer.setSize(container.clientWidth, container.clientHeight);\r\n                updateCanvasRect();\r\n            });\r\n\r\n            window.addEventListener('scroll', updateCanvasRect);\r\n            \r\n            function animate() {\r\n                requestAnimationFrame(animate);\r\n                renderer.render(scene, camera);\r\n            }\r\n            animate();\r\n\r\n            document.body.addEventListener('mousemove', function(event) {\r\n                if (!model || !modelContainer || !initialCameraPosition.z) return;\r\n                const mouseX = event.clientX;\r\n                const mouseY = event.clientY;\r\n\r\n                if (mouseX >= canvasRect.left && mouseX <= canvasRect.right && mouseY >= canvasRect.top && mouseY <= canvasRect.bottom) {\r\n                    if (messageBlocks.length > 0) {\r\n                        const relativeMouseY = mouseY - canvasRect.top;\r\n                        const adjustedHeight = canvasRect.height - messZoneTop - messZoneBottom;\r\nconst adjustedY = relativeMouseY - messZoneTop;\r\n\r\nif (adjustedY < 0 || adjustedY > adjustedHeight) {\r\n    if (!isFirefox) {\r\n        hideAllBlocks(); \/\/ En dehors des zones actives\r\n    }\r\n    return;\r\n}\r\n\r\nconst zoneSize = adjustedHeight \/ messageBlocks.length;\r\nlet zoneIndex = Math.floor(adjustedY \/ zoneSize);\r\nzoneIndex = Math.max(0, Math.min(messageBlocks.length - 1, zoneIndex));\r\n\r\n\r\n                        if (hoveredBlockIndex !== -1) {\r\n                            if (currentMessageIndex !== hoveredBlockIndex) {\r\n                                showMessageBlock(hoveredBlockIndex);\r\n                                currentMessageIndex = hoveredBlockIndex;\r\n                            }\r\n                            const group = messageBlocks[hoveredBlockIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[hoveredBlockIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        } else {\r\n                            if (currentMessageIndex !== zoneIndex || lastHoveredBlockIndex !== -1) {\r\n                                showMessageBlock(zoneIndex);\r\n                                currentMessageIndex = zoneIndex;\r\n                            }\r\n                            lastHoveredBlockIndex = -1;\r\n                            const group = messageBlocks[zoneIndex] || [];\r\n                            const isHovering = group.some(el => {\r\n                                const blockRect = el.getBoundingClientRect();\r\n                                return mouseX >= blockRect.left && mouseX <= blockRect.right &&\r\n                                       mouseY >= blockRect.top && mouseY <= blockRect.bottom;\r\n                            });\r\n\r\n                            if (isHovering && !isHoveringBlock && hoveredBlockIndex === -1) {\r\n                                isHoveringBlock = true;\r\n                                const offsets = blockOffsets[zoneIndex] || { top: 0, bottom: 0, left: 0, right: 0 };\r\n                                const offsetX = (offsets.right - offsets.left) * initialCameraPosition.z * 0.5;\r\n                                const offsetY = (offsets.top - offsets.bottom) * initialCameraPosition.z * 0.5;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x + offsetX,\r\n                                    y: initialCameraPosition.y + offsetY,\r\n                                    z: initialCameraPosition.z * zoomMessageFactor,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            } else if (!isHovering && isHoveringBlock) {\r\n                                isHoveringBlock = false;\r\n                                gsap.to(camera.position, {\r\n                                    x: initialCameraPosition.x,\r\n                                    y: initialCameraPosition.y,\r\n                                    z: initialCameraPosition.z,\r\n                                    duration: zoomMessageSpeed,\r\n                                    ease: \"power2.out\"\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                                        const relativeMouseX = ((mouseX - canvasRect.left) \/ canvasRect.width) * 2 - 1;\r\n                    const relativeMouseY = ((mouseY - canvasRect.top) \/ canvasRect.height) * 2 - 1;\r\n                    const invert = 1;\r\n                    const tiltFactorX = invert * relativeMouseX;\r\n                    let tiltFactorY = invert * relativeMouseY;\r\n                    let tiltIntensityY = 1;\r\n                    if (tiltFactorY > 0) {\r\n                        tiltIntensityY = 0.2;\r\n                    } else if (tiltFactorY < 0) {\r\n                        tiltIntensityY = 0.5;\r\n                    }\r\n                    tiltFactorY *= tiltIntensityY;\r\n                    gsap.to(modelContainer.rotation, {\r\n                        x: tiltFactorY * -0.5,\r\n                        y: tiltFactorX * -0.5,\r\n                        duration: 0.5,\r\n                        ease: \"power2.out\"\r\n                    });\r\n                                    }\r\n            });\r\n\r\n            document.body.addEventListener('mouseout', function(event) {\r\n\t\t\t\tif (isMobile) return;\r\n                if (event.relatedTarget === null || !container.contains(event.relatedTarget)) {\r\n                    hideAllBlocks();\r\n                }\r\n            });\r\n        });\r\n    <\/script>\r\n    \n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3>Chirurgie plastique du visage<\/h3>\n<div class=\"%22et_pb_button_module_wrapper\" et_pb_button_0_tb_header_wrapper et_pb_module%22><a class=\"%22et_pb_button\" et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button%22 href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">En savoir plus<\/a><\/div>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3><a href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/face-plastic-surgery\/%22\/\">Chirurgie plastique du visage <span style=\"%22position:\" relative; top: 2px;%22>\u2192<\/span><\/a><\/h3>\n<p>\"content_last_edited=\"on|phone\" disabled_on=\"off|off|off\" module_class=\"threedmessage-1 threedmcontainer\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" text_font=\"-et_global_body_font|300|||||||\" text_text_color=\"#FFFFFF\" header_3_text_align=\"left\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"30px\" max_width=\"200px\" max_width_tablet=\"200px\" max_width_phone=\"100px\" max_width_last_edited=\"on|phone\" custom_margin=\"||||false|false\" header_3_font_size_tablet=\"25px\" header_3_font_size_phone=\"19px\" header_3_font_size_last_edited=\"on|phone\" custom_css_main_element=\"position : absolute;||top : 220px;||left : 70%;||width : fit-content !important ;\" text_text_shadow_style=\"preset2\u2033 text_text_shadow_color=\"#000000\u2033 header_3_text_shadow_style=\"preset2\u2033 header_3_text_shadow_color=\"#000000\u2033 global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"position : absolute;||top : 30px;||right : 10%;||width : fit-content !important ;\" custom_css_main_element_tablet=\"position : absolute;||top : 80px;||right : 10%;||width : fit-content !important ;\"]<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png\" class=\"tilting-sonar\" \/><\/p>\n<h3>Chirurgie plastique du visage<\/h3>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper  et_pb_module\"><a class=\"et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button\" href=\"https:\/\/drcuno.aif-staging.com\/fr\/face-plastic-surgery\/\">En savoir plus<\/a><\/div>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<p><img class=\"%22tilting-sonar%22\" src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" \/><\/p>\n<h3>Interventions chirurgicales de l\u2019oreille<\/h3>\n<div class=\"%22et_pb_button_module_wrapper\" et_pb_button_0_tb_header_wrapper et_pb_module%22><a class=\"%22et_pb_button\" et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button%22 href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">En savoir plus<\/a><\/div>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3><a href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/face-plastic-surgery\/%22\/\">Interventions chirurgicales de l\u2019oreille <span style=\"%22position:\" relative; top: 2px;%22>\u2192<\/span><\/a><\/h3>\n<p>\"content_last_edited=\"on|phone\" disabled_on=\"off|off|off\" module_class=\"threedmessage-2 threedmcontainer\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" text_font=\"-et_global_body_font|300|||||||\" text_text_color=\"#FFFFFF\" header_3_text_align=\"left\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"30px\" text_orientation=\"right\" max_width=\"200px\" max_width_tablet=\"200px\" max_width_phone=\"100px\" max_width_last_edited=\"on|phone\" custom_margin=\"||||false|false\" header_3_font_size_tablet=\"25px\" header_3_font_size_phone=\"19px\" header_3_font_size_last_edited=\"on|phone\" custom_css_main_element=\"position : absolute;||top : 720px;||left : 20%;||width : fit-content !important ;\" text_text_shadow_style=\"preset2\u2033 text_text_shadow_color=\"#000000\u2033 header_3_text_shadow_style=\"preset2\u2033 header_3_text_shadow_color=\"#000000\u2033 global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"position : absolute;||top : 200px;||left : 10%;||width : fit-content !important ;\" custom_css_main_element_tablet=\"position : absolute;||top : 300px;||left : 10%;||width : fit-content !important ;\"]<img decoding=\"async\" class=\"tilting-sonar\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png\" \/><\/p>\n<h3>Interventions chirurgicales de l\u2019oreille<\/h3>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper  et_pb_module\"><a class=\"et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button\" href=\"https:\/\/drcuno.aif-staging.com\/fr\/face-plastic-surgery\/\">En savoir plus<\/a><\/div>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3>Rhinoplastie et proc\u00e9dures nasales<\/h3>\n<div class=\"%22et_pb_button_module_wrapper\" et_pb_button_0_tb_header_wrapper et_pb_module%22><a class=\"%22et_pb_button\" et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button%22 href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">En savoir plus<\/a><\/div>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3><a href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">Rhinoplastie et proc\u00e9dures nasales <span style=\"%22position:\" relative; top: 2px;%22>\u2192<\/span><\/a><\/h3>\n<p>\"content_last_edited=\"on|phone\" disabled_on=\"off|off|off\" module_class=\"threedmessage-2 threedmcontainer zoneleft20\u2033 _builder_version=\"4.27.4\u2033 _module_preset=\"default\" text_font=\"-et_global_body_font|300|||||||\" text_text_color=\"#FFFFFF\" header_3_text_align=\"left\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"30px\" max_width=\"200px\" max_width_tablet=\"200px\" max_width_phone=\"100px\" max_width_last_edited=\"on|phone\" custom_margin=\"||||false|false\" header_3_font_size_tablet=\"25px\" header_3_font_size_phone=\"19px\" header_3_font_size_last_edited=\"on|phone\" custom_css_main_element=\"position : absolute;||top : 550px;||left : 70%;||width : fit-content !important ;\" text_text_shadow_style=\"preset2\u2033 text_text_shadow_color=\"#000000\u2033 header_3_text_shadow_style=\"preset2\u2033 header_3_text_shadow_color=\"#000000\u2033 global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"position : absolute;||top : 170px;||right : 10%;||width : fit-content !important ;\" custom_css_main_element_tablet=\"position : absolute;||top : 270px;||right : 10%;||width : fit-content !important ;\"]<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png\" class=\"tilting-sonar\" \/><\/p>\n<h3>Rhinoplastie et interventions sur le nez<\/h3>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper  et_pb_module\"><a class=\"et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button\" href=\"https:\/\/drcuno.aif-staging.com\/fr\/primary-rhinolasty\/\">En savoir plus<\/a><\/div>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3>Chirurgie plastique du cou<\/h3>\n<div class=\"%22et_pb_button_module_wrapper\" et_pb_button_0_tb_header_wrapper et_pb_module%22><a class=\"%22et_pb_button\" et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button%22 href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">En savoir plus<\/a><\/div>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3><a href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/face-plastic-surgery\/%22\/\">Chirurgie plastique du cou <span style=\"%22position:\" relative; top: 2px;%22>\u2192<\/span><\/a><\/h3>\n<p>\"content_last_edited=\"on|desktop\" disabled_on=\"off|off|off\" module_class=\"threedmessage-3 threedmcontainer\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" text_font=\"-et_global_body_font|300|||||||\" text_text_color=\"#FFFFFF\" header_3_text_align=\"right\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"30px\" text_orientation=\"right\" max_width=\"200px\" max_width_tablet=\"200px\" max_width_phone=\"100px\" max_width_last_edited=\"on|phone\" custom_margin=\"||||false|false\" header_3_font_size_tablet=\"25px\" header_3_font_size_phone=\"19px\" header_3_font_size_last_edited=\"on|phone\" custom_css_main_element=\"position : absolute;||top : 950px;||left : 20%;||width : fit-content !important ;\" text_text_shadow_style=\"preset2\u2033 text_text_shadow_color=\"#000000\u2033 header_3_text_shadow_style=\"preset2\u2033 header_3_text_shadow_color=\"#000000\u2033 global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"position : absolute;||top : 330px;||left : 10%;||width : fit-content !important ;\" custom_css_main_element_tablet=\"position : absolute;||top : 470px;||left : 10%;||width : fit-content !important ;\"]<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png\" class=\"tilting-sonar\" \/><\/p>\n<h3>Chirurgie plastique du cou<\/h3>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper  et_pb_module\"><a class=\"et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button\" href=\"https:\/\/drcuno.aif-staging.com\/fr\/face-plastic-surgery\/\">En savoir plus<\/a><\/div>\n<p>[\/et_pb_text][et_pb_text content_tablet=\u201d<\/p>\n<p><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3>M\u00e9decine esth\u00e9tique non chirurgicale<\/h3>\n<div class=\"%22et_pb_button_module_wrapper\" et_pb_button_0_tb_header_wrapper et_pb_module%22><a class=\"%22et_pb_button\" et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button%22 href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/primary-rhinolasty\/%22\/\">En savoir plus<\/a><\/div>\n<p>\u201d t\u00e9l\u00e9phone_contenu=\u201d<img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png%22\" class=\"%22tilting-sonar%22\" \/><\/p>\n<h3><a href=\"\/fr\/%22https:\/\/drcuno.aif-staging.com\/injection-rhinoplasty\/%22\/\">M\u00e9decine esth\u00e9tique non chirurgicale <span style=\"%22position:\" relative; top: 2px;%22>\u2192<\/span><\/a><\/h3>\n<p>\"content_last_edited=\"on|phone\" disabled_on=\"off|off|off\" module_class=\"threedmessage-4 threedmcontainer\" _builder_version=\"4.27.4\u2033 _module_preset=\"default\" text_font=\"-et_global_body_font|300|||||||\" text_text_color=\"#FFFFFF\" header_3_text_align=\"left\" header_3_text_color=\"#FFFFFF\" header_3_font_size=\"30px\" max_width=\"200px\" max_width_tablet=\"200px\" max_width_phone=\"100px\" max_width_last_edited=\"on|phone\" custom_margin=\"||||false|false\" header_3_font_size_tablet=\"25px\" header_3_font_size_phone=\"19px\" header_3_font_size_last_edited=\"on|phone\" custom_css_main_element=\"position : absolute;||top : 1200px;||left : 70%;||width : fit-content !important ;\" text_text_shadow_style=\"preset2\u2033 text_text_shadow_color=\"#000000\u2033 header_3_text_shadow_style=\"preset2\u2033 header_3_text_shadow_color=\"#000000\u2033 global_colors_info=\"{}\" custom_css_main_element_last_edited=\"on|phone\" custom_css_main_element_phone=\"position : absolute;||top : 450px;||right : 10%;||width : fit-content !important ;\" custom_css_main_element_tablet=\"position : absolute;||top : 520px;||right : 10%;||width : fit-content !important ;\"]<img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/sonar-icon.png\" class=\"tilting-sonar\" \/><\/p>\n<h3>M\u00e9decine esth\u00e9tique non chirurgicale<\/h3>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper  et_pb_module\"><a class=\"et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_light sonar-button\" href=\"https:\/\/drcuno.aif-staging.com\/fr\/injection-rhinoplasty\/\">En savoir plus<\/a><\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 use_custom_gutter=\u201don\u201d gutter_width=\u201d1\u2033 specialty=\u201don\u201d custom_padding_last_edited=\u201don|phone\u201d padding_top_1=\u201d0px\u201d padding_top_2=\u201d0px\u201d padding_right_1=\u201d0px\u201d padding_right_2=\u201d0px\u201d padding_bottom_1=\u201d0px\u201d padding_bottom_2=\u201d0px\u201d padding_left_1=\u201d0px\u201d padding_left_2=\u201d0px\u201d padding_top_bottom_link_1=\u201dfalse\u201d padding_top_bottom_link_2=\u201dtrue\u201d padding_left_right_link_1=\u201dtrue\u201d padding_left_right_link_2=\u201dtrue\u201d padding_2_tablet=\u201d50px|0px|50px|0px|true|true\u201d padding_2_phone=\u201d40px||40px||true|false\u201d padding_2_last_edited=\u201don|tablet\u201d module_class_2=\u201dgsap-diapo-up play-again revert\u201d module_class=\u201dvcenter-left-col\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d background_color=\u201d#f1f1f1\u2033 inner_width=\u201d100%\u201d inner_width_tablet=\u201d100%\u201d inner_width_phone=\u201d100%\u201d inner_width_last_edited=\u201don|phone\u201d inner_max_width=\u201d100%\u201d inner_max_width_tablet=\u201d1280px\u201d inner_max_width_phone=\u201d1280px\u201d inner_max_width_last_edited=\u201don|tablet\u201d custom_margin=\u201d0px||0px||false|false\u201d custom_padding=\u201d0px|0px|0px|0px|false|true\u201d custom_padding_tablet=\u201d0px|0px|0px|0px|false|true\u201d custom_padding_phone=\u201d0px|0px||0px|false|true\u201d custom_css_main_element=\u201dz-index: 0 !important;\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d1_3\u2033 _builder_version=\u201d4.16\u2033 custom_padding=\u201d|||\u201d global_colors_info=\u201d{}\u201d custom_padding__hover=\u201d|||\u201d][et_pb_image src=\u201dhttps:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/cabinet-de-chirurgie-geneve-suisse.jpg\u201d alt=\u201dcabinet de chirurgie faciale Gen\u00e8ve Suisse\u201d title_text=\u201dcabinet de chirurgie faciale Gen\u00e8ve Suisse\u201d disabled_on=\u201don|on|off\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d animation_style=\u201dslide\u201d animation_direction=\u201dleft\u201d global_colors_info=\u201d{}\u201d][\/et_pb_image][\/et_pb_column][et_pb_column type=\u201d2_3\u2033 specialty_columns=\u201d2\u2033 _builder_version=\u201d4.16\u2033 custom_padding=\u201d|||\u201d global_colors_info=\u201d{}\u201d custom_padding__hover=\u201d|||\u201d][et_pb_row_inner custom_padding_last_edited=\u201don|tablet\u201d module_class=\u201dvcentered-col\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d|10%||10%|false|true\u201d custom_padding_tablet=\u201d|10%||10%|false|true\u201d custom_padding_phone=\u201d|10%||10%|false|true\u201d global_colors_info=\u201d{}\u201d][et_pb_column_inner saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d header_2_text_align=\u201dleft\u201d header_2_font_size=\u201d80px\u201d max_width=\u201d550px\u201d max_width_tablet=\u201d500px\u201d max_width_phone=\u201d500px\u201d max_width_last_edited=\u201doff|desktop\u201d module_alignment=\u201dleft\u201d custom_margin_tablet=\u201d||20px||false|false\u201d custom_margin_phone=\u201d||10px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d header_2_font_size_tablet=\u201d55px\u201d header_2_font_size_phone=\u201d35px\u201d header_2_font_size_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<h2>Une clinique de chirurgie faciale haut de gamme \u00e0 Gen\u00e8ve<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d450px\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Id\u00e9alement situ\u00e9 \u00e0 <strong>Gen\u00e8ve<\/strong>Notre clinique est un centre de pointe pour <strong>chirurgie plastique faciale haut de gamme<\/strong>Il accueille des patients de Suisse et d'ailleurs.<\/p>\n<p>[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner column_structure=\u201d1_2,1_2\u2033 custom_padding_last_edited=\u201don|tablet\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d min_height=\u201d135.6px\u201d custom_padding=\u201d0px|10%||10%|false|true\u201d custom_padding_tablet=\u201d40px|10%||10%|false|true\u201d custom_padding_phone=\u201d20px||||false|true\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201don|phone\u201d custom_css_main_element_tablet=\u201ddisplay: flex;\u201d custom_css_main_element_phone=\u201ddisplay: flex;||flex-wrap: wrap;\u201d][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Situ\u00e9 au c\u0153ur de Gen\u00e8ve<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]<\/p>\n<p>Facilement accessible, il offre un environnement discret et accueillant.<\/p>\n<p>[\/et_pb_text][\/et_pb_column_inner][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d custom_margin_tablet=\u201d||15px||false|false\u201d custom_margin_phone=\u201d25px||15px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Uncompromising safety &amp; comfort[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Strict medical standards for a secure and smooth experience.[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner column_structure=\u201d1_2,1_2\u2033 custom_padding_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d min_height=\u201d135.6px\u201d custom_padding=\u201d0px|10%||10%|false|true\u201d custom_padding_tablet=\u201d10px|10%||10%|false|true\u201d custom_padding_phone=\u201d0px||||false|true\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201don|phone\u201d custom_css_main_element_tablet=\u201ddisplay: flex;\u201d custom_css_main_element_phone=\u201ddisplay: flex;||flex-wrap: wrap;\u201d][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]State-of-the-art technology[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Cutting-edge equipment ensures precision and optimal results.[\/et_pb_text][\/et_pb_column_inner][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d custom_margin_tablet=\u201d||15px||false|false\u201d custom_margin_phone=\u201d25px||15px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Experienced &amp; specialized team[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]A dedicated team committed to excellence in patient care.[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner column_structure=\u201d1_2,1_2\u2033 custom_padding_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d min_height=\u201d135.6px\u201d custom_padding=\u201d0px|10%||10%|false|true\u201d custom_padding_tablet=\u201d10px|10%||10%|false|true\u201d custom_padding_phone=\u201d0px||||false|true\u201d global_colors_info=\u201d{}\u201d custom_css_main_element_last_edited=\u201don|phone\u201d custom_css_main_element_tablet=\u201ddisplay: flex;\u201d custom_css_main_element_phone=\u201ddisplay: flex;||flex-wrap: wrap;\u201d][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Tailored treatments for natural results[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Personalized procedures designed to enhance your unique features.[\/et_pb_text][\/et_pb_column_inner][et_pb_column_inner type=\u201d1_2\u2033 saved_specialty_column_type=\u201d2_3\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_font=\u201d|600|||||||\u201d text_text_color=\u201d#000000\u2033 text_font_size=\u201d24px\u201d text_line_height=\u201d1.2em\u201d header_2_font=\u201d\u2013et_global_body_font|300|||||||\u201d header_2_text_color=\u201d#FFFFFF\u201d header_2_line_height=\u201d1.5em\u201d max_width=\u201d220px\u201d custom_margin=\u201d||15px||false|false\u201d custom_margin_tablet=\u201d||15px||false|false\u201d custom_margin_phone=\u201d25px||15px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d text_font_size_tablet=\u201d24px\u201d text_font_size_phone=\u201d20px\u201d text_font_size_last_edited=\u201don|desktop\u201d header_2_font_size_tablet=\u201d\u201d header_2_font_size_phone=\u201d20px\u201d header_2_font_size_last_edited=\u201don|desktop\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Continuous support at every step[\/et_pb_text][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d max_width=\u201d220px\u201d text_orientation_tablet=\u201d\u201d text_orientation_phone=\u201dcenter\u201d text_orientation_last_edited=\u201don|phone\u201d module_alignment_tablet=\u201d\u201d module_alignment_phone=\u201dcenter\u201d module_alignment_last_edited=\u201don|phone\u201d global_colors_info=\u201d{}\u201d]Personalized guidance and continuous care throughout your journey.[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][\/et_pb_column][\/et_pb_section][et_pb_section fb_built=\u201d1\u2033 custom_padding_last_edited=\u201don|phone\u201d _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_margin=\u201d10px||10px||true|false\u201d custom_padding=\u201d40px||40px||true|false\u201d custom_padding_tablet=\u201d20px||20px||false|false\u201d custom_padding_phone=\u201d20px||20px||false|false\u201d global_colors_info=\u201d{}\u201d][et_pb_row _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d custom_padding=\u201d0px||||false|false\u201d global_colors_info=\u201d{}\u201d][et_pb_column type=\u201d4_4\u2033 _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d global_colors_info=\u201d{}\u201d][et_pb_text _builder_version=\u201d4.27.4\u2033 _module_preset=\u201ddefault\u201d text_text_color=\u201d#000000\u2033 header_2_text_align=\u201dcenter\u201d header_2_text_color=\u201d#000000\u2033 header_2_font_size=\u201d64px\u201d header_3_font=\u201d|300|||||||\u201d header_3_text_color=\u201d#000000\u2033 header_3_font_size=\u201d50px\u201d header_3_line_height=\u201d1.1em\u201d text_orientation=\u201dcenter\u201d custom_margin_tablet=\u201d\u201d custom_margin_phone=\u201d||14px||false|false\u201d custom_margin_last_edited=\u201don|phone\u201d custom_padding=\u201d20px||||false|false\u201d link_option_url=\u201dhttps:\/\/drcuno.aif-staging.com\/contact-us\/\u201d header_2_font_size_tablet=\u201d50px\u201d header_2_font_size_phone=\u201d35px\u201d header_2_font_size_last_edited=\u201don|phone\u201d header_3_font_size_tablet=\u201d35px\u201d header_3_font_size_phone=\u201d28px\u201d header_3_font_size_last_edited=\u201don|phone\u201d custom_css_main_element=\u201dwidth: fit-content;||margin: auto;\u201d border_color_top=\u201d#FFFFFF\u201d global_colors_info=\u201d{}\u201d content__hover_enabled=\u201don|hover\u201d content__hover=\u201d<\/p>\n<div class=\"%22to-italic-block\" to-bold-block%22><img src=\"%22https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-hover.png%22\" class=\"%22book%22\" \/><\/p>\n<h2><span class=\"%22to-italic\" to-bold%22>R\u00e9server une consultation<\/span><\/h2>\n<\/div>\n<p>&#8220;]<\/p>\n<div class=\"to-italic-block to-bold-block\">\n<p><img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar.png\" class=\"book\" \/><\/p>\n<h2><span class=\"to-italic to-bold\">R\u00e9server une consultation<\/span><\/h2>\n<\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>","protected":false},"excerpt":{"rendered":"<p>Dr. Alexander Cuno\nChirurgien plasticien du visage et ORL \u00e0 Gen\u00e8ve\nEsth\u00e9tique raffin\u00e9e et excellence chirurgicale    <!-- HTML -->\r\n    <div class=\"consultation-block\" onclick=\"window.location.href='\/contact-us\/';\">\r\n        <div class=\"line\">\r\n            <span class=\"arrow-head\"><\/span>\r\n        <\/div>\r\n        <img decoding=\"async\" src=\"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white.png\" alt=\"Book a consultation\" class=\"consultation-icon\">\r\n        <p class=\"consultation-text\">R\u00e9server une consultation<\/p>\r\n    <\/div>\r\n\r\n    <!-- CSS -->\r\n    <style>\r\n        .consultation-block {\r\n            position: relative;\r\n            width: 100px;\r\n            height: 180px;\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            justify-content: center;\r\n            text-align: center;\r\n            overflow: hidden;\r\n            cursor: pointer;\r\n            background-color: transparent;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-left: auto;\r\n        }\r\n\r\n        .line {\r\n            position: absolute;\r\n            top: 10px;\r\n            left: calc(50% - 0.5px);\r\n            width: 1px;\r\n            height: 35px;\r\n            background-color: #fff;\r\n            will-change: top;\r\n\t\t\ttransform: translateX(-50%);\r\n        }\r\n\r\n        .arrow-head {\r\n            position: absolute;\r\n            width: 8px;\r\n            height: 8px;\r\n            top: -5px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            background: url('https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/06\/arrow-top-2.png') no-repeat center center;\r\n            background-size: contain;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n        }\r\n\r\n        .consultation-icon {\r\n            width: 35px;\r\n            height: 35px;\r\n            transition: transform 0.15s ease;\r\n        }\r\n\r\n        .consultation-text {\r\n            font-weight: bold;\r\n            margin-top: 5px;\r\n            color: #fff;\r\n            font-size: 13px !important;\r\n            transition: opacity 0.3s ease;\r\n            line-height: 1.3em !important;\r\n        }\r\n\r\n        .consultation-block:hover .consultation-text {\r\n            opacity: 1;\r\n        }\r\n\r\n        .consultation-block:hover .consultation-icon {\r\n            transform: scale(1.1);\r\n        }\r\n    <\/style>\r\n\r\n    <!-- JS -->\r\n    <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n        const block = document.querySelector('.consultation-block');\r\n        const line = document.querySelector('.line');\r\n        const icon = document.querySelector('.consultation-icon');\r\n        const arrowHead = document.querySelector('.arrow-head');\r\n\r\n        let lineTimeline = null;\r\n        let arrowTween = null;\r\n        let iconTween = null;\r\n\r\n        block.addEventListener('mouseenter', () => {\r\n            \/\/ Stop les animations pr\u00e9c\u00e9dentes\r\n            if (lineTimeline) lineTimeline.kill();\r\n            if (arrowTween) arrowTween.kill();\r\n            if (iconTween) iconTween.kill();\r\n\r\n            \/\/ Cr\u00e9e une nouvelle timeline pour la ligne avec rebond\r\n            lineTimeline = gsap.timeline();\r\n\r\n            lineTimeline.to(line, {\r\n                duration: 0.5,\r\n                top: '147px',\r\n                ease: 'power2.out'\r\n            }).to(line, {\r\n                duration: 0.2,\r\n                top: '144px',\r\n                ease: 'power1.out'\r\n            }, \">0\");\r\n\r\n            \/\/ Fl\u00e8che : apparition diff\u00e9r\u00e9e\r\n            arrowTween = gsap.to(arrowHead, {\r\n                delay: 0.4,\r\n                duration: 0.2,\r\n                opacity: 1,\r\n                ease: 'power1.out'\r\n            });\r\n\r\n            \/\/ Ic\u00f4ne : changement rapide\r\n            iconTween = gsap.to(icon, {\r\n                duration: 0.1,\r\n                onComplete: () => {\r\n                    icon.src = \"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white-hover.png\";\r\n                }\r\n            });\r\n        });\r\n\r\n        block.addEventListener('mouseleave', () => {\r\n            \/\/ Stop les animations pr\u00e9c\u00e9dentes\r\n            if (lineTimeline) lineTimeline.kill();\r\n            if (arrowTween) arrowTween.kill();\r\n            if (iconTween) iconTween.kill();\r\n\r\n            \/\/ Ligne retour vers le haut\r\n            lineTimeline = gsap.timeline();\r\n\r\n            lineTimeline.to(line, {\r\n                duration: 0.2,\r\n                top: '10px',\r\n                ease: 'bounce.out'\r\n            });\r\n\r\n            \/\/ Fl\u00e8che disparition imm\u00e9diate\r\n            arrowTween = gsap.to(arrowHead, {\r\n                duration: 0.15,\r\n                opacity: 0\r\n            });\r\n\r\n            \/\/ Ic\u00f4ne retour\r\n            iconTween = gsap.to(icon, {\r\n                duration: 0.1,\r\n                onComplete: () => {\r\n                    icon.src = \"https:\/\/drcuno.aif-staging.com\/wp-content\/uploads\/2025\/05\/book-calendar-white.png\";\r\n                }\r\n            });\r\n        });\r\n    });\r\n<\/script>\r\n\r\n    La chirurgie du visage est une question de confiance. Voici pourquoi vous \u00eates entre de bonnes mains. Chirurgien plasticien du visage doublement certifi\u00e9, le Dr Cuno est sp\u00e9cialis\u00e9 en rhinoplastie primaire et de r\u00e9vision. Sa philosophie ? Naturel, pr\u00e9cision, art et discr\u00e9tion. Le Dr Cuno et son \u00e9quipe d'experts s'assureront que vous vous sentiez \u00e0 l'aise, inform\u00e9, [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":398,"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":1580,"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/15\/revisions\/1580"}],"wp:attachment":[{"href":"https:\/\/drcuno.aif-staging.com\/fr\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}