{"id":149303,"date":"2026-11-11T00:49:36","date_gmt":"2026-11-10T21:49:36","guid":{"rendered":"https:\/\/hotelrunner.com\/autonomous-supply-2\/"},"modified":"2026-11-11T10:08:57","modified_gmt":"2026-11-11T07:08:57","slug":"autonomous-supply","status":"publish","type":"page","link":"https:\/\/hotelrunner.com\/en\/autonomous-supply\/","title":{"rendered":"Autonomous Supply"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"149303\" class=\"elementor elementor-149303\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d78caae e-con e-atomic-element e-flexbox-base e-default-div e-48fb3ee4-705a \" data-id=\"6d78caae\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6d78caae\" data-e-type=\"e-flexbox\" data-id=\"6d78caae\">\n    <div class=\"elementor-element elementor-element-752e078a e-con e-atomic-element e-flexbox-base e-default-div container e-29bfd4eb-34db \" data-id=\"752e078a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"752e078a\" data-e-type=\"e-flexbox\" data-id=\"752e078a\">\n    <div class=\"elementor-element elementor-element-4ba6e4ec e-con e-atomic-element e-flexbox-base e-default-div e-17b33f1f-4285 \" data-id=\"4ba6e4ec\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4ba6e4ec\" data-e-type=\"e-flexbox\" data-id=\"4ba6e4ec\">\n    \t\t\t<p class=\"e-282e3c1-8ed6 e-paragraph-base e-default-p\" data-interaction-id=\"6a619eee\" data-e-type=\"widget\" data-id=\"6a619eee\">Autonomous Supply\u2122<\/p>\n\t\t\t\t\t<h1 data-interaction-id=\"5972cf06\" class=\"e-6a66137b-1c7e e-heading-base e-default-h1\" data-e-type=\"widget\" data-id=\"5972cf06\">Catch the signal.<br><span>Shape what happens next<\/span><\/h1>\n\t\t\t\t\t<p class=\"e-7455a32-b5b4 e-paragraph-base e-default-p\" data-interaction-id=\"3648d2f1\" data-e-type=\"widget\" data-id=\"3648d2f1\">Travel now runs on a signal economy, where value goes to those who act first. Join the B2A ecosystem that turns live operational signals into coordinated, autonomous actions across every trusted partner.<\/p>\n\t\t<div class=\"elementor-element elementor-element-23e85b3a e-con e-atomic-element e-flexbox-base e-default-div e-3996a44d-e641 \" data-id=\"23e85b3a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"23e85b3a\" data-e-type=\"e-flexbox\" data-id=\"23e85b3a\">\n    <div class=\"elementor-element elementor-element-782788a e-con e-atomic-element e-flexbox-base e-default-div e-4f5a048b-eb9a \" data-id=\"782788a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"782788a\" data-e-type=\"e-flexbox\" data-id=\"782788a\">\n    \t\t\t<span class=\"e-1a36cbcd-2fe2 e-paragraph-base e-default-span\" data-interaction-id=\"56c18cd\" data-e-type=\"widget\" data-id=\"56c18cd\">&lt;7 min<\/span>\n\t\t\t\t\t<span class=\"e-7af526ba-8d50 e-paragraph-base e-default-span\" data-interaction-id=\"1db82973\" data-e-type=\"widget\" data-id=\"1db82973\">to onboard<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-d34e998 e-con e-atomic-element e-div-block-base e-default-div e-4c4b742e-73c9 \" data-id=\"d34e998\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"d34e998\" data-e-type=\"e-div-block\" data-id=\"d34e998\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-3e7c725f e-con e-atomic-element e-flexbox-base e-default-div e-7ec05339-b216 \" data-id=\"3e7c725f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3e7c725f\" data-e-type=\"e-flexbox\" data-id=\"3e7c725f\">\n    \t\t\t<span class=\"e-12b3fb86-b5a8 e-paragraph-base e-default-span\" data-interaction-id=\"587fa52d\" data-e-type=\"widget\" data-id=\"587fa52d\">+25%<\/span>\n\t\t\t\t\t<span class=\"e-583f6098-d633 e-paragraph-base e-default-span\" data-interaction-id=\"428a508f\" data-e-type=\"widget\" data-id=\"428a508f\">Nights sold<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-5453d2b7 e-con e-atomic-element e-div-block-base e-default-div e-3e620eac-baba \" data-id=\"5453d2b7\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"5453d2b7\" data-e-type=\"e-div-block\" data-id=\"5453d2b7\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-50d6aa69 e-con e-atomic-element e-flexbox-base e-default-div e-5679c113-bbc6 \" data-id=\"50d6aa69\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"50d6aa69\" data-e-type=\"e-flexbox\" data-id=\"50d6aa69\">\n    \t\t\t<span class=\"e-23921de3-3928 e-paragraph-base e-default-span\" data-interaction-id=\"edca2a9\" data-e-type=\"widget\" data-id=\"edca2a9\">+7.5%<\/span>\n\t\t\t\t\t<span class=\"e-767701b6-5582 e-paragraph-base e-default-span\" data-interaction-id=\"68a8bb61\" data-e-type=\"widget\" data-id=\"68a8bb61\">ADR growth<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-657d00f7 e-con e-atomic-element e-div-block-base e-default-div e-64a2c504-3d6f \" data-id=\"657d00f7\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"657d00f7\" data-e-type=\"e-div-block\" data-id=\"657d00f7\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-43911344 e-con e-atomic-element e-flexbox-base e-default-div e-27b1854c-7356 \" data-id=\"43911344\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"43911344\" data-e-type=\"e-flexbox\" data-id=\"43911344\">\n    \t\t\t<span class=\"e-23e79b71-d08b e-paragraph-base e-default-span\" data-interaction-id=\"530f2f57\" data-e-type=\"widget\" data-id=\"530f2f57\">100+<\/span>\n\t\t\t\t\t<span class=\"e-5178add9-d26b e-paragraph-base e-default-span\" data-interaction-id=\"1140e96b\" data-e-type=\"widget\" data-id=\"1140e96b\">live signals<\/span>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-4a70440d e-con e-atomic-element e-flexbox-base e-default-div e-58b1ed3c-8a1b \" data-id=\"4a70440d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4a70440d\" data-e-type=\"e-flexbox\" data-id=\"4a70440d\">\n    \t\t<div class=\"elementor-element elementor-element-b621f656 elementor-widget elementor-widget-hr_button\" data-id=\"b621f656\" 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 normal has-no-icon\" href=\"#join\">\n                                <span class=\"btn-text\">Join the program<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-b109592 e-con e-atomic-element e-flexbox-base e-default-div e-b109592-3ee159d \" data-id=\"b109592\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b109592\" data-e-type=\"e-flexbox\" data-id=\"b109592\">\n    \t\t<div class=\"elementor-element elementor-element-dc64351 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"dc64351\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/hotelrunner.com\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/A.S_Hero_60FPS-fixed-2.json&quot;,&quot;id&quot;:149134,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;lazyload&quot;:&quot;yes&quot;,&quot;loop&quot;:&quot;yes&quot;,&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-6cdcc5dc e-con e-atomic-element e-flexbox-base e-default-div e-50803968-afad \" data-id=\"6cdcc5dc\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6cdcc5dc\" data-e-type=\"e-flexbox\" data-id=\"6cdcc5dc\">\n    <div class=\"elementor-element elementor-element-34c549d9 e-con e-atomic-element e-flexbox-base e-default-div e-7ed34428-789e \" data-id=\"34c549d9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"34c549d9\" data-e-type=\"e-flexbox\" data-id=\"34c549d9\">\n    \t\t\t<h2 data-interaction-id=\"27e282b2\" class=\"e-45c38002-4846 e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"27e282b2\">Faster supply, stronger engagement, better revenue.<br>Trusted by the world\u2019s leading travel brands<\/h2>\n\t\t<div class=\"elementor-element elementor-element-a562d3b e-con e-atomic-element e-flexbox-base e-default-div e-59f8d8c3-f7c9 \" data-id=\"a562d3b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"a562d3b\" data-e-type=\"e-flexbox\" data-id=\"a562d3b\">\n    \t\t\t<img fetchpriority=\"high\" decoding=\"async\" class=\"e-image-base e-default-img e-3b9b376a-a63e\" data-interaction-id=\"3db3d360\" data-e-type=\"widget\" data-id=\"3db3d360\" id=\"149138\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-logo-booking.webp\" width=\"704\" height=\"120\" srcset=\"\" alt=\"\">\t\t\t\t\t<img decoding=\"async\" class=\"e-image-base e-default-img e-25d9bc30-6dbe\" data-interaction-id=\"6200e712\" data-e-type=\"widget\" data-id=\"6200e712\" id=\"149142\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-logo-agoda.webp\" width=\"388\" height=\"240\" srcset=\"\" alt=\"\">\t\t\t\t\t<img decoding=\"async\" class=\"e-image-base e-default-img e-208dd73c-ee8f\" data-interaction-id=\"7ef07248\" data-e-type=\"widget\" data-id=\"7ef07248\" id=\"149146\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-logo-expedia.webp\" width=\"836\" height=\"120\" srcset=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-logo-expedia.webp 836w, https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-logo-expedia-794x114.webp 794w\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-1acb6fb3 e-con e-atomic-element e-flexbox-base e-default-div e-30f39501-7d4f \" data-id=\"1acb6fb3\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1acb6fb3\" data-e-type=\"e-flexbox\" data-id=\"1acb6fb3\">\n    <div class=\"elementor-element elementor-element-6b5111d9 e-con e-atomic-element e-flexbox-base e-default-div e-4dd5ff69-fe66 \" data-id=\"6b5111d9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6b5111d9\" data-e-type=\"e-flexbox\" data-id=\"6b5111d9\">\n    \t\t\t<p class=\"as-badge e-paragraph-base e-default-p\" data-interaction-id=\"37e3cce4\" data-e-type=\"widget\" data-id=\"37e3cce4\">The signal loop<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"3bb0a9ff\" class=\"as-h2 e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"3bb0a9ff\">One engine holds information and acts together<\/h2>\n\t\t\t\t\t<p class=\"as-sub e-a87c8e-1ab87ac e-paragraph-base e-default-p\" data-interaction-id=\"a87c8e\" data-e-type=\"widget\" data-id=\"a87c8e\">We collect the inputs, and the engine produces the action. <br>No separate tools to check, no dashboards to read first. Just seamless execution.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-61ffcc93 e-con e-atomic-element e-flexbox-base e-default-div container e-6c15dce7-aede \" data-id=\"61ffcc93\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"61ffcc93\" data-e-type=\"e-flexbox\" data-id=\"61ffcc93\">\n    <div class=\"elementor-element elementor-element-58ddc856 e-con e-atomic-element e-flexbox-base e-default-div e-3388ebea-66c6 \" data-id=\"58ddc856\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"58ddc856\" data-e-type=\"e-flexbox\" data-id=\"58ddc856\">\n    \t\t\t<span class=\"e-5357f9e3-96e3 e-paragraph-base e-default-span\" data-interaction-id=\"2afb07e9\" data-e-type=\"widget\" data-id=\"2afb07e9\">STEP 1<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"263ceca1\" class=\"e-3bcec881-43e4 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"263ceca1\">Signals stream in<\/h3>\n\t\t\t\t\t<p class=\"e-37d91e2-d3c8 e-paragraph-base e-default-p\" data-interaction-id=\"3d60fdec\" data-e-type=\"widget\" data-id=\"3d60fdec\">Reservations, rates, demand, search volume, operations, and anomalies flow instantly into the engine.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-2a2cfd9d e-con e-atomic-element e-flexbox-base e-default-div e-718b7de0-8389 \" data-id=\"2a2cfd9d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2a2cfd9d\" data-e-type=\"e-flexbox\" data-id=\"2a2cfd9d\">\n    \t\t\t<span class=\"e-1bde180-d73c e-paragraph-base e-default-span\" data-interaction-id=\"66de8fe\" data-e-type=\"widget\" data-id=\"66de8fe\">STEP 2<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"1cc1c2af\" class=\"e-583b69b-ecbd e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"1cc1c2af\">Context applied<\/h3>\n\t\t\t\t\t<p class=\"e-cff3c55-b0cf e-paragraph-base e-default-p\" data-interaction-id=\"1df6dcf1\" data-e-type=\"widget\" data-id=\"1df6dcf1\">The AI engine interprets hotel, market, channel, timing, and severity based on predefined permissions.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-1ef1e9e4 e-con e-atomic-element e-flexbox-base e-default-div e-57ddc792-ca1b \" data-id=\"1ef1e9e4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1ef1e9e4\" data-e-type=\"e-flexbox\" data-id=\"1ef1e9e4\">\n    \t\t\t<span class=\"e-244d96ff-9d92 e-paragraph-base e-default-span\" data-interaction-id=\"8a4ac97\" data-e-type=\"widget\" data-id=\"8a4ac97\">STEP 3<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"5f14b64f\" class=\"e-5749d3df-68fc e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"5f14b64f\">Coordinated actions<\/h3>\n\t\t\t\t\t<p class=\"e-3febaed2-449a e-paragraph-base e-default-p\" data-interaction-id=\"224690f6\" data-e-type=\"widget\" data-id=\"224690f6\">Permitted stakeholders receive the enriched signal at the exact same moment, acting autonomously.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-2b789319 e-con e-atomic-element e-flexbox-base e-default-div e-2da481eb-870b \" data-id=\"2b789319\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2b789319\" data-e-type=\"e-flexbox\" data-id=\"2b789319\">\n    \t\t\t<span class=\"e-13a08bc1-5cb3 e-paragraph-base e-default-span\" data-interaction-id=\"729c7352\" data-e-type=\"widget\" data-id=\"729c7352\">STEP 4<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"44d99642\" class=\"e-69cd4896-f057 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"44d99642\">New signals out<\/h3>\n\t\t\t\t\t<p class=\"e-c0c43e1-90bc e-paragraph-base e-default-p\" data-interaction-id=\"4ec7f3db\" data-e-type=\"widget\" data-id=\"4ec7f3db\">Every action can emit a new signal that other participants act on. Outcomes become inputs for the wider ecosystem.<\/p>\n\t\t\n<\/div>\n\n<\/div>\n\t\t\t<p class=\"e-342430e7-2188 e-paragraph-base e-default-p\" data-interaction-id=\"18e0bab8\" data-e-type=\"widget\" data-id=\"18e0bab8\">Signal out feeds back in. Every new partner makes every signal more valuable.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-4e9daf46 e-con e-atomic-element e-flexbox-base e-default-div e-78763d3a-5a5a \" data-id=\"4e9daf46\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4e9daf46\" data-e-type=\"e-flexbox\" data-id=\"4e9daf46\">\n    <div class=\"elementor-element elementor-element-129717c5 e-con e-atomic-element e-flexbox-base e-default-div e-23eed939-a492 \" data-id=\"129717c5\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"129717c5\" data-e-type=\"e-flexbox\" data-id=\"129717c5\">\n    \t\t\t<p class=\"as-badge e-paragraph-base e-default-p\" data-interaction-id=\"2e61dcf5\" data-e-type=\"widget\" data-id=\"2e61dcf5\">Signals in action<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"22cba268\" class=\"as-h2 e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"22cba268\">We make hotels active signal contributors<\/h2>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-46e34103 e-con e-atomic-element e-div-block-base e-default-div container e-196a38ab-bca2 \" data-id=\"46e34103\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"46e34103\" data-e-type=\"e-div-block\" data-id=\"46e34103\">\n    <div class=\"elementor-element elementor-element-2ee19bfb e-con e-atomic-element e-flexbox-base e-default-div as-card e-3ba46d72-ba30 \" data-id=\"2ee19bfb\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2ee19bfb\" data-e-type=\"e-flexbox\" data-id=\"2ee19bfb\">\n    <div class=\"elementor-element elementor-element-5c159eda e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"5c159eda\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"5c159eda\" data-e-type=\"e-flexbox\" data-id=\"5c159eda\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-2bef2e41-c0b5\" data-interaction-id=\"4d52a222\" data-e-type=\"widget\" data-id=\"4d52a222\" id=\"149150\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-market.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"534cb45d\" class=\"e-21ef1ba1-70ff e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"534cb45d\">Market &amp; Competition<\/h3>\n\t\t<div class=\"elementor-element elementor-element-76465164 e-con e-atomic-element e-flexbox-base e-default-div e-43aa92be-540a \" data-id=\"76465164\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"76465164\" data-e-type=\"e-flexbox\" data-id=\"76465164\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"3d7a3a6c\" data-e-type=\"widget\" data-id=\"3d7a3a6c\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"1a183ed1\" data-e-type=\"widget\" data-id=\"1a183ed1\">Competitor sell-out events, channels, min-stay<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-1319a358 e-con e-atomic-element e-div-block-base e-default-div e-6c8625c4-3001 \" data-id=\"1319a358\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"1319a358\" data-e-type=\"e-div-block\" data-id=\"1319a358\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-9dfb9e e-con e-atomic-element e-flexbox-base e-default-div e-2d8ee0ef-cc3a \" data-id=\"9dfb9e\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"9dfb9e\" data-e-type=\"e-flexbox\" data-id=\"9dfb9e\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"36c43e66\" data-e-type=\"widget\" data-id=\"36c43e66\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"6ac8026b\" data-e-type=\"widget\" data-id=\"6ac8026b\">Runs pricing rules while competitor is unavailable<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-7a96c2d9 e-con e-atomic-element e-flexbox-base e-default-div as-card e-1c1a6ac6-fdf0 \" data-id=\"7a96c2d9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7a96c2d9\" data-e-type=\"e-flexbox\" data-id=\"7a96c2d9\">\n    <div class=\"elementor-element elementor-element-58bd4922 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"58bd4922\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"58bd4922\" data-e-type=\"e-flexbox\" data-id=\"58bd4922\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-71fa54ee-a53c\" data-interaction-id=\"2954a647\" data-e-type=\"widget\" data-id=\"2954a647\" id=\"149154\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-rates.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"72c4d38b\" class=\"e-63ada13f-4f31 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"72c4d38b\">Rates &amp; Pricing<\/h3>\n\t\t<div class=\"elementor-element elementor-element-65428cee e-con e-atomic-element e-flexbox-base e-default-div e-7583de54-e2db \" data-id=\"65428cee\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"65428cee\" data-e-type=\"e-flexbox\" data-id=\"65428cee\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"166300f6\" data-e-type=\"widget\" data-id=\"166300f6\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"4a90de5b\" data-e-type=\"widget\" data-id=\"4a90de5b\">ADR, RevPAR, price changes &amp; deltas<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-37704d3c e-con e-atomic-element e-div-block-base e-default-div e-6d5ee65c-fe09 \" data-id=\"37704d3c\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"37704d3c\" data-e-type=\"e-div-block\" data-id=\"37704d3c\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-370613a2 e-con e-atomic-element e-flexbox-base e-default-div e-5cb610cc-a9c0 \" data-id=\"370613a2\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"370613a2\" data-e-type=\"e-flexbox\" data-id=\"370613a2\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"570f6be\" data-e-type=\"widget\" data-id=\"570f6be\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"1b563bbf\" data-e-type=\"widget\" data-id=\"1b563bbf\">Applies competitor-aware rate moves instantly<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-4453ff4a e-con e-atomic-element e-flexbox-base e-default-div as-card e-601d05a4-c36c \" data-id=\"4453ff4a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4453ff4a\" data-e-type=\"e-flexbox\" data-id=\"4453ff4a\">\n    <div class=\"elementor-element elementor-element-cd54878 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"cd54878\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"cd54878\" data-e-type=\"e-flexbox\" data-id=\"cd54878\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-670dd91e-8374\" data-interaction-id=\"3aab369c\" data-e-type=\"widget\" data-id=\"3aab369c\" id=\"149158\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-distribution.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"3525dba6\" class=\"e-3083c8ca-c656 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"3525dba6\">Distribution Health<\/h3>\n\t\t<div class=\"elementor-element elementor-element-1da3f7fd e-con e-atomic-element e-flexbox-base e-default-div e-5de11999-a70b \" data-id=\"1da3f7fd\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1da3f7fd\" data-e-type=\"e-flexbox\" data-id=\"1da3f7fd\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"783f6dbe\" data-e-type=\"widget\" data-id=\"783f6dbe\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"190322fe\" data-e-type=\"widget\" data-id=\"190322fe\">Parity gaps, mapping gaps, connection states<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-5b675326 e-con e-atomic-element e-div-block-base e-default-div e-5cf37c4-a377 \" data-id=\"5b675326\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"5b675326\" data-e-type=\"e-div-block\" data-id=\"5b675326\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-3c295773 e-con e-atomic-element e-flexbox-base e-default-div e-c9096d0-7726 \" data-id=\"3c295773\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3c295773\" data-e-type=\"e-flexbox\" data-id=\"3c295773\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"40cbf8b2\" data-e-type=\"widget\" data-id=\"40cbf8b2\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"442244b0\" data-e-type=\"widget\" data-id=\"442244b0\">Closes channel gaps before bookings are lost<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-74a8cb8a e-con e-atomic-element e-flexbox-base e-default-div as-card e-6b138f9b-9a07 \" data-id=\"74a8cb8a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"74a8cb8a\" data-e-type=\"e-flexbox\" data-id=\"74a8cb8a\">\n    <div class=\"elementor-element elementor-element-6c4e164a e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"6c4e164a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6c4e164a\" data-e-type=\"e-flexbox\" data-id=\"6c4e164a\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-74a918e4-fc80\" data-interaction-id=\"73ab0dbf\" data-e-type=\"widget\" data-id=\"73ab0dbf\" id=\"149162\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-reservations.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"626016bc\" class=\"e-47bd0e6b-5a61 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"626016bc\">Reservations &amp; Stays<\/h3>\n\t\t<div class=\"elementor-element elementor-element-3ab49b7 e-con e-atomic-element e-flexbox-base e-default-div e-3204f2e4-eb04 \" data-id=\"3ab49b7\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3ab49b7\" data-e-type=\"e-flexbox\" data-id=\"3ab49b7\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"5aff2997\" data-e-type=\"widget\" data-id=\"5aff2997\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"5a8b6820\" data-e-type=\"widget\" data-id=\"5a8b6820\">Check-ins, cancellations, modifications<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-31bc678c e-con e-atomic-element e-div-block-base e-default-div e-12c1e3e0-e520 \" data-id=\"31bc678c\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"31bc678c\" data-e-type=\"e-div-block\" data-id=\"31bc678c\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-f62638b e-con e-atomic-element e-flexbox-base e-default-div e-188c8ef1-2aeb \" data-id=\"f62638b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"f62638b\" data-e-type=\"e-flexbox\" data-id=\"f62638b\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"e426402\" data-e-type=\"widget\" data-id=\"e426402\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"4aee65b\" data-e-type=\"widget\" data-id=\"4aee65b\">Releases freed room-nights across channels<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-334af3c5 e-con e-atomic-element e-flexbox-base e-default-div as-card e-396529b4-e401 \" data-id=\"334af3c5\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"334af3c5\" data-e-type=\"e-flexbox\" data-id=\"334af3c5\">\n    <div class=\"elementor-element elementor-element-732f77dc e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"732f77dc\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"732f77dc\" data-e-type=\"e-flexbox\" data-id=\"732f77dc\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-656f7f8a-4c89\" data-interaction-id=\"af0f32a\" data-e-type=\"widget\" data-id=\"af0f32a\" id=\"149166\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-anomaly.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"52665bcf\" class=\"e-2ed9043c-6062 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"52665bcf\">Anomaly Detection<\/h3>\n\t\t<div class=\"elementor-element elementor-element-61122cb4 e-con e-atomic-element e-flexbox-base e-default-div e-a68e71f-b0da \" data-id=\"61122cb4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"61122cb4\" data-e-type=\"e-flexbox\" data-id=\"61122cb4\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"7a5a022e\" data-e-type=\"widget\" data-id=\"7a5a022e\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"574f105c\" data-e-type=\"widget\" data-id=\"574f105c\">Bulk bookings, unusual stays, price spikes<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-26cd1b84 e-con e-atomic-element e-div-block-base e-default-div e-4d786cd4-fd9f \" data-id=\"26cd1b84\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"26cd1b84\" data-e-type=\"e-div-block\" data-id=\"26cd1b84\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-824f84f e-con e-atomic-element e-flexbox-base e-default-div e-24a047b2-6ac4 \" data-id=\"824f84f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"824f84f\" data-e-type=\"e-flexbox\" data-id=\"824f84f\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"2e23ad38\" data-e-type=\"widget\" data-id=\"2e23ad38\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"c11e8b4\" data-e-type=\"widget\" data-id=\"c11e8b4\">Flags irregular reservations to all partners<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-14718275 e-con e-atomic-element e-flexbox-base e-default-div as-card e-712c9aa2-6693 \" data-id=\"14718275\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"14718275\" data-e-type=\"e-flexbox\" data-id=\"14718275\">\n    <div class=\"elementor-element elementor-element-34c11832 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"34c11832\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"34c11832\" data-e-type=\"e-flexbox\" data-id=\"34c11832\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-1db96053-9198\" data-interaction-id=\"f5fd165\" data-e-type=\"widget\" data-id=\"f5fd165\" id=\"149174\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-demand.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"15445586\" class=\"e-4dc13333-8193 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"15445586\">Demand Spikes<\/h3>\n\t\t<div class=\"elementor-element elementor-element-12d562a5 e-con e-atomic-element e-flexbox-base e-default-div e-1b39737a-a7e6 \" data-id=\"12d562a5\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"12d562a5\" data-e-type=\"e-flexbox\" data-id=\"12d562a5\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"53be06ee\" data-e-type=\"widget\" data-id=\"53be06ee\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"48d1375e\" data-e-type=\"widget\" data-id=\"48d1375e\">Search surges, booking pace, local event dates<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-53d12f10 e-con e-atomic-element e-div-block-base e-default-div e-4da7f09-919e \" data-id=\"53d12f10\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"53d12f10\" data-e-type=\"e-div-block\" data-id=\"53d12f10\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-343392bd e-con e-atomic-element e-flexbox-base e-default-div e-589a7379-be6b \" data-id=\"343392bd\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"343392bd\" data-e-type=\"e-flexbox\" data-id=\"343392bd\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"79ff062c\" data-e-type=\"widget\" data-id=\"79ff062c\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"34833821\" data-e-type=\"widget\" data-id=\"34833821\">Adjusts rates and restrictions while demand is peaking<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-7e5fba11 e-con e-atomic-element e-flexbox-base e-default-div as-card e-6867df5-ed23 \" data-id=\"7e5fba11\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7e5fba11\" data-e-type=\"e-flexbox\" data-id=\"7e5fba11\">\n    <div class=\"elementor-element elementor-element-761d8dd1 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"761d8dd1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"761d8dd1\" data-e-type=\"e-flexbox\" data-id=\"761d8dd1\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-857cda3-f3ba\" data-interaction-id=\"7fa93a50\" data-e-type=\"widget\" data-id=\"7fa93a50\" id=\"149185\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-promotions.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"6824a1e2\" class=\"e-5e7c86df-6b00 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"6824a1e2\">Promotions<\/h3>\n\t\t<div class=\"elementor-element elementor-element-7c663d10 e-con e-atomic-element e-flexbox-base e-default-div e-385041b-9414 \" data-id=\"7c663d10\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7c663d10\" data-e-type=\"e-flexbox\" data-id=\"7c663d10\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"577a51c6\" data-e-type=\"widget\" data-id=\"577a51c6\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"803f894\" data-e-type=\"widget\" data-id=\"803f894\">Deals created, discount windows, stay dates<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-7493657 e-con e-atomic-element e-div-block-base e-default-div e-7be5ce51-d0e8 \" data-id=\"7493657\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"7493657\" data-e-type=\"e-div-block\" data-id=\"7493657\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-75ac8ce2 e-con e-atomic-element e-flexbox-base e-default-div e-56da39a7-2286 \" data-id=\"75ac8ce2\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"75ac8ce2\" data-e-type=\"e-flexbox\" data-id=\"75ac8ce2\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"6b7332fe\" data-e-type=\"widget\" data-id=\"6b7332fe\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"1b96b21e\" data-e-type=\"widget\" data-id=\"1b96b21e\">Applies offers across channels while deals are active<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-40739150 e-con e-atomic-element e-flexbox-base e-default-div as-card e-7f02e928-9197 \" data-id=\"40739150\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"40739150\" data-e-type=\"e-flexbox\" data-id=\"40739150\">\n    <div class=\"elementor-element elementor-element-40b1f33 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"40b1f33\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"40b1f33\" data-e-type=\"e-flexbox\" data-id=\"40b1f33\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-481aaf73-d83c\" data-interaction-id=\"dee396c\" data-e-type=\"widget\" data-id=\"dee396c\" id=\"149193\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-guest.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"450f0d48\" class=\"e-10a686f7-b252 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"450f0d48\">Guest Experience<\/h3>\n\t\t<div class=\"elementor-element elementor-element-4ec9c26a e-con e-atomic-element e-flexbox-base e-default-div e-6ae2af75-d8aa \" data-id=\"4ec9c26a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4ec9c26a\" data-e-type=\"e-flexbox\" data-id=\"4ec9c26a\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"2faa2ba0\" data-e-type=\"widget\" data-id=\"2faa2ba0\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"508260af\" data-e-type=\"widget\" data-id=\"508260af\">New reviews, direct guest messages<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-79ba05b5 e-con e-atomic-element e-div-block-base e-default-div e-1b383e64-d7b3 \" data-id=\"79ba05b5\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"79ba05b5\" data-e-type=\"e-div-block\" data-id=\"79ba05b5\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-77b6981 e-con e-atomic-element e-flexbox-base e-default-div e-5c4f5bc6-610f \" data-id=\"77b6981\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"77b6981\" data-e-type=\"e-flexbox\" data-id=\"77b6981\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"5fc78ead\" data-e-type=\"widget\" data-id=\"5fc78ead\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"4fb82d6a\" data-e-type=\"widget\" data-id=\"4fb82d6a\">Drafts replies and routes to right teams<\/p>\n\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-7f174d69 e-con e-atomic-element e-flexbox-base e-default-div as-card e-3863aa39-a9a7 \" data-id=\"7f174d69\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7f174d69\" data-e-type=\"e-flexbox\" data-id=\"7f174d69\">\n    <div class=\"elementor-element elementor-element-634d6e93 e-con e-atomic-element e-flexbox-base e-default-div as-tile \" data-id=\"634d6e93\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"634d6e93\" data-e-type=\"e-flexbox\" data-id=\"634d6e93\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-34159b6-3462\" data-interaction-id=\"17ba2c61\" data-e-type=\"widget\" data-id=\"17ba2c61\" id=\"149202\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-ic-content.webp\" width=\"96\" height=\"96\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\t\t\t<h3 data-interaction-id=\"11be862a\" class=\"e-371c08d1-8988 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"11be862a\">Content<\/h3>\n\t\t<div class=\"elementor-element elementor-element-774d8f28 e-con e-atomic-element e-flexbox-base e-default-div e-32270027-b111 \" data-id=\"774d8f28\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"774d8f28\" data-e-type=\"e-flexbox\" data-id=\"774d8f28\">\n    \t\t\t<span class=\"as-tag-in e-paragraph-base e-default-span\" data-interaction-id=\"366cd1d3\" data-e-type=\"widget\" data-id=\"366cd1d3\">IN<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"22376c40\" data-e-type=\"widget\" data-id=\"22376c40\">Content edits, photo updates, currency configuration<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-66d3f4a e-con e-atomic-element e-div-block-base e-default-div e-2b07b0a6-e6b0 \" data-id=\"66d3f4a\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"66d3f4a\" data-e-type=\"e-div-block\" data-id=\"66d3f4a\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-78aa3083 e-con e-atomic-element e-flexbox-base e-default-div e-13c9128a-b58f \" data-id=\"78aa3083\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"78aa3083\" data-e-type=\"e-flexbox\" data-id=\"78aa3083\">\n    \t\t\t<span class=\"as-tag-out e-paragraph-base e-default-span\" data-interaction-id=\"5354b39a\" data-e-type=\"widget\" data-id=\"5354b39a\">OUT<\/span>\n\t\t\t\t\t<p class=\"as-line-text e-paragraph-base e-default-p\" data-interaction-id=\"4e7fb3b\" data-e-type=\"widget\" data-id=\"4e7fb3b\">Syncs content without manual refresh cycles<\/p>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\t\t\t<p class=\"e-580be3b-1001 e-paragraph-base e-default-p\" data-interaction-id=\"3be07384\" data-e-type=\"widget\" data-id=\"3be07384\">and more...<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-fdf4474 e-con e-atomic-element e-flexbox-base e-default-div e-fdf4474-6087898 \" data-id=\"fdf4474\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"fdf4474\" data-e-type=\"e-flexbox\" data-id=\"fdf4474\">\n    <div class=\"elementor-element elementor-element-0fe7631 e-con e-atomic-element e-flexbox-base e-default-div e-0fe7631-168baca \" data-id=\"0fe7631\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"0fe7631\" data-e-type=\"e-flexbox\" data-id=\"0fe7631\">\n    \t\t\t<p class=\"as-badge e-paragraph-base e-default-p\" data-interaction-id=\"aa1801a\" data-e-type=\"widget\" data-id=\"aa1801a\">Why now<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"ea823f9\" class=\"as-h2 e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"ea823f9\">Reports told you what happened, signals tell you what\u2019s happening.<br>Turning them into actions is what matters.<\/h2>\n\t\t\t\t\t<p class=\"as-sub e-5dba09e-12ee36c e-paragraph-base e-default-p\" data-interaction-id=\"5dba09e\" data-e-type=\"widget\" data-id=\"5dba09e\">No team can capture, interpret, and act on today\u2019s travel signals fast enough. AI agents and automated systems increasingly shape how demand is discovered, evaluated, serviced, and converted, in what HotelRunner identifies as the early <strong>Business-to-Agent (B2A)<\/strong> economy. <br>The program exists so supply can keep up.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-a5a5594 e-con e-atomic-element e-div-block-base e-default-div container e-a5a5594-a75c031 \" data-id=\"a5a5594\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"a5a5594\" data-e-type=\"e-div-block\" data-id=\"a5a5594\">\n    <div class=\"elementor-element elementor-element-12a7b3e e-con e-atomic-element e-flexbox-base e-default-div e-12a7b3e-02374ed \" data-id=\"12a7b3e\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"12a7b3e\" data-e-type=\"e-flexbox\" data-id=\"12a7b3e\">\n    <div class=\"elementor-element elementor-element-04fa93c e-con e-atomic-element e-flexbox-base e-default-div e-04fa93c-dde99ee \" data-id=\"04fa93c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"04fa93c\" data-e-type=\"e-flexbox\" data-id=\"04fa93c\">\n    <div class=\"elementor-element elementor-element-ed355d2 e-con e-atomic-element e-div-block-base e-default-div e-ed355d2-99eae77 \" data-id=\"ed355d2\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"ed355d2\" data-e-type=\"e-div-block\" data-id=\"ed355d2\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-0852c54 e-con e-atomic-element e-div-block-base e-default-div e-0852c54-c89b3df \" data-id=\"0852c54\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"0852c54\" data-e-type=\"e-div-block\" data-id=\"0852c54\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-8aecb8a e-con e-atomic-element e-div-block-base e-default-div e-8aecb8a-761f264 \" data-id=\"8aecb8a\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"8aecb8a\" data-e-type=\"e-div-block\" data-id=\"8aecb8a\">\n    \n<\/div>\n\n<\/div>\n\t\t\t<span class=\"e-e441632-b0c8afe e-paragraph-base e-default-span\" data-interaction-id=\"e441632\" data-e-type=\"widget\" data-id=\"e441632\">BEFORE<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"caecd47\" class=\"e-caecd47-479ed1e e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"caecd47\">Data stayed<br><strong>out of sight<\/strong><\/h3>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-bc56e9a e-con e-atomic-element e-flexbox-base e-default-div e-bc56e9a-33d835a \" data-id=\"bc56e9a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"bc56e9a\" data-e-type=\"e-flexbox\" data-id=\"bc56e9a\">\n    <div class=\"elementor-element elementor-element-2fcd96d e-con e-atomic-element e-flexbox-base e-default-div e-2fcd96d-7405b2f \" data-id=\"2fcd96d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2fcd96d\" data-e-type=\"e-flexbox\" data-id=\"2fcd96d\">\n    <div class=\"elementor-element elementor-element-4475a71 e-con e-atomic-element e-div-block-base e-default-div e-4475a71-e78448b \" data-id=\"4475a71\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"4475a71\" data-e-type=\"e-div-block\" data-id=\"4475a71\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-b15f5cd e-con e-atomic-element e-div-block-base e-default-div e-b15f5cd-dd1e010 \" data-id=\"b15f5cd\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"b15f5cd\" data-e-type=\"e-div-block\" data-id=\"b15f5cd\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-e51e7e6 e-con e-atomic-element e-div-block-base e-default-div e-e51e7e6-d39c9db \" data-id=\"e51e7e6\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"e51e7e6\" data-e-type=\"e-div-block\" data-id=\"e51e7e6\">\n    \n<\/div>\n\n<\/div>\n\t\t\t<span class=\"e-a618e2b-25f7101 e-paragraph-base e-default-span\" data-interaction-id=\"a618e2b\" data-e-type=\"widget\" data-id=\"a618e2b\">NOW<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"7b4b600\" class=\"e-7b4b600-1404b08 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"7b4b600\">Data is visible<br>but <strong>scattered<\/strong><\/h3>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-70664cd e-con e-atomic-element e-flexbox-base e-default-div e-70664cd-8e1ae4b \" data-id=\"70664cd\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"70664cd\" data-e-type=\"e-flexbox\" data-id=\"70664cd\">\n    <div class=\"elementor-element elementor-element-f264a32 e-con e-atomic-element e-flexbox-base e-default-div e-f264a32-2a42649 \" data-id=\"f264a32\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"f264a32\" data-e-type=\"e-flexbox\" data-id=\"f264a32\">\n    <div class=\"elementor-element elementor-element-f3f7df5 e-con e-atomic-element e-div-block-base e-default-div e-f3f7df5-b9a72fe \" data-id=\"f3f7df5\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"f3f7df5\" data-e-type=\"e-div-block\" data-id=\"f3f7df5\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-6b94cb3 e-con e-atomic-element e-div-block-base e-default-div e-6b94cb3-2b75352 \" data-id=\"6b94cb3\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"6b94cb3\" data-e-type=\"e-div-block\" data-id=\"6b94cb3\">\n    \n<\/div>\n<div class=\"elementor-element elementor-element-ff83d61 e-con e-atomic-element e-div-block-base e-default-div e-ff83d61-fa4afd1 \" data-id=\"ff83d61\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"ff83d61\" data-e-type=\"e-div-block\" data-id=\"ff83d61\">\n    \n<\/div>\n\n<\/div>\n\t\t\t<span class=\"e-f68fbcf-d449a20 e-paragraph-base e-default-span\" data-interaction-id=\"f68fbcf\" data-e-type=\"widget\" data-id=\"f68fbcf\">NEXT<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"ffbf5e7\" class=\"e-ffbf5e7-905bba5 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"ffbf5e7\">Data is structured<br>and <strong>ready to act on<\/strong><\/h3>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-7f578cce e-con e-atomic-element e-flexbox-base e-default-div e-63f26009-c106 \" data-id=\"7f578cce\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7f578cce\" data-e-type=\"e-flexbox\" data-id=\"7f578cce\">\n    <div class=\"elementor-element elementor-element-54fc3321 e-con e-atomic-element e-flexbox-base e-default-div container e-14de40c5-f700 \" data-id=\"54fc3321\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"54fc3321\" data-e-type=\"e-flexbox\" data-id=\"54fc3321\">\n    \t\t\t<p class=\"as-badge e-paragraph-base e-default-p\" data-interaction-id=\"760bce98\" data-e-type=\"widget\" data-id=\"760bce98\">Use cases<\/p>\n\t\t<div class=\"elementor-element elementor-element-12e12d6f e-con e-atomic-element e-div-block-base e-default-div e-39ea9b1e-65dd \" data-id=\"12e12d6f\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"12e12d6f\" data-e-type=\"e-div-block\" data-id=\"12e12d6f\">\n    <div class=\"elementor-element elementor-element-3e5a8fc8 e-con e-atomic-element e-flexbox-base e-default-div as-uc-card e-7fafe1af-a917 \" data-id=\"3e5a8fc8\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3e5a8fc8\" data-e-type=\"e-flexbox\" data-id=\"3e5a8fc8\">\n    <div class=\"elementor-element elementor-element-7de4e135 e-con e-atomic-element e-flexbox-base e-default-div as-uc-body e-4afd1d94-a72a \" data-id=\"7de4e135\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7de4e135\" data-e-type=\"e-flexbox\" data-id=\"7de4e135\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img as-uc-icon e-13dd6bdb-285f\" data-interaction-id=\"72d88758\" data-e-type=\"widget\" data-id=\"72d88758\" id=\"149210\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-spike.webp\" width=\"128\" height=\"128\" srcset=\"\" alt=\"\">\t\t\t\t\t<p class=\"e-7ed9db35-517f e-paragraph-base e-default-p\" data-interaction-id=\"1de2d1ca\" data-e-type=\"widget\" data-id=\"1de2d1ca\">Demand spike detected<\/p>\n\t\t\t\t\t<p class=\"as-uc-desc e-379116c4-c8ca e-paragraph-base e-default-p\" data-interaction-id=\"5de121c4\" data-e-type=\"widget\" data-id=\"5de121c4\">Rates raised, stay restrictions tightened, discounts paused, promotions extended in one coordinated flow<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-2376e281 e-con e-atomic-element e-flexbox-base e-default-div as-uc-foot e-51d690b2-841c \" data-id=\"2376e281\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2376e281\" data-e-type=\"e-flexbox\" data-id=\"2376e281\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-502edfb0-a4a8\" data-interaction-id=\"4732d91b\" data-e-type=\"widget\" data-id=\"4732d91b\" id=\"149218\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-revert.webp\" width=\"112\" height=\"115\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-731b1ff4 e-con e-atomic-element e-flexbox-base e-default-div as-uc-card e-36872c3d-9e8c \" data-id=\"731b1ff4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"731b1ff4\" data-e-type=\"e-flexbox\" data-id=\"731b1ff4\">\n    <div class=\"elementor-element elementor-element-2fe4ad65 e-con e-atomic-element e-flexbox-base e-default-div as-uc-body e-24495bef-a7ab \" data-id=\"2fe4ad65\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2fe4ad65\" data-e-type=\"e-flexbox\" data-id=\"2fe4ad65\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img as-uc-icon e-5d4a59c2-fa36\" data-interaction-id=\"39c558ed\" data-e-type=\"widget\" data-id=\"39c558ed\" id=\"149225\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-cancel.webp\" width=\"128\" height=\"128\" srcset=\"\" alt=\"\">\t\t\t\t\t<p class=\"e-45280ce3-d189 e-paragraph-base e-default-p\" data-interaction-id=\"5050ff1b\" data-e-type=\"widget\" data-id=\"5050ff1b\">Cancellation received<\/p>\n\t\t\t\t\t<p class=\"as-uc-desc e-81d0912-5109 e-paragraph-base e-default-p\" data-interaction-id=\"7203777f\" data-e-type=\"widget\" data-id=\"7203777f\">Inventory redistributed across channels, promotions relaunched, remarketing triggered, team notified<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-27283009 e-con e-atomic-element e-flexbox-base e-default-div as-uc-foot e-693b1fe8-4c97 \" data-id=\"27283009\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"27283009\" data-e-type=\"e-flexbox\" data-id=\"27283009\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-39e09076-8f01\" data-interaction-id=\"1eec6995\" data-e-type=\"widget\" data-id=\"1eec6995\" id=\"149218\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-revert.webp\" width=\"112\" height=\"115\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-215387fe e-con e-atomic-element e-flexbox-base e-default-div as-uc-card e-611c0782-59c2 \" data-id=\"215387fe\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"215387fe\" data-e-type=\"e-flexbox\" data-id=\"215387fe\">\n    <div class=\"elementor-element elementor-element-793ff1e8 e-con e-atomic-element e-flexbox-base e-default-div as-uc-body e-5a909f31-d412 \" data-id=\"793ff1e8\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"793ff1e8\" data-e-type=\"e-flexbox\" data-id=\"793ff1e8\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img as-uc-icon e-7034248a-9145\" data-interaction-id=\"632d9d9a\" data-e-type=\"widget\" data-id=\"632d9d9a\" id=\"149234\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-review.webp\" width=\"128\" height=\"128\" srcset=\"\" alt=\"\">\t\t\t\t\t<p class=\"e-4a106edc-c427 e-paragraph-base e-default-p\" data-interaction-id=\"1acdaf60\" data-e-type=\"widget\" data-id=\"1acdaf60\">Guest review ingested<\/p>\n\t\t\t\t\t<p class=\"as-uc-desc e-79cf2be5-e890 e-paragraph-base e-default-p\" data-interaction-id=\"4b6bea0f\" data-e-type=\"widget\" data-id=\"4b6bea0f\">AI response drafted, service recovery task opened, quality workflow updated<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-14294e3e e-con e-atomic-element e-flexbox-base e-default-div as-uc-foot e-476d5370-b64c \" data-id=\"14294e3e\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"14294e3e\" data-e-type=\"e-flexbox\" data-id=\"14294e3e\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-2d5f81cd-526c\" data-interaction-id=\"7d0c09a\" data-e-type=\"widget\" data-id=\"7d0c09a\" id=\"149218\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-revert.webp\" width=\"112\" height=\"115\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-1eb576f7 e-con e-atomic-element e-flexbox-base e-default-div as-uc-card e-296016c8-2207 \" data-id=\"1eb576f7\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1eb576f7\" data-e-type=\"e-flexbox\" data-id=\"1eb576f7\">\n    <div class=\"elementor-element elementor-element-67aa7f51 e-con e-atomic-element e-flexbox-base e-default-div as-uc-body e-6469655a-7d2d \" data-id=\"67aa7f51\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"67aa7f51\" data-e-type=\"e-flexbox\" data-id=\"67aa7f51\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img as-uc-icon e-17a99fcb-65cc\" data-interaction-id=\"5fe40e0d\" data-e-type=\"widget\" data-id=\"5fe40e0d\" id=\"149242\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-payment.webp\" width=\"128\" height=\"128\" srcset=\"\" alt=\"\">\t\t\t\t\t<p class=\"e-6e9a15d0-8755 e-paragraph-base e-default-p\" data-interaction-id=\"3e57928e\" data-e-type=\"widget\" data-id=\"3e57928e\">Payment event fires<\/p>\n\t\t\t\t\t<p class=\"as-uc-desc e-336d4b51-316a e-paragraph-base e-default-p\" data-interaction-id=\"9a590fa\" data-e-type=\"widget\" data-id=\"9a590fa\">Reservation secured, guest follow-up sent, invoice and finance records synced<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-34cb4d17 e-con e-atomic-element e-flexbox-base e-default-div as-uc-foot e-48c64a05-7640 \" data-id=\"34cb4d17\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"34cb4d17\" data-e-type=\"e-flexbox\" data-id=\"34cb4d17\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-4c0374fc-ea4f\" data-interaction-id=\"287e5b74\" data-e-type=\"widget\" data-id=\"287e5b74\" id=\"149218\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-revert.webp\" width=\"112\" height=\"115\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-3c16ec11 e-con e-atomic-element e-flexbox-base e-default-div as-uc-card e-36cba92a-9096 \" data-id=\"3c16ec11\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3c16ec11\" data-e-type=\"e-flexbox\" data-id=\"3c16ec11\">\n    <div class=\"elementor-element elementor-element-7f16ffb4 e-con e-atomic-element e-flexbox-base e-default-div as-uc-body e-444a8194-7615 \" data-id=\"7f16ffb4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7f16ffb4\" data-e-type=\"e-flexbox\" data-id=\"7f16ffb4\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img as-uc-icon e-6da60a71-e990\" data-interaction-id=\"4dd314df\" data-e-type=\"widget\" data-id=\"4dd314df\" id=\"149250\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-distribution.webp\" width=\"128\" height=\"128\" srcset=\"\" alt=\"\">\t\t\t\t\t<p class=\"e-287e4ff4-6023 e-paragraph-base e-default-p\" data-interaction-id=\"2234f6e6\" data-e-type=\"widget\" data-id=\"2234f6e6\">New distribution opportunity<\/p>\n\t\t\t\t\t<p class=\"as-uc-desc e-6261df9c-104d e-paragraph-base e-default-p\" data-interaction-id=\"2f804242\" data-e-type=\"widget\" data-id=\"2f804242\">Onboarding runs end to end: mapping, validation, parity checks, activation<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-c7e8a46 e-con e-atomic-element e-flexbox-base e-default-div as-uc-foot e-645d6407-dc2c \" data-id=\"c7e8a46\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c7e8a46\" data-e-type=\"e-flexbox\" data-id=\"c7e8a46\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-254bda5c-ec21\" data-interaction-id=\"429a118e\" data-e-type=\"widget\" data-id=\"429a118e\" id=\"149218\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-uc-revert.webp\" width=\"112\" height=\"115\" srcset=\"\" alt=\"\">\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-61b27d21 e-con e-atomic-element e-flexbox-base e-default-div e-6ba6f8c-5a1f \" data-id=\"61b27d21\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"61b27d21\" data-e-type=\"e-flexbox\" data-id=\"61b27d21\">\n    <div class=\"elementor-element elementor-element-13c2f90b e-con e-atomic-element e-flexbox-base e-default-div e-4d07ac40-dcd5 \" data-id=\"13c2f90b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"13c2f90b\" data-e-type=\"e-flexbox\" data-id=\"13c2f90b\">\n    \t\t\t<h2 data-interaction-id=\"3a2464b7\" class=\"as-h2 e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"3a2464b7\">One program. Three participation models.<\/h2>\n\t\t\t\t\t<p class=\"as-sub e-6f1f8cec-cd84443 e-paragraph-base e-default-p\" data-interaction-id=\"6f1f8cec\" data-e-type=\"widget\" data-id=\"6f1f8cec\">We collect the signal, and the engine produces the action. <br>No separate tools to check, no dashboards to read first. Just seamless execution.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-399d38ba e-con e-atomic-element e-div-block-base e-default-div container e-ddfbc2f-67bd \" data-id=\"399d38ba\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"399d38ba\" data-e-type=\"e-div-block\" data-id=\"399d38ba\">\n    <div class=\"elementor-element elementor-element-1fe5e77f e-con e-atomic-element e-flexbox-base e-default-div e-3e1fc713-f550 \" data-id=\"1fe5e77f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1fe5e77f\" data-e-type=\"e-flexbox\" data-id=\"1fe5e77f\">\n    <div class=\"elementor-element elementor-element-471b5036 e-con e-atomic-element e-flexbox-base e-default-div e-64521d78-54c7 \" data-id=\"471b5036\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"471b5036\" data-e-type=\"e-flexbox\" data-id=\"471b5036\">\n    <div class=\"elementor-element elementor-element-58d66634 e-con e-atomic-element e-flexbox-base e-default-div e-1f877480-396f \" data-id=\"58d66634\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"58d66634\" data-e-type=\"e-flexbox\" data-id=\"58d66634\">\n    \t\t\t<span class=\"e-5bfc1cc2-ad39 e-paragraph-base e-default-span\" data-interaction-id=\"593f7b6e\" data-e-type=\"widget\" data-id=\"593f7b6e\">For Hotels<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"63b0a571\" class=\"e-13def370-d21f e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"63b0a571\">Supply participation<\/h3>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-333ed37b e-con e-atomic-element e-flexbox-base e-default-div e-7bfe0c40-7794 \" data-id=\"333ed37b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"333ed37b\" data-e-type=\"e-flexbox\" data-id=\"333ed37b\">\n    <div class=\"elementor-element elementor-element-35e75415 e-con e-atomic-element e-flexbox-base e-default-div e-765e8f11-1d82 \" data-id=\"35e75415\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"35e75415\" data-e-type=\"e-flexbox\" data-id=\"35e75415\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-414b5441-6c4c\" data-interaction-id=\"6ecd2f3\" data-e-type=\"widget\" data-id=\"6ecd2f3\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-38d085c8-be47 e-paragraph-base e-default-span\" data-interaction-id=\"1afbfdec\" data-e-type=\"widget\" data-id=\"1afbfdec\">Autonomous actions<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-1f4dfb91 e-con e-atomic-element e-flexbox-base e-default-div e-54a7e0bb-73eb \" data-id=\"1f4dfb91\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1f4dfb91\" data-e-type=\"e-flexbox\" data-id=\"1f4dfb91\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-2f176934-7ca2\" data-interaction-id=\"78efd251\" data-e-type=\"widget\" data-id=\"78efd251\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-7615700b-1eef e-paragraph-base e-default-span\" data-interaction-id=\"655af302\" data-e-type=\"widget\" data-id=\"655af302\">Automated account &amp; rate setup<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-2f67ae78 e-con e-atomic-element e-flexbox-base e-default-div e-801e5c2-4c19 \" data-id=\"2f67ae78\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2f67ae78\" data-e-type=\"e-flexbox\" data-id=\"2f67ae78\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-5b35cd0b-12f7\" data-interaction-id=\"490080d5\" data-e-type=\"widget\" data-id=\"490080d5\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-4836c46c-ace0 e-paragraph-base e-default-span\" data-interaction-id=\"2b34c155\" data-e-type=\"widget\" data-id=\"2b34c155\">Continuous distribution updates<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-30153cf2 e-con e-atomic-element e-flexbox-base e-default-div e-30bff3eb-67ba \" data-id=\"30153cf2\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"30153cf2\" data-e-type=\"e-flexbox\" data-id=\"30153cf2\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-127c934e-786a\" data-interaction-id=\"647a3da\" data-e-type=\"widget\" data-id=\"647a3da\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-64f6797d-40d2 e-paragraph-base e-default-span\" data-interaction-id=\"60d32a3\" data-e-type=\"widget\" data-id=\"60d32a3\">Full permission control<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-36ddf092 e-con e-atomic-element e-flexbox-base e-default-div e-6cc0e804-4ae0 \" data-id=\"36ddf092\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"36ddf092\" data-e-type=\"e-flexbox\" data-id=\"36ddf092\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-7d390bd7-a7b0\" data-interaction-id=\"559d081c\" data-e-type=\"widget\" data-id=\"559d081c\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-298de8bc-ac44 e-paragraph-base e-default-span\" data-interaction-id=\"1b88fe50\" data-e-type=\"widget\" data-id=\"1b88fe50\">Access to all HotelRunner products<\/span>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<div class=\"elementor-element elementor-element-48e29dae elementor-widget elementor-widget-hr_button\" data-id=\"48e29dae\" 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 normal has-no-icon\" href=\"#join\">\n                                <span class=\"btn-text\">Join the program<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-ffa70d7 e-con e-atomic-element e-flexbox-base e-default-div e-3974ae87-a18d \" data-id=\"ffa70d7\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ffa70d7\" data-e-type=\"e-flexbox\" data-id=\"ffa70d7\">\n    <div class=\"elementor-element elementor-element-72e2b9c1 e-con e-atomic-element e-flexbox-base e-default-div e-a5cce9a-dd20 \" data-id=\"72e2b9c1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"72e2b9c1\" data-e-type=\"e-flexbox\" data-id=\"72e2b9c1\">\n    <div class=\"elementor-element elementor-element-1a07a962 e-con e-atomic-element e-flexbox-base e-default-div e-4dc7753d-dc43 \" data-id=\"1a07a962\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1a07a962\" data-e-type=\"e-flexbox\" data-id=\"1a07a962\">\n    \t\t\t<span class=\"e-46fb18a5-962b e-paragraph-base e-default-span\" data-interaction-id=\"265896d9\" data-e-type=\"widget\" data-id=\"265896d9\">For Distribution Partners<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"38145398\" class=\"e-37f671cf-3a00 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"38145398\">Demand participation<\/h3>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-38d95d7a e-con e-atomic-element e-flexbox-base e-default-div e-7188f0d5-19f8 \" data-id=\"38d95d7a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"38d95d7a\" data-e-type=\"e-flexbox\" data-id=\"38d95d7a\">\n    <div class=\"elementor-element elementor-element-4dbcbc98 e-con e-atomic-element e-flexbox-base e-default-div e-129ac084-532e \" data-id=\"4dbcbc98\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4dbcbc98\" data-e-type=\"e-flexbox\" data-id=\"4dbcbc98\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-f5d57ac-7513\" data-interaction-id=\"1e8f807c\" data-e-type=\"widget\" data-id=\"1e8f807c\" id=\"149266\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-blue.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-3c06e403-f8b0 e-paragraph-base e-default-span\" data-interaction-id=\"265beac0\" data-e-type=\"widget\" data-id=\"265beac0\">APIs and full business services<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-63cf9be0 e-con e-atomic-element e-flexbox-base e-default-div e-17db350a-f030 \" data-id=\"63cf9be0\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"63cf9be0\" data-e-type=\"e-flexbox\" data-id=\"63cf9be0\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-1671c1f0-9926\" data-interaction-id=\"5b839b6f\" data-e-type=\"widget\" data-id=\"5b839b6f\" id=\"149266\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-blue.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-616afa28-36b3 e-paragraph-base e-default-span\" data-interaction-id=\"6455dbeb\" data-e-type=\"widget\" data-id=\"6455dbeb\">Access to all opted-in hotels<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-2487f9c3 e-con e-atomic-element e-flexbox-base e-default-div e-26241725-f0fa \" data-id=\"2487f9c3\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2487f9c3\" data-e-type=\"e-flexbox\" data-id=\"2487f9c3\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-3be12131-8d15\" data-interaction-id=\"52b89959\" data-e-type=\"widget\" data-id=\"52b89959\" id=\"149266\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-blue.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-2c85c4a8-9d09 e-paragraph-base e-default-span\" data-interaction-id=\"59c64f5c\" data-e-type=\"widget\" data-id=\"59c64f5c\">Anomaly alerts on sent reservations<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-49c253df e-con e-atomic-element e-flexbox-base e-default-div e-593edf8a-210a \" data-id=\"49c253df\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"49c253df\" data-e-type=\"e-flexbox\" data-id=\"49c253df\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-3e7fc474-b599\" data-interaction-id=\"1b98d692\" data-e-type=\"widget\" data-id=\"1b98d692\" id=\"149266\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-blue.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-5c4e3f62-de43 e-paragraph-base e-default-span\" data-interaction-id=\"3c620920\" data-e-type=\"widget\" data-id=\"3c620920\">Cancellation scoring<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-439970f1 e-con e-atomic-element e-flexbox-base e-default-div e-6a65a772-5fa8 \" data-id=\"439970f1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"439970f1\" data-e-type=\"e-flexbox\" data-id=\"439970f1\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-424a2fb1-d8f8\" data-interaction-id=\"529b424a\" data-e-type=\"widget\" data-id=\"529b424a\" id=\"149266\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-blue.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-6d15be57-a4e3 e-paragraph-base e-default-span\" data-interaction-id=\"464be527\" data-e-type=\"widget\" data-id=\"464be527\">Instant activation under one contract<\/span>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<div class=\"elementor-element elementor-element-c6806cf9 elementor-widget elementor-widget-hr_button\" data-id=\"c6806cf9\" 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=\"#join\">\n                                <span class=\"btn-text\">Join the program<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-7a38eac9 e-con e-atomic-element e-flexbox-base e-default-div e-4f43c94d-53a3 \" data-id=\"7a38eac9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7a38eac9\" data-e-type=\"e-flexbox\" data-id=\"7a38eac9\">\n    <div class=\"elementor-element elementor-element-3e6fac0a e-con e-atomic-element e-flexbox-base e-default-div e-4dcd98cb-7e0c \" data-id=\"3e6fac0a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3e6fac0a\" data-e-type=\"e-flexbox\" data-id=\"3e6fac0a\">\n    <div class=\"elementor-element elementor-element-c30a631 e-con e-atomic-element e-flexbox-base e-default-div e-4dafa25d-4f03 \" data-id=\"c30a631\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c30a631\" data-e-type=\"e-flexbox\" data-id=\"c30a631\">\n    \t\t\t<span class=\"e-7f9e6902-2389 e-paragraph-base e-default-span\" data-interaction-id=\"2a597588\" data-e-type=\"widget\" data-id=\"2a597588\">For technology &amp; AI partners<\/span>\n\t\t\t\t\t<h3 data-interaction-id=\"41976130\" class=\"e-567e5ff1-b470 e-heading-base e-default-h3\" data-e-type=\"widget\" data-id=\"41976130\">Signal participation<\/h3>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-79ecb671 e-con e-atomic-element e-flexbox-base e-default-div e-d29738e-7d85 \" data-id=\"79ecb671\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"79ecb671\" data-e-type=\"e-flexbox\" data-id=\"79ecb671\">\n    <div class=\"elementor-element elementor-element-40896d6a e-con e-atomic-element e-flexbox-base e-default-div e-1b351eda-d154 \" data-id=\"40896d6a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"40896d6a\" data-e-type=\"e-flexbox\" data-id=\"40896d6a\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-774718d3-7231\" data-interaction-id=\"14913cd8\" data-e-type=\"widget\" data-id=\"14913cd8\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-7805b019-c2b4 e-paragraph-base e-default-span\" data-interaction-id=\"47569009\" data-e-type=\"widget\" data-id=\"47569009\">Signal publishing into the catalog<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-21d89998 e-con e-atomic-element e-flexbox-base e-default-div e-61da56d2-5ae7 \" data-id=\"21d89998\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"21d89998\" data-e-type=\"e-flexbox\" data-id=\"21d89998\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-32c886f9-fc53\" data-interaction-id=\"583af350\" data-e-type=\"widget\" data-id=\"583af350\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-54ffe65a-c743 e-paragraph-base e-default-span\" data-interaction-id=\"6e9a8546\" data-e-type=\"widget\" data-id=\"6e9a8546\">Enriched signals and actions, <br>ready to consume<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-4b6084bb e-con e-atomic-element e-flexbox-base e-default-div e-114eb14e-35f4 \" data-id=\"4b6084bb\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4b6084bb\" data-e-type=\"e-flexbox\" data-id=\"4b6084bb\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-10fe84bd-794c\" data-interaction-id=\"5a0cfa27\" data-e-type=\"widget\" data-id=\"5a0cfa27\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-76002b07-a5f4 e-paragraph-base e-default-span\" data-interaction-id=\"744484d0\" data-e-type=\"widget\" data-id=\"744484d0\">Direct reach to opted-in hotels and <br>partners<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-4b0ff90e e-con e-atomic-element e-flexbox-base e-default-div e-5827923d-7549 \" data-id=\"4b0ff90e\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4b0ff90e\" data-e-type=\"e-flexbox\" data-id=\"4b0ff90e\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-6d940594-e502\" data-interaction-id=\"37cc45d4\" data-e-type=\"widget\" data-id=\"37cc45d4\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-2f68e481-2282 e-paragraph-base e-default-span\" data-interaction-id=\"1f9e09c\" data-e-type=\"widget\" data-id=\"1f9e09c\">API and MCP access for agents <br>(AI Access Program)<\/span>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-5d3a93db e-con e-atomic-element e-flexbox-base e-default-div e-ecbb408-e794 \" data-id=\"5d3a93db\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"5d3a93db\" data-e-type=\"e-flexbox\" data-id=\"5d3a93db\">\n    \t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"e-image-base e-default-img e-483dad34-6531\" data-interaction-id=\"b06e7f0\" data-e-type=\"widget\" data-id=\"b06e7f0\" id=\"149258\" src=\"https:\/\/hotelrunner.com\/wp-content\/uploads\/2026\/11\/as-check2-orange.webp\" width=\"64\" height=\"64\" srcset=\"\" alt=\"\">\t\t\t\t\t<span class=\"e-318709b7-a401 e-paragraph-base e-default-span\" data-interaction-id=\"7a694aa5\" data-e-type=\"widget\" data-id=\"7a694aa5\">Your intelligence, <br>executed across travel supply<\/span>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<div class=\"elementor-element elementor-element-795067c6 elementor-widget elementor-widget-hr_button\" data-id=\"795067c6\" 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 normal has-no-icon\" href=\"#join\">\n                                <span class=\"btn-text\">Join the program<\/span>\n                            <\/a>\n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-489ff1c5 e-con e-atomic-element e-flexbox-base e-default-div e-59d2fba6-dbfe \" data-id=\"489ff1c5\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"489ff1c5\" data-e-type=\"e-flexbox\" data-id=\"489ff1c5\">\n    <div class=\"elementor-element elementor-element-548366fb e-con e-atomic-element e-flexbox-base e-default-div container e-60252496-9e28 \" data-id=\"548366fb\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"548366fb\" data-e-type=\"e-flexbox\" data-id=\"548366fb\">\n    <div class=\"elementor-element elementor-element-3de3396c e-con e-atomic-element e-flexbox-base e-default-div e-60303a86-31cf \" data-id=\"3de3396c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3de3396c\" data-e-type=\"e-flexbox\" data-id=\"3de3396c\">\n    \t\t\t<h2 data-interaction-id=\"12b2786d\" class=\"e-533e160f-248d e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"12b2786d\">The signal catalog is being shaped now. <br>Early participants help define it.<\/h2>\n\t\t\t\t\t<p class=\"e-13e68264-6c41 e-paragraph-base e-default-p\" data-interaction-id=\"124ca57d\" data-e-type=\"widget\" data-id=\"124ca57d\">Whether you run a hotel, a PMS or RMS, a payment system, a travel agency, or an AI travel company, the next era of travel runs on shared signals, and there is room for you in it.<\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-40a66740 e-con e-atomic-element e-div-block-base e-default-div e-628fb24d-6022 \" data-id=\"40a66740\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"40a66740\" data-e-type=\"e-div-block\" data-id=\"40a66740\">\n    \t\t<div class=\"elementor-element elementor-element-3b15e69 hr-form-submit-auto elementor-widget elementor-widget-global elementor-global-149314 elementor-widget-hr_form\" data-id=\"3b15e69\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"join\" 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-6af4316d587a2\" class=\"hr-form hr-select2-booting hr-form-direction-horizontal\" method=\"POST\" name=\"Autonomous Supply\"                action=\"https:\/\/hotelrunner.com\/wp-content\/plugins\/hotelrunner-utilities\/data\/hr-form-handler.php\">\n                                    <input type=\"hidden\" name=\"hubspot_portal_id\" value=\"147929236\">\n                    <input type=\"hidden\" name=\"hubspot_form_guid\" value=\"c421743d-9c2a-46c1-93d2-890cc08d8317\">\n                                                    <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/en\/autonomous-supply-thank-you\/\">\n                                                    <input type=\"hidden\" name=\"hr_utm_source__c\" value=\"\">\n                    <input type=\"hidden\" name=\"hr_utm_medium__c\" value=\"\">\n                    <input type=\"hidden\" name=\"hr_utm_campaign__c\" value=\"\">\n                    <input type=\"hidden\" name=\"hr_utm_term__c\" value=\"\">\n                    <input type=\"hidden\" name=\"hr_utm_content__c\" value=\"\">\n                                                    <input type=\"hidden\" name=\"hr_reoon_email_field\" value=\"email\">\n                    <input type=\"hidden\" name=\"is_validated_reoon\" value=\"false\">\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-6af4316d587a2 {\n                        position: relative;\n                    } *\/\n\n                    #hr-form-6af4316d587a2 .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-6af4316d587a2 .hr-form-overlay-content {\n                        text-align: center;\n                    }\n\n                    #hr-form-6af4316d587a2 .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-6af4316d587a2.submitting {\n                        pointer-events: none;\n                    }\n\n                    #hr-form-6af4316d587a2.submitting .hr-form-overlay {\n                        display: flex;\n                    }\n                    @media (max-width: 1024px) {\n                        #hr-form-6af4316d587a2 .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-6af4316d587a2 .hr-form-step-buttons-wrapper { justify-content: flex-start !important; }\n                    }\n                    @media (max-width: 767px) {\n                        #hr-form-6af4316d587a2 .hr-form-button-wrapper { text-align: left !important; }\n                        #hr-form-6af4316d587a2 .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-6af4316d587a2');\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-6af4316d587a2', {\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 = 'hubspot';\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-6af4316d587a2\"><\/div>\n                \n                                        <input type=\"hidden\" name=\"browser_ip_address__c\" value=\"10.0.19.199\"\n                            data-field-type=\"ip_address\"\n                            >\n                                                <input type=\"hidden\" name=\"browser_primary_language__c\" value=\"\"\n                            data-field-type=\"primary_language\"\n                            >\n                                                <input type=\"hidden\" name=\"browser_all_languages__c\" value=\"\"\n                            data-field-type=\"all_languages\"\n                            >\n                                                <input type=\"hidden\" name=\"browser_window_size__c\" value=\"\"\n                            data-field-type=\"window_size\"\n                            >\n                                                <input type=\"hidden\" name=\"browser_time_zone__c\" value=\"\"\n                            data-field-type=\"timezone_name\"\n                            >\n                                                <input type=\"hidden\" name=\"current_url__c\" value=\"\"\n                            data-field-type=\"current_url\"\n                            data-truncate-url=\"no\">\n                                                <input type=\"hidden\" name=\"referral_link__c\" value=\"\"\n                            data-field-type=\"referrer_url\"\n                            data-truncate-url=\"no\">\n                                                                    <input type=\"hidden\" name=\"hubspot_portal_id\" value=\"147929236\">\n                        <input type=\"hidden\" name=\"hubspot_form_guid\" value=\"c421743d-9c2a-46c1-93d2-890cc08d8317\">\n                                                    <input type=\"hidden\" name=\"form_redirect_url\" value=\"https:\/\/hotelrunner.com\/en\/autonomous-supply-thank-you\/\">\n                                                                            <input type=\"hidden\" name=\"form_name\" value=\"Autonomous Supply_en\">\n                                                <input type=\"hidden\" name=\"mail_language__c\"\n                            value=\"EN\">\n                                        \n                <script>\n                    function populateUtmFields() {\n                        const forms = document.querySelectorAll('form');\n                        forms.forEach(form => {\n                                                        const utmFieldNames = {\n                                utm_source: 'hr_utm_source__c',\n                                utm_medium: 'hr_utm_medium__c',\n                                utm_campaign: 'hr_utm_campaign__c',\n                                utm_term: 'hr_utm_term__c',\n                                utm_content: 'hr_utm_content__c'\n                            };\n                            \n                            if (!form.querySelector(`input[name=\"${utmFieldNames.utm_source}\"]`)) 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 utmValues = {\n                                utm_source: utmSource || '',\n                                utm_medium: utmMedium || '',\n                                utm_campaign: utmCampaign || '',\n                                utm_term: utmTerm || '',\n                                utm_content: utmContent || ''\n                            };\n\n                            Object.keys(utmFieldNames).forEach(key => {\n                                form.querySelectorAll(`input[name=\"${utmFieldNames[key]}\"]`).forEach(input => {\n                                    input.value = utmValues[key];\n                                });\n                            });\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-100 company_type__c hr-form-field-column-elementor-repeater-item-e84d9144\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"company_type__c\" class=\"hr-form-label\">Company type<\/label>                                        \n                                                                                                                                        <div class=\"hr-form-field-input\">\n                                                    <select id=\"company_type__c\" class=\"hr-form-input hr-select2-field\" autocomplete=\"organization\" name=\"company_type__c\" data-placeholder=\"What is your company type?\" data-allow-clear=\"no\" data-enable-search=\"yes\" required=\"required\" >\n                                                                                                                    <option value=\"\" class=\"hr-select-placeholder\" disabled selected>\n                                                                What is your company type?                                                            <\/option>\n                                                                                                                <option value=\"Hotel\">Hotel<\/option><option value=\"PMS\">PMS<\/option><option value=\"RMS\">RMS<\/option><option value=\"Payment system\">Payment system<\/option><option value=\"Travel agency\">Travel agency<\/option><option value=\"AI travel company\">AI travel company<\/option><option value=\"Other\">Other<\/option>                                                    <\/select>\n                                                                                                    <\/div>\n                                                <div id=\"company_type__c-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 lastname hr-form-field-column-elementor-repeater-item-57fb8742\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"lastname\" class=\"hr-form-label\">Your name<\/label>                                        \n                                                                                        <input id=\"lastname\" class=\"hr-form-input\" autocomplete=\"name\" type=\"text\" name=\"lastname\" ><div id=\"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-100 company hr-form-field-column-elementor-repeater-item-1fba4f5c\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"company\" class=\"hr-form-label\">Company name<\/label>                                        \n                                                                                        <input id=\"company\" class=\"hr-form-input\" autocomplete=\"organization\" type=\"text\" name=\"company\" ><div id=\"company-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 email hr-form-field-column-elementor-repeater-item-e3c5d5f0\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                                                                    <label for=\"email\" class=\"hr-form-label\">Email<\/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-100 privacy_statement hr-form-field-column-elementor-repeater-item-0b176dd9\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                        \n                                                                                        <div class=\"hr-form-checkbox-wrapper\">\n                                                    <input type=\"hidden\" name=\"privacy_statement\" value=\"false\">\n                                                    <label class=\"hr-checkbox-label\">\n                                                        <input id=\"privacy_statement\" class=\"hr-form-checkbox\" value=\"true\" autocomplete=\"address-level1\" type=\"checkbox\" name=\"privacy_statement\" required=\"required\"  data-salesforce-field=\"no\">\n                                                        <span class=\"hr-checkbox-text\">I have read and understood the <a target=\"_blank\" href=\"https:\/\/hotelrunner.com\/privacy-statement-for-request-complaint-suggestion-processes\/\">Privacy Statement for Request \/ Complaint \/ Suggestion Processes.<\/a><\/span>\n                                                    <\/label>\n                                                                                                    <\/div>\n                                                                                    <\/div>\n                                <\/div>\n                                                                <div class=\"hr-form-field-column hr-form-field-width-100 commercial_electronic_message_consent_c hr-form-field-column-elementor-repeater-item-da3e5bd\"\n                                    >\n                                    <div class=\"hr-form-field\">\n                                        \n                                                                                        <div class=\"hr-form-checkbox-wrapper\">\n                                                    <input type=\"hidden\" name=\"commercial_electronic_message_consent_c\" value=\"false\">\n                                                    <label class=\"hr-checkbox-label\">\n                                                        <input id=\"commercial_electronic_message_consent_c\" class=\"hr-form-checkbox\" value=\"true\" autocomplete=\"off\" type=\"checkbox\" name=\"commercial_electronic_message_consent_c\"  data-salesforce-field=\"no\">\n                                                        <span class=\"hr-checkbox-text\">I have read and accept the <a href=\"https:\/\/hotelrunner.com\/commercial-electronic-message-consent-text\/\" target=\"_blank\">Commercial Electronic Message Consent<\/a><\/span>\n                                                    <\/label>\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                            Talk to our team                        <\/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 = \"en\";\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\/plugins\/hotelrunner-utilities\/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-6af4316d587a2');\n\n                \/\/ Also initialize on document ready to ensure DOM is fully loaded\n                $(document).ready(function () {\n                    initializeFormPhoneInputs('hr-form-6af4316d587a2');\n                });\n            })(jQuery);\n\n\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-6af4316d587a2');\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-6af4316d587a2');\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-6af4316d587a2');\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-6af4316d587a2');\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-6af4316d587a2', {\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\":\"Please select your company type.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#company_type__c', fieldRules_0, { errorsContainer: '#company_type__c-error-container' });\n                                                                                                                                                const fieldRules_1 = [];\n                                                                                fieldRules_1.push({\"rule\":\"required\",\"errorMessage\":\"Please enter your name.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#lastname', fieldRules_1, { errorsContainer: '#lastname-error-container' });\n                                                                                                                                                const fieldRules_2 = [];\n                                                                                fieldRules_2.push({\"rule\":\"required\",\"errorMessage\":\"Please enter your company name.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#company', fieldRules_2, { errorsContainer: '#company-error-container' });\n                                                                                                                                                const fieldRules_3 = [];\n                                                                                fieldRules_3.push({\"rule\":\"required\",\"errorMessage\":\"Please enter your email address.\"});\n                                                                                fieldRules_3.push({\"rule\":\"email\",\"errorMessage\":\"Please enter a valid email address.\"});\n                        \n                        \/\/ Add field to validator \u2013 errorsContainer routes errors outside inner so label stays centered\n                                                validator.addField('#email', fieldRules_3, { errorsContainer: '#email-error-container' });\n                                                                                                                                                                                                                const fieldRules_4 = [{\"rule\":\"required\",\"errorMessage\":\"This field is required\"}];\n                        if (fieldRules_4.length > 0) {\n                            validator.addField('#privacy_statement', fieldRules_4);\n                        }\n                                                                                                                                                const fieldRules_5 = [];\n                        if (fieldRules_5.length > 0) {\n                            validator.addField('#commercial_electronic_message_consent_c', fieldRules_5);\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                    \/\/ 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                    if (typeof populateUtmFields === 'function') {\n                        populateUtmFields();\n                    }\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                        const proceedNativeSubmit = function () {\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                        };\n                        const abortNativeSubmit = function () {\n                            debugLog('blocked: reoon invalid email');\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                        if (typeof form._hrReoonEnsureValidated === 'function') {\n                            form._hrReoonEnsureValidated().then(function (result) {\n                                if (result && result.blockSubmit) {\n                                    abortNativeSubmit();\n                                    return;\n                                }\n                                proceedNativeSubmit();\n                            }).catch(proceedNativeSubmit);\n                        } else {\n                            proceedNativeSubmit();\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 = 'hubspot';\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\/plugins\/hotelrunner-utilities\/assets\/js\/\/vendor\/mailcheck.min.js\"><\/script>\n            <script>\n                document.addEventListener('DOMContentLoaded', function () {\n                    const form = document.getElementById('hr-form-6af4316d587a2');\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                <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-6af4316d587a2');\n                if (!form) {\n                    return;\n                }\n                const emailInput = form.querySelector('#email');\n                const statusInput = form.querySelector('input[name=\"is_validated_reoon\"]');\n                if (!emailInput || !statusInput) {\n                    return;\n                }\n\n                const ajaxUrl = 'https:\/\/hotelrunner.com\/wp-admin\/admin-ajax.php';\n                const nonce = '4dbc14e5d0';\n                const excludedDomains = [\"hotelrunner.com\",\"mailinator.com\"];\n                const allowSubmitOnInvalid = true;\n                const warningText = 'This mail is not valid';\n                const warningContainer = document.getElementById('email-error-container')\n                    || (emailInput.closest && emailInput.closest('.hr-form-field'))\n                    || emailInput.parentElement;\n                let warningEl = null;\n                let lastEmail = '';\n                let lastResult = { valid: false, blockSubmit: false, skipped: '' };\n                let pending = null;\n                let requestId = 0;\n                let quotaExceeded = false;\n\n                const fieldWrap = emailInput.closest('.hr-form-field');\n                let holdSuccess = false;\n\n                function isSuccessBorderColor(value) {\n                    const c = (value || '').replace(\/\\s\/g, '').toLowerCase();\n                    return c === '#38c172' || c === 'rgb(56,193,114)';\n                }\n\n                function clearLocalSuccess() {\n                    const hasSuccessClass = emailInput.classList.contains('is-valid')\n                        || (fieldWrap && fieldWrap.classList.contains('is-valid'));\n                    const hasSuccessBorder = isSuccessBorderColor(emailInput.style.borderColor);\n                    if (!hasSuccessClass && !hasSuccessBorder) {\n                        return;\n                    }\n                    if (emailInput.classList.contains('is-valid')) {\n                        emailInput.classList.remove('is-valid');\n                    }\n                    if (hasSuccessBorder) {\n                        emailInput.style.removeProperty('border-color');\n                    }\n                    if (fieldWrap && fieldWrap.classList.contains('is-valid')) {\n                        fieldWrap.classList.remove('is-valid');\n                    }\n                }\n\n                function applyLocalSuccess() {\n                    emailInput.classList.add('was-validated', 'is-valid');\n                    emailInput.style.borderColor = '#38c172';\n                    if (fieldWrap) {\n                        fieldWrap.classList.add('is-valid');\n                    }\n                }\n\n                const successObserver = new MutationObserver(function () {\n                    if (holdSuccess) {\n                        clearLocalSuccess();\n                    }\n                });\n                successObserver.observe(emailInput, { attributes: true, attributeFilter: ['class', 'style'] });\n                if (fieldWrap) {\n                    successObserver.observe(fieldWrap, { attributes: true, attributeFilter: ['class'] });\n                }\n\n                function holdLocalSuccess() {\n                    holdSuccess = true;\n                    clearLocalSuccess();\n                }\n\n                function showWarning(show) {\n                    if (show) {\n                        if (!warningEl) {\n                            warningEl = document.createElement('div');\n                            warningEl.className = 'just-validate-error-label is-label-invalid';\n                            warningEl.setAttribute('aria-live', 'polite');\n                            warningEl.style.color = '#e67e22';\n                            warningEl.style.fontSize = '12px';\n                            warningEl.textContent = warningText;\n                            if (warningContainer) warningContainer.appendChild(warningEl);\n                        }\n                        warningEl.style.display = '';\n                    } else if (warningEl) {\n                        warningEl.style.display = 'none';\n                    }\n                }\n\n                function setFieldState(valid, showInvalidWarning) {\n                    statusInput.value = valid ? 'true' : 'false';\n                    emailInput.classList.remove('hr-email-zb-valid', 'hr-email-zb-invalid');\n                    if (showInvalidWarning) {\n                        holdSuccess = false;\n                        clearLocalSuccess();\n                        emailInput.classList.add('hr-email-zb-invalid');\n                    } else if (valid) {\n                        holdSuccess = false;\n                        applyLocalSuccess();\n                        emailInput.classList.add('hr-email-zb-valid');\n                    } else {\n                        holdSuccess = false;\n                        clearLocalSuccess();\n                    }\n                    showWarning(!!showInvalidWarning);\n                }\n\n                function isExcludedDomain(email) {\n                    const at = email.lastIndexOf('@');\n                    if (at === -1) return false;\n                    const domain = email.slice(at + 1).toLowerCase();\n                    return excludedDomains.indexOf(domain) !== -1;\n                }\n\n                function applyResult(valid, skipped) {\n                    const skippedKind = skipped || '';\n                    const didValidate = skippedKind === '';\n                    const showInvalidWarning = didValidate && !valid && (emailInput.value || '').trim() !== '';\n                    setFieldState(!!valid, showInvalidWarning);\n                    lastResult = {\n                        valid: !!valid,\n                        skipped: skippedKind,\n                        blockSubmit: showInvalidWarning && !allowSubmitOnInvalid\n                    };\n                    return lastResult;\n                }\n\n                function looksLikeEmail(email) {\n                    return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email);\n                }\n\n                function verifyEmail(email) {\n                    email = (email || '').trim();\n                    if (!email) {\n                        requestId += 1;\n                        lastEmail = '';\n                        pending = null;\n                        holdSuccess = false;\n                        setFieldState(false, false);\n                        lastResult = { valid: false, blockSubmit: false, skipped: '' };\n                        return Promise.resolve(lastResult);\n                    }\n                    if (pending && lastEmail === email) {\n                        return pending;\n                    }\n                    if (!pending && lastEmail === email) {\n                        return Promise.resolve(lastResult);\n                    }\n\n                    lastEmail = email;\n\n                    if (!looksLikeEmail(email)) {\n                        pending = null;\n                        holdSuccess = false;\n                        clearLocalSuccess();\n                        lastResult = { valid: false, blockSubmit: false, skipped: '' };\n                        return Promise.resolve(lastResult);\n                    }\n\n                    holdLocalSuccess();\n\n                    if (isExcludedDomain(email)) {\n                        pending = null;\n                        return Promise.resolve(applyResult(true, 'excluded'));\n                    }\n\n                    if (quotaExceeded) {\n                        pending = null;\n                        return Promise.resolve(applyResult(false, 'quota'));\n                    }\n\n                    const id = ++requestId;\n                    pending = fetch(ajaxUrl + '?action=hr_validate_email_reoon&nonce=' + encodeURIComponent(nonce) + '&email=' + encodeURIComponent(email))\n                        .then(function (r) { return r.json(); })\n                        .then(function (data) {\n                            if (id !== requestId) {\n                                return lastResult;\n                            }\n                            const result = (data && data.data) ? data.data : {};\n                            if (result.skipped === 'quota') {\n                                quotaExceeded = true;\n                            }\n                            pending = null;\n                            return applyResult(!!result.valid, result.skipped || '');\n                        })\n                        .catch(function () {\n                            if (id !== requestId) {\n                                return lastResult;\n                            }\n                            pending = null;\n                            return applyResult(false, 'error');\n                        });\n\n                    return pending;\n                }\n\n                \/\/ Verify while typing (debounced) so the result is usually ready before\n                \/\/ blur\/submit. Requires a 2+ letter TLD to avoid spending credits on partial input.\n                const typingDebounceMs = 300;\n                let typingTimer = null;\n                function looksCompleteEmail(email) {\n                    return \/^[^\\s@]+@[^\\s@]+\\.[a-z]{2,}$\/i.test(email);\n                }\n\n                emailInput.addEventListener('input', function () {\n                    const value = (emailInput.value || '').trim();\n                    if (value !== lastEmail) {\n                        holdLocalSuccess();\n                        showWarning(false);\n                        emailInput.classList.remove('hr-email-zb-valid', 'hr-email-zb-invalid');\n                        statusInput.value = 'false';\n                    }\n                    clearTimeout(typingTimer);\n                    if (looksCompleteEmail(value)) {\n                        typingTimer = setTimeout(function () {\n                            verifyEmail(emailInput.value);\n                        }, typingDebounceMs);\n                    }\n                });\n                emailInput.addEventListener('blur', function () {\n                    clearTimeout(typingTimer);\n                    verifyEmail(emailInput.value);\n                });\n\n                form._hrReoonEnsureValidated = function () {\n                    clearTimeout(typingTimer);\n                    const check = verifyEmail(emailInput.value);\n                    \/\/ Warn-only mode: never hold submit\/next for the network. The check keeps\n                    \/\/ running in the background and the server re-verifies on submit.\n                    if (allowSubmitOnInvalid) {\n                        return Promise.resolve({ valid: lastResult.valid, skipped: lastResult.skipped, blockSubmit: false });\n                    }\n                    return check;\n                };\n            });\n        <\/script>\n        \n        <script>\n            document.addEventListener('DOMContentLoaded', function () {\n                const form = document.getElementById('hr-form-6af4316d587a2');\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} characters`;\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} characters`;\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-6af4316d587a2');\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-6af4316d587a2 .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-6af4316d587a2 .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-6af4316d587a2'] = 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-6af4316d587a2');\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-6af4316d587a2');\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-6af4316d587a2']\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 = [\"is_validated_reoon\",\"company_type__c\",\"lastname\",\"company\",\"email\",\"privacy_statement\",\"commercial_electronic_message_consent_c\",\"browser_ip_address__c\",\"browser_primary_language__c\",\"browser_all_languages__c\",\"browser_window_size__c\",\"browser_time_zone__c\",\"current_url__c\",\"referral_link__c\"];\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-6af4316d587a2');\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(function () {\n                        const formEl = $currentForm[0];\n                        if (formEl && typeof formEl._hrReoonEnsureValidated === 'function') {\n                            const reoonEmail = formEl.querySelector('input[type=\"email\"]');\n                            if (reoonEmail && $stepFields[0] && $stepFields[0].contains(reoonEmail)) {\n                                return formEl._hrReoonEnsureValidated().then(function () {\n                                    return allFieldsValid;\n                                });\n                            }\n                        }\n                        return allFieldsValid;\n                    });\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\n<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Autonomous Supply\u2122 Catch the signal.Shape what happens next Travel now runs on a signal economy, where value goes to those who act first. Join the B2A ecosystem that turns live operational signals into coordinated, autonomous actions across every trusted partner. &lt;7 min to onboard +25% Nights sold +7.5% ADR growth 100+ live signals Join the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":149495,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"page_category":[],"page_type":[],"class_list":["post-149303","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/pages\/149303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/comments?post=149303"}],"version-history":[{"count":38,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/pages\/149303\/revisions"}],"predecessor-version":[{"id":149501,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/pages\/149303\/revisions\/149501"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/media\/149495"}],"wp:attachment":[{"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/media?parent=149303"}],"wp:term":[{"taxonomy":"page_category","embeddable":true,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/page_category?post=149303"},{"taxonomy":"page_type","embeddable":true,"href":"https:\/\/hotelrunner.com\/en\/wp-json\/wp\/v2\/page_type?post=149303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}