<!DOCTYPE html>
<html class="no-js" lang=en>
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="twitter:card" content="summary_large_image">
        <title>Jillian Klaff | Westport, CT Real Estate Agent</title>
        <meta property="og:title" content="Jillian Klaff | Westport, CT Real Estate Agent">
        <meta name="twitter:title" content="Jillian Klaff | Westport, CT Real Estate Agent">
        <meta name="description" content="Jillian Klaff is a Westport real estate agent with 31+ years of experience and $600M+ sold across Lower Fairfield County, known for luxury expertise and negotiation.">
        <meta property="og:description" content="Jillian Klaff is a Westport real estate agent with 31+ years of experience and $600M+ sold across Lower Fairfield County, known for luxury expertise and negotiation.">
        <meta name="twitter:description" content="Jillian Klaff is a Westport real estate agent with 31+ years of experience and $600M+ sold across Lower Fairfield County, known for luxury expertise and negotiation.">
        <meta property="og:image" content="https://res.cloudinary.com/luxuryp/videos/w_320,c_limit,f_auto,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1">
        <meta name="twitter:image" content="https://res.cloudinary.com/luxuryp/videos/w_320,c_limit,f_auto,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1">
        <meta property="og:url" content="https://jillianklaffhomes.com/">
        <link rel="canonical" href="https://jillianklaffhomes.com/">
    <script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Quicksand:300,400,500,600,700"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i">
    <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript>
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
    <style id="global-css">:root{--global-primary-font-family:Quicksand,sans-serif;--global-primary-font-family-short:Quicksand;--global-secondary-font-family:'Source Sans Pro',sans-serif;--global-secondary-font-family-short:Source Sans Pro;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:70px;--global-h2-font-size:43px;--global-h3-font-size:30px;--global-h4-font-size:21px;--global-h5-font-size:17px;--global-h6-font-size:16px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:'Source Sans Pro',sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Quicksand,sans-serif;}h1{font-size:70px;}h2{font-size:43px;}h3{font-size:30px;}h4{font-size:21px;}h5{font-size:17px;}h6{font-size:16px;}</style>
        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/producer/index.css" />
    <style id="website-css">.redesign .btn--small{padding:20px 46px!important;}.lp-btn{padding:20px 46px!important;}button.newsletter-signup__form-item{line-height:1;font-weight:700;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}nav#global-navbar .header .navigation .sub-nav ul{background-color:transparent;}nav#global-navbar .header .navigation .sub-nav ul li{background-color:#F2F2F2;}nav#global-navbar .header .navigation .sub-nav ul li:hover{background-color:#4E574D;}nav#global-navbar .header .navigation .sub-nav ul li:hover a{color:#FFF!important;}nav#global-navbar .header .navigation .sub-nav ul li:hover span:after{display:none!important;}nav#global-navbar .header .navigation .sub-nav ul a{color:#000!important;}nav#global-navbar.scroll{background-color:#F2F2F2!important;}nav#global-navbar.scroll li.navigation__item a.navigation__link{color:#000;}nav#global-navbar.scroll li.navigation__item a.navigation__link span:after{background-color:#000;}nav#global-navbar.scroll button.hamburger-component.hamburger{color:#CAA75A;}#global-navbar.scroll .header a.logo__link img:last-child{display:block!important;}#global-navbar.scroll .header a.logo__link img:first-child{display:none!important;}@media only screen and (min-width:768px){nav#global-navbar .header .logo img{max-height:80px;}}footer#global-footer div.text_footer.first_text_footer div.images_box{max-width:180px;}footer#global-footer div.text_footer.first_text_footer div.images_box .img_size{height:90px!important;}#global-footer div.footer .info-wrap-contact_zone svg path{fill:#CAA75A;}#global-footer div.footer .info-wrap-contact_title{color:#CAA75A;}#global-footer div.footer .info-wrap .contact_title{color:#CAA75A;}@media only screen and (min-width: 769px){#global-footer .footer .info-privacy{border-top:1px solid #616C60;}}@media only screen and (max-width: 768px){#global-footer .footer .info-privacy .socials_zone{margin-top:25px;}#global-footer .footer .info-privacy .copy_zone{border-top:1px solid #616C60;}}div#modal-global-contact-us .contact-form .section-message form{max-width:490px;}@media only screen and (max-width:1080px){div#modal-global-contact-us .contact-form h2{font-size:35px;}}@media only screen and (max-width:925px){div#modal-global-contact-us .contact-form h2{font-size:26px;}}div#modal-global-contact-us .close{top:7vh;}.link:not(.sidebar__nav-link, .hyperlink-style-2, .slick-disabled):after{background-color:#CAA75A!important;}.link:not(.sidebar__nav-link, .hyperlink-style-2, .slick-disabled):before{background-color:#7F7F7F!important;opacity:1!important;}.link.hyperlink-style-2:before{background-color:#9d9d9d!important;width:100%!important;}.link.hyperlink-style-2:after{background-color:#FFF;}footer#global-footer a.link,footer#global-footer a.info-wrap-contact_link,footer#global-footer a.hvr_animation{position:relative;}footer#global-footer a.link:after,footer#global-footer a.info-wrap-contact_link:after,footer#global-footer a.hvr_animation:after{content:"";display:block;width:100%!important;height:1px;position:absolute;background-color:#7F7F7F;left:0;bottom:0;-webkit-transition:all .5s ease;transition:all .5s ease;z-index:1;}footer#global-footer a.link:before,footer#global-footer a.info-wrap-contact_link:before,footer#global-footer a.hvr_animation:before{content:"";display:block;width:0;height:1px;background-color:#CAA75A;position:absolute;left:0;bottom:0;-webkit-transition:all .5s ease;transition:all .5s ease;z-index:2;}footer#global-footer a.link:hover:before,footer#global-footer a.info-wrap-contact_link:hover:before,footer#global-footer a.hvr_animation:hover:before{width:100%;-webkit-transition:all .5s ease;transition:all .5s ease;}#global-mobile-contact .mobile-contact a{border:1px solid #CAA75A;background-color:#CAA75A!important;}#global-mobile-contact .mobile-contact a i{color:#fff!important;}#modal-global-contact-us .contact-form .lp-input-group,#modal-global-contact-us .contact-form label{color:#FFF!important;}#modal-global-contact-us .contact-form .lp-input,#modal-global-contact-us .contact-form .section-message textarea{border-color:#FFF!important;}#modal-global-contact-us .contact-form .section-message:after{background:#FFF!important;}@media(max-width:768px){footer#global-footer .footer.no_newsletter h3{margin-bottom:26px!important;}footer#global-footer .footer .info-wrap{margin-bottom:0!important;}footer#global-footer .footer.no_newsletter .info-wrap-contact_zone.type_user{margin-bottom:35px!important;}}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px!important;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:22px!important;}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:0!important;}#modal-global-contact-us button.close{top:25px;right:25px;}#modal-global-contact-us .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#modal-global-contact-us .socials_zone li:not(:last-child){padding-right:9px!important;}}@media(max-width:1024px){nav#global-navbar .header .logo img{max-height:70!importantpx;}}div#modal-global-contact-us button.close{top:20px;right:20px;}div#global-mobile-contact .mobile-contact{z-index:2000;}footer#global-footer .footer .first_text_footer .img_size img{width:100%;height:120%;object-fit:contain;}@media only screen and (max-width: 768px){footer#global-footer .footer .first_text_footer .img_size img{width:100%;height:110%;object-fit:contain;}}</style>
    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
        <style id="page-css">
            #section-f8501e10-7b3a-49a5-b949-038d197a6de1{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 div.collection .slick-dots li.slick-active button:after{opacity:0;}@media (min-width:560px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .btn-container .lp-btn{margin-right:20px;width:257px;}}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .lp-title-group .lp-text--pretitle{margin-bottom:15px;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .btn-container{margin-top:0!important;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .video-wrapper video,#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .video-wrapper div.poster{z-index:0!important;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1>.video-wrapper>.full-screen-video-component>.video-wrapper::before{content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000;z-index:-1000;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1>.video-wrapper>.full-screen-video-component>.video-wrapper >video{-webkit-transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);opacity:0;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1>.video-wrapper>.full-screen-video-component>.video-wrapper.playing>video{opacity:1;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection{padding:120px 0 0;min-height:100vh;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection.slick-initialized{pointer-events:none;}}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .item{text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;min-height:calc(100vh - 240px);}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}@media (max-width: 768px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .lp-btn{pointer-events:initial;}}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-active .animation{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);opacity:1;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .animation{-webkit-transition:all .6s;transition:all .6s;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);transform:translateX(-100px);opacity:0;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .lp-title-group,#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .lp-text--pretitle{max-width:100%;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots{margin:30px auto 85px;padding:0;position:relative;top:0;bottom:0;left:0;right:0;list-style-type:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:360px;max-width:100%;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots li{margin:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;width:auto;height:auto;position:static;display:block;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots li.slick-active button:after{opacity:1;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots button{display:block;font-size:0;color:inherit;border-radius:0;border:none;width:100%;height:30px;cursor:pointer;position:relative;background-color:transparent;padding:0;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots button:before{display:none;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection .slick-dots button:after{display:block;content:'';width:100%;position:absolute;left:0;top:50%;height:1px;background-color:currentColor;opacity:0.5;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection:not(.slick-initialized) .item{margin-bottom:145px;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .collection:not(.slick-initialized) .item:nth-child(n + 2){display:none;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 >*:last-child{position:relative;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .overlay-component{position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--overlay-color, var(--section-overlay, rgba(0, 0, 0, 0.3)));transition-property:opacity;transition-timing-function:linear;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .video-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;}@media screen and (max-width: 900px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .video-wrapper.hidable{display:none;}}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .full-screen-video-component{position:relative;height:100%;overflow:hidden;}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 video{position:absolute;z-index:-1000;width:100%;object-fit:cover;}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 video{overflow:hidden;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);min-width:100%;min-height:100%;width:auto;height:auto!important;}}#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .poster{display:none;position:absolute;top:0;left:0;bottom:0;right:0;z-index:-1000;background:center center/cover;}@media screen and (max-width: 900px){#section-f8501e10-7b3a-49a5-b949-038d197a6de1 .poster{display:block;}}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(0 / 4 * var(--global-section-padding));background-color:#fff;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 div.boxed-text__description{margin-bottom:0;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .boxed-text__description{margin-bottom:30px;}}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .lp-title-group .lp-h2{margin-top:0;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container .lp-btn{margin-right:20px;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6 .redesign p{margin-bottom:1.666rem;}#section-1bffde17-ce8b-4d04-a56b-17e7400b56b6>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(0 / 4 * var(--global-section-padding))!important;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219{overflow:hidden;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:-64px;padding-top:32px;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__row--four .company-stats__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;}@media (max-width: 768px){#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__row--four .company-stats__col{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;}}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__col{padding-left:15px;padding-right:15px;width:100%;min-height:1px;max-width:33.33%;-webkit-flex-basis:33.33%;-ms-flex-preferred-size:33.33%;flex-basis:33.33%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (max-width: 768px){#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__col{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;}}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__cta-wrap{text-align:center;padding-top:96px;}@media (max-width: 768px){#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .company-stats__cta-wrap{padding-top:48px;}}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .stat-card{max-width:364px;margin-left:auto;margin-right:auto;padding-bottom:64px;text-align:center;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .stat-card__value{margin-top:0;margin-bottom:16px;line-height:1;min-height:var(--global-h3-font-size);}@media (max-width: 768px){#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .stat-card__value{min-height:auto;}}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .stat-card__title{margin-top:0;margin-bottom:0;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219 .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-2852d6fc-6c03-4903-bcaf-a0a9a75af219>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(92, 104, 95, 1);--bgColor_H:135;--bgColor_S:6%;--bgColor_L:38%;--bgColor_A:1;--bgColor_darkenDir:1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:rgba(92, 104, 95, 1);}@media only screen and (max-width: 767px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__container{padding-left:25px!important;padding-right:25px!important;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component{padding-top:30px;padding-bottom:10px;}@media (min-width: 769px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component{padding:80px 0 60px;}}@media (min-width: 1200px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component{padding:80px 0 30px;}}@media (max-width: 767px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__container{padding-left:20px;padding-right:20px;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header{margin-bottom:30px;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 768px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header{margin-bottom:50px;}}@media (min-width: 1200px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header{margin-bottom:70px;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header img{max-width:260px;height:auto;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header img:not(:only-child){margin-bottom:30px;}@media (min-width: 768px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__header img:not(:only-child){margin-bottom:50px;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__heading{margin-bottom:20px;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__lead{margin-bottom:0;font-size:20px;line-height:1.4;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__row{margin-left:-7px;margin-right:-7px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__col{width:100%;margin-bottom:20px;padding:0 7px;}@media (min-width: 768px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__col{max-width:33.333333%;-webkit-flex-basis:33.333333%;-ms-flex-preferred-size:33.333333%;flex-basis:33.333333%;}}@media (min-width: 1200px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;margin-bottom:50px;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__col:first-child{margin-left:auto;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component__col:last-child{margin-right:auto;}@media (min-width: 992px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component .cols-2 .gallery-component__col{max-width:50%;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}@media (min-width: 1200px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component .cols-3 .gallery-component__col{max-width:33.333333%;-webkit-flex-basis:33.333333%;-ms-flex-preferred-size:33.333333%;flex-basis:33.333333%;}}@media (min-width: 992px){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-component .cols-4 .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card{position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;padding:20px 15px;-webkit-text-decoration:none;text-decoration:none;overflow:hidden;cursor:pointer;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:after{content:"";width:0;padding-top:121.5%;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:100%;background-color:transparent;background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0) 76.6%, #000000);opacity:0.6;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transition:background-color .3s;transition:background-color .3s;z-index:1;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:focus{outline:none;}@media (hover: hover) and (pointer: fine){#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:hover:before{background-color:#000;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:hover .gallery-card__title{-webkit-transform:translateY(-51px);-moz-transform:translateY(-51px);-ms-transform:translateY(-51px);transform:translateY(-51px);}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:hover .gallery-card__title:after{opacity:.3;-webkit-transform:translateY(20px);-moz-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px);}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card:hover .gallery-card__preview img{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card__title{position:relative;width:100%;margin-bottom:0;color:#fff;letter-spacing:0;text-shadow:none;z-index:1;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:all .3s;transition:all .3s;text-transform:none;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card__title:after{content:"";position:absolute;left:0;bottom:0;width:100%;border-bottom:1px solid currentColor;opacity:0;-webkit-transition:all .3s;transition:all .3s;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card__preview{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef .gallery-card__preview>img{width:100%;height:100%;object-fit:cover;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transition:-webkit-transform .75s ease-out;transition:transform .75s ease-out;}#section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties div.slick-track li.featured-properties__item-cover span.featured-properties__label{background:rgb(226,197,121);background:linear-gradient(90deg, rgba(226,197,121,1) 0%, rgba(138,100,62,1) 100%);color:#fff;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties .featured-properties__item{background-color:#5C685F;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties .featured-properties__text{padding-top:35px;padding-bottom:35px;background-color:#5C685F;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties .featured-properties__text p{color:#fff;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties .featured-properties__text h4{color:#fff;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.featured-properties .featured-properties__text h5{color:#fff;}@media only screen and (max-width:1024px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.featured-properties-button-holder{margin-top:20px;}}@media (min-width:768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section{padding-bottom:89px!important;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link--white{color:#000;border-color:#000;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link--white:after{background-color:#caa75a;color:#caa75a;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.slick-links-nav span.spacer{background-color:#000;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section ul.slick-links-nav li span.link:before{background-color:#a3a3a3;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link:hover{color:#caa75a;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link:after{background-color:#caa75a;color:#caa75a;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link--white.slick-disabled{color:#9B9B9B;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 div.redesign.featured-properties-section span.link--white.slick-disabled:hover{color:#9B9B9B;cursor:default;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section{padding:140px 0;}@media (max-width: 991px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section{padding:100px 0;}}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section{padding:40px 0;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-list{width:100%;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-track{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-slide{height:inherit!important;display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-arrow:not(.slick-disabled){cursor:pointer;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav{display:inline-block;list-style:none;vertical-align:top;margin:0 0 0;padding:28px 0 0;white-space:nowrap;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav{padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav li{display:inline-block;vertical-align:top;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav li+li{margin-left:40px;position:relative;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .slick-hidden+.spacer{display:none;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .spacer{position:absolute;left:-23px;width:1px;height:10px;margin-top:-5px;top:50%;background-color:#fff;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .link.slick-disabled{cursor:default;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .link.slick-disabled:hover{color:inherit;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .link.slick-disabled:before,#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .slick-links-nav .link.slick-disabled:after{opacity:0;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .btn{min-width:250px;}@media (min-width: 561px) and (max-width: 1024px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-section .btn{width:275px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:60px;text-align:center;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-header{display:block;margin-bottom:40px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-header h2{color:var(--fontColor);margin:0;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-header h2{margin-bottom:25px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-button-holder{text-align:center;margin-top:80px;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-button-holder{margin-top:40px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow{position:relative;left:auto;right:auto;bottom:auto;top:auto;text-align:left;font-size:14px;line-height:24px;width:auto;height:24px;text-transform:uppercase;margin-top:15px;color:#C6C6C6;opacity:1!important;-webkit-transform:translate(0, 0);-moz-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0);font-family:var(--global-secondary-font-family);}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow:hover{color:#fff;opacity:1;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow:before{content:'';}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow{margin-top:0;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow:after{content:'';position:absolute;bottom:3px;height:1px;background-color:#fff;left:0;right:0;-webkit-transition:opacity .3s;transition:opacity .3s;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow.slick-prev:before{content:none;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow.slick-next{margin-left:41px;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow.slick-next:before{left:-21px;width:1px;height:12px;background-color:#fff;pointer-events:none;top:8px;opacity:1;position:absolute;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties-nav .slick-arrow.slick-disabled:after{opacity:0;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties{padding:0;margin:0 -40px;color:#000;}@media (max-width: 991px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties{margin-left:-12px;margin-right:-12px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item-cover{padding:0 40px;}@media (max-width: 991px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item-cover{padding:0 12px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item-cover:focus{outline:none;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item{background-color:#fff;text-align:center;font-weight:bold;position:relative;height:100%;color:var(--fontColor);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item{min-height:500px;}}@media (hover: none) and (pointer: coarse){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item{min-height:1px;background-color:transparent;}}@media (hover: hover) and (pointer: fine){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item:hover .featured-properties__hover{opacity:1;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item h4{text-transform:none;color:black;margin:0 0 7px;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item p{color:black;margin:0 0 7px;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item p{margin-bottom:3px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item h5{color:black;margin:0;font-family:var(--global-secondary-font-family);text-transform:none;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__item >a{width:100%;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__img{vertical-align:top;width:100%;height:315px;background-color:gray;position:relative;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__img img{width:100%;height:100%;object-fit:cover;}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__img{height:200px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__text{color:var(--fontColor);background-color:#fff;padding:25px 15px 15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (hover: none) and (pointer: coarse){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__text{padding:13px;min-height:175px;}}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__text h4{max-height:56px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__text p{white-space:normal;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__label{position:absolute;top:0;right:0;background:#000;color:#fff;padding:4px 35px;z-index:2;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__hover{color:var(--bgColor);padding:15px;position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255, 255, 255, 0.75);opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear;z-index:3;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 991px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__hover{display:none;}}@media(max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__hover h4{display:none;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__hover >a{position:absolute;top:0;left:0;width:100%;height:100%;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__buttons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:10px 24px;position:relative;z-index:2;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share{display:inline-block;position:relative;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share.featured-properties__share--opened .socials{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (hover: none) and (pointer: coarse){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share{display:block;width:100%;margin-top:4px;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share .btn.btn--primary-light{display:block;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share .socials{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);display:none;}@media (hover: none) and (pointer: coarse){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share .socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:static;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:auto;left:auto;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share .socials .socials__link{width:69px;}@media (hover: none) and (pointer: coarse){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties .featured-properties__share .socials .socials__link:hover{border-bottom:transparent!important;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties:not(.slick-initialized) >.featured-properties__item-cover{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;}@media (min-width: 769px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties:not(.slick-initialized) >.featured-properties__item-cover{width:50%;}}@media (min-width: 1100px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .three-slides .featured-properties:not(.slick-initialized)>.featured-properties__item-cover{width:33%;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item-info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100%;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item-info:has(.mls-compliance-container) .featured-properties__text{padding-bottom:0;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item-mls-attribution{text-shadow:none;margin:0!important;color:#000!important;width:calc(100% - 200px);}@media (max-width: 1024px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item-mls-attribution{width:100%;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item .featured-properties__item-mls-attribution+.featured-properties__item-mls-logo{position:absolute!important;right:15px!important;bottom:15px!important;display:inline-block;}@media (max-width: 1024px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item .featured-properties__item-mls-attribution+.featured-properties__item-mls-logo{position:static!important;}}@media (max-width: 1024px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__item .featured-properties__item-mls-logo{display:inline-block!important;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .mls-compliance-container{margin-top:auto;padding:15px!important;}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__open-house{position:absolute;bottom:0;left:0;width:100%;padding:8px 0;color:black;background:rgba(255, 255, 255, 0.7);}@media (max-width: 768px){#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7 .featured-properties__open-house{font-size:12px;}}#section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-29717e9a-de44-4e49-9975-b28ba0f26844{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-29717e9a-de44-4e49-9975-b28ba0f26844>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae{background-attachment:fixed;color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#f8f8f8;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:97%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));background-color:#f8f8f8;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.45));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/vwqaymibbk0zdrkbidsx');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}@media(min-width:768px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials{padding-bottom:89px!important;}}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .link{color:#FFF!important;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .link:hover{color:#B2B2B2!important;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .link:before{background:#FFF;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .link:after{background:#FFF;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .link:hover:after{background:#B2B2B2;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae div.redesign.featured-testimonials .slick-links-nav .separator:before{background:#FFF;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .redesign .link:after{background-color:#fff!important;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae.parallax-enabled{-webkit-clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae.parallax-enabled .featured-testimonials:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials{padding:140px 0;position:relative;max-height:100vh;}@media(max-width: 768px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials{padding:40px 0;max-height:unset;}}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .container{max-width:1300px;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .container:after{content:'';clear:both;display:block;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .slick-arrow:not(.slick-disabled){cursor:pointer;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left{text-align:right;padding-right:45px;max-width:500px;width:100%;float:left;}@media(max-width: 991px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left{max-width:350px;width:inherit;padding-right:30px;}}@media(max-width: 768px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left{text-align:center;padding-right:0;margin-bottom:30px;float:none;max-width:100%;}}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left h2{margin:0 0 15px;width:100%;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav{display:inline-block;list-style:none;vertical-align:top;margin:0;padding:0;white-space:nowrap;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav li{display:inline-block;vertical-align:top;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav .separator{margin-left:40px;position:relative;pointer-events:none;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav .separator:before{content:'';position:absolute;left:-23px;width:1px;height:10px;margin-top:-5px;top:50%;background-color:currentColor;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav .link.slick-disabled:hover{color:inherit;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav .link.slick-disabled:before,#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__left .slick-links-nav .link.slick-disabled:after{opacity:0;color:inherit;background-color:inherit;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__right{padding-left:45px;max-width:700px;overflow:hidden;}@media(max-width: 991px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__right{padding-left:30px;}}@media(max-width: 768px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials .featured-testimonials__right{overflow:visible;padding-left:0;}}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider{border-left:solid 1px #d5d5d5;margin-left:-45px;padding-left:45px;margin-bottom:40px;}@media(max-width: 991px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider{margin-left:-30px;padding-left:30px;}}@media(max-width: 768px){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider{margin-left:0;padding:0;margin-bottom:30px;border:none;}}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider blockquote{margin:0 0 25px;white-space:pre-line;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider cite{font-weight:bold;font-size:14px;line-height:18px;text-transform:uppercase;font-style:normal;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider .slick-slide{vertical-align:top;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae .featured-testimonials__slider:not(.slick-initialized) li:not(:first-child){display:none;}#section-de2eba42-2d4b-414f-9155-1fc45868f4ae>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;}@media (min-width: 960px) and (orientation: landscape){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/vwqaymibbk0zdrkbidsx');}}@media (min-width: 1280px) and (orientation: landscape){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vwqaymibbk0zdrkbidsx');}}@media (min-width: 1920px) and (orientation: landscape){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vwqaymibbk0zdrkbidsx');}}@media (min-width: 2560px) and (orientation: landscape){#section-de2eba42-2d4b-414f-9155-1fc45868f4ae{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vwqaymibbk0zdrkbidsx');}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(242, 242, 242, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));background-color:rgba(242, 242, 242, 1);}@media(min-width:768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section{padding-bottom:89px!important;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section{padding:140px 0;text-align:center;overflow:hidden;}@media(max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section{padding:40px 0;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section .container{overflow:hidden;}@media (min-width: 1240px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section .container{padding-left:50px;padding-right:50px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods-section .slick-arrow:not(.slick-disabled){cursor:pointer;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:60px;text-align:left;}@media (max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header{display:block;margin-bottom:40px;text-align:center;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header h2{margin:0;}@media (max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header h2{margin-bottom:25px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav{display:inline-block;list-style:none;vertical-align:top;margin:0 0 0;padding:28px 0 0;white-space:nowrap;}@media (max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav{padding:0;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav li{display:inline-block;vertical-align:top;position:relative;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav li+li{margin-left:40px;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav .link.slick-disabled:hover{color:inherit;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav .link.slick-disabled:before,#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav .link.slick-disabled:after{opacity:0;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav .spacer{position:absolute;left:-23px;width:1px;height:10px;margin-top:-5px;top:50%;display:block;background-color:currentColor;pointer-events:none;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-team-header .slick-links-nav .slick-hidden+.spacer{display:none;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods{margin-bottom:50px;margin-right:0;}@media(max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods{max-width:375px;margin-left:auto;margin-right:auto;padding:0 15px;margin-bottom:30px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .slick-slide{margin-left:40px;}@media(max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .slick-slide{width:auto;margin-left:0;padding:0 10px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide{width:317px;vertical-align:top;}@media(min-width: 1025px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide:hover .btn,#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide:hover figure:after{opacity:1;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide img{height:317px;width:100%;vertical-align:top;object-fit:cover;}@media(max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide img{height:325px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide figure{position:relative;min-height:317px;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide figure:after{content:'';position:absolute;bottom:0;left:0;right:0;top:0;background-color:rgba(255, 255, 255, 0.75);-webkit-transition:opacity .3s;transition:opacity .3s;opacity:0;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide .btn{opacity:0;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:3;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide .featured-neighborhoods__title{padding:40px 60px;font-size:14px;font-weight:bold;line-height:1.71;text-transform:uppercase;text-align:left;position:relative;}@media(max-width: 768px){#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide .featured-neighborhoods__title{padding-top:30px;padding-bottom:30px;}}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods .featured-neighborhoods__slide .featured-neighborhoods__title:before{content:'';height:175px;width:1px;top:-55px;left:40px;position:absolute;background-color:#b2b2b2;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7 .featured-neighborhoods:not(.slick-initialized) >.featured-neighborhoods__slide{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:40px;}#section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866{color:#030303;--fontColor:#030303;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:1%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 1);}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn .play-icon{color:#CAA75A!important;}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video{padding-top:100px;padding-bottom:100px;}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding-left:50px;padding-right:50px;margin-left:auto;margin-right:auto;max-width:1400px;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:25px;padding-right:25px;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content{width:calc(40% - 50px);}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content{width:100%;text-align:center;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content h2{margin:0 0 18px;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content h2{margin-bottom:4px;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content p{max-width:376px;margin:0 0 36px;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-content p{max-width:100%;margin:0 0 17px;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video__logo{position:absolute;width:100px;left:0;bottom:0;-webkit-transform:translate(-30%, 40%);-moz-transform:translate(-30%, 40%);-ms-transform:translate(-30%, 40%);transform:translate(-30%, 40%);}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video__logo img{width:100%;object-fit:cover;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video__logo{left:10px;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-poster{width:60%;position:relative;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-poster{width:100%;margin-top:60px;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-poster-bgr{padding:27% 0;-webkit-background-size:cover;background-size:cover;-webkit-background-position:center;background-position:center;position:relative;text-align:center;}@media (max-width: 992px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video-poster-bgr{padding:20% 0;}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn{background:transparent;border:none;cursor:pointer;outline:none;padding:0;}@media(min-width: 576px){#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn:hover .play-btn-holder{background-color:rgba(255,255,255,0.3);}}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn .play-btn-holder{width:76px;height:76px;border:1px solid white;border-radius:50%;-webkit-transition:0.2s all;transition:0.2s all;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn .icon-wrapper{cursor:pointer;background-color:white;border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:50px;height:50px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866 .f-video .play-btn .play-icon{font-size:10px;-webkit-transform:translateX(1px);-moz-transform:translateX(1px);-ms-transform:translateX(1px);transform:translateX(1px);color:#000;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#fff;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .gjs-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d #ihebe,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d #i1scm,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d #icyxs,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d #iommz{padding:0 5px 0 5px;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .gjs-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:20px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .gjs-cell{-webkit-flex:0 0 calc(33.333% - 20px);-ms-flex:0 0 calc(33.333% - 20px);flex:0 0 calc(33.333% - 20px);box-sizing:border-box;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .gjs-cell img{width:100%;height:300px;object-fit:contain;display:block;}@media (max-width: 768px){#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .gjs-cell{-webkit-flex:0 0 calc(50% - 20px);-ms-flex:0 0 calc(50% - 20px);flex:0 0 calc(50% - 20px);}}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .video-wrapper{z-index:1;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .overlay-component{z-index:2;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .custom-content{z-index:3;position:relative;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h1,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h2,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h3,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h4,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h5,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d h6,#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d p{margin-bottom:1.6666rem;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d .lp-container *:last-child{margin-bottom:0;}#section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-972db57c-49f9-4cf2-9467-97573455255a{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(92, 104, 95, 1);--bgColor_H:135;--bgColor_S:6%;--bgColor_L:38%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:rgba(92, 104, 95, 1);}#section-972db57c-49f9-4cf2-9467-97573455255a div.newsletter-sign-up .contact-us-form .default-before{padding-top:65px;padding-bottom:65px;}@media only screen and (min-width:1080px){#section-972db57c-49f9-4cf2-9467-97573455255a div.newsletter-sign-up{height:850px;}}#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg input{color:#fff;}#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg input:focus,#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg input:active,#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg input:hover{border-color:#fff;}#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg label{color:#fff;}#section-972db57c-49f9-4cf2-9467-97573455255a .redesign .inp--dark-bg input{border-color:#fff;}@media(max-width:768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form .default-before{padding:20px!important;}#section-972db57c-49f9-4cf2-9467-97573455255a .contact-us-form{padding:0!important;margin-right:0!important;}}#section-972db57c-49f9-4cf2-9467-97573455255a div>div>div.container>form>div.solid-subsection.default-before.default{background:linear-gradient(90deg, rgba(226,197,121,1) 0%, rgba(138,100,62,1) 100%);}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up{height:779px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up{height:auto;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .main-container{position:relative;width:100%;height:inherit;overflow:hidden;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .img-container{position:absolute;top:0;left:0;height:100%;width:50%;z-index:1;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .img-container{width:100%;height:400px;max-width:none;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up img{height:100%;width:100%;object-fit:cover;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .btn{border-radius:0;margin-top:30px;-webkit-appearance:none;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container{position:relative;z-index:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container{padding-top:0;padding-bottom:0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container h2{margin:0 0 20px;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container h2{margin-bottom:10px;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container p{white-space:normal;margin:0 0 35px;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container p{margin-bottom:20px;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container .inp{padding-right:75px;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container .inp+.inp{margin-top:35px;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container .inp input{padding:0;}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .container .inp{padding-right:0;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form{width:100%;max-width:714px;background-color:var(--fgColor);min-height:540px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-bottom:0;}@media(min-width: 992px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form{margin:70px 38px 70px 0;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form .default-before{width:100%;height:100%;padding:30px 65px;}@media(min-width: 769px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form.success{margin:60px auto 0 auto;padding:0;}}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form.success{width:calc(100% + 35px);}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form.success .default{display:none;}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form.success .success{display:block;max-width:100%;width:100%;text-align:center;}@media (max-width: 800px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form{height:auto;}}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form{width:auto;margin-top:325px;padding:40px 50px 40px 25px;min-height:1px;margin-right:-25px;margin-bottom:35px;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up .contact-us-form .success{display:none;max-width:440px;}@-webkit-keyframes autofill{0%,100%{color:#666;background:transparent;}}#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up input:-webkit-autofill,#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up input:-webkit-autofill:hover,#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up input:-webkit-autofill:focus,#section-972db57c-49f9-4cf2-9467-97573455255a .newsletter-sign-up input:-webkit-autofill:active{-webkit-transition:"color 9999s ease-out, background-color 9999s ease-out";-webkit-transition-delay:9999s;}#section-972db57c-49f9-4cf2-9467-97573455255a .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;position:absolute;}#section-972db57c-49f9-4cf2-9467-97573455255a .lp-disclaimer{max-width:calc(100% - 75px);}@media(max-width: 768px){#section-972db57c-49f9-4cf2-9467-97573455255a .lp-disclaimer{max-width:100%;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}@media(min-width:768px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section{padding-bottom:89px!important;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section .hyperlink-style-1{text-decoration-color:#7F7F7F!important;text-underline-offset:4px!important;text-decoration-thickness:1px!important;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section .hyperlink-style-1:hover{text-decoration-color:#CAA75A!important;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section{padding:140px 0;text-align:center;}@media(max-width: 768px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section{padding:40px 0;}}@media(min-width:769px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section{padding:82px 0;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section header{max-width:700px;margin:0 auto 50px;}@media(max-width: 768px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section header{margin-bottom:40px;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section header h2{margin:0 0 25px;}@media(max-width: 768px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section header h2{margin-bottom:20px;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press-section header p{margin:0;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press__details{list-style-type:none;display:block;margin:0 0 9px;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press__details >li{display:inline-block;position:relative;font-size:14px;font-weight:700;line-height:1;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 .featured-press__details >li+li{margin-left:6px;padding-left:10px;border-left:2px solid;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press{margin:auto;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;-webkit-justify-content:space-evenly;justify-content:space-evenly;text-align:left;list-style:none;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:1130px;}@media(max-width: 1100px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press{margin-left:-10px;margin-right:-10px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}@media(max-width: 769px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press{margin:0 auto 50px;max-width:100%;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press >li{max-width:unset;width:calc(45% - 20px);margin:0 10px 40px;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press >li:hover figure:before{opacity:1;}@media(max-width: 769px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press >li{max-width:100%;width:100%;margin-left:40px;margin-right:40px;margin-bottom:0;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press >li+li{margin-top:65px;}}@media(min-width: 770px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press.three-columns >li{width:calc(33% - 20px);}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press figure{height:300px;position:relative;margin-bottom:25px;background-color:gray;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press figure:before{content:'';position:absolute;top:0;bottom:0;right:0;left:0;background:rgba(0, 0, 0, .4);-webkit-transition:.3s linear;transition:.3s linear;opacity:0;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press img{vertical-align:top;height:100%;width:100%;object-fit:cover;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press .label{position:absolute;top:0;left:0;max-width:100%;background-color:#fff;color:#000;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press h4{margin:0 0 10px;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press h4 .link{white-space:normal;-webkit-text-decoration:underline;text-decoration:underline;font-weight:400;text-underline-offset:5px;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press h4 .link:before,#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press h4 .link:after{content:none;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press p{margin:0 0 20px;white-space:normal;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press strong{display:inline-block;vertical-align:top;font-weight:700;font-size:14px;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press time{position:relative;display:inline;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.featured-press time:before{content:"";display:inline-block;height:11px;background-color:#c6c6c6;width:1px;margin:8px 15px 0 12px;vertical-align:top;}@media (min-width: 769px){#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.one-item >li{max-width:610px;width:100%;}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1 ul.one-item figure{height:250px;}}#section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#F2F2F2;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#F2F2F2;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .boxed-text__description{margin-bottom:30px;}}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .lp-title-group .lp-h2{margin-top:0;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container .lp-btn{margin-right:20px;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41 .redesign p{margin-bottom:1.666rem;}#section-eac163cd-4654-4942-9e3b-f61dc37708e1{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.4));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/tywhsomv4xmoc0zcw28z');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .work-with-us .container{max-width:850px!important;}#section-eac163cd-4654-4942-9e3b-f61dc37708e1.parallax-enabled{-webkit-clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);}#section-eac163cd-4654-4942-9e3b-f61dc37708e1.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-eac163cd-4654-4942-9e3b-f61dc37708e1.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us .container{text-align:center;max-width:750px;min-height:689px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:50px;padding-bottom:50px;position:relative;z-index:1;}@media (max-width: 768px){#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us h2{padding-bottom:40px;}}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us h2:after{content:'';position:absolute;bottom:0;left:50%;margin-left:-55px;width:110px;height:1px;background-color:var(--fontColor, #ffffff);}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us p{margin:0 0 30px;}@media(max-width: 768px){#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us p{margin-bottom:40px;}}#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-eac163cd-4654-4942-9e3b-f61dc37708e1 .redesign.work-with-us .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}@media (min-width: 960px) and (orientation: landscape){#section-eac163cd-4654-4942-9e3b-f61dc37708e1{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/tywhsomv4xmoc0zcw28z');}}@media (min-width: 1280px) and (orientation: landscape){#section-eac163cd-4654-4942-9e3b-f61dc37708e1{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/tywhsomv4xmoc0zcw28z');}}@media (min-width: 1920px) and (orientation: landscape){#section-eac163cd-4654-4942-9e3b-f61dc37708e1{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tywhsomv4xmoc0zcw28z');}}@media (min-width: 2560px) and (orientation: landscape){#section-eac163cd-4654-4942-9e3b-f61dc37708e1{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tywhsomv4xmoc0zcw28z');}}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}@media(min-width:768px){#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed{padding:93px 0 86px!important;}}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed{padding:80px 0;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .title{margin:0 20px 0 0;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .instagram-link .instagram-name{display:inline;margin:0;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .title+.instagram-link{margin-top:5px;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-wrapper{margin-bottom:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-right{margin-left:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .follow-button{margin:20px 0 0 0;display:block;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .nav-button{margin-top:20px;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:42px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;transition-property:color,background-color,border-color;transition-duration:.3s;transition-timing-function:ease;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-nav-prev{margin-left:30px;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-nav-next{margin-left:10px;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .hidden-control{display:none;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi{position:relative;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:calc(100% / 3);padding:10px;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single:first-child,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi:first-child{margin-left:auto;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single:last-child,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi:last-child{margin-right:auto;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single.type2,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi.type2{width:calc(100% / 5 * 2);}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single.type3,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi.type3{width:calc(100% / 2);}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single.type4,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi.type4{width:calc(100% / 2);}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single.type5,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-container{padding:0;width:100%;}}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item__info{position:absolute;top:0;left:0;bottom:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10%;overflow:hidden;color:#fff;text-align:center;background-color:rgba(0, 0, 0, 0.8);opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;opacity:1;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .video-icon::before{content:'';display:block;width:0px;height:0px;border-style:solid;position:relative;left:1px;border-width:7.5px 0px 7.5px 11px;border-color:transparent transparent transparent #292826;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item:hover .video-icon{opacity:0;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single .ig-feed-item__info{padding:15%;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi-content{padding:10px;position:absolute;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;overflow:hidden;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .slide-multi-content .ig-feed-item:nth-child(n + 3){-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .bottom-nav-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:20px 10px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-right,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .title,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .instagram-link{margin-right:0;text-align:center;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-nav-prev,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .top-nav-next{display:none;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .ig-feed{display:none;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363 .has-data .ig-feed{display:block;}#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363.has-data .ig-feed,#section-0929c1d2-5b73-4e76-8c74-1a6fa1528363#section-temp .ig-feed{display:block;}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;min-height:70px;padding:8px 0 7px;width:100%;}nav .header .logo{z-index:911;position:relative;margin-right:10px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:'';position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:'';display:block;width:26px;height:2px;background-color:currentColor;position:absolute;left:0;top:0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before{-webkit-transform:translateY(-9px);-moz-transform:translateY(-9px);-ms-transform:translateY(-9px);transform:translateY(-9px);}nav .header .hamburger__bars:after{-webkit-transform:translateY(9px);-moz-transform:translateY(9px);-ms-transform:translateY(9px);transform:translateY(9px);}nav .header .hamburger:hover{text-shadow:.5px 0 0,-.5px 0 0;}nav .header .hamburger:hover .hamburger__bars:before{-webkit-transform:translateY(-7px);-moz-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px);}nav .header .hamburger:hover .hamburger__bars:after{-webkit-transform:translateY(7px);-moz-transform:translateY(7px);-ms-transform:translateY(7px);transform:translateY(7px);}nav .header .hamburger.active .hamburger__bars{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);opacity:0;}nav .header .hamburger.active .hamburger__bars:before{display:none;}nav .header .hamburger.active .hamburger__bars:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .content-container{-webkit-transition:0.2s all ease;transition:0.2s all ease;}nav.scroll .content-container,nav .scroll .content-container{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}nav.scroll .content-container .navigation__link,nav .scroll .content-container .navigation__link{visibility:visible!important;}nav.scroll .content-container .navigation .sub-nav,nav .scroll .content-container .navigation .sub-nav{-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav.scroll .content-container .navigation .sub-nav ul,nav .scroll .content-container .navigation .sub-nav ul{padding:0;}nav.scroll .content-container .navigation .sub-nav.visible,nav .scroll .content-container .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, calc(100% + 23px));-moz-transform:translate(0, calc(100% + 23px));-ms-transform:translate(0, calc(100% + 23px));transform:translate(0, calc(100% + 23px));}nav .dark-opening{background-color:rgb(26, 26, 26)!important;}nav nav.dark-opening .header{margin-top:0;}nav #ctaShowButton,nav #ctaMessage{display:none!important;}nav #ctaShowButton{display:none;opacity:0;pointer-events:none;}nav .search{cursor:pointer;}nav .search svg{display:block;}nav .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}body>div.sidemenu{background-color:#fff;color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:20px;padding-right:20px;}}body>div.sidemenu .sidebar__close{position:absolute;right:30px;top:30px;display:inline-block;width:38px;height:38px;padding:10px;border:none;border-radius:0;background:transparent;color:inherit;z-index:1;cursor:pointer;}body>div.sidemenu .sidebar__close:before,body>div.sidemenu .sidebar__close:after{content:'';display:block;width:22px;height:2px;background-color:currentColor;position:absolute;left:50%;top:50%;}body>div.sidemenu .sidebar__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidebar__close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:10px;top:10px;}}body>div.sidemenu .sidebar__close:focus{outline:none;}body>div.sidemenu .sidebar__nav{list-style:none;padding:0;margin:auto 0;}body>div.sidemenu .sidebar__nav-item{margin:0;padding-top:4px;padding-bottom:4px;border-bottom:1px solid hsla(
      var(--bgColor_H, 0),
      var(--bgColor_S, 0%),
      calc(50% + (var(--bgColor_L, 100%) - 50%) * 0.9),
      var(--bgColor_A, 1)
    );}body>div.sidemenu .sidebar__nav-link{display:inline-block;padding:10px;border:none;border-radius:0;background:transparent;text-transform:none;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__nav-link:focus{outline:none;}body>div.sidemenu .sidebar__subnav{list-style:none;padding:4px 0 10px;margin:0;font-size:17px;}@media (max-width: 767px){body>div.sidemenu .sidebar__subnav{font-size:14px;letter-spacing:.3px;}}body>div.sidemenu .sidebar__subnav-item{margin-bottom:10px;}body>div.sidemenu .sidebar__subnav-item:last-child{margin-bottom:0;}body>div.sidemenu .sidebar__subnav-link{display:inline-block;padding:0;border:none;border-radius:0;background:transparent;text-transform:none;opacity:.7;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__subnav-link:focus{outline:none;}body>div.sidemenu .sub-nav{visibility:hidden;opacity:0;max-height:0;-webkit-transition:all .3s;transition:all .3s;}body>div.sidemenu .sub-nav.visible{display:block;visibility:visible;opacity:1;max-height:100vh;}body>div.sidemenu .sub-nav.visible+.main-nav{color:#7a7a7a;}body>div.sidemenu .sub-nav.visible+.main-nav:after{margin-left:40px;border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}body>div.sidemenu .sub-nav-container:hover .main-nav:after{border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container .main-nav{position:relative;display:inline-block;}body>div.sidemenu .sub-nav-container .main-nav:after{content:'';display:inline-block;position:relative;width:8px;height:8px;margin-left:25px;-webkit-transform:rotate(45deg) translateX(-100%);-moz-transform:rotate(45deg) translateX(-100%);-ms-transform:rotate(45deg) translateX(-100%);transform:rotate(45deg) translateX(-100%);border-bottom:2px solid var(--fontColor, #000000);border-right:2px solid var(--fontColor, #000000);top:0;bottom:auto;left:auto;-webkit-transition:0.5s all ease;transition:0.5s all ease;background-color:transparent;}body>div.sidemenu #main-section .sidebar{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);}footer{background-color:rgba(241, 241, 241, 1);color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(241, 241, 241, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;--greyColor:hsla(
var(--fontColor_H),
var(--fontColor_S),
calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla(
      var(--fontColor_H),
      var(--fontColor_S),
      calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
      var(--fontColor_A));}footer .redesign .inp--dark-bg input:hover{border-color:var(--fontColor);}footer .redesign .inp+.inp{margin-top:24px;}footer .redesign .btn--primary-light{border-color:var(--fontColor);color:var(--fontColor);}footer .redesign .btn--primary-light:hover{background-color:var(--fontColor);color:var(--bgColor);}footer.is-background-color-light .redesign .btn--primary-light{border-width:1px;}footer .redesign .socials--grey{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla(
      var(--bgColor_H),
      var(--bgColor_S),
      calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15),
      var(--bgColor_A));color:var(--greyColor);}footer .redesign .socials--grey .socials__link svg{fill:var(--greyColor);}footer .redesign .socials--grey .socials__link:hover{background-color:hsla(
        var(--bgColor_H),
        var(--bgColor_S),
        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4),
        var(--bgColor_A));color:var(--fontColor);}footer .redesign .socials--grey .socials__link:hover svg{fill:var(--fontColor);}footer .redesign.footer .grey-text{color:var(--fontColor);}footer .footer{position:relative;padding-top:60px;padding-bottom:30px;}@media (max-width: 560px){footer .footer{padding-top:10px;}}@media (max-width: 500px){footer .footer{padding-bottom:70px;}}footer .footer .text_content_wrap p{margin-bottom:15px;}footer .footer .text_content_wrap p:last-of-type{margin-bottom:0;}footer .footer .container{max-width:1440px;}@media (max-width: 768px){footer .footer .container{padding-left:25px;padding-right:25px;}}@media (max-width: 560px){footer .footer .container{padding-left:20px;padding-right:20px;}}footer .footer h3{margin:0 0 15px 0;}footer .footer h5{text-transform:capitalize;}footer .footer .info-wrap{margin-bottom:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-wrap .agent_box{width:70%;}@media (max-width: 1280px){footer .footer .info-wrap .agent_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .agent_box{width:100%;}}footer .footer .info-wrap .newsletter_box{width:30%;}@media (max-width: 1280px){footer .footer .info-wrap .newsletter_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box{width:100%;}}footer .footer .info-wrap .newsletter_box--padding{padding-top:44px;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box--padding{padding-top:0;}}footer .footer .info-wrap .newsletter_box .contact_title{margin-bottom:13px;line-height:1.6;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_cell{margin-bottom:0;padding-left:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .icon_text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:22px;position:relative;}footer .footer .info-wrap .newsletter_box .icon_text i{position:relative;width:30px;margin-right:20px;}footer .footer .info-wrap .newsletter_box .icon_text .contact_title{margin-bottom:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_zone{margin-bottom:0;}}footer .footer .info-wrap-contact{position:relative;}footer .footer .info-wrap-contact_zone{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:39px;}@media (max-width: 768px){footer .footer .info-wrap-contact_zone{margin-bottom:21px;}footer .footer .info-wrap-contact_zone:last-child{margin-bottom:51px;}}footer .footer .info-wrap-contact_zone i{position:absolute;left:0;display:block;}footer .footer .info-wrap-contact_zone i svg path{fill:currentColor;}footer .footer .info-wrap-contact_zone h4{margin:0 0 13px 0;width:100%;}footer .footer .info-wrap-contact_cell{position:relative;padding-left:50px;width:400px;font-size:14px;text-transform:uppercase;font-weight:bold;letter-spacing:1.5px;}@media (max-width: 1280px){footer .footer .info-wrap-contact_cell:first-of-type{margin-bottom:21px;}}footer .footer .info-wrap-contact_cell .contact_title{line-height:1;margin-bottom:5px;}footer .footer .info-wrap-contact_link{color:var(--greyColor);position:relative;}@media (max-width: 560px){footer .footer .info-wrap-contact_link{letter-spacing:0;}}footer .footer .hvr_animation{position:relative;-webkit-text-decoration:none!important;text-decoration:none!important;}footer .footer .hvr_animation:after{content:'';position:absolute;left:0;bottom:0;width:0%;height:1px;background:var(--greyColor);-webkit-transition:.3s linear;transition:.3s linear;}footer .footer .hvr_animation:hover:after{width:100%;}footer .footer .hvr_animation.underlined:after{width:100%;}footer .footer .hvr_animation.underlined:hover:after{width:0%;}footer .footer .form-content{padding:0!important;}footer .footer .form-content label{color:var(--fontColor);text-transform:none;letter-spacing:1;}footer .footer .form-content input{padding:2px 24px 2px 0;}footer .footer .form-content .subscribe_btn{margin-top:20px;position:relative;}footer .footer .form-content .subscribe_btn i{font-size:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;}footer .footer .form-content.success i{opacity:1;}footer .footer .form-content.success .subscribe_btn span{opacity:0;}footer .footer .form-content.success .hide{opacity:0;}footer .footer .form-content.success .hide +span{opacity:1;}footer .footer .text_footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:39px;}@media (max-width: 1280px){footer .footer .text_footer{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){footer .footer .text_footer{text-align:center;}}footer .footer .text_footer p{white-space:normal;}footer .footer .text_footer .images_box{max-width:186px;width:100%;margin-right:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 560px){footer .footer .text_footer .images_box{margin:0 auto 20px auto;}}@media (max-width: 1280px){footer .footer .text_footer .img_size{margin-bottom:20px;}}@media (max-width: 560px){footer .footer .text_footer .img_size{margin-bottom:0;}}footer .footer .text_footer .img_size img{width:100%;height:100%;object-fit:contain;}footer .footer .first_text_footer .img_size{width:100%;height:63px;}footer .footer .first_text_footer .img_size img{width:100%;height:100%;object-fit:contain;}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:51px;}}footer .footer .second_text_footer .first_img_size{width:45px;height:45px;margin-right:15px;}footer .footer .second_text_footer .second_img_size{width:100px;height:45px;}@media (max-width: 560px){footer .footer .second_text_footer{margin-bottom:21px;}}footer .footer .info-privacy{padding-top:45px;padding-bottom:30px;border-top:1px solid hsla(
        var(--bgColor_H),
        var(--bgColor_S),
        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
        var(--bgColor_A));}@media (max-width: 768px){footer .footer .info-privacy{padding-top:0;border-top:none;}}footer .footer .info-privacy__row{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-privacy .copy_zone{font-size:18px;}@media (min-width: 1350px){footer .footer .info-privacy .copy_zone{text-align:center;}}@media (min-width: 1281px){footer .footer .info-privacy .copy_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 768px){footer .footer .info-privacy .copy_zone{text-align:center;margin-bottom:10px;padding-top:45px;border-top:1px solid hsla(
            var(--bgColor_H),
            var(--bgColor_S),
            calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
            var(--bgColor_A));}}footer .footer .info-privacy .copy_zone a{color:var(--greyColor);}footer .footer .info-privacy .powered_zone{font-size:18px;}@media (min-width: 1281px){footer .footer .info-privacy .powered_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 1280px){footer .footer .info-privacy .powered_zone{text-align:center;}}@media (max-width: 768px){footer .footer .info-privacy .powered_zone{text-align:center;margin-bottom:24px;}}footer .footer .info-privacy .powered_zone a{color:var(--greyColor);}@media (min-width: 1281px){footer .footer .info-privacy .socials_zone{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 1280px){footer .footer .info-privacy .socials_zone{width:100%;margin-top:20px;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer .info-privacy .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:0;margin-bottom:20px;}footer .footer .info-privacy .socials_zone li{padding:0 7px 10px 7px;}}footer .footer.one_contact .type_user{margin-bottom:73px;}@media (max-width: 768px){footer .footer.one_contact .type_user{margin-bottom:51px;}}footer .footer.no_newsletter h3{margin-bottom:46px;}footer .footer.no_newsletter .newsletter_box{display:none;}footer .footer.no_newsletter .info-wrap-contact{width:calc(70% + 230px);width:100%;padding-left:230px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact{width:100%;}}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_cell{width:50%;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_cell{width:100%;}}footer .footer.no_newsletter .info-wrap-contact h4{position:absolute;margin-top:-8px;left:0;max-width:200px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;width:100%;margin-bottom:20px;margin-top:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;}}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:71px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:39px;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:51px;}}footer .footer.no_newsletter .info-wrap-contact_zone:last-child{margin-bottom:0;}footer .footer.no_icon .info-wrap-contact_cell{padding-left:0;}footer .footer.no_icon .info-wrap-contact_cell i{display:none;}footer .footer.no-names .info-wrap-contact{padding-left:0;}footer .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-left:-15px;margin-right:-15px;}@media (min-width: 1281px){footer .form-row{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 900px){footer .form-row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:15px;padding-right:15px;}@media (min-width: 768px){footer .form-col{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}}@media (min-width: 768px){footer .form-col--socials{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}@media (min-width: 1281px){footer .form-col--socials{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;}}@media (max-width: 768px){footer .form-col--socials{-webkit-order:-1;-ms-flex-order:-1;order:-1;}}@media (min-width: 1281px){footer .form-col--xl-auto{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}}footer .additional-links-separator{display:block;width:100%;height:0;overflow:hidden;}@media (min-width: 768px){footer .additional-links-separator{display:inline;width:auto;height:auto;}footer .additional-links-separator:before{content:"|";}}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .img-wrap{max-width:100px;width:100%;display:block;margin-right:20px;}@media (max-width: 900px){footer .img-wrap{margin-right:0;margin-bottom:10px;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .powered-box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;}@media (max-width: 900px){footer .powered-box{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col--copyright{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:10px 0;}footer .luxury-link{white-space:nowrap;}footer .footer__disclaimers{padding-top:24px;padding-bottom:24px;}@media (max-width: 900px){footer .footer__disclaimers{text-align:center;}}body>div.mobile-contact-wrapper .mobile-contact{display:none;position:fixed;right:30px;bottom:25px;z-index:91;}body>div.mobile-contact-wrapper .mobile-contact a{-webkit-text-decoration:none;text-decoration:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:55px;height:55px;margin-bottom:15px;background-color:#fff;font-size:22px;border:2px solid hsla(0,0%,49.8%,.3);border-radius:90px;margin-left:1px;}body>div.mobile-contact-wrapper .mobile-contact a i{color:#000;}body>div.mobile-contact-wrapper .mobile-contact .buttons-holder{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}body>div.mobile-contact-wrapper .mobile-contact.dark a{background-color:#000;}body>div.mobile-contact-wrapper .mobile-contact.dark a i{color:#fff;}@media (max-width: 560px){body>div.mobile-contact-wrapper .mobile-contact{display:block;}}
        </style>
    <style id="custom-style-css">.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(92, 104, 95, 1)!important;border-color:rgba(92, 104, 95, 1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(92, 104, 95, 1)!important;border-color:rgba(92, 104, 95, 1)!important;}.pagination-style-1 li a{color:rgba(92, 104, 95, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(92, 104, 95, 1)!important;border-color:rgba(92, 104, 95, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(92, 104, 95, 1)!important;border-color:rgba(92, 104, 95, 1)!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:rgba(202, 167, 90, 1)!important;}.social_icons-style-1 a{border-color:rgba(92, 104, 95, 1)!important;background-color:rgba(92, 104, 95, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(92, 104, 95, 1)!important;background-color:rgba(92, 104, 95, 1)!important;color:rgba(255,255,255,1)!important;}.social_icons-style-1 a i{color:inherit!important;}.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(97, 108, 96, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(188, 195, 187, 1)!important;background-color:rgba(188, 195, 187, 1)!important;color:rgba(97, 108, 96, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-2{color:rgba(92, 104, 95, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(92, 104, 95, 1)!important;background-color:rgba(188, 195, 187, 1)!important;border-color:rgba(188, 195, 187, 1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(255, 255, 255, 0.7)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:rgba(92, 104, 95, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li.active a{color:rgba(92, 104, 95, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.button-style-3{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-3:hover{color:rgba(92, 104, 95, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-3{color:rgba(92, 104, 95, 1)!important;}.hyperlink-style-3:hover{color:rgba(92, 104, 95, 1)!important;}.button-style-4{color:rgba(92, 104, 95, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-4:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#FFFFFF!important;}</style>


        <script>
            (function utmParse() {
                const url = new URL(window.location.href);
                if (url.search) {
                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
                        if (matched) {
                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
                        }
                        return acc;
                    }, {});
                    if (Object.keys(utm).length) {
                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
                    } else {
                        // Remove old utm vars
                        window.localStorage.removeItem('utm_vars');
                    }
                }
                // Set referrer in local storage
                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
                if (!window.localStorage.getItem('referrer')) {
                    // Capture the Referrer URL
                    const referrer = document.referrer;
                    if (referrer) {
                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
                        const currentDomain = window.location.hostname;
                        const referrerDomain = new URL(referrer).hostname;

                        if (referrerDomain !== currentDomain) {
                            // Store it in localStorage
                            localStorage.setItem('referrer', referrer);
                        }
                    }
                }
            })();
        </script>
        <script>
  document.addEventListener("DOMContentLoaded", function() {
    const allowedUrls = [
      "https://jillianklaffhomes.com/fairfield-homes-for-sale",
    "https://jillianklaffhomes.com/fairfield-land-for-sale",
    "https://jillianklaffhomes.com/fairfield-townhomes-for-sale",
    "https://jillianklaffhomes.com/properties/sale",
    "https://jillianklaffhomes.com/properties/sold",
    "https://jillianklaffhomes.com/weston-homes-for-sale",
    "https://jillianklaffhomes.com/weston-land-for-sale",
    "https://jillianklaffhomes.com/weston-townhomes-for-sale",
    "https://jillianklaffhomes.com/westport-condos-for-sale",
    "https://jillianklaffhomes.com/westport-homes-for-sale",
    "https://jillianklaffhomes.com/westport-land-for-sale",
    "https://jillianklaffhomes.com/westport-luxury-homes-for-sale",
    "https://jillianklaffhomes.com/westport-single-family-homes-for-sale",
    "https://jillianklaffhomes.com/westport-townhomes-for-sale",
    "https://jillianklaffhomes.com/westport-waterfront-homes-for-sale"
    ];

    if (!allowedUrls.includes(window.location.href)) {
      console.log("Schema generation skipped for this page:", window.location.href);
      return;
    }
    
    console.log("Schema generation initiated for:", window.location.href);

    function getListingContainer() {
      return document.querySelector('[class*="properties-grid"]');
    }

    function getListingElements(container) {
      return container ? container.querySelectorAll('.properties-grid__item') : [];
    }

    function extractListingData(listingElement, position) {
      const listingLink = listingElement.querySelector('.lp-listing-card');
      const listingUrl = listingLink ? listingLink.href : "";
      const imageUrl = listingElement.querySelector('.listing-card__image')?.src || "";
      const listingName = listingElement.querySelector('.listing-card__address')?.innerText || "Listing";
      const priceText = listingElement.querySelector('.listing-card__price--sales')?.innerText || "$0";
      const price = parseInt(priceText.replace(/[^\d]/g, "")) || 0;

      return {
        "@type": "RealEstateListing",
        "name": listingName,
        "position": position,
        "url": window.location.origin + listingUrl,
        "image": imageUrl,
        "potentialAction": {
          "@type": "BuyAction",
          "offers": {
            "@type": "Offer",
            "price": price,
            "priceCurrency": "USD"
          }
        }
      };
    }

    function createSchemaMarkup() {
      const container = getListingContainer();
      const listings = getListingElements(container);

      const pageUrl = window.location.href;
      const pageName = document.title || "Homes for sale";

      const itemList = Array.from(listings).map((listing, index) => {
        return extractListingData(listing, index + 1);
      });

      const schema = {
        "@context": "https://schema.org",
        "@type": "CollectionPage",
        "name": pageName,
        "url": pageUrl,
        "@id": pageUrl,
        "audience": {
          "@type": "Audience",
          "audienceType": "Home Buyers",
          "geographicArea": {
            "@type": "Country",
            "name": "United States"
          }
        },
        "mainEntity": {
          "@type": "ItemList",
          "itemListOrder": "http://schema.org/ItemListUnordered",
          "numberOfItems": listings.length,
          "itemListElement": itemList
        }
      };

      console.log("Generated Schema:", schema);

      const script = document.createElement('script');
      script.type = 'application/ld+json';
      script.text = JSON.stringify(schema, null, 2);
      document.head.appendChild(script);
      console.log("Schema injected into the page head");
    }

    createSchemaMarkup();
  });
</script>
    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
</head>
<body>
    <div id="google_translate_element" style="display: none"></div>

        <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b">
            <div class="redesign">
  <div class="content-container header">
    <div class="container header__container">
      <div class="navbar">
        <div class="logo">
          <a href="/" class="logo__link">
            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/zydx88dhjwusfsftmp7u" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/zydx88dhjwusfsftmp7u 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/zydx88dhjwusfsftmp7u 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/zydx88dhjwusfsftmp7u 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/zydx88dhjwusfsftmp7u 1739w" class="logo__img light" alt="">
            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hhxwszjnxdre3uvtpjej" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/hhxwszjnxdre3uvtpjej 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/hhxwszjnxdre3uvtpjej 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hhxwszjnxdre3uvtpjej 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/hhxwszjnxdre3uvtpjej 1739w" class="logo__img dark" alt="">
          </a>
        </div>
        <div class="navigation">
          <ul>
            <li class="navigation__item sub-nav-container">
              <a href="#" class="navigation__link wow fadeInUp">Properties</a>
              <div class="sub-nav">
                <ul>
                  <li class="sub-nav__item"><a  href="/properties/sale" class="nav-link sub-nav__link feature"><span>Featured Properties</span></a></li>
                  <li class="sub-nav__item"><a  href="/properties/sold" class="nav-link sub-nav__link feature"><span>Past Transactions</span></a></li>
                </ul>
              </div>
            </li>
            <li class="navigation__item sub-nav-container">
              <a href="#" class="navigation__link wow fadeInUp">Home Search</a>
              <div class="sub-nav">
                <ul>
                  <li class="sub-nav__item"><a  href="/home-search/listings" class="nav-link sub-nav__link feature"><span>Search All Homes</span></a></li>
                  <li class="sub-nav__item"><a  href="/westport-homes-for-sale" class="nav-link sub-nav__link feature"><span>Westport Homes For Sale</span></a></li>
                  <li class="sub-nav__item"><a  href="/weston-homes-for-sale" class="nav-link sub-nav__link feature"><span>Weston Homes For Sale</span></a></li>
                </ul>
              </div>
            </li>
            <li class="navigation__item">
              <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Let's Connect</span></a>
            </li>
            <li class="navigation__item">
              <a  href="tel:2038582095" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>(203) 858-2095</span></a>
            </li>
          </ul>
        </div>
        <div class="buttons-wrapper">
          <button type="button" class="hamburger-component hamburger">
            <span class="hamburger__bars"></span>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>

        </nav>
        <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18">
            <div class="sidebar">
  
  <button class="toggle sidebar__close close"></button>
  <div class="sidebar__content">

    <ul class="sidebar__nav">
      <li class="sidebar__nav-item">
        <a  href="/" class="sidebar__nav-link">Home</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/about" class="sidebar__nav-link">About Jillian</a>
      </li>
      <li class="sidebar__nav-item sub-nav-container">
        <div class="sub-nav">
          <ul class="sidebar__subnav">
            <li class="sidebar__subnav-item"><a  href="/properties/sale" class="sidebar__subnav-link">Featured Properties</a></li>
            <li class="sidebar__subnav-item"><a  href="/properties/sold" class="sidebar__subnav-link">Past Transactions</a></li>
          </ul>
        </div>
        <a href="#" class="sidebar__nav-link link main-nav">Properties</a>
      </li>
      <li class="sidebar__nav-item sub-nav-container">
        <div class="sub-nav">
          <ul class="sidebar__subnav">
            <li class="sidebar__subnav-item"><a  href="/home-search/listings" class="sidebar__subnav-link">Search All Homes</a></li>
            <li class="sidebar__subnav-item"><a  href="/westport-homes-for-sale" class="sidebar__subnav-link">Westport Homes For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/westport-condos-for-sale" class="sidebar__subnav-link">Westport Condos For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/westport-land-for-sale" class="sidebar__subnav-link">Westport Land For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/westport-townhomes-for-sale" class="sidebar__subnav-link">Westport Townhomes For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/weston-homes-for-sale" class="sidebar__subnav-link">Weston Homes For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/weston-land-for-sale" class="sidebar__subnav-link">Weston Land For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/weston-townhomes-for-sale" class="sidebar__subnav-link">Weston Townhomes For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/fairfield-homes-for-sale" class="sidebar__subnav-link">Fairfield Homes For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/fairfield-land-for-sale" class="sidebar__subnav-link">Fairfield Land For Sale</a></li>
            <li class="sidebar__subnav-item"><a  href="/fairfield-townhomes-for-sale" class="sidebar__subnav-link">Fairfield Townhomes For Sale</a></li>
          </ul>
        </div>
        <a href="#" class="sidebar__nav-link link main-nav">Home Search</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/home-valuation" class="sidebar__nav-link">Home Valuation</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/communities" class="sidebar__nav-link">Communities</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/services" class="sidebar__nav-link">Services</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/blog" class="sidebar__nav-link">Blog</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/videos" class="sidebar__nav-link">Videos</a>
      </li>
      <li class="sidebar__nav-item sub-nav-container">
        <div class="sub-nav">
          <ul class="sidebar__subnav">
            <li class="sidebar__subnav-item"><a  href="/market-insights-weston" class="sidebar__subnav-link">Market Insights Weston</a></li>
            <li class="sidebar__subnav-item"><a  href="/market-insights-fairfield" class="sidebar__subnav-link">Market Insights Fairfield</a></li>
            <li class="sidebar__subnav-item"><a  href="/market-insight-norwalk" class="sidebar__subnav-link">Market Insights Norwalk</a></li>
            <li class="sidebar__subnav-item"><a  href="/market-insights-wilton" class="sidebar__subnav-link">Market Insights Wilton</a></li>
            <li class="sidebar__subnav-item"><a  href="/market-insights-westport" class="sidebar__subnav-link">Market Insights Westport</a></li>
          </ul>
        </div>
        <a href="#" class="sidebar__nav-link link main-nav">Market Insights</a>
      </li>
      <li class="sidebar__nav-item sub-nav-container">
        <div class="sub-nav">
          <ul class="sidebar__subnav">
            <li class="sidebar__subnav-item"><a  href="/communities-resources" class="sidebar__subnav-link">Communities Resources</a></li>
            <li class="sidebar__subnav-item"><a  href="/buyers-guide" class="sidebar__subnav-link">Buyer&#x27;s Guide</a></li>
            <li class="sidebar__subnav-item"><a  href="/sellers-guide" class="sidebar__subnav-link">Seller&#x27;s Guide</a></li>
            <li class="sidebar__subnav-item"><a  href="/vlog" class="sidebar__subnav-link">Vlog</a></li>
            <li class="sidebar__subnav-item"><a  href="/new-construction" class="sidebar__subnav-link">New Construction</a></li>
            <li class="sidebar__subnav-item"><a  href="/newsletter" class="sidebar__subnav-link">Newsletter</a></li>
            <li class="sidebar__subnav-item"><a target="_blank" href="https://issuu.com/cbgloballuxury/docs/cbgl_-_the_trend_report_2025-final?fr&#x3D;sNTI2ODYyOTg1NTM" class="sidebar__subnav-link">The Trend Report</a></li>
          </ul>
        </div>
        <a href="#" class="sidebar__nav-link link main-nav">Resources</a>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/testimonials" class="sidebar__nav-link">Testimonials</a>
      </li>
      <li class="sidebar__nav-item">
        <button data-type="CONTACT_US" class="sidebar__nav-link">Let's Connect</button>
      </li>
      <li class="sidebar__nav-item">
        <a  href="/home-search/account" class="sidebar__nav-link">My Search Portal</a>
      </li>
    </ul>
  </div>
</div>
        </div>
        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="ca33406a-b24a-4100-b315-87fd53d5adc2">
            <div class="mobile-contact ">
  <div class="buttons-holder">
    <a href="/cdn-cgi/l/email-protection#4a20232626232b246421262b2c2c0a2928382f2b263e3364292527">
      <i class="lp-i lp-i--envelope"></i>
    </a>
    <a href="tel:2038582095">
      <i class="lp-i lp-i--phone"></i>
    </a>
  </div>
</div>

        </div>
        <section id="section-f8501e10-7b3a-49a5-b949-038d197a6de1"  class="video-section is-font-color-light is-background-color-light" data-el-id="8ec37bf8-cdc6-4e6c-bec9-381ff2117972">
  <div class="video-wrapper">
    <div class="full-screen-video-component">
      <div class="video-wrapper hidable">
        <video class="lazy"
          poster="https://res.cloudinary.com/luxuryp/videos/f_auto,q_auto/so_0,eo_0/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1.jpg"
          style="height:100%;"
          loop
          muted
          autoplay
          playsinline>
          <source data-src="https://res.cloudinary.com/luxuryp/videos/f_webm,vc_vp9,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1.webm" type="video/webm;codecs=vp9">
<source data-src="https://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h265,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1.mp4" type="video/mp4;codecs=hvc1">
<source data-src="https://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h264,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1.mp4" type="video/mp4">
        </video>
      </div>
        <div class="poster" style="background-image: url('https://res.cloudinary.com/luxuryp/videos/w_320,c_limit,f_auto,q_auto/lcc1fhxuo4wz2b9wsyui/overhead-aerials-of-luxury-homes-in-compo-beach-westport-connecticut-usa-new-england-steadicam-beauty-shots-circa-2014-1')"></div>
    </div>
  </div>
  <div class="overlay-component"style="--section-overlay: rgba(0, 0, 0, 0.4);"></div>
<div class="redesign">
  <div class="lp-container lp-container--l">
    <div class="collection">
        <div class="item">
          <div class="lp-title-group">
            <p class="lp-text--pretitle lp-pre-line animation">Top Producer with CB Global Luxury</p>
            <h1 class="lp-h1 animation">Jillian Klaff</h1>
            <div class="lp-text--subtitle lp-pre-line"><p>Westport Real Estate Agent</p></div>
          </div>
          <div class="btn-container">
                    <a
                        href="/home-search/listings"
                        
                        class="lp-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width button-style-2"
                        
                        
                        
                        
                        
                        >
                                Browse Properties
                        </a>
                    <a
                        href="/home-valuation"
                        
                        class="lp-btn lp-btn--light lp-btn--filled lp-btn--mob-full-width button-style-1"
                        
                        
                        
                        
                        
                        >
                                Home Valuation
                        </a>
          </div>
        </div>
        
    </div> 
  </div>
</div>
</section>
<section id="section-1bffde17-ce8b-4d04-a56b-17e7400b56b6"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="21c5a117-61cb-4f43-8635-2da86e3ae7dd">
  
<div class="boxed-text lp-vertical-paddings redesign">
  <div class="lp-container">
    
    <div class="boxed-text__description"><h2><img style="display: block; margin-left: auto; margin-right: auto;" src="https://media-production.lp-cdn.com/media/051e982d-e2d6-4282-8465-c8e5e6504c0c" alt width="147" height="129"></h2>
<h2 style="text-align: center;">Real Hard Facts for Really Smart Moves</h2></div>
  </div>
</div>
</section>
<section id="section-2852d6fc-6c03-4903-bcaf-a0a9a75af219"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="f5d446fb-a520-4f8d-8eda-49f27fa7ba8b">
  <div class="company-stats lp-vertical-paddings ">
  <div class="lp-container">
    <div class="lp-title-group">
      <h2 class="lp-h2"></h2>
      <p class="lp-text--subtitle lp-pre-line">With more than 31 years of experience, Jillian Klaff has sold over $600 million in property volume across lower Fairfield County, including 300+ Westport homes and counting. Her career spans a wide range of properties, from condominiums and starter homes to multimillion-dollar estates. As a Luxury Property Specialist with GRI and ABR certifications, she has built a reputation for strong negotiation and a client-centered process. Klaff has also worked closely with builders early in her career, adding depth to her understanding of the construction side of real estate. She has earned memberships in Coldwell Banker&#x27;s International President&#x27;s Premier and President&#x27;s Elite groups, alongside repeated recognition in Real Trends and The Wall Street Journal. Her career reflects both longevity and adaptability to a changing market.</p>
      
      
    </div>
    <div class="company-stats__row ">
      <div class="company-stats__col">
        <div class="stat-card">
          <h3 class="stat-card__value jsValue">30+ Years</h3>
          <p class="stat-card__title">
            Experience in Business
          </p>
        </div>
      </div>
      <div class="company-stats__col">
        <div class="stat-card">
          <h3 class="stat-card__value jsValue">$600M+</h3>
          <p class="stat-card__title">
            Property Volume Sold
          </p>
        </div>
      </div>
    </div>
    
  </div>
</div>
</section>
<section id="section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef"  class="solid-section is-font-color-dark is-background-color-dark" data-el-id="ee87d271-1520-42d7-88f2-27f85a797fa1">
  <div class="gallery-component redesign">
  <div class="lp-container gallery-component__container">
    <div class="row gallery-component__row cols-3">
      
      <div class="gallery-component__col">
        <a class="gallery-card"
 href="/home-search/listings"             >
          <div class="gallery-card__preview">
            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/yw7os67p4oyskzidgq2q 3456w" class="portrait" alt="" loading="lazy">
          </div>
          <h3 class="lp-h3 gallery-card__title">Buy</h3>
        </a>
      </div>
      
      
      <div class="gallery-component__col">
        <a class="gallery-card"
 href="/home-search/listings?search_type&#x3D;envelope&amp;south&#x3D;41.035448089485755&amp;west&#x3D;-73.49617952792967&amp;north&#x3D;41.22060908155645&amp;east&#x3D;-73.2448672720703&amp;lease_property&#x3D;true&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;status%5B%5D&#x3D;Active&amp;status_days%5BActive%5D&#x3D;36500&amp;status%5B%5D&#x3D;Under+Contract&amp;status_days%5BUnder+Contract%5D&#x3D;36500&amp;status%5B%5D&#x3D;Pending&amp;status_days%5BPending%5D&#x3D;36500&amp;status_days%5BSold%5D&#x3D;180&amp;mailer_schedule&#x3D;instant&amp;order&#x3D;price%3Adesc&amp;page&#x3D;1"             >
          <div class="gallery-card__preview">
            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/blmyahuj3k0uo3rmbfsc" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/blmyahuj3k0uo3rmbfsc 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/blmyahuj3k0uo3rmbfsc 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/blmyahuj3k0uo3rmbfsc 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/blmyahuj3k0uo3rmbfsc 1766w" class="portrait" alt="" loading="lazy">
          </div>
          <h3 class="lp-h3 gallery-card__title">Rent</h3>
        </a>
      </div>
      
      
      <div class="gallery-component__col">
        <a class="gallery-card"
 href="/home-valuation"             >
          <div class="gallery-card__preview">
            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/svld5ud4fb8ptjbsjbye 2000w" class="portrait" alt="" loading="lazy">
          </div>
          <h3 class="lp-h3 gallery-card__title">Sell</h3>
        </a>
      </div>
      
    </div>
  </div>
</div>


</section>
<section id="section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="09e98f83-51e3-4837-80a0-019e211aba4b">
<div class="redesign featured-properties-section " data-auto-scroll=false data-autoplay-speed=3000>
	<div class="container">
		<div class="featured-properties-header">
			<h2 class="serif">Featured Properties</h2>
			<ul class="slick-links-nav">
				<li><span class="link link--white feature prev">previous</span></li>
				<li><span class="link link--white feature next">next</span> <span class="spacer"></span></li>
			</ul>
		</div>
		<ul class="featured-properties carousel-container">
				<li class="featured-properties__item-cover">
					<div class="featured-properties__item feature">
						<a class="featured-properties__item-info" href="/properties/312-compo-road-south-westport-ct-us-06880-24173977">
							<div class="featured-properties__img">
								<img src="https://dlajgvw9htjpb.cloudfront.net/cms/b65b761a-571f-45ab-be60-492e55f0b92d/24173977/-2538502130601647762.jpg" alt="" loading="lazy">
							</div>
							<span class="featured-properties__label">Pending</span>
							
							<div class="featured-properties__text">
								<h4 class="serif">312 Compo Road South</h4>
								<p>
										312 Compo Road South, Westport, CT 06880
								</p>

								<p>
										4 BD | 
									4 BA
										 | 3,215 Sq.Ft.
								</p>

								<h5>
										$3,499,000
								</h5>
							</div>
						</a>
						<div class="featured-properties__hover">
							<a href="/properties/312-compo-road-south-westport-ct-us-06880-24173977"></a>
							<div class="featured-properties__buttons">
								<a href="/properties/312-compo-road-south-westport-ct-us-06880-24173977" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a>
							</div>
						</div>
					</div>
				</li>
				<li class="featured-properties__item-cover">
					<div class="featured-properties__item feature">
						<a class="featured-properties__item-info" href="/properties/24-washington-avenue-westport-ct-us-06880-24175092">
							<div class="featured-properties__img">
								<img src="https://dlajgvw9htjpb.cloudfront.net/cms/b65b761a-571f-45ab-be60-492e55f0b92d/24175092/5866657023947999637.jpg" alt="" loading="lazy">
							</div>
							<span class="featured-properties__label">Pending</span>
							
							<div class="featured-properties__text">
								<h4 class="serif">24 Washington Avenue</h4>
								<p>
										24 Washington Avenue, Westport, CT 06880
								</p>

								<p>
										4 BD | 
									4 BA
										 | 4,230 Sq.Ft.
								</p>

								<h5>
										$2,850,000
								</h5>
							</div>
						</a>
						<div class="featured-properties__hover">
							<a href="/properties/24-washington-avenue-westport-ct-us-06880-24175092"></a>
							<div class="featured-properties__buttons">
								<a href="/properties/24-washington-avenue-westport-ct-us-06880-24175092" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a>
							</div>
						</div>
					</div>
				</li>
		</ul>
  			<div class="featured-properties-button-holder">        <a
            href="/properties/sale"
            
            class="btn btn--primary-light button-style-1"
            
            
            
            
            
            >
                    VIEW ALL
            </a>
</div>
	</div>
</div>

</section>
<section id="section-29717e9a-de44-4e49-9975-b28ba0f26844"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="9b47c4ee-5cfb-4660-a12f-f05384cc67e3">
  <div class="lp-container lp-vertical-paddings redesign">
    <div class="nwmls-disclaimer__container">
        <p class="nwmls-disclaimer">
            Based on information submitted to the MLS GRID as of <span class="js-current-date"></span>. All data is obtained from various sources and may not have been verified by the broker or MLS GRID. Supplied Open House Information is subject to change without notice. All information should be independently reviewed and verified for accuracy. Properties may or may not be listed by the office/agent presenting the information.
        </p>
    </div>
</div>
</section>
<section  class="image-section is-font-color-light is-background-color-light" id="section-de2eba42-2d4b-414f-9155-1fc45868f4ae" data-el-id="3194d39b-ac2d-42a7-9973-4b279eaa51e6">
    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
  (function(){
    const sectionId = 'section-de2eba42-2d4b-414f-9155-1fc45868f4ae'
    const section = document.querySelector(`#${sectionId}`);
    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');

    if('false' === 'true') {
      section.classList.add('parallax-enabled');
      section.style.setProperty('--sectionBackground', sectionBg);
      section.style.setProperty('background', 'none');
    }
  })()
</script>
<div class="redesign featured-testimonials ">
	<div class="container">
		<div class="featured-testimonials__left">
			<h2 class="serif">Testimonials</h2>
  			<ul class="slick-links-nav">
  				<li><span class="link feature prev hyperlink-style-2">previous</span></li>
  				<li><span class="separator hyperlink-style-2"></span></li>
  				<li><span class="link feature next hyperlink-style-2">next</span></li>
  			</ul>
		</div>
		<div class="featured-testimonials__right"> 
			<ul class="featured-testimonials__slider js-slider" data-autoscroll=false data-autoscroll-interval=6>
				<li>
					<blockquote>Working with Jillian was incredible. She just recently helped my husband and I find our dream home and we are so grateful to her for her stewardship all the way through. Patient, professional, and collaborative from start to finish—thank you, Jillian! We highly recommend her.</blockquote>
						— <cite>Teri K.</cite>
				</li>
				<li>
					<blockquote>I have known Jillian Klaff a number of years through a social club. She always struck me as extremely discrete, so I knew she would be discrete when representing me as I sold my house recently. She is kind and thorough and reassuring. She explained the process of listing my house and made a number of practical suggestions as I approached the actual day my home went to market. It sold in five days, much to my surprise! She continued to offer encouragement as I began to thin my belongings and start to pack up. The closing was flawless. I couldn’t have been happier with Jillian’s representation and I recommend her highly to any motivated seller! Thank ...</blockquote>
						— <cite>Martha D.</cite>
				</li>
				<li>
					<blockquote>I have known Jillian for 33 years. She has been extremely helpful with the sale of 2 homes in the area. Jillian is professional, knows her business and works very hard to make your experience run smoothly. She is thoughtful, kind and always available to help with any concern. She goes above and beyond! I highly recommend Jillian.</blockquote>
						— <cite>Katherine D.</cite>
				</li>
				<li>
					<blockquote>We recently bought a house with the help of Jillian Klaff. From beginning to end she was professional, helpful and followed up on all the numerous details one has when buying a new home. We were living in another part of the country and Jillian went out of her way to make the deal happen. My husband and I highly recommend her.</blockquote>
						— <cite>Mcgarvey B.</cite>
				</li>
				<li>
					<blockquote>We had high expectations when we trusted Jillian with the sale of our home and she exceeded all of them! Jillian has extensive knowledge of the Westport real estate market and guided us on timing and preparing the house for showings. She was successful at creating excitement with local brokers that ultimately led to multiple offers and a successful sale.

Jillian has also helped us secure a summer rental property and represented us as buyers for a new property...and both have been a great fit for our needs.

Jillian is caring, attentive, and has excellent negotiation skills. We give her our highest recommendation.</blockquote>
						— <cite>Char L.</cite>
				</li>
				<li>
					<blockquote>The thought of selling my home was overwhelming. Jillian was supportive, responsive, and available every step of the way. She has a wealth of resources which helped me prepare for the listing and is well respected by everyone I came in contact with. A true professional, honest, and genuine person, I couldn’t imagine going through my move without her. I am extremely happy with both my sale and the purchase of my new home and will be forever grateful to Jillian for her time and effort.</blockquote>
						— <cite>Maria A.</cite>
				</li>
			</ul>
			        <a
			            href="/testimonials"
			            
			            class="btn btn--primary-dark button-style-2"
			            
			            
			            
			            
			            
			            >
			                    VIEW ALL
			            </a>
		</div>
	</div>
</div>

</section>
<section id="section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="297c1d10-9f4c-4d85-a3a2-3b13d779cce7">
  <div class="redesign featured-neighborhoods-section">
    <div class="container">
      <div class="featured-team-header">
        <h2 class="serif">Communities</h2>
        <ul class="slick-links-nav">
          <li><span class="link link--white feature prev hyperlink-style-1">previous</span></li>
          <li><span class="link link--white feature next hyperlink-style-1">next</span><span class="spacer hyperlink-style-1"></span></li>
        </ul>
      </div>
      <div class="featured-neighborhoods carousel-container">
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/westport">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uhq2qigv7khrrzaq6ai5" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/uhq2qigv7khrrzaq6ai5 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uhq2qigv7khrrzaq6ai5 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/uhq2qigv7khrrzaq6ai5 1920w" alt="Westport" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Westport
            </p>
          </a>
        </div>
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/fairfield">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/paoawpqbggijmd0gtjon" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/paoawpqbggijmd0gtjon 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/paoawpqbggijmd0gtjon 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/paoawpqbggijmd0gtjon 1920w" alt="Fairfield" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Fairfield
            </p>
          </a>
        </div>
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/norwalk">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/l9c48c1s1gc9fkbuetxe" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/l9c48c1s1gc9fkbuetxe 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/l9c48c1s1gc9fkbuetxe 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/l9c48c1s1gc9fkbuetxe 1920w" alt="Norwalk" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Norwalk
            </p>
          </a>
        </div>
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/wilton">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uta50gsnysmidroc6pnl" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/uta50gsnysmidroc6pnl 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uta50gsnysmidroc6pnl 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/uta50gsnysmidroc6pnl 1920w" alt="Wilton" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Wilton
            </p>
          </a>
        </div>
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/weston">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/bcpvvvzgnr1wv8c3nys2" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/bcpvvvzgnr1wv8c3nys2 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/bcpvvvzgnr1wv8c3nys2 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bcpvvvzgnr1wv8c3nys2 1920w" alt="Weston" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Weston
            </p>
          </a>
        </div>
        <div class="featured-neighborhoods__slide">
          <a href="/neighborhoods/southport">
            <figure>
                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/faehk9umjea46wsftjzv" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/faehk9umjea46wsftjzv 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/faehk9umjea46wsftjzv 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/faehk9umjea46wsftjzv 1920w" alt="Southport" loading="lazy">
              <span class="btn btn--primary-dark button-style-1">EXPLORE</span>
            </figure>
            <p class="featured-neighborhoods__title">
              Southport
            </p>
          </a>
        </div>
        
      </div>
              <a
                  href="/communities"
                  
                  class="btn btn--primary-light button-style-1"
                  
                  
                  
                  
                  
                  >
                          View All 
                  </a>
    </div>
  </div> 
</section>
<section id="section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="dcf8ef16-c863-40f6-a58a-8b446bc3738a">
    <div class="f-video">
    <div class="container">
      <div class="f-video-content">
          <h2>Meet Jillian</h2>

          <p class="f-video-description">
            <div id="ib8p"><p>Jillian Klaff is a full-service Realtor® with nearly 30 years of experience in Westfield and&nbsp;the lower Fairfield County real estate market, specializing in everything from new construction and land purchases to home resales, rental properties, consulting, and relocation. Her aim is to make your home purchase or sale both seamless and comfortable.&nbsp;</p></div><div id="itr9"><div class="button-container"><a href="/about" class="lp-btn lp-btn--outline lp-btn--dark lp-btn--big button-style-1">Learn More</a></div></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
          </p>
        
        <ul class="lp-socials">
        
        </ul>      </div>
      <div class="f-video-poster">
        <div class="f-video-poster-bgr" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1920/https://media-production.lp-cdn.com/media/knzvfhb5d2ajqfdy111z')">
          <button data-type="VIDEO" class="play-btn" data-src="https://www.youtube.com/embed/tl8W7xXYeNk?autoplay&#x3D;1">
            <div class="play-btn-holder">
              <div class="icon-wrapper">
                  <i class="lp-i lp-i--play play-icon"></i>
              </div>
            </div>
          </button>
        </div>
      </div>
    </div>
  </div>
</section>
<section id="section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="a261202b-cc2b-4a7e-912a-a4b8ffe6ab1b">
<div class="redesign custom-content lp-vertical-paddings">
  <div class="lp-container lp-container--l">
    <h2>Awards</h2>
<div class="gjs-row">
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/d05f8a18-9dfc-4ae3-b455-67a47b377953"></div>
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/87fed03d-baf6-434e-b8d4-a8f6353413e8"></div>
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/dc030bb2-b460-4318-852d-0491d3b77595"></div>
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/cae15f90-c157-4148-9eb3-4d316fe7807a"></div>
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/525adfc8-c372-496a-9eee-1d5b5206a7b7"></div>
<div class="gjs-cell"><img src="https://media-production.lp-cdn.com/media/abd95106-c2d6-4d8e-a5a6-983d1ee0cdc6"></div>
</div>
  </div>
</div>
</section>
<section id="section-972db57c-49f9-4cf2-9467-97573455255a"  class="solid-section is-font-color-light is-background-color-dark" data-el-id="5a3cf126-5782-4647-83d4-423f704d99e5">
  <div class="redesign newsletter-sign-up">
  
  <div class="main-container">
    <div class="img-container">
      <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cwmge2l6nbhqoso7broj 2000w" alt="img" loading="lazy">
    </div>
  
    <div class="container">
      <form data-type="contact-form" class="contact-us-form">
    <div class="solid-subsection default-before default" style="color: #FFF; background-color: rgba(202, 167, 90, 1);">
                  <h2> Receive Exclusive Listings in Your Inbox</h2>
                  <p>
                    Are you interested in buying a home? Look no further than working with a real estate expert.
                  </p>
                  <div class="h-pot">
                    <label for="section-972db57c-49f9-4cf2-9467-97573455255a-middleName">Middle Name</label>
                    <input id="section-972db57c-49f9-4cf2-9467-97573455255a-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
                  </div>
                  <div class="inp inp--dark-bg">
                    <label for="section-972db57c-49f9-4cf2-9467-97573455255a__name">Name</label>
                    <input id="section-972db57c-49f9-4cf2-9467-97573455255a__name" type="text" name="name" required />
                  </div>
                  <div class="inp inp--dark-bg">
                    <label for="section-972db57c-49f9-4cf2-9467-97573455255a__phone">Phone</label>
                    <input id="section-972db57c-49f9-4cf2-9467-97573455255a__phone" type="tel" name="phoneNumber" required />
                  </div>
                  <div class="inp inp--dark-bg">
                    <label for="section-972db57c-49f9-4cf2-9467-97573455255a__email">Email Address</label>
                    <input id="section-972db57c-49f9-4cf2-9467-97573455255a__email" type="email" name="email" required />
                  </div>
                  <div class="lp-disclaimer">  <div class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-message'>
              By providing your contact information to Jillian Klaff, your personal
              information will be processed in accordance with Jillian Klaff's
              <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. By
              checking the box(es) below, you consent to receive communications
              regarding your real estate inquiries and related marketing and promotional
              updates in the manner selected by you. For SMS text messages, message
              frequency varies. Message and data rates may apply. You may opt out of
              receiving further communications from Jillian Klaff at any time. To opt
              out of receiving SMS text messages, reply STOP to unsubscribe.
            </span>
          </div>
          <label style='display: none;' for='section-972db57c-49f9-4cf2-9467-97573455255a-termsAccepted'>Opt
            in/Disclaimer Consent:</label>
          <label class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-checkbox'>
              <input
                type='checkbox'
                name='termsAccepted'
                id='section-972db57c-49f9-4cf2-9467-97573455255a-termsAccepted'
                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
                oninput="this.setCustomValidity('')"
                required
                value='Yes, I agree to receive email or phone call communications from Jillian Klaff.'
              />
            </span>
            <span class='lp-tcr-message'>
              Yes, I agree to receive email or phone call communications from
              Jillian Klaff.
            </span>
          </label>
          <label style='display: none;' for='section-972db57c-49f9-4cf2-9467-97573455255a-customConsent'>Opt
            in/Disclaimer Consent:</label>
          <label class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-checkbox'>
              <input
                type='checkbox'
                name='customConsent'
                id='section-972db57c-49f9-4cf2-9467-97573455255a-customConsent'
                value='Yes, I agree to receive SMS text messages from Jillian Klaff.'
              />
            </span>
            <span class='lp-tcr-message'>
              Yes, I agree to receive SMS text messages from Jillian Klaff.
            </span>
          </label>
        
        </div>
                  <input type="submit" value="SIGN UP" class="btn btn--primary-light button-style-2" />
    </div>
        <div class="success">
          <h2>Thank You</h2>
          <p>
            Thanks for signing up!
          </p>
        </div>
      </form>
      
    </div>
  </div>
</div>
</section>
<section id="section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="cbccba56-02a9-4c0c-90bb-602d2d676658">

  <div class="redesign featured-press-section">
    <div class="container">
      <header>
        <h2 class="serif">Blog</h2>
      </header>
      <ul class="featured-press three-columns">
              <li> 
                <a href="/blog/reading-fairfields-luxury-market-as-a-home-seller">
                  <figure>
                      <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/326fc4d2-6d70-4b11-b6d5-7e8308a618dc" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/326fc4d2-6d70-4b11-b6d5-7e8308a618dc 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/326fc4d2-6d70-4b11-b6d5-7e8308a618dc 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/326fc4d2-6d70-4b11-b6d5-7e8308a618dc 1408w" alt="" loading="lazy">
                  </figure>
                  
                  <h4 class="serif "><span class="link hyperlink-style-1">Reading Fairfield’s Luxury Market As A Home Seller</span>
                  </h4>
                  
                  <ul class="featured-press__details">
                      
                    <li>June 4, 2026</li>           
                  </ul>
                </a>
              </li>
              <li> 
                <a href="/blog/buying-a-beach-area-home-in-fairfield-connecticut">
                  <figure>
                      <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/2eec5502-8e9d-466f-a134-9a239acaf64b" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/2eec5502-8e9d-466f-a134-9a239acaf64b 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/2eec5502-8e9d-466f-a134-9a239acaf64b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2eec5502-8e9d-466f-a134-9a239acaf64b 1408w" alt="" loading="lazy">
                  </figure>
                  
                  <h4 class="serif "><span class="link hyperlink-style-1">Buying A Beach-Area Home In Fairfield, Connecticut</span>
                  </h4>
                  
                  <ul class="featured-press__details">
                      
                    <li>May 28, 2026</li>           
                  </ul>
                </a>
              </li>
              <li> 
                <a href="/blog/finding-your-westport-fit-beach-downtown-or-estates">
                  <figure>
                      <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/907385d7-b526-4626-bafc-4aed2e376637" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/907385d7-b526-4626-bafc-4aed2e376637 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/907385d7-b526-4626-bafc-4aed2e376637 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/907385d7-b526-4626-bafc-4aed2e376637 1408w" alt="" loading="lazy">
                  </figure>
                  
                  <h4 class="serif "><span class="link hyperlink-style-1">Finding Your Westport Fit: Beach, Downtown, Or Estates</span>
                  </h4>
                  
                  <ul class="featured-press__details">
                      
                    <li>May 21, 2026</li>           
                  </ul>
                </a>
              </li>
      </ul>
  
              <a
                  href="/blog"
                  
                  class="btn btn--primary-dark button-style-1"
                  
                  
                  
                  
                  
                  >
                          VIEW ALL
                  </a>
    </div> 
  </div> 
</section>
<section id="section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="21c5a117-61cb-4f43-8635-2da86e3ae7dd">
  
<div class="boxed-text lp-vertical-paddings redesign">
  <div class="lp-container">
    <div class="lp-title-group">
      <h2 class="lp-h2 js-title">Explore New Construction Opportunities</h2>
      
    </div>
    
    <div class="boxed-text__description"><p>Whether you're looking for a contemporary masterpiece or a classic design with modern touches, our new construction properties provide exceptional craftsmanship, innovative layouts, and the opportunity to personalize your living space. Explore the possibilities and find a home that's built just for you.</p></div>
      <div class="button-container">
                <a
                    href="/new-construction-new"
                    
                    class="lp-btn lp-btn--dark lp-btn--outline button-style-1"
                    
                    
                    
                    
                    
                    >
                            Learn More
                    </a>
      </div>
  </div>
</div>
</section>
<section  class="image-section is-font-color-light is-background-color-light" id="section-eac163cd-4654-4942-9e3b-f61dc37708e1" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c">
    <script>
  (function(){
    const sectionId = 'section-eac163cd-4654-4942-9e3b-f61dc37708e1'
    const section = document.querySelector(`#${sectionId}`);
    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');

    if('false' === 'true') {
      section.classList.add('parallax-enabled');
      section.style.setProperty('--sectionBackground', sectionBg);
      section.style.setProperty('background', 'none');
    }
  })()
</script>
<div class="redesign work-with-us ">
	<div class="container">
			<h2 class="serif">Work With Jillian</h2>
		<p>Jillian Klaff specializes in Westport Connecticut real estate and the neighboring Fairfield County towns of Weston, Southport, Fairfield, Wilton, and Norwalk. I offer a full range of real estate services. Contact her today to get started on your next property venture.</p>
		<div class="btn-container">
              <a
                  role="button"
                  data-type="CONTACT_US"
                  class="btn btn--primary-light button-style-2"
                  
                  
                  
                  
                  
                  >
                          Let&#x27;s Connect
                  </a>
    </div>
	</div>
</div> 
</section>
<section id="section-0929c1d2-5b73-4e76-8c74-1a6fa1528363"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284">
  <script type="text/x-handlebars-template" class="jsIGItem">
    <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}">
      <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div>
      <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div>
      {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}}
    </a> 
</script>
<div class="ig-feed redesign">
  <div class="ig-feed-top lp-container">
    <div class="top-wrapper">
      <div class="top-left">
          <h3 class="lp-h3 title">Follow Jillian on Instagram</h3>
        <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a>
      </div>
      <div class="top-right">
          <a href="#" target="_blank" class="lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width follow-button jsIGLink button-style-1">Follow</a>
        <a class="nav-button top-nav-prev hidden-control button-style-1">
          <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.099 13.25l-5.25-5.775L7.099 1.7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </a>
        <a class="nav-button top-nav-next hidden-control button-style-1">
          <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.90137 1.75L7.15137 7.525L1.90137 13.3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </a>
      </div>
    </div>
  </div>
  <div class="lp-container ig-feed-container ">
    <div class="ig-feed-feed" data-limit="33">
    </div>
  </div>
  <div class="bottom-controls">
    <a class="bottom-nav-button bottom-nav-prev button-style-1">
      <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.099 13.25l-5.25-5.775L7.099 1.7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
    </a>
    <a class="bottom-nav-button bottom-nav-next button-style-1">
      <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.90137 1.75L7.15137 7.525L1.90137 13.3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
    </a>
  </div>
</div>

</section>

        <div id="modals" class="modals"></div>
        <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b">
            <div class="footer redesign  no_newsletter "> 
    <div class="container">
        <h3>Jillian Klaff</h3>
        <div class="info-wrap">
            <div class="info-wrap-contact agent_box">
                <div class="info-wrap-contact_zone type_user">
                    <h4 class="serif">Get in Touch</h4>
                    <div class="info-wrap-contact_cell">
                        <i>
                            <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M2 0C0.903517 0 0 0.903517 0 2V16.6667C0 17.7631 0.903517 18.6667 2 18.6667H28C29.0965 18.6667 30 17.7631 30 16.6667V2C30 0.903517 29.0965 0 28 0H2ZM2.4375 1.33333H27.5625L15.6458 11.4896C15.3389 11.7512 14.6612 11.7512 14.3542 11.4896L2.4375 1.33333ZM1.33333 2.13542L10.1979 9.6979L1.33333 16.5729V2.13542ZM28.6667 2.13542V16.5729L19.8021 9.6979L28.6667 2.13542ZM11.2396 10.5833L13.4896 12.5C14.3543 13.2369 15.6457 13.2369 16.5104 12.5L18.7604 10.5833L27.4687 17.3333H2.53125L11.2396 10.5833Z" fill="#1A1A1A" />
                            </svg>
                        </i>
                        <p class="contact_title">Email</p>
                        <a href="/cdn-cgi/l/email-protection#254f4c49494c444b0b4e4944434365464757404449515c0b464a48" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1"><span class="__cf_email__" data-cfemail="5d37343131343c337336313c3b3b1d3e3f2f383c312924733e3230">[email&#160;protected]</span></a>
                    </div>
                    <div class="info-wrap-contact_cell">
                        <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
                        <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A" />
                        </svg></i>
                        <p class="contact_title">Phone Number</p>
                        <a href="tel:2038582095" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">(203) 858-2095</a>
                    </div>
                </div>
                <div class="info-wrap-contact_zone">
                    <div class="info-wrap-contact_cell">
                        <i>
                            <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M29.9821 6.49489C29.7931 6.35756 29.679 6.32046 29.4572 6.39228L20.298 9.41368L16.1952 8.03558L15.8172 9.41525L19.7644 10.7038V28.1462L9.89831 25.7069V22.1034H8.71438V25.7515L1.21616 28.2532V15.3945H0.0322266V29.2729C0.0322266 29.5077 0.130098 29.7279 0.321106 29.8645C0.445418 29.9541 0.585911 29.9999 0.735086 29.9999C0.814804 29.9999 0.890971 29.9868 0.967926 29.96L9.48433 27.029L20.1792 29.7887C20.3224 29.8254 20.4751 29.8171 20.6152 29.7654L29.8104 26.2235C30.0942 26.1177 30.0251 25.8466 30.0251 25.5431V7.08291C30.0251 6.85086 30.17 6.63144 29.9821 6.49489ZM28.8412 25.0388L20.9483 28.0361V10.7065L28.8412 8.08649V25.0388Z" fill="#1A1A1A" />
                                <path d="M6.57515 19.1142C6.6671 19.422 6.95006 19.6323 7.2713 19.6323C7.59215 19.6323 7.87511 19.422 7.96746 19.1142C8.67742 16.7514 10.0393 15.2447 11.3559 13.788C12.9944 11.9747 14.5422 10.2615 14.5422 7.2717C14.5422 3.39788 11.1451 0 7.2713 0C3.39827 0 0 3.39748 0 7.2717C0 10.2615 1.54819 11.9747 3.18674 13.788C4.50328 15.2447 5.86479 16.7514 6.57515 19.1142ZM7.2713 1.45426C10.316 1.45426 13.0883 4.22663 13.0883 7.2717C13.0883 9.70191 11.7852 11.1435 10.2769 12.8121C9.2461 13.9534 8.10992 15.2096 7.2713 16.9199C6.43229 15.2096 5.29651 13.953 4.2657 12.8121C2.75698 11.1432 1.45426 9.70191 1.45426 7.2717C1.45426 4.22663 4.22663 1.45426 7.2713 1.45426Z" fill="#1A1A1A" />
                                <path d="M7.26193 10.1616C8.8705 10.1616 10.1795 8.86084 10.1795 7.26175C10.1795 5.66305 8.87089 4.3623 7.26193 4.3623C5.65297 4.3623 4.34473 5.66305 4.34473 7.26175C4.34512 8.86084 5.65336 10.1616 7.26193 10.1616ZM7.26193 5.81657C8.06898 5.81657 8.72527 6.46536 8.72527 7.26175C8.72527 8.05932 8.06898 8.70733 7.26193 8.70733C6.45528 8.70733 5.79899 8.05893 5.79899 7.26175C5.79899 6.46536 6.45528 5.81657 7.26193 5.81657Z" fill="#1A1A1A" />
                            </svg>
                        </i>
                        <p class="info-wrap-contact_title">Address</p>
                        <p class="info-wrap-contact_link grey-text"><p>355 Riverside Ave.</p>
<p><span class="fMYBhe">Westport, CT 06880</span></p></p>
                    </div>
                </div>
            </div>
        </div>
        <div class="text_footer first_text_footer">
            <div class="images_box">
                <div class="img_size">
                    <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ei5rn5a1rimhgjnbwsv7" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/ei5rn5a1rimhgjnbwsv7 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ei5rn5a1rimhgjnbwsv7 485w" alt="Footer Image" sizes="200px" class="portrait">
                </div>
            </div>
            <div class="luxury-text">
                <div>
<h3>NRT NEW ENGLAND LLC<br><span style="font-size: 14px;"><a class="link" href="/cdn-cgi/l/email-protection#befdeaf2d7dddbd0cdd7d0d9fed0cccad2d2dd90ddd1d3"><span class="__cf_email__" data-cfemail="6625322a0f050308150f0801260814120a0a054805090b">[email&#160;protected]</span></a><br><a class="link" href="tel:2032442900">(203) 244-2900</a></span></h3>
</div>
<div id="ipql">
<p style="font-size: 12px;">The property information herein is derived from various sources that may include, but not be limited to, county records and the Multiple Listing Service, and it may include approximations. Although the information is believed to be accurate, it is not warranted and you should not rely upon it without personal verification. Affiliated real estate agents are independent contractor sales associates, not employees. &copy;<span class="auto-year-update">#</span> Coldwell Banker. All Rights Reserved. Coldwell Banker and the Coldwell Banker logo are trademarks of Coldwell Banker Real Estate LLC. The Coldwell Banker&reg; System is comprised of company owned offices which are owned by a subsidiary of Anywhere Advisors LLC and franchised offices which are independently owned and operated. The Coldwell Banker System fully supports the principles of the Fair Housing Act and the Equal Opportunity Act. <img src="https://media-production.lp-cdn.com/media/1d3b43d0-886a-4c71-900f-a6405169b9af" alt="" width="25px" height="auto"> | <span style="text-decoration: underline;"><a href="https://jillianklaffhomes.com/sitemap">Sitemap</a></span></p>
</div>
<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}</style>
            </div>
        </div>
        <div class="text_footer second_text_footer">
            <div class="text_content_wrap">
                <div>
                    The property information herein is derived from various sources that may include, but not be limited to, county records and the Multiple Listing Service, and it may include approximations. Although the information is believed to be accurate, it is not warranted and you should not rely upon it without personal verification. Affiliated real estate agents are independent contractor sales associates, not employees. ©2025 Coldwell Banker. All Rights Reserved. Coldwell Banker and the Coldwell Banker logo are trademarks of Coldwell Banker Real Estate LLC. The Coldwell Banker® System is comprised of company owned offices which are owned by a subsidiary of Anywhere Advisors LLC and franchised offices which are independently owned and operated. The Coldwell Banker System fully supports the principles of the Fair Housing Act and the Equal Opportunity Act.
                </div>
                <div>
                    <div>&nbsp;</div>
<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
                </div>
            </div>
        </div>
        <div class="info-privacy">
          <div class="form-row info-privacy__row">

            <div class="form-col form-col--powered powered-box">
                    <div class="img-wrap">
                        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/g5luexb2f7l4eobhcimh" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/g5luexb2f7l4eobhcimh 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/g5luexb2f7l4eobhcimh 960w" sizes="200px" alt="">
                    </div>
                <div class="powered_zone">
                    Real Estate Website Design by <a href="https://www.luxurypresence.com/real-estate-website-design/" target="_blank" class="lp-link grey-text luxury-link underlined hyperlink-style-1">Luxury Presence</a>
                </div>
            </div>

            <div class="form-col form-col--copyright">
              <div class="copy_zone">
                <span class="copy_words">Copyright &copy;</span> <span class="auto-year-update">2026</span>
                | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-1">Privacy Policy</a>

              </div>
            </div>

            <div class="form-col form-col--socials">
                <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone">
                
                        <li>
                          <a
                            href="https://www.facebook.com/JillianKlaffHomesCT"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0s"
                            target="_blank"
                            aria-label="FACEBOOK"
                          >
                              <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.instagram.com/jillian.klaff.realtor/"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.1s"
                            target="_blank"
                            aria-label="INSTAGRAM"
                          >
                              <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.linkedin.com/company/jillian-klaff-homes/"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.2s"
                            target="_blank"
                            aria-label="LINKEDIN"
                          >
                              <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.youtube.com/user/jillianklaffhomes/videos"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.3s"
                            target="_blank"
                            aria-label="YOUTUBE"
                          >
                              <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.google.com/search?q&#x3D;Jillian+Klaff&amp;hl&#x3D;en&amp;biw&#x3D;1536&amp;bih&#x3D;792&amp;ei&#x3D;f3fcY6WTNPCjz7sPuMmpoAQ&amp;ved&#x3D;0ahUKEwjlzqrzrPj8AhXw0XMBHbhkCkQQ4dUDCBA&amp;uact&#x3D;5&amp;oq&#x3D;Jillian+Klaff&amp;gs_lcp&#x3D;Cgxnd3Mtd2l6LXNlcnAQAzILCC4QgAQQxwEQrwEyBQgAEIAEMgYIABAWEB4yBggAEBYQHkoECEEYAEoECEYYAFAAWABgvwNoAHAAeACAAXaIAXaSAQMwLjGYAQCgAQKgAQHAAQE&amp;sclient&#x3D;gws-wiz-serp#lrd&#x3D;0x89e81b78da31818f:0xae16d69bc5ae1298,1,,,,"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.4s"
                            target="_blank"
                            aria-label="GOOGLE"
                          >
                              <span class="lp-i lp-i--google" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.tiktok.com/@jillian.klaff.homes"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.5s"
                            target="_blank"
                            aria-label="TIKTOK"
                          >
                              <span class="lp-i lp-i--tiktok" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.yelp.com/biz/jillian-klaff-homes-westport"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.6s"
                            target="_blank"
                            aria-label="YELP"
                          >
                              <span class="lp-i lp-i--yelp" aria-hidden="true"></span>
                          </a>
                        </li>
                        <li>
                          <a
                            href="https://www.zillow.com/profile/JillianKlaffHomes"
                            class="lp-socials__link socials__item socials__link wow fadeInUp"
                            data-wow-delay="0.7s"
                            target="_blank"
                            aria-label="ZILLOW"
                          >
                              <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
                          </a>
                        </li>
                  </ul>            </div>
          </div>
        </div>
    </div>
</div>

        </footer>

        <div id="modal-global-contact-us" class="modal "
            data-el-id=""
            style="background-color: ;"
            >
            <div class="modal-content">
                <div class="contact-form redesign " style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1920/https://media-production.lp-cdn.com/media/uz6kdmdr2hc4oxiybb7j')">
          <div class="container">
              <div class="section-details" style="--colorTxt: #ffffff">
                  <h2>Contact Details</h2>
                  <div class="info-zone">
        
                          <div class="info-zone_contact type_user">
                                <h4 class="serif">Jillian Klaff</h4>
                                <div class="info-zone_contact_cell">
                                        <i>
                                            <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A"/>
                                            </svg>
                                        </i>
                                    <p class="contact_title">Phone</p>
                                    <a href="tel:(203) 858-2095" class="lp-link info-zone_contact_link link hyperlink-style-2">(203) 858-2095</a>
                                </div>
                                <div class="info-zone_contact_cell">
                                        <i>
                                            <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg">
                                                <path d="M2 0C0.903517 0 0 0.903517 0 2V16.6667C0 17.7631 0.903517 18.6667 2 18.6667H28C29.0965 18.6667 30 17.7631 30 16.6667V2C30 0.903517 29.0965 0 28 0H2ZM2.4375 1.33333H27.5625L15.6458 11.4896C15.3389 11.7512 14.6612 11.7512 14.3542 11.4896L2.4375 1.33333ZM1.33333 2.13542L10.1979 9.6979L1.33333 16.5729V2.13542ZM28.6667 2.13542V16.5729L19.8021 9.6979L28.6667 2.13542ZM11.2396 10.5833L13.4896 12.5C14.3543 13.2369 15.6457 13.2369 16.5104 12.5L18.7604 10.5833L27.4687 17.3333H2.53125L11.2396 10.5833Z" fill="#1A1A1A"/>
                                            </svg>
                                        </i>
                                    <p class="contact_title">Email</p>
                                    <a href="/cdn-cgi/l/email-protection#365c5f5a5a5f5758185d5a5750507655544453575a424f1855595b" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="d0bab9bcbcb9b1befebbbcb1b6b690b3b2a2b5b1bca4a9feb3bfbd">[email&#160;protected]</span></a>
                                </div>
                          </div>
                          <div class="info-zone_contact type_user">
                                <div class="info-zone_contact_cell">
                                        <i>
                                            <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A"/>
                                            </svg>
                                        </i>
                                    <p class="contact_title">Phone</p>
                                    <a href="tel:(203) 227-8424" class="info-zone_contact_link hvr_animation link link--white hyperlink-style-2">(203) 227-8424</a>
                                </div>
                          </div>
                          <div class="info-zone_contact">
                                <div class="info-zone_contact_cell">
                                        <i>
                                            <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
                                                <path d="M29.9821 6.49489C29.7931 6.35756 29.679 6.32046 29.4572 6.39228L20.298 9.41368L16.1952 8.03558L15.8172 9.41525L19.7644 10.7038V28.1462L9.89831 25.7069V22.1034H8.71438V25.7515L1.21616 28.2532V15.3945H0.0322266V29.2729C0.0322266 29.5077 0.130098 29.7279 0.321106 29.8645C0.445418 29.9541 0.585911 29.9999 0.735086 29.9999C0.814804 29.9999 0.890971 29.9868 0.967926 29.96L9.48433 27.029L20.1792 29.7887C20.3224 29.8254 20.4751 29.8171 20.6152 29.7654L29.8104 26.2235C30.0942 26.1177 30.0251 25.8466 30.0251 25.5431V7.08291C30.0251 6.85086 30.17 6.63144 29.9821 6.49489ZM28.8412 25.0388L20.9483 28.0361V10.7065L28.8412 8.08649V25.0388Z" fill="#1A1A1A"/>
                                                <path d="M6.57515 19.1142C6.6671 19.422 6.95006 19.6323 7.2713 19.6323C7.59215 19.6323 7.87511 19.422 7.96746 19.1142C8.67742 16.7514 10.0393 15.2447 11.3559 13.788C12.9944 11.9747 14.5422 10.2615 14.5422 7.2717C14.5422 3.39788 11.1451 0 7.2713 0C3.39827 0 0 3.39748 0 7.2717C0 10.2615 1.54819 11.9747 3.18674 13.788C4.50328 15.2447 5.86479 16.7514 6.57515 19.1142ZM7.2713 1.45426C10.316 1.45426 13.0883 4.22663 13.0883 7.2717C13.0883 9.70191 11.7852 11.1435 10.2769 12.8121C9.2461 13.9534 8.10992 15.2096 7.2713 16.9199C6.43229 15.2096 5.29651 13.953 4.2657 12.8121C2.75698 11.1432 1.45426 9.70191 1.45426 7.2717C1.45426 4.22663 4.22663 1.45426 7.2713 1.45426Z" fill="#1A1A1A"/>
                                                <path d="M7.26193 10.1616C8.8705 10.1616 10.1795 8.86084 10.1795 7.26175C10.1795 5.66305 8.87089 4.3623 7.26193 4.3623C5.65297 4.3623 4.34473 5.66305 4.34473 7.26175C4.34512 8.86084 5.65336 10.1616 7.26193 10.1616ZM7.26193 5.81657C8.06898 5.81657 8.72527 6.46536 8.72527 7.26175C8.72527 8.05932 8.06898 8.70733 7.26193 8.70733C6.45528 8.70733 5.79899 8.05893 5.79899 7.26175C5.79899 6.46536 6.45528 5.81657 7.26193 5.81657Z" fill="#1A1A1A"/>
                                            </svg>
                                        </i>
                                    <p class="info-wrap-contact_title">Address</p>
                                    <p class="info-zone_contact_link pre-line">355 Riverside Ave.
        Westport, CT 06880</p>
                                </div>
                          </div>
                        <div class="info-zone_contact">
                            <div class="info-zone_contact_cell">
                                <p class="pre-line"><div></div><div id="itsj"><div></div></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style></p>
                            </div>
                        </div>
                        <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__contact-column">
                        
                                <li>
                                  <a
                                    href="https://www.facebook.com/JillianKlaffHomesCT"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0s"
                                    target="_blank"
                                    aria-label="FACEBOOK"
                                  >
                                      <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.instagram.com/jillian.klaff.realtor/"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.1s"
                                    target="_blank"
                                    aria-label="INSTAGRAM"
                                  >
                                      <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.linkedin.com/company/jillian-klaff-homes/"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.2s"
                                    target="_blank"
                                    aria-label="LINKEDIN"
                                  >
                                      <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.youtube.com/user/jillianklaffhomes/videos"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.3s"
                                    target="_blank"
                                    aria-label="YOUTUBE"
                                  >
                                      <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.google.com/search?q&#x3D;Jillian+Klaff&amp;hl&#x3D;en&amp;biw&#x3D;1536&amp;bih&#x3D;792&amp;ei&#x3D;f3fcY6WTNPCjz7sPuMmpoAQ&amp;ved&#x3D;0ahUKEwjlzqrzrPj8AhXw0XMBHbhkCkQQ4dUDCBA&amp;uact&#x3D;5&amp;oq&#x3D;Jillian+Klaff&amp;gs_lcp&#x3D;Cgxnd3Mtd2l6LXNlcnAQAzILCC4QgAQQxwEQrwEyBQgAEIAEMgYIABAWEB4yBggAEBYQHkoECEEYAEoECEYYAFAAWABgvwNoAHAAeACAAXaIAXaSAQMwLjGYAQCgAQKgAQHAAQE&amp;sclient&#x3D;gws-wiz-serp#lrd&#x3D;0x89e81b78da31818f:0xae16d69bc5ae1298,1,,,,"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.4s"
                                    target="_blank"
                                    aria-label="GOOGLE"
                                  >
                                      <span class="lp-i lp-i--google" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.tiktok.com/@jillian.klaff.homes"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.5s"
                                    target="_blank"
                                    aria-label="TIKTOK"
                                  >
                                      <span class="lp-i lp-i--tiktok" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.zillow.com/profile/JillianKlaffHomes"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.6s"
                                    target="_blank"
                                    aria-label="ZILLOW"
                                  >
                                      <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
                                  </a>
                                </li>
                                <li>
                                  <a
                                    href="https://www.yelp.com/biz/jillian-klaff-homes-westport"
                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
                                    data-wow-delay="0.7s"
                                    target="_blank"
                                    aria-label="YELP"
                                  >
                                      <span class="lp-i lp-i--yelp" aria-hidden="true"></span>
                                  </a>
                                </li>
                          </ul>          </div>
              </div>
              <div class="section-message">
                  <form data-type="contact-form">
                      <h2>Submit a Message</h2>
                       <div class="h-pot">
                        <label for="-middleName">Middle Name</label>
                        <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
                      </div>
        
        
                      <div class="lp-input-group">
                          <label for="prod-name" class="lp-label">Name</label>
                          <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light">
                      </div>
                      <div class="lp-input-group">
                          <label for="prod-email" class="lp-label">Email</label>
                          <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light">
                      </div>
                      <div class="lp-input-group">
                          <label for="prod-phone" class="lp-label">Phone</label>
                          <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light">
                      </div>
                      <div class="lp-input-group m16">
                          <label for="prod-message" class="lp-label">Message</label>
                          <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea>
                      </div>
        
                      <div class="lp-disclaimer">  <div class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-message'>
              By providing your contact information to Jillian Klaff, your personal
              information will be processed in accordance with Jillian Klaff's
              <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. By
              checking the box(es) below, you consent to receive communications
              regarding your real estate inquiries and related marketing and promotional
              updates in the manner selected by you. For SMS text messages, message
              frequency varies. Message and data rates may apply. You may opt out of
              receiving further communications from Jillian Klaff at any time. To opt
              out of receiving SMS text messages, reply STOP to unsubscribe.
            </span>
          </div>
          <label style='display: none;' for='-termsAccepted'>Opt
            in/Disclaimer Consent:</label>
          <label class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-checkbox'>
              <input
                type='checkbox'
                name='termsAccepted'
                id='-termsAccepted'
                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
                oninput="this.setCustomValidity('')"
                required
                value='Yes, I agree to receive email or phone call communications from Jillian Klaff.'
              />
            </span>
            <span class='lp-tcr-message'>
              Yes, I agree to receive email or phone call communications from
              Jillian Klaff.
            </span>
          </label>
          <label style='display: none;' for='-customConsent'>Opt
            in/Disclaimer Consent:</label>
          <label class='lp-tcr-content' style='margin-bottom: 1em;'>
            <span class='lp-tcr-checkbox'>
              <input
                type='checkbox'
                name='customConsent'
                id='-customConsent'
                value='Yes, I agree to receive SMS text messages from Jillian Klaff.'
              />
            </span>
            <span class='lp-tcr-message'>
              Yes, I agree to receive SMS text messages from Jillian Klaff.
            </span>
          </label>
        
        </div>
                      
                      <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
                      
                      
                      <button type="submit" class="submitButton lp-btn button-style-2">
                          <span class="label-initial">Submit</span>
                          <span class="label-loading">Submitting</span>
                          <span class="label-success">Submitted</span>
                          <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span>
                      </button>
                      <p class="success-message success hide">
                        Message sent successfully!
                      </p>
                  </form>
                  
                  
              </div>
          </div>
        </div>
        
            </div>
            <button class="close lp-close" type="button" aria-label="close modal">
                <span class="lp-close-icon" aria-hidden="true"></span>
            </button>
        </div>
        <div id="qualifying-questions-modal" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="qualifying-questions-modal-title" aria-hidden="true" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1050; display: none; align-items: center; justify-content: center;">
          <style>
            #qualifying-questions-modal .custom-select-toggle {
              border: 1px solid #848484;
              border-radius: 8px;
              padding: 12px 16px;
            }
        
            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
              color: #848484;
            }
        
            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
              color: #848484;
              opacity: 1;
            }
        
            #qualifying-questions-modal .disclaimer-more {
              display: none;
            }
        
            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
              display: inline;
            }
        
            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
              display: none;
            }
          </style>
          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
            function toggleDisclaimerQualifyingQuestionsModal() {
              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
        
              if (disclaimerText.classList.contains('collapsed')) {
                disclaimerText.classList.remove('collapsed');
                toggleButton.textContent = 'Read less';
                toggleButton.setAttribute('aria-expanded', 'true');
              } else {
                disclaimerText.classList.add('collapsed');
                toggleButton.textContent = 'Read more';
                toggleButton.setAttribute('aria-expanded', 'false');
              }
            }
          </script>
          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
              <button type="button" data-dismiss="modal" aria-label="Close" style="position: absolute; right: 20px; top: 10px; font-size: 28px; font-weight: 300; color: black; opacity: 1; background: none; border: none; padding: 0; width: auto; height: auto; cursor: pointer; z-index: 10;">
                <span aria-hidden="true">&times;</span>
              </button>
              <div style="padding: 40px 30px 32px;">
                <div style="text-align: left; margin-bottom: 32px;">
                  <h2 id="qualifying-questions-modal-title" style="margin: 0; color: #333; font-size: 18px; line-height: 1.4; text-transform: uppercase; letter-spacing: 0.5px; font-weight: normal;">
                    Thanks, please provide more information to help serve you
                  </h2>
                </div>
                <form id="qualifying-questions-modal-form" data-type="contact-form">
                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
                  <label for="qualifying-questions-modal-email" style="display:none;">
                    Email
                  </label>
                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
                    Trigger Source
                  </label>
        
                  <div style="margin-bottom: 20px;">
                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
                      Phone Number
                    </label>
                    <input
                      type="tel"
                      id="qualifying-questions-modal-phoneNumber"
                      name="phoneNumber"
                      style="padding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: transparent; color: black; width: 100%; box-sizing: border-box; outline: none;"
                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
                      required
                      placeholder="Phone"
                      aria-label="Phone Number"
                      inputmode="tel"
                      autocomplete="tel"
                      onfocus="this.style.borderColor='black';"
                      onblur="this.style.borderColor='#848484';"
                    />
                  </div>
        
                  <div style="margin-bottom: 20px;">
                    <label for="qualifying-questions-modal-interest" style="display:none;">
                      Interest
                    </label>
                    <select
                      id="qualifying-questions-modal-interest"
                      name="interest"
                      required
                      data-label="Interest"
                      aria-label="Interest"
                      style="padding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: #fff; color: #848484; width: 100%; box-sizing: border-box; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url('data:image/svg+xml;charset=utf8,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Cpath fill=%22%23666%22 d=%22M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z%22/%3E%3C/svg%3E'); background-repeat: no-repeat; background-position: right 16px center; background-size: 16px;"
                      onfocus="this.style.borderColor='black'; this.style.color='black';"
                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
                    >
                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
                      <option value="Other" style="background: #fff; color: black;">Other</option>
                    </select>
                  </div>
        
                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
                    <label class='lp-tcr-content'>
                      <span class='lp-tcr-checkbox'>
                        <input
                          type='checkbox'
                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
                          name='termsAccepted'
                          aria-describedby='qualifying-questions-modal-disclaimer-text'
                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
                          oninput="this.setCustomValidity('')"
                          required
                        /></span>
                      <span class='lp-tcr-message'>
                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
                          
                            I agree to be contacted by
                            <strong>Jillian Klaff</strong>
                            via call, email, and text <span class="disclaimer-more">for real estate services. 
                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
                            You can also click the unsubscribe link in the emails. 
                            Message and data rates may apply. Message frequency may vary.</span>
                            <span class="disclaimer-ellipsis">...</span>
                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
                        </div>
                        <button
                          id="qualifying-questions-modal-toggle-disclaimer"
                          type="button"
                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
                          aria-expanded="false"
                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
                        >
                          Read more
                        </button>
                      </span>
                    </label>
                  </div>
        
                  <div>
                    <button
                      type="submit"
                      style="padding: 12px 24px; font-size: 16px; font-weight: normal; border-radius: 8px; border: 1px solid black; background: black; color: white; width: 100%; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px;"
                      onmouseover="this.style.background='transparent'; this.style.color='black';"
                      onmouseout="this.style.background='black'; this.style.color='white';"
                    >
                      Submit
                    </button>
                  </div>
                </form>
              </div>
            </div>
          </div>
        </div>

    <script>
        (function() {
        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));

        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(video) {
                if (video.isIntersecting) {
                for (var source in video.target.children) {
                    var videoSource = video.target.children[source];
                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
                    videoSource.src = videoSource.dataset.src;
                    }
                }

                video.target.load();
                video.target.classList.remove("lazy");
                lazyVideoObserver.unobserve(video.target);
                }
            });
            });

            lazyVideos.forEach(function(lazyVideo) {
                lazyVideoObserver.observe(lazyVideo);
            });
        }
        })();
    </script>

        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script defer src="https://www.googletagmanager.com/gtag/js"></script>

            <!-- Google Tag Manager -->
            <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
            })(window,document,'script','dataLayer','GTM-K8W5FZF');</script>
            <!-- End Google Tag Manager -->
            <!-- Google Tag Manager -->
            <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
            <!-- End Google Tag Manager -->


        <!-- LP Tracker (divolte.js) - LP Divolte -->
            <script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
        <!-- LP Tracker (eventBus) - LP EventBus -->
            <script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>

    <script>
        window.dataLayer = window.dataLayer || [];
        document.sendGoogleTagManagerEvent = function() {
            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
            if (window.navigator.globalPrivacyControl) {
                return;
            }

            dataLayer.push(arguments);
        }

        document.sendGoogleTagManagerEvent('js', new Date());
            document.sendGoogleTagManagerEvent('config', 'UA-256803933-13', { page: location.pathname, location: location.href });
            document.sendGoogleTagManagerEvent('config', 'G-FQZ5K84HNN', { page: location.pathname, location: location.href });
        document.sendGoogleAnalyticsEvent = function(googleEvent) {
            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
                event_category: googleEvent.eventCategory,
                event_label: googleEvent.eventLabel,
                value: googleEvent.eventValue,
                page: googleEvent.page,
                location: googleEvent.location
            })
        };

        document.addEventListener("DOMContentLoaded", function() {
            (function() {
                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
                var date = new Date();
                var elements = document.getElementsByClassName('auto-year-update');
                var i;
                for (i = 0; i < elements.length; i++) {
                    elements[i].innerText = date.getFullYear();
                }
            })();
            if (window.divolteLp) {
                window.divolteLp('sendLpPageView', {});
            }
            if (window.eventBusLp) {
                window.eventBusLp('sendLpPageView', {});
            }
        });
    </script>


    <script>
    // Function to dynamically load a script
    function loadScript(url, callback) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = url;
        script.defer = true;
        script.async = true;
        script.onload = callback;
        document.head.appendChild(script);
    }

    // Function to dynamically load CSS file
    function loadCSS(url) {
        var link = document.createElement("link");
        link.rel = "stylesheet";
        link.href = url;
        document.head.appendChild(link);
    }

    // Global methods / variables that can be accessed by element js
    window.luxuryPresence = {
        libs: {
            loadJs: loadScript,
            loadCss: loadCSS,
            jsLibsMap: {
                paroller: {
                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
                    isLoaded: false,
                },
                ionRangeSlider: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
                    isLoaded: false,
                    requires: ['jquery'],
                },
                splide: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
                    isLoaded: false,
                },
                wow: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
                    isLoaded: false,
                },
                jquery: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
                    isLoaded: false,
                },
                slick: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
                    isLoaded: false,
                    requires: ['jquery'],
                },
                libphonenumber: {
                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
                    isLoaded: false,
                },
            },
        },
    };
    </script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer" onload="window.luxuryPresence.libs.jsLibsMap.jquery.isLoaded = true"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
    <script defer src="https://cdn.jsdelivr.net/npm/handlebars-intl@1.1.2/dist/handlebars-intl.min.js"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" onload="window.luxuryPresence.libs.jsLibsMap.slick.isLoaded = true"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js" onload="window.luxuryPresence.libs.jsLibsMap.wow.isLoaded = true"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js" onload="window.luxuryPresence.libs.jsLibsMap.ionRangeSlider.isLoaded = true"></script>

    <!-- GOOGLE TRANSLATE SCRIPT -->
    <script>
        function googleTranslateElementInit() {
            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
                translate.innerText = '';
                new google.translate.TranslateElement({
                    pageLanguage: 'en',
                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
                }, translate);
            });
        }
    </script>
    <script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
            <script defer src="https://accounts.google.com/gsi/intermediate"></script>

    <!-- GOOGLE TRANSLATE SCRIPT END-->
    <script>

        // UI helpers
        (function () {

            function getSideMenu () {
                return document.querySelector('body > div.sidemenu');
            }

            function sideMenuHide (instant) {
                var sideMenu = getSideMenu();
                if (!sideMenu || !sideMenu.classList.contains('visible')) {
                  return;
                }
                sideMenu.classList.remove('visible');
                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
            }

            function sideMenuShow () {
                var sideMenu = getSideMenu();
                if (!sideMenu || sideMenu.classList.contains('visible')) {
                  return;
                }
                sideMenu.classList.add('visible');
                sideMenu.dispatchEvent(new Event('lpui-show'));
                window.dispatchEvent(new Event('lpui-sidemenu-show'));
            }

            function sideMenuToggle () {
                var sideMenu = getSideMenu();
                if (!sideMenu) {
                  return;
                }
                var isSideMenuVisible = sideMenu.classList.contains('visible');
                if (isSideMenuVisible) {
                    sideMenuHide();
                } else {
                    sideMenuShow();
                }
            }

            var scrollLockRequests = {};
            window.__debug_scrollLockRequests = scrollLockRequests;
            var hideScrollStyles = ''+
                    'body {'+
                    'overflow: hidden;' +
                    '}';
            var hideScrollId = 'hide-body-scroll-style';

            function scrollLock () {
                var style = document.createElement('style');
                style.id = hideScrollId;
                style.textContent = hideScrollStyles;
                document.head.appendChild(style);
                window.dispatchEvent(new Event('lpui-scroll-locked'));
            }

            function scrollUnlock () {
                document.getElementById(hideScrollId)?.remove();
                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
            }

            function requestScrollLock (lockId) {
                var wasLocked = Object.keys(scrollLockRequests).length > 0;
                scrollLockRequests[lockId || '__anonymous_lock'] = true;
                if (!wasLocked) {
                    scrollLock();
                }
            }

            function releaseScrollLock (lockId) {
                if (lockId) {
                    delete scrollLockRequests[lockId];
                    if (!Object.keys(scrollLockRequests).length) {
                        scrollUnlock();
                    }
                } else {
                    scrollLockRequests = {};
                    window.__debug_scrollLockRequests = scrollLockRequests;
                    scrollUnlock();
                }
            }

            function showModal (modalId, options) {
                var modal = document.getElementById(modalId);
                if (!modal) {
                    return;
                }

                if (!modal.classList.contains('visible')) {
                    modal.classList.add('visible');
                    if (options && options.scrollLock) {
                        window.lpUI.requestScrollLock(modalId);
                    }
                    modal.dispatchEvent(new Event('lpui-show'));
                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
                }

                const visibleModals = document.querySelectorAll('.modal.visible');

                if (visibleModals.length > 1) {

                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
                        const zIndex = window.getComputedStyle(modal).zIndex;
                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
                        return Math.max(maxZIndex, parsedZIndex);
                    }, 0);

                    modal.style.zIndex = maxZIndex + 1;
                }

            }

            function _hideModal (modalEl) {
                if (!modalEl) {
                    return;
                }
                if (!modalEl.classList.contains('visible')) {
                    return;
                }
                modalEl.classList.remove('visible');
                modalEl.style.zIndex = '';
                modalEl.dispatchEvent(new Event('lpui-hide'));
                var modalId = modalEl.getAttribute('id');
                if (modalId) {
                    window.lpUI.releaseScrollLock(modalId);
                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
                }
            }

            function hideModal (modalId) {
                _hideModal(document.getElementById(modalId));
            }

            function hideClosestModal (el) {
              const modal = el?.closest('.modal');
              if (!modal) {
                return;
              }
              if (modal.classList) {
                _hideModal(modal);
                return;
              }
              if (modal.length && modal[0].classList) {
                _hideModal(modal[0]);
              }
            }

            window.lpUI = {
                sideMenuHide: sideMenuHide,
                sideMenuShow: sideMenuShow,
                sideMenuToggle: sideMenuToggle,
                requestScrollLock: requestScrollLock,
                releaseScrollLock: releaseScrollLock,
                showModal: showModal,
                hideModal: hideModal,
                hideClosestModal: hideClosestModal
            }
        })();

        var stringifyPrimitive = function(v) {
            switch (typeof v) {
                case 'string':
                    return v;

                case 'boolean':
                    return v ? 'true' : 'false';

                case 'number':
                    return isFinite(v) ? v : '';

                default:
                    return '';
            }
        };

        function objectToQuerystring(obj, sep, eq, name) {
            // https://github.com/Gozala/querystring/blob/master/encode.js
            sep = sep || '&';
            eq = eq || '=';
            if (obj === null) {
                obj = undefined;
            }

            if (typeof obj === 'object') {
                return Object.keys(obj).map(function(k) {
                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
                    if (Array.isArray(obj[k])) {
                        return obj[k].map(function(v) {
                            return ks + encodeURIComponent(stringifyPrimitive(v));
                        }).join(sep);
                    } else {
                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
                    }
                }).filter(Boolean).join(sep);

            }

            if (!name) return '';
            return encodeURIComponent(stringifyPrimitive(name)) + eq +
                    encodeURIComponent(stringifyPrimitive(obj));
        }

        function getPath(url, options) {
            var parser = document.createElement('a');
            parser.href = url || '';
            var path = parser.pathname || '';
            if (path[0] !== '/') {
              // IE does not return path starting with a slash
              path = '/' + path;
            }

            if (options && options.queryString) {
                path += parser.search;
            }

            return path;
        }

        function getMLSAutocomplete(keyword) {
            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
            var query = {
                kind: 'listings',
                query: keyword
            };

            return superagent
                .get(searchURL)
                .query(query)
                .then(function(res) {
                    var data = res.body || [];
                    /*
                        Of the format:
                          [{
                            "_index": "listing_auto_completes_production_20190723232720775",
                            "_type": "listing_auto_complete",
                            "_id": "235875624",
                            "_score": 0,
                            "status_modified_at": 1553250708,
                            "city": "Jupiter",
                            "price": 1335743,
                            "display_address": "10088 Calabrese Trail Unit: 9 Jupiter FL 33478",
                            "sold_price": null,
                            "id": 235875624,
                            "state": "FL",
                            "photo_urls": [
                              "http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg"
                            ],
                            "status": "Pending"
                          }, ...]
                      */

                    return data;
                });
        }

        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';

            return superagent
                .get(searchURL)
                .query({ kind: 'listings', query: keyword, ...filters })
                .then(function(res) {
                    /*
                        Of the format:
                          [{
                            "_index": "listing_auto_completes_production_20190723232720775",
                            "_type": "listing_auto_complete",
                            "_id": "235875624",
                            "_score": 0,
                            "status_modified_at": 1553250708,
                            "city": "Jupiter",
                            "price": 1335743,
                            "display_address": "10088 Calabrese Trail Unit: 9 Jupiter FL 33478",
                            "sold_price": null,
                            "id": 235875624,
                            "state": "FL",
                            "photo_urls": [
                              "http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg"
                            ],
                            "status": "Pending"
                          }, ...]
                    */
                    return res.body || [];
                });
        }

        function makeMlsLink(data) {
            // Code Dupe from utils/googlePlace
            // mapping of google data type to mls data type
            var mapping = {
                neighborhood: 'neighborhood',
                locality: 'place',
                administrative_area_level_2: 'county',
                administrative_area_level_1: 'state',
                postal_code: 'postalcode',
            };

            function _filterTypes(types) {
                return types.filter(function(type) { return type !== 'political' });
            }

            if (!data || !Object.keys(data).length) {
                return '/home-search/listings';
            }

            var newData = {};
            _filterTypes(data.types).forEach(function(type) {
                if (mapping[type]) {
                    newData.search_type = mapping[type];
                }
            });
            newData.omnibox = data.formatted_address;
            data.address_components.forEach(function(component) {
                _filterTypes(component.types).forEach(function(type) {
                    if (mapping[type]) {
                        newData[mapping[type]] = component.long_name;
                    }
                });
            });
            var bounds = data.geometry.bounds;
            var convertedData = Object.assign(bounds, newData);

            return '/home-search/listings?' + objectToQuerystring(convertedData);
        }

        function debounce(func, wait) {
            let timeout;
            return function(...args) {
                const context = this;
                clearTimeout(timeout);
                timeout = setTimeout(() => func.apply(context, args), wait)
            }
        }

        // Global methods / variables that can be accessed by element js
        window.luxuryPresence = {
            ...window.luxuryPresence,
            defaults: {
                companyId: 'b65b761a-571f-45ab-be60-492e55f0b92d',
                apiGatewayUrl: '/api-gw',
                routerUrl: '/api-nv',
                gql: {"agents":"\n  query Agents (\n    $agentId: ID\n    $agentIds: [ID!]\n    $companyId: String\n    $network: Boolean\n    $networkId: String\n    $officeId: [ID!]\n    $excludeOfficeId: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $tags: [String]\n    $tagsMode: TagsModeEnum\n    $teamId: [ID!]\n    $developmentId: [ID!]\n    $prioritizeIds: Boolean\n  ) {\n    agents (\n      agentId: $agentId\n      agentIds: $agentIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      officeId: $officeId\n      excludeOfficeId: $excludeOfficeId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      tags: $tags\n      tagsMode: $tagsMode\n      teamId: $teamId\n      developmentId: $developmentId\n      prioritizeIds: $prioritizeIds\n    ) {\n      id\n      firstName\n      lastName\n      avatar {\n        smallUrl\n        mediumUrl\n        largeUrl\n        height\n        width\n      }\n      position\n      bioLong\n      bioShort\n      seoTitle\n      seoDescription\n      slug\n      phoneNumber\n      phoneNumber2\n      license\n      email\n      leadAgent\n      greaterArea\n      tags\n    }\n    agentsCount(\n      agentIds: $agentIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      officeId: $officeId\n      excludeOfficeId: $excludeOfficeId\n      search: $search\n      tags: $tags\n      tagsMode: $tagsMode\n      teamId: $teamId\n      developmentId: $developmentId\n      prioritizeIds: $prioritizeIds\n    ) {\n      count\n    }\n  }\n","properties":"\n  query Properties(\n    $agentIds: [ID!]\n    $teamIds: [ID!]\n    $neighborhoodIds: [ID!]\n    $officeIds: [ID!]\n    $propertyId: ID\n    $companyId: String\n    $networkId: String\n    $network: Boolean\n    $statusId: String\n    $propertyIds: [ID!]\n    $prioritizeIds: Boolean\n    $statusIds: [String!]\n    $excludeStatusId: [String!]\n    $neighborhoodId: String\n    $addressState: [String!]\n    $addressCity: [String!]\n    $relatedNeighborhoodPropertyId: String\n    $developmentId: String\n    $featuredListing: Boolean\n    $leaseProperty: Boolean\n    $search: String\n    $searchTermMode: SearchTermModeEnum\n    $globalProperty: Boolean\n    $archived: Boolean\n    $salesPriceGTE: Float\n    $salesPriceLTE: Float\n    $leasePriceGTE: Float\n    $leasePriceLTE: Float\n    $livingSpaceSizeGTE: Float\n    $livingSpaceSizeLTE: Float\n    $bathCountGTE: Float\n    $bathCountLTE: Float\n    $bedroomCountGTE: Float\n    $bedroomCountLTE: Float\n    $architectureStyle: String\n    $lifestyle: String\n    $propertyTypeId: String\n    $propertyTypeIds: [String!]\n    $spaceTypeIds: [ID!]\n    $tag: String\n    $backfillMLSResults: Boolean\n    $displayMLSListings: String\n    $hostname: String\n    $websiteId: ID\n    $backfillProviders: [String!]\n    $backfillMLSListingIds: [String!]\n    $backfillMLSAgentIds: [String!]\n    $backfillMLSOfficeIds: [String!]\n    $backfillBoundary: JSON\n    $openHouse: Boolean\n    $withGeo: Boolean\n    $advancedFilters: JSON\n    $seasonalPriceId: ID\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n  ) {\n    properties(\n      \n      agentIds: $agentIds\n      teamIds: $teamIds\n      propertyId: $propertyId\n      propertyIds: $propertyIds\n      prioritizeIds: $prioritizeIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      statusId: $statusId\n      statusIds: $statusIds\n      excludeStatusId: $excludeStatusId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n      officeIds: $officeIds\n      addressState: $addressState\n      addressCity: $addressCity\n      developmentId: $developmentId\n      featuredListing: $featuredListing\n      leaseProperty: $leaseProperty\n      search: $search\n      searchTermMode: $searchTermMode\n      salesPriceGTE: $salesPriceGTE\n      salesPriceLTE: $salesPriceLTE\n      leasePriceGTE: $leasePriceGTE\n      leasePriceLTE: $leasePriceLTE\n      livingSpaceSizeGTE: $livingSpaceSizeGTE\n      livingSpaceSizeLTE: $livingSpaceSizeLTE\n      bathCountGTE: $bathCountGTE\n      bathCountLTE: $bathCountLTE\n      bedroomCountGTE: $bedroomCountGTE\n      bedroomCountLTE: $bedroomCountLTE\n      architectureStyle: $architectureStyle\n      lifestyle: $lifestyle\n      propertyTypeId: $propertyTypeId\n      propertyTypeIds: $propertyTypeIds\n      spaceTypeIds: $spaceTypeIds\n      tag: $tag\n      archived: $archived\n      globalProperty: $globalProperty\n      withGeo: $withGeo\n      openHouse: $openHouse\n      displayMLSListings: $displayMLSListings\n      advancedFilters: $advancedFilters\n      seasonalPriceId: $seasonalPriceId\n\n      relatedNeighborhoodPropertyId: $relatedNeighborhoodPropertyId\n      backfillMLSResults: $backfillMLSResults\n      hostname: $hostname\n      websiteId: $websiteId\n      backfillProviders: $backfillProviders\n      backfillMLSListingIds: $backfillMLSListingIds\n      backfillMLSAgentIds: $backfillMLSAgentIds\n      backfillMLSOfficeIds: $backfillMLSOfficeIds\n      backfillBoundary: $backfillBoundary\n      offset: $offset\n      limit: $limit\n      sort: $sort,\n      sortDir: $sortDir\n    ){\n      id\n      name\n      status\n      salesPrice\n      reducedPrice\n      isPasswordProtected\n      bedroomCount\n      bathCount\n      fullBathCount\n      halfBathCount\n      threeQuarterBathCount\n      fullAddress\n      addressLine1\n      addressLine2\n      addressCity\n      addressState\n      addressCountry\n      postalCode\n      description\n      syncedAt\n      officeName\n      attributionContact\n      neighborhood {\n        id\n      }\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n      slug\n      fromMLS\n      mlsId\n      mlsLogo\n      mlsAttribution\n      openHouse\n      openHouseHours\n      priceUponRequest\n      privateAddress\n      leaseProperty\n      leasePrice\n      currency\n      leaseTermFrequencyInterval\n      leaseTermFrequencyCount\n      leasePeriod\n      livingSpaceSize\n      livingSpaceUnits\n      lotAreaSize\n      lotAreaUnits\n      tags\n      latitude\n      longitude\n      timeZone\n      buyerAgencyCompensation\n      buyerAgencyCompensationType\n      landIdUrl\n    }\n    propertiesCount(\n    \n      agentIds: $agentIds\n      teamIds: $teamIds\n      propertyId: $propertyId\n      propertyIds: $propertyIds\n      prioritizeIds: $prioritizeIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      statusId: $statusId\n      statusIds: $statusIds\n      excludeStatusId: $excludeStatusId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n      officeIds: $officeIds\n      addressState: $addressState\n      addressCity: $addressCity\n      developmentId: $developmentId\n      featuredListing: $featuredListing\n      leaseProperty: $leaseProperty\n      search: $search\n      searchTermMode: $searchTermMode\n      salesPriceGTE: $salesPriceGTE\n      salesPriceLTE: $salesPriceLTE\n      leasePriceGTE: $leasePriceGTE\n      leasePriceLTE: $leasePriceLTE\n      livingSpaceSizeGTE: $livingSpaceSizeGTE\n      livingSpaceSizeLTE: $livingSpaceSizeLTE\n      bathCountGTE: $bathCountGTE\n      bathCountLTE: $bathCountLTE\n      bedroomCountGTE: $bedroomCountGTE\n      bedroomCountLTE: $bedroomCountLTE\n      architectureStyle: $architectureStyle\n      lifestyle: $lifestyle\n      propertyTypeId: $propertyTypeId\n      propertyTypeIds: $propertyTypeIds\n      spaceTypeIds: $spaceTypeIds\n      tag: $tag\n      archived: $archived\n      globalProperty: $globalProperty\n      withGeo: $withGeo\n      openHouse: $openHouse\n      displayMLSListings: $displayMLSListings\n      advancedFilters: $advancedFilters\n      seasonalPriceId: $seasonalPriceId\n\n    ) {\n      count\n    }\n  }\n","pressReleases":"\n  query PressReleases (\n    $pressReleaseId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $categories: [String!]\n    $propertyId: [String!]\n    $developmentId: [String!]\n    $agentId: [String!]\n    $teamId: [String!]\n  ) {\n    pressReleases (\n      pressReleaseId: $pressReleaseId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      categories: $categories\n      propertyId: $propertyId\n      developmentId: $developmentId\n      agentId: $agentId\n      teamId: $teamId\n    ) {\n      id\n      title\n      description\n      author\n      externalUrl\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      publishedAt\n      categories\n    }\n    pressReleasesCount(\n      companyId: $companyId\n      search: $search\n      categories: $categories\n      propertyId: $propertyId\n      developmentId: $developmentId\n      agentId: $agentId\n      teamId: $teamId\n    ) {\n      count\n    }\n  }\n","posts":"\n  query Posts (\n    $postId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $order: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $featured: Boolean\n    $categoryId: String\n    $categoryIds: [String!]\n    $neighborhoodId: [String!]\n    ) {\n    posts (\n      postId: $postId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      order: $order\n      sortDir: $sortDir\n      search: $search\n      featured: $featured\n      postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n      categoryId: $categoryId\n      categoryIds: $categoryIds\n      neighborhoodId: $neighborhoodId\n    ) {\n      id\n      title\n      subtitle\n      description\n      status\n      featured\n      slug\n      categories {\n        id\n        name\n      }\n      createdAt\n      publishedAt\n      scheduledAt\n      createdBy {\n        firstName\n        lastName\n      }\n      customAuthor\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n      slug\n    }\n    postsCount(\n      companyId: $companyId\n      search: $search\n      featured: $featured\n      postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n      categoryId: $categoryId\n      categoryIds: $categoryIds\n      neighborhoodId: $neighborhoodId\n    ) {\n      count\n    }\n  }\n","testimonials":"\n  query Testimonials(\n    $testimonialId: ID\n    $agentId: ID\n    $teamId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n  ) {\n    testimonials(\n      testimonialId: $testimonialId\n      agentId: $agentId\n      teamId: $teamId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n    ){\n      id\n      body\n      author\n      position\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n      agents {\n        slug\n        email\n        firstName\n        lastName\n        avatar {\n          smallUrl\n          height\n          width\n        }\n      }\n    }\n    testimonialsCount(\n      companyId: $companyId\n      agentId: $agentId\n      teamId: $teamId\n      search: $search\n    ) {\n      count\n    }\n  }\n","neighborhoods":"\n  query Neighborhoods (\n    $neighborhoodId: ID\n    $companyId: String\n    $search: String\n    $tag: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n  ) {\n    neighborhoods (\n      neighborhoodId: $neighborhoodId\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      tags\n      googlePlaceData\n      mlsLink\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n    }\n    neighborhoodsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n    ) {\n      count\n    }\n  }\n","developments":"\n  query Developments (\n    $developmentId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $tag: [String!]\n    $agentId: [ID!]\n    $neighborhoodId: ID\n    $neighborhoodIds: [ID!]\n  ) {\n    developments (\n      developmentId: $developmentId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      googlePlaceData\n      seoTitle\n      seoDescription\n      tags\n    }\n    developmentsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      count\n    }\n  }\n","pois":"\nquery PointsOfInterest(\n  $regionId: String!,\n  $radius: Int,\n  $offset: Int,\n  $limit: Int,\n  $categories: [PoiCategoryEnum!],\n  $sortBy: PoiSortByEnum\n) {\n pois(\n     regionId: $regionId,\n     radius: $radius,\n     offset: $offset,\n     limit: $limit,\n     categories: $categories,\n     sortBy: $sortBy\n ) {\n  name\n  imageUrl\n  url\n  reviewCount\n  rating\n  price\n  displayPhone\n  distance\n  category\n  location {\n      address1\n      address2\n      address3\n      city\n      zipCode\n      country\n      state\n      }\n  }\n }\n","offices":"\n  query Offices (\n    $officeId: ID\n    $officeIds: [ID!]\n    $companyId: String\n    $slug: String\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $tags: [String]\n    $offset: Int\n    $limit: Int\n  ) {\n    offices (\n      officeId: $officeId\n      officeIds: $officeIds\n      companyId: $companyId\n      slug: $slug\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      tags: $tags\n      offset: $offset\n      limit: $limit\n    ) {\n      id\n      companyId\n      name\n      slug\n      officeMlsId\n      shortDescription\n      fullDescription\n      addressLine1\n      addressLine2\n      addressCity\n      addressState\n      addressPostalCode\n      addressCountry\n      phone\n      email\n      officeHours\n      coordinates\n      googlePlaceData \n      seoTitle\n      seoDescription\n      fullAddress\n      media {\n        id\n        originalUrl\n        thumbnailUrl\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n      }\n    }\n    officesCount(\n      companyId: $companyId\n      officeId: $officeId\n      officeIds: $officeIds\n      slug: $slug\n      search: $search\n      tags: $tags\n    ) {\n      count\n    }\n  }\n","teams":"query TeamsAndCount(\n  $offset: Int\n  $limit: Int\n  $search: String\n  $sort: String\n  $sortDir: SortDirectionEnum\n  $companyId: ID\n) {\n  teams(\n    offset: $offset\n    limit: $limit\n    sort: $sort\n    sortDir: $sortDir\n    search: $search\n    companyId: $companyId\n  ) {\n    \n  id\n  companyId\n  name\n  email\n  shortBio\n  fullBio\n  addressLine1\n  addressLine2\n  addressCity\n  addressState\n  addressCountry\n  phoneNumber1\n  phoneNumber2\n  postalCode\n  avatar {\n    id\n    thumbnailUrl\n    smallUrl\n    mediumUrl\n    largeUrl\n  }\n  urlWebsite\n  socialLinks\n  socialLinksArray\n  tags\n  seoTitle\n  seoDesc\n  slug\n  displayOrder\n\n  }\n  teamsCount(\n    search: $search\n    companyId: $companyId\n  ) {\n    count\n  }\n}"},
                propertyPlaceholderImage: {"id":"aae38c5c-ad18-495a-a914-eb962a322edd","alt":null,"bytes":16055,"width":1920,"format":"jpg","height":1200,"shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","smallUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","authorUrl":null,"mediumUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","sourceUrl":null,"xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","__typename":"Media","altTagText":null,"authorName":null,"sourceName":"r2","xxLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","description":null,"displayName":"property-placeholder","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","resourceType":"image","thumbnailUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/ockyyjowtkzkwrgra7al","originalFileName":"Property Placeholder"}
            },
            objectToQuerystring: objectToQuerystring,
            getPath: getPath,
            getMLSAutocomplete: getMLSAutocomplete,
            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
            makeMlsLink: makeMlsLink,
            debounce: debounce,
        };

        var wowOffset = 100;
    </script>
    <script>
        (() => {

function $parcel$interopDefault(a) {
  return a && a.__esModule ? a.default : a;
}
// Entry point for lp-sdk bundle
// This file exists to ensure Parcel v2 outputs the correct filename
/* global window */ var $53de3c160faf5a81$exports = {};
/*
WARNING!!! This file is used both on the server and in client's web-browser
please don't require/import any server-side related config/functions here
If we need something, let's pass it as a parameter of the factory
*/ var $0ce6edea77f7b81a$exports = {};
$0ce6edea77f7b81a$exports = {
    getVideoFirstFrame (videoUrl) {
        // The default Cloudinary asset delivery URL has the following structure: https://res.cloudinary.com/<cloud_name>/<asset_type>/<delivery_type>/<transformations>/<version>/<public_id>.<extension>
        //  https://cloudinary.com/documentation/video_manipulation_and_delivery#transformation_url_structure
        // The problem is that <transformations> and <version> are optional, and <transformations> can be chained separated by '/'
        // One more issue to be handled https://cloudinary.com/documentation/advanced_url_delivery_options#seo_friendly_media_asset_urls
        const CLOUDINARY_URL = 'https://res.cloudinary.com/';
        const invalid = !videoUrl || !videoUrl.startsWith(CLOUDINARY_URL);
        if (invalid) return null;
        const urlComponents = videoUrl.replace(CLOUDINARY_URL, '').replace('f_auto:video', 'f_auto').split('/');
        // checking if <asset_type> is not video or videos
        if (urlComponents[1].toLowerCase().indexOf('video') === -1) return null;
        // Filename is last urlComponent <public_id>.<extension>
        let filename = urlComponents[urlComponents.length - 1];
        if (filename.lastIndexOf('.') > -1) filename = `${filename.slice(0, filename.lastIndexOf('.'))}.jpg`;
        else filename += '.jpg';
        urlComponents[urlComponents.length - 1] = filename;
        // We need to add so_0,eo_0 transformation to the url to target the first frame.
        // we want to find the position at which we want to insert it as a chained transformation
        const firstFrameTransformation = 'so_0,eo_0';
        let firstFrameTransformationPosition = 3;
        // checking cases for SEO-friendly URLs
        if (urlComponents[1].toLowerCase() === 'videos' && urlComponents[2] !== '') firstFrameTransformationPosition = 2;
        // checking the last transformation position in the url
        // https://cloudinary.com/documentation/transformation_reference
        // https://regex101.com/r/lE3W6u/1
        const transformationRegex = /^(?:[a-z]{1,3}|\$\w+)_\S+$/;
        while(firstFrameTransformationPosition < urlComponents.length - 1 && transformationRegex.test(urlComponents[firstFrameTransformationPosition]))firstFrameTransformationPosition++;
        urlComponents.splice(firstFrameTransformationPosition, 0, firstFrameTransformation);
        return CLOUDINARY_URL + urlComponents.join('/');
    }
};


/**
 * Create helpers with given Handlebars instance
 *
 * @param {Object} HandlebarsInstance
 * @param {Function} isEqual - we use different implementation if isEqual on server and on client
 * @return {Object}
 */ function $53de3c160faf5a81$var$handlebarsHelpersFactory(HandlebarsInstance, { isEqual: isEqual }) {
    // notice!: code below assumes list is ordered lowest to highest width
    const MEDIA_SIZES = [
        {
            field: 'thumbnailUrl',
            w: 320
        },
        {
            field: 'smallUrl',
            w: 960
        },
        {
            field: 'mediumUrl',
            w: 1280
        },
        {
            field: 'largeUrl',
            w: 1920
        },
        {
            field: 'xLargeUrl',
            w: 2560
        },
        {
            field: 'xxLargeUrl',
            w: 3456
        }
    ];
    const MEDIA_SIZE_FOR_SRC = 1280;
    const lpFormatNumber = function(number, unit, precision) {
        const localization = 'en-US';
        if (!number) return '';
        if (typeof number === 'string') {
            const trimmed = number.trim();
            if (/[^+\-0-9.]/.test(trimmed)) return number; // returning text 'as is' assuming it already has all formatting
            // eslint-disable-next-line
            number = parseFloat(trimmed);
            if (!number) return '';
        }
        const currencyPrecision = typeof precision === 'number' ? precision : 0;
        const currencyFractionDigits = Number.isInteger(number) ? 0 : currencyPrecision;
        const currencyFractionOptions = {
            minimumFractionDigits: currencyFractionDigits,
            maximumFractionDigits: currencyFractionDigits
        };
        if (unit === 'USD') return `$${number.toLocaleString(localization, currencyFractionOptions)}`;
        if (unit === 'CAD') return `$${number.toLocaleString(localization, currencyFractionOptions)} CAD`;
        if (unit === 'EUR') return `\u{20AC}${number.toLocaleString(localization, currencyFractionOptions)}`;
        if (unit === 'GBP') return `\xa3${number.toLocaleString(localization, currencyFractionOptions)}`;
        if (unit === 'PERCENT') return `${number}%`;
        if (precision && typeof precision === 'number' && number > -1) return number.toLocaleString(localization, {
            maximumFractionDigits: precision
        });
        return number.toLocaleString(localization);
    };
    const formatFrequency = function(freqUnit) {
        switch(freqUnit){
            case 'DAY':
                return 'daily';
            case 'MONTH':
                return 'monthly';
            case 'WEEK':
                return 'weekly';
            case 'YEAR':
                return 'yearly';
            case 'QUARTER':
                return 'quarterly';
            case 'HALF_YEAR':
                return 'semi-annually';
            case 'NIGHTLY':
                return 'nightly';
            case 'SEASONAL':
                return 'seasonally';
            default:
                return '';
        }
    };
    const formatFrequencyShort = function(freqUnit) {
        switch(freqUnit){
            case 'DAY':
                return 'day';
            case 'WEEK':
                return 'wk';
            case 'MONTH':
                return 'mo';
            case 'YEAR':
                return 'yr';
            case 'QUARTER':
                return '3 mos';
            case 'HALF_YEAR':
                return '6 mos';
            case 'NIGHTLY':
                return 'night';
            case 'SEASONAL':
                return 'season';
            default:
                return '';
        }
    };
    const formatFrequencyStd = function(freqUnit) {
        switch(freqUnit){
            case 'DAY':
                return 'day';
            case 'WEEK':
                return 'week';
            case 'MONTH':
                return 'month';
            case 'YEAR':
                return 'year';
            case 'QUARTER':
                return 'quarter';
            case 'HALF_YEAR':
                return '6 months';
            case 'NIGHTLY':
                return 'night';
            case 'SEASONAL':
                return 'season';
            default:
                return '';
        }
    };
    const formatFrequencyExt = function(unit, options) {
        let val;
        let separator;
        const opts = options || {};
        switch(opts.mode){
            case 'short':
                val = formatFrequencyShort(unit);
                separator = opts.frequencySeparator || '/';
                break;
            case 'standard':
            case 'std':
                val = formatFrequencyStd(unit);
                separator = opts.frequencySeparator || '/';
                break;
            case 'long':
            default:
                val = formatFrequency(unit);
                separator = opts.frequencySeparator || ' ';
        }
        if (!val) return '';
        if (!opts.frequencyTag && !opts.frequencyClass) return separator + val;
        return `${separator}<${opts.frequencyTag || 'span'}${opts.frequencyClass ? ` class="${opts.frequencyClass}"` : ''}>${val}</${opts.frequencyTag || 'span'}>`;
    };
    return {
        isEmpty (arg1, options) {
            const result = !arg1 || (typeof arg1 === 'string' ? !arg1.trim() : false) || !Object.keys(arg1).length;
            if (options.fn) return result ? options.fn(this) : options.inverse(this);
            return result;
        },
        ifEquals (arg1, arg2, options) {
            return isEqual(arg1, arg2) ? options.fn(this) : options.inverse(this);
        },
        'raw-helper': function(options) {
            return options.fn();
        },
        striptags (txt) {
            if (!txt) return '';
            // Remove HTML Comments (escaping something to not make real html comment by expression)
            // eslint-disable-next-line no-useless-escape,no-param-reassign
            txt = txt.replace(/<\!--(.|[\r\n])*?-\->/g, '');
            // Remove XML fragments and <style> and <svg> tags with content
            // eslint-disable-next-line
            txt = txt.replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi, '');
            // Replace &nbsp; with space
            // eslint-disable-next-line no-param-reassign
            txt = txt.replace(/&nbsp;/g, ' ');
            // Remove HTML Tags
            const regexp = /<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g;
            return txt.replace(regexp, '');
        },
        striptagsLineBreaks (txt) {
            if (!txt) return '';
            // Remove HTML Comments (escaping something to not make real html comment by expression)
            // eslint-disable-next-line no-useless-escape,no-param-reassign
            txt = txt.replace(/<\!--(.|[\r\n])*?-\->/g, '');
            // Remove XML fragments and <style> and <svg> tags with content
            // eslint-disable-next-line no-param-reassign
            txt = txt.replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi, '');
            // Replace <br> and </p> tags with line break char, skipping last </p> which is not followed by <br> or </p>
            // eslint-disable-next-line no-param-reassign
            txt = txt.replace(/(<br\s*\/?>)|(<\/p\s*>)(?=.*(<\/p\s*>|<br\s*\/?>))/g, '&#10;');
            // Replace &nbsp; with space
            // eslint-disable-next-line no-param-reassign
            txt = txt.replace(/&nbsp;/g, ' ');
            // Remove HTML Tags
            const regexp = /<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g;
            return txt.replace(regexp, '');
        },
        truncate (text, limit, suffix) {
            if (!text) return '';
            if (text.length > limit) return typeof suffix === 'string' ? text.slice(0, limit - suffix.length) + suffix : text.slice(0, limit);
            return text;
        },
        // eslint-disable-next-line
        setSubArray (items = [], start, end, subArrayName, options) {
            // eslint-disable-next-line
            options.data.root[subArrayName] = items.slice(start, end);
        },
        formatAreaUnit (areaUnit) {
            switch(areaUnit){
                case 'ACRE':
                    return 'Acres';
                case 'SQUARE_METER':
                    return 'Sq.M.';
                case 'SQUARE_YARD':
                    return 'Sq.Yd.';
                default:
                    return 'Sq.Ft.';
            }
        },
        formatFrequency: formatFrequency,
        formatFrequencyShort: formatFrequencyShort,
        lpFormatFrequency (freqUnit, options) {
            return formatFrequencyExt(freqUnit, options && options.hash);
        },
        subArray (index, start, end, options) {
            return index >= start && index < end ? options.fn(this) : options.inverse(this);
        },
        formatPropertyStatus (status) {
            let formattedStatus = '';
            switch(status){
                case 'SOLD':
                    formattedStatus = 'Sold';
                    break;
                case 'FOR_SALE':
                    formattedStatus = 'For Sale';
                    break;
                case 'COMING_SOON':
                    formattedStatus = 'Coming Soon';
                    break;
                case 'INACTIVE':
                    formattedStatus = 'Inactive';
                    break;
                case 'POCKET_LISTING':
                    formattedStatus = 'Pocket Listing';
                    break;
                case 'PENDING':
                    formattedStatus = 'Pending';
                    break;
                case 'UNDER_CONTRACT':
                    formattedStatus = 'Under Contract';
                    break;
                case 'ACTIVE_UNDER_CONTRACT':
                    formattedStatus = 'Active Under Contract';
                    break;
                default:
                    formattedStatus = status;
            }
            return formattedStatus;
        },
        formatGrade (gradeValue) {
            switch(gradeValue){
                case 'UNDERGRADUATE_COURSES':
                    return 'Undergrad';
                case 'PRE_KINDERGARTEN':
                    return 'PreK';
                case 'KINDERGARTEN':
                    return 'K';
                case 'FIRST_GRADE':
                    return '1st';
                case 'SECOND_GRADE':
                    return '2nd';
                case 'THIRD_GRADE':
                    return '3rd';
                case 'FOURTH_GRADE':
                    return '4th';
                case 'FIFTH_GRADE':
                    return '5th';
                case 'SIXTH_GRADE':
                    return '6th';
                case 'SEVENTH_GRADE':
                    return '7th';
                case 'EIGHTH_GRADE':
                    return '8th';
                case 'NINTH_GRADE':
                    return '9th';
                case 'TENTH_GRADE':
                    return '10th';
                case 'ELEVENTH_GRADE':
                    return '11th';
                case 'TWELFTH_GRADE':
                    return '12th';
                default:
                    return '';
            }
        },
        encodeURI (uri) {
            return encodeURI(uri);
        },
        encodeURIComponent (txt) {
            return encodeURIComponent(txt);
        },
        hbFormatDate (date, type) {
            const newDate = date === 'current' ? new Date() : new Date(date);
            const months = [
                'January',
                'February',
                'March',
                'April',
                'May',
                'June',
                'July',
                'August',
                'September',
                'October',
                'November',
                'December'
            ];
            if (type === 'YYYY' || type === 'year') return `${newDate.getFullYear()}`;
            if (type === 'MM/DD/YY') {
                let month = newDate.getMonth() + 1;
                if (month < 10) month = `0${month.toString()}`;
                return `${month}/${newDate.getDate()}/${newDate.getFullYear().toString().substr(-2)}`;
            }
            return `${months[newDate.getMonth()]} ${newDate.getDate()}, ${newDate.getFullYear()}`;
        },
        openHousesFormat (startDate, endDate, timeZone) {
            if (!startDate || !endDate) return '';
            /**
       * return formatted time.
       * @param {date} date
       * @return {time} time.
       */ const getTime = (date)=>{
                let hours = date.getHours();
                if (hours > 12) hours -= 12;
                const prefix = '0';
                let time = `${hours}:${date.getMinutes() > 9 ? date.getMinutes() : prefix + date.getMinutes()}`;
                if (date.getHours() > 11) time += 'PM';
                else time += 'AM';
                return time;
            };
            let tz = '';
            let startFDate = startDate;
            let endFDate = endDate;
            if (timeZone) {
                startFDate = new Date(startDate).toLocaleString('en-US', {
                    timeZone: timeZone
                });
                endFDate = new Date(endDate).toLocaleString('en-US', {
                    timeZone: timeZone
                });
                [, , , tz] = new Date(endDate).toLocaleString('en-US', {
                    timeZone: timeZone,
                    timeZoneName: 'short'
                }).split(' ');
            }
            const date = new Date(startFDate);
            const openHouseDate = date.toLocaleDateString('en-US');
            const time1 = getTime(date);
            const date2 = new Date(endFDate);
            const time2 = getTime(date2);
            return `${openHouseDate} ${time1} - ${time2} ${tz}`;
        },
        math (lvalue, operator, rvalue) {
            // eslint-disable-next-line
            lvalue = parseFloat(lvalue);
            // eslint-disable-next-line
            rvalue = parseFloat(rvalue);
            return ({
                '+': lvalue + rvalue,
                '-': lvalue - rvalue,
                '*': lvalue * rvalue,
                '/': lvalue / rvalue,
                '%': lvalue % rvalue
            })[operator];
        },
        findByKey (values, key, value, options) {
            const result = (values || []).find((entry)=>entry[key] === value);
            return options.fn(result);
        },
        capitalize (string, split, options) {
            let capitalized;
            if (typeof string === 'string' && string.length) capitalized = string.toLowerCase().split(split).map((w)=>w.charAt(0).toUpperCase() + w.slice(1)).join(' ').toString();
            return capitalized;
        },
        and (...arg) {
            return Array.prototype.slice.call(arg).every(Boolean);
        },
        or (...arg) {
            return Array.prototype.slice.call(arg, 0, -1).some(Boolean);
        },
        not (arg) {
            return !arg;
        },
        orderByIds (items, orderedIds, options) {
            let ret = '';
            let data = null;
            if (options.data) data = HandlebarsInstance.createFrame(options.data);
            // When passed orderedIds, filter out empty items including empty strings and
            // only show items (and in that order) in a loop
            //  If no orderedIds provided, show all items
            const filteredIds = (orderedIds || []).filter(Boolean);
            if (filteredIds && filteredIds.length) {
                let skippedItems = 0;
                ret = filteredIds.reduce((res, id, idx)=>{
                    const item = (items || []).find((item)=>item.id === id);
                    // ID doesn't exist so ditch it
                    if (!item) {
                        skippedItems += 1;
                        return res;
                    }
                    if (data) data.index = idx - skippedItems;
                    return res + options.fn(item, {
                        data: data
                    });
                }, '');
            } else for(let i = 0, j = (items || []).length; i < j; i++){
                if (data) data.index = i;
                ret += options.fn(items[i], {
                    data: data
                });
            }
            return ret;
        },
        ifIn (elem, list, options) {
            if (list && list.indexOf(elem) > -1) return options.fn(this);
            return options.inverse(this);
        },
        partial (name, options) {
            // Register a partial and output the content in a script for clientside rendering
            HandlebarsInstance.registerPartial(name, HandlebarsInstance.compile(options.fn()));
            // eslint-disable-next-line
            const script = `<script type="text/x-handlebars-template" class="${name} pagination-script">${options.fn()}</${'script'}>`;
            return script;
        },
        numCompare (l, r, operator, options) {
            const operators = {
                '==': function(l, r) {
                    // eslint-disable-next-line
                    return l == r;
                },
                '===': function(l, r) {
                    return l === r;
                },
                '!=': function(l, r) {
                    // eslint-disable-next-line
                    return l != r;
                },
                '<': function(l, r) {
                    return l < r;
                },
                '>': function(l, r) {
                    return l > r;
                },
                '<=': function(l, r) {
                    return l <= r;
                },
                '>=': function(l, r) {
                    return l >= r;
                }
            };
            const result = operators[operator](l, r);
            if (result) return options.fn ? options.fn(this) : true;
            return options.fn ? options.inverse(this) : false;
        },
        lpFormatNumber: lpFormatNumber,
        arrayToHtmlList (arr, options) {
            // eslint-disable-next-line
            return arr.reduce((acc, current)=>{
                try {
                    if (typeof current === 'object' || current === null) return acc;
                    // eslint-disable-next-line
                    return acc += `<li>${current}</li>`;
                } catch (e) {
                /* empty */ }
            }, '');
        },
        join (array, separator, options) {
            if (!array || !array.join) return '';
            return array.join(typeof separator === 'string' ? separator : ', ');
        },
        dedupe (items, key, options) {
            let data = null;
            let skippedItems = 0;
            const list = new Set();
            if (options.data) data = HandlebarsInstance.createFrame(options.data);
            return (items || []).reduce((res, item, idx)=>{
                const val = key ? item[key] : item;
                // Item is unique if we're passed a key that is not defined
                const isUnique = !list.has(val) || key && val === undefined;
                if (isUnique) list.add(val);
                else {
                    skippedItems += 1;
                    return res;
                }
                if (data) data.index = idx - skippedItems;
                return res + options.fn(item, {
                    data: data
                });
            }, '');
        },
        JSONstringify (obj, options) {
            return JSON.stringify(obj);
        },
        // eslint-disable-next-line sonarjs/cognitive-complexity
        formatPropertyPrice (...args) {
            const options = args[args.length - 1];
            const opts = options.hash;
            const property = args.length > 1 ? args[0] : opts.property;
            const precision = opts.precision || 0;
            if (args.length > 2) // eslint-disable-next-line
            opts.mode = args[1];
            if (!opts.mode) opts.mode = 'short';
            let separator = args.length > 3 ? args[2] : opts.separator;
            if (typeof separator !== 'string') separator = ' | ';
            if (property.isPasswordProtected) return 'Exclusive Listing';
            let priceUponRequestText = args.length > 4 ? args[3] : opts.priceUponRequestText;
            if (typeof priceUponRequestText !== 'string') priceUponRequestText = 'Price Upon Request';
            if (property.priceUponRequest) return priceUponRequestText;
            let price = property.salesPrice;
            let reduced = null;
            // eslint-disable-next-line sonarjs/no-collapsible-if
            if (property.status !== 'SOLD' && property.status !== 'Leased') {
                if (property.reducedPrice) {
                    if (!opts.reducedClass) price = property.reducedPrice;
                    else reduced = property.reducedPrice;
                }
            }
            let result = '';
            if (reduced) result += `<${opts.reducedTag || 'span'} class="${opts.reducedClass}">${lpFormatNumber(reduced, property.currency, precision)}</${opts.reducedTag || 'span'}>`;
            if (price) {
                price = lpFormatNumber(price, property.currency, precision);
                if (opts.priceTag || opts.priceClass) result += `<${opts.priceTag || 'span'}${opts.priceClass ? ` class="${opts.priceClass}"` : ''}>${price}</${opts.priceTag || 'span'}>`;
                else result += price;
            }
            const leasePrice = property.leasePrice && lpFormatNumber(property.leasePrice, property.currency, precision);
            if (leasePrice) {
                if (result) result += separator;
                const leaseText = `${leasePrice}${formatFrequencyExt(property.leasePeriod, opts)}`;
                if (opts.leaseTag || opts.leaseClass) result += `<${opts.leaseTag || 'span'}${opts.leaseClass ? ` class="${opts.leaseClass}"` : ''}>${leaseText}</${opts.leaseTag || 'span'}>`;
                else result += leaseText;
            }
            return new HandlebarsInstance.SafeString(result);
        },
        // eslint-disable-next-line sonarjs/cognitive-complexity
        mediaImage (mediaSource, options = {}) {
            if (!mediaSource) return;
            const { lazy: lazy, ...attributes } = options.hash;
            let src = '';
            let srcset = '';
            if (typeof mediaSource === 'string') src = mediaSource;
            else {
                const srcMap = {};
                const { height: height, width: width, altTagText: altTagText } = mediaSource;
                MEDIA_SIZES.forEach((src)=>{
                    if (mediaSource[src.field] && !srcMap[mediaSource[src.field]]) srcMap[mediaSource[src.field]] = src.w;
                });
                const srcs = Object.keys(srcMap);
                if (!srcs.length) return;
                if (altTagText) attributes.alt = altTagText;
                if (height && width) {
                    if (height >= width) {
                        if (attributes.class) attributes.class += ' portrait';
                        else attributes.class = 'portrait';
                    }
                    if ('setDims' in options.hash) {
                        attributes.width = width;
                        attributes.height = height;
                    }
                }
                if (srcs.length > 1 && width && width < srcMap[srcs[srcs.length - 1]]) {
                    const maxSrc = srcs.findIndex((src)=>srcMap[src] >= width);
                    srcs.splice(maxSrc + 1);
                    srcMap[srcs[srcs.length - 1]] = width;
                }
                if (srcs.length > 1) {
                    srcset = srcs.map((s)=>`${s} ${srcMap[s]}w`).join(', ');
                    srcs.sort((a, b)=>Math.abs(srcMap[a] - MEDIA_SIZE_FOR_SRC) - Math.abs(srcMap[b] - MEDIA_SIZE_FOR_SRC));
                }
                // eslint-disable-next-line
                src = srcs[0];
            }
            delete attributes.setDims;
            if (!srcset) delete attributes.sizes;
            if (!('alt' in attributes)) attributes.alt = '';
            if (!('loading' in attributes) && (options?.data?.root?.sectionIndex > 1 || lazy)) attributes.loading = 'lazy';
            const attrs = Object.keys(attributes).map((k)=>`${HandlebarsInstance.escapeExpression(k)}="${HandlebarsInstance.escapeExpression(attributes[k])}"`).join(' ');
            return new HandlebarsInstance.SafeString(// eslint-disable-next-line sonarjs/no-nested-template-literals
            `<img src="${src}"${srcset ? ` srcset="${srcset}"` : ''}${attrs ? ` ${attrs}` : ''}>`);
        },
        bgImage (mediaSource) {
            if (!mediaSource) return '';
            if (typeof mediaSource === 'string') return mediaSource;
            return mediaSource.largeUrl || mediaSource.url || '';
        },
        concat (...rest) {
            let outStr = '';
            // rest params are Array instances while arguments object is not
            for(const arg in rest)if (rest[arg] !== null && rest[arg] !== undefined && typeof rest[arg] !== 'object') outStr += rest[arg];
            return outStr;
        },
        setVideoExtension (uri, format) {
            if (!uri || !format) return '';
            const decodedUri = new URL(uri);
            if (decodedUri.host !== 'res.cloudinary.com') {
                // Not a cloudinary uri, do not rewrite
                if (decodedUri.pathname.endsWith(`.${format}`)) return uri;
                return '';
            }
            // Rewrite the cloudinary uri
            const lastPeriodIdx = decodedUri.pathname.lastIndexOf('.');
            let pathWithoutFormat = decodedUri.pathname;
            if (lastPeriodIdx !== -1) pathWithoutFormat = decodedUri.pathname.substr(0, lastPeriodIdx);
            decodedUri.pathname = `${pathWithoutFormat}.${format}`;
            return decodedUri.toString();
        },
        addVideoSources (uri) {
            if (!uri) return '';
            const VIDEO_VARIANTS = [
                {
                    format: 'webm',
                    codec: 'vp9',
                    htmlCodecs: ';codecs=vp9'
                },
                {
                    format: 'mp4',
                    codec: 'h265',
                    htmlCodecs: ';codecs=hvc1'
                },
                {
                    format: 'mp4',
                    codec: 'h264',
                    htmlCodecs: ''
                }
            ];
            const VIDEO_EXT_REGEXP = /\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/;
            if (!uri.includes('res.cloudinary.com')) // keep existing or no extension for non Cloudinary urls
            return `<source data-src="${uri}">`;
            const uriNoExt = uri.replace(VIDEO_EXT_REGEXP, '');
            const sources = VIDEO_VARIANTS.map((type)=>{
                const cloudinaryFormatUrl = `${uriNoExt.replace(/f_auto(?::video)?/, `f_${type.format},vc_${type.codec}`)}.${type.format}`;
                return `<source data-src="${cloudinaryFormatUrl}" type="video/${type.format}${type.htmlCodecs}">`;
            });
            return sources.join('\n');
        },
        cloudinaryVideoFirstFrame: $0ce6edea77f7b81a$exports.getVideoFirstFrame,
        initials (text, options) {
            if (!text) return '';
            if (options?.hash?.endChar) // eslint-disable-next-line
            text = text.split(options.hash.endChar)[0];
            // eslint-disable-next-line
            const maxChars = +options?.hash?.maxChars || 2; // we do not allow this to be 0
            let result = text.match(/\b\w/g)?.slice(0, maxChars);
            if (!result) return '';
            if (options?.hash?.addText) result = result.map((item)=>item + options.hash.addText);
            return result.join(options?.hash?.joinWith || '').toUpperCase();
        },
        normalizePhone (phone) {
            if (!phone) return '';
            const str = String(phone).trim();
            return (str.startsWith('+') ? '+' : '') + str.replace(/\D/g, '');
        }
    };
}
$53de3c160faf5a81$exports = $53de3c160faf5a81$var$handlebarsHelpersFactory;


/* global window, document */ // eslint-disable-next-line import/prefer-default-export
class $dc851cf3939b6ef5$export$ff0712c26d5458f7 {
    /**
   * Initialize Modal Controller
   * @param {Object} options
   */ constructor(options){
        this.isBuilder = false;
        this.companyId = null;
        this.websiteId = null;
        this.pageId = null;
        this.shareId = null;
        this.pageMeta = null;
        this.websiteApiGatewayUrl = null;
        this.buyerSellerServiceUrl = null;
        this.leadIngesterUrl = null;
        this.divolteServiceUrl = null;
        this.eventBus = null;
        this.templateId = null;
        this.myhomeDashboardEnabled = false;
        this.googleMapsAPIKey = null;
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {}
    /**
   * Set page and supporting data
   * @param {string} pageId
   * @param {Object} options
   */ setPage(pageId, options = {}) {
        this.pageId = pageId;
        this.shareId = options.shareId || null;
        this.pageMeta = {
            sourceResource: options.sourceResource,
            pageElementId: options.pageElementId,
            pageQueryVariables: options.pageQueryVariables || {}
        };
    }
    /**
   * Sets if we are in pagebuilder context or not
   * @param {boolean} isBuilder
   */ setIsBuilder(isBuilder) {
        this.isBuilder = isBuilder;
    }
    /**
   * Set Company and supporting data
   * @param {string} companyId
   * @param {Object} options
   */ setCompany(companyId, options = {}) {
        this.companyId = companyId;
    }
    /**
   * Set website and supporting data
   * @param {string} websiteId
   * @param {Object} options
   */ setWebsite(websiteId, options = {}) {
        this.websiteId = websiteId;
        if (options.myhomeDashboardEnabled) this.myhomeDashboardEnabled = options.myhomeDashboardEnabled;
    }
    /**
   * Set websiteApiGatewayUrl
   * @param {string} websiteApiGatewayUrl
   * @param {Object} options
   */ setWebsiteApiGatewayUrl(websiteApiGatewayUrl, options = {}) {
        this.websiteApiGatewayUrl = websiteApiGatewayUrl;
    }
    /**
   * Set buyerSellerServiceUrl
   * @param {string} buyerSellerServiceUrl
   * @param {Object} options
   */ setBuyerSellerServiceUrl(buyerSellerServiceUrl, options = {}) {
        this.buyerSellerServiceUrl = buyerSellerServiceUrl;
    }
    /**
   * Set divolteServiceUrl and supporting data
   * @param {string} divolteServiceUrl
   * @param {Object} options
   */ setDivolteServiceUrl(divolteServiceUrl, options = {}) {
        this.divolteServiceUrl = divolteServiceUrl;
    }
    /**
   * Set eventBusUrl
   * @param {string} eventBusUrl
   * @param {Object} options
   */ setEventBusUrl(eventBusUrl, options = {}) {
        this.eventBusUrl = eventBusUrl;
    }
    /**
   * Set templateId and supporting data
   * @param {string} templateId
   * @param {Object} options
   */ setTemplateId(templateId, options = {}) {
        this.templateId = templateId;
    }
    /**
   * Set leadIngesterUrl
   * @param {string} leadIngesterUrl
   * @param {Object} options
   */ setLeadIngesterUrl(leadIngesterUrl, options = {}) {
        this.leadIngesterUrl = leadIngesterUrl;
    }
    /**
   * Set googleMapsAPIKey
   * @param {string} googleMapsAPIKey
   * @param {Object} options
   */ setGoogleMapsAPIKey(googleMapsAPIKey, options = {}) {
        this.googleMapsAPIKey = googleMapsAPIKey;
    }
    /**
   * Set eventBus
   * @param {Object} options
   */ setEventBus({ enabled: enabled, apiKey: apiKey, url: url }) {
        this.eventBus = {
            enabled: enabled,
            apiKey: apiKey,
            url: url
        };
    }
}


/* eslint-disable import/prefer-default-export */ // eslint-disable-next-line import/prefer-default-export
class $7c391e2f7931d60d$export$3b5bd9381a52554c {
    /**
   * Initialize Base Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        // TODO: Listen for events from configController to update configuration
        this.config = config;
        this.window = window;
        this.document = document;
        if (!this.destroy) // With turbolinks, we want to ensure that on each page load we have the latest version of the sdk
        //  Controllers are deconstructed and replaced (on the window object) per request
        //  Controllers must use the destory method to remove event handlers to prevent undefined behavior
        throw new Error('Controllers must implement a deconstructor');
    }
}


// eslint-disable-next-line import/prefer-default-export
const $a3e97e89bbc2a366$export$f037eeffb5561205 = 2000;


class $0ead03fdb95fa9ce$export$d507f25e63650365 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Modal Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.setLoginState = this.setLoginState.bind(this);
        this.pageId = null;
        this.modals = [];
        this.exitModalTriggered = {};
        this.exitModalEventListeners = [];
    }
    /**
   * Initialize Modal Controller at run time
   * Attach handlers and events to DOM
   * @param {Object} options
   */ initialize(options) {
        try {
            const { config: config, document: document } = this;
            this.pageId = config.pageId;
            this.modals = document.querySelectorAll('body > #modals > .modal');
            options.modals.forEach((m)=>{
                this._attachModalHandler(m);
            });
        } catch (e) {
            // eslint-disable-next-line no-console
            console.log(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        const { document: document } = this;
        this.exitModalEventListeners.forEach((listener)=>{
            document.removeEventListener('mouseout', listener);
        });
        this.modals = [];
        this.exitModalTriggered = {};
        this.exitModalEventListeners = [];
    }
    /**
   * Set modal to local storage with expiration
   * @param {string} modalId
   */ setModalWithExpiry(modalId) {
        const { window: window } = this;
        const TTL = 86400000; // 24 hours
        const now = new Date();
        const expiry = now.getTime() + TTL;
        const key = `modal-controller-${modalId}`;
        try {
            window.localStorage.setItem(key, JSON.stringify(expiry));
        } catch (err) {
        // catch error when setting item to storage on iOS private browser
        }
    }
    /**
   * Save success login modal to local storage
   */ setLoginState() {
        const { window: window } = this;
        try {
            window.localStorage.setItem('isSignedUp', 'true');
        } catch (err) {
        // catch error when setting item to storage on iOS private browser
        }
    }
    /**
   * Get modal and check expiration
   * @param {string} modalId
   * @return {boolean}
   */ getModalWithExpiry(modalId) {
        const { window: window } = this;
        const storage = window.localStorage;
        const expirationTime = storage.getItem(`modal-controller-${modalId}`);
        if (!expirationTime) return false;
        const expiry = JSON.parse(expirationTime);
        const now = new Date();
        if (now.getTime() > expiry) {
            storage.removeItem(`modal-controller-${modalId}`);
            return false;
        }
        return true;
    }
    /**
   * Make a modal visible
   * @param {string} modalId
   * @param {Object} options
   */ show(modalId, options = {}) {
        // TODO: migrate logic from page.handlebars
        const { window: window } = this;
        const modalViewed = this.getModalWithExpiry(modalId);
        // Only show a modal if it has not been seen
        // Does not affect "show modal on button click"
        if (modalId && !modalViewed || options.forced === true) {
            window.lpUI.showModal(`modal-${modalId}`, options);
            this.setModalWithExpiry(modalId);
        }
    }
    /**
   * Attach events based on Modal type and page settings
   * @param {Modal} modal
   */ _attachModalHandler(modal) {
        const { pageId: pageId } = this;
        const { trigger: trigger, pageSpecific: pageSpecific } = modal;
        if (pageSpecific) {
            const pageIds = modal.pages.map((p)=>p.pageId);
            if (!pageIds.includes(pageId)) // Modal does not belong to this page
            return;
        }
        if (trigger === 'EXIT') this._exitModalHandler(modal);
        else if (trigger === 'TIMER') this._timerModalHandler(modal);
        else if (trigger === 'FORCED') this._forcedModalHandler(modal);
    }
    /**
   * Attach events for exit Modals
   * @param {Modal} modal
   */ _exitModalHandler(modal) {
        // eslint-disable-next-line
        const that = this;
        const { document: document, exitModalTriggered: exitModalTriggered } = this;
        const { modalId: modalId } = modal;
        /**
     * Handle the mouseout dom event
     * @param {Event} event
     */ function triggerExitModal(event) {
            if (exitModalTriggered[modalId]) return;
            if (!event.toElement && !event.relatedTarget) {
                that.show(modalId);
                exitModalTriggered[modalId] = true;
            }
        }
        document.addEventListener('mouseout', triggerExitModal);
        this.exitModalEventListeners.push(triggerExitModal);
    }
    /**
   * Attach events for timer Modals
   * @param {Modal} modal
   */ _timerModalHandler(modal) {
        const { modalId: modalId, timerDelay: timerDelay } = modal;
        setTimeout(()=>{
            this.show(modalId);
        }, timerDelay);
    }
    /**
   * Attach events for Forced Modals
   * @param {Modal} modal
   */ _forcedModalHandler(modal) {
        const { modalId: modalId } = modal;
        const { window: window, document: document } = this;
        const isLoggedIn = window.localStorage.getItem('isSignedUp') === 'true';
        if (!isLoggedIn) {
            // watch for event triggering success login
            const forcedModal = document.querySelector(`#modal-${modalId}`);
            const contactForm = forcedModal?.querySelector('form');
            const MODAL_CLOSE_DELAY = contactForm?.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205);
            // form submit autoclose is handled by contactForms controller
            contactForm.addEventListener('formsubmitted', ()=>{
                this.setLoginState();
            });
            window.addEventListener('oauthSuccess', ()=>{
                this.setLoginState();
                contactForm.classList.add('success');
                setTimeout(()=>{
                    window.lpUI.hideModal(`modal-${modalId}`);
                    contactForm.reset();
                    contactForm.classList.remove('success');
                }, MODAL_CLOSE_DELAY);
            });
            this.show(modalId, {
                forced: true
            });
        }
    }
}


/* eslint-disable import/prefer-default-export */ /* global window */ /* eslint-disable import/prefer-default-export */ /**
 * Handle navigation push
 * @param {string} href
 * @param {boolean} _blank
 */ const $fc0a058ae42af628$export$95e8d77caafa3e06 = (href, _blank = false)=>{
    if (!href) return;
    if (_blank) {
        window.open(href);
        return;
    }
    window.location.assign(href);
};
const $fc0a058ae42af628$export$267a1435fe18b8d4 = (obj, path, defValue)=>{
    if (!path) return undefined;
    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
    const result = pathArray.reduce((prevObj, key)=>prevObj && prevObj[key], obj);
    return result === undefined ? defValue : result;
};



class $d48f9f944810f613$export$ca3218b7861b9cb0 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Button Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this._boundClickHandler = this._buttonClickHandler.bind(this);
    }
    /**
   * Initialize Button Controller at run time
   * Attach handlers and events to DOM
   * @param {Object} options
   */ initialize(options = {}) {
        try {
            const { document: document } = this;
            document.body.removeEventListener('click', this._boundClickHandler);
            document.body.addEventListener('click', this._boundClickHandler);
        } catch (e) {
            // eslint-disable-next-line no-console
            console.error(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        const { document: document } = this;
        document.body.removeEventListener('click', this._boundClickHandler);
    }
    /**
   * Buttons click handler
   * @param {event} e
   */ _buttonClickHandler(e) {
        this._handleButtonClick(e).catch((e)=>console.error(e));
    }
    /**
   * Handle button click
   * We need special function to have easy way to detach listener
   * @param {Event} e
   */ async _handleButtonClick(e) {
        const { window: window, document: document } = this;
        const button = e.target.closest('button, a');
        if (!button) return;
        const type = button.dataset.type || '';
        const href = button.href || button.dataset.href || '';
        const target = button.target || '';
        const { submit: submit } = button.dataset;
        if (submit) {
            try {
                await this._handleSubmit(button);
            } catch (err) {
                // eslint-disable-next-line no-console
                console.error(err);
            }
            (0, $fc0a058ae42af628$export$95e8d77caafa3e06)(href, target === '_blank');
        }
        this._trackConversion(button);
        if (type === 'VIDEO') {
            this._handleVideoButton(button);
            return;
        }
        if (type === 'CONTACT_US') {
            this._handleContactUsButton(button);
            return;
        }
        if (type === 'SUBSCRIBE') {
            // TODO: Extend for an overwritten subscribe
            window.lpUI.showModal('modal-global-subscribe');
            return;
        }
        if (type === 'MY_ACCOUNT') {
            // TODO: Extend for an overwritten subscribe
            window.lpUI.showModal('modal-global-my-account');
            return;
        }
        if (type === 'SHARE_POPUP') {
            // TODO: Extend for an overwritten subscribe
            const sharePopup = button.querySelector('.share-popup');
            if (sharePopup) sharePopup.style.display = 'flex';
            e.stopPropagation(); // this may not work in current 'delegate' mode
            return;
        }
        // Custom modals
        if (type.substring(0, 6) === 'MODAL_') {
            const modalId = type.substring(6);
            window.lpUI.showModal(`modal-${modalId}`);
            return;
        }
        // MAILTO / TEL Event
        if (href?.startsWith('mailto:')) {
            const email = href.substring(7);
            // TODO: Replace with SDK method
            document.sendGoogleAnalyticsEvent({
                hitType: 'event',
                eventCategory: 'button',
                eventAction: 'click',
                eventLabel: 'Email',
                eventValue: email
            });
        } else if (href?.startsWith('tel:')) {
            const phoneNumber = href.substring(4);
            // TODO: Replace with SDK method
            document.sendGoogleAnalyticsEvent({
                hitType: 'event',
                eventCategory: 'button',
                eventAction: 'click',
                eventLabel: 'Phone',
                eventValue: phoneNumber
            });
        }
    }
    /**
   * Handle submit
   * @param {HTMLButtonElement|HTMLAnchorElement} button
   */ async _handleSubmit(button) {
        const form = button.closest('form');
        const { window: window } = this;
        if (form) return await window.luxuryPresence.contactForms.submitForm(form);
        return null;
    }
    _getVimeoSrc(link) {
        if (!link || !link.includes('vimeo.com') || link.length > 2000) return null;
        const matchResult = link.match(/(?:(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player.vimeo.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);
        if (!matchResult) return null;
        const [, vimeoId, vimeoHashParameter] = matchResult;
        let src = `https://player.vimeo.com/video/${vimeoId}?`;
        if (vimeoHashParameter) src += `h=${vimeoHashParameter}&`;
        src += 'autoplay=1';
        return src;
    }
    /**
   * Handle type video click
   * @param {HTMLElement} button
   */ // eslint-disable-next-line sonarjs/cognitive-complexity
    _handleVideoButton(button) {
        const { document: document } = this;
        const section = button.closest('section');
        // Embed youtube/vimeo video url
        let { src: src } = button.dataset;
        let youtubeId = '';
        if (src && (src.includes('youtube.com') || src.includes('youtu.be')) && !src.includes('youtube.com/embed')) {
            // test link: https://regexr.com/3anm9
            const youtubeRegex = /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=))|youtu.be\/)([a-zA-Z0-9_-]{6,11})/;
            const youtubeResult = src.match(youtubeRegex);
            // eslint-disable-next-line
            if (youtubeResult) youtubeId = youtubeResult[1];
        }
        const vimeoSrc = this._getVimeoSrc(src);
        if (youtubeId) src = `https://youtube.com/embed/${youtubeId}?autoplay=1&controls=0`;
        else if (vimeoSrc) src = vimeoSrc;
        if (!src || !section) return;
        const isVideoFile = src.endsWith('.mp4') || src.endsWith('.webm') || src.includes('cloudinary.com');
        const modalHtml = `
      <div id="modal-${section.id}" class="modal visible">
        <div class="modal-content">
          <div class="lightbox-video">
            <div class="video-player">
              <div class="embed-container">
                ${isVideoFile ? `<video controls autoplay src="${src}"></video>` : `<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${src}"></iframe>`}
              </div>
            </div>
          </div>
        </div>
        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
      </div>
    `;
        document.body.insertAdjacentHTML('beforeend', modalHtml);
        const modal = document.getElementById(`modal-${section.id}`);
        const closeModal = modal.querySelector('.close');
        closeModal.addEventListener('click', ()=>{
            modal.remove();
        });
    }
    /**
   * Handle type contact us click
   * @param {HTMLElement} button
   */ _handleContactUsButton(button) {
        const { window: window, document: document } = this;
        // TODO: Extend for an overwritten contact us
        document.sendGoogleAnalyticsEvent({
            hitType: 'event',
            eventCategory: 'button',
            eventAction: 'click',
            eventLabel: 'contact'
        });
        window.lpUI.showModal('modal-global-contact-us', {
            scrollLock: true
        });
    }
    /**
   * Track conversion
   * @param {HTMLElement} button
   */ _trackConversion(button) {
        const { window: window, document: document } = this;
        // Conversion Tracking Options
        const { gtagConversionId: gtagConversionId, gtagConversionLabel: gtagConversionLabel, fbEventName: fbEventName } = button.dataset;
        if (gtagConversionId && gtagConversionLabel) {
            if (window.dataLayer && window.dataLayer.length) {
                const configured = window.dataLayer.some((layer)=>layer.length && layer[0] === 'config' && layer[1] === gtagConversionId);
                if (!configured) document.sendGoogleTagManagerEvent('config', gtagConversionId);
            }
            const sentTo = `${gtagConversionId}/${gtagConversionLabel}`;
            document.sendGoogleTagManagerEvent('event', 'conversion', {
                send_to: sentTo
            });
        }
        if (window.fbq && fbEventName) window.fbq('track', fbEventName, {});
    }
}


/* eslint-disable import/prefer-default-export */ 
class $68a2d4aa500c7a05$export$61ec8f2b6291ec31 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Validation Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.validatedForms = [];
    }
    /**
   * Initialize Contact Form Controller at run time
   * Attach handlers and events to DOM
   * @param {Object} options
   */ initialize(options = {}) {
        try {
            const { window: window, document: document } = this;
            const { selector: selector } = options;
            let validatedForms = [];
            if (selector) validatedForms = document.querySelectorAll(`${selector} form[data-type="contact-form"]`);
            else validatedForms = document.querySelectorAll('form[data-type="contact-form"]');
            const isPhoneValidationLibRequired = !!document.querySelectorAll('input[type="tel"]').length;
            // we are loading the phone validation lib from the globally defined list of libs
            if (isPhoneValidationLibRequired && !window.libphonenumber && window?.luxuryPresence?.libs) {
                const { loadJs: loadJs, jsLibsMap: jsLibsMap } = window.luxuryPresence.libs;
                const { libphonenumber: libphonenumber } = jsLibsMap;
                loadJs(libphonenumber.jsSrc, this.attachValidation.bind(this, validatedForms));
            } else this.attachValidation(validatedForms);
            this.validatedForms = this.validatedForms.concat(validatedForms);
        } catch (e) {
            // eslint-disable-next-line no-console
            console.log(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        this.validatedForms = [];
    }
    /**
   * Validate all forms in the document
   * @param {NodeListOf<HTMLFormElement>} forms
   */ attachValidation(forms) {
        forms.forEach((form)=>{
            const inputs = form.querySelectorAll('input, select, textarea');
            inputs.forEach((input)=>{
                this.applyFieldValidation(input);
            });
        });
    }
    /**
   * Field Validation Handler from global context
   * @param {HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement} inputField
   */ applyFieldValidation(inputField) {
        const fieldType = inputField.getAttribute('type');
        if (fieldType === 'tel') this._applyPhoneValidation(inputField);
    }
    /**
   * Phone Field Validation Handler
   * @param {HTMLInputElement} inputField
   */ _applyPhoneValidation(inputField) {
        const { window: window } = this;
        if (window.libphonenumber) {
            // https://codepen.io/coinscope/pen/BaXBvBp?editors=1010
            const phoneUtil = window.libphonenumber.isValidPhoneNumber;
            inputField.addEventListener('keyup', function() {
                if (this.hasAttribute('required') || this.value.replace(/\s/g, '').length) try {
                    const phoneNumber = this.value;
                    const region = 'US';
                    const isValidNumber = phoneUtil(phoneNumber, region);
                    if (!isValidNumber) this.setCustomValidity('Please enter a valid phone number.');
                    else this.setCustomValidity('');
                } catch (e) {
                    this.setCustomValidity('Please enter a valid phone number.');
                }
                else this.setCustomValidity('');
            });
        }
    }
}





const $2aefad83322125c9$var$homeValuationRoute = '/api/v1/home-valuation';
class $2aefad83322125c9$export$2e2bcd8739ae039 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    destroy() {
    //
    }
    /**
   * Clean address string by removing call time frame suffix and extra whitespace
   *
   * Handles 17 templates that append ", call time frame: [value]" to the address:
   * - TheTrailblazerSir_2, TheMasterpiece (2x), TheInspirationSir_1, TheIconSir_3
   * - Influencer, GlobalCollective, Evolution, CorcoranAgent_1
   * - CompassSE (2x), CompassPrestige (2x), CompassNavigator
   * - ColdwellBanker (2x), Classic
   *
   * @param {string} address - Raw address string that may contain time frame info
   * @return {string} - Cleaned address string
   */ _cleanAddressString(address) {
        if (!address || typeof address !== 'string') return '';
        let cleaned = address.trim();
        // Fix 1: Handle "User entered address:\n..." pattern from TheProducer templates
        // Extract only the user entered address, ignore geocoded part
        if (cleaned.includes('User entered address:')) {
            const match = cleaned.match(/User entered address:\s*\n?\s*([^\n]+)/);
            if (match && match[1]) cleaned = match[1].trim();
        }
        // Fix 2: Remove ", call time frame: ..." suffix if present (affects 17 templates)
        const timeFrameIndex = cleaned.indexOf(', call time frame:');
        if (timeFrameIndex !== -1) cleaned = cleaned.substring(0, timeFrameIndex).trim();
        return cleaned;
    }
    /**
   * Transform Google Maps address components to structured format
   * @param {Array} addressComponents - Google Maps address components
   * @return {Object} - Structured address object
   */ _transformAddressComponents(addressComponents) {
        const get = (t)=>(addressComponents.find((c)=>c.componentType === t) || {}).componentName?.text;
        const structuredAddress = {};
        const streetNumber = get('street_number');
        const streetName = get('route');
        const state = get('administrative_area_level_1');
        const zipcode = get('postal_code');
        const addressLine2 = get('subpremise');
        // explicit precedence for city
        const city = get('locality') || get('sublocality_level_1') || get('neighborhood');
        if (streetNumber) structuredAddress.streetNumber = streetNumber;
        if (streetName) structuredAddress.streetName = streetName;
        if (city) structuredAddress.city = city;
        if (state) structuredAddress.state = state;
        if (zipcode) structuredAddress.zipcode = zipcode;
        if (addressLine2) structuredAddress.addressLine2 = addressLine2;
        return structuredAddress;
    }
    /**
   * Extract address and coordinates from Google Maps validation data
   * @param {Object} validatedAddressData - Google Maps validation result
   * @return {Object} - Object containing structuredAddress and coordinates
   */ _extractAddressAndCoordinates(validatedAddressData) {
        let structuredAddress = null;
        let coordinates = null;
        if (validatedAddressData?.result) {
            const { result: result } = validatedAddressData;
            // Extract structured address components
            if (result.address?.addressComponents) structuredAddress = this._transformAddressComponents(result.address.addressComponents);
            // Extract coordinates
            if (result.geocode?.location) coordinates = {
                latitude: result.geocode.location.latitude,
                longitude: result.geocode.location.longitude
            };
        }
        return {
            structuredAddress: structuredAddress,
            coordinates: coordinates
        };
    }
    /**
   * Filter out empty string values from an object, keeping only non-empty values
   * @param {Object} obj - Object to filter
   * @return {Object} - Filtered object without empty strings
   */ _filterEmptyStrings(obj) {
        const filtered = {};
        for (const [key, value] of Object.entries(obj))if (value !== '' && value !== null && value !== undefined) filtered[key] = value;
        return filtered;
    }
    /**
   * Extract raw address from form data with priority fallback chain.
   * Order is critical to handle 38 home valuation templates with different field naming:
   *
   * IMPORTANT: contactForms.js (line 189) stores name="message" in comments_attributes[0].text
   * because 'message' is in DEFAULT_LEAD_FIELDS. Fields NOT in DEFAULT_LEAD_FIELDS go to content.
   *
   * Priority (most specific → most generic):
   * 1. address           - Pattern 1: 9 templates (explicit address, stored in content)
   * 2. property-address  - Pattern 3: 4 templates (dash variant with JS, stored in content)
   * 3. property_address  - Pattern 4: 3 templates (underscore, stored in content - handles VanguardProperties!)
   * 4. Property_Address  - Pattern 5: 1 template (capital P - TheProducer/HomeValuationRansomHouse, stored in content)
   * 5. comments_attributes[0].text - Pattern 2: ALL 17 templates with name="message" store HERE!
   *                                   (e.g., Evolution/HomeValuation, TheProducer/HomeValuation, etc.)
   * 6. message           - Pattern 6: 4 templates with JS-populated message (rare, checked last)
   * 7-8. homeValuationAddress, propertyAddress - Legacy/unknown formats
   *
   * Critical: Each field is cleaned BEFORE checking, so dropdown values are skipped and we try next field
   *
   * @param {Object} data - Form data
   * @return {string} - Raw address string (may contain trailing text like ", call time frame: ...")
   */ _getRawAddress(data) {
        const content = data.activity.content || {};
        const comments = data.activity.comments_attributes?.[0]?.text;
        const possibleFields = [
            content.address,
            content['property-address'],
            content.property_address,
            content.Property_Address,
            comments,
            content.message,
            content.homeValuationAddress,
            content.propertyAddress
        ];
        return possibleFields.map((field)=>field && this._cleanAddressString(field)).find(Boolean) || '';
    }
    /**
   * Logs lead-related events for monitoring
   * @param {string} eventType - Type of event
   * @param {Object} data - Form data
   * @param {Error} error - Optional error object
   */ _logLeadEvent(eventType, data, error = null) {
        const eventPayload = {
            event: eventType,
            companyId: this.config.companyId,
            websiteId: this.config.websiteId,
            timestamp: new Date().toISOString(),
            hasEmail: !!data.activity?.author_email,
            hasAddress: !!this._getRawAddress(data)
        };
        if (error) {
            // Use userMessage (sanitized) instead of raw message to prevent PII exposure
            // userMessage is set by _getUserFriendlyErrorMessage() which provides safe messages
            eventPayload.errorMessage = error.userMessage || (error.status ? `Request failed with status ${error.status}` : 'An error occurred');
            eventPayload.errorName = error.name;
            eventPayload.errorStatus = error.status;
        }
        // Log to console with structured format for log aggregation
        // eslint-disable-next-line no-console
        console.error(`[HomeValuation] ${eventType}`, JSON.stringify(eventPayload));
        // If PostHog is available, send event for analytics
        // Wrap in try/catch to prevent SDK failures from blocking submissions
        if (this.window.posthog) try {
            this.window.posthog.capture(eventType, eventPayload);
        } catch (posthogError) {
            // eslint-disable-next-line no-console
            console.error('[HomeValuation] PostHog capture failed:', posthogError);
        }
    }
    /**
   * Maps error types to user-friendly messages
   * @param {Error} error - The error object
   * @returns {string} - User-friendly message
   */ _getUserFriendlyErrorMessage(error) {
        if (error.name === 'AbortError' || error.message?.includes('timeout')) return 'Connection timed out. Please try again.';
        if (error.name === 'TypeError' && error.message?.includes('fetch')) return 'Unable to connect. Please check your internet connection and try again.';
        if (error.status === 503 || error.status === 502 || error.status === 504) return 'Service temporarily unavailable. Please try again in a moment.';
        if (error.status === 400) return 'Please check your information and try again.';
        return 'Something went wrong. Please try again or contact us directly.';
    }
    /**
   * Build formatted address string from structured address components
   * @param {Object} structuredAddress - Structured address object
   * @return {string} - Formatted address string
   */ _formatStructuredAddress(structuredAddress) {
        if (!structuredAddress || Object.keys(structuredAddress).length === 0) return '';
        const parts = [];
        // Line 1: streetNumber streetName addressLine2
        const line1 = [
            structuredAddress.streetNumber,
            structuredAddress.streetName,
            structuredAddress.addressLine2
        ].filter(Boolean).join(' ');
        parts.push(line1);
        // Line 2: city, state zipcode
        const cityState = [
            structuredAddress.city,
            structuredAddress.state
        ].filter(Boolean).join(', ');
        const line2 = [
            cityState,
            structuredAddress.zipcode
        ].filter(Boolean).join(' ');
        parts.push(line2);
        return parts.filter(Boolean).join(', ');
    }
    /**
   * Build home valuation data object
   * @param {Object} data - Form data
   * @param {string} homeValuationEstimate - Home valuation estimate
   * @param {Object} structuredAddress - Structured address object
   * @param {Object} coordinates - Coordinates object
   * @return {Object} - Home valuation data object
   */ _buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates) {
        // Build homeValuationAddress from structured address (validated by Google) if available
        // Format: streetNumber streetName, city, state zipcode, addressLine2
        const homeValuationAddress = this._formatStructuredAddress(structuredAddress) || this._getRawAddress(data);
        // Validate that we have an address before proceeding
        if (!homeValuationAddress) throw new Error('Unable to extract home valuation address from form data');
        // Required fields that must always be included
        const requiredFields = {
            companyId: data.companyId,
            homeValuationAddress: homeValuationAddress,
            homeValuationEstimate: homeValuationEstimate ? new Intl.NumberFormat('en-US', {
                style: 'currency',
                currency: 'USD',
                maximumFractionDigits: 0,
                minimumFractionDigits: 0
            }).format(homeValuationEstimate) : null,
            websiteId: data.page.websiteId,
            sourceUrl: data.activity.source_url
        };
        // Optional fields that will be filtered if empty
        const optionalFields = {
            leadEmailAddress: data.activity.author_email,
            leadFullName: data.activity.author_name,
            leadPhoneNumber: data.activity.author_phone,
            parcelId: data.activity.content?.parcelId,
            resourceId: data.page.pageMeta?.resourceId,
            pageId: data.page.pageId,
            sourceResource: data.page.pageMeta?.sourceResource,
            pageElementId: data.page.pageMeta?.pageElementId,
            formId: data.page.pageMeta?.formId,
            utmSource: data.activity.content?.utm_source,
            utmMedium: data.activity.content?.utm_medium,
            utmCampaign: data.activity.content?.utm_campaign,
            utmTerm: data.activity.content?.utm_term,
            utmContent: data.activity.content?.utm_content,
            utmId: data.activity.content?.utm_id,
            timeToSell: data.activity.content?.timeToSell,
            lookingToBuy: data.activity.content?.lookingToBuy,
            referrer: data.referrer,
            content: data.activity.content || {},
            fields: data.fields || {}
        };
        // Filter out empty strings from optional fields
        const filteredOptionalFields = this._filterEmptyStrings(optionalFields);
        return {
            ...requiredFields,
            ...filteredOptionalFields,
            // Add structured address and coordinates if they exist
            ...structuredAddress && {
                address: structuredAddress
            },
            ...coordinates && {
                coordinates: coordinates
            }
        };
    }
    /**
   * Validate address with Google Maps
   * @param {string} rawAddress - Raw address string
   * @returns {Promise<Object|null>} - Validated address data or null
   * @throws {Error} - If validation fails, error is thrown with userMessage
   */ async _validateAddressSafely(rawAddress) {
        if (!rawAddress) {
            // eslint-disable-next-line no-console
            console.error('Home valuation: No address found in form data');
            return null;
        }
        try {
            return await this._validateAddressWithGoogleMaps(rawAddress);
        } catch (error) {
            // eslint-disable-next-line no-console
            console.error('Error validating address with Google Maps:', error);
            // Attach user-friendly message and throw so user sees the error
            error.userMessage = this._getUserFriendlyErrorMessage(error);
            throw error;
        }
    }
    /**
   * Get home valuation estimate
   * @param {Object} validatedAddressData - Validated address data
   * @returns {Promise<number|null>} - Home valuation estimate or null
   * @throws {Error} - If estimate fetch fails, error is thrown with userMessage
   */ async _getHomeValuationEstimateSafely(validatedAddressData) {
        try {
            return await this._getHomeValuationEstimate(validatedAddressData);
        } catch (error) {
            // eslint-disable-next-line no-console
            console.error('Error getting home valuation estimate:', error);
            // Attach user-friendly message and throw so user sees the error
            error.userMessage = this._getUserFriendlyErrorMessage(error);
            throw error;
        }
    }
    /**
   * Parse response text into payload object
   * @param {string} text - Response text
   * @returns {Object} - Parsed payload
   */ _parseResponsePayload(text) {
        try {
            return text ? JSON.parse(text) : {};
        } catch  {
            return {
                raw: text
            };
        }
    }
    /**
   * Create error from failed response
   * @param {Object} payload - Response payload
   * @param {number} status - HTTP status code
   * @returns {Error} - Error object with status and payload
   */ _createResponseError(payload, status) {
        const errorMessage = payload && typeof payload === 'object' && Object.keys(payload).length ? payload.message || JSON.stringify(payload) : 'Request failed';
        const error = new Error(errorMessage);
        // Preserve payload properties if it's an object
        if (payload && typeof payload === 'object' && Object.keys(payload).length) Object.assign(error, payload);
        // Preserve numeric HTTP status - must be set after Object.assign
        // to ensure it takes precedence over any status in payload
        error.status = status;
        return error;
    }
    /**
   * Submit lead to API endpoint
   * @param {string} leadRoute - API endpoint URL
   * @param {Object} homeValuationData - Data to submit
   * @returns {Promise<Object>} - Submission result
   */ async _submitLead(leadRoute, homeValuationData) {
        const controller = new AbortController();
        const timeoutId = setTimeout(()=>controller.abort(), 10000);
        try {
            const response = await fetch(leadRoute, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(homeValuationData),
                signal: controller.signal
            });
            clearTimeout(timeoutId);
            const text = await response.text();
            const payload = this._parseResponsePayload(text);
            if (!response.ok) throw this._createResponseError(payload, response.status);
            if (payload && payload.status === 'success' && payload.redirectUrl) {
                this.window.location.href = payload.redirectUrl;
                return {
                    redirected: true,
                    url: payload.redirectUrl
                };
            }
            return payload;
        } catch (error) {
            clearTimeout(timeoutId);
            throw error;
        }
    }
    /**
   * Submit home valuation request with Google Maps validation
   * @param {Object} data
   * @return {Promise<Object>}
   */ async _submitHomeValuationRequest(data) {
        const { config: config } = this;
        // Use websiteApiGatewayUrl from config
        if (!config.websiteApiGatewayUrl) throw new Error('websiteApiGatewayUrl not configured for home valuation');
        // Log submission started
        this._logLeadEvent('home_valuation_submission_started', data);
        try {
            // Validate address with Google Maps
            const rawAddress = this._getRawAddress(data);
            let validatedAddressData = null;
            try {
                validatedAddressData = await this._validateAddressSafely(rawAddress);
            } catch (error) {
                // Error already has userMessage from _validateAddressSafely
                this._logLeadEvent('home_valuation_address_validation_failed', data, error);
                throw error;
            }
            // Get home valuation estimate.
            // The estimate is best-effort: many valid properties (e.g. commercial
            // parcels or addresses without AVM coverage) have no estimate and the
            // estimate endpoint returns a non-OK status for them. A missing estimate
            // must never block lead capture, so we log the failure and continue with
            // a null estimate rather than aborting the whole submission.
            let homeValuationEstimate = null;
            try {
                homeValuationEstimate = await this._getHomeValuationEstimateSafely(validatedAddressData);
            } catch (error) {
                // Error already has userMessage from _getHomeValuationEstimateSafely
                this._logLeadEvent('home_valuation_estimate_failed', data, error);
                homeValuationEstimate = null;
            }
            // Extract structured address and coordinates from Google Maps validation
            const { structuredAddress: structuredAddress, coordinates: coordinates } = this._extractAddressAndCoordinates(validatedAddressData);
            const leadRoute = `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`;
            const homeValuationData = this._buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates);
            const result = await this._submitLead(leadRoute, homeValuationData);
            // Log success
            this._logLeadEvent('home_valuation_submission_success', data);
            return result;
        } catch (error) {
            // Ensure error has user-friendly message (may already be set by helper methods)
            if (!error.userMessage) error.userMessage = this._getUserFriendlyErrorMessage(error);
            this._logLeadEvent('home_valuation_submission_failed', data, error);
            throw error;
        }
    }
    /**
   * Validate address using Google Maps Address Validation API
   * @param {string} addressStr - The address string to validate
   * @returns {Promise<Object|null>} - Validated address data or null if validation fails
   */ async _validateAddressWithGoogleMaps(addressStr) {
        const { config: config, window: window } = this;
        // Ensure Google Maps API key is loaded
        let apiKey = config.googleMapsAPIKey;
        if (!apiKey && window.luxuryPresence?.mapApiLoader) apiKey = await window.luxuryPresence.mapApiLoader.getMapApiKey();
        if (!apiKey) throw new Error('Google Maps API key not configured');
        const controller = new AbortController();
        const timeoutId = setTimeout(()=>controller.abort(), 10000);
        try {
            const response = await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${apiKey}`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    address: {
                        addressLines: [
                            addressStr
                        ]
                    },
                    enableUspsCass: false
                }),
                signal: controller.signal
            });
            clearTimeout(timeoutId);
            if (!response.ok) {
                const error = new Error(`Address validation failed: ${response.status}`);
                error.status = response.status;
                throw error;
            }
            return response.json();
        } catch (error) {
            clearTimeout(timeoutId);
            throw error;
        }
    }
    /**
   * Check if structured address has all mandatory fields
   * @param {Object} structuredAddress - Structured address object
   * @return {boolean}
   */ _hasMandatoryAddressFields(structuredAddress) {
        return !!(structuredAddress.streetNumber && structuredAddress.streetName && structuredAddress.city && structuredAddress.state && structuredAddress.zipcode);
    }
    /**
   * Log missing mandatory address fields
   * @param {Object} structuredAddress - Structured address object
   */ _logMissingAddressFields(structuredAddress) {
        const missingFields = [];
        if (!structuredAddress.streetNumber) missingFields.push('streetNumber');
        if (!structuredAddress.streetName) missingFields.push('streetName');
        if (!structuredAddress.city) missingFields.push('city');
        if (!structuredAddress.state) missingFields.push('state');
        if (!structuredAddress.zipcode) missingFields.push('zipcode');
        // eslint-disable-next-line no-console
        console.log('Home valuation estimate skipped - missing required fields:', missingFields.join(', '), 'Available fields:', Object.keys(structuredAddress).join(', '));
    }
    /**
   * Build query string from structured address
   * @param {Object} structuredAddress - Structured address object
   * @return {string}
   */ _buildAddressQueryString(structuredAddress) {
        return Object.entries(structuredAddress).map(([key, value])=>`${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&');
    }
    /**
   * GET home valuation estimate
   * @param {string} address
   * @param {Object} validatedAddressData - Google Maps validated address data
   * @return {Promise<number|null>}
   */ async _getHomeValuationEstimate(validatedAddressData = null) {
        const { config: config } = this;
        if (!config.websiteApiGatewayUrl) throw new Error('websiteApiGatewayUrl not configured');
        const base = `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`;
        // Check if we have validated address data
        if (!validatedAddressData?.result?.address?.addressComponents) return null;
        const structuredAddress = this._transformAddressComponents(validatedAddressData.result.address.addressComponents);
        // Check if all mandatory fields exist
        if (!this._hasMandatoryAddressFields(structuredAddress)) {
            this._logMissingAddressFields(structuredAddress);
            return null;
        }
        // Build URL with query string
        const qs = this._buildAddressQueryString(structuredAddress);
        const homeValURL = `${base}?${qs}`;
        const controller = new AbortController();
        const timeoutId = setTimeout(()=>controller.abort(), 10000);
        try {
            const response = await fetch(homeValURL, {
                headers: {
                    Accept: 'application/json'
                },
                signal: controller.signal
            });
            clearTimeout(timeoutId);
            if (!response.ok) {
                const error = new Error(`Home valuation estimate failed: ${response.status}`);
                error.status = response.status;
                throw error;
            }
            const data = await response.json();
            return data?.valueDollars ?? null;
        } catch (error) {
            clearTimeout(timeoutId);
            // Re-throw to allow retry logic to handle it
            throw error;
        }
    }
}


const $e10bd00497be8876$export$97de66002300ed70 = 'middleName';
// Default lead fields
const $e10bd00497be8876$var$DEFAULT_LEAD_FIELDS = [
    'name',
    'firstName',
    'lastName',
    $e10bd00497be8876$export$97de66002300ed70,
    'email',
    'phone',
    'phoneNumber',
    'source',
    'message',
    'mlsId',
    'sourceUrl'
];
class $e10bd00497be8876$export$3c5380623cf51249 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Contact Form Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.forms = [];
        this.homeValuationService = new (0, $2aefad83322125c9$export$2e2bcd8739ae039)(config, window, document);
    }
    /**
   * Initialize Contact Form Controller at run time
   * Attach handlers and events to DOM
   * @param {Object} options
   */ initialize(options = {}) {
        try {
            const { document: document } = this;
            const { selector: selector } = options;
            let forms = [];
            if (selector) forms = document.querySelectorAll(`${selector} form[data-type="contact-form"]`);
            else forms = document.querySelectorAll('form[data-type="contact-form"]');
            forms.forEach((form)=>{
                this._attachSubmitHandler(form);
            // this._attachValidation(form);
            });
            this.forms = this.forms.concat(forms);
        } catch (e) {
            // eslint-disable-next-line no-console
            console.log(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        this.forms = [];
    }
    /**
   * Handle submit from global context
   * @param {HTMLFormElement} form
   */ submitForm(form) {
        this._handleSubmit(null, form).catch((e)=>console.error(e));
    }
    /**
   * Attach submit event for form
   * @param {HTMLFormElement} contactForm
   */ _attachValidation(contactForm) {
        const { window: window } = this;
        const inputs = contactForm.querySelectorAll('input, select, textarea');
        inputs.forEach((input)=>{
            window.luxuryPresence.validation.applyFieldValidation(input);
        });
    }
    /**
   * Attach submit event for form
   * @param {HTMLFormElement} contactForm
   */ _attachSubmitHandler(contactForm) {
        contactForm.addEventListener('submit', (e)=>this._handleSubmit(e, contactForm));
    }
    /**
   * Extract and process form values
   * @param {HTMLFormElement} contactForm
   * @return {Object} - Processed form values
   */ _extractFormValues(contactForm) {
        const formData = new FormData(contactForm);
        const values = {};
        const nameParts = [];
        const nameKeyRegex = /^name(?:-\d+)?$/;
        formData.forEach((value, key)=>{
            if (typeof value === 'string') {
                const curr = value.trim();
                if (nameKeyRegex.test(key) && curr) nameParts.push(curr);
                const prev = values[key];
                values[key] = prev ? `${prev} ${curr}` : curr;
            } else values[key] = value;
        });
        if (nameParts.length) values.name = nameParts.join(' ').trim();
        else if (!values.name && values.firstName) {
            values.name = values.firstName;
            if (values.lastName) values.name += ` ${values.lastName}`;
        }
        return values;
    }
    /**
   * Build submission data object
   * @param {Object} values - Form values
   * @param {Object} fields - Form fields
   * @param {HTMLFormElement} contactForm - Form element
   * @return {Object} - Submission data
   */ _buildSubmissionData(values, fields, contactForm) {
        const { window: window, config: config } = this;
        const content = Object.keys(values).filter((key)=>!$e10bd00497be8876$var$DEFAULT_LEAD_FIELDS.includes(key)).reduce((result, key)=>{
            // eslint-disable-next-line
            result[key] = values[key];
            return result;
        }, {});
        const { pageId: pageId, companyId: companyId, websiteId: websiteId, pageMeta: pageMeta } = config;
        const utm = window.localStorage.getItem('utm_vars') || '{}';
        const referrer = window.localStorage.getItem('referrer') || '';
        const formId = this._getFormId(contactForm);
        return {
            activity: {
                author_email: values.email,
                author_name: values.name,
                author_phone: values.phone || values.phoneNumber,
                activity_source: values.source || 'CONTACT_INQUIRY',
                comments_attributes: [
                    {
                        text: values.message || undefined
                    }
                ],
                source_url: window.location.href,
                content: {
                    ...content,
                    ...JSON.parse(utm)
                }
            },
            page: {
                pageId: pageId,
                companyId: companyId,
                websiteId: websiteId,
                pageMeta: {
                    ...pageMeta,
                    formId: formId
                }
            },
            companyId: companyId,
            referrer: referrer,
            fields: fields
        };
    }
    /**
   * Handle successful form submission
   * @param {HTMLFormElement} contactForm - Form element
   */ _handleSubmissionSuccess(contactForm) {
        const { window: window } = this;
        const closeDelay = contactForm.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205);
        contactForm.classList.remove('loading');
        contactForm.classList.remove('error');
        contactForm.classList.add('success');
        // TODO: Review producer and classic to deprecate "hide"
        contactForm.querySelectorAll('.success').forEach((el)=>el.classList.remove('hide'));
        contactForm.dispatchEvent(new Event('formsubmitted'));
        setTimeout(()=>{
            window.lpUI.hideClosestModal(contactForm);
            contactForm.reset();
            window.lpUI.sideMenuHide();
            contactForm.querySelectorAll('.success').forEach((el)=>el.classList.add('hide'));
            contactForm.classList.remove('success');
        }, closeDelay);
    }
    /**
   * Submit Contact Form Handler
   * @param {Event} e
   * @param {HTMLFormElement} contactForm
   * @return {Promise<Object>}
   */ async _handleSubmit(e, contactForm) {
        if (e) e.preventDefault();
        if (contactForm.classList.contains('loading')) // Form already submitting
        return;
        // Hide any previous error message and clear error state
        this._hideSubmissionError(contactForm);
        contactForm.classList.remove('error');
        contactForm.classList.add('loading');
        try {
            // Extract form values first (before async operations)
            const values = this._extractFormValues(contactForm);
            // TODO: HoneyPot should still send request
            if (values.middleName) {
                contactForm.classList.remove('loading');
                return;
            }
            const fields = this._getFields(contactForm);
            const data = this._buildSubmissionData(values, fields, contactForm);
            await this._submitLeadRequest(data);
            this._sendGAEvent(data);
            this._handleSubmissionSuccess(contactForm);
        } catch (err) {
            // eslint-disable-next-line no-console
            console.error('Form submission failed:', err);
            contactForm.dispatchEvent(new Event('formsubmiterror'));
            contactForm.classList.remove('loading');
            contactForm.classList.add('error');
            // Show user-friendly error message if available (from home valuation service)
            if (err.userMessage) this._showSubmissionError(contactForm, err.userMessage);
            else this._showSubmissionError(contactForm, 'Something went wrong. Please try again.');
        }
    }
    /**
   * Alias anonymous user with canonical ID using event bus
   * Links the user's anonymous browsing session to their canonical identity
   * @param {Object} data - Form submission data
   * @private
   */ _aliasUserWithEventBus(data) {
        try {
            // Check if event bus library and required methods are available
            if (!this.window.eventBusProvider?.alias || !this.window.eventBusProvider?.isIdentified || !this.window.eventBusProvider?.getDistinctId || !this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail) return; // Event bus or required methods not available
            // Skip if user is already identified
            if (this.window.eventBusProvider.isIdentified()) {
                console.log('[EventBus] User already identified, skipping alias');
                return;
            }
            const email = data.activity?.author_email;
            const { companyId: companyId } = this.config;
            if (!email || !companyId) {
                console.warn('[EventBus] Missing required data for user alias');
                return;
            }
            // Get the anonymous distinct ID from PostHog
            const anonId = this.window.eventBusProvider.getDistinctId();
            if (!anonId) {
                console.warn('[EventBus] No anonymous ID available for alias');
                return;
            }
            // Generate deterministic canonical ID from company + email
            const canonicalId = this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(companyId, email);
            // Create alias linking anonymous ID to canonical ID
            this.window.eventBusProvider.alias({
                anonId: anonId,
                canonicalId: canonicalId
            });
            console.log('[EventBus] User aliased with canonical ID');
        } catch (error) {
            // Never block form submission due to analytics errors
            console.error('[EventBus] User alias failed:', error);
        }
    }
    /**
   * Send Lead Request
   * @param {Object} data
   * @return {Promise<Object>}
   */ async _submitLeadRequest(data) {
        const { config: config } = this;
        // Alias user with event bus before submitting the lead
        this._aliasUserWithEventBus(data);
        if (config.myhomeDashboardEnabled && (data.activity?.activity_source === 'HOME_VALUATION' || data.activity?.activity_source === 'HOME_VALUE')) return this.homeValuationService._submitHomeValuationRequest(data);
        const leadRoute = `${config.leadIngesterUrl}/api/v1/leads`;
        return fetch(leadRoute, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(data)
        }).then((response)=>{
            if (!response.ok) return response.json().then((error)=>{
                throw error;
            });
            return response.json();
        });
    }
    /**
   * Send GA event
   * @param {Object} data
   */ _sendGAEvent(data) {
        const { document: document } = this;
        let event = {
            hitType: 'event',
            eventCategory: 'button',
            eventAction: 'click'
        };
        switch(data.activity.activity_source){
            case 'NEWSLETTER_SIGNUP':
                event.eventLabel = 'Newsletter';
                document.sendGoogleTagManagerEvent('event', 'newsletter_signup');
                break;
            case 'HOME_SEARCH':
                event.eventLabel = 'HomeSearch';
                document.sendGoogleTagManagerEvent('event', 'home_search');
                break;
            case 'HOME_VALUE':
            case 'HOME_VALUATION':
                event.eventLabel = 'HomeValue';
                document.sendGoogleTagManagerEvent('event', 'home_valuation');
                break;
            case 'EBOOK':
                event.eventLabel = 'Ebook';
                document.sendGoogleTagManagerEvent('event', 'ebook_download');
                break;
            case 'CONTACT_INQUIRY':
            default:
                // for contact forms, Marketing has requested that they see a page-view of 'thank-you' as indication of success
                // Note that this will break if we have actual page with url of /thank-you
                event = {
                    hitType: 'pageview',
                    page: '/thank-you'
                };
                document.sendGoogleTagManagerEvent('event', 'contact_inquiry');
                break;
        }
        document.sendGoogleAnalyticsEvent(event);
    }
    /**
   * Gather fields / schema for form, used for display in CRM
   * @param {HTMLFormElement} form
   * @return {Object}
   */ _getFields(form) {
        const inputs = form.querySelectorAll('input, select, textarea');
        const fields = {};
        inputs.forEach((input)=>{
            const { id: id, name: name, type: inputType } = input;
            if (name === $e10bd00497be8876$export$97de66002300ed70) // Honeypot continue
            return true;
            let label = '';
            if (id) {
                const labelNode = form.querySelector(`label[for='${id}']`);
                if (labelNode) label = labelNode.textContent.trim();
                else if (input.placeholder) label = input.placeholder.trim();
            }
            fields[name] = {
                label: label,
                type: input.tagName,
                inputType: input.tagName === 'INPUT' ? inputType : 'text'
            };
        });
        return fields;
    }
    /**
   * Figure out relevant section or div ID for form
   * @param {HTMLFormElement} form
   * @return {string}
   */ _getFormId(form) {
        const SELECTORS = "section[id^='section-'], footer[id], .modal[id^='modal-']";
        const parent = form.closest(SELECTORS);
        return parent?.id ? this._cleanFormId(parent.id) : '';
    }
    /**
   * Remove prefix from formID
   * @param {string} formId
   * @return {string}
   */ _cleanFormId(formId) {
        const PREFIXES = [
            'section-',
            'modal-'
        ];
        for (const prefix of PREFIXES){
            if (formId.startsWith(prefix)) return formId.substring(prefix.length);
        }
        return formId;
    }
    /**
   * Show submission error message on form
   * @param {HTMLFormElement} form
   * @param {string} message
   */ _showSubmissionError(form, message) {
        const errorEl = form.querySelector('.submission-error-message');
        if (errorEl) {
            errorEl.textContent = message || 'Something went wrong. Please try again.';
            errorEl.style.display = 'block';
        }
    }
    /**
   * Hide submission error message on form
   * @param {HTMLFormElement} form
   */ _hideSubmissionError(form) {
        const errorEl = form.querySelector('.submission-error-message');
        if (errorEl) errorEl.style.display = 'none';
    }
}



const $ea6901fdf47e0ec1$var$CALLBACK = '__googleMapsCallback';
const $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL = 'https://maps.googleapis.com/maps/api/js';
const $ea6901fdf47e0ec1$export$76299006759be400 = 1024;
class $ea6901fdf47e0ec1$export$3c19195edca3fa5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Button Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.retries = 3;
        this.callbacks = [];
        this.id = `__googleMapsScriptId${Date.now()}`;
        this._apiKey = '';
        this.reset();
    }
    /**
   * Set the Google Maps api key
   * @param {string} apiKey
   */ set apiKey(apiKey) {
        this._apiKey = apiKey;
        this.config.setGoogleMapsAPIKey(apiKey);
    }
    /**
   * Get the Google Maps api key
   * @return {string}
   */ get apiKey() {
        return this._apiKey;
    }
    /**
   * Reset the loader state.
   */ reset() {
        this.deleteScript();
        this.done = false;
        this.loading = false;
        this.errors = [];
        this.onerrorEvent = null;
    }
    /**
   * Destroy
   */ destroy() {
        this.reset();
    }
    /**
   * get map api Key
   * @return {Promise<string>}
   */ async getMapApiKey() {
        if (this.apiKey) return this.apiKey;
        try {
            const response = await fetch(`${this._getBaseUrl()}/api/v1/map`);
            if (!response.ok) throw new Error('Failed to fetch API key');
            const code = await response.text();
            this.apiKey = code;
            return this.apiKey;
        } catch (e) {
            // eslint-disable-next-line no-console
            console.error(e);
            return '';
        }
    }
    /**
   * CreateUrl returns the Google Maps JavaScript API script url ].
   * @return {string}
   */ async createUrl() {
        let url = $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL;
        url += `?callback=${$ea6901fdf47e0ec1$var$CALLBACK}`;
        const apiKey = await this.getMapApiKey();
        if (apiKey) url += `&key=${apiKey}`;
        url += `&libraries=places`;
        return url;
    }
    /**
   * Set the script on document.
   */ async setScript() {
        if (this.document.getElementById(this.id)) {
            this.callback();
            return;
        }
        const url = await this.createUrl();
        const script = this.document.createElement('script');
        script.id = this.id;
        script.type = 'text/javascript';
        script.src = url;
        script.onerror = this.loadErrorCallback.bind(this);
        script.defer = true;
        script.async = true;
        this.document.head.appendChild(script);
    }
    /**
   * Function to be called if script tag fails
   * @param {Error} e
   */ loadErrorCallback(e) {
        this.errors.push(e);
        if (this.errors.length <= this.retries) {
            const delay = this.errors.length * 2 ** this.errors.length;
            // eslint-disable-next-line no-console
            console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`);
            setTimeout(()=>{
                this.deleteScript();
                this.setScript().catch((e)=>console.error(e));
            }, delay);
        } else {
            this.onerrorEvent = e;
            this.callback();
        }
    }
    /**
   * Delete the script tag
   */ deleteScript() {
        const script = this.document.getElementById(this.id);
        if (script) script.remove();
    }
    /**
   * Load the Google Maps JavaScript API script and return a Promise.
   * @return {Promise}
   */ load() {
        return this.loadPromise();
    }
    /**
   * Load the Google Maps JavaScript API script and return a Promise.
   * @return {Promise}
   */ loadPromise() {
        return new Promise((resolve, reject)=>{
            this.loadCallback((err)=>{
                if (!err) resolve();
                else reject(err);
            });
        });
    }
    /**
   * Load the Google Maps JavaScript API script with a callback.
   * @param {Function<Event>} fn
   */ loadCallback(fn) {
        this.callbacks.push(fn);
        this.execute();
    }
    /**
   * Sets the callback function that will be sent as part of the script URL.
   */ setCallback() {
        this.window.__googleMapsCallback = this.callback.bind(this);
    }
    /**
   * Reset if failed
   */ resetIfRetryingFailed() {
        if (this.failed) this.reset();
    }
    /**
   * This is the function that we set the callback parameter to.
   */ callback() {
        this.done = true;
        this.loading = false;
        this.callbacks.forEach((cb)=>{
            cb(this.onerrorEvent);
        });
        this.callbacks = [];
    }
    /**
   * Set the script a if needed; set the callback
   */ execute() {
        if (this.window.google && this.window.google.maps && this.window.google.maps.version) // Google Maps already loaded
        this.callback();
        this.resetIfRetryingFailed();
        if (this.done) this.callback();
        else if (this.loading) ;
        else {
            this.loading = true;
            this.setCallback();
            this.setScript().catch((e)=>console.error(e));
        }
    }
    /**
   * get base url based on current config
   * @return {string}
   */ _getBaseUrl() {
        // Special handling for page builder since no wag available
        const { isBuilder: isBuilder, websiteApiGatewayUrl: websiteApiGatewayUrl } = this.config;
        return isBuilder ? websiteApiGatewayUrl : '';
    }
    /**
   * Resize static map requests to the max 1024px while preserving aspect ratio
   * @param {number} width
   * @param {number} height
   * @return {{width, height}}
   */ resizeStaticMapDimensions(width, height) {
        if (width <= $ea6901fdf47e0ec1$export$76299006759be400 && height <= $ea6901fdf47e0ec1$export$76299006759be400) return {
            width: width,
            height: height
        };
        // Size param ignored if dimensions exceed STATIC_MAP_MAX_DIM
        const ratio = Math.min($ea6901fdf47e0ec1$export$76299006759be400 / width, $ea6901fdf47e0ec1$export$76299006759be400 / height);
        return {
            width: parseInt(width * ratio),
            height: parseInt(height * ratio)
        };
    }
    /**
   * Convert theme to static api param object
   * @param {Object} theme
   * @return {Object}
   */ convertThemeToStaticApiUrl(theme) {
        // https://developers.google.com/maps/documentation/maps-static/style-reference
        // Google Maps Static API uses a special syntax for it's urls based on the interactive map styles
        return theme.map((t)=>{
            const styles = t.stylers.reduce((acc, s)=>{
                const visibility = s.visibility ? `visibility:${s.visibility}` : '';
                const color = s.color ? `color:${s.color.replace('#', '0x')}` : '';
                const lightness = s.lightness ? `lightness:${s.lightness}` : '';
                return `${acc}|${visibility}${color}${lightness}`;
            }, '');
            const element = t.elementType ? `|element:${t.elementType}` : '';
            return `feature:${t.featureType}${element}${styles}`;
        });
    }
    /**
   * generate digital signature for url
   * @param {string} queryString to sign
   * @return {Promise<string>} digitally signed url
   */ async getMapApiSignedUrl(queryString) {
        try {
            const response = await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${queryString}`);
            if (!response.ok) throw new Error('Failed to fetch signed URL');
            const { url: url } = await response.json();
            return url;
        } catch (e) {
            // eslint-disable-next-line no-console
            console.error(e);
            return '';
        }
    }
    /**
   * Generate static map url
   * @param {number} lat
   * @param {number} lng
   * @param {number} zoom
   * @param {Object} theme
   * @param {number} srcWidth
   * @param {number} srcHeight
   * @return {string}
   */ generateStaticMapUrl(lat, lng, zoom, theme, srcWidth, srcHeight) {
        const baseUrl = 'https://maps.googleapis.com/maps/api/staticmap';
        const { width: width, height: height } = this.resizeStaticMapDimensions(srcWidth, srcHeight);
        const query = {
            center: `${lat},${lng}`,
            zoom: zoom,
            scale: 2,
            size: `${width}x${height}`,
            key: this.apiKey
        };
        if (theme) query.style = this.convertThemeToStaticApiUrl(theme);
        const params = new URLSearchParams();
        Object.entries(query).forEach(([key, value])=>{
            if (Array.isArray(value)) value.forEach((v)=>params.append(key, v.toString()));
            else params.append(key, value.toString());
        });
        return `${baseUrl}?${params.toString()}`;
    }
    /**
   * Generate static map url with digital signature
   * @param {Object} {
   *  srcWidth {number}, required
   *  srcHeight {number}, required
   *  theme {array},
   *  center: `${lat},${lng}`, required
   *  zoom: number, required
   *  markers: `${lat},${lng}`,
   *  scale: number,
   *  otherQueryParams... (these must match what is compatible with google maps static api query params)
   * }
   * @return {Promise<string>} digitally signed url
   */ async generateDigitallySignedStaticMapUrl({ srcWidth: srcWidth, srcHeight: srcHeight, theme: theme, ...query }) {
        const { width: width, height: height } = this.resizeStaticMapDimensions(srcWidth, srcHeight);
        const queryParams = {
            ...query,
            size: `${width}x${height}`
        };
        if (theme) queryParams.style = this.convertThemeToStaticApiUrl(theme);
        const params = new URLSearchParams();
        Object.entries(queryParams).forEach(([key, value])=>{
            if (Array.isArray(value)) value.forEach((v)=>params.append(key, v.toString()));
            else params.append(key, value.toString());
        });
        const queryString = params.toString();
        try {
            // fetch digitally signed url
            return await this.getMapApiSignedUrl(queryString);
        } catch (e) {
            console.error(e);
            return '';
        }
    }
}


/* eslint-disable import/prefer-default-export */ 

class $0a0ad49f13c0b8fd$export$ba9afeb75f20f616 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    // constructor is not needed as it is inherited from BaseController
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {}
    /**
   * Places (re-places) a value into the query string under specified key
   *   or removes it if new value is null or undefined
   * @param {string} key
   * @param {string|null|undefined|object|array} value
   * @param {string} url - defaults to window.location.href
   * @return {string}
   */ // eslint-disable-next-line sonarjs/cognitive-complexity
    updateQueryString(key, value, url) {
        // https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter
        if (!url) // eslint-disable-next-line
        url = this.window.location.href;
        let re = new RegExp(`([?&])${key}=.*?(&|#|$)`, 'i');
        let replacement = '';
        if (typeof value !== 'undefined' && value !== null) {
            if (Array.isArray(value)) {
                if (value.length) replacement = this.serializeArray(key, value);
            } else if (typeof value === 'object') {
                re = new RegExp(`([?&])${key}\\[[^=]*\\]=.*?(&|#|$)`, 'i');
                replacement = this.serializeObj(value, '', key);
            } else replacement = `${key}=${encodeURIComponent(value)}`;
        }
        const hash = url.split('#');
        let result = hash[0];
        if (re.test(url)) {
            let clean = result;
            replacement = replacement ? `$1${replacement}$2` : '$1';
            while(re.test(clean)){
                result = clean.replace(re, replacement);
                clean = clean.replace(re, '$1');
            }
            result = result.replace(/(&|\?)$/, '');
        } else if (replacement) {
            const separator = result.indexOf('?') !== -1 ? '&' : '?';
            result += `${separator}${replacement}`;
        }
        if (typeof hash[1] !== 'undefined' && hash[1] !== null) result += `#${hash[1]}`;
        return result;
    }
    /**
   * Returns variable from query string specified by parameter name
   * @param {string} name
   * @param {string} url defaults to window.location.href
   * @return {string|null}
   */ getParameterByName(name, url) {
        if (!url) // eslint-disable-next-line
        url = this.window.location.href;
        // eslint-disable-next-line
        name = name.replace(/[[\]]/g, '\\$&');
        const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);
        let results = Array.from(RegExp.prototype[Symbol.matchAll].call(regex, url)).flat();
        // check for object like syntax where the last value can be an array eg. advancedFilters[query][statusIds][in][0] or advancedFilters[query][city]
        if (!results.length) {
            const objRegex = new RegExp(`[?&]${name}(\\[.*?\\])=(.*?)(?=&|#|$)`, 'g');
            results = Array.from(RegExp.prototype[Symbol.matchAll].call(objRegex, url)).flat();
            return this._parseParamToObject(results, name === 'advancedFilters');
        }
        // For multiple param values, eg arrays
        /* Results from regex match all come in this form:
    [ '&advancedFilters[query][statusIds][in]=uuid-segundo-123', '[query][statusIds][in]', 'uuid-segundo-123' ]
    So using every third value will be the actual value and the second value will be the path
    */ if (results.length > 3) return results.reduce((acc, value, index)=>{
            if ((index + 1) % 3 === 0) acc.push(decodeURIComponent(value.replace(/\+/g, ' ')));
            return acc;
        }, []);
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
    }
    /**
   * Generates section specific key to store page number in the URL
   * @param {string} sectionDomId
   * @return {string}
   */ makePageKey(sectionDomId) {
        return sectionDomId.replace('section-', '').replace(/-/g, '');
    }
    /**
   * Generates specific key to store parameter in the URL
   * uses prevsiouly calculated baseKey for section specific parameters
   * @param {Object} formParam
   * @param {string} baseKey pre-calculated base for section specific parameters
   * @return {string}
   */ makeParamKey(formParam, baseKey) {
        return formParam.global ? formParam.urlKey : `${baseKey}-${formParam.urlKey}`;
    }
    /**
   * Gets a set of parameters from window query string
   * always returns value of "page" parameter if present
   * @param {Object[]} formConfig
   * @param {string} sectionDomId
   * @return {Object}
   */ deserializeParams(formConfig, sectionDomId) {
        const params = {};
        const urlPageKey = this.makePageKey(sectionDomId);
        const page = this.getParameterByName(urlPageKey);
        if (page) params.page = parseInt(page);
        if (Array.isArray(formConfig)) formConfig.forEach((formParam)=>{
            const key = this.makeParamKey(formParam, urlPageKey);
            let urlValue = this.getParameterByName(key);
            if (formParam.type === 'int') {
                urlValue = parseInt(urlValue);
                // eslint-disable-next-line
                if (!isFinite(urlValue)) urlValue = null;
            } else if (formParam.type === 'bool' || formParam.type === 'boolean') urlValue = // eslint-disable-next-line
            urlValue === 'true' ? true : urlValue === 'false' ? false : null;
            else if (formParam.type === 'json') try {
                urlValue = JSON.parse(urlValue);
            } catch (e) {
            // no need to do anything
            }
            params[formParam.formKey || formParam.param] = urlValue;
        });
        return params;
    }
    /**
   * Serializes set of parameters defined by formConfig into the URL
   * adding or replacing or removing required parameters
   * @param {Object[]} formConfig
   * @param {string} sectionDomId
   * @param {Object} params
   * @return {string}
   */ serializeParams(formConfig, sectionDomId, params) {
        let result = this.window.location.href;
        const urlPageKey = this.makePageKey(sectionDomId);
        result = this.updateQueryString(urlPageKey, params.page, result);
        if (Array.isArray(formConfig)) formConfig.forEach((formParam)=>{
            const key = this.makeParamKey(formParam, urlPageKey);
            let value = params[formParam.formKey || formParam.param];
            if (formParam.type === 'json' && value !== null && typeof value !== 'undefined') value = JSON.stringify(value);
            result = this.updateQueryString(key, value, result);
        });
        return result;
    }
    /**
   * Formats small number for slider values
   * @param {number} value
   * @param {string} currency
   * @return {string}
   */ formatSliderAtom(value, currency = '') {
        const formattedValue = Number.isInteger(value) ? value : value.toFixed(2);
        return currency + formattedValue;
    }
    /**
   * Formats a number for slider values
   * @param {number} value
   * @param {string} currency
   * @param {string} delimiter
   * @return {string}
   */ formatSliderValue(value, currency = '', delimiter = '') {
        if (value < 1000) return this.formatSliderAtom(value, currency);
        if (value < 1000000) return `${this.formatSliderAtom(value / 1000, currency)}${delimiter}K`;
        return `${this.formatSliderAtom(value / 1000000, currency)}${delimiter}M`;
    }
    /**
   * Format price slider range
   * @param {number} value
   * @param {Object} range
   * @param {string} currency
   * @param {Object} options
   * @return {string}
   */ formatSliderPriceRange(value, range, currency, options) {
        if (range.min === value && value !== 0) return `${options.lowPrefix}${this.formatSliderValue(value, currency, ' ')}`;
        if (range.max === value) return `${this.formatSliderValue(value, currency, ' ')}${options.highSuffix}`;
        return `${this.formatSliderValue(value, currency, ' ')}`;
    }
    /**
   * Format area slider range
   * @param {number} value
   * @param {Object} range
   * @param {string} suffix
   * @param {Object} options
   * @return {string}
   */ formatSliderAreaRange(value, range, suffix, options) {
        if (range.min === value && value !== 0) return `${options.lowPrefix}${this.formatSliderValue(value)} ${suffix}`;
        if (range.max === value) return `${this.formatSliderValue(value)}${options.highSuffix} ${suffix}`;
        return `${this.formatSliderValue(value)} ${suffix}`;
    }
    /**
   * Utility function to get properties search parameters from a set of jQuery objects
   * @param {Object} options
   * @param {jQuery|HTMLElement} [options.queryElement]
   * @param {jQuery|HTMLElement} [options.priceSliderElement]
   * @param {jQuery|HTMLElement} [options.areaSliderElement]
   * @param {jQuery|HTMLElement} [options.neighborhoodSelect]
   * @return {Object}
   */ // eslint-disable-next-line sonarjs/cognitive-complexity
    getSearchFormValues(options) {
        const { queryElement: queryElement, priceSliderElement: priceSliderElement, areaSliderElement: areaSliderElement, neighborhoodSelect: neighborhoodSelect } = options;
        const result = {};
        if (queryElement) result.search = queryElement.value || null;
        if (priceSliderElement) {
            const priceValues = priceSliderElement.value.split(';');
            const priceMinLimit = parseInt(priceSliderElement.dataset.min);
            const priceMaxLimit = parseInt(priceSliderElement.dataset.max);
            const priceMin = parseInt(priceValues[0]);
            const priceMax = parseInt(priceValues[1]);
            result.priceMin = priceMin !== priceMinLimit ? priceMin : null;
            result.priceMax = priceMax !== priceMaxLimit ? priceMax : null;
        }
        if (areaSliderElement) {
            const areaValues = areaSliderElement.value.split(';');
            const areaMinLimit = parseInt(areaSliderElement.dataset.min);
            const areaMaxLimit = parseInt(areaSliderElement.dataset.max);
            const areaMin = parseInt(areaValues[0]);
            const areaMax = parseInt(areaValues[1]);
            result.areaMin = areaMin !== areaMinLimit ? areaMin : null;
            result.areaMax = areaMax !== areaMaxLimit ? areaMax : null;
        }
        if (neighborhoodSelect) result.neighborhoodId = neighborhoodSelect.value || null;
        return result;
    }
    /**
   * Add supports for object typeof values to be encoded on URL
   * Ref: https://stackoverflow.com/questions/1714786/query-string-encoding-of-a-javascript-object
   * @param {*} obj
   * @param {string} prefix
   * @param {string} baseParam used for grouping in case of nested objects
   * @returns
   */ // eslint-disable-next-line sonarjs/cognitive-complexity
    serializeObj(obj, prefix = '', baseParam = '') {
        const result = [];
        for(const prop in obj)if (obj.hasOwnProperty(prop)) {
            const value = obj[prop];
            let k;
            if (baseParam) {
                const newPrefix = prefix ? `[${prefix}][${prop}]` : `[${prop}]`;
                k = `${baseParam}${newPrefix}`;
            } else k = prefix ? `${prefix}[${prop}]` : prop;
            if (value !== null && Array.isArray(value)) {
                if (value.length) result.push(this.serializeArray(k, value));
            } else if (value !== null && typeof value === 'object') result.push(this.serializeObj(value, k));
            else result.push(`${k}=${encodeURIComponent(value)}`);
        }
        return result.join('&');
    }
    /**
   * Adds support for array values to be encoded on URL
   * @param {string} key
   * @param {Array} value
   * @param {string} baseParam
   */ serializeArray(key, value, baseParam = '') {
        const result = [];
        value.forEach((val)=>{
            const paramName = baseParam ? `${baseParam}${key}` : key;
            result.push(`${paramName}=${encodeURIComponent(val)}`);
        });
        return result.join('&');
    }
    /**
   * Private method to process string search values.
   * @param {Array} results comes from regex matchAll.
   * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters.
   * @returns
   */ _parseParamToObject(results, isAdvancedFilters = false) {
        if (!results.length) return null;
        const obj = {};
        for(let i = 0; i < results.length; i++)/* Results from regex match all come in this form:
      [ '&advancedFilters[query][statusIds][in]=uuid-segundo-123', '[query][statusIds][in]', 'uuid-segundo-123' ]
      So using every third value will be the actual value and the second value will be the path
    */ if ((i + 1) % 3 === 0) {
            const value = decodeURIComponent(results[i].replace(/\+/g, ' '));
            const path = results[i - 1];
            Object.assign(obj, this._setObjectPath(path, value, obj, isAdvancedFilters));
        }
        return obj;
    }
    /** *
   * Private method to set object value given a path
   * @param {String} path
   * @param {*} value
   * @param {Object} baseObj
   * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters.
   */ _setObjectPath(path, value, baseObj, isAdvancedFilters = false) {
        // eslint-disable-next-line
        const keys = path.split(/[\[\]]/).filter(Boolean);
        const afArrayKeys = [
            'in',
            'nin',
            'btw',
            'ciin',
            'cinin'
        ];
        const obj = {};
        let ref = obj;
        const valueExists = (0, $fc0a058ae42af628$export$267a1435fe18b8d4)(baseObj, keys.join('.'));
        keys.forEach((key, index)=>{
            if (index === keys.length - 1) {
                if (valueExists) ref[key] = Array.isArray(valueExists) ? [
                    ...valueExists,
                    value
                ] : [
                    valueExists,
                    value
                ];
                else ref[key] = isAdvancedFilters && afArrayKeys.includes(key) ? [
                    value
                ] : value;
            } else {
                ref[key] = baseObj[key] ? baseObj[key] : {};
                ref = ref[key];
            }
        });
        return obj;
    }
}


/* eslint-disable import/prefer-default-export */ 
class $2b1790aa32f109d1$export$43e435c053a109f6 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Expand Slider Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this._createLightbox = this._createLightbox.bind(this);
        this.expandSliders = [];
    }
    /**
   * Initialize Expand Slider Controller at run time
   * Attach handlers and events to DOM
   * @param {Object} options
   */ initialize(options = {}) {
        try {
            const { document: document } = this;
            const expandSliders = document.querySelectorAll('.has-mobile-expand');
            expandSliders.forEach((block)=>{
                this._addExpandButton(block);
            });
            this.expandSliders = this.expandSliders.concat(expandSliders);
        } catch (e) {
            // eslint-disable-next-line no-console
            console.log(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        const { document: document } = this;
        document.querySelectorAll('.lp-expand-btn, .lp-expand-btn-wrapper').forEach((element)=>element.remove());
        this.expandSliders = [];
    }
    /**
   * Create expand button for sliders
   * @param {HTMLElement} slider
   */ _addExpandButton(slider) {
        const { document: document } = this;
        const section = slider.closest('section[id]');
        const appendTargetSelector = slider.dataset.append;
        let expandBtn = section.querySelector('.lp-expand-btn');
        if (!expandBtn) {
            expandBtn = document.createElement('button');
            expandBtn.className = 'lp-expand-btn';
            expandBtn.setAttribute('aria-label', 'Open a lightbox');
            expandBtn.innerHTML = `<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>`;
            if (appendTargetSelector) {
                const appendTarget = section.querySelector(appendTargetSelector);
                if (appendTarget) appendTarget.appendChild(expandBtn);
            } else {
                const wrapper = document.createElement('div');
                wrapper.className = 'lp-expand-btn-wrapper';
                wrapper.style.position = 'relative';
                wrapper.appendChild(expandBtn);
                slider.parentNode.insertBefore(wrapper, slider.nextSibling);
            }
        }
        expandBtn.addEventListener('click', ()=>{
            this._createLightbox({
                slider: slider,
                section: section
            });
        });
    }
    /**
   * Creates a lightbox modal for displaying slider images in a larger view.
   *
   * @param {Object} params - The parameters for the function.
   * @param {HTMLElement} params.slider - The slider element containing images.
   * @param {HTMLElement} params.section - The section element related to the slider.
   * @param {number} [params.initialIndex] - Optional index of the image to show initially.
   */ _createLightbox({ slider: slider, section: section, initialIndex: initialIndex }) {
        const { window: window, document: document } = this;
        const modalId = `lightbox-for-${section?.id}`;
        const isSlickAvailable = window.$ && window.$.fn.slick;
        const isSectionSlickInitialized = isSlickAvailable && slider.slick;
        const isSplideAvailable = typeof window.Splide === 'function';
        const isSectionSplideInitialized = slider.classList.contains('is-initialized') && slider.classList.contains('splide');
        if (typeof window.lpUI.requestScrollLock === 'function') window.lpUI.requestScrollLock(modalId);
        else document.body.style.overflow = 'hidden';
        function createSlickLightbox() {
            const slickOverlayOptions = {
                arrows: true,
                dots: false,
                infinite: true,
                draggable: true,
                prevArrow: '<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',
                nextArrow: '<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'
            };
            const modal = document.createElement('div');
            modal.id = modalId;
            modal.className = 'lp-lightbox';
            modal.setAttribute('tabindex', '-1');
            modal.setAttribute('role', 'dialog');
            modal.setAttribute('aria-modal', 'true');
            modal.innerHTML = `
        <button class="lp-lightbox__close" aria-label="close modal"></button>
        <div class="lp-lightbox__content">
          <div class="lp-lightbox__carousel"></div>
        </div>
      `;
            document.body.appendChild(modal);
            const overlaySlider = modal.querySelector('.lp-lightbox__carousel');
            modal.classList.add('show');
            let sourceImages;
            if (isSectionSlickInitialized) {
                sourceImages = slider.slick.$slides.find('img');
                slickOverlayOptions.initialSlide = slider.slick?.currentSlide || 0;
                sourceImages.each(function() {
                    window.$('.lp-lightbox__carousel').append(window.$(this).clone(false).removeAttr('style').wrap('<div class="lp-lightbox__slide"></div>').parent());
                });
            } else {
                sourceImages = slider.querySelectorAll('img');
                sourceImages.forEach((img)=>{
                    const imgClone = img.cloneNode(true);
                    imgClone.removeAttribute('style');
                    const slide = document.createElement('div');
                    slide.className = 'lp-lightbox__slide';
                    slide.appendChild(imgClone);
                    overlaySlider.appendChild(slide);
                });
            }
            window.$(overlaySlider).slick(slickOverlayOptions);
            // Focus modal after it's created
            setTimeout(()=>{
                modal.focus();
            }, 100);
            // Keyboard navigation handler
            const handleKeydown = (e)=>{
                if (!modal.classList.contains('show')) return;
                const prevArrow = modal.querySelector('.lp-lightbox-arrow--prev');
                const nextArrow = modal.querySelector('.lp-lightbox-arrow--next');
                const closeBtn = modal.querySelector('.lp-lightbox__close');
                if (e.key === 'ArrowLeft' && prevArrow) {
                    e.preventDefault();
                    prevArrow.click();
                } else if (e.key === 'ArrowRight' && nextArrow) {
                    e.preventDefault();
                    nextArrow.click();
                } else if (e.key === 'Escape' && closeBtn) {
                    e.preventDefault();
                    closeBtn.click();
                }
            };
            document.addEventListener('keydown', handleKeydown);
            modal.querySelector('.lp-lightbox__close').addEventListener('click', ()=>{
                document.removeEventListener('keydown', handleKeydown);
                modal.classList.remove('show');
                const currentSlide = overlaySlider?.slick ? window.$(overlaySlider).slick('slickCurrentSlide') : 0;
                if (overlaySlider?.slick) window.$(overlaySlider).slick('unslick');
                if (isSectionSlickInitialized) window.$(slider).slick('slickGoTo', currentSlide);
                if (typeof window.lpUI.releaseScrollLock === 'function') window.lpUI.releaseScrollLock(modalId);
                else document.body.style.overflow = '';
                modal.remove();
            });
        }
        function createSplideLightbox() {
            const splideOptions = {
                rewind: true,
                arrows: true,
                arrowPath: '',
                type: 'loop',
                clones: 1,
                pagination: false,
                perPage: 1,
                perMove: 1
            };
            const modal = document.createElement('div');
            modal.id = modalId;
            modal.className = 'lp-lightbox';
            modal.setAttribute('tabindex', '-1');
            modal.setAttribute('role', 'dialog');
            modal.setAttribute('aria-modal', 'true');
            modal.innerHTML = `
      <button class="lp-lightbox__close" aria-label="close modal"></button>
      <div class="lp-lightbox__content">
        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
          <div class="splide__arrows">
            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
          </div>
          <div class="splide__track">
            <ul class="splide__list"></ul>
          </div>
        </div>
      </div>
    `;
            if (typeof window.lpUI.requestScrollLock === 'function') window.lpUI.requestScrollLock(modalId);
            else document.body.style.overflow = 'hidden';
            document.body.appendChild(modal);
            const overlaySlider = modal.querySelector('.lp-lightbox__carousel');
            const overlaySliderList = overlaySlider.querySelector('.splide__list');
            modal.classList.add('show');
            let sourceImages;
            if (isSectionSplideInitialized) sourceImages = slider.querySelectorAll('.splide__slide:not(.splide__slide--clone) img');
            else sourceImages = slider.querySelectorAll('img');
            sourceImages.forEach((img)=>{
                const imgClone = img.cloneNode(true);
                imgClone.removeAttribute('style');
                const slide = document.createElement('li');
                slide.className = 'lp-lightbox__slide splide__slide';
                slide.appendChild(imgClone);
                overlaySliderList.appendChild(slide);
            });
            const overlaySplide = new window.Splide(overlaySlider, splideOptions);
            overlaySplide.mount();
            // Navigate to initial index if provided
            if (typeof initialIndex !== 'undefined' && initialIndex >= 0) overlaySplide.go(initialIndex);
            // Focus modal after it's created and mounted
            setTimeout(()=>{
                modal.focus();
            }, 100);
            // Keyboard navigation handler
            const handleKeydown = (e)=>{
                if (!modal.classList.contains('show')) return;
                const prevArrow = modal.querySelector('.splide__arrow--prev');
                const nextArrow = modal.querySelector('.splide__arrow--next');
                const closeBtn = modal.querySelector('.lp-lightbox__close');
                if (e.key === 'ArrowLeft' && prevArrow) {
                    e.preventDefault();
                    prevArrow.click();
                } else if (e.key === 'ArrowRight' && nextArrow) {
                    e.preventDefault();
                    nextArrow.click();
                } else if (e.key === 'Escape' && closeBtn) {
                    e.preventDefault();
                    closeBtn.click();
                }
            };
            document.addEventListener('keydown', handleKeydown);
            modal.querySelector('.lp-lightbox__close').addEventListener('click', ()=>{
                document.removeEventListener('keydown', handleKeydown);
                modal.classList.remove('show');
                if (overlaySplide) overlaySplide.destroy();
                if (typeof window.lpUI.releaseScrollLock === 'function') window.lpUI.releaseScrollLock(modalId);
                else document.body.style.overflow = '';
                modal.remove();
            });
        }
        if (isSlickAvailable && !isSectionSplideInitialized) createSlickLightbox();
        else if (isSplideAvailable) createSplideLightbox();
        else {
            window.luxuryPresence.libs.loadCss(window.luxuryPresence.libs.jsLibsMap.splide.cssSrc);
            window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.splide.jsSrc, ()=>{
                createSplideLightbox();
                window.luxuryPresence.libs.jsLibsMap.splide.isLoaded = true;
            });
        }
    }
}


/* eslint-disable import/prefer-default-export */ 
class $4f184d9bd3037f15$export$7a6215890afba974 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    // constructor is not needed as it is inherited from BaseController
    /**
   * Destroy
   */ destroy() {
        if (!this.window.divolte) this.window.divolteLp = function() {
            (this.window.divolteLp.q = this.window.divolteLp.q || []).push(// eslint-disable-next-line prefer-rest-params
            arguments);
        };
    }
    /**
   * Initialize divolte controller
   * @param {Object} options
   */ initialize(options = {}) {
        const { divolteServiceUrl: divolteServiceUrl } = this.config;
        if (!divolteServiceUrl || this.window.divolte) return;
        this.loadScript();
    }
    /**
   * loads divolte
   */ loadScript() {
        const { divolteServiceUrl: divolteServiceUrl } = this.config;
        const script = this.document.createElement('script');
        script.id = 'divolte-script';
        script.type = 'text/javascript';
        script.defer = true;
        script.async = true;
        script.src = `${divolteServiceUrl}/divolte.js`;
        this.document.head.appendChild(script);
        script.addEventListener('load', this.executeQueue.bind(this));
    }
    /**
   * executeQueue
   */ executeQueue() {
        (this.window.divolteLp.q || []).forEach(([methodName, params])=>{
            this[methodName](params);
        });
        this.window.divolteLp = this.divolteLp.bind(this);
    }
    /**
   * divolteLp
   * @param {string} name
   * @param {Object} params
   */ divolteLp(name, params) {
        try {
            this[name](params);
        } catch (error) {
            // eslint-disable-next-line no-console
            console.log(error);
        }
    }
    /**
   * sendLpEvent
   * @param {string} name
   * @param {Object} params
   */ sendLpEvent(name, params) {
        // Events must be defined in divolte schema! To ensure correct usage, event names are validated here.
        if (!name.includes('pageView')) {
            // Event not defined
            // eslint-disable-next-line no-console
            console.log(`${name} IS NOT SUPPORTED`);
            return;
        }
        const { companyId: companyId, templateId: templateId, websiteId: websiteId, pageId: pageId, shareId: shareId, pageMeta: pageMeta } = this.config;
        const baseParams = {
            companyId: companyId,
            templateId: templateId,
            websiteId: websiteId,
            pageId: pageId,
            shareId: shareId,
            pageMeta: pageMeta
        };
        this.window.divolte.signal(name, Object.assign(baseParams, params));
    }
    /**
   * sendLpPageView
   */ sendLpPageView() {
        this.sendLpEvent('pageView', {});
    }
}


/* eslint-disable import/prefer-default-export */ 
const $102039871668a1df$var$EVENT_BUS_SCRIPT = 'event-bus-js.js';
const $102039871668a1df$var$EVENT_BUS_VERSION = 'v2.1.0';
class $102039871668a1df$export$e22e4b1be0bb6c61 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    // eslint-disable-next-line @typescript-eslint/no-useless-constructor
    constructor(config, window, document){
        super(config, window, document);
    }
    /**
   * Initialize EventBus controller
   * @param {Object} options
   */ initialize(options = {}) {
        const enabled = options.enabled !== undefined ? options.enabled : this.config.eventBus?.enabled;
        if (enabled && this.config.eventBus?.apiKey && this.config.eventBus?.url) this.loadScript();
    }
    /**
   * loads eventBus script
   */ loadScript() {
        const { eventBusUrl: eventBusUrl } = this.config;
        const script = this.document.createElement('script');
        script.id = 'posthog-script';
        script.type = 'text/javascript';
        script.defer = true;
        script.async = true;
        script.src = `${eventBusUrl}/${$102039871668a1df$var$EVENT_BUS_VERSION}/${$102039871668a1df$var$EVENT_BUS_SCRIPT}`;
        this.document.head.appendChild(script);
        script.addEventListener('load', this.executeQueue.bind(this));
    }
    /**
   * executeQueue - Process queued eventBusLp calls
   */ executeQueue() {
        // Initialize the event bus provider using the global EventBusJS
        if (this.window.LuxuryPresenceEventBus) this.window.eventBusProvider = this.window.LuxuryPresenceEventBus.createEventBusProvider({
            apiKey: this.config.eventBus.apiKey,
            host: this.config.eventBus.url
        });
        (this.window.eventBusLp.q || []).forEach(([methodName, params])=>{
            this[methodName](params);
        });
        // Replace queue function with real function
        this.window.eventBusLp = this.eventBusLp.bind(this);
    }
    /**
   * Destroy
   */ destroy() {
        if (!this.window.eventBusProvider) {
            // Reset to queue function if no provider exists
            this.window.eventBusLp = function() {
                (this.window.eventBusLp.q = this.window.eventBusLp.q || []).push(// eslint-disable-next-line prefer-rest-params
                arguments);
            };
            return;
        }
        this.window.eventBusProvider.shutdown();
    }
    /**
   * sendLpEvent
   * @param {string} eventType
   * @param {Object} data
   */ sendLpEvent(eventType, data) {
        // Events must be defined in event-bus schema! To ensure correct usage, event types are validated here.
        if (eventType !== 'user.activity.page.viewed') {
            // Event type not defined
            // eslint-disable-next-line no-console
            console.log(`${eventType} IS NOT SUPPORTED`);
            return;
        }
        if (!this.window.eventBusProvider) return;
        const { companyId: companyId } = this.config;
        const eventData = {
            company: companyId,
            data: {}
        };
        try {
            this.window.eventBusProvider.capture(eventType, eventData);
        } catch (error) {
            // eslint-disable-next-line no-console
            console.log('EventBus capture error:', error);
        }
    }
    /**
   * eventBusLp
   * @param {string} name
   * @param {Object} params
   */ eventBusLp(name, params) {
        try {
            this[name](params);
        } catch (error) {
            // eslint-disable-next-line no-console
            console.log(error);
        }
    }
    /**
   * sendLpPageView
   */ sendLpPageView() {
        this.sendLpEvent('user.activity.page.viewed', {});
    }
}


/* eslint-disable import/prefer-default-export */ 
const $0d25a3fa2e0f4f92$var$EVENT_NAME = 'oauthSuccess';
class $0d25a3fa2e0f4f92$export$b718a981691eae5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Button Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.successListeners = [];
        this._listenToMessages = this._listenToMessages.bind(this);
        this._listenToOneTapMessage = this._listenToOneTapMessage.bind(this);
    }
    /**
   * Initialize OAuth Controller at run time
   * Swap out special buttons for the iframe
   * @param {Object} options
   */ initialize(options = {}) {
        try {
            // handle google one tap
            if (options.googleSignOnEnabled && !options.iframe) this._renderGoogleOneTap();
            // handle google sign in buttons
            this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach((el)=>this._convertGoogleSignIn(el));
            // handle facebook sign in buttons
            this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach((el)=>this._convertFacebookSignIn(el));
        } catch (e) {
            // eslint-disable-next-line no-console
            console.log(e);
        }
    }
    /**
   * Controllers must implement a "destroy" method to be called
   * after page navigation to remove event handlers / cleanup
   */ destroy() {
        this.successListeners.forEach((callback)=>{
            this.window.removeEventListener('message', this._listenToMessages);
            this.window.removeEventListener('message', this._listenToOneTapMessage);
            this.window.removeEventListener($0d25a3fa2e0f4f92$var$EVENT_NAME, this.window[callback]);
        });
    }
    /**
   * Convert google one tap
   */ _renderGoogleOneTap() {
        if (!this._isGoogleOneTapOnCooldown()) {
            const dummyEl = this.document.createElement('div');
            // eslint-disable-next-line no-undef
            google.accounts.id.initializeIntermediate({
                src: this._buildUrlAndCopyAttributes(dummyEl, dummyEl, 'googleOneTap')
            });
            this.window.localStorage.removeItem('googleOneTapExpiration');
            this.window.addEventListener('message', this._listenToOneTapMessage);
        }
    }
    /**
   * Listening for messages from BSS one tap iframes
   * @param {MessageEvent} e
   */ _listenToOneTapMessage(e) {
        const messageTypes = {
            SHOW_INTERMEDIATE_IFRAME: 'show_intermediate_iframe',
            HIDE_INTERMEDIATE_IFRAME: 'hide_intermediate_iframe'
        };
        const iframeId = 'onetap_google_intermediate_iframe';
        const { buyerSellerServiceUrl: buyerSellerServiceUrl } = this.config;
        const { data: data, origin: origin } = e;
        const { type: type, height: height, event: event, source: source, token: token } = data;
        if (type === messageTypes.SHOW_INTERMEDIATE_IFRAME || type === messageTypes.HIDE_INTERMEDIATE_IFRAME) {
            const bssIframe = this.document.getElementById(iframeId);
            if (bssIframe) {
                bssIframe.style.height = height;
                bssIframe.style.display = type === messageTypes.SHOW_INTERMEDIATE_IFRAME ? 'unset' : 'none';
            }
        }
        // these events are generated by our code in the bss iframe
        if (origin === buyerSellerServiceUrl && source === 'GOOGLE_SIGN_ON') {
            if (event === 'success') {
                this._setExpirationLsItem(86400000); // 24 hours
                this._handleQualifyingQuestionsModal(token);
            } else if (event === 'cancel') this._setExpirationLsItem(7200000); // 2 hours
        }
    }
    /**
   * Set expiration local storage item for google one tap
   * @param {number} ms
   */ _setExpirationLsItem(ms) {
        const expiration = new Date().getTime() + ms;
        this.window.localStorage.setItem('googleOneTapExpiration', expiration);
    }
    /**
   * Check if google one tap is expired
   * @return {boolean}
   */ _isGoogleOneTapOnCooldown() {
        const expirationTime = this.window.localStorage.getItem('googleOneTapExpiration');
        return Number(expirationTime) > new Date().getTime();
    }
    /**
   * Convert google sign in buttons
   * @param {HTMLElement} el
   */ _convertGoogleSignIn(el) {
        this._replaceWithIframe('googleSignIn', el);
    }
    /**
   * Convert google sign in buttons
   * @param {HTMLElement} el
   */ _convertFacebookSignIn(el) {
        this._replaceWithIframe('facebookSignIn', el);
    }
    /**
   * Convert google sign in buttons
   * @param {'googleSignIn' | 'facebookSignIn'} provider
   * @param {HTMLElement} el
   */ _replaceWithIframe(provider, el) {
        this._attachSuccessCallback(el);
        const iframe = this.document.createElement('iframe');
        iframe.src = this._buildUrlAndCopyAttributes(el, iframe, provider);
        iframe.dataset.isSocialOauthButton = true;
        el.replaceWith(iframe);
    }
    /**
   * Listening for messages from BSS iframes
   * @param {Event} e
   */ _listenToMessages(e) {
        const { buyerSellerServiceUrl: buyerSellerServiceUrl } = this.config;
        // eslint-disable-next-line sonarjs/no-collapsible-if
        if (e.origin === buyerSellerServiceUrl) {
            if (e.data.event === 'success') {
                const event = new Event($0d25a3fa2e0f4f92$var$EVENT_NAME);
                this.window.dispatchEvent(event);
                this.successListeners.forEach((callback)=>{
                    if (this.window[callback]) this.window[callback](event);
                    else // eslint-disable-next-line no-console
                    console.error(`Callback function ${callback} not found on window object`);
                });
                this.document.documentElement.classList.add('is-login-success');
            }
        }
    }
    /**
   * Attach callback to iframe
   * @param {HTMLElement} el
   */ _attachSuccessCallback(el) {
        this.window.addEventListener('message', this._listenToMessages);
        const callbackFunction = el.dataset.onSuccessFunctionName;
        if (callbackFunction) this.successListeners.push(callbackFunction);
    }
    /**
   * Build Iframe URL
   * @param {HTMLElement} source
   * @param {HTMLElement} target
   * @param {string} provider
   * @return {string}
   */ _buildUrlAndCopyAttributes(source, target, provider) {
        const { buyerSellerServiceUrl: buyerSellerServiceUrl, companyId: companyId, websiteId: websiteId, pageId: pageId, pageMeta: pageMeta } = this.config;
        const { location: location } = this.window;
        const sourceUrl = location.origin + location.pathname;
        const destination = new URL(`${buyerSellerServiceUrl}/buttons/${provider}`);
        const utm = this.window.localStorage.getItem('utm_vars');
        const referrer = this.window.localStorage.getItem('referrer');
        destination.searchParams.append('companyId', companyId);
        destination.searchParams.append('websiteId', websiteId);
        destination.searchParams.append('pageId', pageId);
        destination.searchParams.append('sourceUrl', sourceUrl);
        destination.searchParams.append('pageMeta', JSON.stringify(pageMeta));
        if (utm) destination.searchParams.append('utm', utm);
        if (referrer) destination.searchParams.append('referrer', referrer);
        // Google and Facebook Attributes used to style the social button
        const RESERVED_ATTRIBUTES = [
            'data-size',
            'data-width',
            'data-text',
            'data-button-type',
            'data-shape',
            'data-layout',
            'data-max-rows',
            'data-use-continue-as',
            'data-type',
            'data-theme',
            'data-logo_alignment',
            'data-locale'
        ];
        Array.from(source.attributes).forEach((attribute)=>{
            if (RESERVED_ATTRIBUTES.includes(attribute.nodeName)) destination.searchParams.append(attribute.nodeName, attribute.nodeValue);
            else target.setAttribute(attribute.nodeName === 'id' ? 'data-id' : attribute.nodeName, attribute.nodeValue);
        });
        return destination.toString();
    }
    /**
   * Decode a JWT token to extract payload information
   * @param {string} token - The JWT token to decode
   * @return {Object|null} The decoded payload object or null if decoding fails
   */ _decodeToken(token) {
        try {
            const parts = token.split('.');
            const payload = parts[1];
            const base64 = payload.replace(/-/g, '+').replace(/_/g, '/');
            const padding = 4 - base64.length % 4;
            const padded = padding === 4 ? base64 : base64 + '='.repeat(padding);
            return JSON.parse(atob(padded));
        } catch (error) {
            return null;
        }
    }
    /**
   * Handle qualifying questions modal showing for Google Sign On
   * Decodes the JWT token to extract user email and shows the modal if available
   * @param {string} token - The JWT token containing user information
   */ _handleQualifyingQuestionsModal(token) {
        if (token && this.window.luxuryPresence && this.window.luxuryPresence.qualifyingQuestionsModal) {
            // Decoding only for lead attribution, fine to skip signature verification
            const decoded = this._decodeToken(token);
            if (decoded && decoded.email) this.window.luxuryPresence.qualifyingQuestionsModal.showModal(decoded.email, 'Google Sign On');
        }
    }
}


/* eslint-disable import/prefer-default-export */ 
class $dcf72769f009ff26$export$b900d6fe921fd49c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    /**
   * Initialize Qualifying Questions Modal Controller at build time
   * @param { ConfigController } config
   * @param {Window} window
   * @param {Document} document
   */ constructor(config, window, document){
        super(config, window, document);
        this.showModal = this.showModal.bind(this);
        this.hasModalBeenSubmitted = this.hasModalBeenSubmitted.bind(this);
        this.modalId = 'qualifying-questions-modal';
        this.cookieKey = 'qualifyingQuestionsModalSubmitted';
        this.qualifyingQuestionsModalEnabled = true;
        // Store references for cleanup
        this.eventListeners = [];
        this.timeouts = [];
    }
    initialize(options = {}) {
        this.qualifyingQuestionsModalEnabled = options.qualifyingQuestionsModalEnabled ?? this.qualifyingQuestionsModalEnabled;
        if (!this.qualifyingQuestionsModalEnabled) return;
        this.attachModalCloseListeners();
    }
    destroy() {
        // Remove all stored event listeners
        this.eventListeners.forEach(({ element: element, event: event, handler: handler })=>{
            if (element && element.removeEventListener) element.removeEventListener(event, handler);
        });
        this.timeouts.forEach((timeoutId)=>{
            clearTimeout(timeoutId);
        });
        this.restoreBodyScroll();
        this.eventListeners = [];
        this.timeouts = [];
    }
    /**
   * Check if modal has been submitted using cookie-based deduplication
   * @return {boolean}
   */ hasModalBeenSubmitted() {
        const cookieValue = this.getCookie(this.cookieKey);
        return cookieValue === 'true';
    }
    /**
   * Set cookie to prevent modal from showing again
   */ setModalSubmittedCookie() {
        this.setCookie(this.cookieKey, 'true', 365); // 1 year
    }
    showModal(email, triggerSource) {
        if (!this.qualifyingQuestionsModalEnabled || this.hasModalBeenSubmitted()) return;
        this.updateEmailValue(email);
        this.updateTriggerSourceValue(triggerSource);
        this.showModalElement();
    }
    /**
   * Get modal element with error handling
   * @return {Element|null}
   */ getModalElement() {
        const modal = this.document.getElementById(this.modalId);
        if (!modal) console.error('Modal element not found:', this.modalId);
        return modal;
    }
    updateEmailValue(email) {
        const modal = this.getModalElement();
        if (!modal) return;
        const emailInput = modal.querySelector('input[name="email"]');
        if (emailInput && typeof email === 'string') emailInput.value = email;
    }
    updateTriggerSourceValue(triggerSource) {
        const modal = this.getModalElement();
        if (!modal) return;
        const triggerSourceInput = modal.querySelector(`#${this.modalId}-triggerSource`);
        if (triggerSourceInput && typeof triggerSource === 'string') triggerSourceInput.value = triggerSource;
    }
    showModalElement() {
        const modal = this.getModalElement();
        if (!modal) return;
        modal.style.display = 'flex';
        this.blockBodyScroll();
    }
    /**
   * Helper method to get cookie value
   * @param {string} name
   * @return {string|null}
   */ getCookie(name) {
        const value = `; ${this.document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return decodeURIComponent(parts.pop().split(';').shift());
        return null;
    }
    /**
   * Helper method to set cookie
   * @param {string} name
   * @param {string} value
   * @param {number} days
   */ setCookie(name, value, days) {
        let expires = '';
        if (days) {
            const date = new Date();
            date.setTime(date.getTime() + days * 86400000);
            expires = `; expires=${date.toUTCString()}`;
        }
        let attrs = '; path=/; SameSite=Lax';
        if (this.window && this.window.location && this.window.location.protocol === 'https:') attrs += '; Secure';
        this.document.cookie = `${name}=${encodeURIComponent(value || '')}${expires}${attrs}`;
    }
    blockBodyScroll() {
        this._prevOverflow = this.document.body.style.overflow;
        this.document.body.style.overflow = 'hidden';
    }
    restoreBodyScroll() {
        this.document.body.style.overflow = this._prevOverflow || '';
        this._prevOverflow = null;
    }
    attachModalCloseListeners() {
        const modal = this.getModalElement();
        if (!modal) return;
        // Listen for form submission success (when modal closes automatically)
        const form = this.document.getElementById(`${this.modalId}-form`);
        if (form) {
            const formSubmittedHandler = ()=>{
                // Set cookie to prevent showing again and hide modal
                this.setModalSubmittedCookie();
                const timeoutId = setTimeout(()=>{
                    modal.style.display = 'none';
                    this.restoreBodyScroll();
                }, 100);
                this.timeouts.push(timeoutId);
            };
            form.addEventListener('formsubmitted', formSubmittedHandler);
            this.eventListeners.push({
                element: form,
                event: 'formsubmitted',
                handler: formSubmittedHandler
            });
        }
        // Listen for close button clicks
        const closeButton = modal.querySelector('[data-dismiss="modal"]');
        if (closeButton) {
            const closeButtonHandler = ()=>{
                modal.style.display = 'none';
                this.restoreBodyScroll();
            };
            closeButton.addEventListener('click', closeButtonHandler);
            this.eventListeners.push({
                element: closeButton,
                event: 'click',
                handler: closeButtonHandler
            });
        }
        // Listen for backdrop clicks
        const backdropClickHandler = (e)=>{
            // Check if click is on the modal backdrop (not on the modal content)
            if (e.target === modal || e.target.id === this.modalId) {
                modal.style.display = 'none';
                this.restoreBodyScroll();
            }
        };
        modal.addEventListener('click', backdropClickHandler);
        this.eventListeners.push({
            element: modal,
            event: 'click',
            handler: backdropClickHandler
        });
    }
}


/* eslint-disable import/prefer-default-export */ 
class $50eefeef8d1f2372$export$8a2bf06fbae4dde extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    constructor(configController, window, document){
        super(configController, window, document);
        this.isValidating = false;
        this.lastValidationResult = null;
        this.lastValidationTime = null;
        this.validationCacheDuration = 300000; // 5 minutes
    }
    /**
   * Destroy
   */ destroy() {
        this.isValidating = false;
        this.lastValidationResult = null;
        this.lastValidationTime = null;
    }
    /**
   * Validate user session using GraphQL validSession query
   * @param {Object} options - Options for session validation
   * @param {boolean} options.useCache - Whether to use cached validation result
   * @returns {Promise<boolean>} - true if session is valid, false otherwise
   */ async validateSession(options = {}) {
        const { useCache: useCache = true } = options;
        if (useCache && this.lastValidationResult !== null && this.lastValidationTime) {
            const timeSinceLastValidation = Date.now() - this.lastValidationTime;
            if (timeSinceLastValidation < this.validationCacheDuration) return this.lastValidationResult;
        }
        if (this.isValidating) return this.lastValidationResult !== null ? this.lastValidationResult : false;
        this.isValidating = true;
        const query = `
      query {
        validSession {
          success
        }
      }
    `;
        try {
            // query from same domain as the website
            const response = await this.window.fetch(`/graphql`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                credentials: 'include',
                body: JSON.stringify({
                    query: query
                })
            });
            if (!response.ok) {
                // eslint-disable-next-line no-console
                console.error('SessionController: HTTP error during session validation', response.status);
                this.lastValidationResult = false;
                this.lastValidationTime = Date.now();
                return false;
            }
            const data = await response.json();
            if (data.errors) {
                this.lastValidationResult = false;
                this.lastValidationTime = Date.now();
                return false;
            }
            const isValid = data.data?.validSession?.success === true;
            this.lastValidationResult = isValid;
            this.lastValidationTime = Date.now();
            return isValid;
        } catch (error) {
            // eslint-disable-next-line no-console
            console.error('SessionController: Error validating session', error);
            this.lastValidationResult = false;
            this.lastValidationTime = Date.now();
            return false;
        } finally{
            this.isValidating = false;
        }
    }
    /**
   * Clear validation cache
   */ clearCache() {
        this.lastValidationResult = null;
        this.lastValidationTime = null;
    }
}


/* eslint-disable import/prefer-default-export */ 
class $6bb500f67d8e6b7b$export$19036f3e654d7262 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) {
    constructor(config, window, document){
        super(config, window, document);
        this.consentListener = null;
    }
    /**
   * Destroy and cleanup event listeners
   */ destroy() {
        if (this.consentListener) {
            this.document.removeEventListener('cookieyes_consent_update', this.consentListener);
            this.consentListener = null;
        }
    }
    /**
   * Check if cookieyes-consent cookie includes analytics consent
   * @returns {boolean} True if analytics is consented to
   */ hasAnalyticsConsent() {
        const cookieString = this.document.cookie;
        const match = cookieString.match(/cookieyes-consent=([^;]+)/);
        if (!match) return false;
        try {
            const cookieValue = decodeURIComponent(match[1]);
            if (cookieValue.includes(',')) {
                const segments = cookieValue.split(',').map((c)=>c.trim());
                // Handle CookieYes key:value format (e.g., "analytics:yes")
                if (segments.some((s)=>s.includes(':'))) return segments.some((s)=>s === 'analytics:yes');
                return segments.includes('analytics');
            }
            return cookieValue.includes('analytics');
        } catch (error) {
            return false;
        }
    }
    /**
   * Load PostHog and Divolte scripts
   */ loadScript() {
        const shouldAddPostHogScript = !this.document.getElementById('posthog-script');
        const shouldAddDivolteScript = !this.document.getElementById('divolte-script');
        if (shouldAddPostHogScript) this.window.luxuryPresence.eventBus.initialize({
            enabled: this.config.eventBus?.enabled
        });
        if (shouldAddDivolteScript) this.window.luxuryPresence.divolte.initialize({});
    }
    /**
   * Remove PostHog and Divolte scripts
   */ removeScripts() {
        this.window.luxuryPresence?.eventBus?.destroy?.();
        this.window.luxuryPresence?.divolte?.destroy?.();
        this.document.getElementById('posthog-script')?.remove();
        this.document.getElementById('divolte-script')?.remove();
    }
    /**
   * Initialize CookieYes controller
   */ async initialize() {
        const isAuthenticated = await this.window.luxuryPresence.session.validateSession();
        if (this.hasAnalyticsConsent() || isAuthenticated) this.loadScript();
        if (!this.consentListener) {
            this.consentListener = (eventData)=>{
                const data = eventData.detail;
                if (data?.accepted && Array.isArray(data.accepted) && data.accepted.includes('analytics')) this.loadScript();
                else this.removeScripts();
            };
            this.document.addEventListener('cookieyes_consent_update', this.consentListener);
        }
    }
}


const $fa0280e505379701$export$1fd2b467a3644d37 = new (0, $dc851cf3939b6ef5$export$ff0712c26d5458f7)({});
const $fa0280e505379701$export$e12694e911a05f40 = new (0, $0ead03fdb95fa9ce$export$d507f25e63650365)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$3de614e59a842917 = new (0, $d48f9f944810f613$export$ca3218b7861b9cb0)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$fb9b298fdbf31455 = new (0, $68a2d4aa500c7a05$export$61ec8f2b6291ec31)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$178cc3119b453c2a = new (0, $e10bd00497be8876$export$3c5380623cf51249)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$9376af1a01686f2 = new (0, $ea6901fdf47e0ec1$export$3c19195edca3fa5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$94d36f806562393e = new (0, $0a0ad49f13c0b8fd$export$ba9afeb75f20f616)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$89e66d1faf94651e = new (0, $2b1790aa32f109d1$export$43e435c053a109f6)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$7743b07270cd6d6c = new (0, $4f184d9bd3037f15$export$7a6215890afba974)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$40a7039551318c37 = new (0, $102039871668a1df$export$e22e4b1be0bb6c61)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$8a0bbf7e7652fcfc = new (0, $0d25a3fa2e0f4f92$export$b718a981691eae5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$b313b3f6544c97a3 = new (0, $dcf72769f009ff26$export$b900d6fe921fd49c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$b526bc4ac03268ef = new (0, $50eefeef8d1f2372$export$8a2bf06fbae4dde)($fa0280e505379701$export$1fd2b467a3644d37, window, document);
const $fa0280e505379701$export$ec41309a2e823376 = new (0, $6bb500f67d8e6b7b$export$19036f3e654d7262)($fa0280e505379701$export$1fd2b467a3644d37, window, document);


/**
 * Attach controller to window for usage
 * @param {string} key
 * @param {any} controller
 */ function $89a8a84b77163415$var$attachController(key, controller) {
    if (window.luxuryPresence[key]) try {
        // New version of sdk, destroy previous
        window.luxuryPresence[key].destroy();
    } catch (e) {
        // eslint-disable-next-line no-console
        console.log(e);
    }
    window.luxuryPresence[key] = controller;
}
$89a8a84b77163415$var$attachController('config', (0, $fa0280e505379701$export$1fd2b467a3644d37));
$89a8a84b77163415$var$attachController('modals', (0, $fa0280e505379701$export$e12694e911a05f40));
$89a8a84b77163415$var$attachController('buttons', (0, $fa0280e505379701$export$3de614e59a842917));
$89a8a84b77163415$var$attachController('validation', (0, $fa0280e505379701$export$fb9b298fdbf31455));
$89a8a84b77163415$var$attachController('contactForms', (0, $fa0280e505379701$export$178cc3119b453c2a));
$89a8a84b77163415$var$attachController('mapApiLoader', (0, $fa0280e505379701$export$9376af1a01686f2));
$89a8a84b77163415$var$attachController('pagination', (0, $fa0280e505379701$export$94d36f806562393e));
$89a8a84b77163415$var$attachController('expandSliders', (0, $fa0280e505379701$export$89e66d1faf94651e));
$89a8a84b77163415$var$attachController('divolte', (0, $fa0280e505379701$export$7743b07270cd6d6c));
$89a8a84b77163415$var$attachController('eventBus', (0, $fa0280e505379701$export$40a7039551318c37));
$89a8a84b77163415$var$attachController('oauth', (0, $fa0280e505379701$export$8a0bbf7e7652fcfc));
$89a8a84b77163415$var$attachController('qualifyingQuestionsModal', (0, $fa0280e505379701$export$b313b3f6544c97a3));
$89a8a84b77163415$var$attachController('session', (0, $fa0280e505379701$export$b526bc4ac03268ef));
$89a8a84b77163415$var$attachController('cookieyes', (0, $fa0280e505379701$export$ec41309a2e823376));
// methods for existing elements (can be removed later after elements updated)
window.luxuryPresence.formatSliderPriceRange = (0, $fa0280e505379701$export$94d36f806562393e).formatSliderPriceRange.bind((0, $fa0280e505379701$export$94d36f806562393e));
window.luxuryPresence.formatSliderAreaRange = (0, $fa0280e505379701$export$94d36f806562393e).formatSliderAreaRange.bind((0, $fa0280e505379701$export$94d36f806562393e));
// method below doesn't use 'this', but just to be safe in case of further method updates
window.luxuryPresence.getSearchFormValues = (0, $fa0280e505379701$export$94d36f806562393e).getSearchFormValues.bind((0, $fa0280e505379701$export$94d36f806562393e));
window.luxuryPresence.handlebarsHelpersFactory = function(handlebarsInstance) {
    return (0, (/*@__PURE__*/$parcel$interopDefault($53de3c160faf5a81$exports)))(handlebarsInstance, {
        isEqual (a, b) {
            // eslint-disable-next-line
            return a == b;
        }
    });
};



})();
//# sourceMappingURL=lp-sdk.js.map

    </script>

    <script>
        var lpGlobalInitialized = false;

        function lpGlobalInit () {
          if (lpGlobalInitialized) {
            return;
          }
            lpGlobalInitialized = true;
            // Initialize wow animation plugin only according to turbolinks
            var wow;
            if (window.WOW) {
                wow = new WOW({
                    animateClass: 'animated',
                    offset: wowOffset,
                    live: false,
                    callback: function(box) {}
                });
            }
            // Initialize handlebar helpers only once
            function handlebarsInit() {
              if (!window.Handlebars) {
                return;
              }
              HandlebarsIntl.registerWith(Handlebars);
              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
            }

            handlebarsInit();

              var modalContentUrl = "/modals.html";
                const modalsContainer = document.getElementById('modals');
                if (modalsContainer) {
                  fetch(modalContentUrl).then(function(res) {
                    if (!res.ok) {
                      throw new Error(`HTTP error! Status: ${res.status}`);
                    }
                    return res.text();
                  }).then(function(resultText) {
                    modalsContainer.innerHTML = resultText;

                    // now we need to execute all script elements
                    Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) {
                      const script  = document.createElement("script");
                      script.text = s.innerHTML;
                      Array.from(s.attributes).forEach(function (a) {
                        script.setAttribute(a.name, a.value);
                      })
                      s.parentNode.replaceChild(script, s);
                    });

                    try {
                      window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes);
                      window.luxuryPresence.contactForms.initialize({ selector: '#modals' });
                      window.luxuryPresence.validation.initialize({ selector: '#modals' });
                      window.luxuryPresence.oauth.initialize({
                        googleSignOnEnabled: true,
                        iframe: false });
                    } catch (e) {
                      console.log(e);
                    }
                    document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => {
                      closeModalBtn.addEventListener('click', function() {
                        window.lpUI.hideClosestModal(closeModalBtn);
                      });
                    });
                  }).catch((e) => console.log(e));
                }
            /* Initialize Luxury Presence SDK */
            try {
                window.luxuryPresence.config.setCompany("b65b761a-571f-45ab-be60-492e55f0b92d", {});
                window.luxuryPresence.config.setWebsite("63de9fe7-3777-4c92-88c9-218fa3f2a21f", {
                    myhomeDashboardEnabled: true
                });
                const url = new URL(window.location.href);
                const shareId = url.searchParams.get('shareId');
                window.luxuryPresence.config.setPage("fd166c31-0017-4de6-9800-5a962f1112a9", {
                    sourceResource: "",
                    pageElementId: "",
                    pageQueryVariables: {},
                    shareId: "",
                });
                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
                  window.luxuryPresence.config.setEventBus({
                    enabled: true,
                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
                    url: "https://p.luxurypresence.com",
                  });
                window.luxuryPresence.config.setTemplateId("dbfbedc7-c7e2-4812-86ee-0ee198862c21", {});
                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
                window.luxuryPresence.buttons.initialize({});
                window.luxuryPresence.eventBus.initialize({});
                window.luxuryPresence.contactForms.initialize({});
                window.luxuryPresence.validation.initialize({});
                window.luxuryPresence.expandSliders.initialize({});
                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
                    window.luxuryPresence.divolte.initialize({});
            } catch (e) {
                console.log(e);
            }

            /* Inject Section Specific Javascript */
                try {
(function init(sectionDomId) {
  const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content');
  if (disclaimerLabel) {
    const input = disclaimerLabel.querySelector('input');
    if (input) {
      input.setAttribute('id', `${sectionDomId}-termsAccepted`);
      input.value = 'true';
      const label = document.createElement('label');
      label.setAttribute('for', `${sectionDomId}-termsAccepted`);
      label.classList.add('lp-visually-hidden');
      label.textContent = 'Opt in/Disclaimer Consent:';
      disclaimerLabel.prepend(label);
    }
  }
  function setHttp(link) {
    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
      link = 'https://' + link;
    }
    return link;
  }
  const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link');
  socialLinks.forEach(linkElement => {
    const href = linkElement.getAttribute('href');
    if (href) {
      linkElement.setAttribute('href', setHttp(href));
    }
  });
  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
  if (redirectLink.length) {
    const rawHref = setHttp(redirectLink.attr('href'));
    let formEvent;
    if (rawHref) {
      formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset';
      $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () {
        redirectLink.attr('href', rawHref);
        redirectLink[0].click();
      });
    }
  }
})('modal-global-contact-us');
} catch(e) {
console.log(e);
}
                
                try {
(function init(sectionDomId) {
  const $section = $('#' + sectionDomId);
  const $hamburger = $section.find('.hamburger-component');
  function onSideMenuShow() {
    if (!$hamburger.hasClass('active')) {
      $hamburger.addClass('active');
    }
  }
  function onSideMenuHide() {
    $hamburger.removeClass('active');
  }
  const $window = $(window);
  $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow);
  $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide);
  const $subContainers = $section.find('.navigation__item.sub-nav-container');
  $subContainers.hover(function () {
    $(this).find('.sub-nav').addClass('visible');
  }, function () {
    $(this).find('.sub-nav').removeClass('visible');
  });
  $window.on('click.lpui-auto-clean', function () {
    $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown');
  });
  let fixedWidth = 0;
  const rightPad = 20;
  function fixSubsPosition() {
    const wWidth = window.innerWidth;
    if (innerWidth === fixedWidth) {
      return;
    }
    fixedWidth = wWidth;
    $subContainers.each(function () {
      const $sub = $(this).find('.sub-nav');
      $sub[0].style.right = '';
      const sRect = $sub[0].getBoundingClientRect();
      const sRight = sRect.left + sRect.width;
      if (sRight > wWidth - rightPad) {
        const parentRect = $sub[0].offsetParent.getBoundingClientRect();
        const parentRight = parentRect.left + parentRect.width;
        $sub[0].style.right = `${parentRight - wWidth + rightPad}px`;
      }
    });
  }
  var debouncer;
  $window.on('resize.lpui-auto-clean', function () {
    clearTimeout(debouncer);
    debouncer = setTimeout(fixSubsPosition, 500);
  });
  fixSubsPosition();
  if ($('.property-intro').length || $('.property-intro-2').length) {
    $('nav').addClass('dark-opening');
    $("#global-navbar").css({
      "background-color": "rgb(26, 26, 26)",
      "color": "rgb(255, 255, 255)"
    });
  }
})('global-navbar');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId, options) {
  var elementSelector = options.elementSelector || 'nav';
  var element = document.querySelector(elementSelector);
  var sections = document.querySelectorAll('body > section');
  var subNavContainers = element.querySelectorAll('.sub-nav');
  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
  var fontColor = options.fontColor || '#fff';
  var fontColorScroll = options.fontColorScroll || '#000';
  var didScroll = false;
  var lastScrollTop = 0;
  var delta = 5;

  // eslint-disable-next-line sonarjs/no-collapsible-if
  if (wow) {
    // Wowjs might not trigger for position fixed elements
    if (window.scrollY > 0) {
      element.querySelectorAll('.wow').forEach(el => wow.show(el));
    }
  }
  function adjustNavPinState() {
    // Remove 'visible' class from all subNavContainers
    for (let i = 0; i < subNavContainers.length; i++) {
      subNavContainers[i].classList.remove('visible');
    }
    if (window.scrollY > 0) {
      element.style.backgroundColor = backgroundColorScroll;
      element.style.color = fontColorScroll;
      element.classList.add('scroll');
    } else {
      element.style.backgroundColor = initialBackgroundColor;
      element.style.color = fontColor;
      element.classList.remove('scroll');
    }
  }
  adjustNavPinState();
  function onScroll() {
    didScroll = true;
  }
  window.addEventListener('scroll', onScroll);

  // eslint-disable-next-line
  var debounceInterval = setInterval(() => {
    if (didScroll) {
      // eslint-disable-next-line
      hasScrolled();
      didScroll = false;
    }
  }, 250);
  function hasScrolled() {
    adjustNavPinState();
    // eslint-disable-next-line
    var navbarHeight = element.offsetHeight;
    // eslint-disable-next-line
    var st = window.scrollY;

    // Make sure they scroll more than delta
    if (Math.abs(lastScrollTop - st) <= delta) {
      return;
    }
    if (st > lastScrollTop && st > navbarHeight) {
      // Scroll Down
      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
      document.documentElement.style.setProperty('--global-header-height', '0px');

      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
      sections.forEach(section => {
        if (section.classList.contains('sticky')) {
          section.style.top = '0px';
        }
      });
    } else {
      // Scroll Up
      // eslint-disable-next-line
      if (st + window.innerHeight < document.documentElement.scrollHeight) {
        element.style.transform = `translateY(0) scaleY(1)`;
        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
        sections.forEach(section => {
          if (section.classList.contains('sticky')) {
            section.style.top = `${navbarHeight}px`;
          }
        });
      }
    }
    lastScrollTop = st;
  }
})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}"));
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  var sidemenu = $('#' + sectionDomId);
  sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () {
    window.lpUI.requestScrollLock(sectionDomId);
  });
  $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () {
    window.lpUI.releaseScrollLock(sectionDomId);
  });
  $(window).click(function (e) {
    let targetContactForm = $(e.target).closest('#modal-global-contact-us').length;
    let targetSideMenu = $(e.target).closest('.sidemenu').length;
    let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length;
    let targetHamburger = $(e.target).closest('.hamburger-component').length;
    if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) {
      $('body').removeClass('locked');
      $('.hamburger').removeClass('active');
      $('.sidemenu').removeClass('visible');
      $('#modal-global-contact-us').removeClass('visible');
    }
  });
})('global-sidemenu');
} catch(e) {
console.log(e);
}
                
                try {
(function init(footerId) {
  var textContent = $(".text_content_wrap p").text().trim().length;
  const socialLinks = $(`#${footerId} .lp-socials__link`);
  if (textContent < 1) {
    $(".text_content_wrap").remove();
    $(".second_text_footer").css({
      'margin-bottom': 0
    });
  }
  if (socialLinks.length > 0) {
    socialLinks.attr('data-wow-offset', '10');
  }
  if ($(window).width() > 1280) {
    let footer = document.querySelector("#" + footerId);
    let copyrightElem = footer.querySelector(".copy_zone");
    if (copyrightElem) {
      copyrightElem.style.whiteSpace = "nowrap";
      let nowrapElemWidth = copyrightElem.clientWidth;
      copyrightElem.style.whiteSpace = "";
      let normalElemWidth = copyrightElem.clientWidth;
      if (nowrapElemWidth > normalElemWidth) {
        footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto");
      }
    }
  }
  const form = $("#" + footerId).find("form");
  const redirectLink = $('#' + footerId + ' .redirect-link');
  form.on("reset", function () {
    redirectPage(redirectLink);
  });
  function redirectPage(link) {
    if (link.length) {
      const rawHref = link.attr('href');
      link.attr('href', setHttp(rawHref));
      link[0].click();
    }
  }
  function setHttp(link) {
    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
      link = 'http://' + link;
    }
    return link;
  }
})('global-footer');
} catch(e) {
console.log(e);
}
                
                try {
(function init(options) {})('global-mobile-contact');
} catch(e) {
console.log(e);
}
                
                try {
(function init(sectionDomId) {
  var $section = $('#' + sectionDomId);
  var $carousel = $section.find('.collection');
  var currentPreTitle = '';
  var currentTitle = '';
  const $videoWrap = $section.find('.full-screen-video-component > .video-wrapper');
  if ($videoWrap.length) {
    const $video = $videoWrap.find('video');
    $video.each(function () {
      var v = this;
      if (v.readyState > 0) {
        $videoWrap.addClass('playing');
      } else {
        v.addEventListener('canplay', function () {
          $videoWrap.addClass('playing');
        }, {
          once: true
        });
      }
    });
  }
  $('#' + sectionDomId + ' .collection').slick({
    dots: $('#' + sectionDomId + ' .collection').find('.item').length > 1 ? true : false,
    arrows: false,
    speed: 0,
    fade: true,
    autoplay: true,
    autoplaySpeed: 6000,
    pauseOnHover: false,
    pauseOnFocus: false
  });
  $carousel.on('beforeChange', function () {
    currentPreTitle = $(this).find('.slick-current').find('.lp-text--pretitle').text();
    currentTitle = $(this).find('.slick-current').find('.lp-h1').text();
    $(this).find('.slick-current').find('.lp-h1').addClass('animation');
    $(this).find('.slick-current').find('.lp-text--pretitle').addClass('animation');
  });
  $carousel.on('afterChange', function () {
    if (currentPreTitle === $(this).find('.slick-current').find('.lp-text--pretitle').text()) {
      $(this).find('.slick-current').find('.lp-text--pretitle').removeClass('animation');
    }
    if (currentTitle === $(this).find('.slick-current').find('.lp-h1').text()) {
      $(this).find('.slick-current').find('.lp-h1').removeClass('animation');
    }
  });
})('section-f8501e10-7b3a-49a5-b949-038d197a6de1', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-1bffde17-ce8b-4d04-a56b-17e7400b56b6', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  var $section = $('#' + sectionDomId);
  var $window = $(window);
  var duration = 3000;
  var step = 50;
  var items = [];
  var started = false;

  function analyze() {
    var elems = $section.find('.jsValue');
    elems.each(function () {
      var $el = $(this);
      var match = $el.text().match(/^(\D*)(\d(.*\d)?)(.*)$/);

      if (match) {
        var str = match[2];
        var frac = 0;
        var fSep = '';
        var nmb;

        if (!/\..*\./.test(str)) {
          var m = str.match(/\.(\d+)$/);

          if (m) {
            frac = m[1].length;
            fSep = '.';
            nmb = parseFloat(str.replace(/[^\d\.]/g, ''));
          }
        }

        if (!frac) {
          if (!/,.*,/.test(str)) {
            var _m = str.match(/,(\d+)$/);

            if (_m) {
              frac = _m[1].length;
              fSep = ',';
              nmb = parseFloat(str.replace(',', '.').replace(/[^\d\.]/g, ''));
            }
          }
        }

        if (!frac) {
          nmb = parseInt(str.replace(/\D/g, ''));
        }

        items.push({
          el: $el,
          prefix: match[1] || '',
          suffix: match[4] || '',
          str: match[2],
          nmb: nmb,
          frac: frac,
          fSep: fSep
        });
      }
    });

    if (!items.length) {
      started = true;
      return;
    }
  }

  function animate() {
    if (started) {
      return;
    }

    started = true;
    setTimeout(iterate, step);
  }

  var pos = 0;

  function iterate() {
    if (pos >= duration) {
      items.forEach(function (item) {
        item.el.text(item.prefix + item.str + item.suffix);
      });
    } else {
      items.forEach(function (item) {
        var valStr = formatValue(item, pos / duration);
        item.el.text(item.prefix + valStr + item.suffix);
      });
      pos += step;
      setTimeout(iterate, step);
    }
  }

  function formatValue(item, val) {
    var str = (item.nmb * val).toFixed(item.frac).replace(/\D/, '');
    var i = 0;
    var j = 0;
    var res = '';

    while (i < item.str.length && j < str.length) {
      var c = item.str[item.str.length - i - 1];
      var code = c.charCodeAt(0);

      if (code >= 48 && code <= 57) {
        res = str[str.length - j - 1] + res;
        j++;
      } else {
        res = c + res;
      }

      i++;
    }

    return res;
  }

  function calculateVisibility() {
    if ($window.height() + $window.scrollTop() >= $section.offset().top) {
      $window.off('scroll', calculateVisibility);
      animate();
    }
  }

  analyze();

  if (items.length) {
    $window.on('scroll.lpui-auto-clean', calculateVisibility);
    calculateVisibility();
  }
})('section-2852d6fc-6c03-4903-bcaf-a0a9a75af219', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-8183afcd-f853-4a0c-bcc8-6ec0dedce6ef', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  const $section = $(`#${sectionDomId}`);
  const $container = $section.find('.featured-properties-section');
  const $slider = $section.find('.featured-properties');
  const threeSlides = $container.hasClass('three-slides');
  const autoScroll = $container[0].dataset['autoScroll'] === 'true';
  const autoplaySpeed = parseInt($container[0].dataset['autoplaySpeed']) || 3000;
  const sliderOptions = {
    "arrows": true,
    "infinite": false,
    autoplay: autoScroll,
    autoplaySpeed: autoplaySpeed,
    "nextArrow": $section.find('.slick-links-nav .next'),
    "prevArrow": $section.find('.slick-links-nav .prev'),
    "slidesToShow": 2,
    "slidesToScroll": 2,
    "responsive": [{
      "settings": {
        "slidesToShow": 1,
        "slidesToScroll": 1
      },
      "breakpoint": 769
    }]
  };
  if (threeSlides) {
    sliderOptions.slidesToShow = 3;
    sliderOptions.slidesToScroll = 3;
    sliderOptions.responsive.unshift({
      "settings": {
        "slidesToShow": 2,
        "slidesToScroll": 2
      },
      "breakpoint": 1100
    });
  }
  if (!$slider.hasClass('.slick-initialized')) {
    $slider.slick(sliderOptions);
  }
  $slider.on('beforeChange', function () {
    $slider.find('.featured-properties__share.featured-properties__share--opened').removeClass('featured-properties__share--opened');
  });
  $slider.find('.featured-properties__share .btn').on('click', function () {
    $parent = $(this).parent();
    if ($parent.hasClass('featured-properties__share--opened')) {
      $parent.removeClass('featured-properties__share--opened');
    } else {
      $slider.find('.featured-properties__share.featured-properties__share--opened').removeClass('featured-properties__share--opened');
      $parent.addClass('featured-properties__share--opened');
    }
  });
})('section-7158147c-d74d-429b-b6c6-4c7d0c2af2d7', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  // please write all js here and use sectionDomId in selectors in order of DOM encapsulation
  const section = document.getElementById(sectionDomId);
  const currentDate = section.querySelector('.js-current-date');

  //create a new date with format month/day/year and hour:minute:seconds
  const date = new Date();
  const newDate = new Date(date).toLocaleString("default", {
    year: 'numeric',
    month: 'numeric',
    day: 'numeric',
    hour: 'numeric',
    minute: 'numeric',
    timeZone: 'UTC'
  });
  const formattedDate = `${newDate.split(',')[0]} at ${newDate.split(',')[1]} UTC`;
  currentDate.innerHTML = formattedDate;
})('section-29717e9a-de44-4e49-9975-b28ba0f26844', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  const $section = $('#' + sectionDomId);
  if ($section.find('.parallax').length) $section.addClass('parallax-enabled');
  if ($section.find('.video-wrapper').length) $section.addClass('video');
  slider = $section.find('.js-slider');
  var autoscroll = slider.attr('data-autoscroll') === 'true';
  var autoscrollInterval = parseInt(slider.attr('data-autoscroll-interval'), 10) || 6;
  if (slider.length > 0) {
    slider.slick({
      dots: false,
      fade: true,
      speed: 300,
      arrows: true,
      infinite: true,
      nextArrow: ".featured-testimonials .slick-links-nav .next",
      prevArrow: ".featured-testimonials .slick-links-nav .prev",
      slidesToShow: 1,
      adaptiveHeight: true,
      slidesToScroll: 1,
      autoplay: autoscroll,
      autoplaySpeed: autoscrollInterval * 1000
    });
  }
})('section-de2eba42-2d4b-414f-9155-1fc45868f4ae', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId, options) {
  var section = null;
  switch (sectionDomId) {
    case 'NAVBAR':
      section = $('body > nav');
      break;
    case 'FOOTER':
      section = $('body > footer');
      break;
    case 'SIDEMENU':
      section = $('body > div.sidemenu');
      break;
    case 'CONTACT':
      section = $('#modal-global-contact-us');
      break;
    case 'MOBILE_CONTACT':
      section = $('body > div.mobile-contact-wrapper');
      break;
    case 'SUBSCRIBE':
      // Subscribe Not Implemented
      section = null;
      break;
    case 'ACCOUNT':
      // Account Not Implemented
      section = null;
      break;
    default:
      section = $(`#${sectionDomId}`);
  }
  if (!section.length) {
    return;
  }
  if (options.nextArrow) {
    // eslint-disable-next-line
    options.nextArrow = `#${sectionDomId} ${options.nextArrow}`;
  }
  if (options.prevArrow) {
    // eslint-disable-next-line
    options.prevArrow = `#${sectionDomId} ${options.prevArrow}`;
  }
  if (options.asNavFor) {
    // eslint-disable-next-line
    var mainImageOptions = {
      slidesToShow: 1,
      slidesToScroll: 1,
      fade: true,
      asNavFor: `#${sectionDomId} .carousel-container`,
      nextArrow: options.nextArrow,
      prevArrow: options.prevArrow,
      swipe: true
    };
    $(options.asNavFor).not('.slick-initialized').slick(mainImageOptions);
    section.find('.carousel-container').not('.slick-initialized').slick(options);
  } else {
    section.find('.carousel-container').not('.slick-initialized').slick(options);
  }
})('section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7', JSON.parse("{\"infinite\":true,\"nextArrow\":\".featured-neighborhoods-section .slick-links-nav .next\",\"prevArrow\":\".featured-neighborhoods-section .slick-links-nav .prev\",\"responsive\":[{\"settings\":{\"speed\":700,\"infinite\":true,\"centerMode\":false,\"slidesToShow\":1,\"variableWidth\":false},\"breakpoint\":769}],\"initialSlide\":0,\"slidesToShow\":3,\"variableWidth\":true,\"slidesToScroll\":1,\"companyId\":\"b65b761a-571f-45ab-be60-492e55f0b92d\",\"usePageResource\":false,\"sectionIndex\":8}"));
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-5aa0f6cc-9785-40ab-8458-ca5d877c7ef7', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-9de5ba12-4ad0-4e3c-a4cf-cbcf6a6f9866', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
})('section-bf5b71cc-01f1-4ed5-818d-438f1d613e7d', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  const form = $("#" + sectionDomId).find("form");
  form.find('input[name="name"]').on("keyup", function () {
    if (this.value.replaceAll(/\d/g, "").trim() === "") {
      this.setCustomValidity("Please enter your name.");
    } else {
      this.setCustomValidity("");
    }
  });
  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
  form.on("reset", function () {
    redirectPage(redirectLink);
  });
  function redirectPage(link) {
    if (link.length) {
      const rawHref = link.attr('href');
      link.attr('href', setHttp(rawHref));
      link[0].click();
    }
  }
  function setHttp(link) {
    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
      link = 'http://' + link;
    }
    return link;
  }
})('section-972db57c-49f9-4cf2-9467-97573455255a', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-6c4e9a33-a4fe-4d26-a4d2-f76898b4eae1', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {})('section-f7e61660-7e70-4ad4-b112-1b0cd3be9b41', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  const $section = $('#' + sectionDomId);
  if ($section.find('.parallax').length) $section.addClass('parallax-enabled');
  if ($section.find('.video-wrapper').length) $section.addClass('video');
})('section-eac163cd-4654-4942-9e3b-f61dc37708e1', 'undefined');
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId, options) {
  let section = null;
  switch (sectionDomId) {
    case 'NAVBAR':
      section = document.querySelector('body > nav, #global-navbar');
      break;
    case 'FOOTER':
      section = document.querySelector('body > footer, #global-footer');
      break;
    case 'SIDEMENU':
      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
      break;
    case 'CONTACT':
      section = document.querySelector('#modal-global-contact-us');
      break;
    case 'MOBILE_CONTACT':
      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
      break;
    case 'SUBSCRIBE':
      // Subscribe Not Implemented
      section = null;
      break;
    case 'ACCOUNT':
      // Account Not Implemented
      section = null;
      break;
    default:
      section = document.querySelector('#' + sectionDomId);
  }
  if (!section) {
    return;
  }
  var url = window.luxuryPresence.defaults.apiGatewayUrl;
  var companyId = window.luxuryPresence.defaults.companyId;
  var limit = options.limit || 8;
  if (typeof limit === 'string') {
    limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected
  }
  var templateSelector = options.templateSelector || '.jsIGTemplate';
  var containerSelector = options.containerSelector || '.jsIGContainer';
  var hasDataClass = options.hasDataClass || 'has-data';
  var hideActivateMessage = options.hasDataClass || false;
  var payload = {
    companyId: companyId,
    limit: limit
  };
  if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) {
    payload.resourceId = options.resourceId;
    payload.resource = options.resource || 'agent';
    payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true;
  }
  var query = 'query InstagramFeed (\n' + '  $companyId: String\n' + '  $instagramAuthorizationId: String\n' + '  $username: String\n' + (payload.resourceId ? '$resource: InstagramAuthResourceEnum\n $resourceId: ID\n $fallbackToNoResource: Boolean' : '') + '  $limit: Int\n' + ') {\n' + '  instagramFeed (\n' + '  companyId: $companyId\n' + '  instagramAuthorizationId: $instagramAuthorizationId\n' + '  username: $username\n' + (payload.resourceId ? 'resource: $resource\n resourceId: $resourceId\n fallbackToNoResource: $fallbackToNoResource' : '') + '  limit: $limit\n' + '  ) {\n' + '    active\n' + '    feedUrl\n' + '    username\n' + '    items {\n' + '      id\n' + '      caption\n' + '      commentsCount\n' + '      likeCount\n' + '      mediaType\n' + '      mediaUrl\n' + '      permalink\n' + '      shortcode\n' + '      thumbnailUrl\n' + '      timestamp\n' + '      username\n' + '    }\n' + '  }\n' + '}\n';
  var templateHTML = section.querySelector(templateSelector)?.innerHTML || '';
  var template = Handlebars.compile(templateHTML);
  var container = section.querySelector(containerSelector);
  if (options.variables) {
    Object.keys(options.variables).forEach(function (key) {
      if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) {
        payload[key] = options.variables[key];
      }
    });
  }
  function getData() {
    var feed = {
      error: true
    };
    superagent.post(url + '/graphql').withCredentials() // for EB
    .send({
      query: query,
      variables: payload
    }).then(res => {
      try {
        if (!res.body.errors) {
          feed = res.body.data.instagramFeed;
          if (!feed.active) {
            if (!hideActivateMessage && sectionDomId === 'section-temp' && container) {
              if (payload.resourceId) {
                container.innerHTML = '<div style="text-align: center">Instagram account is not connected to selected ' + payload.resource + '.<br /> Connect it on the ' + payload.resource + ' page</div>';
              } else {
                container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>';
              }
            }
          } else {
            if (feed.items.length) {
              if (hasDataClass) {
                section.classList.add(hasDataClass);
              }
              const feedName = feed.username;
              section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl));
              section.querySelectorAll('.jsIGName').forEach(name => {
                name.textContent = '@' + feedName;
                name.setAttribute('title', '@' + feedName);
              });
              if (container && template) {
                container.innerHTML = template(feed);
              }
            }
          }
        }
      } catch (e) {}
      section.dispatchEvent(new CustomEvent('ig-data', {
        detail: feed
      }));
    }).catch(e => {
      console.log('err', e);
      section.dispatchEvent(new CustomEvent('ig-data', {
        detail: feed
      }));
    });
  }
  getData();
})('section-0929c1d2-5b73-4e76-8c74-1a6fa1528363', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"b65b761a-571f-45ab-be60-492e55f0b92d\",\"sectionIndex\":15}"));
} catch(e) {
console.log(e);
}
                try {
(function init(sectionDomId) {
  const $section = $('#' + sectionDomId);
  var templateHTML = $section.find('.jsIGItem').html();
  var itemTemplate = templateHTML && Handlebars.compile(templateHTML);
  const $container = $section.find('.ig-feed-feed');
  const $topPrev = $section.find('.top-nav-prev');
  const $topNext = $section.find('.top-nav-next');
  const $bottomPrev = $section.find('.bottom-nav-prev');
  const $bottomNext = $section.find('.bottom-nav-next');
  let limit = 33;
  try {
    limit = parseInt($container[0].dataset['limit']);
  } catch (e) {}
  if (!limit) {
    limit = 33;
  }
  let igFeed = {};
  let usedWidth = 0;
  let slider = null;
  $section.on('ig-data', function (ev, feed) {
    feed = ev.detail || feed;
    igFeed = feed;
    if (feed.active && feed.items.length) {
      buildSlider();
    }
  });
  $(window).on('resize.lpui-auto-clean', onResize);
  let timer = null;
  function onResize() {
    clearTimeout(timer);
    timer = window.setTimeout(buildSlider, 50);
  }
  function getLayout(w, n) {
    if (w > 1100) {
      if (n > 7) {
        return {
          type: 'type1',
          single: 1,
          multi: n,
          slides: 3,
          slider: n > 9
        };
      }
      if (n > 5) {
        return {
          type: 'type1',
          single: 2,
          multi: n,
          slides: 3,
          slider: false
        };
      }
      return {
        type: 'type1',
        single: n,
        multi: n,
        slides: 3,
        slider: n > 3
      };
    } else if (w > 880) {
      if (n > 4) {
        return {
          type: 'type2',
          single: 1,
          multi: n,
          slides: 2.5,
          slider: n > 7
        };
      }
      return {
        type: 'type1',
        single: n,
        multi: n,
        slides: 3,
        slider: n > 3
      };
    } else if (w > 767) {
      if (n > 4) {
        return {
          type: 'type3',
          single: 1,
          multi: n,
          slides: 2,
          slider: n > 5
        };
      }
      return {
        type: 'type4',
        single: n,
        multi: n,
        slides: 2,
        slider: n > 2
      };
    } else if (w > 460) {
      return {
        type: 'type4',
        single: n,
        multi: n,
        slides: 2,
        slider: n > 2
      };
    }
    return {
      type: 'type5',
      single: n,
      multi: n,
      slides: 1,
      slider: n > 1
    };
  }
  function ensureClass($el, className) {
    if ($el.hasClass(className)) {
      return;
    }
    $el.addClass(className);
  }
  function makeSquare($el) {
    const el = $el[0];
    el.style.width = '';
    el.style.height = '';
    const rect = el.getBoundingClientRect();
    if (rect.width !== rect.height) {
      el.style.width = rect.height + 'px';
    }
  }
  function buildSlider() {
    const cWidth = $container[0].getBoundingClientRect().width;
    if (cWidth === usedWidth) {
      return;
    }
    $container.empty();
    slider = $('<div class="ig-feed-slider"></div>');
    const items = igFeed.items.slice(0, limit);
    const layout = getLayout(cWidth, items.length);
    let i = 0;
    let slide = null;
    while (i < layout.single) {
      slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider);
      i++;
    }
    while (i < layout.multi) {
      slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider);
      let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide);
      const lim = i + 4;
      while (i < lim && i < layout.multi) {
        slideContent.append(itemTemplate(items[i]));
        i++;
      }
    }
    $container.append(slider);
    if (layout.slider) {
      $topPrev.removeClass('hidden-control');
      $topNext.removeClass('hidden-control');
      $bottomPrev.removeClass('hidden-control');
      $bottomNext.removeClass('hidden-control');
      let prev, next;
      if ($bottomPrev.parent()[0].getBoundingClientRect().width) {
        prev = $bottomPrev;
        next = $bottomNext;
      } else {
        prev = $topPrev;
        next = $topNext;
        makeSquare($topPrev);
        makeSquare($topNext);
      }
      slider.children().each(function () {
        this.style.width = this.getBoundingClientRect().width + 'px';
      });
      slider.slick({
        dots: false,
        prevArrow: prev,
        nextArrow: next,
        slidesToScroll: 1,
        infinite: false,
        slidesToShow: layout.slides
      });
    } else {
      ensureClass($topPrev, 'hidden-control');
      ensureClass($topNext, 'hidden-control');
      ensureClass($bottomPrev, 'hidden-control');
      ensureClass($bottomNext, 'hidden-control');
    }
  }
})('section-0929c1d2-5b73-4e76-8c74-1a6fa1528363', 'undefined');
} catch(e) {
console.log(e);
}

            var { body } = document;
            var globalNav = body.querySelector(':scope > nav');
            var globalSideMenu = body.querySelector(':scope > div.sidemenu');

            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
                modalCloseBtn.addEventListener('click', function() {
                window.lpUI.hideClosestModal(modalCloseBtn);
              });
            });

            window.addEventListener('click', function() {
                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
                    sharedPopup.style.display = 'none' ;
                });
            });

            /* Misc Partials / Addons */
            function initWOW() {
                if (wow) {
                    wow.init();
                    wow.scrollHandler();
                    setTimeout(function () {
                        const wowHideStyle = document.getElementById('wow-hide-elements');
                        if(wowHideStyle) {
                            wowHideStyle.disabled = true;
                        }
                    }, 1);
                }
            }

            const wowHideElements =  document.getElementById('wow-hide-elements');
            if (wowHideElements) {
               wowHideElements.disabled = false;
            }

                initWOW();

            /* Generic Navbar Handling */
            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
                hamburgerComponent.addEventListener('click', function() {
                window.lpUI.sideMenuToggle();
              });
            });
            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
                toggleEl.addEventListener('click', function() {
                window.lpUI.sideMenuToggle();
              });
            });

            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
                linkEl.addEventListener('click', function(e) {
                  e.preventDefault();
                  e.stopPropagation();
                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
                  if (subNav && subNav.classList.contains('visible')){
                    subNav.classList.remove('visible');
                  } else {
                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
                      globalSubNav.classList.remove('visible');
                    });
                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
                        sideMenuSubNav.classList.remove('visible');
                    });
                    subNav?.classList.add('visible');
                  }
                });
            });
            window.addEventListener('click', function() {
                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
                    subNavEl.classList.remove('visible');
                });
            });

        }

        document.addEventListener('DOMContentLoaded', lpGlobalInit);

    </script>

    <script type="module">
    function selectorExists(selector) {
        return document.querySelector(selector) !== null;
    }

    // Function to initialize the third-party library
    function initParoller(selector = '.my-paroller') {
        var $parollerElements = $(selector);
        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
            $parollerElements.paroller();
        }
    }

    const parollerSelector = '.my-paroller';

    if (selectorExists(parollerSelector)) {
        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
            initParoller(parollerSelector);
            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
        });
    }
    </script>

            <!-- Google Tag Manager (noscript) -->
            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-K8W5FZF"
            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
            <!-- End Google Tag Manager -->
            <!-- Google Tag Manager (noscript) -->
            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T9SFQGHZ"
            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
            <!-- End Google Tag Manager -->
        
            <script src="https://cdn.userway.org/widget.js" data-account="n1DRbtZoc3" defer onload="onAccessibilityWidgetLoaded()"></script>
            <script>
                function onAccessibilityWidgetLoaded() {
                    var MS_IN_TWO_MINUTES = 120000;
                    window.setTimeout(function() {
                        var accessibilityWidget = document.querySelector('.uwy:not(.uon)');
                        if (accessibilityWidget) {
                            accessibilityWidget.style.display = 'none';
                        }
                    }, MS_IN_TWO_MINUTES);
                }
            </script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a07831ec6a491612',t:'MTc4MDc1NzA2NQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>
