{"id":68694,"date":"2024-09-19T07:44:04","date_gmt":"2024-09-19T07:44:04","guid":{"rendered":"https:\/\/hotelrunner.com\/?post_type=product&#038;p=68694"},"modified":"2026-06-16T14:34:39","modified_gmt":"2026-06-16T11:34:39","slug":"acciones-autonomas-autopilot","status":"publish","type":"product","link":"https:\/\/hotelrunner.com\/es\/productos\/acciones-autonomas-autopilot\/","title":{"rendered":"Acciones aut\u00f3nomas | Autopilot"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"68694\" class=\"elementor elementor-68694 elementor-68181\" data-elementor-post-type=\"product\">\n\t\t\t\t<div class=\"elementor-element elementor-element-687f25c e-flex e-con-boxed e-con e-parent\" data-id=\"687f25c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-66967f4 e-con-full e-flex e-con e-child\" data-id=\"66967f4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-94dec11 e-con-full e-flex e-con e-child\" data-id=\"94dec11\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b1b7bb2 e-con-full e-flex e-con e-child\" data-id=\"b1b7bb2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b68c184 elementor-widget elementor-widget-hr_label_icon hr-gb-active-desktop hr-gb-active-tablet hr-gb-active-mobile\" data-id=\"b68c184\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_label_icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"hr-label icon\">\n                <div class=\"label-icon-wrapper\">\n                                            <img decoding=\"async\" src=\"https:\/\/staging-sites.hotelrunner.com\/wp-content\/uploads\/2026\/06\/ai-icon-1.svg\" alt=\"\">\n                                        <span>Acciones aut\u00f3nomas | Autopilot<\/span>\n                <\/div>\n            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8ad3d6f elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"8ad3d6f\" 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\">Transforme su negocio con la automatizaci\u00f3n inteligente basada en IA\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61d9511 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"61d9511\" 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\tHotelRunner Autopilot es su plataforma de automatizaci\u00f3n inteligente con tecnolog\u00eda de IA que redefine la forma en que gestiona los precios, la distribuci\u00f3n, los pagos y las operaciones diarias.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-96c35c8 e-con-full e-flex e-con e-child\" data-id=\"96c35c8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-afb936f e-con-full e-flex e-con e-child\" data-id=\"afb936f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62e1856 elementor-widget-mobile__width-initial elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"62e1856\" 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\tAumento del ADR\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-233aeaa elementor-widget elementor-widget-text-editor\" data-id=\"233aeaa\" 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\t7.5%\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-07e6d57 e-con-full e-flex e-con e-child\" data-id=\"07e6d57\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ffd869a elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"ffd869a\" 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\tAcciones diarias\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-aad7d29 elementor-widget elementor-widget-text-editor\" data-id=\"aad7d29\" 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+700\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c44d7e8 e-con-full e-flex e-con e-child\" data-id=\"c44d7e8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11267b7 elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"11267b7\" 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\tAcciones de aumento de precio\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-026b944 elementor-widget elementor-widget-text-editor\" data-id=\"026b944\" 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\t96%\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d608562 e-flex e-con-boxed e-con e-child\" data-id=\"d608562\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c9a3e5e elementor-widget__width-auto elementor-widget-mobile__width-inherit elementor-widget elementor-widget-hr_button\" data-id=\"c9a3e5e\" 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 class=\"btn custom has-icon icon-left\" href=\"#\" rel=\"nofollow\" video-popup=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Autopilot_EN.webm\">\n                                    <svg class=\"btn-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"overflow: visible;display: block\"><path d=\"M1.63058 0.220492C0.730075 -0.296653 0 0.126998 0 1.16599V8.83326C0 9.87329 0.730075 10.2964 1.63058 9.77974L8.32439 5.93642C9.2252 5.4191 9.2252 4.58095 8.32439 4.06374L1.63058 0.220492Z\" fill=\"currentColor\" \/><\/svg>                                <span class=\"btn-text\">Ver video<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e92657c elementor-widget__width-auto elementor-widget-mobile__width-inherit elementor-widget elementor-widget-hr_button\" data-id=\"e92657c\" 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 class=\"btn custom has-no-icon\" href=\"#form\">\n                                <span class=\"btn-text\">Pida una prueba<\/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\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f394480 e-con-full elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex e-con e-child\" data-id=\"f394480\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8035f4f elementor-widget elementor-widget-hr_hovering_effect_image\" data-id=\"8035f4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_hovering_effect_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div\n            class=\"hr-hovering-effect-image hr-hovering-effect-image--blur-on-hover\">\n            <div class=\"hr-hovering-effect-image__inner\">\n                \t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1236\" height=\"1200\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/autopilot-hero-right-1.webp\" class=\"attachment-full size-full wp-image-142986\" alt=\"\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/autopilot-hero-right-1.webp 1236w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/autopilot-hero-right-1-375x364.webp 375w\" sizes=\"(max-width: 1236px) 100vw, 1236px\">\t\t\t\t\t\t\t\t\t\t\t                                    <div class=\"hr-hovering-effect-image__overlay\">\n                                                    <a class=\"hr-hovering-effect-image__button has-icon icon-left\" href=\"#\" video-popup=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Autopilot_EN.webm\"                                href=\"#\">\n                                <svg class=\"btn-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"overflow: visible;display: block\"><path d=\"M2.35529 0.308689C1.05455 -0.415314 0 0.177798 0 1.63238V12.3666C0 13.8226 1.05455 14.4149 2.35529 13.6916L12.0241 8.31099C13.3253 7.58673 13.3253 6.41333 12.0241 5.68924L2.35529 0.308689Z\" fill=\"currentColor\" \/><\/svg>                                <span class=\"btn-text\">Ver video<\/span>\n                                                            <\/a>\n                                            <\/div>\n                            <\/div>\n        <\/div>\n\n        <style>\n            .hr-hovering-effect-image .hr-hovering-effect-image__inner {\n                position: relative;\n                display: inline-block;\n                width: 100%;\n            }\n\n            .hr-hovering-effect-image .elementor-image {\n                width: 100%;\n            }\n\n            .hr-hovering-effect-image .elementor-image img {\n                display: block;\n                width: 100%;\n                transition: filter 0.28s ease;\n                will-change: filter;\n            }\n\n            .hr-hovering-effect-image.hr-hovering-effect-image--blur-on-hover .hr-hovering-effect-image__inner:hover img {\n                filter: blur(2px);\n            }\n\n            .hr-hovering-effect-image .hr-hovering-effect-image__overlay {\n                position: absolute;\n                top: 0;\n                left: 0;\n                opacity: 0;\n                visibility: hidden;\n                pointer-events: none;\n                transition: opacity 0.22s ease, visibility 0.22s ease;\n                z-index: 2;\n                width: 100%;\n                height: 100%;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n            }\n\n            .hr-hovering-effect-image:hover .hr-hovering-effect-image__overlay {\n                opacity: 1;\n                visibility: visible;\n                pointer-events: auto;\n            }\n\n            .hr-hovering-effect-image .hr-hovering-effect-image__button {\n                display: inline-flex;\n                align-items: center;\n                justify-content: center;\n                white-space: nowrap;\n                text-decoration: none;\n                line-height: 1;\n                z-index: 3;\n                position: relative;\n                opacity: 0;\n                transform: scale(0.98);\n                transition: opacity 0.36s cubic-bezier(0.22, 1, 0.36, 1), transform 0.36s cubic-bezier(0.22, 1, 0.36, 1);\n                will-change: opacity, transform;\n            }\n\n            .hr-hovering-effect-image:hover .hr-hovering-effect-image__button {\n                opacity: 1;\n                transform: scale(1);\n            }\n\n            .hr-hovering-effect-image.hr-hovering-effect-image--blur-on-hover:hover .hr-hovering-effect-image__button {\n                transition-delay: 0.10s;\n            }\n\n            .hr-hovering-effect-image.hr-hovering-effect-image--blur-on-hover .hr-hovering-effect-image__inner:not(:hover) .hr-hovering-effect-image__button,\n            .hr-hovering-effect-image:not(.hr-hovering-effect-image--blur-on-hover) .hr-hovering-effect-image__inner:not(:hover) .hr-hovering-effect-image__button {\n                transition-delay: 0s;\n            }\n        <\/style>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-581329f e-flex e-con-boxed e-con e-parent\" data-id=\"581329f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b7dc0c6 e-con-full e-flex e-con e-child\" data-id=\"b7dc0c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e3ceeed e-con-full e-flex e-con e-child\" data-id=\"e3ceeed\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8208453 elementor-widget elementor-widget-image\" data-id=\"8208453\" 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\" width=\"1000\" height=\"982\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Adapt-instantly-to-market-shifts-1.webp\" class=\"attachment-full size-full wp-image-142990\" alt=\"\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Adapt-instantly-to-market-shifts-1.webp 1000w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Adapt-instantly-to-market-shifts-1-371x364.webp 371w\" sizes=\"(max-width: 1000px) 100vw, 1000px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e962c88 e-con-full e-flex e-con e-child\" data-id=\"e962c88\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f4c15c elementor-widget elementor-widget-hr_label\" data-id=\"4f4c15c\" 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\">Automatizaci\u00f3n inteligente<\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b4adca elementor-widget__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"3b4adca\" 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\">Ad\u00e1ptese al instante a los cambios del mercado\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c037fa5 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"c037fa5\" 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\tHotelRunner Autopilot supervisa continuamente la ocupaci\u00f3n, la demanda, las tarifas de la competencia, las opiniones, los cambios en las reservas, el estado de los pagos y los niveles de inventario en tiempo real.<br><br>Mediante desencadenantes programados y basados en eventos, ajusta autom\u00e1ticamente los precios, la disponibilidad, los flujos de trabajo y las alertas internas para mantener su propiedad rentable, protegida y operativamente eficiente en todo momento.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e2c97f4 e-con-full e-flex e-con e-child\" data-id=\"e2c97f4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-837293b e-con-full e-flex e-con e-child\" data-id=\"837293b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd1603b elementor-widget elementor-widget-image\" data-id=\"cd1603b\" 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\" width=\"1000\" height=\"982\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Advanced-Pricing-Intelligence-1.webp\" class=\"attachment-full size-full wp-image-142994\" alt=\"\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Advanced-Pricing-Intelligence-1.webp 1000w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Advanced-Pricing-Intelligence-1-371x364.webp 371w\" sizes=\"(max-width: 1000px) 100vw, 1000px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-77f4f2a e-con-full e-flex e-con e-child\" data-id=\"77f4f2a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d2541d elementor-widget elementor-widget-hr_label\" data-id=\"9d2541d\" 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\">Inteligencia avanzada de precios <\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2bff0df elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"2bff0df\" 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\">Maximice los ingresos con precios en tiempo real basados en la competencia<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fd347b6 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"fd347b6\" 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\tAutopilot permite comparar su oferta con la de la competencia y ajustar din\u00e1micamente sus precios en funci\u00f3n de datos de mercado en tiempo real.\n<br><br>Venda cada habitaci\u00f3n al precio adecuado, en el momento adecuado, y mant\u00e9ngase a la vanguardia de cada cambio del mercado.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c20de42 e-con-full e-flex e-con e-child\" data-id=\"c20de42\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e39c51d e-con-full e-flex e-con e-child\" data-id=\"e39c51d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eaf8036 elementor-widget elementor-widget-hr_label\" data-id=\"eaf8036\" 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\">Inteligencia de inventario y protecci\u00f3n de ingresos<\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b157774 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"b157774\" 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\">Proteja la disponibilidad, optimice la distribuci\u00f3n y evite la p\u00e9rdida de ingresos antes de que se produzca.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-006ce98 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"006ce98\" 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\tAutopilot supervisa el inventario y el comportamiento de las reservas en tiempo real para, de forma autom\u00e1tica:\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-58180fe e-con-full e-grid e-con e-child\" data-id=\"58180fe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-1695c68 e-con-full e-flex e-con e-child\" data-id=\"1695c68\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11b248b elementor-widget elementor-widget-html\" data-id=\"11b248b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\">\n  <path d=\"M19.2857 2.06228H17.0414C16.6541 0.597587 15.1063 -0.287576 13.5843 0.0852027C12.575 0.332433 11.7869 1.09092 11.53 2.06228H0.714299C0.319796 2.06228 0 2.37005 0 2.74971C0 3.12938 0.319796 3.43715 0.714299 3.43715H11.53C11.9173 4.90184 13.4651 5.787 14.9871 5.41422C15.9964 5.16699 16.7845 4.40851 17.0414 3.43715H19.2857C19.6802 3.43715 20 3.12938 20 2.74971C20 2.37005 19.6802 2.06228 19.2857 2.06228Z\" fill=\"white\"\/>\n  <path d=\"M19.2857 8.24905H7.75571C7.36837 6.78435 5.82057 5.89919 4.2986 6.27197C3.28928 6.5192 2.50116 7.27769 2.24426 8.24905H0.714299C0.319796 8.24905 0 8.55681 0 8.93648C0 9.31615 0.319796 9.62388 0.714299 9.62388H2.24431C2.63165 11.0886 4.17945 11.9737 5.70142 11.601C6.71074 11.3537 7.49887 10.5952 7.75576 9.62388H19.2857C19.6802 9.62388 20 9.31611 20 8.93644C20 8.55677 19.6802 8.24905 19.2857 8.24905Z\" fill=\"white\"\/>\n  <path d=\"M19.2857 14.4361H15.6128C15.2255 12.9714 13.6777 12.0862 12.1557 12.459C11.1464 12.7062 10.3583 13.4647 10.1014 14.4361H0.714299C0.319796 14.4361 0 14.7438 0 15.1235C0 15.5031 0.319796 15.8109 0.714299 15.8109H10.1014C10.4888 17.2756 12.0366 18.1607 13.5585 17.788C14.5679 17.5407 15.356 16.7822 15.6129 15.8109H19.2857C19.6802 15.8109 20 15.5031 20 15.1235C20 14.7438 19.6802 14.4361 19.2857 14.4361Z\" fill=\"white\"\/>\n<\/svg>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea6a239 elementor-widget elementor-widget-heading\" data-id=\"ea6a239\" 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\">Proteger las fechas de alta demanda ajustando los precios y la disponibilidad<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-abb3dfc e-con-full e-flex e-con e-child\" data-id=\"abb3dfc\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-be286ff elementor-widget elementor-widget-html\" data-id=\"be286ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18.2258 11.8171C17.5704 11.4435 17.1633 10.7476 17.1633 10C17.1633 9.25287 17.5704 8.55693 18.2239 8.18372C18.8946 7.80221 19.1736 7.00949 18.8869 6.29899C18.5277 5.4015 18.0385 4.56324 17.4366 3.80715C16.957 3.20517 16.1239 3.04751 15.4532 3.43148C14.7997 3.80715 13.9857 3.80828 13.3303 3.43431C12.6768 3.06034 12.2717 2.36327 12.2736 1.6144C12.2736 0.84831 11.7194 0.212521 10.9532 0.102871C9.99015 -0.0351385 9.01183 -0.034372 8.04493 0.105695C7.28059 0.216111 6.72648 0.851537 6.72835 1.6161C6.72835 2.36404 6.32323 3.0607 5.66975 3.43431C5.01432 3.80787 4.20223 3.80711 3.54684 3.43185C2.87616 3.04787 2.04303 3.2063 1.56341 3.80828C1.26532 4.18338 0.990139 4.58438 0.747496 5.00087C0.504812 5.41663 0.292709 5.8524 0.113102 6.29536C-0.175452 7.00699 0.103561 7.80084 0.774244 8.18332C1.42968 8.55653 1.83668 9.25283 1.83668 10C1.83668 10.7472 1.42968 11.4429 0.77616 11.8167C0.105477 12.1982 -0.173495 12.9905 0.113102 13.7008C0.472357 14.5989 0.961516 15.4372 1.56341 16.1929C2.04303 16.7948 2.87616 16.9525 3.54684 16.5685C4.20036 16.1929 5.01436 16.1921 5.66975 16.5657C6.32323 16.9397 6.72835 17.6367 6.72835 18.3856C6.72644 19.1515 7.28247 19.7873 8.04681 19.8972C8.52642 19.9658 9.00796 20 9.48945 20C9.97865 20 10.4678 19.9648 10.9551 19.8943C11.7194 19.7837 12.2735 19.1488 12.2735 18.3843C12.2716 17.636 12.6767 16.9393 13.3302 16.5657C13.9856 16.1921 14.7977 16.1929 15.4531 16.5682C16.1238 16.9521 16.9569 16.7941 17.4365 16.1917C17.7346 15.8164 18.0098 15.4154 18.2524 14.9995C18.4932 14.5838 18.7092 14.148 18.8868 13.7046C19.1755 12.993 18.8965 12.199 18.2258 11.8171ZM12.0997 11.4855C11.7003 12.1725 11.0525 12.6643 10.2768 12.8696C9.50291 13.0749 8.6927 12.9696 7.99906 12.5726C6.56595 11.7535 6.07296 9.93348 6.90034 8.51457C7.45449 7.56282 8.46722 7.03007 9.50478 7.03007C10.015 7.03007 10.529 7.15787 11.001 7.42747C12.4341 8.24629 12.9271 10.0669 12.0997 11.4855Z\" fill=\"white\"\/>\n<\/svg>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef9ba44 elementor-widget elementor-widget-heading\" data-id=\"ef9ba44\" 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\">Recibir actualizaciones por correo electr\u00f3nico sobre el estado de los canales y el inventario para un control manual<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e9fe649 e-con-full e-flex e-con e-child\" data-id=\"e9fe649\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-abe07a5 elementor-widget elementor-widget-html\" data-id=\"abe07a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n  <path d=\"M6.72975 17.3995C7.03365 17.4929 7.33123 17.263 7.3924 16.951C7.4723 16.5434 7.61844 16.137 7.83797 15.7436L11.0176 10.0477C12.5626 7.28006 16.5448 7.28006 18.0898 10.0477C18.1105 10.0848 18.1659 10.0744 18.1712 10.0323C18.2187 9.66007 18.2432 9.28061 18.2432 8.89547C18.2432 3.98266 14.2606 0 9.34773 0C4.43489 0 0.452243 3.98266 0.452243 8.89547C0.452243 10.0662 0.678372 11.184 1.08934 12.2077C1.17935 12.4319 1.19888 12.6796 1.13114 12.9114L0.0420225 16.639C-0.18605 17.4197 0.552839 18.137 1.32638 17.8859L4.62189 16.8164C4.88889 16.7297 5.17856 16.7605 5.4305 16.8843C5.84634 17.0885 6.28046 17.2614 6.72975 17.3995Z\" fill=\"white\"\/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.7329 20.2486C19.6652 20.2486 20.8848 18.1709 19.943 16.4838L16.7633 10.7879C15.7977 9.05801 13.3089 9.05801 12.3432 10.7879L9.16355 16.4838C8.22178 18.1709 9.44136 20.2486 11.3736 20.2486H17.7329ZM15.3124 13.0461C15.3124 12.6268 14.9725 12.2868 14.5531 12.2868C14.1337 12.2868 13.7937 12.6268 13.7937 13.0461L13.7938 15.0826C13.7938 15.502 14.1338 15.842 14.5532 15.842C14.9725 15.842 15.3125 15.502 15.3125 15.0826L15.3124 13.0461ZM15.3125 17.3062C15.3125 16.8867 14.9725 16.5468 14.5532 16.5468C14.1338 16.5468 13.7938 16.8868 13.7938 17.3062V17.4511C13.7938 17.8705 14.1338 18.2105 14.5532 18.2105C14.9725 18.2105 15.3125 17.8705 15.3125 17.4511V17.3062Z\" fill=\"white\"\/>\n<\/svg>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bbf617e elementor-widget elementor-widget-heading\" data-id=\"bbf617e\" 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\">Recibir alertas de cancelaci\u00f3n en tiempo real en todos los canales<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36c5a49 e-con-full e-flex e-con e-child\" data-id=\"36c5a49\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df45353 elementor-widget elementor-widget-html\" data-id=\"df45353\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"20\" viewBox=\"0 0 18 20\" fill=\"none\">\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.9109 19.9998H9.53253C8.78709 19.9998 8.09858 19.598 7.72494 18.945C7.35131 18.2929 7.34856 17.4873 7.71852 16.8324L10.9077 11.1766C11.2795 10.5171 11.9717 10.1106 12.7217 10.1106C13.4708 10.1106 14.163 10.5171 14.5357 11.1766L17.7249 16.8324C18.094 17.4873 18.0912 18.2929 17.7176 18.945C17.344 19.598 16.6554 19.9998 15.9109 19.9998ZM12.7217 17.0873C12.3417 17.0873 12.0332 17.3998 12.0332 17.785C12.0332 18.1691 12.3417 18.4826 12.7217 18.4826C13.1018 18.4826 13.4102 18.1691 13.4102 17.785C13.4102 17.3998 13.1018 17.0873 12.7217 17.0873ZM12.0332 13.3664V15.2268C12.0332 15.611 12.3417 15.9245 12.7217 15.9245C13.1018 15.9245 13.4102 15.611 13.4102 15.2268V13.3664C13.4102 12.9813 13.1018 12.6687 12.7217 12.6687C12.3417 12.6687 12.0332 12.9813 12.0332 13.3664Z\" fill=\"white\"\/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.36895 19.9999H2.52456C1.85532 19.9999 1.21362 19.7301 0.739925 19.251C0.266226 18.771 0 18.1199 0 17.4417V2.55812C0 1.87999 0.266226 1.22883 0.739925 0.748832C1.21362 0.269766 1.85532 0 2.52456 0H10.224C10.8932 0 11.5349 0.269766 12.0086 0.748832L15.5237 4.31067C15.9965 4.79067 16.2627 5.4409 16.2627 6.11903V12.3646L15.3328 10.7153C14.7976 9.76552 13.8006 9.18041 12.7219 9.18041C11.6423 9.18041 10.6463 9.76552 10.1102 10.7153L6.92096 16.3711C6.38942 17.3143 6.3931 18.4724 6.93106 19.412C7.05499 19.6278 7.20187 19.825 7.36895 19.9999ZM10.5251 1.33022V4.88369C10.5251 5.1302 10.6215 5.36741 10.7941 5.54136C10.9658 5.71624 11.1999 5.81392 11.4431 5.81392H14.95C14.86 5.61299 14.7342 5.42787 14.5773 5.2688L11.0631 1.7079C10.9061 1.54883 10.7234 1.42139 10.5251 1.33022ZM3.90159 8.83715H9.40971C9.78977 8.83715 10.0982 8.5246 10.0982 8.13948C10.0982 7.75437 9.78977 7.44181 9.40971 7.44181H3.90159C3.52153 7.44181 3.21307 7.75437 3.21307 8.13948C3.21307 8.5246 3.52153 8.83715 3.90159 8.83715ZM3.90159 11.6278H6.65565C7.03571 11.6278 7.34417 11.3153 7.34417 10.9302C7.34417 10.545 7.03571 10.2325 6.65565 10.2325H3.90159C3.52153 10.2325 3.21307 10.545 3.21307 10.9302C3.21307 11.3153 3.52153 11.6278 3.90159 11.6278ZM3.90159 6.04647H6.65565C7.03571 6.04647 7.34417 5.73392 7.34417 5.3488C7.34417 4.96369 7.03571 4.65113 6.65565 4.65113H3.90159C3.52153 4.65113 3.21307 4.96369 3.21307 5.3488C3.21307 5.73392 3.52153 6.04647 3.90159 6.04647Z\" fill=\"white\"\/>\n<\/svg>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-de31f41 elementor-widget elementor-widget-heading\" data-id=\"de31f41\" 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\">Realizar un seguimiento de los cambios clave en las reservas por correo electr\u00f3nico para poder actuar a tiempo<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c438840 e-con-full e-flex e-con e-child\" data-id=\"c438840\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7bf6fee e-con-full e-flex e-con e-child\" data-id=\"7bf6fee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fc13218 elementor-widget elementor-widget-image\" data-id=\"fc13218\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"958\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/payment-automation-1.webp\" class=\"attachment-full size-full wp-image-142998\" alt=\"\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/payment-automation-1.webp 1000w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/payment-automation-1-380x364.webp 380w\" sizes=\"(max-width: 1000px) 100vw, 1000px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8509700 e-con-full e-flex e-con e-child\" data-id=\"8509700\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-91ca0de elementor-widget elementor-widget-hr_label\" data-id=\"91ca0de\" 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\">Automatizaci\u00f3n de pagos<\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-985d10a elementor-widget__width-inherit elementor-widget-mobile__width-inherit elementor-widget-laptop__width-initial elementor-widget elementor-widget-heading\" data-id=\"985d10a\" 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\">Asegure su flujo de caja con flujos de trabajo inteligentes<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-970782e elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"970782e\" 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\tAsegure su flujo de caja con flujos de trabajo inteligentes que le ayuden a actuar ante problemas de pago. Identifique las reservas incompletas ocasionadas por pagos fallidos en su motor de reservas y reciba alertas que permitan a su equipo dar seguimiento a los hu\u00e9spedes y gestionar posibles riesgos financieros.\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-e3ed7b9 elementor-widget__width-auto elementor-widget-mobile__width-inherit elementor-widget elementor-widget-hr_button\" data-id=\"e3ed7b9\" 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 class=\"btn custom has-no-icon\" href=\"#form\">\n                                <span class=\"btn-text\">Pida una prueba<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2abb21b e-con-full e-flex e-con e-child\" data-id=\"2abb21b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f684fb5 e-con-full e-flex e-con e-child\" data-id=\"f684fb5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09403d7 elementor-widget elementor-widget-image\" data-id=\"09403d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"982\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Ecosystem-Integration-1-1.webp\" class=\"attachment-full size-full wp-image-143002\" alt=\"\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Ecosystem-Integration-1-1.webp 1000w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/06\/Ecosystem-Integration-1-1-371x364.webp 371w\" sizes=\"(max-width: 1000px) 100vw, 1000px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-392da7b e-con-full e-flex e-con e-child\" data-id=\"392da7b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d9f366 elementor-widget elementor-widget-hr_label\" data-id=\"2d9f366\" 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\">Integraci\u00f3n del ecosistema<\/span>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-760ced0 elementor-widget__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"760ced0\" 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\">Una experiencia de automatizaci\u00f3n unificada<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-981e48a elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"981e48a\" 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\tAutopilot se sincroniza con todos los productos de HotelRunner para convertir datos procedentes de m\u00faltiples fuentes en un \u00fanico flujo automatizado, utilizando se\u00f1ales del An\u00e1lisis de la Competencia y del Centro de Rese\u00f1as para ajustar autom\u00e1ticamente los precios en funci\u00f3n de los cambios en la demanda, enviar notificaciones por correo electr\u00f3nico y actualizar los calendarios, as\u00ed como generar respuestas basadas en inteligencia artificial a las opiniones de los hu\u00e9spedes.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ce12bae e-con-full e-flex e-con e-parent\" data-id=\"ce12bae\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d82329e elementor-widget elementor-widget-hr_faq_section\" data-id=\"d82329e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hr_faq_section.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <script\n                type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"\u00bfQu\u00e9 es HotelRunner Autopilot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"HotelRunner Autopilot automatiza sus ventas, distribuci\u00f3n y operaciones mediante reglas inteligentes basadas en datos para optimizar los precios y la disponibilidad en todos sus canales de venta, adapt\u00e1ndose a los cambios en la demanda.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfQu\u00e9 tareas puede automatizar Autopilot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Autopilot puede automatizar numerosas tareas repetitivas y que requieren mucho tiempo, como la optimizaci\u00f3n de precios, la gesti\u00f3n de la distribuci\u00f3n, las respuestas autom\u00e1ticas a las opiniones de los hu\u00e9spedes, los flujos de trabajo de comunicaci\u00f3n (notificaciones por correo electr\u00f3nico o WhatsApp) y las actualizaciones del calendario, utilizando plantillas predefinidas o l\u00f3gica personalizada.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo puedo crear mis automatizaciones?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Con la interfaz avanzada de lienzo, puede dise\u00f1ar automatizaciones complejas en cuesti\u00f3n de minutos. Basta con arrastrar, soltar y conectar desencadenantes, condiciones y acciones para crear flujos de trabajo inteligentes que se adapten perfectamente a su estrategia empresarial.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo optimiza Autopilot mis precios?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Autopilot se integra directamente con el An\u00e1lisis de la Competencia de HotelRunner, lo que le permite comparar su negocio con el de la competencia. Ajusta autom\u00e1ticamente sus precios bas\u00e1ndose en datos de mercado, asegur\u00e1ndose de que venda cada habitaci\u00f3n al precio adecuado, en el momento adecuado.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo puede Autopilot ayudar a aumentar los ingresos de mi establecimiento?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Autopilot ajusta autom\u00e1ticamente los precios en funci\u00f3n de la actividad de reservas, las tasas de ocupaci\u00f3n y la demanda, asegur\u00e1ndose de que cada habitaci\u00f3n se venda al mejor precio y en el momento adecuado para maximizar sus ingresos y rentabilidad.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo funcionan estas automatizaciones?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"En funci\u00f3n de las reglas personalizadas que establezca, la plataforma activa acciones automatizadas, como ajustar los precios, actualizar la disponibilidad y distribuir el inventario entre los distintos canales de venta.\"}}]}<\/script>\n                    <div class=\"hr-faq-section\">\n            <div class=\"container\">\n                <div class=\"hr-faq-section__grid\">\n                    <div class=\"hr-faq-section__intro\">\n                                                    <div class=\"hr-faq-section__intro-text\">\n                                                                    <h2 class=\"hr-faq-section__title\">Preguntas frecuentes<\/h2>\n                                                                                                    <p class=\"hr-faq-section__lede\">Para obtener m\u00e1s informaci\u00f3n, puede visitar nuestro centro de ayuda o ponerse en contacto directamente con nuestro equipo de soporte.<\/p>\n                                                            <\/div>\n                                                                            <a class=\"btn\" class=\"hr-faq-section__cta\" href=\"#form\">\n                                Cont\u00e1ctenos                            <\/a>\n                                                <\/div>\n                    <div class=\"hr-faq-section__accordion\">\n                                                                                <div class=\"hr-faq-item active\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-0\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"true\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-0\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfQu\u00e9 es HotelRunner Autopilot?<\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-0\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-0\">\n                                                <p>HotelRunner Autopilot automatiza sus ventas, distribuci\u00f3n y operaciones mediante reglas inteligentes basadas en datos para optimizar los precios y la disponibilidad en todos sus canales de venta, adapt\u00e1ndose a los cambios en la demanda.<\/p>                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"true\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-0\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                                                <div class=\"hr-faq-item\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-1\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"false\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-1\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfQu\u00e9 tareas puede automatizar Autopilot? <\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-1\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-1\">\n                                                <p>Autopilot puede automatizar numerosas tareas repetitivas y que requieren mucho tiempo, como la optimizaci\u00f3n de precios, la gesti\u00f3n de la distribuci\u00f3n, las respuestas autom\u00e1ticas a las opiniones de los hu\u00e9spedes, los flujos de trabajo de comunicaci\u00f3n (notificaciones por correo electr\u00f3nico o WhatsApp) y las actualizaciones del calendario, utilizando plantillas predefinidas o l\u00f3gica personalizada.<\/p>                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"false\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-1\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                                                <div class=\"hr-faq-item\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-2\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"false\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-2\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfC\u00f3mo puedo crear mis automatizaciones? <\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-2\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-2\">\n                                                <p>Con la interfaz avanzada de lienzo, puede dise\u00f1ar automatizaciones complejas en cuesti\u00f3n de minutos. Basta con arrastrar, soltar y conectar desencadenantes, condiciones y acciones para crear flujos de trabajo inteligentes que se adapten perfectamente a su estrategia empresarial.<\/p>                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"false\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-2\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                                                <div class=\"hr-faq-item\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-3\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"false\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-3\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfC\u00f3mo optimiza Autopilot mis precios? <\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-3\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-3\">\n                                                <p>Autopilot se integra directamente con el An\u00e1lisis de la Competencia de HotelRunner, lo que le permite comparar su negocio con el de la competencia. Ajusta autom\u00e1ticamente sus precios bas\u00e1ndose en datos de mercado, asegur\u00e1ndose de que venda cada habitaci\u00f3n al precio adecuado, en el momento adecuado.<\/p>                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"false\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-3\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                                                <div class=\"hr-faq-item\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-4\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"false\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-4\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfC\u00f3mo puede Autopilot ayudar a aumentar los ingresos de mi establecimiento?<\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-4\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-4\">\n                                                Autopilot ajusta autom\u00e1ticamente los precios en funci\u00f3n de la actividad de reservas, las tasas de ocupaci\u00f3n y la demanda, asegur\u00e1ndose de que cada habitaci\u00f3n se venda al mejor precio y en el momento adecuado para maximizar sus ingresos y rentabilidad.                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"false\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-4\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                                                <div class=\"hr-faq-item\">\n                                                                <div class=\"hr-faq-item-content\">\n                                    <div class=\"hr-faq-item-row\">\n                                        <div class=\"hr-faq-item-text\">\n                                            <div id=\"hr-faq-section-d82329e-header-5\" class=\"hr-faq-header\" role=\"button\"\n                                                tabindex=\"0\" aria-expanded=\"false\"\n                                                aria-controls=\"hr-faq-section-d82329e-content-5\">\n                                                <h3 class=\"hr-faq-title\">\n                                                    \u00bfC\u00f3mo funcionan estas automatizaciones?<\/h3>\n                                            <\/div>\n                                            <div id=\"hr-faq-section-d82329e-content-5\" class=\"hr-faq-content\"\n                                                aria-labelledby=\"hr-faq-section-d82329e-header-5\">\n                                                En funci\u00f3n de las reglas personalizadas que establezca, la plataforma activa acciones automatizadas, como ajustar los precios, actualizar la disponibilidad y distribuir el inventario entre los distintos canales de venta. \n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"hr-faq-arrow\" role=\"button\" tabindex=\"0\"\n                                            aria-expanded=\"false\"\n                                            aria-controls=\"hr-faq-section-d82329e-content-5\">\n                                            <svg class=\"hr-faq-arrow__svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"7\" viewBox=\"0 0 13 7\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n                                                <path d=\"M12.5 0.5L6.5 6.5L0.5 0.5\" stroke=\"#999999\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                            <\/svg>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                            <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-527025f e-flex e-con-boxed e-con e-parent\" data-id=\"527025f\" data-element_type=\"container\" data-e-type=\"container\" id=\"form\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d1033cc elementor-widget elementor-widget-heading\" data-id=\"d1033cc\" 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\">M\u00e1s informaci\u00f3n sobre Autopilot<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-de662c3 e-con-full e-flex e-con e-child\" data-id=\"de662c3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-660509f hr-form-submit-auto elementor-widget elementor-widget-hr_form\" data-id=\"660509f\" 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-6a449e7ac918e\" class=\"hr-form hr-select2-booting hr-form-direction-horizontal\" method=\"POST\" name=\"Product Page - Autopilot\"                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\/2026-06-12\/8j3nm\">\n                                                    <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/es\/autopilot-gracias\">\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-6a449e7ac918e {\n                        position: relative;\n                    } *\/\n\n                    #hr-form-6a449e7ac918e .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-6a449e7ac918e .hr-form-overlay-content {\n                        text-align: center;\n                    }\n\n                    #hr-form-6a449e7ac918e .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-6a449e7ac918e.submitting {\n                        pointer-events: none;\n                    }\n\n                    #hr-form-6a449e7ac918e.submitting .hr-form-overlay {\n                        display: flex;\n                    }\n                    @media (max-width: 1024px) {\n                        #hr-form-6a449e7ac918e .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-6a449e7ac918e .hr-form-step-buttons-wrapper { justify-content: flex-start !important; }\n                    }\n                    @media (max-width: 767px) {\n                        #hr-form-6a449e7ac918e .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-6a449e7ac918e .hr-form-step-buttons-wrapper { justify-content: flex-start !important; }\n                    }\n                <\/style>\n\n                <script>\n                    (function () {\n                        if (window.__hrFormSafeSubmitPatched || !window.HTMLFormElement || !window.HTMLFormElement.prototype) {\n                            return;\n                        }\n                        const nativeSubmit = window.HTMLFormElement.prototype.submit;\n                        if (typeof nativeSubmit !== 'function') {\n                            return;\n                        }\n                        window.HTMLFormElement.prototype.submit = function () {\n                            if (!this || !this.isConnected) {\n                                return;\n                            }\n                            return nativeSubmit.call(this);\n                        };\n                        window.__hrFormSafeSubmitPatched = true;\n                    })();\n                <\/script>\n\n                <script>\n                    document.addEventListener('DOMContentLoaded', function () {\n                        const form = document.getElementById('hr-form-6a449e7ac918e');\n                        if (!form) {\n                            return;\n                        }\n\n                        \/\/ Legacy submit\/validation flow is intentionally disabled.\n                        \/\/ A newer, unified flow below handles validation and submit state.\n                        return;\n\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-6a449e7ac918e', {\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                        \/\/ HubSpot configuration check.\n                        const hubspotPortalInput = form.querySelector('input[name=\"hubspot_portal_id\"]');\n                        const hubspotFormGuidInput = form.querySelector('input[name=\"hubspot_form_guid\"]');\n                        const legacyEndpointInput = form.querySelector('input[name=\"form_endpoint_url\"]');\n                        const formsEndpointType = 'pardot';\n\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                            const hasHubspotConfig = Boolean(\n                                hubspotPortalInput?.value?.trim() &&\n                                hubspotFormGuidInput?.value?.trim()\n                            );\n                            const hasPardotConfig = Boolean(legacyEndpointInput?.value?.trim());\n                            if ((formsEndpointType === 'hubspot' && !hasHubspotConfig) || (formsEndpointType === 'pardot' && !hasPardotConfig)) {\n                                alert(formsEndpointType === 'hubspot'\n                                    ? 'Please configure HubSpot Portal ID and Form GUID.'\n                                    : 'Please configure Pardot form endpoint URL.');\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 only when form is still mounted in DOM.\n                                if (form && form.isConnected) {\n                                    form.submit();\n                                }\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=\"hr-turnstile-container\" data-sitekey=\"0x4AAAAAABeTMK2qaRc9Oy_P\"\n                        data-callback=\"onTurnstileCallback_hr-form-6a449e7ac918e\"><\/div>\n                \n                                        <input type=\"hidden\" name=\"hr_ip_address\" value=\"10.0.22.100\"\n                            data-field-type=\"ip_address\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_browser_info\" value=\"\"\n                            data-field-type=\"browser_info\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_primary_language\" value=\"\"\n                            data-field-type=\"primary_language\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_all_languages\" value=\"\"\n                            data-field-type=\"all_languages\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_window_size\" value=\"\"\n                            data-field-type=\"window_size\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_timezone_name\" value=\"\"\n                            data-field-type=\"timezone_name\"\n                            >\n                                                <input type=\"hidden\" name=\"hr_current_url\" value=\"\"\n                            data-field-type=\"current_url\"\n                            data-truncate-url=\"no\">\n                                                <input type=\"hidden\" name=\"hr_referrer_url\" value=\"\"\n                            data-field-type=\"referrer_url\"\n                            data-truncate-url=\"no\">\n                                                <input type=\"hidden\" name=\"hr_page_load_time\" value=\"\"\n                            data-field-type=\"page_load_time\"\n                            >\n                                                                    <input type=\"hidden\" name=\"form_endpoint_url\" value=\"https:\/\/go.marketing.hotelrunner.com\/l\/965463\/2026-06-12\/8j3nm\">\n                                                    <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/es\/autopilot-gracias\">\n                                                                            <input type=\"hidden\" name=\"form_title\" value=\"Product Page - Autopilot\">\n                                                <input type=\"hidden\" name=\"form_language\"\n                            value=\"ES\">\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                        const forms = document.querySelectorAll('form');\n                        forms.forEach(form => {\n                                                        const utmSourceField = form.querySelector('input[name=\"utm_source\"]');\n                            if (!utmSourceField) return;\n                            \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 (!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                                utmKeys.forEach(key => {\n                                    if (params.has(key)) {\n                                        const value = params.get(key);\n                                        sessionStorage.setItem(key, value);\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                                                        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                    document.addEventListener('DOMContentLoaded', populateUtmFields);\n                    setTimeout(populateUtmFields, 100);\n                    setTimeout(populateUtmFields, 500);\n                    setTimeout(populateUtmFields, 1000);\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\">Nombre(s)<\/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\">Apellidos<\/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 email hr-form-field-column-elementor-repeater-item-b145675\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"email\" class=\"hr-form-label\">Correo electr\u00f3nico<\/label>                                        \n                                                                                        <input id=\"email\" class=\"hr-form-input\" autocomplete=\"email\" type=\"email\" name=\"email\" ><div id=\"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\">Tel\u00e9fono m\u00f3vil<\/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=\"es\">\n                                                <\/div>\n                                                <input type=\"hidden\" name=\"hr-form-phone_full\" value=\"\" class=\"hr-phone-full-value\" data-phone-field=\"hr-form-phone\">\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\">Nombre de la propiedad\/empresa<\/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-country hr-form-field-column-elementor-repeater-item-8143090\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"hr-country\" class=\"hr-form-label\">Pa\u00eds<\/label>                                        \n                                                                                                                                        <div class=\"hr-country-field-wrapper\">\n                                                    <select id=\"hr-country\" class=\"hr-form-input hr-country-select\" placeholder=\"Seleccione pa\u00eds\" autocomplete=\"country-name\" name=\"hr-country\"  data-placeholder=\"Seleccione pa\u00eds\"\n                                                        name=\"hr-country\">\n                                                        <option value=\"\" class=\"hr-select-placeholder\" disabled selected>\n                                                            Seleccione pa\u00eds                                                        <\/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-country-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 privacy hr-form-field-column-elementor-repeater-item-a86dab9\"\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\">He le\u00eddo y comprendido el Aviso de <a href=\"https:\/\/staging-sites.hotelrunner.com\/es\/privacy-statement-for-request-complaint-suggestion-processes\/\" target=\"_blank\">\nPrivacidad sobre los procesos de Solicitud \/ Reclamaci\u00f3n \/ Sugerencia.<\/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-89a195d\"\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\">He le\u00eddo y acepto el Consentimiento para <a href=\"https:\/\/staging-sites.hotelrunner.com\/es\/commercial-electronic-message-consent-text\/\" target=\"_blank\">Comunicaciones Electr\u00f3nicas Comerciales<\/a>.\n<\/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: right;\">\n                        <button type=\"submit\" class=\"button hr-form-submit\">\n                            Pida una prueba                        <\/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 = \"es\";\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                        const fullHidden = input.form\n                            ? input.form.querySelector('input.hr-phone-full-value[data-phone-field=\"' + CSS.escape(input.name) + '\"]')\n                            : null;\n\n                        function formatPhoneFullValue(itiInstance) {\n                            const fullNumber = itiInstance.getNumber() || '';\n                            return fullNumber.replace(\/\\D\/g, '');\n                        }\n\n                        function syncPhoneFullValue() {\n                            if (!fullHidden) {\n                                return;\n                            }\n                            fullHidden.value = formatPhoneFullValue(iti);\n                        }\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                            syncPhoneFullValue();\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                        input.addEventListener('countrychange', syncPhoneFullValue);\n\n                        \/\/ Handle form submission \u2014 dial code + number (no + or spaces) goes to mobile_phone_full hidden field\n                        $(input.form).on(\"submit\", function () {\n                            syncPhoneFullValue();\n                        });\n\n                        \/\/ Add validation class on blur\n                        input.addEventListener(\"blur\", function () {\n                            syncPhoneFullValue();\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                        syncPhoneFullValue();\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-6a449e7ac918e');\n\n                \/\/ Also initialize on document ready to ensure DOM is fully loaded\n                $(document).ready(function () {\n                    initializeFormPhoneInputs('hr-form-6a449e7ac918e');\n                });\n            })(jQuery);\n\n\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-6a449e7ac918e');\n\n                \/\/ Function to get all hidden fields\n                const hiddenFields = form.querySelectorAll('input[type=\"hidden\"][data-field-type]');\n                const truncateHiddenUrl = (value, maxLength = 255) => {\n                    const str = String(value || '');\n                    return str.length > maxLength ? str.slice(0, maxLength) : str;\n                };\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                            const currentUrl = window.location.href;\n                            field.value = field.getAttribute('data-truncate-url') === 'yes'\n                                ? truncateHiddenUrl(currentUrl)\n                                : currentUrl;\n                            break;\n                        }\n\n                        case 'referrer_url': {\n                            const referrerUrl = document.referrer || 'direct';\n                            field.value = field.getAttribute('data-truncate-url') === 'yes'\n                                ? truncateHiddenUrl(referrerUrl)\n                                : referrerUrl;\n                            break;\n                        }\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-6a449e7ac918e');\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-6a449e7ac918e');\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                                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                                \/\/ Hidden conditional fields must not keep invalid state (breaks submit button \/ revalidate).\n                                formElements.forEach(function (el) {\n                                    if (!el.id) return;\n                                    el.classList.remove('is-invalid', 'is-valid');\n                                    const errEl = form.querySelector('#' + CSS.escape(el.id) + '-error-container');\n                                    if (errEl) {\n                                        errEl.innerHTML = '';\n                                    }\n                                    const s2 = el.nextElementSibling;\n                                    if (s2 && s2.classList && s2.classList.contains('select2-container')) {\n                                        s2.querySelectorAll('.select2-selection').forEach(function (node) {\n                                            node.classList.remove('is-invalid', 'is-valid');\n                                        });\n                                    }\n                                });\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                            if (shouldShow) {\n                                formElements.forEach(function (el) {\n                                    if (!el.id) return;\n                                    el.classList.remove('is-invalid', 'is-valid');\n                                    const errEl = form.querySelector('#' + CSS.escape(el.id) + '-error-container');\n                                    if (errEl) {\n                                        errEl.innerHTML = '';\n                                    }\n                                    const s2 = el.nextElementSibling;\n                                    if (s2 && s2.classList && s2.classList.contains('select2-container')) {\n                                        s2.querySelectorAll('.select2-selection').forEach(function (node) {\n                                            node.classList.remove('is-invalid', 'is-valid');\n                                        });\n                                    }\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-6a449e7ac918e');\n                let isSubmitting = false;\n                const debugEnabled = new URLSearchParams(window.location.search).get('hr_form_debug') === '1';\n                const debugLog = function (label, data) {\n                    if (!debugEnabled) return;\n                    console.log('[HR Form Debug][' + form.id + '] ' + label, data || {});\n                };\n                if (debugEnabled) {\n                    form.addEventListener('submit', function (event) {\n                        debugLog('native submit event', {\n                            defaultPrevented: event.defaultPrevented,\n                            submitter: event.submitter ? (event.submitter.id || event.submitter.name || event.submitter.className || event.submitter.tagName) : null\n                        });\n                    }, true);\n                }\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-6a449e7ac918e', {\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                const isRegisteredValidatorField = (selector) => {\n                    if (!selector || !validator || !validator.fields) {\n                        return false;\n                    }\n                    return Object.values(validator.fields).some((field) => {\n                        return field && field.elem && ('#' + field.elem.id) === selector;\n                    });\n                };\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\":\"Por favor, introduzca su nombre.\"});\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\":\"Por favor, introduzca su apellido.\"});\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\":\"Introduzca su direcci\\u00f3n de correo electr\\u00f3nico.\"});\n                                                                                fieldRules_2.push({\"rule\":\"email\",\"errorMessage\":\"Introduzca una direcci\\u00f3n de correo electr\\u00f3nico v\\u00e1lida.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#email', fieldRules_2, { errorsContainer: '#email-error-container' });\n                                                                                                                                                const fieldRules_3 = [];\n                                                                                fieldRules_3.push({\"rule\":\"required\",\"errorMessage\":\"Introduzca su n\\u00famero de tel\\u00e9fono m\\u00f3vil.\"});\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\":\"Introduzca el nombre de su propiedad\\\/empresa.\"});\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\":\"Seleccione su pa\\u00eds.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#hr-country', fieldRules_5, { errorsContainer: '#hr-country-error-container' });\n                                                                                                                                                                                                                const fieldRules_6 = [{\"rule\":\"required\",\"errorMessage\":\"Este campo es obligatorio.\"}];\n                        if (fieldRules_6.length > 0) {\n                            validator.addField('#privacy', fieldRules_6);\n                        }\n                                                                                                                                                const fieldRules_7 = [];\n                        if (fieldRules_7.length > 0) {\n                            validator.addField('#commercial-text', fieldRules_7);\n                        }\n                                    \n                function hrSkipLiveValidationTarget(target) {\n                    if (!target || !target.id || !form.contains(target)) {\n                        return true;\n                    }\n                    if (target.name === 'hr_website') {\n                        return true;\n                    }\n                    if (target.classList.contains('condition-false')) {\n                        return true;\n                    }\n                    const col = target.closest('.hr-form-field-column');\n                    if (col && col.classList.contains('hr-conditional-field')) {\n                        return true;\n                    }\n                    if (col && col.style.display === 'none') {\n                        return true;\n                    }\n                    const step = target.closest('.hr-form-step-fields');\n                    if (step && step.style.display === 'none') {\n                        return true;\n                    }\n                    return false;\n                }\n\n                function hrGetActiveStepFields(formEl) {\n                    if (!formEl.classList.contains('hr-form-step-mode')) {\n                        return null;\n                    }\n                    const steps = formEl.querySelectorAll('.hr-form-step-fields');\n                    for (let i = 0; i < steps.length; i++) {\n                        if (window.getComputedStyle(steps[i]).display !== 'none') {\n                            return steps[i];\n                        }\n                    }\n                    return null;\n                }\n\n                function hrIsStepFormLastStep(formEl) {\n                    if (!formEl.classList.contains('hr-form-step-mode')) {\n                        return true;\n                    }\n                    const steps = formEl.querySelectorAll('.hr-form-step-fields');\n                    const active = hrGetActiveStepFields(formEl);\n                    if (!active || !steps.length) {\n                        return false;\n                    }\n                    return active === steps[steps.length - 1];\n                }\n\n                function hrTriggerStepNext(formEl) {\n                    const activeStep = hrGetActiveStepFields(formEl);\n                    if (!activeStep || typeof jQuery === 'undefined') {\n                        return;\n                    }\n                    const $nextBtn = jQuery(activeStep).find('.hr-form-step-next').not('button[type=\"submit\"], .hr-form-submit');\n                    if ($nextBtn.length) {\n                        $nextBtn.trigger('click');\n                    }\n                }\n\n                function hrFieldSkippedForSubmitValidation(elem) {\n                    if (!elem || !form.contains(elem)) {\n                        return true;\n                    }\n                    if (elem.classList.contains('condition-false')) {\n                        return true;\n                    }\n                    const step = elem.closest('.hr-form-step-fields');\n                    if (step && window.getComputedStyle(step).display === 'none') {\n                        return true;\n                    }\n                    const col = elem.closest('.hr-form-field-column');\n                    if (col && window.getComputedStyle(col).display === 'none') {\n                        return true;\n                    }\n                    return false;\n                }\n\n                function hrClearValidationUiForField(el) {\n                    if (!el || !el.id) return;\n                    const errEl = form.querySelector('#' + CSS.escape(el.id) + '-error-container');\n                    if (errEl) {\n                        errEl.innerHTML = '';\n                    }\n                    const s2 = el.nextElementSibling;\n                    if (s2 && s2.classList && s2.classList.contains('select2-container')) {\n                        s2.querySelectorAll('.select2-selection').forEach(function (node) {\n                            node.classList.remove('is-invalid', 'is-valid');\n                        });\n                    }\n                }\n\n                function hrSyncValidatorSkippedFields() {\n                    $.each(validator.fields, function (index, field) {\n                        const elem = field.elem;\n                        if (!elem) return;\n                        if (hrFieldSkippedForSubmitValidation(elem)) {\n                            field.isValid = true;\n                            elem.classList.remove('is-invalid', 'is-valid');\n                            hrClearValidationUiForField(elem);\n                        }\n                    });\n                }\n\n                \/**\n                 * JustValidate's aggregate isValid can stay false when only hidden steps \/\n                 * conditional fields fail. After syncing skipped fields, treat the form as\n                 * valid only if every non-skipped registered field is valid.\n                 *\/\n                function hrBlockingInvalidFieldKeys(v) {\n                    hrSyncValidatorSkippedFields();\n                    const keys = [];\n                    Object.values(v.fields || {}).forEach(function (field) {\n                        if (!field || !field.elem) return;\n                        if (hrFieldSkippedForSubmitValidation(field.elem)) {\n                            return;\n                        }\n                        if (field.isValid === false) {\n                            keys.push(field.elem.id || field.elem.name || '(field)');\n                        }\n                        if (field.isValid === undefined) {\n                            keys.push((field.elem.id || field.elem.name || '(field)') + ':pending');\n                        }\n                    });\n                    if (v.groupFields && Object.keys(v.groupFields).length) {\n                        Object.values(v.groupFields).forEach(function (g) {\n                            if (g && (g.isValid === false || g.isValid === undefined)) {\n                                keys.push('(group)');\n                            }\n                        });\n                    }\n                    return keys;\n                }\n\n                \/\/ focusout bubbles; revalidates after leaving any field (including conditional fields when visible)\n                form.addEventListener('focusout', function (e) {\n                    const input = e.target;\n                    if (!input.matches || !input.matches('input, select, textarea')) {\n                        return;\n                    }\n                    if (hrSkipLiveValidationTarget(input)) {\n                        return;\n                    }\n                    const selector = '#' + CSS.escape(input.id);\n                    if (!isRegisteredValidatorField(selector)) {\n                        return;\n                    }\n                    validator.revalidateField(selector);\n                });\n\n                if (typeof jQuery !== 'undefined') {\n                    jQuery(form).on('select2:close', 'select.hr-select2-field, select.hr-country-select', function () {\n                        if (hrSkipLiveValidationTarget(this)) {\n                            return;\n                        }\n                        const selector = '#' + CSS.escape(this.id);\n                        if (!isRegisteredValidatorField(selector)) {\n                            return;\n                        }\n                        validator.revalidateField(selector);\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                        const cd = event.clipboardData || window.clipboardData;\n                        const text = cd ? (cd.getData('text\/plain') || cd.getData('text') || '') : '';\n                        if (hasBlockedChars(text)) {\n                            event.preventDefault();\n                            showBlockedCharsMessage(this);\n                        }\n                    });\n\n                    input.addEventListener('drop', function (event) {\n                        const text = event.dataTransfer ? event.dataTransfer.getData('text\/plain') : '';\n                        if (hasBlockedChars(text)) {\n                            event.preventDefault();\n                            showBlockedCharsMessage(this);\n                        }\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                function formatPhoneFullValue(itiInstance) {\n                    const fullNumber = itiInstance.getNumber() || '';\n                    return fullNumber.replace(\/\\D\/g, '');\n                }\n\n                function syncAllPhoneFullFields() {\n                    form.querySelectorAll('.hr-phone-input').forEach(function (input) {\n                        const iti = $(input).data('iti');\n                        const fullHidden = form.querySelector(\n                            'input.hr-phone-full-value[data-phone-field=\"' + CSS.escape(input.name) + '\"]'\n                        );\n                        if (!fullHidden || !iti || typeof iti.getNumber !== 'function') {\n                            return;\n                        }\n                        fullHidden.value = formatPhoneFullValue(iti);\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                    debugLog('custom submit handler start', { isSubmitting: isSubmitting });\n                    e.preventDefault();\n\n                    if (isSubmitting) {\n                        debugLog('blocked: already submitting');\n                        return;\n                    }\n\n                    if (form.classList.contains('hr-form-step-mode') && !hrIsStepFormLastStep(form)) {\n                        debugLog('blocked: step form submit on non-final step');\n                        hrTriggerStepNext(form);\n                        return;\n                    }\n\n                    \/\/ Check honeypot field\n                    const honeypotField = form.querySelector('input[name=\"hr_website\"]');\n                    if (honeypotField && honeypotField.value !== '') {\n                        debugLog('blocked: honeypot filled', { value: 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                    syncAllPhoneFullFields();\n\n                    hrSyncValidatorSkippedFields();\n\n                    \/\/ Run full validation before trusting isValid (avoids stale false on first click).\n                    if (typeof validator.revalidate !== 'function') {\n                        debugLog('blocked: validator.revalidate missing');\n                        return;\n                    }\n\n                                        const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                    if (!turnstileResponse || !turnstileResponse.value) {\n                        debugLog('blocked: turnstile not ready', {\n                            hasInput: Boolean(turnstileResponse),\n                            hasValue: Boolean(turnstileResponse && turnstileResponse.value)\n                        });\n                        alert('Please wait for the security check to complete.');\n                        return;\n                    }\n                    \n                    validator.revalidate().then(function (jvIsValid) {\n                        const blocking = hrBlockingInvalidFieldKeys(validator);\n                        if (blocking.length > 0) {\n                            debugLog('blocked: validator invalid after revalidate', {\n                                jvIsValid: jvIsValid,\n                                blockingFields: blocking,\n                                domInvalid: Array.from(form.querySelectorAll('.is-invalid'))\n                                    .filter(function (field) {\n                                        return !hrFieldSkippedForSubmitValidation(field);\n                                    })\n                                    .map(function (field) {\n                                        return field.id || field.name || field.className || field.tagName;\n                                    })\n                            });\n                            return;\n                        }\n\n                        isSubmitting = true;\n                        const submitButton = form.querySelector('.hr-form-submit');\n                        const overlay = form.querySelector('.hr-form-overlay');\n                        if (submitButton) {\n                            submitButton.disabled = true;\n                        }\n                        form.classList.add('submitting');\n                        if (overlay) {\n                            overlay.style.display = 'flex';\n                        }\n                        debugLog('submitting: form.submit() called');\n                        if (form && form.isConnected) {\n                            form.submit();\n                        } else {\n                            debugLog('blocked: form not connected');\n                            isSubmitting = false;\n                            form.classList.remove('submitting');\n                            if (overlay) {\n                                overlay.style.display = 'none';\n                            }\n                            if (submitButton) {\n                                submitButton.disabled = false;\n                            }\n                        }\n                    }).catch(function (err) {\n                        form.classList.remove('submitting');\n                        const overlay = form.querySelector('.hr-form-overlay');\n                        if (overlay) {\n                            overlay.style.display = 'none';\n                        }\n                        debugLog('validator revalidate failed', { error: err && err.message ? err.message : String(err) });\n                    });\n                });\n\n                \/\/ Add new code to handle submit button state based on validation\n                const submitButton = form.querySelector('.hr-form-submit');\n                const formsEndpointType = 'pardot';\n                function getInvalidFieldNames() {\n                    return Array.from(form.querySelectorAll('.is-invalid'))\n                        .filter(function (field) {\n                            return !hrFieldSkippedForSubmitValidation(field);\n                        })\n                        .map((field) => {\n                            const id = field.id ? `#${field.id}` : '';\n                            const name = field.name ? `name=\"${field.name}\"` : '';\n                            const label = field.id ? (form.querySelector(`label[for=\"${field.id}\"]`)?.textContent || '').trim() : '';\n                            return [id, name, label].filter(Boolean).join(' ');\n                        });\n                }\n                function getDisabledReasons() {\n                    const reasons = [];\n                    if (isSubmitting) {\n                        reasons.push('isSubmitting=true');\n                    }\n                    const blockingInvalid = Array.from(form.querySelectorAll('.is-invalid')).filter(function (el) {\n                        return !hrFieldSkippedForSubmitValidation(el);\n                    });\n                    if (blockingInvalid.length > 0) {\n                        const invalidNames = getInvalidFieldNames();\n                        reasons.push(`${blockingInvalid.length} invalid field(s): ${invalidNames.join(', ')}`);\n                    }\n                                        const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                    if (!turnstileResponse || !turnstileResponse.value) {\n                        reasons.push('turnstile not completed');\n                    }\n                                        const hubspotPortalInput = form.querySelector('input[name=\"hubspot_portal_id\"]');\n                    const hubspotFormGuidInput = form.querySelector('input[name=\"hubspot_form_guid\"]');\n                    const legacyEndpointInput = form.querySelector('input[name=\"form_endpoint_url\"]');\n                    const hasHubspotConfig = Boolean(hubspotPortalInput?.value?.trim() && hubspotFormGuidInput?.value?.trim());\n                    const hasPardotConfig = Boolean(legacyEndpointInput?.value?.trim());\n                    if (formsEndpointType === 'hubspot' && !hasHubspotConfig) {\n                        reasons.push('hubspot config missing (portal\/form guid)');\n                    } else if (formsEndpointType === 'pardot' && !hasPardotConfig) {\n                        reasons.push('pardot endpoint missing');\n                    }\n                    return reasons.length ? reasons : ['unknown reason'];\n                }\n                function logDisabledReason(source) {\n                    if (!submitButton || !submitButton.disabled) return;\n                    const reasons = getDisabledReasons();\n                    console.warn(`submit button disabled: [${reasons.join(' | ')}]`, { source, formId: form.id });\n                }\n\n                \/\/ Function to check validation state and update submit button\n                function updateSubmitButtonState() {\n                    if (!submitButton) return;\n                    const wasDisabled = submitButton.disabled;\n                    const blockingInvalid = Array.from(form.querySelectorAll('.is-invalid')).filter(function (el) {\n                        return !hrFieldSkippedForSubmitValidation(el);\n                    });\n                    if (blockingInvalid.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                    if (submitButton.disabled && !wasDisabled) {\n                        logDisabledReason('state-change');\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                \/\/ Debug attempts to click while disabled.\n                form.addEventListener('click', function (event) {\n                    if (!submitButton) return;\n                    const submitTrigger = event.target && event.target.closest ? event.target.closest('.hr-form-submit') : null;\n                    if (!submitTrigger) return;\n                    logDisabledReason('click-submit');\n                }, true);\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-6a449e7ac918e');\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-6a449e7ac918e');\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} caracteres`;\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} caracteres`;\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-6a449e7ac918e');\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-6a449e7ac918e .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-6a449e7ac918e .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-6a449e7ac918e'] = function () {\n                const debugEnabled = new URLSearchParams(window.location.search).get('hr_form_debug') === '1';\n                \/\/ Enable submit button when Turnstile is ready\n                const form = document.getElementById('hr-form-6a449e7ac918e');\n                const submitButton = form.querySelector('.hr-form-submit');\n                const tokenInput = form.querySelector('[name=\"cf-turnstile-response\"]');\n                if (debugEnabled) {\n                    console.log('[HR Turnstile Debug][' + form.id + '] callback fired', {\n                        hasToken: Boolean(tokenInput && tokenInput.value),\n                        tokenLength: tokenInput && tokenInput.value ? tokenInput.value.length : 0\n                    });\n                }\n                if (submitButton) {\n                    submitButton.disabled = false;\n                }\n            };\n\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-6a449e7ac918e');\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                    const debugEnabled = new URLSearchParams(window.location.search).get('hr_form_debug') === '1';\n                    const logTurnstile = function (label, payload) {\n                        if (!debugEnabled) return;\n                        console.log('[HR Turnstile Debug][' + form.id + '] ' + label, payload || {});\n                    };\n\n                    \/\/ Render and start Turnstile verification on form load.\n                    function initTurnstile() {\n                        logTurnstile('init start');\n                        if (typeof turnstile === 'undefined') {\n                            logTurnstile('turnstile not ready, retrying');\n                            setTimeout(initTurnstile, 120);\n                            return;\n                        }\n\n                        const turnstileContainer = form.querySelector('.hr-turnstile-container');\n                        if (!turnstileContainer) {\n                            logTurnstile('container not found');\n                            return;\n                        }\n\n                        if (!turnstileContainer.hasAttribute('data-widget-id')) {\n                            const widgetId = turnstile.render(turnstileContainer, {\n                                sitekey: turnstileContainer.getAttribute('data-sitekey'),\n                                callback: window['onTurnstileCallback_hr-form-6a449e7ac918e']\n                            });\n                            logTurnstile('widget rendered', { widgetId: widgetId || null });\n                            if (widgetId !== undefined && widgetId !== null) {\n                                turnstileContainer.setAttribute('data-widget-id', String(widgetId));\n                            }\n                        }\n\n                        const renderedWidgetId = turnstileContainer.getAttribute('data-widget-id');\n                        if (renderedWidgetId && typeof turnstile.execute === 'function') {\n                            try {\n                                logTurnstile('execute called', { widgetId: renderedWidgetId });\n                                turnstile.execute(renderedWidgetId);\n                            } catch (e) {\n                                logTurnstile('execute failed', { error: e && e.message ? e.message : String(e) });\n                                \/\/ Some widget modes do not need\/allow execute; callback still unlocks submit when ready.\n                            }\n                        } else {\n                            logTurnstile('execute skipped', { widgetId: renderedWidgetId || null, hasExecute: typeof turnstile.execute === 'function' });\n                        }\n                    }\n\n                    initTurnstile();\n                \n                form.addEventListener('submit', function (e) {\n                    const debugEnabled = new URLSearchParams(window.location.search).get('hr_form_debug') === '1';\n                                            const turnstileResponse = form.querySelector('[name=\"cf-turnstile-response\"]');\n                        if (!turnstileResponse || !turnstileResponse.value) {\n                            if (debugEnabled) {\n                                console.warn('[HR Form Debug][' + form.id + '] blocked: turnstile response missing');\n                            }\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\",\"email\",\"hr-form-phone\",\"hr-form-phone_full\",\"hr-form-company-name\",\"hr-country\",\"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            \/\/ Turnstile is rendered explicitly per form instance above.\n        <\/script>\n\n        <script>\n            jQuery(document).ready(function () {\n                const $currentForm = jQuery('#hr-form-6a449e7ac918e');\n                const isRegisteredValidatorField = (validator, selector) => {\n                    if (!validator || !selector) {\n                        return false;\n                    }\n                    if (typeof validator._hrHasField === 'function') {\n                        return validator._hrHasField(selector);\n                    }\n                    if (!validator.fields) {\n                        return false;\n                    }\n                    return Object.values(validator.fields).some((field) => {\n                        return field && field.elem && ('#' + field.elem.id) === selector;\n                    });\n                };\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                                const selector = '#' + CSS.escape(this.id);\n                                if (!isRegisteredValidatorField(validator, selector)) {\n                                    return;\n                                }\n                                validationPromises.push(\n                                    validator.revalidateField(selector)\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                const revalidateSelect2Field = function (field) {\n                    if (!field || !field.id) {\n                        return;\n                    }\n\n                    const $field = jQuery(field);\n                    const value = $field.val();\n                    const isRequired = $field.prop('required');\n                    const isEmpty = !value || (Array.isArray(value) && value.length === 0);\n                    const select2Container = $field.next('.select2-container');\n                    const select2Selection = select2Container.find('.select2-selection');\n\n                    if (isRequired && isEmpty) {\n                        $field.addClass('is-invalid').removeClass('is-valid');\n                        select2Selection.addClass('is-invalid').removeClass('is-valid');\n                    } else {\n                        $field.addClass('is-valid').removeClass('is-invalid');\n                        select2Selection.addClass('is-valid').removeClass('is-invalid');\n                    }\n\n                    var validator = $currentForm[0] && $currentForm[0]._justValidateInstance;\n                    if (!validator) {\n                        return;\n                    }\n                    const selector = '#' + CSS.escape(field.id);\n                    if (!isRegisteredValidatorField(validator, selector)) {\n                        return;\n                    }\n                    validator.revalidateField(selector);\n                };\n\n                \/\/ Always revalidate Select2-backed fields when value changes.\n                $currentForm.on(\n                    'select2:select select2:unselect select2:clear change',\n                    '.hr-select2-field, .hr-country-select',\n                    function () {\n                        revalidateSelect2Field(this);\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                            const selector = '#' + CSS.escape(this.id);\n                            if (!isRegisteredValidatorField(validator, selector)) {\n                                return;\n                            }\n                            validator.revalidateField(selector);\n                        }\n                    }\n                });\n\n                $currentForm.find('.hr-form-step-next').on('click', async function () {\n                    \/\/ Submit buttons on the last step also carry .hr-form-step-next.\n                    \/\/ Do not run step-navigation hide\/show logic for actual submit triggers.\n                    if (jQuery(this).is('button[type=\"submit\"], .hr-form-submit')) {\n                        return;\n                    }\n\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                if ($currentForm.hasClass('hr-form-step-mode')) {\n                    $currentForm.on('keydown', 'input:not([type=\"hidden\"]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"submit\"]):not([type=\"button\"]):not([type=\"file\"])', function (e) {\n                        if (e.key !== 'Enter' || e.isComposing) {\n                            return;\n                        }\n\n                        const $currentStepFields = jQuery(this).closest('.hr-form-step-fields');\n                        if (!$currentStepFields.length) {\n                            return;\n                        }\n\n                        const totalSteps = $currentForm.find('.hr-form-step-fields').length;\n                        const currentStepIndex = $currentStepFields.data('step-index');\n                        if (currentStepIndex === totalSteps - 1) {\n                            return;\n                        }\n\n                        e.preventDefault();\n                        const $nextBtn = $currentStepFields.find('.hr-form-step-next').not('button[type=\"submit\"], .hr-form-submit');\n                        if ($nextBtn.length) {\n                            $nextBtn.trigger('click');\n                        }\n                    });\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<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":143044,"template":"","product_type":[333],"class_list":["post-68694","product","type-product","status-publish","has-post-thumbnail","hentry","product_type-propiedades"],"acf":[],"_links":{"self":[{"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/product\/68694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/types\/product"}],"version-history":[{"count":48,"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/product\/68694\/revisions"}],"predecessor-version":[{"id":143244,"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/product\/68694\/revisions\/143244"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/media\/143044"}],"wp:attachment":[{"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/media?parent=68694"}],"wp:term":[{"taxonomy":"product_type","embeddable":true,"href":"https:\/\/hotelrunner.com\/es\/wp-json\/wp\/v2\/product_type?post=68694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}