{"id":15,"date":"2025-07-02T20:22:44","date_gmt":"2025-07-02T20:22:44","guid":{"rendered":"https:\/\/haipestudio.com\/?page_id=15"},"modified":"2025-10-02T21:09:05","modified_gmt":"2025-10-02T21:09:05","slug":"services","status":"publish","type":"page","link":"https:\/\/haipestudio.com\/en\/services\/","title":{"rendered":"Services"},"content":{"rendered":"  <section class=\"main-cta main-cta--h1 \" aria-labelledby=\"main-cta-heading\" >\n          <header class=\"main-cta__header\">\n                          <h1            id=\"main-cta-heading\"\n            class=\"main-cta__title main-cta__title--h1\"\n            >\n            Services          <\/h1>\n              <\/header>\n    \n    <div class=\"main-cta__content\">\n              <div class=\"main-cta__description \"><p>Advanced solutions that leverage artificial intelligence to handle complex, conversation-based interactions.<\/p>\n<\/div>\n      \n          <\/div>\n  <\/section>\n  <script>\n    document.addEventListener('DOMContentLoaded', function() {\n      document.querySelectorAll('a[data-ph-event]').forEach(function(el) {\n        el.addEventListener('click', function() {\n          if (typeof posthog !== 'undefined') {\n            posthog.capture(el.dataset.phEvent, {\n              title: el.dataset.phTitle,\n              url: el.href,\n              section: 'main-cta'\n            });\n            console.log('PostHog event captured:', el.dataset.phEvent, el.dataset.phTitle);\n          }\n        });\n      });\n    });\n  <\/script>\n\n\n\n\n<section id=\"\" class=\"solution-overview\">\n  <div class=\"solution-overview__container\">\n\n          <div class=\"solution-overview__list\">\n                  \n                      <div class=\"solution-overview__item \">\n              <div class=\"solution-overview__content\">\n                <!-- Left Column: Title, Description, CTA -->\n                <div class=\"solution-overview__left\">\n                  <div class=\"solution-overview__header\">\n                                          <h2 class=\"solution-overview__title solution-overview__title--h4\">\n                        AI Customer Agents                      <\/h2>\n                                      <\/div>\n\n                                      <div class=\"solution-overview__tag\">\n                      Best for  Tech-Savvy Founders                    <\/div>\n                  \n                                      <div class=\"solution-overview__description\">\n                      <p>Advanced AI agents that handle customer service, sales conversations, and even complex decision-making without human intervention.<\/p>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Automate customer support and chat interactions<\/li>\n<li>Qualify leads and route them to the right teams<\/li>\n<li>Handle decision-making workflows without human intervention<\/li>\n<li>Provide real-time responses to client inquiries<\/li>\n<\/ul>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__cta\">\n                      <a href=\"https:\/\/haipestudio.com\/services\/ai-customer-agents\/\"\n                        class=\"solution-overview__button btn-primary\"\n                        >\n                        See AI Agents in Action                        <span class=\"btn-shine\"><\/span>\n                      <\/a>\n                    <\/div>\n                                  <\/div>\n\n                <!-- Right Column: Tag and WYSIWYG Content -->\n                <div class=\"solution-overview__right\">\n                                      <div class=\"solution-overview__tag solution-overview__tag--desktop\">\n                      Best for  Tech-Savvy Founders                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg solution-overview__wysiwyg--desktop\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Automate customer support and chat interactions<\/li>\n<li>Qualify leads and route them to the right teams<\/li>\n<li>Handle decision-making workflows without human intervention<\/li>\n<li>Provide real-time responses to client inquiries<\/li>\n<\/ul>\n                    <\/div>\n                                  <\/div>\n              <\/div>\n\n              <!-- Divider Line (except for last item) -->\n                              <div class=\"solution-overview__divider\"><\/div>\n                          <\/div>\n                            \n                      <div class=\"solution-overview__item \">\n              <div class=\"solution-overview__content\">\n                <!-- Left Column: Title, Description, CTA -->\n                <div class=\"solution-overview__left\">\n                  <div class=\"solution-overview__header\">\n                                          <h2 class=\"solution-overview__title solution-overview__title--s1\">\n                        Streamline Your Operations                      <\/h2>\n                                      <\/div>\n\n                                      <div class=\"solution-overview__tag\">\n                      Operations Managers                    <\/div>\n                  \n                                      <div class=\"solution-overview__description\">\n                      <p>Ready-to-use automation packs that integrate seamlessly with your existing tools. Fast setup, zero coding, immediate impact.<\/p>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Automate recurring tasks like approvals, reporting, and notifications<\/li>\n<li>Reduce manual errors in routine operations<\/li>\n<li>Free team time for strategic projects<\/li>\n<li>Standardize processes across departments<\/li>\n<\/ul>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__cta\">\n                      <a href=\"https:\/\/haipestudio.com\/services\/streamline-your-operations\/\"\n                        class=\"solution-overview__button btn-primary\"\n                        >\n                        Explore Ready-to-Use Automations                        <span class=\"btn-shine\"><\/span>\n                      <\/a>\n                    <\/div>\n                                  <\/div>\n\n                <!-- Right Column: Tag and WYSIWYG Content -->\n                <div class=\"solution-overview__right\">\n                                      <div class=\"solution-overview__tag solution-overview__tag--desktop\">\n                      Operations Managers                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg solution-overview__wysiwyg--desktop\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Automate recurring tasks like approvals, reporting, and notifications<\/li>\n<li>Reduce manual errors in routine operations<\/li>\n<li>Free team time for strategic projects<\/li>\n<li>Standardize processes across departments<\/li>\n<\/ul>\n                    <\/div>\n                                  <\/div>\n              <\/div>\n\n              <!-- Divider Line (except for last item) -->\n                              <div class=\"solution-overview__divider\"><\/div>\n                          <\/div>\n                            \n                      <div class=\"solution-overview__item \">\n              <div class=\"solution-overview__content\">\n                <!-- Left Column: Title, Description, CTA -->\n                <div class=\"solution-overview__left\">\n                  <div class=\"solution-overview__header\">\n                                          <h2 class=\"solution-overview__title solution-overview__title--s1\">\n                        Connect Everything                      <\/h2>\n                                      <\/div>\n\n                                      <div class=\"solution-overview__tag\">\n                      Enterprise Directors                    <\/div>\n                  \n                                      <div class=\"solution-overview__description\">\n                      <p>Custom integrations and workflow design that connect all your systems, eliminate silos, and give you full visibility.<\/p>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Eliminate data silos and repetitive data entry<\/li>\n<li>Sync information across CRM, project management, and finance systems<\/li>\n<li>Create automated alerts for important events or thresholds<\/li>\n<li>Gain real-time operational and performance insights<\/li>\n<\/ul>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__cta\">\n                      <a href=\"https:\/\/haipestudio.com\/services\/connect-everything\/\"\n                        class=\"solution-overview__button btn-primary\"\n                        >\n                        Get Your Custom Integration Plan                        <span class=\"btn-shine\"><\/span>\n                      <\/a>\n                    <\/div>\n                                  <\/div>\n\n                <!-- Right Column: Tag and WYSIWYG Content -->\n                <div class=\"solution-overview__right\">\n                                      <div class=\"solution-overview__tag solution-overview__tag--desktop\">\n                      Enterprise Directors                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg solution-overview__wysiwyg--desktop\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>Eliminate data silos and repetitive data entry<\/li>\n<li>Sync information across CRM, project management, and finance systems<\/li>\n<li>Create automated alerts for important events or thresholds<\/li>\n<li>Gain real-time operational and performance insights<\/li>\n<\/ul>\n                    <\/div>\n                                  <\/div>\n              <\/div>\n\n              <!-- Divider Line (except for last item) -->\n                              <div class=\"solution-overview__divider\"><\/div>\n                          <\/div>\n                            \n                      <div class=\"solution-overview__item solution-overview__item--last\">\n              <div class=\"solution-overview__content\">\n                <!-- Left Column: Title, Description, CTA -->\n                <div class=\"solution-overview__left\">\n                  <div class=\"solution-overview__header\">\n                                          <h2 class=\"solution-overview__title solution-overview__title--s1\">\n                        Fully Managed Automation                      <\/h2>\n                                      <\/div>\n\n                                      <div class=\"solution-overview__tag\">\n                      Operations Managers &amp; Growing Teams                    <\/div>\n                  \n                                      <div class=\"solution-overview__description\">\n                      <p>Ongoing automation-as-a-service: we design, implement, monitor, and maintain all your workflows while you focus on growth.<\/p>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>End-to-end design, implementation, and maintenance<\/li>\n<li>Keep workflows running accurately without internal resources<\/li>\n<li>Scale operations efficiently without hiring additional staff<\/li>\n<li>Focus your team entirely on growth and high-value tasks<\/li>\n<\/ul>\n                    <\/div>\n                  \n                                      <div class=\"solution-overview__cta\">\n                      <a href=\"https:\/\/haipestudio.com\/services\/fully-managed-automation\/\"\n                        class=\"solution-overview__button btn-primary\"\n                        >\n                        Let Us Handle Your Automation                        <span class=\"btn-shine\"><\/span>\n                      <\/a>\n                    <\/div>\n                                  <\/div>\n\n                <!-- Right Column: Tag and WYSIWYG Content -->\n                <div class=\"solution-overview__right\">\n                                      <div class=\"solution-overview__tag solution-overview__tag--desktop\">\n                      Operations Managers &amp; Growing Teams                    <\/div>\n                  \n                                      <div class=\"solution-overview__wysiwyg solution-overview__wysiwyg--desktop\">\n                      <h3>Applications:<\/h3>\n<ul>\n<li>End-to-end design, implementation, and maintenance<\/li>\n<li>Keep workflows running accurately without internal resources<\/li>\n<li>Scale operations efficiently without hiring additional staff<\/li>\n<li>Focus your team entirely on growth and high-value tasks<\/li>\n<\/ul>\n                    <\/div>\n                                  <\/div>\n              <\/div>\n\n              <!-- Divider Line (except for last item) -->\n                          <\/div>\n                        <\/div>\n\n    \n  <\/div>\n<\/section>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    const solutionOverviewBlock = document.querySelector('.solution-overview');\n    \n    if (solutionOverviewBlock) {\n        const solutionItems = solutionOverviewBlock.querySelectorAll('.solution-overview__item');\n        \n        if (solutionItems.length > 0) {\n            const isMobile = window.innerWidth <= 768;\n            \n            const observerOptions = {\n                threshold: isMobile ? 0.1 : 0.2,\n                rootMargin: isMobile ? '0px 0px -20px 0px' : '0px 0px -50px 0px'\n            };\n            \n            \/\/ Create individual observers for each item\n            solutionItems.forEach((item, index) => {\n                const observerCallback = function(entries, observer) {\n                    entries.forEach(entry => {\n                        if (entry.isIntersecting) {\n                            \/\/ Add entrance class to this specific item\n                            item.classList.add('solution-overview__item--entrance');\n                            \n                            \/\/ Stop observing this item\n                            observer.unobserve(entry.target);\n                        }\n                    });\n                };\n                \n                const observer = new IntersectionObserver(observerCallback, observerOptions);\n                observer.observe(item);\n            });\n            \n            \/\/ Handle resize for responsive behavior\n            let currentIsMobile = isMobile;\n            window.addEventListener('resize', function() {\n                const newIsMobile = window.innerWidth <= 768;\n                if (newIsMobile !== currentIsMobile) {\n                    currentIsMobile = newIsMobile;\n                    \/\/ Recreate observers with new options\n                    solutionItems.forEach((item, index) => {\n                        if (!item.classList.contains('solution-overview__item--entrance')) {\n                            const newObserverOptions = {\n                                threshold: newIsMobile ? 0.1 : 0.2,\n                                rootMargin: newIsMobile ? '0px 0px -20px 0px' : '0px 0px -50px 0px'\n                            };\n                            \n                            const observerCallback = function(entries, observer) {\n                                entries.forEach(entry => {\n                                    if (entry.isIntersecting) {\n                                        item.classList.add('solution-overview__item--entrance');\n                                        observer.unobserve(entry.target);\n                                    }\n                                });\n                            };\n                            \n                            const observer = new IntersectionObserver(observerCallback, newObserverOptions);\n                            observer.observe(item);\n                        }\n                    });\n                }\n            });\n        }\n    }\n});\n<\/script>\n\n\n<section class=\"full-width-cta\" aria-labelledby=\"full-width-cta-heading\" >\n\n  <div class=\"full-width-cta__container\">\n    <!-- Background SVG for mobile and desktop -->\n    <div class=\"full-width-cta__background\" aria-hidden=\"true\">\n      <svg width=\"312\" height=\"471\" viewBox=\"0 0 312 471\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M37.939 386.955L53.2172 470.488L224.082 371.839L157.968 317.657L37.939 386.955Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M0.0971518 182.814L25.7494 320.186L106.945 273.308L0.0971518 182.814Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M179.476 93.214L311.261 321.472L10.7543 67.2631L126.059 0.692169L154.48 49.9189L231.889 5.22669L256.885 48.5217L179.476 93.214Z\" \nfill=\"#FFFFFF\"\/>\n<\/svg>\n    <\/div>\n\n    <div class=\"full-width-cta__bg-svg full-width-cta__bg-svg--left\" aria-hidden=\"true\">\n      <svg width=\"312\" height=\"471\" viewBox=\"0 0 312 471\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M37.939 386.955L53.2172 470.488L224.082 371.839L157.968 317.657L37.939 386.955Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M0.0971518 182.814L25.7494 320.186L106.945 273.308L0.0971518 182.814Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M179.476 93.214L311.261 321.472L10.7543 67.2631L126.059 0.692169L154.48 49.9189L231.889 5.22669L256.885 48.5217L179.476 93.214Z\" \nfill=\"#FFFFFF\"\/>\n<\/svg>\n    <\/div>\n\n    <div class=\"full-width-cta__bg-svg full-width-cta__bg-svg--right\" aria-hidden=\"true\">\n      <svg width=\"312\" height=\"471\" viewBox=\"0 0 312 471\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M37.939 386.955L53.2172 470.488L224.082 371.839L157.968 317.657L37.939 386.955Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M0.0971518 182.814L25.7494 320.186L106.945 273.308L0.0971518 182.814Z\" fill=\"#FFFFFF\"\/>\n<path d=\"M179.476 93.214L311.261 321.472L10.7543 67.2631L126.059 0.692169L154.48 49.9189L231.889 5.22669L256.885 48.5217L179.476 93.214Z\" \nfill=\"#FFFFFF\"\/>\n<\/svg>\n    <\/div>\n\n    <div class=\"full-width-cta__content-wrapper\">\n              <header class=\"full-width-cta__header\">\n          <h2 id=\"full-width-cta-heading\" class=\"full-width-cta__title\">\n            Discover Your <br> Automation Potential          <\/h2>\n        <\/header>\n      \n              <div class=\"full-width-cta__content\">\n          <div class=\"full-width-cta__description\">\n            <p>Real results from real businesses. See how our automation solutions have transformed  operations and delivered measurable impact across different industries.<\/p>\n          <\/div>\n        <\/div>\n      \n              <footer class=\"full-width-cta__footer\">\n          <div class=\"full-width-cta__links\">\n                          <a href=\"https:\/\/haipestudio.com\/free-audit\/\"\n                class=\"full-width-cta__button btn-secondary\"\n                                >\n                Free Audit                <span class=\"btn-shine\"><\/span>\n              <\/a>\n            \n                      <\/div>\n        <\/footer>\n          <\/div>\n\n  <\/div>\n\n<\/section>\n\n\n<div style=\"height:36px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n  <section class=\"main-cta main-cta--h2 \" aria-labelledby=\"main-cta-heading\" >\n          <header class=\"main-cta__header\">\n                          <h2            id=\"main-cta-heading\"\n            class=\"main-cta__title main-cta__title--h2\"\n            >\n            Our Proven Process          <\/h2>\n              <\/header>\n    \n    <div class=\"main-cta__content\">\n              <div class=\"main-cta__description main-cta__description--h2\"><p>From discovery to deployment, we follow a battle-tested methodology that ensures your automation project succeeds.<\/p>\n<\/div>\n      \n          <\/div>\n  <\/section>\n  <script>\n    document.addEventListener('DOMContentLoaded', function() {\n      document.querySelectorAll('a[data-ph-event]').forEach(function(el) {\n        el.addEventListener('click', function() {\n          if (typeof posthog !== 'undefined') {\n            posthog.capture(el.dataset.phEvent, {\n              title: el.dataset.phTitle,\n              url: el.href,\n              section: 'main-cta'\n            });\n            console.log('PostHog event captured:', el.dataset.phEvent, el.dataset.phTitle);\n          }\n        });\n      });\n    });\n  <\/script>\n\n\n\n  <section id=\"\" class=\"journey-block\" aria-label=\"Jornada e etapas do processo\">\n    <div class=\"journey-block__container\">\n      <div class=\"journey-block__grid \">\n                              <article class=\"journey-block__step\" aria-labelledby=\"journey-step-title-0\">\n              <!-- Green Line Background (Mobile\/Desktop) -->\n              <div class=\"journey-block__step-line\">\n                <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-left-up.svg\" alt=\"\" class=\"journey-block__step-line-image\" loading=\"lazy\" title=\"\">\n              <\/div>\n\n              <!-- Step Number\/Icon -->\n              <div class=\"journey-block__step-number\">\n                                  <span class=\"journey-block__step-number-text\" aria-label=\"Etapa 1\">\n                    01                  <\/span>\n                              <\/div>\n\n              <!-- Title -->\n                              <header class=\"journey-block__step-header\">\n                  <h3 id=\"journey-step-title-0\" class=\"journey-block__step-title\">\n                    Discovery  &amp; Audit                  <\/h3>\n                <\/header>\n              \n              <!-- Description -->\n                              <div class=\"journey-block__step-content\">\n                  <div class=\"journey-block__step-description\">\n                    <p>We analyze your current processes and identify automation opportunities<\/p>\n                  <\/div>\n                <\/div>\n              \n\n              <!-- Time -->\n                              <div class=\"journey-block__step-time\">\n                  <time class=\"journey-block__step-time-text\" datetime=\"1-2 days\">\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                      <path d=\"M7.99998 14.6656C11.6819 14.6656 14.6666 11.6808 14.6666 7.99894C14.6666 4.31704 11.6819 1.33228 7.99998 1.33228C4.31808 1.33228 1.33331 4.31704 1.33331 7.99894C1.33331 11.6808 4.31808 14.6656 7.99998 14.6656Z\"\n                        stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                      <path d=\"M8 3.99902V7.99902L10.6667 9.33236\" stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                    <\/svg>\n\n                    <span>1-2 days<\/span>\n                  <\/time>\n                <\/div>\n                          <\/article>\n                                        <article class=\"journey-block__step\" aria-labelledby=\"journey-step-title-1\">\n              <!-- Green Line Background (Mobile\/Desktop) -->\n              <div class=\"journey-block__step-line\">\n                <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-left-down.svg\" alt=\"\" class=\"journey-block__step-line-image\" loading=\"lazy\" title=\"\">\n              <\/div>\n\n              <!-- Step Number\/Icon -->\n              <div class=\"journey-block__step-number\">\n                                  <span class=\"journey-block__step-number-text\" aria-label=\"Etapa 2\">\n                    02                  <\/span>\n                              <\/div>\n\n              <!-- Title -->\n                              <header class=\"journey-block__step-header\">\n                  <h3 id=\"journey-step-title-1\" class=\"journey-block__step-title\">\n                    Strategy  &amp; Design                  <\/h3>\n                <\/header>\n              \n              <!-- Description -->\n                              <div class=\"journey-block__step-content\">\n                  <div class=\"journey-block__step-description\">\n                    <p>Custom automation strategy designed specifically for your business goals<\/p>\n                  <\/div>\n                <\/div>\n              \n\n              <!-- Time -->\n                              <div class=\"journey-block__step-time\">\n                  <time class=\"journey-block__step-time-text\" datetime=\"10-20 days\">\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                      <path d=\"M7.99998 14.6656C11.6819 14.6656 14.6666 11.6808 14.6666 7.99894C14.6666 4.31704 11.6819 1.33228 7.99998 1.33228C4.31808 1.33228 1.33331 4.31704 1.33331 7.99894C1.33331 11.6808 4.31808 14.6656 7.99998 14.6656Z\"\n                        stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                      <path d=\"M8 3.99902V7.99902L10.6667 9.33236\" stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                    <\/svg>\n\n                    <span>10-20 days<\/span>\n                  <\/time>\n                <\/div>\n                          <\/article>\n                                        <article class=\"journey-block__step\" aria-labelledby=\"journey-step-title-2\">\n              <!-- Green Line Background (Mobile\/Desktop) -->\n              <div class=\"journey-block__step-line\">\n                <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-left-up.svg\" alt=\"\" class=\"journey-block__step-line-image\" loading=\"lazy\" title=\"\">\n              <\/div>\n\n              <!-- Step Number\/Icon -->\n              <div class=\"journey-block__step-number\">\n                                  <span class=\"journey-block__step-number-text\" aria-label=\"Etapa 3\">\n                    03                  <\/span>\n                              <\/div>\n\n              <!-- Title -->\n                              <header class=\"journey-block__step-header\">\n                  <h3 id=\"journey-step-title-2\" class=\"journey-block__step-title\">\n                    Development  &amp; Testing                  <\/h3>\n                <\/header>\n              \n              <!-- Description -->\n                              <div class=\"journey-block__step-content\">\n                  <div class=\"journey-block__step-description\">\n                    <p>Build and rigorously test all automation workflows before deployment<\/p>\n                  <\/div>\n                <\/div>\n              \n\n              <!-- Time -->\n                              <div class=\"journey-block__step-time\">\n                  <time class=\"journey-block__step-time-text\" datetime=\"2-4 weeks\">\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                      <path d=\"M7.99998 14.6656C11.6819 14.6656 14.6666 11.6808 14.6666 7.99894C14.6666 4.31704 11.6819 1.33228 7.99998 1.33228C4.31808 1.33228 1.33331 4.31704 1.33331 7.99894C1.33331 11.6808 4.31808 14.6656 7.99998 14.6656Z\"\n                        stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                      <path d=\"M8 3.99902V7.99902L10.6667 9.33236\" stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                    <\/svg>\n\n                    <span>2-4 weeks<\/span>\n                  <\/time>\n                <\/div>\n                          <\/article>\n                                        <article class=\"journey-block__step\" aria-labelledby=\"journey-step-title-3\">\n              <!-- Green Line Background (Mobile\/Desktop) -->\n              <div class=\"journey-block__step-line\">\n                <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-left-down.svg\" alt=\"\" class=\"journey-block__step-line-image\" loading=\"lazy\" title=\"\">\n              <\/div>\n\n              <!-- Step Number\/Icon -->\n              <div class=\"journey-block__step-number\">\n                                  <span class=\"journey-block__step-number-text\" aria-label=\"Etapa 4\">\n                    04                  <\/span>\n                              <\/div>\n\n              <!-- Title -->\n                              <header class=\"journey-block__step-header\">\n                  <h3 id=\"journey-step-title-3\" class=\"journey-block__step-title\">\n                    Implementation  &amp; Training                  <\/h3>\n                <\/header>\n              \n              <!-- Description -->\n                              <div class=\"journey-block__step-content\">\n                  <div class=\"journey-block__step-description\">\n                    <p>Deploy solutions and train your team for maximum adoption and success<\/p>\n                  <\/div>\n                <\/div>\n              \n\n              <!-- Time -->\n                              <div class=\"journey-block__step-time\">\n                  <time class=\"journey-block__step-time-text\" datetime=\"1-2 days\">\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                      <path d=\"M7.99998 14.6656C11.6819 14.6656 14.6666 11.6808 14.6666 7.99894C14.6666 4.31704 11.6819 1.33228 7.99998 1.33228C4.31808 1.33228 1.33331 4.31704 1.33331 7.99894C1.33331 11.6808 4.31808 14.6656 7.99998 14.6656Z\"\n                        stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                      <path d=\"M8 3.99902V7.99902L10.6667 9.33236\" stroke=\"#663BB7\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n                    <\/svg>\n\n                    <span>1-2 days<\/span>\n                  <\/time>\n                <\/div>\n                          <\/article>\n                        <\/div>\n\n      <!-- Tablet Horizontal Lines (2 columns) - Show for 2, 3, or 4 items -->\n              <div class=\"journey-block__tablet-lines\">\n          <!-- First row line (between steps 1 and 2) -->\n          <div class=\"journey-block__tablet-line journey-block__tablet-line--first \">\n            <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-full.svg\" alt=\"\" class=\"journey-block__tablet-line-image\" loading=\"lazy\" title=\"\">\n          <\/div>\n\n          <!-- Second row line (between steps 3 and 4) - Only for 4 items -->\n                      <div class=\"journey-block__tablet-line journey-block__tablet-line--second\">\n              <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-full.svg\" alt=\"\" class=\"journey-block__tablet-line-image\" loading=\"lazy\" title=\"\">\n            <\/div>\n                  <\/div>\n      \n      <!-- Desktop Horizontal Line - Show for 3 or 4 items -->\n              <div class=\"journey-block__desktop-line\">\n          <picture>\n            <source srcset=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-full-max.svg\" media=\"(min-width: 1536px)\">\n            <img decoding=\"async\" src=\"https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio\/blocks\/journey\/img\/line-green-full.svg\" alt=\"\" class=\"journey-block__desktop-line-image\" loading=\"lazy\" title=\"\">\n          <\/picture>\n        <\/div>\n          <\/div>\n  <\/section>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Function to add line breaks before & symbol in titles\n    function addLineBreaksBeforeAmpersand() {\n        const journeyTitles = document.querySelectorAll('.journey-block__step-title');\n        \n        journeyTitles.forEach(function(title) {\n            if (title.textContent.includes('&')) {\n                \/\/ Replace & with <br>& to add line break before it\n                title.innerHTML = title.textContent.replace(\/&\/g, '<br>&');\n            }\n        });\n    }\n    \n    \/\/ Function to handle icon display\n    function handleIconDisplay() {\n        const journeyIcons = document.querySelectorAll('.journey-block__step-icon svg');\n        \n        journeyIcons.forEach(function(icon) {\n            \/\/ Ensure SVG icons are properly styled\n            icon.style.width = '2rem';\n            icon.style.height = '2rem';\n            icon.style.color = 'white';\n        });\n    }\n    \n    \/\/ Function to set desktop line background\n    function setDesktopLineBackground() {\n        const desktopLine = document.querySelector('.journey-block__desktop-line');\n        if (desktopLine) {\n            \/\/ Get the theme directory URI from a data attribute or use a fallback\n            const themeUri = window.themeUri || 'https:\/\/haipestudio.com\/wp-content\/themes\/haipe_studio';\n            const imagePath = `${themeUri}\/blocks\/journey\/img\/line-green-full-02.svg`;\n            \n            desktopLine.style.background = `url('${imagePath}') repeat-x`;\n            desktopLine.style.backgroundSize = 'auto 100%';\n        }\n    }\n\n    \/\/ Intersection Observer for viewport-based animations\n    function initJourneyAnimations() {\n        const journeyBlock = document.querySelector('.journey-block');\n        \n        if (!journeyBlock) return;\n        \n        \/\/ Check if device is mobile\n        const isMobile = window.innerWidth <= 768;\n        \n        const journeyObserver = new IntersectionObserver((entries) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    entry.target.classList.add('journey-block-entrance');\n                    \n                    \/\/ Unobserve after animation is triggered\n                    journeyObserver.unobserve(entry.target);\n                }\n            });\n        }, {\n            threshold: 0.1, \/\/ Reduced threshold for earlier trigger\n            rootMargin: isMobile ? '0px 0px -5px 0px' : '0px 0px -50px 0px' \/\/ Less negative margin on mobile\n        });\n        \n        journeyObserver.observe(journeyBlock);\n    }\n    \n    \/\/ Run the functions when DOM is loaded\n    addLineBreaksBeforeAmpersand();\n    handleIconDisplay();\n    setDesktopLineBackground();\n    initJourneyAnimations();\n    \n    \/\/ Handle window resize to update mobile detection\n    let resizeTimeout;\n    window.addEventListener('resize', function() {\n        clearTimeout(resizeTimeout);\n        resizeTimeout = setTimeout(function() {\n            \/\/ Re-initialize animations with updated mobile detection\n            initJourneyAnimations();\n        }, 250);\n    });\n    \n    \/\/ Also run if content is dynamically loaded (for Gutenberg editor)\n    if (typeof wp !== 'undefined' && wp.data) {\n        wp.data.subscribe(function() {\n            \/\/ Small delay to ensure content is rendered\n            setTimeout(function() {\n                addLineBreaksBeforeAmpersand();\n                handleIconDisplay();\n                setDesktopLineBackground();\n                initJourneyAnimations();\n            }, 100);\n        });\n    }\n});\n<\/script>\n\n\n  <section id=\"free-audit\"\n    class=\"contact-form-block\"\n    aria-labelledby=\"contact-form-heading\"     aria-label=\"Formul\u00e1rio de contato e informa\u00e7\u00f5es de contato\" style=\"background-color: #F3F1F8;\">\n\n    <div class=\"contact-form-block__container\">\n      <div class=\"contact-form-block__grid\">\n\n        <!-- Left Content - Contact Information -->\n        <div class=\"contact-form-block__content\">\n\n          <!-- Main Title and Topics -->\n                      <header class=\"contact-form-block__header contact-form-block__header--icons\">\n              <h2 id=\"contact-form-heading\" class=\"contact-form-block__title\">\n                Get In Touch              <\/h2>\n\n                              <nav class=\"contact-form-block__topics\" aria-label=\"T\u00f3picos de contato\">\n                  <ul class=\"contact-form-block__topics-list contact-form-block__topics-list--icons\" role=\"list\">\n                                                                  <li class=\"contact-form-block__topics-item\">\n                                                      <!-- Icons Layout -->\n                            <div class=\"contact-form-block__topics-icon\">\n                              <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect width=\"48\" height=\"48\" rx=\"24\" fill=\"#663BB7\"\/>\n<path d=\"M34 19L25.5 27.5L20.5 22.5L14 29\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<path d=\"M28 19H34V25\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<\/svg>\n                            <\/div>\n                          \n                          <div class=\"contact-form-block__topics-content\">\n                            <span class=\"contact-form-block__topics-text\">Prove ROI<\/span>\n                                                          <p class=\"contact-form-block__topics-description\">Free audit to reveal your automation savings.<\/p>\n                                                      <\/div>\n                        <\/li>\n                                                                                        <li class=\"contact-form-block__topics-item\">\n                                                      <!-- Icons Layout -->\n                            <div class=\"contact-form-block__topics-icon\">\n                              <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect width=\"48\" height=\"48\" rx=\"24\" fill=\"#663BB7\"\/>\n<path d=\"M21 14H27\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<path d=\"M24 22V26\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<path d=\"M24 34C28.4183 34 32 30.4183 32 26C32 21.5817 28.4183 18 24 18C19.5817 18 16 21.5817 16 26C16 30.4183 19.5817 34 24 34Z\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<\/svg>\n                            <\/div>\n                          \n                          <div class=\"contact-form-block__topics-content\">\n                            <span class=\"contact-form-block__topics-text\">Streamline Workflows<\/span>\n                                                          <p class=\"contact-form-block__topics-description\">Available Mon\u2013Fri, 9am\u20136pm (Lisbon time).<\/p>\n                                                      <\/div>\n                        <\/li>\n                                                                                        <li class=\"contact-form-block__topics-item\">\n                                                      <!-- Icons Layout -->\n                            <div class=\"contact-form-block__topics-icon\">\n                              <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect width=\"48\" height=\"48\" rx=\"24\" fill=\"#663BB7\"\/>\n<path d=\"M24 34C29.5228 34 34 29.5228 34 24C34 18.4772 29.5228 14 24 14C18.4772 14 14 18.4772 14 24C14 29.5228 18.4772 34 24 34Z\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<path d=\"M21 24L23 26L27 22\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n<\/svg>\n                            <\/div>\n                          \n                          <div class=\"contact-form-block__topics-content\">\n                            <span class=\"contact-form-block__topics-text\">Clear Roadmap<\/span>\n                                                          <p class=\"contact-form-block__topics-description\">Remote-first, European-based, built for global delivery.<\/p>\n                                                      <\/div>\n                        <\/li>\n                                                            <\/ul>\n                <\/nav>\n                          <\/header>\n          \n\n          <!-- Contact Information -->\n          <div class=\"contact-form-block__info contact-form-block__info--card-layout\" role=\"region\" aria-label=\"Informa\u00e7\u00f5es de contato\">\n            <!-- Second Title -->\n            \n                          <!-- Card Layout -->\n              <div class=\"contact-form-block__card-layout\">\n\n                <figure class=\"contact-form-block__card-layout-background\">\n                  <svg width=\"312\" height=\"471\" viewBox=\"0 0 312 471\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M37.939 386.955L53.2172 470.488L224.082 371.839L157.968 317.657L37.939 386.955Z\" fill=\"#F3F1F8\"\/>\n<path d=\"M0.0971518 182.814L25.7494 320.186L106.945 273.308L0.0971518 182.814Z\" fill=\"#F3F1F8\"\/>\n<path d=\"M179.476 93.214L311.261 321.472L10.7543 67.2631L126.059 0.692169L154.48 49.9189L231.889 5.22669L256.885 48.5217L179.476 93.214Z\" fill=\"#F3F1F8\"\/>\n<\/svg>\n                <\/figure>\n\n                                  <h3 class=\"contact-form-block__card-layout-title\">\n                    Typical Results                  <\/h3>\n                \n                                                      <div class=\"contact-form-block__card-item\">\n                      <div class=\"contact-form-block__card-left\">\n                        Time Savings:                      <\/div>\n                      <div class=\"contact-form-block__card-right\">\n                        15-25 hours\/week                      <\/div>\n                    <\/div>\n                                                                        <div class=\"contact-form-block__card-item\">\n                      <div class=\"contact-form-block__card-left\">\n                        Error Reduction:                      <\/div>\n                      <div class=\"contact-form-block__card-right\">\n                        90%+                      <\/div>\n                    <\/div>\n                                                                        <div class=\"contact-form-block__card-item\">\n                      <div class=\"contact-form-block__card-left\">\n                        ROI Timeline:                      <\/div>\n                      <div class=\"contact-form-block__card-right\">\n                        1-3 months                      <\/div>\n                    <\/div>\n                                                <\/div>\n            \n          <\/div>\n        <\/div>\n\n        <!-- Right Form -->\n        <div id=\"free-audit\" class=\"contact-form-block__form-wrapper contact-form-block__form-wrapper--card\">\n          <div class=\"contact-form-block__form-container\">\n                          <div class=\"contact-form-block__form-content\"\n                role=\"region\"\n                aria-label=\"contact form\"\n                >\n                <div class='fluentform ff-default fluentform_wrapper_13 ffs_default_wrap'><form data-form_id=\"13\" id=\"fluentform_13\" class=\"frm-fluent-form fluent_form_13 ff-el-form-top ff_form_instance_13_1 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_13_1\" method=\"POST\" data-turnstile_key=\"0x4AAAAAAClzAtPyv0uj_MqM\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">Services | All<\/legend><input type='hidden' name='__fluent_form_embded_post_id' value='15' \/><input type=\"hidden\" id=\"_fluentform_13_fluentformnonce\" name=\"_fluentform_13_fluentformnonce\" value=\"96b863ac73\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/15\" \/><div class='ff-el-group  ff-custom_html' tabindex='-1' data-name=\"custom_html-13_1\" ><h3 class=\"tracking-tight text-2xl font-bold text-slate-900\">Start Your Automation Journey<\/h3><\/div><div data-name=\"ff_cn_id_1\"  class='ff-t-container ff-column-container ff_columns_total_2 '><div class='ff-t-cell ff-t-column-1' style='flex-basis: 50%;'><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_input_text' id='label_ff_13_input_text' aria-label=\"Name\">Name<\/label><\/div><div class='ff-el-input--content'><input type=\"text\" name=\"input_text\" class=\"ff-el-form-control\" placeholder=\"Your full name\" data-name=\"input_text\" id=\"ff_13_input_text\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><\/div><div class='ff-t-cell ff-t-column-2' style='flex-basis: 50%;'><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_email' id='label_ff_13_email' aria-label=\"Email\">Email<\/label><\/div><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_13_email\" class=\"ff-el-form-control\" placeholder=\"Email Address\" data-name=\"email\" autocomplete=\"email\" inputmode=\"email\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><\/div><\/div><div data-name=\"ff_cn_id_2\"  class='ff-t-container ff-column-container ff_columns_total_2 '><div class='ff-t-cell ff-t-column-1' style='flex-basis: 50%;'><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_phone' id='label_ff_13_phone' aria-label=\"Phone\">Phone<\/label><\/div><div class='ff-el-input--content'><input name=\"phone\" class=\"ff-el-form-control ff-el-phone ff_el_with_extended_validation\" type=\"tel\" data-name=\"phone\" autocomplete=\"tel\" inputmode=\"tel\" id=\"ff_13_phone\"  aria-invalid='false' aria-required=true><\/div><\/div><\/div><div class='ff-t-cell ff-t-column-2' style='flex-basis: 50%;'><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_input_text_1' id='label_ff_13_input_text_1' aria-label=\"Company\">Company<\/label><\/div><div class='ff-el-input--content'><input type=\"text\" name=\"input_text_1\" class=\"ff-el-form-control\" placeholder=\"Your company name\" data-name=\"input_text_1\" id=\"ff_13_input_text_1\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_dropdown' id='label_ff_13_dropdown' aria-label=\"Subject\">Subject<\/label><\/div><div class='ff-el-input--content'><select name=\"dropdown\" id=\"ff_13_dropdown\" class=\"ff-el-form-control\" data-name=\"dropdown\" data-calc_value=\"0\"  aria-invalid=\"false\" aria-required=\"true\" aria-labelledby=\"label_ff_13_dropdown\"><option value=\"\">Custom Integration Solutions<\/option><option value=\"AI Customer Agents\"  >AI Customer Agents<\/option><option value=\"Streamline Your Operations\"  >Streamline Your Operations<\/option><option value=\"Connect Everything\"  >Connect Everything<\/option><option value=\"Fully Managed Automation\"  >Fully Managed Automation<\/option><option value=\"I don&#039;t know\"  >I don&#8217;t know<\/option><\/select><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_13_dropdown_2' id='label_ff_13_dropdown_2' aria-label=\"Company Size\">Company Size<\/label><\/div><div class='ff-el-input--content'><select name=\"dropdown_2\" id=\"ff_13_dropdown_2\" class=\"ff-el-form-control\" data-name=\"dropdown_2\" data-calc_value=\"0\"  aria-invalid=\"false\" aria-required=\"true\" aria-labelledby=\"label_ff_13_dropdown_2\"><option value=\"\">Select company size<\/option><option value=\"1-10 employees\"  >1-10 employees<\/option><option value=\"11-50 employees\"  >11-50 employees<\/option><option value=\"51-200 employees\"  >51-200 employees<\/option><option value=\"200+ employees\"  >200+ employees<\/option><\/select><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label asterisk-right\"><label for='ff_13_description' id='label_ff_13_description' aria-label=\"Biggest Pain Points\">Biggest Pain Points<\/label><\/div><div class='ff-el-input--content'><textarea aria-required=\"false\" aria-labelledby=\"label_ff_13_description\" name=\"description\" id=\"ff_13_description\" class=\"ff-el-form-control\" placeholder=\"Describe your biggest pain points\" rows=\"10\" cols=\"2\" data-name=\"description\" ><\/textarea><\/div><\/div><div class='ff-el-group    ff-el-input--content'><div class='ff-el-form-check ff-el-tc'><label aria-label='Terms and Conditions: I have read and agree to the Terms and Conditions and Privacy Policy Contains 2 links. Use tab navigation to review.' class='ff-el-form-check-label ff_tc_label' for=terms-n-condition_ebdc52c8e86bac6862fd7ef34f7deef6><span class='ff_tc_checkbox'><input type=\"checkbox\" name=\"terms-n-condition\" class=\"ff-el-form-check-input\" data-name=\"terms-n-condition\" id=\"terms-n-condition_ebdc52c8e86bac6862fd7ef34f7deef6\"  value='on' aria-invalid='false' aria-required=true><\/span> <div class='ff_t_c'><p>I have read and agree to the <a href=\"https:\/\/haipestudio.com\/terms-of-service\/\" target=\"_blank\" rel=\"noopener\">Terms and Conditions<\/a> and <a href=\"https:\/\/haipestudio.com\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Privacy Policy<\/a><\/p><\/div><\/label><\/div><\/div><div class='ff-el-group ' style='margin-bottom: 0;'><div class='ff-el-input--content'><div data-fluent_id='13' name='cf-turnstile-response'><div\n\t\tdata-sitekey='0x4AAAAAAClzAtPyv0uj_MqM'\n\t\tdata-theme='auto'\n\t\tid='fluentform-turnstile-13-1'\n\t\tclass='ff-el-turnstile cf-turnstile'\n\t\tdata-appearance='interaction-only'><\/div><\/div><\/div><\/div><div class='ff-el-group ff-text-center ff_submit_btn_wrapper'><button type=\"submit\" class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style\"  aria-label=\"Get my free audit\">Get my free audit<\/button><\/div><\/fieldset><\/form><div id='fluentform_13_errors' class='ff-errors-in-stack ff_form_instance_13_1 ff-form-loading_errors ff_form_instance_13_1_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_13_1 = {\"id\":\"13\",\"ajaxUrl\":\"https:\\\/\\\/haipestudio.com\\\/wp-admin\\\/admin-ajax.php\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"asteriskPlacement\":\"asterisk-right\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"cssClassName\":\"\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_13_1\",\"form_id_selector\":\"fluentform_13\",\"rules\":{\"input_text\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"email\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true},\"email\":{\"value\":true,\"message\":\"This field must contain a valid email\",\"global_message\":\"This field must contain a valid email\",\"global\":true}},\"phone\":{\"required\":{\"value\":true,\"global\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\"},\"valid_phone_number\":{\"value\":true,\"global\":true,\"message\":\"Phone number is not valid\",\"global_message\":\"Phone number is not valid\"}},\"input_text_1\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"dropdown\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"dropdown_2\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"description\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"terms-n-condition\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"cf-turnstile-response\":[]},\"debounce_time\":300,\"file_upload_settings\":[]};\n                            <\/script>\n                          <\/div>\n                      <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n<script>\nclass HaipeCustomSelect {\n\tconstructor(element, options = {}) {\n\t\tthis.element = element;\n\t\tthis.options = {\n\t\t\tplaceholder: 'Select...',\n\t\t\tallowCustom: false,\n\t\t\tsearchable: false,\n\t\t\t...options\n\t\t};\n\t\t\n\t\tthis.isOpen = false;\n\t\tthis.selectedValue = '';\n\t\tthis.selectedText = '';\n\t\tthis.selectedValues = []; \/\/ For multiple selection\n\t\tthis.selectedTexts = []; \/\/ For multiple selection\n\t\tthis.isMultiple = this.element.hasAttribute('multiple');\n\t\tthis.originalSelect = null;\n\t\t\n\t\tthis.init();\n\t}\n\t\n\tinit() {\n\t\t\/\/ Store reference to original select\n\t\tthis.originalSelect = this.element;\n\t\t\n\t\t\/\/ Store original options for restoration\n\t\tthis.originalOptions = Array.from(this.originalSelect.options).map(opt => ({\n\t\t\tvalue: opt.value,\n\t\t\ttext: opt.textContent,\n\t\t\tselected: opt.selected\n\t\t}));\n\t\t\n\t\t\/\/ Initialize selected values for multiple select\n\t\tif (this.isMultiple) {\n\t\t\tthis.selectedValues = [];\n\t\t\tthis.selectedTexts = [];\n\t\t\t\n\t\t\t\/\/ Get initially selected options\n\t\t\tArray.from(this.originalSelect.selectedOptions).forEach(option => {\n\t\t\t\tif (option.value && option.value !== '') {\n\t\t\t\t\tthis.selectedValues.push(option.value);\n\t\t\t\t\tthis.selectedTexts.push(option.textContent);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t\/\/ Create custom select structure\n\t\tthis.createCustomSelect();\n\t\t\n\t\t\/\/ Bind events\n\t\tthis.bindEvents();\n\t\t\n\t\t\/\/ Set initial state\n\t\tthis.updateDisplay();\n\t}\n\t\n\tcreateCustomSelect() {\n\t\t\/\/ Store a reference to the original select before any modifications\n\t\tthis.originalSelectElement = this.originalSelect;\n\t\t\n\t\t\/\/ For multiple selects, keep original select visible but hidden from view\n\t\t\/\/ For single selects, hide completely\n\t\tif (this.isMultiple) {\n\t\t\t\/\/ Keep original select accessible but visually hidden\n\t\t\tthis.originalSelect.style.position = 'absolute';\n\t\t\tthis.originalSelect.style.left = '-9999px';\n\t\t\tthis.originalSelect.style.opacity = '0';\n\t\t\tthis.originalSelect.style.pointerEvents = 'none';\n\t\t\tthis.originalSelect.style.zIndex = '-1';\n\t\t} else {\n\t\t\t\/\/ Hide original select completely for single selects\n\t\t\tthis.originalSelect.style.display = 'none';\n\t\t}\n\t\t\n\t\t\/\/ Create wrapper\n\t\tthis.wrapper = document.createElement('div');\n\t\tthis.wrapper.className = 'haipe-custom-select';\n\t\tif (this.isMultiple) {\n\t\t\tthis.wrapper.classList.add('haipe-custom-select--multiple');\n\t\t}\n\t\t\n\t\t\/\/ Create label if original has one\n\t\tif (this.originalSelect.previousElementSibling && \n\t\t\tthis.originalSelect.previousElementSibling.tagName === 'LABEL') {\n\t\t\tconst label = document.createElement('label');\n\t\t\tlabel.className = 'haipe-custom-select__label';\n\t\t\tlabel.textContent = this.originalSelect.previousElementSibling.textContent;\n\t\t\tthis.wrapper.appendChild(label);\n\t\t}\n\t\t\n\t\t\/\/ Create input\n\t\tthis.input = document.createElement('input');\n\t\tthis.input.type = 'text';\n\t\tthis.input.className = 'haipe-custom-select__input';\n\t\tthis.input.placeholder = this.options.placeholder;\n\t\tthis.input.readOnly = true;\n\t\t\n\t\t\/\/ Create selected items container for multiple selection\n\t\tif (this.isMultiple) {\n\t\t\tthis.selectedContainer = document.createElement('div');\n\t\t\tthis.selectedContainer.className = 'haipe-custom-select__selected-container';\n\t\t}\n\t\t\n\t\t\/\/ Check if original select has a placeholder option and set initial display\n\t\tconst hasPlaceholder = this.originalSelect.querySelector('option[value=\"\"]') || \n\t\t\t\t\t\t\t   this.originalSelect.querySelector('option[data-placeholder]') ||\n\t\t\t\t\t\t\t   this.originalSelect.querySelector('option.placeholder-option');\n\t\t\n\t\tif (hasPlaceholder && !this.originalSelect.value) {\n\t\t\tthis.input.value = '';\n\t\t}\n\t\t\n\t\t\/\/ Create chevron icon using existing SVG file\n\t\tthis.chevron = document.createElement('div');\n\t\tthis.chevron.className = 'haipe-custom-select__chevron';\n\t\tthis.chevron.innerHTML = `<svg width=\"12\" height=\"7\" viewBox=\"0 0 12 7\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M5.9997 6.99838C5.86636 6.99838 5.74136 6.97738 5.6247 6.93538C5.50803 6.89404 5.3997 6.82338 5.2997 6.72338L0.674696 2.09838C0.491363 1.91504 0.40403 1.68571 0.412696 1.41038C0.420696 1.13571 0.516363 0.906711 0.699696 0.723377C0.883029 0.540044 1.11636 0.448377 1.3997 0.448377C1.68303 0.448377 1.91636 0.540044 2.0997 0.723377L5.9997 4.62338L9.9247 0.698377C10.108 0.515043 10.3374 0.427377 10.6127 0.435377C10.8874 0.444044 11.1164 0.540044 11.2997 0.723377C11.483 0.906711 11.5747 1.14004 11.5747 1.42338C11.5747 1.70671 11.483 1.94004 11.2997 2.12338L6.6997 6.72338C6.5997 6.82338 6.49136 6.89404 6.3747 6.93538C6.25803 6.97738 6.13303 6.99838 5.9997 6.99838Z\" fill=\"#4D5356\"\/>\n<\/svg>\n`;\n\t\t\n\t\t\/\/ Make chevron clickable to toggle dropdown\n\t\tthis.chevron.addEventListener('click', (e) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\t\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t} else {\n\t\t\t\tthis.openDropdown();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\/\/ Create dropdown\n\t\tthis.dropdown = document.createElement('div');\n\t\tthis.dropdown.className = 'haipe-custom-select__dropdown';\n\t\t\n\t\t\/\/ Create options\n\t\tthis.createOptions();\n\t\t\n\t\t\/\/ Create hint text if original has data-hint\n\t\tif (this.originalSelect.dataset.hint) {\n\t\t\tconst hint = document.createElement('span');\n\t\t\thint.className = 'haipe-custom-select__hint';\n\t\t\thint.textContent = this.originalSelect.dataset.hint;\n\t\t\tthis.wrapper.appendChild(hint);\n\t\t}\n\t\t\n\t\t\/\/ Assemble\n\t\tif (this.isMultiple) {\n\t\t\tthis.wrapper.appendChild(this.selectedContainer);\n\t\t}\n\t\tthis.wrapper.appendChild(this.input);\n\t\tthis.wrapper.appendChild(this.chevron);\n\t\tthis.wrapper.appendChild(this.dropdown);\n\t\t\n\t\t\/\/ Insert after original select\n\t\tthis.originalSelect.parentNode.insertBefore(this.wrapper, this.originalSelect.nextSibling);\n\t}\n\t\n\tcreateOptions() {\n\t\t\/\/ Clear existing options\n\t\tthis.dropdown.innerHTML = '';\n\t\t\n\t\t\/\/ Get options from original select, filtering out placeholder options\n\t\tconst options = Array.from(this.originalSelect.options).filter(option => {\n\t\t\t\/\/ Filter out options that are placeholders (empty value or specific placeholder indicators)\n\t\t\treturn option.value !== '' && \n\t\t\t\t   option.value !== null && \n\t\t\t\t   !option.hasAttribute('data-placeholder') &&\n\t\t\t\t   !option.classList.contains('placeholder-option');\n\t\t});\n\t\t\n\t\toptions.forEach((option, index) => {\n\t\t\tconst optionElement = document.createElement('div');\n\t\t\toptionElement.className = 'haipe-custom-select__option';\n\t\t\toptionElement.textContent = option.textContent;\n\t\t\t\/\/ Store both value and text for better matching\n\t\t\toptionElement.dataset.value = option.value;\n\t\t\toptionElement.dataset.text = option.textContent;\n\t\t\t\n\t\t\tif (option.disabled) {\n\t\t\t\toptionElement.classList.add('haipe-custom-select__option--disabled');\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Check if option is selected (for both single and multiple)\n\t\t\tif (this.isMultiple) {\n\t\t\t\tif (this.selectedValues.includes(option.value) || this.selectedValues.includes(option.textContent)) {\n\t\t\t\t\toptionElement.classList.add('haipe-custom-select__option--selected');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (option.value === this.originalSelect.value) {\n\t\t\t\t\toptionElement.classList.add('haipe-custom-select__option--selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\toptionElement.addEventListener('click', (e) => {\n\t\t\t\tif (!option.disabled) {\n\t\t\t\t\t\/\/ Use the actual option value, not text content\n\t\t\t\t\tthis.selectOption(option.value, option.textContent);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.dropdown.appendChild(optionElement);\n\t\t});\n\t}\n\t\n\tbindEvents() {\n\t\t\/\/ Input click - toggle dropdown (open if closed, close if open)\n\t\tthis.input.addEventListener('click', (e) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\t\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t} else {\n\t\t\t\tthis.openDropdown();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\/\/ Removed focus event to prevent conflict with click event\n\t\t\n\t\t\/\/ For multiple select, also make the selected container clickable\n\t\tif (this.isMultiple) {\n\t\t\tthis.selectedContainer.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\t\n\t\t\t\tif (this.isOpen) {\n\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t} else {\n\t\t\t\t\tthis.openDropdown();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t\/\/ Disable custom input - only allow selection from dropdown\n\t\t\/\/ Removed custom input functionality to prevent typing\n\t\t\n\t\t\/\/ Click outside to close\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tconst isInput = e.target === this.input;\n\t\t\tconst isInsideWrapper = this.wrapper && this.wrapper.contains(e.target);\n\t\t\tconst isChevron = e.target === this.chevron || this.chevron.contains(e.target);\n\t\t\tconst isDropdown = e.target === this.dropdown || this.dropdown.contains(e.target);\n\t\t\tconst isSelectedContainer = this.isMultiple && (e.target === this.selectedContainer || this.selectedContainer.contains(e.target));\n\t\t\t\n\t\t\tconst shouldIgnore = isInput || isInsideWrapper || isChevron || isDropdown || isSelectedContainer;\n\t\t\t\n\t\t\tif (!shouldIgnore) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\/\/ Keyboard navigation\n\t\tthis.input.addEventListener('keydown', (e) => {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'Enter':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tif (this.isOpen) {\n\t\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.openDropdown();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Escape':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.openDropdown();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\t\n\ttoggleDropdown() {\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown();\n\t\t} else {\n\t\t\tthis.openDropdown();\n\t\t}\n\t}\n\t\n\topenDropdown() {\n\t\tif (this.isOpen) return;\n\t\t\n\t\tthis.isOpen = true;\n\t\tthis.dropdown.classList.add('haipe-custom-select__dropdown--open');\n\t\tthis.chevron.classList.add('haipe-custom-select__chevron--open');\n\t\tthis.input.classList.add('ring-2', 'ring-haipe_purple-500\/20');\n\t\t\n\t\t\/\/ Ensure dropdown is visible and positioned correctly\n\t\tthis.dropdown.style.display = 'block';\n\t}\n\t\n\tcloseDropdown() {\n\t\tif (!this.isOpen) return;\n\t\t\n\t\tthis.isOpen = false;\n\t\tthis.dropdown.classList.remove('haipe-custom-select__dropdown--open');\n\t\tthis.chevron.classList.remove('haipe-custom-select__chevron--open');\n\t\tthis.input.classList.remove('ring-2', 'ring-haipe_purple-500\/20');\n\t}\n\t\n\tselectOption(value, text) {\n\t\t\/\/ Don't allow selecting placeholder values\n\t\tif (!value || value === '' || value === null) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (this.isMultiple) {\n\t\t\t\/\/ Handle multiple selection\n\t\t\t\/\/ Check if value is already selected (by value or text)\n\t\t\tconst optionIndexByValue = this.selectedValues.indexOf(value);\n\t\t\tconst optionIndexByText = this.selectedValues.indexOf(text);\n\t\t\tconst optionIndex = optionIndexByValue > -1 ? optionIndexByValue : optionIndexByText;\n\t\t\t\n\t\t\tif (optionIndex > -1) {\n\t\t\t\t\/\/ Remove if already selected\n\t\t\t\tthis.selectedValues.splice(optionIndex, 1);\n\t\t\t\tthis.selectedTexts.splice(optionIndex, 1);\n\t\t\t} else {\n\t\t\t\t\/\/ Add if not selected - use the actual option value from the original select\n\t\t\t\t\/\/ Find the corresponding option in the original select\n\t\t\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\t\t\tconst originalOption = Array.from(originalSelect.options).find(opt => \n\t\t\t\t\topt.value === value || opt.textContent.trim() === value.trim() || opt.textContent.trim() === text.trim()\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tif (originalOption) {\n\t\t\t\t\tthis.selectedValues.push(originalOption.value);\n\t\t\t\t\tthis.selectedTexts.push(originalOption.textContent);\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ Fallback to the provided values\n\t\t\t\t\tthis.selectedValues.push(value);\n\t\t\t\t\tthis.selectedTexts.push(text);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Update option visual state\n\t\t\tconst selectedOption = this.dropdown.querySelector(`[data-value=\"${value}\"]`);\n\t\t\tif (selectedOption) {\n\t\t\t\tif (optionIndex > -1) {\n\t\t\t\t\tselectedOption.classList.remove('haipe-custom-select__option--selected');\n\t\t\t\t} else {\n\t\t\t\t\tselectedOption.classList.add('haipe-custom-select__option--selected');\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t\/\/ Handle single selection\n\t\t\tthis.selectedValue = value;\n\t\t\tthis.selectedText = text;\n\t\t\t\n\t\t\t\/\/ Remove selected class from all options\n\t\t\tthis.dropdown.querySelectorAll('.haipe-custom-select__option').forEach(option => {\n\t\t\t\toption.classList.remove('haipe-custom-select__option--selected');\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Add selected class to the chosen option\n\t\t\tconst selectedOption = this.dropdown.querySelector(`[data-value=\"${value}\"]`);\n\t\t\tif (selectedOption) {\n\t\t\t\tselectedOption.classList.add('haipe-custom-select__option--selected');\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Close dropdown for single selection\n\t\t\tthis.closeDropdown();\n\t\t}\n\t\t\n\t\t\/\/ Update display\n\t\tthis.updateDisplay();\n\t\t\n\t\t\/\/ Update original select\n\t\tthis.updateOriginalSelect();\n\t\t\n\t\t\/\/ Trigger change event\n\t\tthis.triggerChangeEvent();\n\t}\n\t\n\tupdateDisplay() {\n\t\tif (this.isMultiple) {\n\t\t\t\/\/ Handle multiple selection display\n\t\t\tif (this.selectedValues.length > 0) {\n\t\t\t\t\/\/ Clear selected container\n\t\t\t\tthis.selectedContainer.innerHTML = '';\n\t\t\t\t\n\t\t\t\t\/\/ Add selected items as chips\n\t\t\t\tthis.selectedTexts.forEach((text, index) => {\n\t\t\t\t\tconst chip = document.createElement('div');\n\t\t\t\t\tchip.className = 'haipe-custom-select__chip';\n\t\t\t\t\tchip.innerHTML = `\n\t\t\t\t\t\t<span class=\"haipe-custom-select__chip-text\">${text}<\/span>\n\t\t\t\t\t\t<button type=\"button\" class=\"haipe-custom-select__chip-remove\" data-value=\"${this.selectedValues[index]}\">\n\t\t\t\t\t\t\t<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t<path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n\t\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t\t<\/button>\n\t\t\t\t\t`;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Add remove event listener\n\t\t\t\t\tconst removeBtn = chip.querySelector('.haipe-custom-select__chip-remove');\n\t\t\t\t\tremoveBtn.addEventListener('click', (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tthis.removeSelectedItem(this.selectedValues[index]);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.selectedContainer.appendChild(chip);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.input.style.display = 'none';\n\t\t\t\tthis.selectedContainer.classList.add('has-selection');\n\t\t\t} else {\n\t\t\t\tthis.selectedContainer.innerHTML = '';\n\t\t\t\tthis.input.style.display = 'block';\n\t\t\t\tthis.input.value = '';\n\t\t\t\tthis.selectedContainer.classList.remove('has-selection');\n\t\t\t}\n\t\t} else {\n\t\t\t\/\/ Handle single selection display\n\t\t\tif (this.selectedText && this.selectedValue && this.selectedValue !== '') {\n\t\t\t\tthis.input.value = this.selectedText;\n\t\t\t\tthis.input.classList.add('border-haipe_purple-500');\n\t\t\t\tthis.input.classList.remove('placeholder-shown');\n\t\t\t} else {\n\t\t\t\tthis.input.value = '';\n\t\t\t\tthis.input.classList.remove('border-haipe_purple-500');\n\t\t\t\tthis.input.classList.add('placeholder-shown');\n\t\t\t}\n\t\t}\n\t}\n\t\n\tremoveSelectedItem(value) {\n\t\tconst index = this.selectedValues.indexOf(value);\n\t\tif (index > -1) {\n\t\t\tthis.selectedValues.splice(index, 1);\n\t\t\tthis.selectedTexts.splice(index, 1);\n\t\t\t\n\t\t\t\/\/ Update option visual state\n\t\t\tconst selectedOption = this.dropdown.querySelector(`[data-value=\"${value}\"]`);\n\t\t\tif (selectedOption) {\n\t\t\t\tselectedOption.classList.remove('haipe-custom-select__option--selected');\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Update display\n\t\t\tthis.updateDisplay();\n\t\t\t\n\t\t\t\/\/ Update original select\n\t\t\tthis.updateOriginalSelect();\n\t\t\t\n\t\t\t\/\/ Trigger change event\n\t\t\tthis.triggerChangeEvent();\n\t\t}\n\t}\n\t\n\tupdateOriginalSelect() {\n\t\tif (this.isMultiple) {\n\t\t\t\/\/ Use the stored reference to the original select element\n\t\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\t\t\n\t\t\t\/\/ Check if the select has options, if not, restore them\n\t\t\tif (originalSelect.options.length === 0) {\n\t\t\t\tthis.restoreOriginalSelectOptions(originalSelect);\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Clear all selections first\n\t\t\tArray.from(originalSelect.options).forEach(option => {\n\t\t\t\toption.selected = false;\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Set selected options\n\t\t\tthis.selectedValues.forEach(value => {\n\t\t\t\t\/\/ Try exact match first\n\t\t\t\tlet option = originalSelect.querySelector(`option[value=\"${value}\"]`);\n\t\t\t\t\n\t\t\t\t\/\/ If not found, try to find by text content (trimmed)\n\t\t\t\tif (!option) {\n\t\t\t\t\tconst options = Array.from(originalSelect.options);\n\t\t\t\t\toption = options.find(opt => opt.textContent.trim() === value.trim());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ If still not found, try to find by value (trimmed)\n\t\t\t\tif (!option) {\n\t\t\t\t\tconst options = Array.from(originalSelect.options);\n\t\t\t\t\toption = options.find(opt => opt.value.trim() === value.trim());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (option) {\n\t\t\t\t\toption.selected = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Force trigger change event for multiple select\n\t\t\tconst changeEvent = new Event('change', { bubbles: true });\n\t\t\toriginalSelect.dispatchEvent(changeEvent);\n\t\t\t\n\t\t\t\/\/ Also trigger input event for better compatibility\n\t\t\tconst inputEvent = new Event('input', { bubbles: true });\n\t\t\toriginalSelect.dispatchEvent(inputEvent);\n\t\t\t\n\t\t\t\/\/ Trigger custom event for Fluent Forms\n\t\t\tconst fluentEvent = new CustomEvent('fluentform:field:change', { \n\t\t\t\tbubbles: true, \n\t\t\t\tdetail: { \n\t\t\t\t\tfield: originalSelect,\n\t\t\t\t\tvalue: this.selectedValues \n\t\t\t\t} \n\t\t\t});\n\t\t\toriginalSelect.dispatchEvent(fluentEvent);\n\t\t} else {\n\t\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\t\toriginalSelect.value = this.selectedValue;\n\t\t}\n\t}\n\t\n\trestoreOriginalSelectOptions(originalSelect) {\n\t\t\/\/ Clear existing options first\n\t\toriginalSelect.innerHTML = '';\n\t\t\n\t\t\/\/ Restore from stored original options\n\t\tthis.originalOptions.forEach(optData => {\n\t\t\tconst option = document.createElement('option');\n\t\t\toption.value = optData.value;\n\t\t\toption.textContent = optData.text;\n\t\t\toption.selected = optData.selected;\n\t\t\t\n\t\t\t\/\/ Add to original select\n\t\t\toriginalSelect.appendChild(option);\n\t\t});\n\t}\n\t\n\ttriggerChangeEvent() {\n\t\t\/\/ Create and dispatch change event\n\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\tconst event = new Event('change', { bubbles: true });\n\t\toriginalSelect.dispatchEvent(event);\n\t}\n\t\n\t\/\/ Public methods\n\tsetValue(value) {\n\t\tif (this.isMultiple) {\n\t\t\t\/\/ For multiple select, value should be an array\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\/\/ Clear current selections\n\t\t\t\tthis.selectedValues = [];\n\t\t\t\tthis.selectedTexts = [];\n\t\t\t\t\n\t\t\t\t\/\/ Add new selections\n\t\t\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\t\t\tvalue.forEach(val => {\n\t\t\t\t\tconst option = originalSelect.querySelector(`option[value=\"${val}\"]`);\n\t\t\t\t\tif (option) {\n\t\t\t\t\t\tthis.selectedValues.push(option.value);\n\t\t\t\t\t\tthis.selectedTexts.push(option.textContent);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Update display and original select\n\t\t\t\tthis.updateDisplay();\n\t\t\t\tthis.updateOriginalSelect();\n\t\t\t\tthis.createOptions(); \/\/ Recreate options to update visual state\n\t\t\t}\n\t\t} else {\n\t\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\t\tconst option = originalSelect.querySelector(`option[value=\"${value}\"]`);\n\t\t\tif (option) {\n\t\t\t\tthis.selectOption(option.value, option.textContent);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetValue() {\n\t\tif (this.isMultiple) {\n\t\t\treturn this.selectedValues;\n\t\t} else {\n\t\t\treturn this.selectedValue;\n\t\t}\n\t}\n\t\n\tdisable() {\n\t\tthis.input.classList.add('haipe-custom-select__input--disabled');\n\t\tthis.input.disabled = true;\n\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\toriginalSelect.disabled = true;\n\t}\n\t\n\tenable() {\n\t\tthis.input.classList.remove('haipe-custom-select__input--disabled');\n\t\tthis.input.disabled = false;\n\t\tconst originalSelect = this.originalSelectElement || this.originalSelect;\n\t\toriginalSelect.disabled = false;\n\t}\n}\n\n\/\/ Function to wait for element to exist\nfunction waitForElement(selector, callback, maxWaitTime = 10000) {\n\tconst startTime = Date.now();\n\t\n\tfunction checkElement() {\n\t\tconst element = document.querySelector(selector);\n\t\t\n\t\tif (element) {\n\t\t\tcallback(element);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t\/\/ Check if we've exceeded max wait time\n\t\tif (Date.now() - startTime > maxWaitTime) {\n\t\t\tconsole.warn(`Element ${selector} not found after ${maxWaitTime}ms`);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t\/\/ Check again in 100ms\n\t\tsetTimeout(checkElement, 100);\n\t}\n\t\n\tcheckElement();\n}\n\n\/\/ Function to initialize custom selects when DOM is ready\ndocument.addEventListener('DOMContentLoaded', function() {\n\tinitializeCustomSelects();\n\tinitializeSuccessMessage();\n\thandleSubjectParameter();\n\tinterceptSubjectLinks();\n\tinterceptFormSubmission();\n});\n\n\/\/ Function to intercept form submission and ensure sync\nfunction interceptFormSubmission() {\n\t\/\/ Listen for form submission\n\tdocument.addEventListener('submit', function(event) {\n\t\tconst form = event.target;\n\t\t\n\t\t\/\/ Check if it's a Fluent Forms form\n\t\tif (form.closest('.fluentform')) {\n\t\t\t\/\/ Force sync all custom selects before submission\n\t\t\tconst customSelects = form.querySelectorAll('select[data-custom-select-initialized=\"true\"]');\n\t\t\tcustomSelects.forEach(select => {\n\t\t\t\tif (select.customSelectInstance) {\n\t\t\t\t\tselect.customSelectInstance.updateOriginalSelect();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, true); \/\/ Use capture phase to intercept before Fluent Forms\n}\n\n\t\/\/ Function to initialize custom selects\nfunction initializeCustomSelects() {\n\t\/\/ Find all select elements in Fluent Forms\n\tconst fluentFormSelects = document.querySelectorAll('.fluentform select');\n\t\n\tfluentFormSelects.forEach(select => {\n\t\t\/\/ Check if it's not already converted\n\t\tif (!select.dataset.customSelectInitialized) {\n\t\t\tselect.dataset.customSelectInitialized = 'true';\n\t\t\t\n\t\t\t\/\/ For multiple selects, completely disable Choices.js\n\t\t\tif (select.hasAttribute('multiple')) {\n\t\t\t\t\/\/ Find and hide all Choices.js related elements\n\t\t\t\tconst choicesContainer = select.closest('.choices');\n\t\t\t\tif (choicesContainer) {\n\t\t\t\t\tchoicesContainer.style.display = 'none';\n\t\t\t\t\tchoicesContainer.style.visibility = 'hidden';\n\t\t\t\t\tchoicesContainer.style.opacity = '0';\n\t\t\t\t\tchoicesContainer.style.position = 'absolute';\n\t\t\t\t\tchoicesContainer.style.left = '-9999px';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Also hide any other Choices.js elements that might exist\n\t\t\t\tconst choicesElements = document.querySelectorAll('.choices[data-type*=\"select-multiple\"]');\n\t\t\t\tchoicesElements.forEach(el => {\n\t\t\t\t\tel.style.display = 'none';\n\t\t\t\t\tel.style.visibility = 'hidden';\n\t\t\t\t\tel.style.opacity = '0';\n\t\t\t\t\tel.style.position = 'absolute';\n\t\t\t\t\tel.style.left = '-9999px';\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Ensure the original select is visible for our custom select to work with\n\t\t\t\tselect.style.display = 'block';\n\t\t\t\tselect.style.visibility = 'visible';\n\t\t\t\tselect.style.opacity = '1';\n\t\t\t\tselect.style.position = 'static';\n\t\t\t\tselect.style.left = 'auto';\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Get placeholder text - check for Fluent Forms placeholder or first option if it's a placeholder\n\t\t\tlet placeholderText = select.dataset.placeholder || select.getAttribute('placeholder') || 'Select...';\n\t\t\t\n\t\t\t\/\/ Check if first option is a placeholder (common in Fluent Forms)\n\t\t\tif (select.options[0] && (select.options[0].value === '' || select.options[0].disabled)) {\n\t\t\t\tplaceholderText = select.options[0].textContent;\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Create custom select instance\n\t\t\tconst customSelect = new HaipeCustomSelect(select, {\n\t\t\t\tallowCustom: false,\n\t\t\t\tplaceholder: placeholderText\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Store reference for potential external access\n\t\t\tselect.customSelectInstance = customSelect;\n\t\t}\n\t});\n}\n\n\t\/\/ Function to initialize custom selects for dynamically added forms\nwindow.initializeHaipeCustomSelects = function() {\n\t\/\/ Wait for Fluent Forms to be ready\n\twaitForElement('.fluentform', function() {\n\t\tconst fluentFormSelects = document.querySelectorAll('.fluentform select:not([data-custom-select-initialized])');\n\t\t\n\t\tfluentFormSelects.forEach(select => {\n\t\t\tselect.dataset.customSelectInitialized = 'true';\n\t\t\t\n\t\t\t\/\/ For multiple selects, completely disable Choices.js\n\t\t\tif (select.hasAttribute('multiple')) {\n\t\t\t\t\/\/ Find and hide all Choices.js related elements\n\t\t\t\tconst choicesContainer = select.closest('.choices');\n\t\t\t\tif (choicesContainer) {\n\t\t\t\t\tchoicesContainer.style.display = 'none';\n\t\t\t\t\tchoicesContainer.style.visibility = 'hidden';\n\t\t\t\t\tchoicesContainer.style.opacity = '0';\n\t\t\t\t\tchoicesContainer.style.position = 'absolute';\n\t\t\t\t\tchoicesContainer.style.left = '-9999px';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Also hide any other Choices.js elements that might exist\n\t\t\t\tconst choicesElements = document.querySelectorAll('.choices[data-type*=\"select-multiple\"]');\n\t\t\t\tchoicesElements.forEach(el => {\n\t\t\t\t\tel.style.display = 'none';\n\t\t\t\t\tel.style.visibility = 'hidden';\n\t\t\t\t\tel.style.opacity = '0';\n\t\t\t\t\tel.style.position = 'absolute';\n\t\t\t\t\tel.style.left = '-9999px';\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Ensure the original select is visible for our custom select to work with\n\t\t\t\tselect.style.display = 'block';\n\t\t\t\tselect.style.visibility = 'visible';\n\t\t\t\tselect.style.opacity = '1';\n\t\t\t\tselect.style.position = 'static';\n\t\t\t\tselect.style.left = 'auto';\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Get placeholder text - check for Fluent Forms placeholder or first option if it's a placeholder\n\t\t\tlet placeholderText = select.dataset.placeholder || select.getAttribute('placeholder') || 'Select...';\n\t\t\t\n\t\t\t\/\/ Check if first option is a placeholder (common in Fluent Forms)\n\t\t\tif (select.options[0] && (select.options[0].value === '' || select.options[0].disabled)) {\n\t\t\t\tplaceholderText = select.options[0].textContent;\n\t\t\t}\n\t\t\t\n\t\t\tconst customSelect = new HaipeCustomSelect(select, {\n\t\t\t\tallowCustom: false,\n\t\t\t\tplaceholder: placeholderText\n\t\t\t});\n\t\t\t\n\t\t\tselect.customSelectInstance = customSelect;\n\t\t});\n\t});\n};\n\n\/\/ Listen for Fluent Forms dynamic content\nif (typeof jQuery !== 'undefined') {\n\tjQuery(document).on('fluentform_loaded', function() {\n\t\t\/\/ Wait a bit for the DOM to be fully updated\n\t\tsetTimeout(function() {\n\t\t\twindow.initializeHaipeCustomSelects();\n\t\t\thandleSubjectParameter(); \/\/ Also handle subject parameter for dynamically loaded forms\n\t\t}, 100);\n\t});\n}\n\n\/\/ Function to initialize success message functionality\nfunction initializeSuccessMessage() {\n\t\/\/ Watch for success message appearance\n\tconst observer = new MutationObserver(function(mutations) {\n\t\tmutations.forEach(function(mutation) {\n\t\t\tmutation.addedNodes.forEach(function(node) {\n\t\t\t\tif (node.nodeType === 1 && node.classList && node.classList.contains('ff-message-success')) {\n\t\t\t\t\tsetupSuccessMessage(node);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\t\/\/ Start observing\n\tobserver.observe(document.body, {\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n}\n\n\/\/ Function to setup success message with button functionality\nfunction setupSuccessMessage(successElement) {\n\t\/\/ Find the submit again button\n\tconst submitAgainBtn = successElement.querySelector('#resendFormBtn');\n\t\n\tif (submitAgainBtn) {\n\t\tsubmitAgainBtn.addEventListener('click', function(e) {\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tconsole.log('Submit Again button clicked');\n\t\t\t\n\t\t\t\/\/ Hide the success message\n\t\t\tsuccessElement.style.display = 'none';\n\t\t\t\n\t\t\t\/\/ Find the form container\n\t\t\tconst formContainer = successElement.closest('.fluentform');\n\t\t\tif (formContainer) {\n\t\t\t\tconsole.log('Form container found:', formContainer);\n\t\t\t\t\n\t\t\t\t\/\/ Remove success state classes that might be hiding the form\n\t\t\t\tformContainer.classList.remove('ff-form-success', 'ff-submission-success');\n\t\t\t\t\n\t\t\t\t\/\/ Try to use Fluent Forms native reset if available\n\t\t\t\tif (window.FluentForm && formContainer.dataset.formId) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst formId = formContainer.dataset.formId;\n\t\t\t\t\t\tconsole.log('Trying Fluent Forms native reset for form ID:', formId);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Try to trigger a native reset\n\t\t\t\t\t\tif (window.FluentForm.resetForm) {\n\t\t\t\t\t\t\twindow.FluentForm.resetForm(formId);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.log('Native reset failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Check what elements exist in the form container\n\t\t\t\tconst allElements = formContainer.querySelectorAll('*');\n\t\t\t\tconsole.log('All elements in form container:', allElements.length);\n\t\t\t\t\n\t\t\t\t\/\/ Look for hidden elements\n\t\t\t\tconst hiddenElements = formContainer.querySelectorAll('[style*=\"display: none\"], [style*=\"display:none\"], .hidden');\n\t\t\t\tconsole.log('Hidden elements found:', hiddenElements);\n\t\t\t\t\n\t\t\t\t\/\/ Try to find the original form\n\t\t\t\tconst form = formContainer.querySelector('form');\n\t\t\t\tif (form) {\n\t\t\t\t\tconsole.log('Form element found:', form);\n\t\t\t\t\tform.style.display = 'block';\n\t\t\t\t\tform.reset();\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('No form element found');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Try to show all form-related elements that might be hidden\n\t\t\t\tconst formElements = formContainer.querySelectorAll('.ff-el-form, .ff-el-group, .ff-el-input, .ff_submit_btn_wrapper');\n\t\t\t\tconsole.log('Form elements found:', formElements);\n\t\t\t\t\n\t\t\t\tformElements.forEach(element => {\n\t\t\t\t\tif (element !== successElement) {\n\t\t\t\t\t\tconsole.log('Showing element:', element);\n\t\t\t\t\t\telement.style.display = 'block';\n\t\t\t\t\t\telement.style.visibility = 'visible';\n\t\t\t\t\t\telement.style.opacity = '1';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Also try to remove any hidden classes\n\t\t\t\tformContainer.querySelectorAll('.hidden, .ff-hidden, .ff-el-hidden').forEach(el => {\n\t\t\t\t\tel.classList.remove('hidden', 'ff-hidden', 'ff-el-hidden');\n\t\t\t\t\tel.style.display = 'block';\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Force show all form elements with important CSS\n\t\t\t\tconst allFormElements = formContainer.querySelectorAll('[class*=\"ff-el-\"]');\n\t\t\t\tallFormElements.forEach(el => {\n\t\t\t\t\tif (el !== successElement && !el.classList.contains('ff-message-success')) {\n\t\t\t\t\t\tel.style.setProperty('display', 'block', 'important');\n\t\t\t\t\t\tel.style.setProperty('visibility', 'visible', 'important');\n\t\t\t\t\t\tel.style.setProperty('opacity', '1', 'important');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Try to trigger a form reset event\n\t\t\t\tconst resetEvent = new Event('reset', { bubbles: true });\n\t\t\t\tif (form) {\n\t\t\t\t\tform.dispatchEvent(resetEvent);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Alternative: try to reload the form using Fluent Forms events\n\t\t\t\tif (typeof jQuery !== 'undefined') {\n\t\t\t\t\tjQuery(document).trigger('fluentform_reset', [formContainer]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Ensure all original select elements are properly hidden\n\t\t\t\tconst allSelects = formContainer.querySelectorAll('select');\n\t\t\t\tallSelects.forEach(select => {\n\t\t\t\t\tif (select.hasAttribute('multiple')) {\n\t\t\t\t\t\t\/\/ For multiple selects, keep accessible but visually hidden\n\t\t\t\t\t\tselect.style.position = 'absolute';\n\t\t\t\t\t\tselect.style.left = '-9999px';\n\t\t\t\t\t\tselect.style.opacity = '0';\n\t\t\t\t\t\tselect.style.pointerEvents = 'none';\n\t\t\t\t\t\tselect.style.zIndex = '-1';\n\t\t\t\t\t\tselect.style.visibility = 'hidden';\n\t\t\t\t\t\tselect.style.display = 'block'; \/\/ Keep in DOM for form submission\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ For single selects, hide completely\n\t\t\t\t\t\tselect.style.display = 'none';\n\t\t\t\t\t\tselect.style.visibility = 'hidden';\n\t\t\t\t\t\tselect.style.opacity = '0';\n\t\t\t\t\t\tselect.style.position = 'absolute';\n\t\t\t\t\t\tselect.style.left = '-9999px';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconsole.log('Form reset completed');\n\t\t\t}\n\t\t});\n\t}\n}\n\n\/\/ Function to intercept subject links and prevent page reload\nfunction interceptSubjectLinks() {\n\t\/\/ Listen for clicks on links with subject parameter\n\tdocument.addEventListener('click', function(event) {\n\t\tconst link = event.target.closest('a[href*=\"subject=\"]');\n\t\t\n\t\tif (link && link.href.includes('subject=')) {\n\t\t\t\/\/ Prevent default link behavior (page reload)\n\t\t\tevent.preventDefault();\n\t\t\t\n\t\t\t\/\/ Extract subject parameter from URL\n\t\t\tconst url = new URL(link.href);\n\t\t\tconst subjectParam = url.searchParams.get('subject');\n\t\t\t\n\t\t\tif (subjectParam) {\n\t\t\t\t\/\/ Update current page URL without reload\n\t\t\t\tupdateUrlParameter('subject', subjectParam);\n\t\t\t\t\n\t\t\t\t\/\/ Scroll to form if there's a hash\n\t\t\t\tif (url.hash) {\n\t\t\t\t\tconst targetElement = document.querySelector(url.hash);\n\t\t\t\t\tif (targetElement) {\n\t\t\t\t\t\ttargetElement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Handle subject parameter\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\thandleSubjectParameter();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t}\n\t});\n}\n\n\/\/ Function to update URL parameter without page reload\nfunction updateUrlParameter(param, value) {\n\tconst currentUrl = new URL(window.location);\n\t\n\tif (value) {\n\t\tcurrentUrl.searchParams.set(param, value);\n\t} else {\n\t\tcurrentUrl.searchParams.delete(param);\n\t}\n\t\n\t\/\/ Update URL without page reload\n\twindow.history.pushState({}, '', currentUrl.toString());\n\t\n\t\/\/ Update data attribute\n\tconst formContent = document.querySelector('.contact-form-block__form-content');\n\tif (formContent) {\n\t\tif (value) {\n\t\t\tformContent.setAttribute('data-subject-param', value);\n\t\t} else {\n\t\t\tformContent.removeAttribute('data-subject-param');\n\t\t}\n\t}\n}\n\n\/\/ Function to handle subject parameter from URL\nfunction handleSubjectParameter() {\n\t\/\/ Find form content with subject parameter\n\tconst formContent = document.querySelector('.contact-form-block__form-content[data-subject-param]');\n\t\n\tif (!formContent) {\n\t\treturn; \/\/ No subject parameter found\n\t}\n\t\n\tconst subjectParam = formContent.getAttribute('data-subject-param');\n\t\n\t\/\/ Wait for FluentForm to be ready and custom selects to be initialized\n\twaitForElement('.fluentform', function() {\n\t\tsetTimeout(function() {\n\t\t\t\/\/ Find all select elements in the form\n\t\t\tconst formSelects = formContent.querySelectorAll('.fluentform select');\n\t\t\t\n\t\t\tformSelects.forEach(function(select) {\n\t\t\t\t\n\t\t\t\t\/\/ Look for select with options that match our subject value\n\t\t\t\tconst options = Array.from(select.options);\n\t\t\t\tconst matchingOption = options.find(option => {\n\t\t\t\t\tconst optionValue = option.value.trim();\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Match only with the option value (exact match)\n\t\t\t\t\treturn optionValue === subjectParam;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (matchingOption && matchingOption.value !== '') {\t\t\t\t\t\n\t\t\t\t\t\/\/ Set the original select value\n\t\t\t\t\tselect.value = matchingOption.value;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ If custom select is already initialized, update it\n\t\t\t\t\tif (select.customSelectInstance) {\n\t\t\t\t\t\tselect.customSelectInstance.setValue(matchingOption.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ If not initialized yet, wait a bit and try again\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tif (select.customSelectInstance) {\n\t\t\t\t\t\t\t\tselect.customSelectInstance.setValue(matchingOption.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Trigger change event to notify any other scripts\n\t\t\t\t\tconst changeEvent = new Event('change', { bubbles: true });\n\t\t\t\t\tselect.dispatchEvent(changeEvent);\n\t\t\t\t}\n\t\t\t});\n\t\t}, 200);\n\t});\n}\n\n\/\/ Listen for Fluent Forms events to handle form reset and validation\nif (typeof jQuery !== 'undefined') {\n\tjQuery(document).on('fluentform_submission_completed', function(event, data) {\n\t\t\/\/ Store reference to the form for potential reset\n\t\tif (data && data.form) {\n\t\t\tdata.form.haipeFormData = {\n\t\t\t\toriginalForm: data.form.querySelector('form'),\n\t\t\t\tformElements: data.form.querySelectorAll('.ff-el-form, .ff-el-group')\n\t\t\t};\n\t\t}\n\t});\n\t\n\t\/\/ Listen for form validation events\n\tjQuery(document).on('fluentform_validation_start', function(event, form) {\n\t\t\/\/ Force sync all custom selects before validation\n\t\tconst customSelects = form.querySelectorAll('select[data-custom-select-initialized=\"true\"]');\n\t\tcustomSelects.forEach(select => {\n\t\t\tif (select.customSelectInstance) {\n\t\t\t\tselect.customSelectInstance.updateOriginalSelect();\n\t\t\t}\n\t\t});\n\t});\n\t\n\t\/\/ Listen for field validation\n\tjQuery(document).on('fluentform_field_validation', function(event, field, errors) {\n\t\tif (field.tagName === 'SELECT' && field.hasAttribute('multiple')) {\n\t\t\t\/\/ Check if the field has a custom select instance\n\t\t\tif (field.customSelectInstance) {\n\t\t\t\tconst selectedValues = field.customSelectInstance.getValue();\n\t\t\t\t\n\t\t\t\t\/\/ If we have values but validation fails, force sync\n\t\t\t\tif (selectedValues && selectedValues.length > 0) {\n\t\t\t\t\tfield.customSelectInstance.updateOriginalSelect();\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Trigger validation again\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tjQuery(field).trigger('change');\n\t\t\t\t\t}, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n<\/script>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"folder":[],"class_list":["post-15","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":0,"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"wp:attachment":[{"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"folder","embeddable":true,"href":"https:\/\/haipestudio.com\/en\/wp-json\/wp\/v2\/folder?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}