




{"id":131074,"date":"2025-10-23T14:53:59","date_gmt":"2025-10-23T14:53:59","guid":{"rendered":"https:\/\/hotelrunner.com\/?post_type=product&#038;p=131074"},"modified":"2026-04-10T14:24:14","modified_gmt":"2026-04-10T11:24:14","slug":"ruby","status":"publish","type":"product","link":"https:\/\/hotelrunner.com\/fr\/produits\/ruby\/","title":{"rendered":"Ruby"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"131074\" class=\"elementor elementor-131074 elementor-131089\" data-elementor-post-type=\"product\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8800f38 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8800f38\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-58598c4\" data-id=\"58598c4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a4d3107 elementor-widget elementor-widget-hr_label\" data-id=\"a4d3107\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_label.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <span class=\"hr-label\">Ruby<\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd0d412 elementor-widget elementor-widget-heading\" data-id=\"dd0d412\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Boostez votre agence de voyages avec des solutions financi\u00e8res d\u00e9di\u00e9es au tourisme.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6e6ba4c elementor-widget elementor-widget-text-editor\" data-id=\"6e6ba4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tRuby automatise les paiements avec des partenaires mondiaux, r\u00e9duit les co\u00fbts de r\u00e8glement, \u00e9limine les frictions, permet l&rsquo;int\u00e9gration instantan\u00e9e des h\u00f4tels et g\u00e9n\u00e8re de nouveaux revenus en am\u00e9liorant les marges gr\u00e2ce \u00e0 des flux financiers plus rapides, plus s\u00fbrs et plus intelligents.<br>\n<strong>D\u00e9veloppez-vous globalement. Gagnez plus. Payez instantan\u00e9ment.<\/strong>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-17828b4 elementor-widget elementor-widget-hr_button\" data-id=\"17828b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"btn-wrapper\" >\n            <a href=\"#ruby-form\" target=\"_self\" \n               class=\"btn custom has-no-icon\"\n               >\n                                <span class=\"btn-text\">Rejoignez Ruby d\u00e8s maintenant<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-0c4e807 elementor-reverse-mobile elementor-section-content-middle elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"0c4e807\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0e754f5\" data-id=\"0e754f5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-99587bb elementor-widget elementor-widget-heading\" data-id=\"99587bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">En collaboration avec les leaders du secteur financier<\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1aeb781 elementor-widget__width-auto elementor-widget elementor-widget-image\" data-id=\"1aeb781\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/visa.svg\" class=\"attachment-full size-full wp-image-130138\" alt=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f94b4f5 elementor-widget__width-auto elementor-widget elementor-widget-image\" data-id=\"f94b4f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/checkout.svg\" class=\"attachment-full size-full wp-image-130142\" alt=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-d2f2ebc elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile\" data-id=\"d2f2ebc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9f02771 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"9f02771\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Ruby_Hero_En-1.json&quot;,&quot;id&quot;:130216,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-55700a8 elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"55700a8\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3c9c673\" data-id=\"3c9c673\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e31702d elementor-widget elementor-widget-heading\" data-id=\"e31702d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pourquoi Ruby?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c3bb1e elementor-widget elementor-widget-text-editor\" data-id=\"1c3bb1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tLa finance, n\u00e9e pour le voyage.<br>\nDepuis des d\u00e9cennies, le secteur du voyage s&rsquo;appuie sur des outils financiers g\u00e9n\u00e9riques pour les paiements. Ruby change la donne.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-5898fac elementor-reverse-mobile elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5898fac\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-8a0eae9\" data-id=\"8a0eae9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2e6a26e elementor-widget elementor-widget-image\" data-id=\"2e6a26e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"1200\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/Ruby-Diagram-ES.webp\" class=\"attachment-full size-full wp-image-130918\" alt=\"Ruby-Diagram-ES\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/Ruby-Diagram-ES.webp 1200w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/Ruby-Diagram-ES-364x364.webp 364w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c05107 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"4c05107\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Mettez fin aux retards de r\u00e8glement, \u00e9liminez les frictions, r\u00e9duisez les co\u00fbts et unifiez la distribution mondiale gr\u00e2ce \u00e0 des paiements s\u00e9curis\u00e9s et instantan\u00e9s. Ruby est une infrastructure financi\u00e8re autonome et int\u00e9gr\u00e9e, con\u00e7ue pour le secteur du voyage. Elle repose sur la confiance, la rapidit\u00e9 et la transparence.<\/span><\/p><p><span style=\"font-weight: 400;\">Ruby est une infrastructure et une plateforme API-first sp\u00e9cialement con\u00e7ue pour les transactions touristiques complexes, caract\u00e9ris\u00e9es par des volumes \u00e9lev\u00e9s, plusieurs devises, plusieurs juridictions et des op\u00e9rations transfrontali\u00e8res.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-13a627d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"13a627d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6385527\" data-id=\"6385527\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4de9b90 elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"4de9b90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"31\" viewBox=\"0 0 30 31\" fill=\"none\"><g clip-path=\"url(#clip0_4611_7501)\"><path d=\"M3.04852 21.1261C2.19205 19.3363 1.75781 17.4158 1.75781 15.418C1.75781 8.11619 7.69822 2.17578 15 2.17578C17.901 2.17578 20.6592 3.10291 22.9373 4.81596L20.7455 5.10453C20.2642 5.16787 19.9255 5.60938 19.9888 6.09061C20.0521 6.57189 20.4936 6.91062 20.9749 6.84728L25.0998 6.30424C25.581 6.2409 25.9198 5.79939 25.8565 5.31816L25.3134 1.19328C25.25 0.712051 24.8085 0.373262 24.3273 0.436602H24.3272C23.846 0.499941 23.5072 0.941445 23.5706 1.42268L23.8149 3.27852C21.2689 1.42145 18.2118 0.417969 15 0.417969C10.9934 0.417969 7.22654 1.9782 4.39336 4.81133C1.56029 7.64451 0 11.4113 0 15.418C0 17.6805 0.492188 19.8563 1.46297 21.8848C1.6725 22.3227 2.19727 22.5078 2.63514 22.2983C3.07295 22.0888 3.25805 21.5639 3.04852 21.1261Z\" fill=\"#C92D49\"><\/path><path d=\"M23.1296 14.1072L23.569 13.8536C23.9893 13.6109 24.1334 13.0733 23.8907 12.653L21.8399 9.10092C21.5972 8.68057 21.0596 8.53648 20.6393 8.77924L20.1999 9.03295C19.1909 9.61549 17.9297 8.88728 17.9297 7.72221V7.21484C17.9297 6.72945 17.5362 6.33594 17.0508 6.33594H12.9492C12.4638 6.33594 12.0703 6.72945 12.0703 7.21484V7.72221C12.0703 8.88728 10.8091 9.61543 9.80009 9.03295L9.3607 8.77924C8.94035 8.53654 8.40281 8.68057 8.16011 9.10092L6.10933 12.653C5.86664 13.0733 6.01066 13.6109 6.43101 13.8536L6.8704 14.1072C7.87939 14.6898 7.87939 16.1461 6.8704 16.7287L6.43101 16.9823C6.01066 17.225 5.86658 17.7625 6.10933 18.1829L8.16011 21.735C8.40281 22.1553 8.94035 22.2994 9.3607 22.0566L9.80009 21.8029C10.8091 21.2204 12.0703 21.9486 12.0703 23.1137V23.6211C12.0703 24.1065 12.4638 24.5 12.9492 24.5H17.0508C17.5362 24.5 17.9297 24.1065 17.9297 23.6211V23.1137C17.9297 21.9487 19.1909 21.2205 20.1999 21.803L20.6393 22.0567C21.0596 22.2994 21.5972 22.1554 21.8399 21.735L23.8907 18.1829C24.1334 17.7626 23.9893 17.2251 23.569 16.9824L23.1296 16.7287C22.1206 16.1462 22.1206 14.6898 23.1296 14.1072ZM15 18.7871C13.1393 18.7871 11.6309 17.2787 11.6309 15.418C11.6309 13.5573 13.1393 12.0488 15 12.0488C16.8607 12.0488 18.3691 13.5573 18.3691 15.418C18.3691 17.2787 16.8607 18.7871 15 18.7871Z\" fill=\"#C92D49\"><\/path><path d=\"M28.537 8.95104C28.3275 8.51316 27.8027 8.32807 27.3649 8.5376C26.927 8.74713 26.7419 9.27189 26.9514 9.70977C27.8079 11.4996 28.2422 13.4201 28.2422 15.4179C28.2422 22.7197 22.3018 28.6601 15 28.6601C12.099 28.6601 9.34083 27.733 7.06265 26.0199L9.25452 25.7313C9.73576 25.668 10.0745 25.2265 10.0112 24.7453C9.94787 24.264 9.50636 23.9253 9.02513 23.9886L4.90019 24.5316C4.41896 24.595 4.08017 25.0365 4.14351 25.5177L4.68661 29.6426C4.74995 30.1238 5.19146 30.4626 5.67269 30.3993C6.15392 30.3359 6.49277 29.8944 6.42943 29.4132L6.18509 27.5574C8.73111 29.4144 11.7882 30.4179 15 30.4179C19.0066 30.4179 22.7735 28.8577 25.6066 26.0245C28.4397 23.1914 30 19.4246 30 15.4179C30 13.1554 29.5078 10.9796 28.537 8.95104Z\" fill=\"#C92D49\"><\/path><\/g><defs><clipPath id=\"clip0_4611_7501\"><rect width=\"30\" height=\"30\" fill=\"white\" transform=\"translate(0 0.417969)\"><\/rect><\/clipPath><\/defs><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tR\u00e8glements automatis\u00e9s\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tRapprochez instantan\u00e9ment les r\u00e9servations, les factures et les commissions avec une pr\u00e9cision totale et sans aucun effort manuel.\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-250985c\" data-id=\"250985c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-98eee07 elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"98eee07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"22\" viewBox=\"0 0 30 22\" fill=\"none\"><path d=\"M29.6729 14.2689L23.1099 8.64354C22.9738 8.52709 22.8071 8.45208 22.6297 8.4274C22.4523 8.40272 22.2715 8.42939 22.1087 8.50425C21.9459 8.57912 21.808 8.69905 21.7113 8.84985C21.6146 9.00065 21.5631 9.176 21.5629 9.35515V12.1678H11.2497C11.0011 12.1678 10.7626 12.2666 10.5868 12.4424C10.411 12.6183 10.3122 12.8567 10.3122 13.1054V16.8557C10.3122 17.1043 10.411 17.3428 10.5868 17.5186C10.7626 17.6944 11.0011 17.7932 11.2497 17.7932H21.5629V20.6059C21.5631 20.7851 21.6146 20.9604 21.7113 21.1112C21.808 21.262 21.9459 21.3819 22.1087 21.4568C22.2715 21.5317 22.4523 21.5583 22.6297 21.5337C22.8071 21.509 22.9738 21.434 23.1099 21.3175L29.6729 15.6921C29.7755 15.6041 29.8578 15.495 29.9143 15.3721C29.9708 15.2493 30 15.1157 30 14.9805C30 14.8453 29.9708 14.7118 29.9143 14.5889C29.8578 14.4661 29.7755 14.3569 29.6729 14.2689Z\" fill=\"#C92D49\"><\/path><path d=\"M19.6878 9.35517V5.60491C19.6878 5.35626 19.589 5.11778 19.4132 4.94196C19.2374 4.76613 18.9989 4.66735 18.7503 4.66735H8.43705V1.85466C8.43689 1.67551 8.3854 1.50016 8.28868 1.34936C8.19196 1.19856 8.05406 1.07863 7.8913 1.00377C7.72855 0.928898 7.54775 0.902228 7.37031 0.926911C7.19287 0.951595 7.02621 1.0266 6.89007 1.14305L0.327125 6.76843C0.224519 6.85645 0.142162 6.96561 0.0856978 7.08844C0.0292341 7.21127 0 7.34486 0 7.48004C0 7.61523 0.0292341 7.74881 0.0856978 7.87164C0.142162 7.99447 0.224519 8.10363 0.327125 8.19165L6.89007 13.817C7.02621 13.9335 7.19287 14.0085 7.37031 14.0332C7.54775 14.0579 7.72855 14.0312 7.8913 13.9563C8.05406 13.8815 8.19196 13.7615 8.28868 13.6107C8.3854 13.4599 8.43689 13.2846 8.43705 13.1054V10.2927H18.7503C18.9989 10.2927 19.2374 10.194 19.4132 10.0181C19.589 9.8423 19.6878 9.60383 19.6878 9.35517Z\" fill=\"#C92D49\"><\/path><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tPaiements internationaux instantan\u00e9s\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tPayez et recevez des paiements dans diff\u00e9rentes devises et sur diff\u00e9rents march\u00e9s sans d\u00e9lai ni friction li\u00e9e au change.\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-4bccf4e\" data-id=\"4bccf4e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-59dfb16 elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"59dfb16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"31\" viewBox=\"0 0 30 31\" fill=\"none\"><path d=\"M25.975 15.9805L22.225 14.1055C21.9213 13.9574 21.5879 13.8805 21.25 13.8805C20.9121 13.8805 20.5787 13.9574 20.275 14.1055L16.525 15.9805C16.1522 16.1556 15.8368 16.4331 15.6155 16.7805C15.3942 17.1279 15.2761 17.5311 15.275 17.943V19.668C15.2747 21.3393 15.7431 22.9773 16.6269 24.3958C17.5107 25.8143 18.7746 26.9566 20.275 27.693C20.5787 27.841 20.9121 27.918 21.25 27.918C21.5879 27.918 21.9213 27.841 22.225 27.693C23.7254 26.9566 24.9893 25.8143 25.8731 24.3958C26.7569 22.9773 27.2253 21.3393 27.225 19.668V17.943C27.2239 17.5311 27.1058 17.1279 26.8845 16.7805C26.6632 16.4331 26.3478 16.1556 25.975 15.9805ZM23.75 20.3305L21.25 22.8305C21.0742 23.006 20.8359 23.1046 20.5875 23.1046C20.3391 23.1046 20.1008 23.006 19.925 22.8305L18.675 21.5805C18.5829 21.4946 18.509 21.3911 18.4578 21.2761C18.4065 21.1611 18.379 21.037 18.3768 20.9111C18.3745 20.7852 18.3977 20.6602 18.4448 20.5435C18.492 20.4267 18.5622 20.3207 18.6512 20.2317C18.7402 20.1426 18.8463 20.0725 18.963 20.0253C19.0797 19.9782 19.2048 19.955 19.3307 19.9572C19.4565 19.9594 19.5807 19.987 19.6957 20.0382C19.8107 20.0895 19.9142 20.1634 20 20.2555L20.5875 20.843L22.5 19.0055C22.6825 18.9017 22.8947 18.8622 23.1023 18.8933C23.31 18.9244 23.5012 19.0244 23.6453 19.1771C23.7894 19.3299 23.878 19.5266 23.897 19.7357C23.916 19.9448 23.8642 20.1543 23.75 20.3305ZM13.4375 19.668V18.1055H7.5C7.25136 18.1055 7.0129 18.0067 6.83709 17.8309C6.66127 17.6551 6.5625 17.4166 6.5625 17.168C6.5625 16.9193 6.66127 16.6809 6.83709 16.5051C7.0129 16.3292 7.25136 16.2305 7.5 16.2305H13.8125C14.1908 15.4292 14.8177 14.7716 15.6 14.3555H7.5C7.25136 14.3555 7.0129 14.2567 6.83709 14.0809C6.66127 13.9051 6.5625 13.6666 6.5625 13.418C6.5625 13.1693 6.66127 12.9309 6.83709 12.7551C7.0129 12.5792 7.25136 12.4805 7.5 12.4805H17.5C17.6712 12.4824 17.8386 12.5312 17.984 12.6216C18.1295 12.7119 18.2474 12.8404 18.325 12.993L19.4375 12.4305C20.2978 12.0334 21.2676 11.9409 22.1875 12.168V5.91797C22.1842 5.33882 21.9527 4.78433 21.5432 4.3748C21.1336 3.96527 20.5791 3.73375 20 3.73047H5C4.42085 3.73375 3.86636 3.96527 3.45683 4.3748C3.0473 4.78433 2.81578 5.33882 2.8125 5.91797V25.918C2.81578 26.4971 3.0473 27.0516 3.45683 27.4611C3.86636 27.8707 4.42085 28.1022 5 28.1055H17.425C16.1697 27.0885 15.1594 25.802 14.4692 24.3414C13.7789 22.8808 13.4263 21.2835 13.4375 19.668ZM7.5 8.73047H17.5C17.7486 8.73047 17.9871 8.82924 18.1629 9.00506C18.3387 9.18087 18.4375 9.41933 18.4375 9.66797C18.4375 9.91661 18.3387 10.1551 18.1629 10.3309C17.9871 10.5067 17.7486 10.6055 17.5 10.6055H7.5C7.25136 10.6055 7.0129 10.5067 6.83709 10.3309C6.66127 10.1551 6.5625 9.91661 6.5625 9.66797C6.5625 9.41933 6.66127 9.18087 6.83709 9.00506C7.0129 8.82924 7.25136 8.73047 7.5 8.73047ZM11.25 23.1055H7.5C7.25136 23.1055 7.0129 23.0067 6.83709 22.8309C6.66127 22.6551 6.5625 22.4166 6.5625 22.168C6.5625 21.9193 6.66127 21.6809 6.83709 21.5051C7.0129 21.3292 7.25136 21.2305 7.5 21.2305H11.25C11.4986 21.2305 11.7371 21.3292 11.9129 21.5051C12.0887 21.6809 12.1875 21.9193 12.1875 22.168C12.1875 22.4166 12.0887 22.6551 11.9129 22.8309C11.7371 23.0067 11.4986 23.1055 11.25 23.1055Z\" fill=\"#C92D49\"><\/path><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tInfrastructure adapt\u00e9e aux politiques\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tCon\u00e7ue pour comprendre les r\u00e8gles sp\u00e9cifiques au voyage, les plans tarifaires et les annulations pour une v\u00e9ritable autonomie financi\u00e8re.\n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-80d2385 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"80d2385\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8118244\" data-id=\"8118244\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-1622954 elementor-reverse-mobile elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1622954\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-62b58ee\" data-id=\"62b58ee\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f259ca2 elementor-widget elementor-widget-heading\" data-id=\"f259ca2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Pr\u00e9configur\u00e9e avec des politiques et des r\u00e8gles sp\u00e9cifiques au secteur du voyage<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e5f428 elementor-widget elementor-widget-text-editor\" data-id=\"5e5f428\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tG\u00e9rez facilement les r\u00e9glementations, les flux de travail et les relations avec les partenaires propres \u00e0 ce secteur.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-314c996\" data-id=\"314c996\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0de50ef elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"0de50ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Policy.json&quot;,&quot;id&quot;:130519,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-d6b9358 elementor-section-content-middle elementor-reverse-tablet elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d6b9358\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-65a86fb\" data-id=\"65a86fb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-26ae692 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"26ae692\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Ruby_EmbeddedPayments_Ui2.json&quot;,&quot;id&quot;:130472,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-b62116c\" data-id=\"b62116c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7c1b851 elementor-widget__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"7c1b851\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Paiements et r\u00e8glements int\u00e9gr\u00e9s<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6e6781 elementor-widget elementor-widget-text-editor\" data-id=\"c6e6781\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tAutomatisez les flux financiers transfrontalier\u00e0 travers les fronti\u00e8res en temps r\u00e9el.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-ff9cd4f elementor-section-content-middle elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ff9cd4f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-df81c3b\" data-id=\"df81c3b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-abd1051 elementor-widget elementor-widget-heading\" data-id=\"abd1051\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Transactions multidevises optimis\u00e9es pour les op\u00e9rations de change<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcca355 elementor-widget elementor-widget-text-editor\" data-id=\"dcca355\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tR\u00e9duisez les co\u00fbts, acc\u00e9l\u00e9rez les transferts et am\u00e9liorez vos marges.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-91e539c\" data-id=\"91e539c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-006c3ad elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"006c3ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/MutliCurrencyen.json&quot;,&quot;id&quot;:131313,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-d7d8671 elementor-section-content-middle elementor-reverse-tablet elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d7d8671\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-63d40a5\" data-id=\"63d40a5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3f78db3 elementor-widget elementor-widget-video\" data-id=\"3f78db3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;play_on_mobile&quot;:&quot;yes&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;loop&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/Automated_En.webm\" autoplay=\"\" loop=\"\" muted=\"muted\" playsinline=\"\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-c87ddcf\" data-id=\"c87ddcf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-565de9f elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"565de9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Rapprochement automatis\u00e9<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5842078 elementor-widget elementor-widget-text-editor\" data-id=\"5842078\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tChaque transaction est suivie, appari\u00e9e et r\u00e9gl\u00e9e instantan\u00e9ment.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-86c52ea elementor-section-content-middle elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"86c52ea\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d181740\" data-id=\"d181740\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-072040a elementor-widget elementor-widget-heading\" data-id=\"072040a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Conformit\u00e9 int\u00e9gr\u00e9e<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75651b4 elementor-widget elementor-widget-text-editor\" data-id=\"75651b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tLes fonctions KYC (Know Your Customer), de pr\u00e9vention de la fraude et de gestion des politiques sont int\u00e9gr\u00e9es par d\u00e9faut.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-2a66c2b\" data-id=\"2a66c2b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a9dbdc7 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"a9dbdc7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Ruby_Built-inCompliance_Ui4_En-1.json&quot;,&quot;id&quot;:130335,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b3ee249 elementor-section-content-middle elementor-reverse-tablet elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b3ee249\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f99d540\" data-id=\"f99d540\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cdadbd8 elementor-widget elementor-widget-video\" data-id=\"cdadbd8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;play_on_mobile&quot;:&quot;yes&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;loop&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2025\/10\/Data_En.webm\" autoplay=\"\" loop=\"\" muted=\"muted\" playsinline=\"\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-534f9a3\" data-id=\"534f9a3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6d6f918 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"6d6f918\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Gestion des risques bas\u00e9e sur les donn\u00e9es<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06dcce7 elementor-widget elementor-widget-text-editor\" data-id=\"06dcce7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tLes signaux financiers et non financiers permettent d&rsquo;anticiper les risques avant qu&rsquo;ils ne se produisent.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0d06563 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0d06563\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09af6d5 ruby-bg\" data-id=\"09af6d5\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-60ac121 elementor-reverse-mobile elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"60ac121\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-88d70ef\" data-id=\"88d70ef\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b577c02 elementor-widget elementor-widget-heading\" data-id=\"b577c02\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Pr\u00eat \u00e0 optimiser vos paiements avec Ruby ?<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d4be15 elementor-widget elementor-widget-text-editor\" data-id=\"6d4be15\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tRencontrez nos experts en technologie financi\u00e8re chez HotelRunner et d\u00e9couvrez comment Ruby peut transformer votre entreprise de voyage.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c88bdd elementor-widget elementor-widget-hr_button\" data-id=\"1c88bdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"btn-wrapper\" >\n            <a href=\"#ruby-form\" target=\"_self\" \n               class=\"btn custom has-no-icon\"\n               >\n                                <span class=\"btn-text\">Rejoignez Ruby d\u00e8s maintenant<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-28b8b09 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"28b8b09\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9d3a118\" data-id=\"9d3a118\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-132fc57 elementor-reverse-mobile elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"132fc57\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-b8bfde4\" data-id=\"b8bfde4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ffce15b elementor-widget elementor-widget-heading\" data-id=\"ffce15b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Foire aux questions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-737290c elementor-widget elementor-widget-hr_faq\" data-id=\"737290c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_faq.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <!-- FAQ Schema -->\n            <script type=\"application\/ld+json\">{\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Qu'est-ce que Ruby ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Ruby est l'infrastructure financi\u00e8re autonome et int\u00e9gr\u00e9e d'HotelRunner, con\u00e7ue exclusivement pour le secteur du voyage. Elle permet des r\u00e8glements instantan\u00e9s, des paiements transparents, des rapprochements automatis\u00e9s, des op\u00e9rations de change et la conformit\u00e9 pour les transactions de voyage locales et transfrontali\u00e8res.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"En quoi Ruby se distingue-t-il des autres solutions de paiement ou de technologie financi\u00e8re ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Contrairement aux outils fintech g\u00e9n\u00e9riques con\u00e7us pour le commerce de d\u00e9tail, Ruby est sp\u00e9cialement con\u00e7u pour le secteur du voyage. Il comprend les r\u00e9servations, les annulations, les commissions et les r\u00e8gles tarifaires, automatisant ce que les autres ne peuvent pas faire. Chaque transaction est visible, de la r\u00e9servation au r\u00e8glement, avec une conformit\u00e9 int\u00e9gr\u00e9e qui s'adapte aux r\u00e9glementations locales, aux normes KYC et aux taux de change. En r\u00e9unissant les paiements, les politiques et les partenaires au sein d'une seule infrastructure, Ruby aide les agences de voyage \u00e0 se d\u00e9velopper \u00e0 l'\u00e9chelle mondiale gr\u00e2ce \u00e0 des finances autonomes et intelligentes en mati\u00e8re de voyage.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Quels probl\u00e8mes Ruby permet-il de r\u00e9soudre ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Ruby \u00e9limine les retards de r\u00e8glement, r\u00e9duit les co\u00fbts li\u00e9s aux op\u00e9rations de change, simplifie la conformit\u00e9 et pr\u00e9vient la fraude et les r\u00e9trofacturations. Il transforme traditionnellement les processus financiers manuels et risqu\u00e9s en flux automatis\u00e9s, s\u00e9curis\u00e9s et transparents.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Ruby g\u00e8re-t-il la conformit\u00e9 et le KYC ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"La conformit\u00e9 est int\u00e9gr\u00e9e \u00e0 l'infrastructure de Ruby, du KYC et de l'AML \u00e0 la pr\u00e9vention de la fraude, renforc\u00e9e par l'expertise sectorielle d'HotelRunner et fournie par des partenaires financiers de confiance.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Ruby peut-il traiter les paiements multidevises ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Absolument. Ruby est con\u00e7u pour les voyages internationaux. Il prend en charge les transactions multidevises et la gestion des op\u00e9rations de change, offrant ainsi \u00e0 ses partenaires flexibilit\u00e9 et contr\u00f4le sur les r\u00e8glements internationaux. Cela signifie qu'il n'y a plus de probl\u00e8mes li\u00e9s aux \u00e9carts entre les devises et les devises des cartes bancaires.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Comment Ruby am\u00e9liore-t-il la tr\u00e9sorerie des entreprises du secteur du voyage ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Ruby am\u00e9liore consid\u00e9rablement la tr\u00e9sorerie en proposant des r\u00e8glements instantan\u00e9s et en automatisant le rapprochement. En \u00e9liminant les retards traditionnels li\u00e9s aux virements bancaires et \u00e0 l'\u00e9mission de cartes bancaires virtuelles, il garantit que les fonds sont trait\u00e9s et rapproch\u00e9s instantan\u00e9ment au-del\u00e0 des fronti\u00e8res, ce qui permet aux agences de voyage, aux voyagistes et aux fournisseurs d'acc\u00e9der plus rapidement \u00e0 leur argent et d'am\u00e9liorer leur agilit\u00e9 financi\u00e8re globale.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Que signifie le fait que Ruby soit une infrastructure \u00ab financi\u00e8re int\u00e9gr\u00e9e \u00bb ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Cela signifie que la couche financi\u00e8re de Ruby est directement int\u00e9gr\u00e9e au c\u0153ur de l'exp\u00e9rience de voyage B2B, et non simplement ajout\u00e9e par-dessus. Cette unit\u00e9 de distribution et de paiement permet des flux financiers automatis\u00e9s en temps r\u00e9el \u00e0 travers les fronti\u00e8res. Gr\u00e2ce \u00e0 son int\u00e9gration, Ruby \u00e9limine les \u00e9tapes manuelles, int\u00e8gre la conformit\u00e9 par d\u00e9faut et applique les politiques et r\u00e8gles sp\u00e9cifiques au voyage d\u00e8s le premier jour, garantissant ainsi que toutes les transactions sont conformes aux r\u00e9glementations, aux flux de travail et aux exigences des partenaires propres au secteur du voyage. Les r\u00e8glements sont trait\u00e9s de mani\u00e8re transparente dans le cadre du processus de r\u00e9servation et de distribution.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"S'int\u00e8gre-t-il \u00e0 tous les syst\u00e8mes de r\u00e9servation ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Il est con\u00e7u pour r\u00e9unir la distribution et les paiements en une seule infrastructure transparente. Pour tous les partenaires de l'\u00e9cosyst\u00e8me HotelRunner (agences de voyage, fournisseurs, etc.), Ruby fonctionne comme une couche financi\u00e8re native de bout en bout, int\u00e9gr\u00e9e directement dans le contenu des voyages et les flux de r\u00e9servation.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Est-il s\u00e9curis\u00e9 ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Absolument. La s\u00e9curit\u00e9 et la conformit\u00e9 font partie int\u00e9grante de la conception de Ruby. En collaboration avec des institutions financi\u00e8res partenaires de confiance, il int\u00e8gre des processus automatis\u00e9s de KYC, de lutte contre le blanchiment d'argent et de pr\u00e9vention de la fraude, le tout dans un cadre conforme aux normes PCI DSS et RGPD. Son intelligence des risques bas\u00e9e sur les donn\u00e9es renforce la protection contre la fraude et les r\u00e9trofacturations.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Comment cela facilite-t-il le rapprochement ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Ruby automatise compl\u00e8tement le rapprochement. Chaque transaction, quel que soit le type de paiement, est suivie, appari\u00e9e et r\u00e9gl\u00e9e instantan\u00e9ment au sein de l'infrastructure unifi\u00e9e. Cela \u00e9limine le besoin de suivre et d'apparier manuellement les paiements avec les r\u00e9servations, transformant ainsi les processus financiers traditionnellement manuels et risqu\u00e9s en flux automatis\u00e9s, s\u00e9curis\u00e9s et transparents.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Puis-je \u00e9mettre des cartes bancaires pour des r\u00e9servations individuelles ou des fournisseurs ?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Oui, vous pouvez g\u00e9n\u00e9rer des cartes bancaires virtuelles \u00e0 usage unique ou multiple adapt\u00e9es \u00e0 chaque r\u00e9servation, fournisseur ou service.Pr\u00eat \u00e0 optimiser vos paiements ? Contactez-nous d\u00e8s maintenant !\"\n            }\n        }\n    ]\n}<\/script>\n                    <div data-nosnippet class=\"hr-faq-widget\">\n                            <div class=\"hr-faq-item active\">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-0\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-controls=\"hr-faq-content-0\">\n                                <h3 class=\"hr-faq-title\">Qu'est-ce que Ruby ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-0\" class=\"hr-faq-content\" style=\"display: block;\">\n                            <p>Ruby est l'infrastructure financi\u00e8re autonome et int\u00e9gr\u00e9e d'HotelRunner, con\u00e7ue exclusivement pour le secteur du voyage. Elle permet des r\u00e8glements instantan\u00e9s, des paiements transparents, des rapprochements automatis\u00e9s, des op\u00e9rations de change et la conformit\u00e9 pour les transactions de voyage locales et transfrontali\u00e8res.<\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-controls=\"hr-faq-content-0\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-1\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-1\">\n                                <h3 class=\"hr-faq-title\">En quoi Ruby se distingue-t-il des autres solutions de paiement ou de technologie financi\u00e8re ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-1\" class=\"hr-faq-content\" >\n                            <span style=\"font-weight: 400;\">Contrairement aux outils fintech g\u00e9n\u00e9riques con\u00e7us pour le commerce de d\u00e9tail, Ruby est sp\u00e9cialement con\u00e7u pour le secteur du voyage. Il comprend les r\u00e9servations, les annulations, les commissions et les r\u00e8gles tarifaires, automatisant ce que les autres ne peuvent pas faire. Chaque transaction est visible, de la r\u00e9servation au r\u00e8glement, avec une conformit\u00e9 int\u00e9gr\u00e9e qui s'adapte aux r\u00e9glementations locales, aux normes KYC et aux taux de change. En r\u00e9unissant les paiements, les politiques et les partenaires au sein d'une seule infrastructure, Ruby aide les agences de voyage \u00e0 se d\u00e9velopper \u00e0 l'\u00e9chelle mondiale gr\u00e2ce \u00e0 des finances autonomes et intelligentes en mati\u00e8re de voyage.<\/span>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-1\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-2\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-2\">\n                                <h3 class=\"hr-faq-title\">Quels probl\u00e8mes Ruby permet-il de r\u00e9soudre ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-2\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Ruby \u00e9limine les retards de r\u00e8glement, r\u00e9duit les co\u00fbts li\u00e9s aux op\u00e9rations de change, simplifie la conformit\u00e9 et pr\u00e9vient la fraude et les r\u00e9trofacturations. Il transforme traditionnellement les processus financiers manuels et risqu\u00e9s<\/span><b> en flux automatis\u00e9s, s\u00e9curis\u00e9s et transparents.<\/b><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-2\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-3\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-3\">\n                                <h3 class=\"hr-faq-title\">Ruby g\u00e8re-t-il la conformit\u00e9 et le KYC ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-3\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">La conformit\u00e9 est int\u00e9gr\u00e9e \u00e0 l'infrastructure de Ruby, du KYC et de l'AML \u00e0 la pr\u00e9vention de la fraude, renforc\u00e9e par l'expertise sectorielle d'HotelRunner et fournie par des partenaires financiers de confiance.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-3\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-4\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-4\">\n                                <h3 class=\"hr-faq-title\">Ruby peut-il traiter les paiements multidevises ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-4\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Absolument. Ruby est con\u00e7u pour les voyages internationaux. Il prend en charge les <\/span><b>transactions multidevises et la gestion des op\u00e9rations de change<\/b><span style=\"font-weight: 400;\">, offrant ainsi \u00e0 ses partenaires flexibilit\u00e9 et contr\u00f4le sur les r\u00e8glements internationaux. Cela signifie qu'il n'y a plus de probl\u00e8mes li\u00e9s aux \u00e9carts entre les devises et les devises des cartes<\/span><span style=\"font-weight: 400;\"> bancaires<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-4\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-5\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-5\">\n                                <h3 class=\"hr-faq-title\">Comment Ruby am\u00e9liore-t-il la tr\u00e9sorerie des entreprises du secteur du voyage ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-5\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Ruby am\u00e9liore consid\u00e9rablement la tr\u00e9sorerie en proposant <\/span><b>des r\u00e8glements instantan\u00e9s<\/b><span style=\"font-weight: 400;\"> et <\/span><b>en automatisant le rapprochement<\/b><span style=\"font-weight: 400;\">. En \u00e9liminant les retards traditionnels li\u00e9s aux virements bancaires et \u00e0 l'\u00e9mission de cartes<\/span><span style=\"font-weight: 400;\"> bancaires<\/span><span style=\"font-weight: 400;\"> virtuelles, il garantit que les fonds sont trait\u00e9s et rapproch\u00e9s instantan\u00e9ment au-del\u00e0 des fronti\u00e8res, ce qui permet aux agences de voyage, aux voyagistes et aux fournisseurs d'acc\u00e9der plus rapidement \u00e0 leur argent et d'am\u00e9liorer leur agilit\u00e9 financi\u00e8re globale.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-5\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-6\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-6\">\n                                <h3 class=\"hr-faq-title\">Que signifie le fait que Ruby soit une infrastructure \u00ab financi\u00e8re int\u00e9gr\u00e9e \u00bb ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-6\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Cela signifie que la couche financi\u00e8re de Ruby est directement int\u00e9gr\u00e9e <\/span><b>au c\u0153ur de l'exp\u00e9rience de voyage B2B<\/b><span style=\"font-weight: 400;\">, et non simplement ajout\u00e9e par-dessus. Cette unit\u00e9 de distribution et de paiement permet <\/span><b>des flux financiers automatis\u00e9s en temps r\u00e9el<\/b><span style=\"font-weight: 400;\"> \u00e0 travers les fronti\u00e8res. Gr\u00e2ce \u00e0 son int\u00e9gration, Ruby \u00e9limine les \u00e9tapes manuelles, int\u00e8gre la conformit\u00e9 par d\u00e9faut et applique les politiques et r\u00e8gles sp\u00e9cifiques au voyage d\u00e8s le premier jour, garantissant ainsi que toutes les transactions sont conformes aux r\u00e9glementations, aux flux de travail et aux exigences des partenaires propres au secteur du voyage. Les r\u00e8glements sont trait\u00e9s de mani\u00e8re transparente dans le cadre du processus de r\u00e9servation et de distribution.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-6\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-7\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-7\">\n                                <h3 class=\"hr-faq-title\"> S'int\u00e8gre-t-il \u00e0 tous les syst\u00e8mes de r\u00e9servation ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-7\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Il est con\u00e7u pour r\u00e9unir la distribution et les paiements en une seule infrastructure transparente. Pour tous les partenaires de l'\u00e9cosyst\u00e8me HotelRunner (agences de voyage, fournisseurs, etc.), Ruby fonctionne comme une couche financi\u00e8re native de bout en bout, int\u00e9gr\u00e9e directement dans le contenu des voyages et les flux de r\u00e9servation.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-7\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-8\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-8\">\n                                <h3 class=\"hr-faq-title\">Est-il s\u00e9curis\u00e9 ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-8\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Absolument. La s\u00e9curit\u00e9 et la conformit\u00e9 font partie int\u00e9grante de la conception de Ruby. En collaboration avec des institutions financi\u00e8res partenaires de confiance, il int\u00e8gre des processus automatis\u00e9s <\/span><b>de KYC, de lutte contre le blanchiment d'argent et de pr\u00e9vention de la fraude<\/b><span style=\"font-weight: 400;\">, le tout dans un cadre conforme aux <\/span><b>normes PCI DSS et RGPD<\/b><span style=\"font-weight: 400;\">. Son intelligence des risques bas\u00e9e sur les donn\u00e9es renforce la protection contre la fraude et les r\u00e9trofacturations.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-8\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-9\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-9\">\n                                <h3 class=\"hr-faq-title\">Comment cela facilite-t-il le rapprochement ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-9\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Ruby automatise compl\u00e8tement le rapprochement. Chaque transaction, quel que soit le type de paiement, <\/span><b>est suivie, appari\u00e9e et r\u00e9gl\u00e9e instantan\u00e9ment<\/b><span style=\"font-weight: 400;\"> au sein de l'infrastructure unifi\u00e9e. Cela \u00e9limine le besoin de suivre et d'apparier manuellement les paiements avec les r\u00e9servations, transformant ainsi les processus financiers traditionnellement manuels et risqu\u00e9s en flux automatis\u00e9s, s\u00e9curis\u00e9s et transparents.<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-9\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                            <div class=\"hr-faq-item \">\n                                        <div class=\"hr-faq-item-content\">\n                            <div id=\"hr-faq-header-10\" class=\"hr-faq-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-10\">\n                                <h3 class=\"hr-faq-title\">Puis-je \u00e9mettre des cartes bancaires pour des r\u00e9servations individuelles ou des fournisseurs ?<\/h3>\n                                \n                        <\/div>\n                        <div id=\"hr-faq-content-10\" class=\"hr-faq-content\" >\n                            <p><span style=\"font-weight: 400;\">Oui, vous pouvez g\u00e9n\u00e9rer des cartes <\/span><span style=\"font-weight: 400;\">bancaires <\/span><span style=\"font-weight: 400;\">virtuelles \u00e0 usage unique ou multiple adapt\u00e9es \u00e0 chaque r\u00e9servation, fournisseur ou service.<\/span><\/p><p><span style=\"font-weight: 400;\">Pr\u00eat \u00e0 optimiser vos paiements ? Contactez-nous d\u00e8s maintenant !<\/span><\/p>                        <\/div>\n                    <\/div>\n                    <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"hr-faq-content-10\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"40\" viewBox=\"0 0 45 40\" fill=\"none\">\n                                    <path d=\"M15.3135 16.666L22.7349 23.3327L30.1563 16.666\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/div>\n                <\/div>\n                    <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-25bbbee elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"25bbbee\" data-element_type=\"section\" data-e-type=\"section\" id=\"ruby-form\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-20de308\" data-id=\"20de308\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-248fb84 elementor-widget elementor-widget-heading\" data-id=\"248fb84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pr\u00eat \u00e0 optimiser vos paiements ?\n<br>Contactez-nous d\u00e8s maintenant !\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9af7c76 elementor-widget__width-initial hr-form-submit-auto elementor-widget elementor-widget-hr_form\" data-id=\"9af7c76\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"hr-form-container\">\n            <!-- Add JustValidate script directly -->\n            <form id=\"hr-form-69d8f51d441fc\" class=\"hr-form hr-select2-booting hr-form-direction-horizontal\" method=\"POST\" name=\"Ruby - FR\"                action=\"https:\/\/hotelrunner.com\/wp-content\/themes\/hotelrunner\/core\/data\/hr-form-handler.php\">\n                <input type=\"hidden\" name=\"form_endpoint_url\" value=\"https:\/\/go.marketing.hotelrunner.com\/l\/965463\/2025-05-21\/79fkr\">\n                                    <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/fr\/ruby-merci\">\n                                \n                <!-- Add loading overlay -->\n                <div class=\"hr-form-overlay\" style=\"display: none;\">\n                    <div class=\"hr-form-overlay-content\">\n                        <span class=\"loader\"><\/span>\n                    <\/div>\n                <\/div>\n\n                <style>\n                    \/* #hr-form-69d8f51d441fc {\n                        position: relative;\n                    } *\/\n\n                    #hr-form-69d8f51d441fc .hr-form-overlay {\n                        position: absolute;\n                        top: 0;\n                        left: 0;\n                        right: 0;\n                        bottom: 0;\n                        background-color: rgba(255, 255, 255, 0.9);\n                        display: none;\n                        justify-content: center;\n                        align-items: center;\n                        z-index: 1000;\n                        backdrop-filter: blur(2px);\n                    }\n\n                    #hr-form-69d8f51d441fc .hr-form-overlay-content {\n                        text-align: center;\n                    }\n\n                    #hr-form-69d8f51d441fc .loader {\n                        width: 48px;\n                        height: 48px;\n                        border: 5px solid var(--e-global-color-primary);\n                        border-bottom-color: transparent;\n                        border-radius: 50%;\n                        display: inline-block;\n                        box-sizing: border-box;\n                        animation: rotation 1s linear infinite;\n                    }\n\n                    @keyframes rotation {\n                        0% {\n                            transform: rotate(0deg);\n                        }\n\n                        100% {\n                            transform: rotate(360deg);\n                        }\n                    }\n\n                    #hr-form-69d8f51d441fc.submitting {\n                        pointer-events: none;\n                    }\n\n                    #hr-form-69d8f51d441fc.submitting .hr-form-overlay {\n                        display: flex;\n                    }\n                    @media (max-width: 1024px) {\n                        #hr-form-69d8f51d441fc .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-69d8f51d441fc .hr-form-step-buttons-wrapper { justify-content: flex-start !important; }\n                    }\n                    @media (max-width: 767px) {\n                        #hr-form-69d8f51d441fc .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-69d8f51d441fc .hr-form-step-buttons-wrapper { justify-content: flex-start !important; }\n                    }\n                <\/style>\n\n                <script>\n                    document.addEventListener('DOMContentLoaded', function () {\n                        const form = document.getElementById('hr-form-69d8f51d441fc');\n                        const submitButton = form.querySelector('.hr-form-submit');\n                        const overlay = form.querySelector('.hr-form-overlay');\n                        let isSubmitting = false;\n\n                        \/\/ Initialize JustValidate\n                        const validator = new JustValidate('#hr-form-69d8f51d441fc', {\n                            validateBeforeSubmitting: true,\n                            lockForm: true,\n                            focusInvalidField: true,\n                            errorFieldCssClass: 'is-invalid',\n                            successFieldCssClass: 'is-valid',\n                            errorLabelCssClass: 'is-label-invalid',\n                            errorLabelStyle: {\n                                color: '#e3342f',\n                                fontSize: '12px'\n                            },\n                            successFieldStyle: {\n                                borderColor: '#38c172'\n                            },\n                            errorFieldStyle: {\n                                borderColor: '#e3342f'\n                            },\n                            onValidate: ({ target }) => {\n                                \/\/ Handle Select2 validation classes\n                                if ($(target).hasClass('select2-hidden-accessible')) {\n                                    const select2Container = $(target).next('.select2-container');\n                                    if ($(target).hasClass('is-valid')) {\n                                        select2Container.find('.select2-selection').addClass('is-valid').removeClass('is-invalid');\n                                    } else if ($(target).hasClass('is-invalid')) {\n                                        select2Container.find('.select2-selection').addClass('is-invalid').removeClass('is-valid');\n                                    }\n                                }\n                            }\n                        });\n\n                        \/\/ Store validator instance on the form element\n                        form._justValidateInstance = validator;\n\n                        \/\/ Add validation rules\n                        validator.addField('input[name=\"form_endpoint_url\"]', [\n                            {\n                                rule: 'required',\n                                errorMessage: 'This field is required',\n                            },\n                        ]);\n\n                        \/\/ Add more fields and rules as needed\n\n                        \/\/ Handle form submission\n                        form.addEventListener('submit', function (e) {\n                            e.preventDefault();\n\n                            \/\/ Prevent multiple submissions\n                            if (isSubmitting) {\n                                return false;\n                            }\n\n                                                            const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                                if (!turnstileResponse || !turnstileResponse.value) {\n                                    alert('Please wait for the security check to complete.');\n                                    return false;\n                                }\n                            \n                            \/\/ Check honeypot field\n                            const honeypotField = form.querySelector('input[name=\"hr_website\"]');\n                            if (honeypotField && honeypotField.value !== '') {\n                                return false;\n                            }\n\n                            \/\/ Validate the form\n                            validator.onSuccess((event) => {\n                                \/\/ Show loading state\n                                isSubmitting = true;\n                                form.classList.add('submitting');\n                                overlay.style.display = 'flex';\n\n                                if (submitButton) {\n                                    submitButton.disabled = true;\n                                }\n\n                                \/\/ Submit the form\n                                form.submit();\n                            });\n\n                            validator.onFail((fields) => {\n                                \/\/ Validation failed\n                            });\n\n                            validator.validate();\n                        });\n                    });\n                <\/script>\n\n                \n                <!-- Add honeypot field -->\n                <div style=\"display:none;\">\n                    <input type=\"text\" name=\"hr_website\" value=\"\" autocomplete=\"off\" tabindex=\"-1\">\n                <\/div>\n\n                                    <div class=\"cf-turnstile\" data-sitekey=\"0x4AAAAAABeTMK2qaRc9Oy_P\"\n                        data-callback=\"onTurnstileCallback_hr-form-69d8f51d441fc\"><\/div>\n                \n                                        <input type=\"hidden\" name=\"hr_ip_address\" value=\"10.0.25.189\"\n                            data-field-type=\"ip_address\">\n                                                <input type=\"hidden\" name=\"hr_browser_info\" value=\"\"\n                            data-field-type=\"browser_info\">\n                                                <input type=\"hidden\" name=\"hr_primary_language\" value=\"\"\n                            data-field-type=\"primary_language\">\n                                                <input type=\"hidden\" name=\"hr_all_languages\" value=\"\"\n                            data-field-type=\"all_languages\">\n                                                <input type=\"hidden\" name=\"hr_window_size\" value=\"\"\n                            data-field-type=\"window_size\">\n                                                <input type=\"hidden\" name=\"hr_timezone_name\" value=\"\"\n                            data-field-type=\"timezone_name\">\n                                                <input type=\"hidden\" name=\"hr_current_url\" value=\"\"\n                            data-field-type=\"current_url\">\n                                                <input type=\"hidden\" name=\"hr_referrer_url\" value=\"\"\n                            data-field-type=\"referrer_url\">\n                                                <input type=\"hidden\" name=\"hr_page_load_time\" value=\"\"\n                            data-field-type=\"page_load_time\">\n                                            <input type=\"hidden\" name=\"form_endpoint_url\" value=\"https:\/\/go.marketing.hotelrunner.com\/l\/965463\/2025-05-21\/79fkr\">\n                                            <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/fr\/ruby-merci\">\n                                                                <input type=\"hidden\" name=\"form_title\" value=\"Ruby - FR\">\n                                        <input type=\"hidden\" name=\"form_language\"\n                        value=\"FR\">\n                    <input type=\"hidden\" name=\"utm_source\" value=\"\">\n                    <input type=\"hidden\" name=\"utm_medium\" value=\"\">\n                    <input type=\"hidden\" name=\"utm_campaign\" value=\"\">\n                    <input type=\"hidden\" name=\"utm_term\" value=\"\">\n                    <input type=\"hidden\" name=\"utm_content\" value=\"\">\n                    \n                <script>\n                    function populateUtmFields() {\n                        \/\/ Get all forms with UTM input fields\n                        const forms = document.querySelectorAll('form');\n                        \n                        forms.forEach(form => {\n                            \/\/ Check if this form has UTM fields\n                            const utmSourceField = form.querySelector('input[name=\"utm_source\"]');\n                            if (!utmSourceField) return; \/\/ Skip forms without UTM fields\n                            \n                            \/\/ First try to get from sessionStorage\n                            let utmSource = sessionStorage.getItem('utm_source');\n                            let utmMedium = sessionStorage.getItem('utm_medium');\n                            let utmCampaign = sessionStorage.getItem('utm_campaign');\n                            let utmTerm = sessionStorage.getItem('utm_term');\n                            let utmContent = sessionStorage.getItem('utm_content');\n                            \n                            \/\/ If sessionStorage is empty, try to extract from URL directly\n                            if (!utmSource && !utmMedium && !utmCampaign && !utmTerm && !utmContent) {\n                                const params = new URLSearchParams(window.location.search);\n                                const utmKeys = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'];\n                                \n                                utmKeys.forEach(key => {\n                                    if (params.has(key)) {\n                                        const value = params.get(key);\n                                        sessionStorage.setItem(key, value);\n                                        \n                                        \/\/ Update our variables\n                                        switch(key) {\n                                            case 'utm_source': utmSource = value; break;\n                                            case 'utm_medium': utmMedium = value; break;\n                                            case 'utm_campaign': utmCampaign = value; break;\n                                            case 'utm_term': utmTerm = value; break;\n                                            case 'utm_content': utmContent = value; break;\n                                        }\n                                    }\n                                });\n                            }\n                            \n                            \/\/ Query within this specific form only\n                            const utmInputs = {\n                                'utm_source': form.querySelector('input[name=\"utm_source\"]'),\n                                'utm_medium': form.querySelector('input[name=\"utm_medium\"]'),\n                                'utm_campaign': form.querySelector('input[name=\"utm_campaign\"]'),\n                                'utm_term': form.querySelector('input[name=\"utm_term\"]'),\n                                'utm_content': form.querySelector('input[name=\"utm_content\"]')\n                            };\n                            \n                            if (utmInputs.utm_source) utmInputs.utm_source.value = utmSource || '';\n                            if (utmInputs.utm_medium) utmInputs.utm_medium.value = utmMedium || '';\n                            if (utmInputs.utm_campaign) utmInputs.utm_campaign.value = utmCampaign || '';\n                            if (utmInputs.utm_term) utmInputs.utm_term.value = utmTerm || '';\n                            if (utmInputs.utm_content) utmInputs.utm_content.value = utmContent || '';\n                        });\n                    }\n                    \n                    \/\/ Try multiple times to ensure UTM parameters are captured\n                    document.addEventListener('DOMContentLoaded', populateUtmFields);\n                    \n                    \/\/ Also try after a short delay in case there's a timing issue\n                    setTimeout(populateUtmFields, 100);\n                    setTimeout(populateUtmFields, 500);\n                    setTimeout(populateUtmFields, 1000);\n                    \n                    \/\/ Also try on window load\n                    window.addEventListener('load', populateUtmFields);\n                <\/script>\n\n                <div class=\"hr-form-fields-wrapper\">\n                    \n                                                    <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-firstname hr-form-field-column-elementor-repeater-item-14707c7\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-firstname\" class=\"hr-form-label\">Pr\u00e9nom<\/label>                                        \n                                                                                        <input id=\"hr-form-firstname\" class=\"hr-form-input\" autocomplete=\"name\" type=\"text\" name=\"hr-form-firstname\" ><div id=\"hr-form-firstname-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-lastname hr-form-field-column-elementor-repeater-item-f1b0b8a\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-lastname\" class=\"hr-form-label\">Nom<\/label>                                        \n                                                                                        <input id=\"hr-form-lastname\" class=\"hr-form-input\" autocomplete=\"name\" type=\"text\" name=\"hr-form-lastname\" ><div id=\"hr-form-lastname-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-email hr-form-field-column-elementor-repeater-item-b145675\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-email\" class=\"hr-form-label\">Courriel<\/label>                                        \n                                                                                        <input id=\"hr-form-email\" class=\"hr-form-input\" autocomplete=\"email\" type=\"email\" name=\"hr-form-email\" ><div id=\"hr-form-email-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-phone hr-form-field-column-elementor-repeater-item-f04ee98\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-phone\" class=\"hr-form-label\">T\u00e9l\u00e9phone mobile<\/label>                                        \n                                                                                                                                        <div class=\"hr-phone-input-wrapper\">\n                                                    <input id=\"hr-form-phone\" class=\"hr-form-input hr-phone-input\" autocomplete=\"tel\" type=\"tel\" name=\"hr-form-phone\"                                                                                                                 data-enable-geoip-lookup=\"yes\"\n                                                        data-initial-country=\"\">\n                                                <\/div>\n                                                                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-company-name hr-form-field-column-elementor-repeater-item-218998f\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-company-name\" class=\"hr-form-label\">Nom de l&#039;entreprise<\/label>                                        \n                                                                                        <input id=\"hr-form-company-name\" class=\"hr-form-input\" autocomplete=\"name\" type=\"text\" name=\"hr-form-company-name\" ><div id=\"hr-form-company-name-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-50 hr-form-company-type hr-form-field-column-elementor-repeater-item-8143090\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-form-company-type\" class=\"hr-form-label\">Type d&#039;entreprise<\/label>                                        \n                                                                                                                                        <div class=\"hr-form-field-input\">\n                                                    <select id=\"hr-form-company-type\" class=\"hr-form-input hr-select2-field\" autocomplete=\"organization\" name=\"hr-form-company-type\" data-placeholder=\"S\u00e9lectionner\" data-allow-clear=\"no\" data-enable-search=\"yes\" required=\"required\" >\n                                                                                                                    <option value=\"\" class=\"hr-select-placeholder\" disabled selected>\n                                                                S\u00e9lectionner                                                            <\/option>\n                                                                                                                <option value=\"Travel Agency\">Agence de voyage en ligne<\/option><option value=\"Tour Operators\">Voyagistes<\/option><option value=\"Other\">Autre<\/option>                                                    <\/select>\n                                                                                                    <\/div>\n                                                <div id=\"hr-form-company-type-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 hr-form-field-column-elementor-repeater-item-f652409\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-field-69d8f51d44502\" class=\"hr-form-label\">Pays<\/label>                                        \n                                                                                                                                        <div class=\"hr-country-field-wrapper\">\n                                                    <select id=\"hr-field-69d8f51d44502\" class=\"hr-form-input hr-country-select\" placeholder=\"S\u00e9lectionner\" autocomplete=\"country-name\" name=\"hr-country\"  data-placeholder=\"S\u00e9lectionner\"\n                                                        name=\"hr-country\">\n                                                        <option value=\"\" class=\"hr-select-placeholder\" disabled selected>\n                                                            S\u00e9lectionner                                                        <\/option>\n                                                        <option value=\"AF\">Afghanistan<\/option><option value=\"AX\">\u00c5land Islands<\/option><option value=\"AL\">Albania<\/option><option value=\"DZ\">Algeria<\/option><option value=\"AD\">Andorra<\/option><option value=\"AO\">Angola<\/option><option value=\"AI\">Anguilla<\/option><option value=\"AQ\">Antarctica<\/option><option value=\"AG\">Antigua and Barbuda<\/option><option value=\"AR\">Argentina<\/option><option value=\"AM\">Armenia<\/option><option value=\"AW\">Aruba<\/option><option value=\"AU\">Australia<\/option><option value=\"AT\">Austria<\/option><option value=\"AZ\">Azerbaijan<\/option><option value=\"BS\">Bahamas<\/option><option value=\"BH\">Bahrain<\/option><option value=\"BD\">Bangladesh<\/option><option value=\"BB\">Barbados<\/option><option value=\"BY\">Belarus<\/option><option value=\"BE\">Belgium<\/option><option value=\"BZ\">Belize<\/option><option value=\"BJ\">Benin<\/option><option value=\"BM\">Bermuda<\/option><option value=\"BT\">Bhutan<\/option><option value=\"BO\">Bolivia<\/option><option value=\"BQ\">Bonaire, Sint Eustatius and Saba<\/option><option value=\"BA\">Bosnia and Herzegovina<\/option><option value=\"BW\">Botswana<\/option><option value=\"BV\">Bouvet Island<\/option><option value=\"BR\">Brazil<\/option><option value=\"IO\">British Indian Ocean Territory<\/option><option value=\"BN\">Brune\u0130<\/option><option value=\"BG\">Bulgaria<\/option><option value=\"BF\">Burkina Faso<\/option><option value=\"BI\">Burundi<\/option><option value=\"KH\">Cambodia<\/option><option value=\"CM\">Cameroon<\/option><option value=\"CA\">Canada<\/option><option value=\"CV\">Cape Verde<\/option><option value=\"KY\">Cayman Islands<\/option><option value=\"CF\">Central African Republic<\/option><option value=\"TD\">Chad<\/option><option value=\"CL\">Chile<\/option><option value=\"CN\">China<\/option><option value=\"CX\">Christmas Island<\/option><option value=\"CC\">Cocos (Keeling) Islands<\/option><option value=\"CO\">Colombia<\/option><option value=\"KM\">Comoros<\/option><option value=\"CG\">Congo<\/option><option value=\"CK\">Cook Islands<\/option><option value=\"CR\">Costa Rica<\/option><option value=\"CI\">C\u00f4te d&#039;Ivoire<\/option><option value=\"HR\">Croatia<\/option><option value=\"CU\">Cuba<\/option><option value=\"CW\">Cura\u00e7ao<\/option><option value=\"CY\">Cyprus<\/option><option value=\"CZ\">Czechia<\/option><option value=\"CD\">Democratic Republic of the Congo<\/option><option value=\"DK\">Denmark<\/option><option value=\"DJ\">Djibouti<\/option><option value=\"DM\">Dominica<\/option><option value=\"DO\">Dominican Republic<\/option><option value=\"EC\">Ecuador<\/option><option value=\"EG\">Egypt<\/option><option value=\"SV\">El Salvador<\/option><option value=\"GQ\">Equatorial Guinea<\/option><option value=\"ER\">Eritrea<\/option><option value=\"EE\">Estonia<\/option><option value=\"SZ\">Eswatini<\/option><option value=\"ET\">Ethiopia<\/option><option value=\"FK\">Falkland Islands<\/option><option value=\"FO\">Faroe Islands<\/option><option value=\"FJ\">Fiji<\/option><option value=\"FI\">Finland<\/option><option value=\"FR\">France<\/option><option value=\"GF\">French Guiana<\/option><option value=\"PF\">French Polynesia<\/option><option value=\"TF\">French Southern Territories<\/option><option value=\"GA\">Gabon<\/option><option value=\"GM\">Gambia<\/option><option value=\"GE\">Georgia<\/option><option value=\"DE\">Germany<\/option><option value=\"GH\">Ghana<\/option><option value=\"GI\">Gibraltar<\/option><option value=\"GR\">Greece<\/option><option value=\"GL\">Greenland<\/option><option value=\"GD\">Grenada<\/option><option value=\"GP\">Guadeloupe<\/option><option value=\"GU\">Guam<\/option><option value=\"GT\">Guatemala<\/option><option value=\"GG\">Guernsey<\/option><option value=\"GN\">Guinea<\/option><option value=\"GW\">Guinea-Bissau<\/option><option value=\"GY\">Guyana<\/option><option value=\"HT\">Haiti<\/option><option value=\"HM\">Heard Island and McDonald Islands<\/option><option value=\"VA\">Holy See<\/option><option value=\"HN\">Honduras<\/option><option value=\"HK\">Hong Kong<\/option><option value=\"HU\">Hungary<\/option><option value=\"IS\">Iceland<\/option><option value=\"IN\">India<\/option><option value=\"ID\">Indonesia<\/option><option value=\"IR\">Iran<\/option><option value=\"IQ\">Iraq<\/option><option value=\"IE\">Ireland<\/option><option value=\"IM\">Isle of Man<\/option><option value=\"IL\">Israel<\/option><option value=\"IT\">Italy<\/option><option value=\"JM\">Jamaica<\/option><option value=\"JP\">Japan<\/option><option value=\"JE\">Jersey<\/option><option value=\"JO\">Jordan<\/option><option value=\"KZ\">Kazakhstan<\/option><option value=\"KE\">Kenya<\/option><option value=\"KI\">Kiribati<\/option><option value=\"KW\">Kuwait<\/option><option value=\"KG\">Kyrgyzstan<\/option><option value=\"LA\">Laos<\/option><option value=\"LV\">Latvia<\/option><option value=\"LB\">Lebanon<\/option><option value=\"LS\">Lesotho<\/option><option value=\"LR\">Liberia<\/option><option value=\"LY\">Libya<\/option><option value=\"LI\">Liechtenstein<\/option><option value=\"LT\">Lithuania<\/option><option value=\"LU\">Luxembourg<\/option><option value=\"MO\">Macao<\/option><option value=\"MG\">Madagascar<\/option><option value=\"MW\">Malawi<\/option><option value=\"MY\">Malaysia<\/option><option value=\"MV\">Maldives<\/option><option value=\"ML\">Mali<\/option><option value=\"MT\">Malta<\/option><option value=\"MH\">Marshall Islands<\/option><option value=\"MQ\">Martinique<\/option><option value=\"MR\">Mauritania<\/option><option value=\"MU\">Mauritius<\/option><option value=\"YT\">Mayotte<\/option><option value=\"MX\">Mexico<\/option><option value=\"FM\">Micronesia<\/option><option value=\"MD\">Moldova<\/option><option value=\"MC\">Monaco<\/option><option value=\"MN\">Mongolia<\/option><option value=\"ME\">Montenegro<\/option><option value=\"MS\">Montserrat<\/option><option value=\"MA\">Morocco<\/option><option value=\"MZ\">Mozambique<\/option><option value=\"MM\">Myanmar<\/option><option value=\"NA\">Namibia<\/option><option value=\"NR\">Nauru<\/option><option value=\"NP\">Nepal<\/option><option value=\"NL\">Netherlands<\/option><option value=\"NC\">New Caledonia<\/option><option value=\"NZ\">New Zealand<\/option><option value=\"NI\">Nicaragua<\/option><option value=\"NE\">Niger<\/option><option value=\"NG\">Nigeria<\/option><option value=\"NU\">Niue<\/option><option value=\"NF\">Norfolk Island<\/option><option value=\"KP\">North Korea<\/option><option value=\"MK\">North Macedonia<\/option><option value=\"NCY\">Northern Cyprus<\/option><option value=\"MP\">Northern Mariana Islands<\/option><option value=\"NO\">Norway<\/option><option value=\"OM\">Oman<\/option><option value=\"PK\">Pakistan<\/option><option value=\"PW\">Palau<\/option><option value=\"PS\">Palestine<\/option><option value=\"PA\">Panama<\/option><option value=\"PG\">Papua New Guinea<\/option><option value=\"PY\">Paraguay<\/option><option value=\"PE\">Peru<\/option><option value=\"PH\">Philippines<\/option><option value=\"PN\">Pitcairn<\/option><option value=\"PL\">Poland<\/option><option value=\"PT\">Portugal<\/option><option value=\"PR\">Puerto Rico<\/option><option value=\"QA\">Qatar<\/option><option value=\"RE\">R\u00e9union<\/option><option value=\"RO\">Romania<\/option><option value=\"RU\">Russia<\/option><option value=\"RW\">Rwanda<\/option><option value=\"BL\">Saint Barth\u00e9lemy<\/option><option value=\"SH\">Saint Helena, Ascension and Tristan da Cunha<\/option><option value=\"KN\">Saint Kitts And Nevis<\/option><option value=\"LC\">Saint Lucia<\/option><option value=\"MF\">Saint Martin (French part)<\/option><option value=\"PM\">Saint Pierre and Miquelon<\/option><option value=\"VC\">Saint Vincent and the Grenadines<\/option><option value=\"AS\">Samoa<\/option><option value=\"WS\">Samoa<\/option><option value=\"SM\">San Marino<\/option><option value=\"ST\">Sao Tome and Principe<\/option><option value=\"SA\">Saudi Arabia<\/option><option value=\"SN\">Senegal<\/option><option value=\"RS\">Serbia<\/option><option value=\"SC\">Seychelles<\/option><option value=\"SL\">Sierra Leone<\/option><option value=\"SG\">Singapore<\/option><option value=\"SX\">Sint Maarten (Dutch part)<\/option><option value=\"SK\">Slovakia<\/option><option value=\"SI\">Slovenia<\/option><option value=\"SB\">Solomon Islands<\/option><option value=\"SO\">Somalia<\/option><option value=\"ZA\">South Africa<\/option><option value=\"GS\">South Georgia and the South Sandwich Islands<\/option><option value=\"KR\">South Korea<\/option><option value=\"SS\">South Sudan<\/option><option value=\"ES\">Spain<\/option><option value=\"LK\">Sri Lanka<\/option><option value=\"SD\">Sudan<\/option><option value=\"SR\">Suriname<\/option><option value=\"SJ\">Svalbard and Jan Mayen<\/option><option value=\"SE\">Sweden<\/option><option value=\"CH\">Switzerland<\/option><option value=\"SY\">Syria<\/option><option value=\"TW\">Taiwan<\/option><option value=\"TJ\">Tajikistan<\/option><option value=\"TZ\">Tanzania<\/option><option value=\"TH\">Thailand<\/option><option value=\"TL\">Timor-Leste<\/option><option value=\"TG\">Togo<\/option><option value=\"TK\">Tokelau<\/option><option value=\"TO\">Tonga<\/option><option value=\"TT\">Trinidad And Tobago<\/option><option value=\"TN\">Tunisia<\/option><option value=\"TR\">T\u00fcrkiye<\/option><option value=\"TM\">Turkmenistan<\/option><option value=\"TC\">Turks and Caicos Islands<\/option><option value=\"TV\">Tuvalu<\/option><option value=\"UG\">Uganda<\/option><option value=\"UA\">Ukraine<\/option><option value=\"AE\">United Arab Emirates<\/option><option value=\"GB\">United Kingdom<\/option><option value=\"UM\">United States Minor Outlying Islands<\/option><option value=\"US\">United States of America<\/option><option value=\"UY\">Uruguay<\/option><option value=\"UZ\">Uzbekistan<\/option><option value=\"VU\">Vanuatu<\/option><option value=\"VE\">Venezuela<\/option><option value=\"VN\">Viet nam<\/option><option value=\"VG\">Virgin Islands (British)<\/option><option value=\"VI\">Virgin Islands (U.S.)<\/option><option value=\"WF\">Wallis and Futuna<\/option><option value=\"EH\">Western Sahara<\/option><option value=\"YE\">Yemen<\/option><option value=\"ZM\">Zambia<\/option><option value=\"ZW\">Zimbabwe<\/option>                                                    <\/select>\n                                                <\/div>\n                                                <div id=\"hr-field-69d8f51d44502-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 using-payment-product hr-form-field-column-elementor-repeater-item-23aa49a\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"using-payment-product\" class=\"hr-form-label\">Utilisez-vous actuellement un produit de r\u00e8glement de paiement?<\/label>                                        \n                                                                                                                                        <div class=\"hr-form-field-input\">\n                                                    <select id=\"using-payment-product\" class=\"hr-form-input hr-select2-field\" autocomplete=\"off\" name=\"using-payment-product\" data-placeholder=\"S\u00e9lectionner\" data-allow-clear=\"no\" data-enable-search=\"yes\" required=\"required\" >\n                                                                                                                    <option value=\"\" class=\"hr-select-placeholder\" disabled selected>\n                                                                S\u00e9lectionner                                                            <\/option>\n                                                                                                                <option value=\"yes\">Oui<\/option><option value=\"no\">Non<\/option>                                                    <\/select>\n                                                                                                    <\/div>\n                                                <div id=\"using-payment-product-error-container\" class=\"just-validate-error-label hr-field-error-container\" aria-live=\"polite\"><\/div>                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 hidden hr-form-field-column-elementor-repeater-item-fd56d9a\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-field-69d8f51d44504\" class=\"hr-form-label\"><\/label>                                        \n                                                                                        <input id=\"hr-field-69d8f51d44504\" class=\"hr-form-input\" value=\"Home - FR\" placeholder=\"\" autocomplete=\"name\" type=\"hidden\" name=\"form_name\" >\n                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 privacy hr-form-field-column-elementor-repeater-item-b095a3f\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                        \n                                                                                        <div class=\"hr-form-checkbox-wrapper\">\n                                                    <label class=\"hr-checkbox-label\">\n                                                        <input id=\"privacy\" class=\"hr-form-checkbox\" placeholder=\"Enter your text here\" autocomplete=\"off\" type=\"checkbox\" name=\"privacy\" required=\"required\"  data-salesforce-field=\"no\">\n                                                        <span class=\"hr-checkbox-text\">J\u2019ai lu et compris la <a href=\"https:\/\/hotelrunner.com\/fr\/privacy-statement-for-request-complaint-suggestion-processes\/\" target=\"_blank\">\nD\u00e9claration de confidentialit\u00e9 relative aux processus de demande \/ r\u00e9clamation \/ suggestion.<\/a><\/span>\n                                                    <\/label>\n                                                                                                    <\/div>\n                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 commercial-text hr-form-field-column-elementor-repeater-item-63f3317\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                        \n                                                                                        <div class=\"hr-form-checkbox-wrapper\">\n                                                    <label class=\"hr-checkbox-label\">\n                                                        <input id=\"commercial-text\" class=\"hr-form-checkbox\" placeholder=\"Enter your text here\" autocomplete=\"off\" type=\"checkbox\" name=\"commercial-text\"  data-salesforce-field=\"yes\">\n                                                        <span class=\"hr-checkbox-text\">J\u2019ai lu et j\u2019accepte le consentement aux <a href=\"https:\/\/hotelrunner.com\/fr\/commercial-electronic-message-consent-text\/\" target=\"_blank\">communications \u00e9lectroniques commerciales<\/a>.<\/span>\n                                                    <\/label>\n                                                                                                                                                                    <input type=\"hidden\" name=\"commercial-text-value\" value=\"false\" data-salesforce-reverse=\"yes\">\n                                                                                                    <\/div>\n                                                                                    <\/div>\n                                <\/div>\n                                                <\/div>\n\n                                    <div class=\"hr-form-button-wrapper\" style=\"text-align: center;\">\n                        <button type=\"submit\" class=\"button hr-form-submit\">\n                            Contactez-nous                        <\/button>\n                    <\/div>\n                            <\/form>\n\n        <\/div>\n\n        \n        <!-- Hidden Fields Handler -->\n        <script>\n            (function ($) {\n                \"use strict\";\n\n                function initializePhoneInput(input) {\n                    \/\/ Check if intlTelInput is loaded and input is not already initialized\n                    if (typeof window.intlTelInput === \"function\" && !$(input).data(\"iti\")) {\n                        const initialCountry = (input.dataset.initialCountry || \"\").trim();\n\n                        \/\/ WPML fallback country mapping (based on current WPML language).\n                        \/\/ This is used when the geoIpLookup API times out or errors.\n                        const wpmlLang = \"fr\";\n                        let fallbackCountry = \"us\";\n                        if (wpmlLang.startsWith(\"tr\")) {\n                            fallbackCountry = \"tr\";\n                        } else if (wpmlLang.startsWith(\"es\")) {\n                            fallbackCountry = \"es\";\n                        } else if (wpmlLang.startsWith(\"fr\")) {\n                            fallbackCountry = \"fr\";\n                        } else {\n                            fallbackCountry = \"us\";\n                        }\n\n                        const enableGeoIpLookup = (input.dataset.enableGeoipLookup || \"yes\") === \"yes\";\n                        const shouldUseGeoIpLookup = enableGeoIpLookup && !initialCountry;\n                        const preferredAttr = input.getAttribute('data-preferred-countries');\n                        const preferredCountries = (preferredAttr === null)\n                            ? []\n                            : preferredAttr.split(',').map(s => s.trim()).filter(Boolean);\n\n                        const geoIpLookup = (success, failure) => {\n                            const timeoutMs = 2500; \/\/ Fail fast so it doesn't block UX.\n                            let settled = false;\n\n                            \/\/ Make sure we always resolve, even on network stalls.\n                            const timeoutId = setTimeout(() => {\n                                if (settled) return;\n                                settled = true;\n                                if (controller) controller.abort();\n                                success(fallbackCountry);\n                            }, timeoutMs);\n\n                            const controller = typeof AbortController !== \"undefined\" ? new AbortController() : null;\n\n                            fetch(\"https:\/\/ipapi.co\/json\", {\n                                signal: controller ? controller.signal : undefined\n                            })\n                                .then(res => res.json())\n                                .then(data => {\n                                    if (settled) return;\n                                    settled = true;\n                                    const code = (data && data.country_code) ? String(data.country_code).toLowerCase() : fallbackCountry;\n                                    success(code);\n                                })\n                                .catch(() => {\n                                    if (settled) return;\n                                    settled = true;\n                                    success(fallbackCountry);\n                                })\n                                .finally(() => {\n                                    clearTimeout(timeoutId);\n                                });\n                        };\n\n                        const itiOptions = {\n                            initialCountry: shouldUseGeoIpLookup ? \"auto\" : (initialCountry ? initialCountry : fallbackCountry),\n                            separateDialCode: true,\n                            nationalMode: false,\n                            formatOnDisplay: true,\n                            autoPlaceholder: \"polite\",\n                            preferredCountries: preferredCountries,\n                            allowDropdown: true,\n                            dropdownContainer: document.body,\n                            utilsScript: \"https:\/\/hotelrunner.com\/wp-content\/themes\/hotelrunner\/assets\/js\/\/vendor\/utils.js\" \/\/ Changed to non-minified version\n                        };\n\n                        if (shouldUseGeoIpLookup) {\n                            itiOptions.geoIpLookup = geoIpLookup;\n                        }\n\n                        const iti = window.intlTelInput(input, itiOptions);\n\n                        \/\/ Store the instance on the input element\n                        $(input).data(\"iti\", iti);\n\n                        \/\/ Handle input changes\n                        input.addEventListener('input', function (e) {\n                            const value = e.target.value;\n                            \/\/ Remove any non-numeric characters\n                            const numericValue = value.replace(\/\\D\/g, '');\n\n                            \/\/ Only remove the country code if it's at the start of the input\n                            if (value.startsWith('+')) {\n                                const countryCode = iti.getSelectedCountryData().dialCode;\n                                if (value.startsWith('+' + countryCode)) {\n                                    e.target.value = numericValue.substring(countryCode.length);\n                                }\n                            } else {\n                                e.target.value = numericValue;\n                            }\n                        });\n\n                        \/\/ Prevent non-numeric input\n                        input.addEventListener('keypress', function (e) {\n                            const charCode = (e.which) ? e.which : e.keyCode;\n                            if (charCode > 31 && (charCode < 48 || charCode > 57)) {\n                                e.preventDefault();\n                            }\n                        });\n\n                        \/\/ Handle form submission\n                        $(input.form).on(\"submit\", function () {\n                            if (iti.isValidNumber()) {\n                                input.value = iti.getNumber();\n                            }\n                        });\n\n                        \/\/ Add validation class and store full number on blur\n                        input.addEventListener(\"blur\", function () {\n                            var fullNumber = iti.getNumber();\n                            \/\/ Store the full number in a hidden input\n                            var hiddenInput = document.createElement('input');\n                            hiddenInput.type = 'hidden';\n                            hiddenInput.name = input.name + '_full';\n                            hiddenInput.value = fullNumber;\n                            \/\/ Replace existing hidden input if any\n                            var existingHidden = input.parentNode.querySelector('input[name=\"' + input.name + '_full\"]');\n                            if (existingHidden) {\n                                existingHidden.remove();\n                            }\n                            input.parentNode.appendChild(hiddenInput);\n\n                            if (input.value.trim()) {\n                                if (iti.isValidNumber()) {\n                                    $(input).removeClass(\"error\").addClass(\"valid\");\n                                } else {\n                                    $(input).removeClass(\"valid\").addClass(\"error\");\n                                }\n                            }\n                        });\n                    }\n                }\n\n                function initializeFormPhoneInputs(formId) {\n                    const form = document.getElementById(formId);\n                    if (!form) return;\n                    \n                    const phoneInputs = $(form).find(\".hr-phone-input\");\n                    if (phoneInputs.length > 0 && typeof window.intlTelInput === \"function\") {\n                        phoneInputs.each(function () {\n                            if (!$(this).data(\"iti\")) {\n                                initializePhoneInput(this);\n                            }\n                        });\n                    }\n                }\n\n                \/\/ Initialize phone inputs for this specific form\n                initializeFormPhoneInputs('hr-form-69d8f51d441fc');\n\n                \/\/ Also initialize on document ready to ensure DOM is fully loaded\n                $(document).ready(function () {\n                    initializeFormPhoneInputs('hr-form-69d8f51d441fc');\n                });\n            })(jQuery);\n\n\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n\n                \/\/ Function to get all hidden fields\n                const hiddenFields = form.querySelectorAll('input[type=\"hidden\"][data-field-type]');\n\n                hiddenFields.forEach(field => {\n                    const fieldType = field.getAttribute('data-field-type');\n\n                    switch (fieldType) {\n                        case 'browser_info':\n                            field.value = navigator.userAgent;\n                            break;\n\n                        case 'primary_language':\n                            field.value = navigator.language || 'unknown';\n                            break;\n\n                        case 'all_languages':\n                            field.value = navigator.languages ? navigator.languages.join(', ') : 'unknown';\n                            break;\n\n                        case 'cookies_enabled':\n                            field.value = navigator.cookieEnabled ? 'yes' : 'no';\n                            break;\n\n                        case 'screen_resolution':\n                            field.value = `${screen.width}x${screen.height}`;\n                            break;\n\n                        case 'available_screen':\n                            field.value = `${screen.availWidth}x${screen.availHeight}`;\n                            break;\n\n                        case 'window_size':\n                            field.value = `${window.outerWidth}x${window.outerHeight}`;\n                            \/\/ Update on resize\n                            window.addEventListener('resize', () => {\n                                field.value = `${window.outerWidth}x${window.outerHeight}`;\n                            });\n                            break;\n\n                        case 'timezone_name':\n                            try {\n                                field.value = Intl.DateTimeFormat().resolvedOptions().timeZone;\n                            } catch (e) {\n                                field.value = 'unknown';\n                            }\n                            break;\n\n                        case 'timezone_offset':\n                            field.value = new Date().getTimezoneOffset();\n                            break;\n\n                        case 'current_url':\n                            field.value = window.location.href;\n                            break;\n\n                        case 'referrer_url':\n                            field.value = document.referrer || 'direct';\n                            break;\n\n                        case 'page_load_time':\n                            field.value = Math.round(performance.now());\n                            break;\n\n                        case 'navigation_type':\n                            try {\n                                const navigation = performance.getEntriesByType('navigation')[0];\n                                field.value = navigation ? navigation.type : 'unknown';\n                            } catch (e) {\n                                field.value = 'unknown';\n                            }\n                            break;\n                    }\n                });\n            });\n        <\/script>\n\n        <!-- Checkbox Salesforce Field Handler -->\n        <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                \n                \/\/ Handle Salesforce checkbox fields\n                form.querySelectorAll('input[type=\"checkbox\"][data-salesforce-field=\"yes\"]').forEach(checkbox => {\n                    const hiddenFieldName = checkbox.id + '-value';\n                    const hiddenField = form.querySelector(`input[type=\"hidden\"][name=\"${hiddenFieldName}\"]`);\n                    \n                    if (hiddenField) {\n                        const isReversed = hiddenField.getAttribute('data-salesforce-reverse') === 'yes';\n                        \n                        \/\/ Update hidden field on checkbox change\n                        checkbox.addEventListener('change', function () {\n                            let value;\n                            if (isReversed) {\n                                \/\/ Reverse logic: checked = false, unchecked = true\n                                value = this.checked ? 'false' : 'true';\n                            } else {\n                                \/\/ Normal logic: checked = true, unchecked = false\n                                value = this.checked ? 'true' : 'false';\n                            }\n                            hiddenField.value = value;\n                        });\n                        \n                        \/\/ Set initial value\n                        let initialValue;\n                        if (isReversed) {\n                            initialValue = checkbox.checked ? 'false' : 'true';\n                        } else {\n                            initialValue = checkbox.checked ? 'true' : 'false';\n                        }\n                        hiddenField.value = initialValue;\n                    }\n                });\n            });\n        <\/script>\n\n        <!-- Conditional Fields Logic -->\n        <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                const conditions = {};\n\n                \n                function evaluateCondition(condition, value) {\n                    \/\/ Handle array values (for multiple select)\n                    if (Array.isArray(value)) {\n                        switch (condition.operator) {\n                            case 'equals':\n                                return value.includes(condition.value);\n                            case 'not_equals':\n                                return !value.includes(condition.value);\n                            case 'contains':\n                                return value.some(v => v.includes(condition.value));\n                            case 'not_contains':\n                                return !value.some(v => v.includes(condition.value));\n                            case 'greater_than':\n                                return value.some(v => parseFloat(v) > parseFloat(condition.value));\n                            case 'less_than':\n                                return value.some(v => parseFloat(v) < parseFloat(condition.value));\n                            default:\n                                return false;\n                        }\n                    }\n\n                    \/\/ Handle single values\n                    switch (condition.operator) {\n                        case 'equals':\n                            return value === condition.value;\n                        case 'not_equals':\n                            return value !== condition.value;\n                        case 'contains':\n                            return value.includes(condition.value);\n                        case 'not_contains':\n                            return !value.includes(condition.value);\n                        case 'greater_than':\n                            return parseFloat(value) > parseFloat(condition.value);\n                        case 'less_than':\n                            return parseFloat(value) < parseFloat(condition.value);\n                        default:\n                            return false;\n                    }\n                }\n\n                function updateConditionalFields() {\n                    for (const fieldId in conditions) {\n                        const condition = conditions[fieldId];\n                        \/\/ Ensure we only search for fields within the current form\n                        const targetInput = form.querySelector(`[name=\"${condition.targetField}\"]`);\n\n                        let fieldToToggle = form.querySelector(`#${fieldId}`) || form.querySelector(`[name=\"${fieldId}\"]`);\n                        fieldToToggle = fieldToToggle ? fieldToToggle.closest('.hr-form-field-column') : null;\n\n                        if (targetInput && fieldToToggle) {\n                            const targetValue = $(targetInput).hasClass('hr-select2-field') ? $(targetInput).val() : targetInput.value;\n                            const shouldShow = evaluateCondition(condition, targetValue);\n\n                            \/\/ Select all form elements within the current field to toggle\n                            const formElements = fieldToToggle.querySelectorAll('input, select, textarea');\n\n                            if (shouldShow) {\n                                fieldToToggle.classList.remove('hr-conditional-field');\n                                fieldToToggle.style.display = '';\n\n                                \/\/ Add the custom attribute to each form element\n                                formElements.forEach(el => el.classList.add('condition-false'));\n                                formElements.forEach(el => el.classList.remove('condition-false'));\n\n                            } else {\n                                fieldToToggle.classList.add('hr-conditional-field');\n                                fieldToToggle.style.display = 'none';\n                                formElements.forEach(el => el.classList.add('condition-false'));\n\n                                \/\/ Add the custom attribute to each form element\n                            }\n\n                            \/\/ Handle required fields\n                            formElements.forEach(input => {\n                                if (!shouldShow) {\n                                    input.dataset.wasRequired = input.required;\n                                    input.required = false;\n                                } else if (input.dataset.wasRequired) {\n                                    input.required = true;\n                                }\n                            });\n                        }\n                    }\n                }\n\n                \/\/ Update condition field options dynamically\n                form.querySelectorAll('input, select, textarea').forEach(input => {\n                    \/\/ Handle regular input events\n                    input.addEventListener('input', updateConditionalFields);\n                    input.addEventListener('change', updateConditionalFields);\n\n                    \/\/ Handle Select2 events if the field is a Select2\n                    if ($(input).hasClass('hr-select2-field')) {\n                        $(input).on('select2:select select2:unselect select2:clear', function () {\n                            updateConditionalFields();\n                        });\n                    }\n                });\n\n                \/\/ Initial check\n                updateConditionalFields();\n            });\n        <\/script>\n\n        <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                let isSubmitting = false;\n                \/\/ Strict Latin-only allowlist:\n                \/\/ - Latin letters (including accented Latin letters)\n                \/\/ - Latin combining diacritics block (U+0300-U+036F)\n                \/\/ - Numbers, whitespace\n                \/\/ - ASCII punctuation only\n                const allowedLatinPattern = \/[^\\p{Script=Latin}\\u0300-\\u036F\\p{N}\\p{Zs}\\r\\n\\t!\"#$%&'()*+,\\-.\/:;<=>?@[\\\\\\]^_`{|}~]\/gu;\n                const blockedCharsDetector = \/[^\\p{Script=Latin}\\u0300-\\u036F\\p{N}\\p{Zs}\\r\\n\\t!\"#$%&'()*+,\\-.\/:;<=>?@[\\\\\\]^_`{|}~]\/u;\n                const hasBlockedChars = (value) => blockedCharsDetector.test(value || '');\n                const blockedCharsMessage = 'Please use Latin characters only (A-Z).';\n\n                function getArabicRestrictedFields() {\n                    return form.querySelectorAll('input:not([type=\"hidden\"]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"submit\"]):not([type=\"button\"]):not([type=\"file\"]), textarea');\n                }\n\n                function getErrorContainer(input) {\n                    if (!input || !input.id) return null;\n                    return form.querySelector('#' + input.id + '-error-container');\n                }\n\n                function showNativeBlockedCharsMessage(input) {\n                    if (!input || typeof input.setCustomValidity !== 'function' || typeof input.reportValidity !== 'function') {\n                        return;\n                    }\n                    input.setCustomValidity(blockedCharsMessage);\n                    input.reportValidity();\n                    setTimeout(function () {\n                        input.setCustomValidity('');\n                    }, 1500);\n                }\n\n                function showBlockedCharsMessage(input) {\n                    showNativeBlockedCharsMessage(input);\n                }\n\n                function clearBlockedCharsMessage(input) {\n                    if (input && typeof input.setCustomValidity === 'function') {\n                        input.setCustomValidity('');\n                    }\n                }\n\n                \/\/ Initialize JustValidate with custom styling\n                const validator = new JustValidate('#hr-form-69d8f51d441fc', {\n                    validateBeforeSubmitting: false,\n                    lockForm: true,\n                    focusInvalidField: true,\n                    errorFieldCssClass: 'is-invalid',\n                    successFieldCssClass: 'is-valid',\n                    errorLabelCssClass: 'is-label-invalid',\n                    errorLabelStyle: {\n                        color: '#e3342f',\n                        fontSize: '12px'\n                    },\n                    successFieldStyle: {\n                        borderColor: '#38c172'\n                    },\n                    errorFieldStyle: {\n                        borderColor: '#e3342f'\n                    },\n                    onValidate: ({ target }) => {\n                        \/\/ Handle Select2 validation classes\n                        if ($(target).hasClass('select2-hidden-accessible')) {\n                            const select2Container = $(target).next('.select2-container');\n                            if ($(target).hasClass('is-valid')) {\n                                select2Container.find('.select2-selection').addClass('is-valid').removeClass('is-invalid');\n                            } else if ($(target).hasClass('is-invalid')) {\n                                select2Container.find('.select2-selection').addClass('is-invalid').removeClass('is-valid');\n                            }\n                        }\n                    }\n                });\n                \/\/ Attach validator to form for stepper access\n                form._justValidateInstance = validator;\n\n                \/\/ Add honeypot validation rule\n                validator.addField('input[name=\"hr_website\"]', [\n                    {\n                        rule: 'maxLength',\n                        value: 0,\n                        errorMessage: 'Invalid submission detected'\n                    }\n                ]);\n\n                \/\/ Add validation rules for each field\n                                                            const fieldRules_0 = [];\n                                                                                fieldRules_0.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez saisir votre pr\\u00e9nom.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-firstname', fieldRules_0, { errorsContainer: '#hr-form-firstname-error-container' });\n                                                                                                                                                const fieldRules_1 = [];\n                                                                                fieldRules_1.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez saisir votre nom de famille.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-lastname', fieldRules_1, { errorsContainer: '#hr-form-lastname-error-container' });\n                                                                                                                                                const fieldRules_2 = [];\n                                                                                fieldRules_2.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez saisir une adresse \\u00e9lectronique valide.\"});\n                                                                                fieldRules_2.push({\"rule\":\"email\",\"errorMessage\":\"Veuillez saisir votre adresse \\u00e9lectronique.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-email', fieldRules_2, { errorsContainer: '#hr-form-email-error-container' });\n                                                                                                                                                const fieldRules_3 = [];\n                                                                                fieldRules_3.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez saisir votre num\\u00e9ro de t\\u00e9l\\u00e9phone portable.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-phone', fieldRules_3, { errorsContainer: '#hr-form-phone-error-container' });\n                                                                                                                                                const fieldRules_4 = [];\n                                                                                fieldRules_4.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez s\\u00e9lectionner le type de votre entreprise.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-company-name', fieldRules_4, { errorsContainer: '#hr-form-company-name-error-container' });\n                                                                                                                                                const fieldRules_5 = [];\n                                                                                fieldRules_5.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez s\\u00e9lectionner le type de votre entreprise.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-form-company-type', fieldRules_5, { errorsContainer: '#hr-form-company-type-error-container' });\n                                                                                                                                                                                                                            const fieldRules_7 = [];\n                                                                                fieldRules_7.push({\"rule\":\"required\",\"errorMessage\":\"Veuillez s\\u00e9lectionner une option\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#using-payment-product', fieldRules_7, { errorsContainer: '#using-payment-product-error-container' });\n                                                                                                                                                                                                                                                                                            const fieldRules_9 = [{\"rule\":\"required\",\"errorMessage\":\"Ce champ est n\\u00e9cessaire.\"}];\n                        if (fieldRules_9.length > 0) {\n                            validator.addField('#privacy', fieldRules_9);\n                        }\n                                                                                                                                                const fieldRules_10 = [];\n                        if (fieldRules_10.length > 0) {\n                            validator.addField('#commercial-text', fieldRules_10);\n                        }\n                                    \n                \/\/ Add blur and focus event listeners for all form fields\n                form.querySelectorAll('input, select, textarea').forEach(input => {\n                    \/\/ Only add validation if the input has an ID\n                    if (input.id) {\n                        \/\/ Validate on blur\n                        input.addEventListener('blur', function () {\n                            validator.revalidateField('#' + this.id);\n                        });\n                    }\n                });\n\n                \/\/ Block Arabic characters on typing and pasting.\n                getArabicRestrictedFields().forEach((input) => {\n                    input.addEventListener('beforeinput', function (event) {\n                        if (typeof event.data === 'string' && hasBlockedChars(event.data)) {\n                            event.preventDefault();\n                            showBlockedCharsMessage(this);\n                        }\n                    });\n\n                    input.addEventListener('paste', function (event) {\n                        event.preventDefault();\n                        showBlockedCharsMessage(this);\n                    });\n\n                    input.addEventListener('drop', function (event) {\n                        event.preventDefault();\n                        showBlockedCharsMessage(this);\n                    });\n\n                    input.addEventListener('copy', function (event) {\n                        event.preventDefault();\n                    });\n\n                    \/\/ Fallback for drag-drop\/autofill\/IME edge cases.\n                    input.addEventListener('input', function () {\n                        if (hasBlockedChars(this.value)) {\n                            this.value = this.value.replace(allowedLatinPattern, '');\n                            showBlockedCharsMessage(this);\n                        } else {\n                            clearBlockedCharsMessage(this);\n                        }\n                    });\n                });\n\n                function splitFullNameField(input) {\n                    const fullName = (input.value || '').trim();\n                    const firstTarget = input.getAttribute('data-fullname-first-target');\n                    const lastTarget = input.getAttribute('data-fullname-last-target');\n                    const firstHidden = firstTarget ? form.querySelector('input[type=\"hidden\"][name=\"' + CSS.escape(firstTarget) + '\"]') : null;\n                    const lastHidden = lastTarget ? form.querySelector('input[type=\"hidden\"][name=\"' + CSS.escape(lastTarget) + '\"]') : null;\n\n                    if (!firstHidden || !lastHidden) {\n                        return;\n                    }\n\n                    if (!fullName) {\n                        firstHidden.value = '';\n                        lastHidden.value = '';\n                        return;\n                    }\n\n                    const nameParts = fullName.split(\/\\s+\/).filter(Boolean);\n                    if (nameParts.length === 1) {\n                        firstHidden.value = nameParts[0];\n                        lastHidden.value = '';\n                        return;\n                    }\n\n                    firstHidden.value = nameParts.shift();\n                    lastHidden.value = nameParts.join(' ');\n                }\n\n                function splitAllFullNameFields() {\n                    form.querySelectorAll('input[data-fullname-splitter=\"yes\"]').forEach(function (input) {\n                        splitFullNameField(input);\n                    });\n                }\n\n                \/\/ Split when user blurs the field (including tab navigation)\n                form.querySelectorAll('input[data-fullname-splitter=\"yes\"]').forEach(function (input) {\n                    input.addEventListener('blur', function () {\n                        splitFullNameField(this);\n                    });\n\n                    input.addEventListener('keydown', function (event) {\n                        if (event.key === 'Tab') {\n                            splitFullNameField(this);\n                        }\n                    });\n                });\n\n                \/\/ Handle form submission\n                form.addEventListener('submit', function (e) {\n                    e.preventDefault();\n\n                    if (isSubmitting) {\n                        return;\n                    }\n\n                    \/\/ Check honeypot field\n                    const honeypotField = form.querySelector('input[name=\"hr_website\"]');\n                    if (honeypotField && honeypotField.value !== '') {\n                        \/\/ If honeypot is filled, show error and prevent submission\n                        const submitButton = form.querySelector('.hr-form-submit');\n                        const originalButtonText = submitButton.innerHTML;\n\n                        \/\/ Add error class to form\n                        form.classList.add('hr-form-error');\n\n                        \/\/ Show error message\n                        const errorMessage = document.createElement('div');\n                        errorMessage.className = 'hr-form-error-message';\n                        errorMessage.textContent = 'Invalid submission detected. Please try again.';\n\n                        \/\/ Remove any existing error message\n                        const existingError = form.querySelector('.hr-form-error-message');\n                        if (existingError) {\n                            existingError.remove();\n                        }\n\n                        \/\/ Insert error message after the form\n                        form.parentNode.insertBefore(errorMessage, form.nextSibling);\n\n                        \/\/ Reset form after 3 seconds\n                        setTimeout(() => {\n                            form.classList.remove('hr-form-error');\n                            errorMessage.remove();\n                            form.reset();\n                            submitButton.innerHTML = originalButtonText;\n                            submitButton.disabled = false;\n                            isSubmitting = false;\n                        }, 3000);\n\n                        return;\n                    }\n\n                    \/\/ Ensure hidden first\/last values are synced before submit.\n                    splitAllFullNameFields();\n\n                    $.each(validator.fields, function (index, field) {\n                        if (field.elem.classList.contains('condition-false')) {\n                            field.isValid = true;\n                            \/\/change is-invalid to is-valid\n                            field.elem.classList.remove('is-invalid');\n                            field.elem.classList.add('is-valid');\n                        }\n                    });\n\n                    \/\/ Validate form\n                    if (!validator.isValid) {\n                        return;\n                    }\n\n                    if (validator.isValid) {\n                        isSubmitting = true;\n                        const submitButton = form.querySelector('.hr-form-submit');\n                        const originalButtonText = submitButton.innerHTML;\n                        submitButton.disabled = true;\n                        form.submit();\n                    }\n                });\n\n                \/\/ Add new code to handle submit button state based on validation\n                const submitButton = form.querySelector('.hr-form-submit');\n\n                \/\/ Function to check validation state and update submit button\n                function updateSubmitButtonState() {\n                    const invalidFields = form.querySelectorAll('.is-invalid');\n                    if (invalidFields.length > 0) {\n                        submitButton.disabled = true;\n                    } else {\n                                                    \/\/ If Turnstile is enabled, only enable button if Turnstile is completed\n                            const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                            submitButton.disabled = !turnstileResponse || !turnstileResponse.value;\n                                            }\n                }\n\n                \/\/ Add validation state check on input\/change for all form fields\n                form.querySelectorAll('input, select, textarea').forEach(input => {\n                    ['input', 'change', 'blur'].forEach(eventType => {\n                        input.addEventListener(eventType, () => {\n                            \/\/ Let validation complete before checking state\n                            setTimeout(updateSubmitButtonState, 100);\n                        });\n                    });\n                });\n\n                \/\/ Add validation state check for Select2 fields\n                jQuery('.hr-select2-field').on('select2:select select2:unselect select2:clear', function () {\n                    setTimeout(updateSubmitButtonState, 100);\n                });\n\n                \/\/ Update button state when JustValidate performs validation\n                validator.onValidate(async (validationResult) => {\n                    setTimeout(updateSubmitButtonState, 100);\n                });\n\n                \/\/ Initial button state check\n                updateSubmitButtonState();\n            });\n        <\/script>\n                    <script src=\"https:\/\/hotelrunner.com\/wp-content\/themes\/hotelrunner\/assets\/js\/\/vendor\/mailcheck.min.js\"><\/script>\n            <script>\n                document.addEventListener('DOMContentLoaded', function () {\n                    const form = document.getElementById('hr-form-69d8f51d441fc');\n                    const emailFields = form.querySelectorAll('input[type=\"email\"]');\n                    const suggestionText = 'Did you mean {suggestion}?';\n\n                    emailFields.forEach(function (emailField) {\n                        \/\/ Create suggestion element\n                        const suggestionElement = document.createElement('div');\n                        suggestionElement.className = 'hr-mailcheck-suggestion';\n                        emailField.parentNode.appendChild(suggestionElement);\n\n                        \/\/ Function to check email\n                        function checkEmail() {\n                            if (!emailField.value) return;\n\n                            Mailcheck.run({\n                                email: emailField.value,\n                                suggested: function (suggestion) {\n                                    const text = suggestionText.replace('{suggestion}', suggestion.full);\n                                    suggestionElement.innerHTML = text;\n                                    suggestionElement.dataset.suggestion = suggestion.full;\n                                    suggestionElement.style.display = 'block';\n                                },\n                                empty: function () {\n                                    suggestionElement.style.display = 'none';\n                                }\n                            });\n                        }\n\n                        \/\/ Check on blur\n                        emailField.addEventListener('blur', checkEmail);\n\n                        \/\/ Check while typing after a suggestion has been shown\n                        emailField.addEventListener('input', function () {\n                            if (suggestionElement.style.display === 'block') {\n                                checkEmail();\n                            }\n                        });\n\n                        \/\/ Handle suggestion click\n                        suggestionElement.addEventListener('click', function () {\n                            const suggestion = this.dataset.suggestion;\n                            if (suggestion) {\n                                emailField.value = suggestion;\n                                suggestionElement.style.display = 'none';\n\n                                \/\/ Trigger change event\n                                const event = new Event('change', { bubbles: true });\n                                emailField.dispatchEvent(event);\n\n                                \/\/ Focus the next field if available\n                                const inputs = Array.from(form.querySelectorAll('input:not([type=\"hidden\"]), select, textarea'));\n                                const currentIndex = inputs.indexOf(emailField);\n                                if (currentIndex < inputs.length - 1) {\n                                    inputs[currentIndex + 1].focus();\n                                }\n                            }\n                        });\n                    });\n                });\n            <\/script>\n        \n        \n        <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                const textareas = form.querySelectorAll('textarea');\n\n                textareas.forEach(textarea => {\n                    const maxChars = parseInt(textarea.dataset.maxChars) || 600;\n                    const counter = document.createElement('div');\n                    counter.className = 'hr-char-counter';\n                    counter.textContent = `0\/${maxChars} caract\u00e8res`;\n                    textarea.parentNode.appendChild(counter);\n\n                    \/\/ Update counter on input\n                    textarea.addEventListener('input', function () {\n                        const currentLength = this.value.length;\n                        counter.textContent = `${currentLength}\/${maxChars} caract\u00e8res`;\n\n                        if (currentLength > maxChars) {\n                            counter.classList.add('warning');\n                            textarea.classList.add('limit-reached');\n                            \/\/ Trim the text to max length\n                            this.value = this.value.substring(0, maxChars);\n                            \/\/ Update counter with trimmed length\n                            counter.textContent = `${maxChars}\/${maxChars} + characters`;\n                        } else {\n                            counter.classList.remove('warning');\n                            textarea.classList.remove('limit-reached');\n                        }\n                    });\n\n                    \/\/ Prevent paste of text that would exceed limit\n                    textarea.addEventListener('paste', function (e) {\n                        const pastedText = (e.clipboardData || window.clipboardData).getData('text');\n                        const currentLength = this.value.length;\n                        const remainingChars = maxChars - currentLength;\n\n                        if (pastedText.length > remainingChars) {\n                            e.preventDefault();\n                            const trimmedText = pastedText.substring(0, remainingChars);\n                            document.execCommand('insertText', false, trimmedText);\n                        }\n                    });\n\n                    \/\/ Initial count\n                    textarea.dispatchEvent(new Event('input'));\n                });\n            });\n        <\/script>\n\n        <script>\n            jQuery(document).ready(function ($) {\n                const $form = $('#hr-form-69d8f51d441fc');\n\n                \/\/ Prevent Select2 pre-init visual glitch on first paint.\n                setTimeout(function () {\n                    $form.removeClass('hr-select2-booting');\n                }, 1000);\n\n                \/\/ Initialize Select2 for country selects in this specific form\n                $('#hr-form-69d8f51d441fc .hr-country-select').each(function () {\n                    const $select = $(this);\n                    const formHasFloatingLabels = $select.closest('form').hasClass('hr-form-floating-labels');\n                    \/\/ Disable Select2 placeholder when floating labels are active (label acts as hint)\n                    const placeholder = formHasFloatingLabels ? null : $select.data('placeholder');\n\n                    \/\/ Skip if already initialized\n                    if ($select.hasClass('select2-hidden-accessible')) {\n                        return;\n                    }\n\n                    const countryConfig = {\n                        width: '100%',\n                        placeholder: placeholder,\n                        allowClear: !formHasFloatingLabels,\n                        language: {\n                            noResults: function () {\n                                return 'No countries found';\n                            }\n                        }\n                    };\n                    if (formHasFloatingLabels) {\n                        countryConfig.templateSelection = function (data) {\n                            if (!data.id || data.id === '' || (data.element && $(data.element).hasClass('hr-select-placeholder'))) {\n                                return '';\n                            }\n                            return data.text;\n                        };\n                    }\n                    $select.select2(countryConfig);\n                });\n            });\n        <\/script>\n\n        <script>\n            jQuery(document).ready(function ($) {\n                \/\/ Initialize Select2 for regular select fields in this specific form\n                $('#hr-form-69d8f51d441fc .hr-select2-field').each(function () {\n                    const $select = $(this);\n\n                    \/\/ Skip if already initialized\n                    if ($select.hasClass('select2-hidden-accessible')) {\n                        return;\n                    }\n\n                    const formHasFloatingLabels = $select.closest('form').hasClass('hr-form-floating-labels');\n                    const isMultiple = $select.prop('multiple');\n                    const placeholder = formHasFloatingLabels ? '' : ($select.data('placeholder') || 'Select an option');\n                    const allowClear = formHasFloatingLabels ? false : ($select.data('allow-clear') !== 'no');\n                    const enableSearch = $select.data('enable-search') !== 'no';\n                    const minSelection = parseInt($select.data('min-selection')) || 0;\n                    const searchPlaceholder = $select.data('search-placeholder') || 'Search';\n                    const maxSelection = parseInt($select.data('max-selection')) || 0;\n\n                    const select2Config = {\n                        placeholder: placeholder,\n                        allowClear: allowClear,\n                        width: 'resolve',\n                        searchPlaceholder: 'Search',\n                        multiple: isMultiple,\n                        searchEnabled: enableSearch,\n                        minimumResultsForSearch: enableSearch ? 0 : -1,\n                        language: {\n                            noResults: function () {\n                                return 'No results found';\n                            },\n                            maximumSelected: function (e) {\n                                const message = 'You can only select %s items';\n                                return message.replace('%s', e.maximum);\n                            }\n                        },\n                        templateResult: function (data) {\n                            if (data.loading) return data.text;\n                            if (data.element && $(data.element).hasClass('hr-select-placeholder')) return null;\n                            return data.text;\n                        }\n                    };\n\n                    if (formHasFloatingLabels) {\n                        select2Config.templateSelection = function (data) {\n                            if (!data.id || data.id === '' || (Array.isArray(data.id) && data.id.length === 0) || (data.element && $(data.element).hasClass('hr-select-placeholder'))) {\n                                return '';\n                            }\n                            return data.text;\n                        };\n                    }\n\n                    \/\/ Add maximum selection limit if set\n                    if (isMultiple && maxSelection > 0) {\n                        select2Config.maximumSelectionLength = maxSelection;\n                    }\n\n                    const hasRealSelection = function ($el) {\n                        const value = $el.val();\n                        if (Array.isArray(value)) {\n                            return value.some(function (item) {\n                                return item !== null && item !== undefined && String(item).trim() !== '';\n                            });\n                        }\n                        return value !== null && value !== undefined && String(value).trim() !== '';\n                    };\n\n                    $select.select2(select2Config)\n                        .on('select2:open', function () {\n                            if (enableSearch) {\n                                setTimeout(function () {\n                                    $('.select2-search__field').focus();\n                                }, 0);\n                            }\n                        })\n                        .on('change', function (e) {\n                            const hasSelection = hasRealSelection($(this));\n                            $(this).next('.select2-container').find('.select2-selection--multiple')\n                                .toggleClass('select2-selection--multiple--has-selection', hasSelection);\n\n                            \/\/ Update hidden input for multiple select\n                            if (isMultiple) {\n                                const selectedValues = $(this).val() || [];\n                                const hiddenInput = $(this).siblings('.hr-form-select2-multiple-values');\n                                hiddenInput.val(selectedValues.join(','));\n                            }\n                        });\n\n                    \/\/ Trigger initial state\n                    const hasInitialSelection = hasRealSelection($select);\n                    $select.next('.select2-container').find('.select2-selection--multiple')\n                        .toggleClass('select2-selection--multiple--has-selection', hasInitialSelection);\n\n                    \/\/ Set initial value for hidden input if there are pre-selected values\n                    if (isMultiple && hasInitialSelection) {\n                        const initialValues = $select.val();\n                        const hiddenInput = $select.siblings('.hr-form-select2-multiple-values');\n                        hiddenInput.val(initialValues.join(','));\n                    }\n                });\n            });\n        <\/script>\n\n        <script>\n            \/\/ Create unique callback function for this form instance\n            window['onTurnstileCallback_hr-form-69d8f51d441fc'] = function () {\n                \/\/ Enable submit button when Turnstile is ready\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                const submitButton = form.querySelector('.hr-form-submit');\n                if (submitButton) {\n                    submitButton.disabled = false;\n                }\n            };\n\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-69d8f51d441fc');\n                const submitButton = form.querySelector('.hr-form-submit');\n\n                \/\/ Disable submit button initially if Turnstile is enabled\n                                    if (submitButton) {\n                        submitButton.disabled = true;\n                    }\n\n                    \/\/ Initialize Turnstile when the script is ready\n                    function initTurnstile() {\n                        if (typeof turnstile !== 'undefined') {\n                            const turnstileContainer = form.querySelector('.cf-turnstile:not([data-widget-id])');\n                            if (turnstileContainer && !turnstileContainer.hasAttribute('data-widget-id')) {\n                                turnstile.render(turnstileContainer);\n                            }\n                        } else {\n                            setTimeout(initTurnstile, 100);\n                        }\n                    }\n                    initTurnstile();\n                \n                form.addEventListener('submit', function (e) {\n                                            const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                        if (!turnstileResponse || !turnstileResponse.value) {\n                            e.preventDefault();\n                            alert('Please wait for the security check to complete.');\n                            return false;\n                        }\n                    \n                    const formData = new FormData(form);\n                    const thankYouData = {};\n                    const fieldsToCapture = [\"hr-form-firstname\",\"hr-form-lastname\",\"hr-form-email\",\"hr-form-phone\",\"hr-form-company-name\",\"hr-form-company-type\",\"hr-country\",\"using-payment-product\",\"form_name\",\"privacy\",\"commercial-text\",\"hr_ip_address\",\"hr_browser_info\",\"hr_primary_language\",\"hr_all_languages\",\"hr_window_size\",\"hr_timezone_name\",\"hr_current_url\",\"hr_referrer_url\",\"hr_page_load_time\"];\n                    if (fieldsToCapture && fieldsToCapture.length) {\n                        fieldsToCapture.forEach(function(fieldName) {\n                            if (formData.has(fieldName)) {\n                                thankYouData[fieldName] = formData.get(fieldName);\n                            }\n                        });\n                    }\n                    sessionStorage.setItem('formSessionData', JSON.stringify(thankYouData));\n                });\n            });\n\n            \/\/ Global callback when Turnstile script is loaded\n            window.onTurnstileLoad = function () {\n                \/\/ Render all Turnstile widgets that haven't been rendered yet\n                document.querySelectorAll('.cf-turnstile:not([data-widget-id])').forEach(function (element) {\n                    if (!element.hasAttribute('data-widget-id')) {\n                        turnstile.render(element);\n                    }\n                });\n            };\n        <\/script>\n\n        <script>\n            jQuery(document).ready(function () {\n                const $currentForm = jQuery('#hr-form-69d8f51d441fc');\n                \n                \/\/ Function to validate step fields\n                function validateStepFields($stepFields, shouldShowError = true) {\n                    var validator = $currentForm.length > 0 && $currentForm[0]._justValidateInstance;\n\n                    \/\/ If validator is not ready, wait a bit and try again\n                    if (!validator) {\n                        return new Promise((resolve) => {\n                            setTimeout(() => {\n                                resolve(validateStepFields($stepFields, shouldShowError));\n                            }, 100);\n                        });\n                    }\n\n                    var allFieldsValid = true;\n                    var validationPromises = [];\n\n                    \/\/ Force validation of all fields in the step\n                    $stepFields.find('input, select, textarea').each(function () {\n                        if (this.id) {\n                            \/\/ Mark the field as touched to ensure validation runs\n                            jQuery(this).addClass('was-validated');\n                            try {\n                                \/\/ For Select2 fields, ensure the value is properly set before validation\n                                if (jQuery(this).hasClass('hr-select2-field')) {\n                                    const value = jQuery(this).val();\n                                    \/\/ For required fields, empty array or null\/undefined is invalid\n                                    if (jQuery(this).prop('required') && (!value || (Array.isArray(value) && value.length === 0))) {\n                                        jQuery(this).addClass('is-invalid').removeClass('is-valid');\n                                        const select2Container = jQuery(this).next('.select2-container');\n                                        select2Container.find('.select2-selection').addClass('is-invalid').removeClass('is-valid');\n                                        allFieldsValid = false;\n                                    } else {\n                                        jQuery(this).addClass('is-valid').removeClass('is-invalid');\n                                        const select2Container = jQuery(this).next('.select2-container');\n                                        select2Container.find('.select2-selection').addClass('is-valid').removeClass('is-invalid');\n                                    }\n                                }\n\n                                \/\/ Store the validation promise\n                                validationPromises.push(\n                                    validator.revalidateField('#' + this.id)\n                                        .then(isValid => {\n                                            if (!isValid) {\n                                                allFieldsValid = false;\n                                            }\n                                        })\n                                        .catch(error => {\n                                            allFieldsValid = false;\n                                        })\n                                );\n                            } catch (error) {\n                                allFieldsValid = false;\n                            }\n                        }\n                    });\n\n                    \/\/ Return a promise that resolves when all validations are complete\n                    return Promise.all(validationPromises).then(() => allFieldsValid);\n                }\n\n                \/\/ Handle Select2 events for this form only\n                $currentForm.find('.hr-select2-field').on('select2:select select2:unselect select2:clear', function () {\n                    const $field = jQuery(this);\n                    const value = $field.val();\n                    const isRequired = $field.prop('required');                    \n                    \/\/ Update validation state\n                    if (isRequired && (!value || (Array.isArray(value) && value.length === 0))) {\n                        $field.addClass('is-invalid').removeClass('is-valid');\n                        const select2Container = $field.next('.select2');\n                        select2Container.addClass('is-invalid').removeClass('is-valid');\n                    } else {\n                        $field.addClass('is-valid').removeClass('is-invalid');\n                        const select2Container = $field.next('.select2');\n                        select2Container.addClass('is-valid').removeClass('is-invalid');\n                    }\n\n                    \/\/ Trigger validation\n                    if (this.id) {\n                        var validator = $currentForm[0] && $currentForm[0]._justValidateInstance;\n                        if (validator) {\n                            validator.revalidateField('#' + this.id);\n                        }\n                    }\n                });\n                \n                \/\/ Handle country select events for this form only\n                $currentForm.find('.hr-country-select').on('select2:select select2:unselect select2:clear', function () {\n                    const $field = jQuery(this);\n                    const value = $field.val();\n                    const isRequired = $field.prop('required');                    \n                    \/\/ Update validation state\n                    if (isRequired && (!value || (Array.isArray(value) && value.length === 0))) {\n                        $field.addClass('is-invalid').removeClass('is-valid');\n                        const select2Container = $field.next('.select2');\n                        select2Container.addClass('is-invalid').removeClass('is-valid');\n                    } else {\n                        $field.addClass('is-valid').removeClass('is-invalid');\n                        const select2Container = $field.next('.select2');\n                        select2Container.addClass('is-valid').removeClass('is-invalid');\n                    }\n\n                    \/\/ Trigger validation\n                    if (this.id) {\n                        var validator = $currentForm[0] && $currentForm[0]._justValidateInstance;\n                        if (validator) {\n                            validator.revalidateField('#' + this.id);\n                        }\n                    }\n                });\n\n                \/\/ Handle field blur events for validation in this form only\n                $currentForm.on('blur', 'input, select, textarea', function () {\n                    if (this.id) {\n                        jQuery(this).addClass('was-validated');\n                        var validator = $currentForm[0] && $currentForm[0]._justValidateInstance;\n                        if (validator) {\n                            validator.revalidateField('#' + this.id);\n                        }\n                    }\n                });\n\n                $currentForm.find('.hr-form-step-next').on('click', async function () {\n                    var $currentStepFields = jQuery(this).closest('.hr-form-step-fields');\n                    var currentStepIndex = $currentStepFields.data('step-index');\n                    var $stepNavigation = $currentForm.find('.hr-form-step-nav');\n\n                    \/\/ Disable the button while validating\n                    jQuery(this).prop('disabled', true);\n\n                    try {\n                        \/\/ Force validation of all fields in current step\n                        const allFieldsValid = await validateStepFields($currentStepFields, true);\n\n                        if (allFieldsValid) {\n                            \/\/ Update step navigation\n                            $stepNavigation.removeClass('active');\n                            $stepNavigation.filter('[data-step-index=\"' + (currentStepIndex + 1) + '\"]').addClass('active');\n\n                            \/\/ Hide current step and show next step\n                            $currentStepFields.hide();\n                            $currentForm.find('.hr-form-step-fields[data-step-index=\"' + (currentStepIndex + 1) + '\"]').show();\n                        }\n                    } catch (error) {\n                        \/\/ Error during validation\n                    } finally {\n                        \/\/ Re-enable the button\n                        jQuery(this).prop('disabled', false);\n                    }\n                });\n\n                $currentForm.find('.hr-form-step-prev').on('click', function () {\n                    var $currentStepFields = jQuery(this).closest('.hr-form-step-fields');\n                    var currentStepIndex = $currentStepFields.data('step-index');\n                    var $stepNavigation = $currentForm.find('.hr-form-step-nav');\n\n                    \/\/ Clear any existing validation errors before moving back\n                    $currentStepFields.find('.hr-form-step-error').remove();\n\n                    \/\/ Update step navigation\n                    $stepNavigation.removeClass('active');\n                    $stepNavigation.filter('[data-step-index=\"' + (currentStepIndex - 1) + '\"]').addClass('active');\n\n                    \/\/ Hide current step and show previous step\n                    $currentStepFields.hide();\n                    $currentForm.find('.hr-form-step-fields[data-step-index=\"' + (currentStepIndex - 1) + '\"]').show();\n                });\n\n                \/\/ Initialize active state for the first step on load\n                $currentForm.find('.hr-form-step-nav[data-step-index=\"0\"]').addClass('active');\n            });\n        <\/script>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":0,"template":"","product_type":[336],"class_list":["post-131074","product","type-product","status-publish","hentry","product_type-entreprises-de-voyage"],"acf":[],"_links":{"self":[{"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/product\/131074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/types\/product"}],"version-history":[{"count":2,"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/product\/131074\/revisions"}],"predecessor-version":[{"id":140000,"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/product\/131074\/revisions\/140000"}],"wp:attachment":[{"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/media?parent=131074"}],"wp:term":[{"taxonomy":"product_type","embeddable":true,"href":"https:\/\/hotelrunner.com\/fr\/wp-json\/wp\/v2\/product_type?post=131074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}