PageSourceSearch

https://fowlersakeyteam.com/properties/sold

html fowlersakeyteam.com collected 2026-10-09 00:37:30 UTC 331,657 bytes, 3,483 lines download raw bytes

1<!DOCTYPE html>
2<html class="no-js" lang=en>
3<head>
4    <meta charset="utf-8">
5    <meta http-equiv="x-ua-compatible" content="ie=edge">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7    <meta name="twitter:card" content="summary_large_image">
8    <meta property="og:type" content="website">
9        <title>Our Recent Sales | Fowler Sakey Team</title>
10        <meta property="og:title" content="Our Recent Sales | Fowler Sakey Team">
11        <meta name="twitter:title" content="Our Recent Sales | Fowler Sakey Team">
12        <meta name="description" content="Check out some of the recent transactions from Fowler Sakey Team. Are you thinking about moving out or selling your home? Give them a call now!">
13        <meta property="og:description" content="Check out some of the recent transactions from Fowler Sakey Team. Are you thinking about moving out or selling your home? Give them a call now!">
14        <meta name="twitter:description" content="Check out some of the recent transactions from Fowler Sakey Team. Are you thinking about moving out or selling your home? Give them a call now!">
15        <meta property="og:image" content="https://res.cloudinary.com/luxuryp/images/w_1920,c_limit,f_auto,q_auto/nhwjq4voihymohcsfght/wwu">
16        <meta name="twitter:image" content="https://res.cloudinary.com/luxuryp/images/w_1920,c_limit,f_auto,q_auto/nhwjq4voihymohcsfght/wwu">
17        <meta property="og:url" content="https://fowlersakeyteam.com/properties/sold">
18        <link rel="canonical" href="https://fowlersakeyteam.com/properties/sold">
19    
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19
20    <link rel="preconnect" href="https://fonts.googleapis.com">
21    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
22    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i">
23    <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'">
24    <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript>
25    <link rel="icon" type="image/x-icon" href="/favicon.ico">
26    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
27    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
28    <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
29    <style id="global-css">:root{--global-primary-font-family:Montserrat,sans-serif;--global-primary-font-family-short:Montserrat;--global-secondary-font-family:Montserrat,sans-serif;--global-secondary-font-family-short:Montserrat;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:15px;--global-h1-font-size:56px;--global-h2-font-size:40px;--global-h3-font-size:32px;--global-h4-font-size:24px;--global-h5-font-size:22px;--global-h6-font-size:20px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:Montserrat,sans-serif;font-size:15px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Montserrat,sans-serif;}h1{font-size:56px;}h2{font-size:40px;}h3{font-size:32px;}h4{font-size:24px;}h5{font-size:22px;}h6{font-size:20px;}</style>
30        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/corcoran-agent-2/index.css" />
31    <style id="website-css">h1{text-transform:uppercase!important;}.lp-h1{text-transform:uppercase!important;}h2{text-transform:uppercase!important;}.lp-h2{text-transform:uppercase!important;}h3{text-transform:uppercase!important;}.lp-h3{text-transform:uppercase!important;}div#global-sidemenu.sidemenu a,nav#global-navbar a{text-transform:uppercase;}div#global-sidemenu.sidemenu button,nav#global-navbar button{text-transform:uppercase;}nav .navigation__link,nav .hamburger{font-size:15px!important;}@media(min-width:768px){.basic-margins{margin-bottom:96px;}}#modal-global-contact-us .contact-form__close,#modal-global-contact-us .close{position:absolute!important;}@media(min-width:561px){.contact_popup h1.contact-form__title{font-size:50px!important;}}footer .footer-container .top__right form .title{text-transform:uppercase;}#modal-global-contact-us .contact-form__close,#modal-global-contact-us .close{width:15px!important;height:15px!important;}nav#global-navbar .navigation__item{margin:0 12px!important;}nav#global-navbar .navigation{margin-left:unset!important;padding-right:0!important;}nav#global-navbar .header.scroll{-webkit-transform:translateY(0px) scaleY(1)!important;-moz-transform:translateY(0px) scaleY(1)!important;-ms-transform:translateY(0px) scaleY(1)!important;transform:translateY(0px) scaleY(1)!important;background-color:#fff!important;}nav#global-navbar .header.scroll li.navigation__item a.navigation__link{color:#000!important;}nav#global-navbar .header.scroll li.navigation__item a.navigation__link span:after{background-color:#000;}nav#global-navbar .header.scroll button.hamburger-component.hamburger{color:#000;}nav#global-navbar .header.scroll .header{margin-top:0;}nav#global-navbar .header.scroll .header a.logo__link img:last-child{display:block!important;}nav#global-navbar .header.scroll .header a.logo__link img:first-child{display:none!important;}#global-footer .top__left__upper__second-column div:nth-child(3){display:none;}#modal-global-contact-us .contact-form__form-group label{font-weight:700!important;}div#global-sidemenu.sidemenu a.link{text-transform:lowercase;}nav#global-navbar .logo__img{max-width:212px;max-height:90px;}#modal-global-contact-us .contact-form__form-group:nth-child(5):after{content:"\a I agree to be contacted by Fowler Sakey Team via call, email, and text. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Message and data rates may apply.";white-space:pre-wrap;}#modal-global-contact-us .modal-content .close{display:none;}#modal-global-contact-us .contact-form__footer .block{min-width:60%;max-width:60%;}@media only screen and (max-width:768px){#modal-global-contact-us .contact-form__footer .block{min-width:100%;max-width:100%;}}footer#global-footer .footer-container .logo img{width:300px;height:90px;max-width:100%;max-height:100%;}</style>
32    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
33        <style id="page-css">
34            #section-07a9765c-42ce-4fec-af93-d918d005c528{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:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro{position:relative;padding:140px 94px 90px;-webkit-transition:all .3s;transition:all .3s;will-change:padding;height:760px;}@media (max-width: 960px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro{padding:140px 60px 94px;}}@media (max-width: 767px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro{padding:140px 23px 64px;height:500px;}}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro__content{width:100%;max-width:720px;margin:0 auto;text-align:center;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro.custom-intro-animate{padding:0;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro.custom-intro-animate p{opacity:1;height:auto;margin-bottom:24px;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro.custom-intro-animate .btn{opacity:1;height:45px;-webkit-text-decoration:none;text-decoration:none;}@media (max-width: 767px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro.custom-intro-animate .container{padding:0 38px;}}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro .container{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:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;color:var(--fontColor, #FFFFFF);height:100%;width:100%;max-width:100%;position:relative;-webkit-transition:all .3s;transition:all .3s;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro h1{margin:0 0 17px;text-align:center;position:relative;z-index:1;text-transform:capitalize;}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro p{margin:0 0 27px;opacity:0;height:0;-webkit-transition:all .3s;transition:all .3s;position:relative;z-index:1;}@media (max-width: 767px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro p{text-align:center;}}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro .button-wrap{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;}@media (max-width: 767px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro .button-wrap{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro .btn{opacity:0;height:0;margin:12px;-webkit-transition:all .3s;transition:all .3s;position:relative;z-index:1;-webkit-text-decoration:none;text-decoration:none;}@media (max-width: 767px){#section-07a9765c-42ce-4fec-af93-d918d005c528 .custom-intro .btn{width:242px;}}#section-07a9765c-42ce-4fec-af93-d918d005c528 .pre-line{white-space:pre-line;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b{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));background-color:#fff;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .paginationjs-prev:not(.disabled) a:hover:before,#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .paginationjs-next:not(.disabled) a:hover:before{color:#494949;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .properties-list-item-headline h4{text-transform:uppercase;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b a.properties-list-item{border:3px solid #fff;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list.with-top{padding-top:50px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .title{text-align:center;margin:0 auto 10px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .description{text-align:center;max-width:520px;margin:0 auto 40px;padding:0 5px;white-space:pre-line;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .title+.properties-list-content{margin-top:40px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:stretch;-ms-flex-pack:stretch;-webkit-justify-content:stretch;justify-content:stretch;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;border-bottom:1px solid #e7e7e7;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item{width:50%;border:1px solid #e7e7e7;position:relative;overflow:hidden;height:637px;padding:0;background-repeat:no-repeat;-webkit-background-position:top center;background-position:top center;-webkit-background-size:cover;background-size:cover;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:nth-child(2n){border-right:none;}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item{width:100%;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:nth-child(2n){border-right:1px solid #e7e7e7;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item::before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.43) 46%, rgba(0, 0, 0, 0.68) 99%);background-color:transparent;-webkit-transition:all .3s;transition:all .3s;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-status{position:absolute;right:0;top:0;padding:8px 16px;background:#000;text-transform:uppercase;color:#fff;font-size:12px;line-height:24px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-content{padding:20px 46px 22px;-webkit-transition:all .3s;transition:all .3s;position:absolute;
34left:0;right:0;bottom:0;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-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:184px;}@media (max-width: 780px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-content{padding:20px 35px 22px;}}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-content{padding:20px 22px 35px;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-content:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:#fff;-webkit-transition:all .3s;transition:all .3s;}@media (min-width: 768px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover::before{opacity:1;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content{color:#fff;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content:before{-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content h4{color:inherit;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content .price{color:inherit;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content .price h4{color:inherit;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content .address{color:inherit;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item:hover .properties-list-item-content .amenities li{color:inherit;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-headline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;position:relative;z-index:1;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-headline .name-address{max-width:390px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item-headline h4{margin:0;color:#000;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .price{text-align:right;color:#5b5b5b;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .price h4{margin:0 0 0 20px;height:auto;color:#5b5b5b;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .price .lease-price{display:block;margin:4px 0 0 20px;}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .price .lease-price{font-size:14px;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .address{margin-top:4px;text-transform:uppercase;font-size:16px;color:#000;}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .address{font-size:14px;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .address-left{display:none;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .address-full-line{position:relative;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item.double-price .address-left{display:block;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item.double-price .address-full-line{display:none;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .amenities{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:10px 0 0;padding:0;list-style:none;position:relative;font-size:14px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .amenities li{margin-right:10px;padding-right:10px;position:relative;text-transform:uppercase;color:#000;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .amenities li:after{content:'';height:12px;width:1px;background:currentColor;position:absolute;right:0;top:50%;margin-top:-6px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .amenities li:last-of-type:after{display:none;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .btn{width:164px;margin:16px 0 0;display:none;position:relative;}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list-item .btn{display:inline-block;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .pagination-container{margin-top:70px;}@media (max-width: 767px){#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .properties-list .pagination-container{margin-top:45px;}}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .label-house{position:absolute;top:0;background:rgba(255, 255, 255, 0.75);color:#000000;padding:6px 20px;text-transform:uppercase;font-size:14px;-webkit-transform:translateY(calc(-100% - 16px));-moz-transform:translateY(calc(-100% - 16px));-ms-transform:translateY(calc(-100% - 16px));transform:translateY(calc(-100% - 16px));}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b .mls-compliance-container{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;
34-webkit-justify-content:space-between;justify-content:space-between;gap:10px;}#section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;}#section-42b4c951-7cf7-4581-abf1-88973a82cc53{color:#000;--fontColor:#000;--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;background-color:rgba(241, 241, 241, 1);}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block{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;}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block .text-block{max-width:65%;}@media (max-width: 768px){#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block .text-block{max-width:100%;margin-bottom:24px;}}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block .lp-h2{margin-bottom:0;}@media (max-width: 768px){#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block{-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;}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block .lp-h2{margin-bottom:24px;text-align:center;}}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block--Center-aligned{-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;text-align:center;}#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block--Center-aligned .text-block{margin-left:auto;margin-right:auto;margin-bottom:24px;}@media (min-width: 769px){#section-42b4c951-7cf7-4581-abf1-88973a82cc53 .cta-block--Right-aligned .text-block{padding-right:20px;}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{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:#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.00));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/w_1280,c_limit,f_auto,q_auto/nhwjq4voihymohcsfght/wwu');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}@media(min-width:769px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us.bg-overlay{padding:17px 0!important;}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us .lp-container{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: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-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;min-height:400px;margin:0 auto;z-index:2;position:relative;}@media (max-width: 600px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us .lp-container{height:440px;}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us.bg-overlay:after{background-image:linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(17, 17, 17, .6) 40%, rgba(17, 17, 17, .9) 100%);}@media (max-width: 600px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us.bg-overlay:after{background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(17, 17, 17, .6) 40%, rgba(17, 17, 17, .9) 100%);}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us .lp-h2{margin:0 0 19px;text-align:center;}@media (min-width: 560px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us .lp-h2{max-width:80vw;}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us p{max-width:514px;text-align:center;margin:0 0 26px;}@media (max-width: 767px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .work-with-us p{padding:0 12px;}}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .buttons-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .buttons-wrap .lp-btn+.lp-btn{margin-left:16px;}@media(max-width: 560px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .buttons-wrap{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .buttons-wrap .lp-btn{width:100%;}#section-18cf665d-1310-4b42-97d3-c5933fa8c09c .buttons-wrap .lp-btn+.lp-btn{margin-left:0;margin-top:16px;}}@media (min-width: 960px) and (orientation: landscape){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/w_1280,c_limit,f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}@media (min-width: 1280px) and (orientation: landscape){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/w_1920,c_limit,f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}@media (min-width: 1920px) and (orientation: landscape){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}@media (min-width: 2560px) and (orientation: landscape){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}@media (orientation: portrait){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/c_lfill,w_375,ar_9:16,dpr_2,f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}@media (orientation: portrait) and (min-width: 768px){#section-18cf665d-1310-4b42-97d3-c5933fa8c09c{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://res.cloudinary.com/luxuryp/images/c_lfill,w_768,ar_3:4,dpr_2,f_auto,q_auto/nhwjq4voihymohcsfght/wwu');}}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f{color:#000000;--fontColor:#000000;--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;background-color:rgba(241, 241, 241, 1);}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed{display:none;margin:50px 0 100px;}@media (max-width: 768px){#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed{margin:30px 0 60px;}}
34#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed .pre-title{display:block;margin-bottom:20px;text-align:center;margin-bottom:2px;color:hsla(
35      var(--fontColor_H),
36      var(--fontColor_S),
37      calc(50% + (var(--fontColor_L) - 50%) * 0.7),
38      var(--fontColor_A)
39      );}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed h2,#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed h3{text-align:center;margin:20px 0 60px;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content{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;position:relative;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-basis:20%;-ms-flex-preferred-size:20%;flex-basis:20%;padding-bottom:25%;position:relative;z-index:1;}@media (max-width: 768px){#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding-bottom:62.5%;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item:nth-child(n+5){display:none;}}@media (max-width: 520px){#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-bottom:125%;}}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item:hover{z-index:2;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item:nth-child(n+6){display:none;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item__img{bottom:0;position:absolute;height:100%;width:100%;background-color:lightgray;-webkit-background-size:cover;background-size:cover;-webkit-background-position:center center;background-position:center center;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;-webkit-transition:all linear 0.2s;transition:all linear 0.2s;transform-origin:bottom;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item__img svg{display:none;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item__img:hover{position:absolute;background-image:linear-gradient(rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.45));height:108%;width:104%;margin-left:-2%;}@media (max-width: 768px){#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item__img:hover{height:104%;width:104%;margin-left:-2%;}}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .feed__content__item__img:hover svg{display:block;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .instagram-link{display:block;overflow:hidden;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .instagram-link,#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .instagram-link:hover,#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .instagram-link:visited{color:inherit;-webkit-text-decoration:none;text-decoration:none;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .instagram-username{overflow-wrap:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .media-type-icon{position:absolute;top:10px;right:10px;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f .has-data .feed{display:block;}#section-d0ae8c06-4909-4560-ae59-43d727b8e49f.has-data .feed,#section-d0ae8c06-4909-4560-ae59-43d727b8e49f#section-temp .feed{display:block;}#modal-global-contact-us{position:fixed;top:0;left:0;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-transition:0.3s all ease;transition:0.3s all ease;padding:0;display:block;height:100vh;max-width:720px;scrollbar-width:thin;scrollbar-color:#202020 #adadad;}@media (max-width: 768px){#modal-global-contact-us{max-width:580px;}}#modal-global-contact-us .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}#modal-global-contact-us::-webkit-scrollbar{width:7px;}#modal-global-contact-us::-webkit-scrollbar-track{background:#adadad;}#modal-global-contact-us::-webkit-scrollbar-thumb{background-color:#202020;border-radius:3px;border:2px solid #adadad;}#modal-global-contact-us .modal-content{-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#modal-global-contact-us.visible{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);height:100%;max-width:720px;width:100%;}#modal-global-contact-us .contact-form__wrap{position:relative;top:0;bottom:0;left:0;right:0;background-image:linear-gradient(143deg, #ffffff, #e1e1e1 82%);padding:66px 90px 66px 106px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;width:720px;height:100vh;overflow-y:auto;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:justify;
39-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 768px){#modal-global-contact-us .contact-form__wrap{padding:66px 56px 80px 80px;width:100vw;}}@media (max-width: 600px){#modal-global-contact-us .contact-form__wrap{padding:66px 24px 80px 24px;}}#modal-global-contact-us .contact-form__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;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#modal-global-contact-us .contact-form__logo{max-width:150px;display:block;}#modal-global-contact-us .contact-form__logo img{display:block;width:100%;}#modal-global-contact-us .contact-form__close,#modal-global-contact-us .close{width:30px;height:30px;display:block;position:relative;padding:0;border:none;background-color:transparent;cursor:pointer;}#modal-global-contact-us .contact-form__close:before,#modal-global-contact-us .close:before,#modal-global-contact-us .contact-form__close:after,#modal-global-contact-us .close:after{content:'';display:block;width:22px;height:3px;background-color:#202020;position:absolute;left:50%;top:50%;}#modal-global-contact-us .contact-form__close:before,#modal-global-contact-us .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__close:after,#modal-global-contact-us .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__main{margin-bottom:auto;}#modal-global-contact-us .contact-form__title{margin-bottom:0;margin-top:50px;}@media (max-width: 600px){#modal-global-contact-us .contact-form__title{margin-top:44px;}}#modal-global-contact-us .contact-form__footer{margin:16px -20px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#modal-global-contact-us .contact-form__footer.contact-form__footer--column{margin-left:0;margin-right:0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:40px;}#modal-global-contact-us .contact-form__footer.contact-form__footer--column .block{padding:0;min-width:100%;max-width:100%;}#modal-global-contact-us .contact-form__footer.contact-form__footer--column .block+.block{margin-top:20px;padding-top:20px;border-top:solid 1px #adadad;border-left:0;}@media (max-width: 600px){#modal-global-contact-us .contact-form__footer{margin-left:0;margin-right:0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:40px;}}#modal-global-contact-us .contact-form__footer .footer-title{font-weight:500;margin-bottom:5px;}#modal-global-contact-us .contact-form__footer .block{padding:0 20px;min-width:50%;max-width:50%;}@media (max-width: 600px){#modal-global-contact-us .contact-form__footer .block{padding:0;min-width:100%;max-width:100%;}}#modal-global-contact-us .contact-form__footer .block+.block{border-left:solid 1px #adadad;}@media (max-width: 600px){#modal-global-contact-us .contact-form__footer .block+.block{margin-top:20px;padding-top:20px;border-top:solid 1px #adadad;border-left:0;}}#modal-global-contact-us .contact-form__footer a{-webkit-text-decoration:none;text-decoration:none;color:#000;}#modal-global-contact-us .contact-form__form{max-width:340px;}@media (max-width: 600px){#modal-global-contact-us .contact-form__form{max-width:100%;}}#modal-global-contact-us .contact-form__form.loading .loading-placeholder{display:block;}#modal-global-contact-us .contact-form__form .loading-placeholder{display:none;margin-top:1em;font-size:14px;font-style:italic;}#modal-global-contact-us .contact-form__form .success{display:block;margin-top:1em;font-size:14px;font-style:italic;}#modal-global-contact-us .contact-form__form .hide{display:none;}#modal-global-contact-us .contact-form__form-group label{display:block;font-weight:900;text-transform:uppercase;font-size:14px;line-height:1.71;letter-spacing:1.08px;margin:40px 0 5px;}#modal-global-contact-us .contact-form__form-group input,#modal-global-contact-us .contact-form__form-group textarea{display:block;height:24px;border:none;background-color:transparent;width:100%;border-bottom:1px solid #adadad;border-radius:0;font-size:16px;}#modal-global-contact-us .contact-form__form-group input:focus,#modal-global-contact-us .contact-form__form-group textarea:focus,#modal-global-contact-us .contact-form__form-group input:not(:placeholder-shown),#modal-global-contact-us .contact-form__form-group textarea:not(:placeholder-shown){border-bottom:1px solid #000000;}#modal-global-contact-us .contact-form__form-group textarea{height:100px;resize:vertical;border:1px solid #adadad;padding:9px 12px;}#modal-global-contact-us .contact-form__form-group textarea:focus{border-bottom:1px solid #000000;}#modal-global-contact-us .contact-form__form-submit{margin-top:40px;}@media (max-width: 600px){#modal-global-contact-us .contact-form__form-submit{display:block;width:100%;}}nav .header{position:fixed;top:0;left:0;right:0;z-index:89;-webkit-transition:0.3s all ease;transition:0.3s all ease;}nav .header__container{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;
39-webkit-justify-content:space-between;justify-content:space-between;padding:30px 0;-webkit-transition:all .25s;transition:all .25s;}@media (max-width: 991px){nav .header__container{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:20px;padding-bottom:20px;}}nav .header.scroll .header__container{padding-top:20px;padding-bottom:20px;}nav .header.white-opening{background-color:#ffffff!important;}nav .header.white-opening .navigation__link,nav .header.scroll .navigation__link{color:#202020;}nav .header.white-opening .navigation__link:after,nav .header.scroll .navigation__link:after{background-color:#202020;}nav .header.white-opening .navigation__item.sub-nav-container .navigation__link:before,nav .header.scroll .navigation__item.sub-nav-container .navigation__link:before{border-bottom:1px solid #202020;border-left:1px solid #202020;}nav .header.white-opening .logo__img.dark,nav .header.scroll .logo__img.dark{display:block!important;}nav .header.white-opening .logo__img.light,nav .header.scroll .logo__img.light{display:none!important;}nav .header.white-opening .hamburger,nav .header.scroll .hamburger{color:#202020;}nav .header.white-opening .hamburger span,nav .header.scroll .hamburger span{background-color:#202020;}nav .header.white-opening .hamburger span:before,nav .header.scroll .hamburger span:before,nav .header.white-opening .hamburger span:after,nav .header.scroll .hamburger span:after{background-color:#202020;}nav .header .sub-nav{position:absolute;left:0;bottom:0;background:#f6f6f6;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));box-shadow:0 0 5px rgba(0,0,0,.3);}nav .header .sub-nav ul{margin:0;padding:0;display:block;list-style:none;}nav .header .sub-nav ul li{position:relative;display:block;margin:0;text-align:left;border-bottom:1px solid #d2d2d2;}nav .header .sub-nav ul li:hover a{color:#202020;opacity:0.5;}nav .header .sub-nav ul li:last-child{border-bottom:none;}nav .header .sub-nav ul li:last-child:after{content:'';}nav .header .sub-nav ul li a{display:block;color:#202020;margin:0;font-size:12px;letter-spacing:1px;padding:12px 14px;white-space:nowrap;text-transform:capitalize;-webkit-text-decoration:none;text-decoration:none;}nav .header .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 .logo{display:block;z-index:911;position:relative;}nav .logo__wrap{text-align:center;-webkit-animation-duration:1s;animation-duration:1s;}nav .logo__img{max-width:150px;max-height:55px;}@media (max-width: 991px){nav .logo__img{max-height:50px;}}nav .logo__img.light{display:block!important;}nav .logo__img.dark{display:none!important;}nav .navigation{margin-left:auto;padding-right:73px;}@media (max-width: 1024px){nav .navigation{display:none;}}nav .navigation ul{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;margin:0;list-style:none;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}nav .navigation__item{padding:0;margin:0 23px;}@media (max-width: 1200px){nav .navigation__item{margin:0 18px 0 0;}nav .navigation__item:last-of-type{margin:0;}}nav .navigation__item.sub-nav-container{position:relative;}nav .navigation__item.sub-nav-container.visible-dropdown .navigation__link:after{width:40px;max-width:100%;}nav .navigation__link{display:block;color:#ffffff;position:relative;font-size:12px;line-height:1;letter-spacing:1px;background-color:transparent;border:none;cursor:pointer;text-transform:uppercase;padding:12px 0;-webkit-text-decoration:none;text-decoration:none;}nav .navigation__link:after{position:absolute;content:'';display:block;width:0;height:2px;bottom:4px;left:0;-webkit-transition:0.3s all ease;transition:0.3s all ease;background-color:#ffffff;opacity:0.5;}nav .navigation__link:hover:after{width:40px;max-width:100%;}nav .hamburger{border:none;background-color:transparent;cursor:pointer;outline:none;z-index:915;position:relative;padding:0;height:24px;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;color:#ffffff;font-size:12px;}
39nav .hamburger span{display:block;width:22px;height:3px;background-color:#fff;position:relative;-webkit-transition:0.3s all ease;transition:0.3s all ease;margin-left:15px;}nav .hamburger span:before,nav .hamburger span:after{display:block;width:22px;height:3px;background-color:#fff;position:absolute;left:0;content:'';-webkit-transition:0.3s all ease;transition:0.3s all ease;}nav .hamburger span:before{top:-7px;}nav .hamburger span:after{bottom:-7px;}nav .hamburger.active span{-webkit-transform:translate(0, -50%) rotate(135deg);-moz-transform:translate(0, -50%) rotate(135deg);-ms-transform:translate(0, -50%) rotate(135deg);transform:translate(0, -50%) rotate(135deg);}nav .hamburger.active span:before,nav .hamburger.active span:after{top:0;bottom:auto;}nav .hamburger.active span:before{display:none;}nav .hamburger.active span:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}body>div.sidemenu{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;}body>div.sidemenu body>div.sidemenu{position:fixed;top:0;right:0;left:auto;bottom:0;-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-transition:0.3s all ease;transition:0.3s all ease;padding:0;display:block;height:0;width:720px;max-width:100%;}body>div.sidemenu{background-color:transparent;position:fixed;top:0;right:0;left:auto;bottom:0;-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-transition:0.3s all ease;transition:0.3s all ease;padding:0;display:block;height:0;width:720px;max-width:100%;color:var(--fontColor, #000);}body>div.sidemenu.visible{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);height:100%;width:720px;}body>div.sidemenu .visible{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);height:100%;width:100%;}body>div.sidemenu .sidemenu__wrap{position:absolute;right:0;top:0;bottom:0;left:0;background-image:linear-gradient(148deg, hsla(var(--bgColor_H, 0), var(--bgColor_S, 0%), calc(var(--bgColor_L, 88%) + 12%), var(--bgColor_A, 1)), hsla(var(--bgColor_H, 0), var(--bgColor_S, 0%), var(--bgColor_L, 88%), var(--bgColor_A, 1)) 83%);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:justify;-webkit-justify-content:space-between;justify-content:space-between;padding:66px 56px 92px 80px;-webkit-transition:0.3s all ease;transition:0.3s all ease;width:720px;max-width:100%;height:100%;min-height:100vh;margin-left:auto;}@media (max-width: 580px){body>div.sidemenu .sidemenu__wrap{padding:66px 22px 41px 26px;width:100%;}}@media (max-height: 600px){body>div.sidemenu .sidemenu__wrap{padding:10px 22px;}}body>div.sidemenu .sidemenu__wrap .sub-nav{opacity:0;visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;max-height:0;}body>div.sidemenu .sidemenu__wrap .sub-nav.visible{opacity:1;visibility:visible;max-height:1000px;}body>div.sidemenu .sidemenu__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;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:78px;}@media (max-height: 600px){body>div.sidemenu .sidemenu__header{padding-bottom:10px;}}body>div.sidemenu .sidemenu__logo{max-width:150px;display:block;}body>div.sidemenu .sidemenu__logo img{display:block;width:100%;}body>div.sidemenu .sidemenu__close{width:30px;height:30px;display:block;position:relative;padding:0;border:none;background-color:transparent;cursor:pointer;}body>div.sidemenu .sidemenu__close:before,body>div.sidemenu .sidemenu__close:after{content:'';display:block;width:22px;height:3px;background-color:var(--fontColor, #202020);position:absolute;
39left:50%;top:50%;}body>div.sidemenu .sidemenu__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 .sidemenu__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);}body>div.sidemenu .sidemenu__main{overflow-y:auto;-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;}body>div.sidemenu .sidemenu__main::-webkit-scrollbar{width:4px;background-color:transparent;}body>div.sidemenu .sidemenu__main::-webkit-scrollbar-thumb{background-color:var(--fontColor, #202020);}body>div.sidemenu .sidemenu__main::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 4px rgba(255,255,255,0.3);background-color:#ffffff;}body>div.sidemenu .sidemenu__nav{margin:0;padding:0;list-style-type:none;max-width:330px;width:100%;}body>div.sidemenu .sidemenu__nav-item{margin-bottom:0;}body>div.sidemenu .sidemenu__nav-item.sub-nav-container{position:relative;}body>div.sidemenu .sidemenu__nav-item.sub-nav-container:after{display:block;content:'';width:8px;height:8px;border-bottom:2px solid var(--fontColor, #202020);border-left:2px solid var(--fontColor, #202020);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);position:absolute;right:20px;top:19px;-webkit-transition:0.3s all ease;transition:0.3s all ease;}body>div.sidemenu .sidemenu__nav-item.sub-nav-container.visible-subnav:after{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg);}body>div.sidemenu .sidemenu__nav-link{font-size:24px;line-height:2;font-family:Montserrat,sans-serif;text-align:left;display:block;padding-right:40px;padding-left:0;width:100%;border:none;background-color:transparent;border-bottom:1px solid hsla(var(--bgColor_H, 0), var(--bgColor_S, 0%), var(--bgColor_L, 82%), var(--bgColor_A, 1));cursor:pointer;color:inherit;-webkit-text-decoration:none;text-decoration:none;}body>div.sidemenu .sidemenu__subnav{list-style-type:none;margin:0;padding:10px 0 10px 40px;border-bottom:1px solid #d2d2d2;}body>div.sidemenu .sidemenu__subnav-item{margin-bottom:0;}body>div.sidemenu .sidemenu__subnav-link{line-height:1.8;font-size:16px;color:inherit;-webkit-text-decoration:none;text-decoration:none;}body>div.sidemenu .sidemenu__subnav-link:hover{-webkit-text-decoration:underline;text-decoration:underline;}body>div.sidemenu .sidemenu__footer{padding-top:30px;}@media (max-height: 600px){body>div.sidemenu .sidemenu__footer{padding-top:10px;}}body>div.sidemenu .sidemenu__footer span{display:inline-block;line-height:1;margin-bottom:10px;}@media (max-width: 480px){body>div.sidemenu .sidemenu__footer span{display:block;}}body>div.sidemenu .sidemenu__footer span:first-child{padding-right:12px;margin-right:10px;border-right:1px solid;}@media (max-width: 580px){body>div.sidemenu .sidemenu__footer span:first-child{padding-right:0;margin-right:0;border:none;}}body>div.sidemenu .sidemenu__footer a{-webkit-text-decoration:none;text-decoration:none;color:inherit;}footer{background-color:#030303;color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#030303;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:1%;--bgColor_A:1;--bgColor_darkenDir:1;}footer .footer-container{background-color:inherit;color:inherit;padding:45px 0;}footer .footer-container a{color:currentColor;}footer .footer-container a:hover{color:currentColor;opacity:0.8;}@media(max-width: 950px){footer .footer-container .btn{width:100%;}}footer .footer-container .center{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 950px){footer .footer-container .desktop{display:none!important;}}@media(min-width: 950px){footer .footer-container .mobile{display:none!important;}}footer .footer-container .text-input{background-color:transparent;border:none;border-bottom:1px solid #c4c4c4;outline:none;color:currentColor;width:100%;}footer .footer-container .hide{display:none;}footer .footer-container .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .footer-container .social-items{-webkit-text-decoration:none;text-decoration:none;font-size:21px;
39display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}footer .footer-container .social-items svg{height:20px;}footer .footer-container .social-items .footer-socialbar-link{margin-right:28px;color:currentColor;}footer .footer-container .social-items .footer-socialbar-link:last-of-type{margin-right:0;}footer .footer-container .social-items .footer-socialbar-logo{height:15px;-webkit-transition:-webkit-transform 0.1s;transition:transform 0.1s;}footer .footer-container .social-items .footer-socialbar-logo:hover{-webkit-transform:scale(1.2, 1.2);-moz-transform:scale(1.2, 1.2);-ms-transform:scale(1.2, 1.2);transform:scale(1.2, 1.2);}footer .footer-container .social-items:last-child{margin-right:0;}footer .footer-container .social-items:hover{color:darken(#fff, 20%);}footer .footer-container .title{text-transform:uppercase;font-size:14px;margin-bottom:15px;font-weight:900;}footer .footer-container .title.lower{text-transform:capitalize;}footer .footer-container .logo{margin-bottom:30px;}footer .footer-container .logo img{max-width:200px;max-height:80px;object-fit:contain;}footer .footer-container .top{display:-ms-grid;display:grid;-ms-grid-columns:2fr 1fr;grid-template-columns:2fr 1fr;-ms-grid-rows:1fr;grid-template-rows:1fr;gap:0px 150px;grid-template-areas:". .";margin-bottom:50px;padding-bottom:50px;border-bottom:1px solid #e5e5e5;}@media(max-width: 950px){footer .footer-container .top{display:block;margin-bottom:30px;padding-bottom:30px;}}footer .footer-container .top__left__upper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:50px;}@media(max-width: 950px){footer .footer-container .top__left__upper{display:block;margin-bottom:30px;}}footer .footer-container .top__left__upper__first-column{margin-right:150px;}@media(max-width: 950px){footer .footer-container .top__left__upper__first-column{margin-right:0;margin-bottom:30px;}}footer .footer-container .top__left__lower .title{display:none;}footer .footer-container .top__right form .title{margin-bottom:5px;}footer .footer-container .top__right .email-label{margin-top:20px;}footer .footer-container .top__right .lp-disclaimer{margin-bottom:20px;}footer .footer-container .top.without-newsletter{display:block;width:100%;}footer .footer-container .top.without-newsletter .top__left{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: 950px){footer .footer-container .top.without-newsletter .top__left{display:block;}}footer .footer-container .top.without-newsletter .top__left__lower .title{display:block;}footer .footer-container .middle{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:30px;padding-bottom:50px;border-bottom:1px solid #e5e5e5;}@media(max-width: 950px){footer .footer-container .middle{display:block;margin-bottom:30px;padding-bottom:30px;}}footer .footer-container .middle__left{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:50px;}@media(max-width: 950px){footer .footer-container .middle__left{margin-right:0;margin-bottom:30px;}}footer .footer-container .middle__right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}footer .footer-container .middle__right img{object-fit:contain;max-width:115px;max-height:60px;margin-right:50px;}footer .footer-container .middle__right img:last-of-type{margin-right:0;}footer .footer-container .bottom__sitemap{margin-bottom:28px;text-transform:uppercase;}@media(max-width: 950px){footer .footer-container .bottom__sitemap{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;margin-top:-20px;margin-bottom:35px;}}footer .footer-container .bottom__sitemap a{margin-right:40px;cursor:pointer;}@media(max-width: 950px){footer .footer-container .bottom__sitemap a{margin-right:0;-webkit-flex:1 0 50%;-ms-flex:1 0 50%;flex:1 0 50%;padding-top:20px;}}footer .footer-container .bottom__sitemap a:last-of-type{margin-right:0;}footer .footer-container .bottom__footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
39-webkit-justify-content:space-between;justify-content:space-between;font-size:18px;}@media(max-width: 950px){footer .footer-container .bottom__footer{display:block;}}@media(max-width: 950px){footer .footer-container .bottom__footer__left{margin-bottom:20px;}}footer .footer-container .bottom__footer__left span{opacity:.6;}footer .footer-container .bottom__footer__right{opacity:.6;}footer .by{font-size:18px;}footer .image-link{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;gap:21px;}@media (max-width: 768px){footer .image-link{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}footer .image-link .img-wrap{max-width:98px;}footer .link.underline:after{width:100%;}footer .link.underline:hover:after{width:0;}footer .lp-footer-disclaimers{margin-top:32px;}@media (max-width: 1024px){footer .lp-footer-disclaimers{margin-top:28px;}}@media (max-width: 767px){footer .lp-footer-disclaimers{margin-top:16px;}}body>div.mobile-contact-wrapper{z-index:200;position:relative;}body>div.mobile-contact-wrapper .lp-ico:before{content:'';width:1em;height:1em;background-color:currentColor;-webkit-background-size:cover;background-size:cover;display:block;-webkit-mask-position:center;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transition:all .3s;transition:all .3s;}body>div.mobile-contact-wrapper .lp-ico-search:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewB
39ox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-arrow-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-scroll-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-close:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-phone:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8
39699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-sms:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-email:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.85
3971 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper a{-webkit-text-decoration:none;text-decoration:none;}body>div.mobile-contact-wrapper .btn-holder{bottom:-50px;left:19px;position:fixed;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:13px;opacity:0;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .btn-holder{right:19px;padding:0 48px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}body>div.mobile-contact-wrapper .btn-holder.visible{bottom:28px;opacity:1;}body>div.mobile-contact-wrapper .search-btn{width:48px;height:48px;border-radius:999px;font-size:0;line-height:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-transition:all .3s;transition:all .3s;padding:12px;color:#141414;background:#fff;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .search-btn{position:absolute;left:0;bottom:0;}}body>div.mobile-contact-wrapper .search-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .connect-btn{height:48px;padding:0 24px;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;gap:4px;text-transform:uppercase;border-radius:25px;color:var(--pillTextColor);background:var(--pillBackgroundColor);border:1px solid rgba(255, 255, 255, 0.2);cursor:pointer;font-size:10px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.4px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-transition:all .4s;transition:all .4s;box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);-webkit-animation:pulsate 2s ease infinite;animation:pulsate 2s ease infinite;}body>div.mobile-contact-wrapper .connect-btn:before{width:16px;height:16px;}body>div.mobile-contact-wrapper .pop-up{display:none;position:fixed;bottom:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;border-radius:16px 16px 0 0;color:var(--textColor);background:var(--backgroundColor);}@media (max-height: 850px){body>div.mobile-contact-wrapper .pop-up{max-height:85vh;overflow-y:auto;}}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up{max-height:none;overflow-y:initial;max-width:637px;border-radius:16px;bottom:28px;left:19px;}}body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:24px;padding-bottom:24px;-webkit-box-pack:center;-ms-flex-pack:center;
39-webkit-justify-content:center;justify-content:center;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:40px;padding-bottom:40px;min-height:450px;padding-left:56px;padding-right:56px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.mobile-contact-wrapper .pop-up .close-btn{width:44px;height:44px;background-color:transparent;border-color:transparent;display:block;margin:24px auto 0;-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;color:var(--textColor);cursor:pointer;padding:10px;border:0;}body>div.mobile-contact-wrapper .pop-up .close-btn:before{width:24px;height:24px;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .close-btn{position:absolute;top:14px;right:12px;margin:0;}}body>div.mobile-contact-wrapper .pop-up .icon-btn{width:44px;height:44px;border-radius:999px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-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;margin-left:8px;color:var(--textColor);position:relative;}body>div.mobile-contact-wrapper .pop-up .icon-btn:after{position:absolute;bottom:0;width:100%;left:0;border-radius:999px;
39height:100%;content:'';border:solid 1px var(--textColor);opacity:.3;}body>div.mobile-contact-wrapper .pop-up .icon-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .success-block{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .success-block{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}body>div.mobile-contact-wrapper .success-block .lp-btn{margin-top:24px;}body>div.mobile-contact-wrapper .contact-form{margin:0;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .contact-form__item{width:100%;}}body>div.mobile-contact-wrapper .contact-form__item .lp-input{width:100%;}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{color:#818181;}body>div.mobile-contact-wrapper .contact-form__item+.contact-form__item{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form.show-success .contact-form__container,body>div.mobile-contact-wrapper .contact-form.success .contact-form__container{display:none;}body>div.mobile-contact-wrapper .contact-form.show-success .success-block,body>div.mobile-contact-wrapper .contact-form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.mobile-contact-wrapper .contact-form .lp-disclaimer{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form .lp-h3{margin-bottom:16px;}body>div.mobile-contact-wrapper .success-message{font-size:22px;}@-webkit-keyframes pulsate{0%{box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);}50%{box-shadow:0 0 4px 6px rgba(255, 255, 255, .5);}100%{box-shadow:0 0 12px 12px rgba(255, 255, 255, 0);}}
40        </style>
41    <style id="custom-style-css">.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(32, 32, 32, 1)!important;border-color:rgba(32, 32, 32, 1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(73, 73, 73, 1)!important;border-color:rgba(73, 73, 73, 1)!important;}.social_icons-style-1 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255,255,255,1)!important;color:rgba(0, 0, 0, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a i{color:inherit!important;}
41.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.hyperlink-style-1{color:rgba(0,0,0,1)!important;}.hyperlink-style-1:hover{color:rgba(0, 0, 0, 1)!important;}.pagination-style-1 li a{color:rgba(0, 0, 0, 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(0, 0, 0, 1)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li.active a{color:rgba(255,255,255,1)!important;background-color:rgba(0, 0, 0, 1)!important;border-color:rgba(0, 0, 0, 0)!important;}.social_icons-style-2 a{border-color:#000000!important;background-color:rgba(0, 0, 0, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(0, 0, 0, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{f
41ill:currentColor!important;}.button-style-2{color:rgba(32, 32, 32, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(246, 246, 246, 1)!important;}.button-style-2:hover{color:rgba(32, 32, 32, 1)!important;background-color:rgba(210, 210, 210, 1)!important;border-color:rgba(210, 210, 210, 1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(247, 247, 247, 1)!important;}.button-style-3{color:rgba(32, 32, 32, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(32, 32, 32, 1)!important;}.button-style-3:hover{color:rgba(255,255,255,1)!important;background-color:rgba(73, 73, 73, 1)!important;border-color:rgba(73, 73, 73, 1)!important;}.button-style-4{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(246, 246, 246, 1)!important;}.button-style-4:hover{color:rgba(32, 32, 32, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}</style>
42        <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode
43             defaults, and dynamically loads the locale + main (and banner if needed). -->
44        
44<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="d50fd8f9-cf7c-495b-ac13-fb4b878057e3"></script>
44
45
46
47        <!-- Follow Up Boss Tracker Code -->
48        
48<script type="text/plain" data-consent-category="analytics">
49            (function(w,i,d,g,e,t){w["WidgetTrackerObject"]=g;(w[g]=w[g]||function()
50            {(w[g].q=w[g].q||[]).push(arguments);}),(w[g].ds=1*new Date());(e="script"),
51            (t=d.createElement(e)),(e=d.getElementsByTagName(e)[0]);t.async=1;t.src=i;
52            e.parentNode.insertBefore(t,e);})
53            (window,"https://widgetbe.com/agent",document,"widgetTracker");
54            window.widgetTracker("create", "WT-RUYNVOBH");
55        </script>
55
56        <!-- End Follow Up Boss Tracker Code -->
57        
57<script>
58            (function utmParse() {
59                const url = new URL(window.location.href);
60                if (url.search) {
61                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
62                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
63                        if (matched) {
64                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
65                        }
66                        return acc;
67                    }, {});
68                    if (Object.keys(utm).length) {
69                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
70                    } else {
71                        // Remove old utm vars
72                        window.localStorage.removeItem('utm_vars');
73                    }
74                }
75                // Set referrer in local storage
76                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
77                if (!window.localStorage.getItem('referrer')) {
78                    // Capture the Referrer URL
79                    const referrer = document.referrer;
80                    if (referrer) {
81                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
82                        const currentDomain = window.location.hostname;
83                        const referrerDomain = new URL(referrer).hostname;
84
85                        if (referrerDomain !== currentDomain) {
86                            // Store it in localStorage
87                            localStorage.setItem('referrer', referrer);
88                        }
89                    }
90                }
91            })();
92        </script>
92
93        <!-- begin Pixel Code -->
94<script
95  src="https://www.homeplatform.com/cxlp/a.min.js"
96  id="cxlp-ajs"
97  data-client-id="u0znlw30deoe"
98  async
99></script>
99
100<!-- end Pixel Code -->
101<script type="application/ld+json">
102{
103  "@context": "https://schema.org",
104  "@type": "RealEstateAgent",
105  "name": "Fowler Sakey & Team - William Raveis, Fairfield County CT",
106  "image": "https://res.cloudinary.com/luxuryp/images/w_320,c_limit,f_auto,q_auto/erzdcmjg9099pp3fg55m/william-raveis-logo-light-1-1",
107  "@id": "https://fowlersakeyteam.com/",
108  "url": "https://fowlersakeyteam.com/",
109  "telephone": "+14758889713",
110  "priceRange": "$$$",
111  "address": {
112    "@type": "PostalAddress",
113    "streetAddress": "1275 Post Rd Store 2",
114    "addressLocality": "Fairfield",
115    "addressRegion": "CT",
116    "postalCode": "6824",
117    "addressCountry": "US"
118  },
119  "geo": {
120    "@type": "GeoCoordinates",
121    "latitude": 41.1426727,
122    "longitude": -73.2547591
123  },
124  "openingHoursSpecification": [{
125    "@type": "OpeningHoursSpecification",
126    "dayOfWeek": [
127      "Tuesday",
128      "Wednesday",
129      "Thursday",
130      "Friday",
131      "Monday"
132    ],
133    "opens": "10:00",
134    "closes": "16:00"
135  },{
136    "@type": "OpeningHoursSpecification",
137    "dayOfWeek": "Saturday",
138    "opens": "12:00",
139    "closes": "14:00"
140  }],
141  "sameAs": [
142    "https://www.facebook.com/FowlerSakeyTeam",
143    "https://www.linkedin.com/in/rachel-fowler-74585717/",
144    "https://www.instagram.com/fowlersakeyteam/",
145    "https://www.youtube.com/channel/UCaZFjRE5RqPIHXbtPWIBYGA/featured"
146  ] 
147}
148</script>
148
149    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
150</head>
151<body>
152    <div id="google_translate_element" style="display: none"></div>
153
154        <nav id="global-navbar" data-el-id="3ae3f083-ed3d-405a-9244-88f53af16cdf">
155            <div class="header">
156  <div class="container">
157    <div class="header__container">
158      <div class="logo__wrap">
159        <a href="/" class="logo">
160          <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4" 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/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4 643w" alt="Logo" sizes="200px" class="logo__img dark">
161          <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1c939693-9276-43c2-9374-b24009be7164" 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/1c939693-9276-43c2-9374-b24009be7164 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1c939693-9276-43c2-9374-b24009be7164 643w" alt="Logo" sizes="200px" class="logo__img light">
162        </a>
163      </div>
164      <div class="navigation">
165        <ul>
166          <li class="navigation__item sub-nav-container">
167            <a href="#" class="navigation__link">Our Listings</a>
168            <div class="sub-nav">
169              <ul>
170                <li><a  href="/properties/sale" class="nav-link">Our Featured Properties</a></li>
171                <li><a  href="/properties/sold" class="nav-link">Our Recent Sales</a></li>
172                <li><a target="_blank" href="/properties/Rent" class="nav-link">Rentals</a></li>
173              </ul>
174            </div>
175          </li>
176          <li class="navigation__item">
177            <a  href="/home-valuation" class="navigation__link">Home Valuation</a>
178          </li>
179          <li class="navigation__item sub-nav-container">
180            <a href="#" class="navigation__link">Home Search</a>
181            <div class="sub-nav">
182              <ul>
183                <li><a  href="/homes-for-sale-in-fairfield-ct" class="nav-link">Fairfield Homes</a></li>
184                <li><a  href="/homes-for-sale-trumbull-ct" class="nav-link">Trumbull Homes</a></li>
185                <li><a  href="/homes-for-sale-in-easton-ct" class="nav-link">Easton Homes</a></li>
186                <li><a  href="/home-search/listings" class="nav-link">View All</a></li>
187              </ul>
188            </div>
189          </li>
190          <li class="navigation__item">
191            <a  href="/team" class="navigation__link">Our Team</a>
192          </li>
193          <li class="navigation__item">
194            <a data-type="CONTACT_US" class="navigation__link">Email Us</a>
195          </li>
196          <li class="navigation__item">
197            <a  href="tel:4758889713" class="navigation__link">475-888-9713</a>
198          </li>
199        </ul>
200      </div>
201      <button class="hamburger-component hamburger">
202        
203        <span></span>
204      </button>
205    </div>
206  </div>
207</div>
208        </nav>
209        <div id="global-sidemenu" class="sidemenu" data-el-id="c15537ed-0a67-4a65-93e8-b8869716230e">
210            <div class="sidemenu__wrap">
211  <div class="sidemenu__header">
212    <a href="" class="sidemenu__logo">
213        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4" 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/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26f
213cc4 643w" alt="Logo" sizes="200px">
214    </a>
215    <button class="js-sidemenu-close sidemenu__close toggle"></button>
216  </div>
217
218  <div class="sidemenu__main">
219    <ul class="sidemenu__nav">
220      <li class="sidemenu__nav-item">
221        <a  href="/" class="sidemenu__nav-link">Home</a>
222      </li>
223      <li class="sidemenu__nav-item">
224        <a  href="/team" class="sidemenu__nav-link">Our Team</a>
225      </li>
226      <li class="sidemenu__nav-item sub-nav-container">
227        <a href="#" class="sidemenu__nav-link">Properties</a>
228        <div class="sub-nav">
229          <ul class="sidemenu__subnav">
230            <li class="sidemenu__subnav-item"><a  href="/properties/sale" class="sidemenu__subnav-link">Our Featured Properties</a></li>
231            <li class="sidemenu__subnav-item"><a  href="/properties/sold" class="sidemenu__subnav-link">Our Recent Sales</a></li>
232          </ul>
233        </div>
234      </li>
235      <li class="sidemenu__nav-item">
236        <a  href="/home-valuation" class="sidemenu__nav-link">Home Valuation</a>
237      </li>
238      <li class="sidemenu__nav-item">
239        <a  href="/home-search/listings" class="sidemenu__nav-link">Home Search</a>
240      </li>
241      <li class="sidemenu__nav-item">
242        <a  href="/neighborhoods" class="sidemenu__nav-link">Explore Our Towns</a>
243      </li>
244      <li class="sidemenu__nav-item">
245        <a  href="/testimonials" class="sidemenu__nav-link">Our Client Stories</a>
246      </li>
247      <li class="sidemenu__nav-item">
248        <a  href="/newsletter" class="sidemenu__nav-link">Newsletter</a>
249      </li>
250      <li class="sidemenu__nav-item">
251        <a  href="/blog" class="sidemenu__nav-link">Blog</a>
252      </li>
253      <li class="sidemenu__nav-item">
254        <button class="sidemenu__nav-link" data-type="CONTACT_US">Email Us</button>
255      </li>
256    </ul>
257  </div>
258
259  <div class="sidemenu__footer">
260    <span>T: <a class="link" href="tel:(475) 888-9713">(475) 888-9713</a></span>
261    <span>E: <a class="link" href="/cdn-cgi/l/email-protection#eb82858d84ab8d849c878e99988a808e929f8e8a86c5888486"><span class="__cf_email__" data-cfemail="dfb6b1b9b09fb9b0a8b3baadacbeb4baa6abbabeb2f1bcb0b2">[email&#160;protected]</span></a></span>
262  </div>
263</div>
264        </div>
265        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51">
266            <div class="btn-holder" 
267style="
268--backgroundColor: rgba(20, 20, 20, 1); 
269--textColor: rgba(255, 255, 255, 1); 
270--pillTextColor: rgba(26, 26, 26, 1); 
271--pillBackgroundColor: rgba(255, 255, 255, 1);">
272
273    <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Let&#x27;s Connect</button>
274</div>
275
276
277<div class="pop-up" style="--backgroundColor: rgba(20, 20, 20, 1); --textColor: rgba(255, 255, 255, 1);">
278  <div class="lp-container">
279    <form data-type="contact-form" class="contact-form">
280      <div class="contact-form__container">
281          <h3 class="lp-h3">Leave a Message</h3>
282      
283        <div class="contact-form__content">
284          <div class="contact-form__inputs-container">
285            <div class="contact-form__item">
286              <input
287                id="__FullName"
288                type="text" name="name"
289                class="lp-input lp-input--light"
290                required
291                placeholder="Full Name">
292            </div>
293            <div class="contact-form__item">
294              <input
295                id="__Email"
296                type="email" name="email"
297                class="lp-input js-email-input lp-input--light"
298                required
299                placeholder="Email">
300            </div>
301            <div class="contact-form__item"> 
302              <input
303                class="lp-input lp-input--light"
304                type="tel" 
305                placeholder="Phone"
306                id="__Phone"
307                name="phone"
308                required>
309            </div>
310
311            <div class="contact-form__item input-group-select">
312              <select name="interest" id="-field-interest" placeholder="Interest"
313                class="lp-input dropdown-select js-select js-form-element lp-input--light" required>
314                <option value="" disabled selected data-label="Interest">Interested in...</option>
315                <option value="Selling &amp; Buying">Selling &amp; Buying</option>
316                <option value="Selling">Selling</option>
317                <option value="Buying">Buying</option>
318                <option value="Renting">Renting</option>
319                <option value="Other">Other</option>
320              </select>
321              <label for="-field-interest" class="lp-label sr-only">Interest</label>
322            </div>
323
324            <div class="contact-form__item">
325              <textarea
326                name="message"
327                rows="4"
328                id="__Message"
329                class="lp-input lp-input--light"
330                placeholder="Message"
331                required></textarea>
332            </div>
333            <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
334  <label class='lp-tcr-content'>
335    <span class='lp-tcr-checkbox'>
336      <input
337        type='checkbox'
338        id='-termsAccepted'
339        name='termsAccepted'
340        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
341        oninput="this.setCustomValidity('')"
342        required
343      /></span>
344    <span class='lp-tcr-message'>
345      
346        I agree to be contacted by
347        Fowler &amp; Sakey
348        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
349        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
350        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
351    </span>
352  </label>
353
354</div>
355            <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit  contact-form__item">Submit</button>
356            
357            <div class="lp-h-pot">
358              <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
359            </div>
360            
361            <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
362            <input type="hidden" name="button_text" value="Let&#x27;s Connect">
363          </div>
364        </div>
365      </div>
366
367
368      <div class="success-block">
369          <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3>
370
371      </div>
372    </form>
373
374    <button type="button" class="close-btn lp-ico lp-ico-close"></button>
375
376    
377  </div>
378</div>
379
380
381        </div>
382        <section id="section-07a9765c-42ce-4fec-af93-d918d005c528"  class="solid-section is-font-color-light is-background-color-light" data-el-id="fb635fcc-a1ae-4625-a231-08651ad09982">
383  <div class="custom-intro ">
384  <div class="container" style="background-image: 
385    linear-gradient(rgba(0, 0, 0, .3), rgba(0, 0, 0, .3)),
386    url('https://res.cloudinary.com/luxuryp/images/w_1920,c_limit,f_auto,q_auto/ya6msrinfrz8gv1tbjmc/properties-sold');">
387    <div class="custom-intro__content">
388      <h1 class="pre-line">Our Recent Sales</h1>
389
390      <div class="button-wrap">
391
392      </div>
393
394    </div>
395  </div>
396</div>
397</section>
398<section id="section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="78947932-5d0c-4ebc-a507-7ceffee2688e">
399<div class="properties-list basic-margins">
vendor: 109 bytes, lines 399-400
399
400<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
400<script type="text/x-handlebars-template" class="gridItem pagination-script">    <a href="{{#if fromMLS}}/home-search/listings/{{id}}{{else}}/properties/{{slug}}{{/if}}" class="properties-list-item{{#unless priceUponRequest}}{{#if (and salesPrice leasePrice)}} double-price{{/if}}{{/unless}}" style="background-image: url({{media.0.mediumUrl}});">
401        <div class="properties-list-item-status">{{formatPropertyStatus status}}</div>
402      <div class="properties-list-item-content">
403        <div class="properties-list-item-headline">
404          <div class="name-address">
405            <h4>{{name}}</h4>
406            <div class="address address-left">{{fullAddress}}</div>
407          </div>
408          {{#if (or salesPrice leasePrice priceUponRequest)}}
409            <div class="price">
410              <h4>{{formatPropertyPrice this}}</h4>
411            </div>
412          {{/if}}
413        </div>
414        <div class="address address-full-line">{{fullAddress}}</div>
415        <ul class="amenities">
416          {{#if bedroomCount}}
417          <li>{{bedroomCount}} BEDS</li>
418          {{/if}}
419          {{#if bathCount}}
420          <li>{{bathCount}} BATH{{#numCompare bathCount 1 ">"}}S{{/numCompare}}</li>
421          {{/if}}
422          {{#if livingSpaceSize}}
423          <li>{{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}</li>
424          {{/if}}
425        </ul>
426
427      </div>
428    </a>
429</script>
429
430  
431  <div class="properties-list-content data-container">
432        <a href="/properties/111-mayweed-road-fairfield-connecticut-us-06824-24189357" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24189357/7441446932293496436.jpg);">
433            <div class="properties-list-item-status">Leased</div>
434          <div class="properties-list-item-content">
435            <div class="properties-list-item-headline">
436              <div class="name-address">
437                <h4>111 Mayweed Road</h4>
438                <div class="address address-left">111 Mayweed Road, Fairfield, CT 06824</div>
439              </div>
440                <div class="price">
441                  <h4>$5,800/mo</h4>
442                </div>
443            </div>
444            <div class="address address-full-line">111 Mayweed Road, Fairfield, CT 06824</div>
445            <ul class="amenities">
446              <li>3 BEDS</li>
447              <li>2 BATHS</li>
448              <li>1,564 Sq.Ft.</li>
449            </ul>
450    
451          </div>
452        </a>
453        <a href="/properties/737-villa-avenue-fairfield-ct-us-06825-24176102" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24176102/2354177790479773789.jpg);">
454            <div class="properties-list-item-status">Leased</div>
455          <div class="properties-list-item-content">
456            <div class="properties-list-item-headline">
457              <div class="name-address">
458                <h4>737 Villa Avenue</h4>
459                <div class="address address-left">737 Villa Avenue, Fairfield, CT 06825</div>
460              </div>
461                <div class="price">
462                  <h4>$1,600/mo</h4>
463                </div>
464            </div>
465            <div class="address address-full-line">737 Villa Avenue, Fairfield, CT 06825</div>
466            <ul class="amenities">
467              <li>840 Sq.Ft.</li>
468            </ul>
469    
470          </div>
471        </a>
472        <a href="/properties/12-cottage-place-trumbull-connecticut-us-06611-24186640" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24186640/-7257296434786746426.jpg);">
473            <div class="properties-list-item-status">Sold</div>
474          <div class="properties-list-item-content">
475            <div class="properties-list-item-headline">
476              <div class="name-address">
477                <h4>12 Cottage Place</h4>
478                <div class="address address-left">12 Cottage Place, Trumbull, CT 06611</div>
479              </div>
480                <div class="price">
481                  <h4>$750,000</h4>
482                </div>
483            </div>
484            <div class="address address-full-line">12 Cottage Place, Trumbull, CT 06611</div>
485            <ul class="amenities">
486              <li>4 BEDS</li>
487              <li>3 BATHS</li>
488              <li>1,992 Sq.Ft.</li>
489            </ul>
490    
491          </div>
492        </a>
493        <a href="/properties/45-pheasant-lane-fairfield-connecticut-us-06824-24186045" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24186045/5951413631740085645.jpg);">
494            <div class="properties-list-item-status">Sold</div>
495          <div class="properties-list-item-content">
496            <div class="properties-list-item-headline">
497              <div class="name-address">
498                <h4>45 Pheasant Lane</h4>
499                <div class="address address-left">45 Pheasant Lane, Fairfield, CT 06824</div>
500              </div>
501                <div class="price">
502                  <h4>$1,275,000</h4>
503                </div>
504            </div>
505            <div class="address address-full-line">45 Pheasant Lane, Fairfield, CT 06824</div>
506            <ul class="amenities">
507              <li>4 BEDS</li>
508              <li>3 BATHS</li>
509              <li>3,084 Sq.Ft.</li>
510            </ul>
511    
512          </div>
513        </a>
514        <a href="/properties/805-sienna-drive-unit-805-danbury-ct-us-06810-24174176" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24174176/-4702938777951229966.jpg);">
515            <div class="properties-list-item-status">Sold</div>
516          <div class="properties-list-item-content">
517            <div class="properties-list-item-headline">
518              <div class="name-address">
519                <h4>805 Sienna Drive Unit: 805</h4>
520                <div class="address address-left">805 Sienna Drive Unit: 805, Danbury, CT 06810</div>
521              </div>
522                <div class="price">
523                  <h4>$465,500</h4>
524                </div>
525            </div>
526            <div class="address address-full-line">805 Sienna Drive Unit: 805, Danbury, CT 06810</div>
527            <ul class="amenities">
528              <li>2 BEDS</li>
529              <li>3 BATHS</li>
530              <li>1,350 Sq.Ft.</li>
531            </ul>
532    
533          </div>
534        </a>
535        <a href="/properties/195-emerald-place-stratford-ct-us-06614-24185374" class="properties-list-item" style="background-image: url(https://dlajgvw9htjpb.cloudfront.net/cms/a0bff4f0-0ca7-460c-b77b-fa4993017cd5/24185374/-7864290025286908733.jpg);">
536            <div class="properties-list-item-status">Sold</div>
537          <div class="properties-list-item-content">
538            <div class="properties-list-item-headline">
539              <div class="name-address">
540                <h4>195 Emerald Place</h4>
541                <div class="address address-left">195 Emerald Place, Stratford, CT 06614</div>
542              </div>
543                <div class="price">
544                  <h4>$435,000</h4>
545                </div>
546            </div>
547            <div class="address address-full-line">195 Emerald Place, Stratford, CT 06614</div>
548            <ul class="amenities">
549              <li>3 BEDS</li>
550              <li>2 BATHS</li>
551              <li>1,324 Sq.Ft.</li>
552            </ul>
553    
554          </div>
555        </a>
556  </div>
557
558  <div class="pagination-container pagination-style-1"></div></div>
559</section>
560<section id="section-42b4c951-7cf7-4581-abf1-88973a82cc53"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="e7db0aa2-a33d-4b1c-bd9f-41337c1c9384">
561  <div class="lp-vertical-paddings redesign">
562  <div class="lp-container cta-block cta-block--Right-aligned">
563    <div class="text-block">
564        <h2 class="lp-h2">Know Your Home's Value</h2>
565    </div>
566    
567            <a
568                href="/home-valuation"
569                
570                class="lp-btn lp-btn--dark lp-btn--big lp-btn--outline lp-btn--mob-full-width button-style-1"
571                
572                
573                
574                
575                
576                >
577                        Home Valuation
578                </a>
579  </div>
580</div>
581</section>
582<section  class="image-section is-font-color-light is-background-color-light" id="section-18cf665d-1310-4b42-97d3-c5933fa8c09c" data-el-id="489f4b19-461a-4d7c-a1cb-6ec746f4f906">
583    <div class="work-with-us bg-overlay">
584  <div class="lp-container">
585    <h2 class="lp-h2">Choose Us</h2>
586    <p>Client satisfaction is our most meaningful measure of success.  Let our team of experts at Fowler Sakey Team help you with your real estate needs.</p>
587    <div class="buttons-wrap">
588              <a
589                  role="button"
590                  data-type="CONTACT_US"
591                  class="btn btn--primary--light lp-btn lp-btn--outline lp-btn--light button-style-2"
592                  
593                  
594                  
595                  
596                  
597                  >
598                          EMAIL US
599                  </a>
600    </div>  
601  </div>  
602</div>
603</section>
604<section id="section-d0ae8c06-4909-4560-ae59-43d727b8e49f"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="1b5dc03a-76a1-431a-b1f1-9def4c75f9f5">
605  
605<script type="text/x-handlebars-template" class="jsIGTemplate">
606    {{#each items}}
607      <a href="{{permalink}}" target="_blank" class="feed__content__item wow fadeInUp insta-type-{{mediaType}}" data-wow-delay="1.{{@index}}s">
608      <div class=" feed__content__item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{else}}{{mediaUrl}}{{/ifEquals}}');">
609        <svg class=" feed__content__item__img__icon " xmlns=" http://www.w3.org/2000/svg " width=" 24px " height=" 24px " viewBox=" 0 0 1024 1024 " fill=" #ffffff ">
610          <path d=" M710.5 127c-51.4 2.9-99.2 20.1-140.6 50.6-12.2 9-24.6 20.5-40.9 38-8.9 9.6-16.6 17.4-17 17.4-.4 0-9-8.8-19.1-19.6-10.1-10.8-22.8-23.4-28.4-28.1-27.1-22.9-60.5-40-95-48.8-25.3-6.4-42.3-8.5-71.2-8.5-85.6 0-155.3 33.7-203.9 98.6-35.5 47.4-53 103-51.1 161.9 1.4 40.2 9.9 74 27.9 109.9 10.7 21.4 26 43.7 41.5 60.5 21.2 23.2 398.7 422.6 399.3 422.6.6 0 378.1-399.4 399.3-422.6 15.5-16.8 30.8-39.1 41.5-60.5 18-35.9 26.5-69.7 27.9-109.9 1.4-42.1-6.6-80.4-24.6-118-26.5-55.2-67.5-95.5-122.7-120.8-26.5-12.1-60.4-20.7-87.4-22.2-19.8-1.1-22.8-1.2-35.5-.5z "></path>
611        </svg>
612      </div>
613      {{#ifEquals mediaType 'VIDEO'}}
614        <div class="media-type-icon">
615          <svg width="30px" height="30px" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M19.369 6.042H2.082A2.086 2.086 0 000 8.125v13.71a2.086 2.086 0 002.083 2.083h17.285a2.086 2.086 0 002.084-2.083V8.125a2.086 2.086 0 00-2.084-2.083zM22.84 17.833l7.16 3.91V8.262l-7.16 3.908v5.662z"/></svg>
616        </div>
617      {{/ifEquals}}
618    </a> 
619    {{/each}}
620</script>
620
621<div class="feed redesign">
622  <div class="lp-container">
623    <span class="pre-title feature wow fadeInUp">Follow Us</span>
624    <a href="#" target="_blank" class="instagram-link jsIGLink"><h3 class="lp-h3 wow fadeInUp jsIGName jsShrink instagram-username" data-wow-delay=".5s"></h3></a>
625    <div class="feed__content jsIGContainer"></div>
626  </div>
627</div>
628</section>
629
630        <div id="modals" class="modals"></div>
631        <footer id="global-footer" class="is-font-color-light is-background-color-dark" data-el-id="a2fa423e-bca7-4c8b-9605-515c22f3ae9b">
632            <div class="footer-container">
633  <div class="container">
634    <div class="logo">
635      <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/032368ea-e922-4faa-8128-54dfcf3ee59d" 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/032368ea-e922-4faa-8128-54dfcf3ee59d 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/032368ea-e922-4faa-8128-54dfcf3ee59d 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/032368ea-e922-4faa-8128-54dfcf3ee59d 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/032368ea-e922-4faa-8128-54dfcf3ee59d 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/032368ea-e922-4faa-8128-54dfcf3ee59d 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/032368ea-e922-4faa-8128-54dfcf3ee59d 3456w" alt="Logo" sizes="200px" class="footer-col1-logo">
636    </div>
637
638    <div class="top ">
639      <div class="top__left">
640        
641        <div class="top__left__upper">
642          <div class="top__left__upper__first-column">
643            <div class="title">
644              Address
645            </div>
646            <div>
647              <div id="ili2"><p><strong>Fowler Sakey&nbsp;Team&nbsp;&nbsp;</strong></p><p><strong>at Coldwell Banker Realty - Fairfield&nbsp;</strong><br>1275 Post Rd., #2<br>Fairfield, CT 06824<br><a data-cke-saved-href="tel:+14758889713" href="tel:+14758889713">4758889713</a></p></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
648            </div>
649          </div>
650
651          <div class="top__left__upper__second-column">
652            <div class="title">Contact</div>
653            <div>Email: <a href="/cdn-cgi/l/email-protection#026b6c646d42646d756e6770716369677b7667636f2c616d6f" class=""><span class="__cf_email__" data-cfemail="abc2c5cdc4ebcdc4dcc7ced9d8cac0ced2dfcecac685c8c4c6">[email&#160;protected]</span></a></div>
654            <div>Phone: <a href="tel:475-888-9713" class=""> 475-888-9713</a></div>
655          </div>
656        </div>
657        
658              <div class="top__left__lower">
659                <div class="title">Follow</div>
660                <ul class="lp-socials social_icons-style-1 socials desktop">
661
662        <li>
663          <a
664            href="https://www.facebook.com/FowlerSakeyTeam"
665            class="lp-socials__link wow fadeInUp footer-socialbar-link"
666            data-wow-delay="0s"
667            target="_blank"
668            aria-label="FACEBOOK"
669          >
670              <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
671          </a>
672        </li>
673        <li>
674          <a
675            href="https://www.instagram.com/fowlersakeyteam/"
676            class="lp-socials__link wow fadeInUp footer-socialbar-link"
677            data-wow-delay="0.1s"
678            target="_blank"
679            aria-label="INSTAGRAM"
680          >
681              <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
682          </a>
683        </li>
684        <li>
685          <a
686            href="https://www.linkedin.com/in/rachel-fowler-74585717/"
687            class="lp-socials__link wow fadeInUp footer-socialbar-link"
688            data-wow-delay="0.2s"
689            target="_blank"
690            aria-label="LINKEDIN"
691          >
692              <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
693          </a>
694        </li>
695        <li>
696          <a
697            href="https://www.youtube.com/channel/UCaZFjRE5RqPIHXbtPWIBYGA/featured"
698            class="lp-socials__link wow fadeInUp footer-socialbar-link"
699            data-wow-delay="0.3s"
700            target="_blank"
701            aria-label="YOUTUBE"
702          >
703              <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
704          </a>
705        </li>
706        <li>
707          <a
708            href="https://ar.pinterest.com/fowler0264/"
709            class="lp-socials__link wow fadeInUp footer-socialbar-link"
710            data-wow-delay="0.4s"
711            target="_blank"
712            aria-label="PINTEREST"
713          >
714              <span class="lp-i lp-i--pinterest" aria-hidden="true"></span>
715          </a>
716        </li>
717        <li>
718          <a
719            href="https://www.zillow.com/profile/FowlerSakey%20and%20Team"
720            class="lp-socials__link wow fadeInUp footer-socialbar-link"
721            data-wow-delay="0.5s"
722            target="_blank"
723            aria-label="ZILLOW"
724          >
725              <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
726          </a>
727        </li>
728  </ul>
729              </div>
730       
731      </div>
732      <div class="top__right">
733        <div class="title">
734          Subscribe to our Newsletter
735        </div>
736        <div>
737          Get the latest on Local Events, Pro Tips , Home Market and more!
738        </div>
739        <form data-type="contact-form">
740          <div class="form-group h-pot">
741            <label for="-fmiddleName">Middle Name</label>
742            <input id="-fmiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
743          </div>
744          <div class="title lower email-label">
745            Email
746          </div>
747          <input
748          class="text-input email-input"
749          type="email"
750          name="email"
751          placeholder=""
752          required
753          />
754          <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
755  <label class='lp-tcr-content'>
756    <span class='lp-tcr-checkbox'>
757      <input
758        type='checkbox'
759        id='-termsAccepted'
760        name='termsAccepted'
761        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
762        oninput="this.setCustomValidity('')"
763        required
764      /></span>
765    <span class='lp-tcr-message'>
766      
767        I agree to be contacted by
768        Fowler Sakey Team
769        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
770        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
771        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
772    </span>
773  </label>
774
775</div>
776          <input
777          class="btn btn--primary--dark button-style-2"
778          type="submit"
779          value="Subscribe"
780          />
781          <p class="success hide">
782            Sent!
783          </p>
784        </form>
785        
786        <ul class="lp-socials social_icons-style-1 socials mobile center">
787
788        <li>
789          <a
790            href="https://www.facebook.com/FowlerSakeyTeam"
791            class="lp-socials__link wow fadeInUp footer-socialbar-link"
792            data-wow-delay="0s"
793            target="_blank"
794            aria-label="FACEBOOK"
795          >
796              <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
797          </a>
798        </li>
799        <li>
800          <a
801            href="https://www.instagram.com/fowlersakeyteam/"
802            class="lp-socials__link wow fadeInUp footer-socialbar-link"
803            data-wow-delay="0.1s"
804            target="_blank"
805            aria-label="INSTAGRAM"
806          >
807              <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
808          </a>
809        </li>
810        <li>
811          <a
812            href="https://www.linkedin.com/in/rachel-fowler-74585717/"
813            class="lp-socials__link wow fadeInUp footer-socialbar-link"
814            data-wow-delay="0.2s"
815            target="_blank"
816            aria-label="LINKEDIN"
817          >
818              <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
819          </a>
820        </li>
821        <li>
822          <a
823            href="https://www.youtube.com/channel/UCaZFjRE5RqPIHXbtPWIBYGA/featured"
824            class="lp-socials__link wow fadeInUp footer-socialbar-link"
825            data-wow-delay="0.3s"
826            target="_blank"
827            aria-label="YOUTUBE"
828          >
829              <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
830          </a>
831        </li>
832        <li>
833          <a
834            href="https://ar.pinterest.com/fowler0264/"
835            class="lp-socials__link wow fadeInUp footer-socialbar-link"
836            data-wow-delay="0.4s"
837            target="_blank"
838            aria-label="PINTEREST"
839          >
840              <span class="lp-i lp-i--pinterest" aria-hidden="true"></span>
841          </a>
842        </li>
843        <li>
844          <a
845            href="https://www.zillow.com/profile/FowlerSakey%20and%20Team"
846            class="lp-socials__link wow fadeInUp footer-socialbar-link"
847            data-wow-delay="0.5s"
848            target="_blank"
849            aria-label="ZILLOW"
850          >
851              <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
852          </a>
853        </li>
854  </ul>
855      </div>
856    </div>
857
858    <div class="middle">
859      <div class="middle__left">
860        <style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#i6xmt{font-size:12px;}#i56u7{filter:invert(1);}</style><div></div><div id="iagl"><p id="i6xmt">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. © <span class="auto-year-update"># </span>Coldwell Banker. All Rights Reserved. Coldwell Banker and the Coldwell Banker logos 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. <img id="i56u7" src="https://res.cloudinary.com/luxuryp/images/zbxf1j3xdplm6lhfnqo3/realtor-eho-logo-07232021-update-dark" alt="" width="25px" height="auto"></p></div>
861      </div>
862      <div class="middle__right">
863      </div>
864    </div>
865
866    <div class="bottom">
867      <div class="bottom__sitemap">
868          <a  href="/neighborhoods" class="footer-row-link ">Explore our Towns</a>
869          <a  href="/properties/sold" class="footer-row-link ">Our Team Sales</a>
870          <a  href="/testimonials" class="footer-row-link ">Our Client Stories</a>
871      </div>
872      <div class="bottom__footer">
873        <div class="bottom__footer__left by">
874          <div class="image-link">
875              <div class="img-wrap">
876                <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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3" 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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 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/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/b015ce0d-ae5d-4cd2-acbd-149542c7bac3 3456w" class="[object Object]" alt="">
877              </div>
878            <span>Powered by <a href="https://www.luxurypresence.com/" class="link  underline" target="_blank">Luxury Presence</a></span>
879          </div>
880        </div>
881        <div class="bottom__footer__right by">
882          © Copyright <span class="auto-year-update">2026</span> | <a class="link " href="/terms-and-conditions">Privacy Policy</a>
883        </div>
884      </div>
885
886    </div>
887  </div>
888
889
890  
891</div>
892        </footer>
893
894        <div id="modal-global-contact-us" class="modal "
895            data-el-id=""
896            style="background-color: ;"
897            >
898            <div class="modal-content">
899                <div class="contact_popup">
900          <div class="contact-form__wrap visible">
901            <div class="contact-form__header">
902              <a href="" class="contact-form__logo">
903                    <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4" 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/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06dcc7ad-18d8-44c5-8038-b0c93e26fcc4 643w" alt="Logo" sizes="200px">
904              </a>
905          
906              <button class="contact-form__close close"></button>
907            </div>
908            
909            <div class="contact-form__main">
910              <h1 class="contact-form__title">Get in Touch</h1>
911          
912          
913              <form class="contact-form__form" data-type="contact-form">
914                
915                <div class="form-group h-pot">
916                	<label for="-middleName">Middle Name</label>
917                	<input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
918                </div>
919        
920                <div class="contact-form__form-group">
921                  <label for="contactName">Name</label>
922                  <input id="contactName" name="name" type="text" required placeholder=" ">
923                </div>
924          
925                <div class="contact-form__form-group">
926                  <label for="contactEmail">Email</label>
927                  <input id="contactEmail" type="email" name="email" required pattern="[a-zA-Z0-9.!#$%&amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+" placeholder=" ">
928                </div>
929        
930                <div class="contact-form__form-group">
931                  <label for="contactPhone">Phone</label>
932                  <input id="contactPhone" type="tel" name="phone" required placeholder=" ">
933                </div>
934          
935                <div class="contact-form__form-group">
936                  <label for="contactMessage">Message</label>
937                  <textarea name="message" id="contactMessage" required placeholder=" "></textarea>
938                </div>
939        
940                <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
941          <label class='lp-tcr-content'>
942            <span class='lp-tcr-checkbox'>
943              <input
944                type='checkbox'
945                id='-termsAccepted'
946                name='termsAccepted'
947                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
948                oninput="this.setCustomValidity('')"
949                required
950              /></span>
951            <span class='lp-tcr-message'>
952              
953                I agree to be contacted by
954                Fowler Sakey Team
955                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
956                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
957                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
958            </span>
959          </label>
960        
961        </div>
962          
963                <button type="submit" data-type="CONTACT_US" class="btn contact-popup-submit btn--primary--dark contact-form__form-submit button-style-1">Submit</button>
964                <p class="loading-placeholder">
964Sending...</p>
965                <p class="success hide">Sent!</p>
966              </form>
967              
968            </div>
969        
970            <div class="contact-form__footer  ">
971        
972              <div class="block">
973                
974                <p>T: <a class="link hyperlink-style-1" href="tel:(475) 888-9713">(475) 888-9713</a></p>
975                <p>E: <a class="link hyperlink-style-1" href="/cdn-cgi/l/email-protection#0960676f66496f667e656c7b7a68626c707d6c6864276a6664"><span class="__cf_email__" data-cfemail="355c5b535a75535a4259504746545e504c415054581b565a58">[email&#160;protected]</span></a></p>
976              </div>
977        
978        
979        
980            </div>
981          </div>
982        </div>
983            </div>
984            <button class="close lp-close" type="button" aria-label="close modal">
985                <span class="lp-close-icon" aria-hidden="true"></span>
986            </button>
987        </div>
988        <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;">
989          <style>
990            #qualifying-questions-modal .custom-select-toggle {
991              border: 1px solid #848484;
992              border-radius: 8px;
993              padding: 12px 16px;
994            }
995        
996            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
997              color: #848484;
998            }
999        
1000            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
1001              color: #848484;
1002              opacity: 1;
1003            }
1004        
1005            #qualifying-questions-modal .disclaimer-more {
1006              display: none;
1007            }
1008        
1009            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
1010              display: inline;
1011            }
1012        
1013            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
1014              display: none;
1015            }
1016          </style>
vendor: 119 bytes, lines 1016-1017
1016
1017          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1017<script>
1018            function toggleDisclaimerQualifyingQuestionsModal() {
1019              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
1020              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
1021        
1022              if (disclaimerText.classList.contains('collapsed')) {
1023                disclaimerText.classList.remove('collapsed');
1024                toggleButton.textContent = 'Read less';
1025                toggleButton.setAttribute('aria-expanded', 'true');
1026              } else {
1027                disclaimerText.classList.add('collapsed');
1028                toggleButton.textContent = 'Read more';
1029                toggleButton.setAttribute('aria-expanded', 'false');
1030              }
1031            }
1032          </script>
1032
1033          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
1034            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
1035              <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;">
1036                <span aria-hidden="true">&times;</span>
1037              </button>
1038              <div style="padding: 40px 30px 32px;">
1039                <div style="text-align: left; margin-bottom: 32px;">
1040                  <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;">
1041                    Thanks, please provide more information to help serve you
1042                  </h2>
1043                </div>
1044                <form id="qualifying-questions-modal-form" data-type="contact-form">
1045                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
1046                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
1047                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
1048                  <label for="qualifying-questions-modal-email" style="display:none;">
1049                    Email
1050                  </label>
1051                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
1052                    Trigger Source
1053                  </label>
1054        
1055                  <div style="margin-bottom: 20px;">
1056                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
1057                      Phone Number
1058                    </label>
1059                    <input
1060                      type="tel"
1061                      id="qualifying-questions-modal-phoneNumber"
1062                      name="phoneNumber"
1063                      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;"
1064                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
1065                      required
1066                      placeholder="Phone"
1067                      aria-label="Phone Number"
1068                      inputmode="tel"
1069                      autocomplete="tel"
1070                      onfocus="this.style.borderColor='black';"
1071                      onblur="this.style.borderColor='#848484';"
1072                    />
1073                  </div>
1074        
1075                  <div style="margin-bottom: 20px;">
1076                    <label for="qualifying-questions-modal-interest" style="display:none;">
1077                      Interest
1078                    </label>
1079                    <select
1080                      id="qualifying-questions-modal-interest"
1081                      name="interest"
1082                      required
1083                      data-label="Interest"
1084                      aria-label="Interest"
1085                      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;"
1086                      onfocus="this.style.borderColor='black'; this.style.color='black';"
1087                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
1088                    >
1089                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
1090                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
1091                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
1092                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
1093                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
1094                      <option value="Other" style="background: #fff; color: black;">Other</option>
1095                    </select>
1096                  </div>
1097        
1098                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
1099                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
1100                    <label class='lp-tcr-content'>
1101                      <span class='lp-tcr-checkbox'>
1102                        <input
1103                          type='checkbox'
1104                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
1105                          name='termsAccepted'
1106                          aria-describedby='qualifying-questions-modal-disclaimer-text'
1107                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1108                          oninput="this.setCustomValidity('')"
1109                          required
1110                        /></span>
1111                      <span class='lp-tcr-message'>
1112                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
1113                          
1114                            I agree to be contacted by
1115                            <strong>Fowler &amp; Sakey</strong>
1116                            via call, email, and text <span class="disclaimer-more">for real estate services. 
1117                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
1118                            You can also click the unsubscribe link in the emails. 
1119                            Message and data rates may apply. Message frequency may vary.</span>
1120                            <span class="disclaimer-ellipsis">...</span>
1121                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
1122                        </div>
1123                        <button
1124                          id="qualifying-questions-modal-toggle-disclaimer"
1125                          type="button"
1126                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
1127                          aria-expanded="false"
1128                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
1129                        >
1130                          Read more
1131                        </button>
1132                      </span>
1133                    </label>
1134                  </div>
1135        
1136                  <div>
1137                    <button
1138                      type="submit"
1139                      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;"
1140                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1141                      onmouseout="this.style.background='black'; this.style.color='white';"
1142                    >
1143                      Submit
1144                    </button>
1145                  </div>
1146                </form>
1147              </div>
1148            </div>
1149          </div>
1150        </div>
1151
1152    
1152<script>
1153        (function() {
1154        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1155
1156        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1157            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1158            entries.forEach(function(video) {
1159                if (video.isIntersecting) {
1160                for (var source in video.target.children) {
1161                    var videoSource = video.target.children[source];
1162                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1163                    videoSource.src = videoSource.dataset.src;
1164                    }
1165                }
1166
1167                video.target.load();
1168                video.target.classList.remove("lazy");
1169                lazyVideoObserver.unobserve(video.target);
1170                }
1171            });
1172            });
1173
1174            lazyVideos.forEach(function(lazyVideo) {
1175                lazyVideoObserver.observe(lazyVideo);
1176            });
1177        }
1178        })();
1179    </script>
1179
1180
1181        <!-- Global site tag (gtag.js) - Google Analytics -->
1182        
1182<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1182
1183
1184            <!-- Google Tag Manager -->
1185            
1185<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1186                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1187                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1188                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1189            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1189
1190            <!-- End Google Tag Manager -->
1191
1192
1193        <!-- LP Tracker (divolte.js) - LP Divolte -->
1194            
1194<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1194
1195        <!-- LP Tracker (eventBus) - LP EventBus -->
1196            
1196<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1196
1197
1198    
1198<script>
1199        window.dataLayer = window.dataLayer || [];
1200        document.sendGoogleTagManagerEvent = function() {
1201            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1202            if (window.navigator.globalPrivacyControl) {
1203                return;
1204            }
1205
1206            dataLayer.push(arguments);
1207        }
1208
1209        document.sendGoogleTagManagerEvent('js', new Date());
1210            document.sendGoogleTagManagerEvent('config', 'UA-248563304-25', { page: location.pathname, location: location.href });
1211            document.sendGoogleTagManagerEvent('config', 'G-BYL9J12L2E', { page: location.pathname, location: location.href });
1212            document.sendGoogleTagManagerEvent('config', 'G-VYD9MLKQNS', { page: location.pathname, location: location.href });
1213        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1214            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1215                event_category: googleEvent.eventCategory,
1216                event_label: googleEvent.eventLabel,
1217                value: googleEvent.eventValue,
1218                page: googleEvent.page,
1219                location: googleEvent.location
1220            })
1221        };
1222
1223        document.addEventListener("DOMContentLoaded", function() {
1224            (function() {
1225                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1226                var date = new Date();
1227                var elements = document.getElementsByClassName('auto-year-update');
1228                var i;
1229                for (i = 0; i < elements.length; i++) {
1230                    elements[i].innerText = date.getFullYear();
1231                }
1232            })();
1233            if (window.divolteLp) {
1234                window.divolteLp('sendLpPageView', {});
1235            }
1236            if (window.eventBusLp) {
1237                window.eventBusLp('sendLpPageView', {});
1238            }
1239        });
1240    </script>
1240
1241
1242
1243    
1243<script>
1244    // Function to dynamically load a script
1245    function loadScript(url, callback) {
1246        var script = document.createElement('script');
1247        script.type = 'text/javascript';
1248        script.src = url;
1249        script.defer = true;
1250        script.async = true;
1251        script.onload = callback;
1252        document.head.appendChild(script);
1253    }
1254
1255    // Function to dynamically load CSS file
1256    function loadCSS(url) {
1257        var link = document.createElement("link");
1258        link.rel = "stylesheet";
1259        link.href = url;
1260        document.head.appendChild(link);
1261    }
1262
1263    // Global methods / variables that can be accessed by element js
1264    window.luxuryPresence = {
1265        libs: {
1266            loadJs: loadScript,
1267            loadCss: loadCSS,
1268            jsLibsMap: {
1269                paroller: {
1270                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1271                    isLoaded: false,
1272                },
1273                ionRangeSlider: {
1274                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1275                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1276                    isLoaded: false,
1277                    requires: ['jquery'],
1278                },
1279                splide: {
1280                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1281                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1282                    isLoaded: false,
1283                },
1284                wow: {
1285                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1286                    isLoaded: false,
1287                },
1288                jquery: {
1289                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1290                    isLoaded: false,
1291                },
1292                slick: {
1293                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1294                    isLoaded: false,
1295                    requires: ['jquery'],
1296                },
1297                libphonenumber: {
1298                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1299                    isLoaded: false,
1300                },
1301            },
1302        },
1303    };
1304    </script>
1304
1305    
1305<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>
1305
1306    
1306<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1306
1307    
1307<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1307
1308    
1308<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1308
1309    
1309<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>
1309
1310    
1310<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>
1310
1311    
1311<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>
1311
1312
1313    <!-- GOOGLE TRANSLATE SCRIPT -->
1314    
1314<script>
1315        function googleTranslateElementInit() {
1316            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1317            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1318            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1319            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1320                translate.innerText = '';
1321                new google.translate.TranslateElement({
1322                    pageLanguage: 'en',
1323                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1324                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1325                }, translate);
1326            });
1327        }
1328    </script>
1328
1329    
1329<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1329
1330            
1330<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1330
1331
1332    <!-- GOOGLE TRANSLATE SCRIPT END-->
1333    
1333<script>
1334
1335        // UI helpers
1336        (function () {
1337
1338            function getSideMenu () {
1339                return document.querySelector('body > div.sidemenu');
1340            }
1341
1342            function sideMenuHide (instant) {
1343                var sideMenu = getSideMenu();
1344                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1345                  return;
1346                }
1347                sideMenu.classList.remove('visible');
1348                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1349                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1350            }
1351
1352            function sideMenuShow () {
1353                var sideMenu = getSideMenu();
1354                if (!sideMenu || sideMenu.classList.contains('visible')) {
1355                  return;
1356                }
1357                sideMenu.classList.add('visible');
1358                sideMenu.dispatchEvent(new Event('lpui-show'));
1359                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1360            }
1361
1362            function sideMenuToggle () {
1363                var sideMenu = getSideMenu();
1364                if (!sideMenu) {
1365                  return;
1366                }
1367                var isSideMenuVisible = sideMenu.classList.contains('visible');
1368                if (isSideMenuVisible) {
1369                    sideMenuHide();
1370                } else {
1371                    sideMenuShow();
1372                }
1373            }
1374
1375            var scrollLockRequests = {};
1376            window.__debug_scrollLockRequests = scrollLockRequests;
1377            var hideScrollStyles = ''+
1378                    'body {'+
1379                    'overflow: hidden;' +
1380                    '}';
1381            var hideScrollId = 'hide-body-scroll-style';
1382
1383            function scrollLock () {
1384                var style = document.createElement('style');
1385                style.id = hideScrollId;
1386                style.textContent = hideScrollStyles;
1387                document.head.appendChild(style);
1388                window.dispatchEvent(new Event('lpui-scroll-locked'));
1389            }
1390
1391            function scrollUnlock () {
1392                document.getElementById(hideScrollId)?.remove();
1393                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1394            }
1395
1396            function requestScrollLock (lockId) {
1397                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1398                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1399                if (!wasLocked) {
1400                    scrollLock();
1401                }
1402            }
1403
1404            function releaseScrollLock (lockId) {
1405                if (lockId) {
1406                    delete scrollLockRequests[lockId];
1407                    if (!Object.keys(scrollLockRequests).length) {
1408                        scrollUnlock();
1409                    }
1410                } else {
1411                    scrollLockRequests = {};
1412                    window.__debug_scrollLockRequests = scrollLockRequests;
1413                    scrollUnlock();
1414                }
1415            }
1416
1417            function showModal (modalId, options) {
1418                var modal = document.getElementById(modalId);
1419                if (!modal) {
1420                    return;
1421                }
1422
1423                if (!modal.classList.contains('visible')) {
1424                    modal.classList.add('visible');
1425                    if (options && options.scrollLock) {
1426                        window.lpUI.requestScrollLock(modalId);
1427                    }
1428                    modal.dispatchEvent(new Event('lpui-show'));
1429                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1430                }
1431
1432                const visibleModals = document.querySelectorAll('.modal.visible');
1433
1434                if (visibleModals.length > 1) {
1435
1436                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1437                        const zIndex = window.getComputedStyle(modal).zIndex;
1438                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1439                        return Math.max(maxZIndex, parsedZIndex);
1440                    }, 0);
1441
1442                    modal.style.zIndex = maxZIndex + 1;
1443                }
1444
1445            }
1446
1447            function _hideModal (modalEl) {
1448                if (!modalEl) {
1449                    return;
1450                }
1451                if (!modalEl.classList.contains('visible')) {
1452                    return;
1453                }
1454                modalEl.classList.remove('visible');
1455                modalEl.style.zIndex = '';
1456                modalEl.dispatchEvent(new Event('lpui-hide'));
1457                var modalId = modalEl.getAttribute('id');
1458                if (modalId) {
1459                    window.lpUI.releaseScrollLock(modalId);
1460                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1461                }
1462            }
1463
1464            function hideModal (modalId) {
1465                _hideModal(document.getElementById(modalId));
1466            }
1467
1468            function hideClosestModal (el) {
1469              const modal = el?.closest('.modal');
1470              if (!modal) {
1471                return;
1472              }
1473              if (modal.classList) {
1474                _hideModal(modal);
1475                return;
1476              }
1477              if (modal.length && modal[0].classList) {
1478                _hideModal(modal[0]);
1479              }
1480            }
1481
1482            window.lpUI = {
1483                sideMenuHide: sideMenuHide,
1484                sideMenuShow: sideMenuShow,
1485                sideMenuToggle: sideMenuToggle,
1486                requestScrollLock: requestScrollLock,
1487                releaseScrollLock: releaseScrollLock,
1488                showModal: showModal,
1489                hideModal: hideModal,
1490                hideClosestModal: hideClosestModal
1491            }
1492        })();
1493
1494        var stringifyPrimitive = function(v) {
1495            switch (typeof v) {
1496                case 'string':
1497                    return v;
1498
1499                case 'boolean':
1500                    return v ? 'true' : 'false';
1501
1502                case 'number':
1503                    return isFinite(v) ? v : '';
1504
1505                default:
1506                    return '';
1507            }
1508        };
1509
1510        function objectToQuerystring(obj, sep, eq, name) {
1511            // https://github.com/Gozala/querystring/blob/master/encode.js
1512            sep = sep || '&';
1513            eq = eq || '=';
1514            if (obj === null) {
1515                obj = undefined;
1516            }
1517
1518            if (typeof obj === 'object') {
1519                return Object.keys(obj).map(function(k) {
1520                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1521                    if (Array.isArray(obj[k])) {
1522                        return obj[k].map(function(v) {
1523                            return ks + encodeURIComponent(stringifyPrimitive(v));
1524                        }).join(sep);
1525                    } else {
1526                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1527                    }
1528                }).filter(Boolean).join(sep);
1529
1530            }
1531
1532            if (!name) return '';
1533            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1534                    encodeURIComponent(stringifyPrimitive(obj));
1535        }
1536
1537        function getPath(url, options) {
1538            var parser = document.createElement('a');
1539            parser.href = url || '';
1540            var path = parser.pathname || '';
1541            if (path[0] !== '/') {
1542              // IE does not return path starting with a slash
1543              path = '/' + path;
1544            }
1545
1546            if (options && options.queryString) {
1547                path += parser.search;
1548            }
1549
1550            return path;
1551        }
1552
1553        function getMLSAutocomplete(keyword) {
1554            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1555            var query = {
1556                kind: 'listings',
1557                query: keyword
1558            };
1559
1560            return superagent
1561                .get(searchURL)
1562                .query(query)
1563                .then(function(res) {
1564                    var data = res.body || [];
1565                    // Array of listing_auto_complete documents: id, display_address, city, state,
1566                    // price, sold_price, status, status_modified_at, photo_urls (array of URLs).
1567
1568                    return data;
1569                });
1570        }
1571
1572        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1573            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1574
1575            return superagent
1576                .get(searchURL)
1577                .query({ kind: 'listings', query: keyword, ...filters })
1578                .then(function(res) {
1579                    // Same response shape as getMLSAutocomplete.
1580                    return res.body || [];
1581                });
1582        }
1583
1584        function makeMlsLink(data) {
1585            // Code Dupe from utils/googlePlace
1586            // mapping of google data type to mls data type
1587            var mapping = {
1588                neighborhood: 'neighborhood',
1589                locality: 'place',
1590                administrative_area_level_2: 'county',
1591                administrative_area_level_1: 'state',
1592                postal_code: 'postalcode',
1593            };
1594
1595            function _filterTypes(types) {
1596                return types.filter(function(type) { return type !== 'political' });
1597            }
1598
1599            if (!data || !Object.keys(data).length) {
1600                return '/home-search/listings';
1601            }
1602
1603            var newData = {};
1604            _filterTypes(data.types).forEach(function(type) {
1605                if (mapping[type]) {
1606                    newData.search_type = mapping[type];
1607                }
1608            });
1609            newData.omnibox = data.formatted_address;
1610            data.address_components.forEach(function(component) {
1611                _filterTypes(component.types).forEach(function(type) {
1612                    if (mapping[type]) {
1613                        newData[mapping[type]] = component.long_name;
1614                    }
1615                });
1616            });
1617            var bounds = data.geometry.bounds;
1618            var convertedData = Object.assign(bounds, newData);
1619
1620            return '/home-search/listings?' + objectToQuerystring(convertedData);
1621        }
1622
1623        function debounce(func, wait) {
1624            let timeout;
1625            return function(...args) {
1626                const context = this;
1627                clearTimeout(timeout);
1628                timeout = setTimeout(() => func.apply(context, args), wait)
1629            }
1630        }
1631
1632        // Global methods / variables that can be accessed by element js
1633        window.luxuryPresence = {
1634            ...window.luxuryPresence,
1635            defaults: {
1636                companyId: 'a0bff4f0-0ca7-460c-b77b-fa4993017cd5',
1637                apiGatewayUrl: '/api-gw',
1638                routerUrl: '/api-nv',
1639                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      originalStatus {\n        id\n        name\n      }\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      soldDate\n      timeZone\n      buyerAgencyCompensation\n      buyerAgencyCompensationType\n      landIdUrl\
1639n    }\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    $companyId: ID\n    $pressReleaseIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $categories: [String!]\n    $propertyId: [ID!]\n    $developmentId: [ID!]\n    $agentId: [ID!]\n    $teamId: [ID!]\n    $year: [Int!]\n  ) {\n    pressReleases (\n      companyId: $companyId\n      pressReleaseIds: $pressReleaseIds\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      year: $year\n    ) {\n      items {\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          altTagText\n        }\n        publishedAt\n        categories\n      }\n      total\n    }\n  }\n","posts":"\n  query Posts (\n    $companyId: String\n    $postId: [ID!]\n    $slug: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $featured: Boolean\n    $categoryId: [String!]\n    $neighborhoodId: [String!]\n  ) {\n    posts (\n      companyId: $companyId\n      postId: $postId\n      slug: $slug\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      featured: $featured\n      postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n      categoryId: $categoryId\n      neighborhoodId: $neighborhoodId\n    ) {\n      items {\n        id\n        postId\n        title\n        subtitle\n        description\n        status: postStatus\n        featured\n        slug\n        categories {\n          id\n          name\n        }\n        createdAt\n        publishedAt\n        updatedAt\n        scheduledAt\n        createdBy {\n          ... on Agent {\n            firstName\n            lastName\n          }\n        }\n        customAuthor\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        seoTitle\n        seoDescription\n      }\n      total\n    }\n  }\n","testimonials":"\n  query Testimonials (\n    $companyId: String\n    $agentId: ID\n    $teamId: ID\n    $testimonialIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n  ) {\n    testimonials (\n      companyId: $companyId\n      agentId: $agentId\n      teamId: $teamId\n      testimonialIds: $testimonialIds\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n    ) {\n      items {\n        id\n        testimonialId\n        body\n        author\n        position\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\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      total\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    $companyId: ID!\n    $developmentIds: [ID!]\n    $agentId: String\n    $slug: String\n    $search: String\n    $tag: [String!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirection\n    $neighborhoodId: ID\n    $neighborhoodIds: [ID!]\n  ) {\n    developments (\n      companyId: $companyId\n      developmentIds: $developmentIds\n      agentId: $agentId\n      slug: $slug\n      search: $search\n      tag: $tag\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      items {\n        id\n        name\n        description\n        descriptionShort\n        slug\n        createdAt\n        updatedAt\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        logoMedia {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        websiteUrl\n        videoUrl\n        googlePlaceData\n        coordinates\n        mlsLink\n        seoTitle\n        seoDescription\n        featuresAndAmenities {\n          featureIds\n          features {\n            featureId\n            name\n          }\n          description\n        }\n        latitude\n        longitude\n        addressLine1\n        addressLine2\n        city\n        state\n        zipCode\n        country\n        yearCompleted\n        residences\n        availability\n        neighborhoodId\n        developer\n        architect\n        interiorDesigner\n        stories\n        buildingHeight\n        buildingHeightUnit\n        bedMin\n        bedMax\n        bathMin\n        bathMax\n        livingSpaceMin\n        livingSpaceMa
1639x\n        livingSpaceUnit\n        lotSizeMin\n        lotSizeMax\n        lotSizeUnit\n        priceMin\n        priceMax\n        priceCurrency\n        tags\n      }\n      total\n    }\n  }\n","pois":"\n  query PointsOfInterest (\n    $regionId: UUID!\n    $radius: Int\n    $offset: Int\n    $limit: Int\n    $categories: [AreasOfInterestCategories!]\n    $sortBy: AreasOfInterestSorting\n  ) {\n    pois: areasOfInterest (\n      input: {\n        regionId: $regionId\n        radius: $radius\n        offset: $offset\n        limit: $limit\n        categories: $categories\n        sortBy: $sortBy\n      }\n    ) {\n      items {\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      total\n    }\n  }\n","offices":"\n  query Offices (\n    $companyId: ID!\n    $officeIds: [ID!]\n    $officeMlsIds: [String!]\n    $externalIds: [String!]\n    $externalSource: String\n    $agentId: ID\n    $archived: Boolean\n    $tags: [String!]\n    $slug: String\n    $search: String\n    $sort: String\n    $sortDir: SortDirection\n    $offset: Int\n    $limit: Int\n  ) {\n    offices (\n      companyId: $companyId\n      officeIds: $officeIds\n      officeMlsIds: $officeMlsIds\n      externalIds: $externalIds\n      externalSource: $externalSource\n      agentId: $agentId\n      archived: $archived\n      tags: $tags\n      slug: $slug\n      search: $search\n      sort: $sort\n      sortDir: $sortDir\n      offset: $offset\n      limit: $limit\n    ) {\n      items {\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        tags\n        media {\n          id\n          originalUrl\n          thumbnailUrl\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n        }\n      }\n      total\n    }\n  }\n","teams":"\n  query Teams (\n    $companyId: ID\n    $teamIds: [ID!]\n    $agentId: ID\n    $externalIds: [String!]\n    $externalSource: String\n    $slug: String\n    $search: String\n    $sort: String\n    $sortDir: String\n    $offset: Int\n    $limit: Int\n  ) {\n    teams (\n      companyId: $companyId\n      teamIds: $teamIds\n      agentId: $agentId\n      externalIds: $externalIds\n      externalSource: $externalSource\n      slug: $slug\n      search: $search\n      sort: $sort\n      sortDir: $sortDir\n      offset: $offset\n      limit: $limit\n    ) {\n      items {\n        id\n        companyId\n        name\n        email\n        shortBio\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      total\n    }\n  }\n"},
1640                propertyPlaceholderImage: {"id":"7ee354f0-0e07-4c74-a7f4-468b08f2ba87","alt":null,"bytes":38088,"width":1920,"format":"png","height":1200,"pngUrl":"","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/05388df4-e5d1-4b9d-86cd-14d764b1904b","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/05388df4-e5d1-4b9d-86cd-14d764b1904b","authorUrl":null,"createdAt":"2025-04-16T22:21:45.014Z","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/05388df4-e5d1-4b9d-86cd-14d764b1904b","sourceUrl":null,"updatedAt":"2025-04-16T22:21:45.014Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/05388df4-e5d1-4b9d-86cd-14d764b1904b","__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/05388df4-e5d1-4b9d-86cd-14d764b1904b","description":null,"displayName":"property-placeholder-12","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/05388df4-e5d1-4b9d-86cd-14d764b1904b","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/05388df4-e5d1-4b9d-86cd-14d764b1904b","originalFileName":"Property Placeholder (12)","cloudinaryPublicId":"05388df4-e5d1-4b9d-86cd-14d764b1904b"}
1641            },
1642            objectToQuerystring: objectToQuerystring,
1643            getPath: getPath,
1644            getMLSAutocomplete: getMLSAutocomplete,
1645            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1646            makeMlsLink: makeMlsLink,
1647            debounce: debounce,
1648        };
1649
1650        var wowOffset = 100;
1651    </script>
1651
1652    
1652<script>
1653        (()=>{function e(e){return e&&e.__esModule?e.default:e}var t=globalThis,r={},i={},s=t.parcelRequired4f7;null==s&&((s=function(e){if(e in r)return r[e].exports;if(e in i){var t=i[e];delete i[e];var s={id:e,exports:{}};return r[e]=s,t.call(s.exports,s,s.exports),s.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){i[e]=t},t.parcelRequired4f7=s);var o=s.register;o("ikl6F",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=e.exports.fetchExchangeRates=e.exports.toSupportedToCurrency=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.SUPPORTED_FROM_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.writeCurrencyCookie=e.exports.readValidCurrencyCookie=e.exports.readCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_NAME=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=void 0;var r=s("65bUu");Object.defineProperty(e.exports,"CURRENCY_COOKIE_MAX_AGE_SECONDS",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_MAX_AGE_SECONDS}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_NAME",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_NAME}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_PATH",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_PATH}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_SAME_SITE",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_SAME_SITE}}),Object.defineProperty(e.exports,"clearCurrencyCookie",{enumerable:!0,get:function(){return r.clearCurrencyCookie}}),Object.defineProperty(e.exports,"readCurrencyCookie",{enumerable:!0,get:function(){return r.readCurrencyCookie}}),Object.defineProperty(e.exports,"readValidCurrencyCookie",{enumerable:!0,get:function(){return r.readValidCurrencyCookie}}),Object.defineProperty(e.exports,"writeCurrencyCookie",{enumerable:!0,get:function(){return r.writeCurrencyCookie}});var i=s("gUuHZ");Object.defineProperty(e.exports,"DISPLAY_CURRENCIES",{enumerable:!0,get:function(){return i.DISPLAY_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_FROM_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_FROM_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_TO_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_TO_CURRENCIES}}),Object.defineProperty(e.exports,"toSupportedFromCurrency",{enumerable:!0,get:function(){return i.toSupportedFromCurrency}}),Object.defineProperty(e.exports,"toSupportedToCurrency",{enumerable:!0,get:function(){return i.toSupportedToCurrency}});var o=s("jCxYG");Object.defineProperty(e.exports,"fetchExchangeRates",{enumerable:!0,get:function(){return o.fetchExchangeRates}});var n=s("igUcG");Object.defineProperty(e.exports,"convertAmount",{enumerable:!0,get:function(){return n.convertAmount}}),Object.defineProperty(e.exports,"formatMoney",{enumerable:!0,get:function(){return n.formatMoney}})}),o("65bUu",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.readValidCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.writeCurrencyCookie=e.exports.readCurrencyCookie=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=e.exports.CURRENCY_COOKIE_NAME=void 0;var r=s("gUuHZ");e.exports.CURRENCY_COOKIE_NAME="lp-currency",e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=31536e3,e.exports.CURRENCY_COOKIE_SAME_SITE="Lax",e.exports.CURRENCY_COOKIE_PATH="/";let i=e=>e?.trim().toLowerCase().replace(/^\.+/,"")||void 0,o=e=>"undefined"!=typeof DOMException&&e instanceof DOMException,n=({document:t})=>{let r=`${e.exports.CURRENCY_COOKIE_NAME}=`;return t.cookie.split(";").map(e=>e.trim()).filter(e=>e.startsWith(r)).map(e=>e.slice(r.length))},a=e=>{try{return decodeURIComponent(e)}catch{return}};e.exports.readCurrencyCookie=e=>{let t=(e=>{try{return n(e)[0]}catch(e){if(!o(e))throw e;return}})(e);return void 0===t?void 0:a(t)};let l=(t,r,i,s)=>{var o;let n,a;t.document.cookie=`${e.exports.CURRENCY_COOKIE_NAME}=${r}${o=t.location,n="https:"===o.protocol?"; Secure":"",a=s?`; Domain=${s}`:"",`; Path=${e.exports.CURRENCY_COOKIE_PATH}; Max-Age=${i}; SameSite=${e.exports.CURRENCY_COOKIE_SAME_SITE}${n}${a}`}`};e.exports.writeCurrencyCookie=(t,s)=>{let a,d=(0,r.toSupportedToCurrency)(s);if(!d)return!1;let c=i(t.domain);try{if(a=n(t)[0],c&&l(t,"",0,void 0),l(t,encodeURIComponent(d),e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,c),(0,e.exports.readCurrencyCookie)(t)===d)return!0}catch(e){if(!o(e))throw e}return c&&void 0!==a&&((t,r)=>{try{if(n(t).includes(r))return;l(t,r,e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,void 0)}catch(e){if(!o(e))throw e}})(t,a),!1},e.exports.clearCurrencyCookie=e=>{let t=i(e.domain);try{t&&l(e,"",0,void 0),l(e,"",0,t)}catch(e){if(!o(e))throw e}},e.exports.readValidCurrencyCookie=(t,{enabled:s,enabledCurrencies:d})=>{if(!s)return;let c=(e=>{try{let t=n(e);if(!i(e.domain)||t.length<2)return t[0];return l(e,"",0,void 0),n(e)[0]}catch(e){if(!o(e))throw e;return}})(t);if(void 0===c)return;let u=new Set(d.map(r.toSupportedToCurrency).filter(e=>!!e)),h=(0,r.toSupportedToCurrency)(a(c));
1653if(h&&u.has(h))return h;(0,e.exports.clearCurrencyCookie)(t)}}),o("gUuHZ",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.toSupportedToCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_FROM_CURRENCIES=void 0,e.exports.SUPPORTED_FROM_CURRENCIES=["usd","cad","eur","gbp"];let r=(e,t)=>{if("string"!=typeof e)return;let r=e.toLowerCase();return t.includes(r)?r:void 0};e.exports.toSupportedFromCurrency=t=>r(t,e.exports.SUPPORTED_FROM_CURRENCIES),e.exports.DISPLAY_CURRENCIES=[{code:"usd",name:"US dollar"},{code:"eur",name:"Euro"},{code:"gbp",name:"Pound sterling"},{code:"cad",name:"Canadian dollar"},{code:"chf",name:"Swiss franc"},{code:"brl",name:"Brazilian real"},{code:"mxn",name:"Mexican peso"},{code:"sek",name:"Swedish krona"},{code:"nok",name:"Norwegian krone"},{code:"dkk",name:"Danish krone"},{code:"ars",name:"Argentine peso"},{code:"cop",name:"Colombian peso"},{code:"clp",name:"Chilean peso"},{code:"pen",name:"Peruvian sol"},{code:"dop",name:"Dominican peso"},{code:"gtq",name:"Guatemalan quetzal"},{code:"crc",name:"Costa Rican colón"},{code:"bob",name:"Bolivian boliviano"},{code:"pyg",name:"Paraguayan guaraní"},{code:"kyd",name:"Cayman Islands dollar"}],e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES.map(e=>e.code),e.exports.toSupportedToCurrency=t=>r(t,e.exports.SUPPORTED_TO_CURRENCIES)}),o("jCxYG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.fetchExchangeRates=void 0;var r=s("gUuHZ");let i=async(e,{baseUrl:t,signal:i,fetch:s,onError:o})=>{let n=(0,r.toSupportedFromCurrency)(e);if(!n)return{};let a=`${t.replace(/\/$/,"")}/api/v1/exchange-rates?from=${encodeURIComponent(n)}`;try{let e=await (s??fetch)(a,{credentials:"omit",signal:i});if(!e.ok)throw Error(`Exchange rates HTTP ${e.status}`);var l=await e.json();let t=l?.rates;if("object"!=typeof t||null===t)return{};let o={};return Object.entries(t).forEach(([e,t])=>{let i=(0,r.toSupportedToCurrency)(e);i&&"number"==typeof t&&Number.isFinite(t)&&t>0&&(o[i]=t)}),o}catch(e){try{o?.(e)}catch(e){console.warn("fetchExchangeRates: onError callback threw",e)}return{}}};e.exports.fetchExchangeRates=i}),o("igUcG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=void 0;var r=s("gUuHZ");e.exports.convertAmount=(e,t)=>{if(Number.isFinite(e)&&Number.isFinite(t)&&!(t<=0))return e*t},e.exports.formatMoney=(e,t,{precision:i=0}={})=>{let s=(0,r.toSupportedToCurrency)(t);if(!s||!Number.isFinite(e))return;let o=Number.isInteger(i)?i:0,n=Number.isInteger(e)?0:Math.min(Math.max(o,0),20);return new Intl.NumberFormat("en-US",{style:"currency",currency:s.toUpperCase(),minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}});var n={},a={};a={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let r=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===r[1].toLowerCase().indexOf("video"))return null;let i=r[r.length-1];i.lastIndexOf(".")>-1?i=`${i.slice(0,i.lastIndexOf("."))}.jpg`:i+=".jpg",r[r.length-1]=i;let s=3;"videos"===r[1].toLowerCase()&&""!==r[2]&&(s=2);let o=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;s<r.length-1&&o.test(r[s]);)s++;return r.splice(s,0,"so_0,eo_0"),t+r.join("/")}};let l={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "},d=/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9a-fA-F]+));/y,c=/[<&]/g,u=/["'>]/g,h=/<\/p\s*>|<br\s*\/?>|[\r\n\u2028\u2029]/g;function p(e,t){let r="";for(let i=0;i<e.length;){c.lastIndex=i;let s=c.exec(e);if(!s){r+=e.slice(i);break}let o=s.index;r+=e.slice(i,o);let n="&"===e[o]?function(e,t){d.lastIndex=t;let r=d.exec(e);return{text:r?function(e){if("#"!==e[1])return l[e.slice(1,-1)];
1653let t="x"===e[2]||"X"===e[2],r=parseInt(e.slice(t?3:2,-1),t?16:10);return 0===r||r>1114111||r>=55296&&r<=57343?e:160===r?" ":String.fromCodePoint(r)}(r[0]):"&",end:r?d.lastIndex:t+1}}(e,o):function(e,t,r){let i=function(e,t){let r=null;u.lastIndex=t+1;let i=u.exec(e);for(;i;){let t=i[0];if(r)t===r&&(r=null);else if('"'===t||"'"===t)r=t;else if(">"===t)return u.lastIndex;i=u.exec(e)}return -1}(e,t);return{text:-1===i?"<":function(e,t,r,i){if(!i)return"";let s=e.slice(t,r);if(/^<br\s*\/?>$/.test(s))return"&#10;";if(/^<\/p\s*>$/.test(s)){h.lastIndex=r;let t=h.exec(e);if(t&&"<"===t[0][0])return"&#10;"}return""}(e,t,i,r),end:-1===i?t+1:i}}(e,o,t);r+=n.text,i=n.end}return r}n=function(e,{isEqual:t}){let r=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],i=function(e,t,r){let i="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let s="number"==typeof r?r:0,o=Number.isInteger(e)?0:s,n={minimumFractionDigits:o,maximumFractionDigits:o};return"USD"===t?`$${e.toLocaleString(i,n)}`:"CAD"===t?`$${e.toLocaleString(i,n)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(i,n)}`:"GBP"===t?`\xa3${e.toLocaleString(i,n)}`:"PERCENT"===t?`${e}%`:"number"==typeof r&&r>-1?e.toLocaleString(i,{maximumFractionDigits:r}):e.toLocaleString(i)},s=function(e){switch(e){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""}},o=function(e){switch(e){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""}},n=function(e){switch(e){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""}},l=function(e,t){let r,i,a=t||{};switch(a.mode){case"short":r=o(e),i=a.frequencySeparator||"/";break;case"standard":case"std":r=n(e),i=a.frequencySeparator||"/";break;default:r=s(e),i=a.frequencySeparator||" "}return r?a.frequencyTag||a.frequencyClass?`${i}<${a.frequencyTag||"span"}${a.frequencyClass?` class="${a.frequencyClass}"`:""}>${r}</${a.frequencyTag||"span"}>`:i+r:""};return{isEmpty(e,t){let r=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?r?t.fn(this):t.inverse(this):r},ifEquals(e,r,i){return t(e,r)?i.fn(this):i.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!1):"",striptagsLineBreaks:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!0):"",truncate:(e,t,r)=>e?e.length>t?"string"==typeof r?e.slice(0,t-r.length)+r:e.slice(0,t):e:"",setSubArray(e=[],t,r,i,s){s.data.root[i]=e.slice(t,r)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:s,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,r,i){return e>=t&&e<r?i.fn(this):i.inverse(this)},formatPropertyStatus(e,t,r){let i="";switch(e){case"SOLD":i="Sold";break;case"FOR_SALE":i="For Sale";break;case"COMING_SOON":i="Coming Soon";break;case"INACTIVE":i="Inactive";break;case"POCKET_LISTING":i="Pocket Listing";break;case"PENDING":i="Pending";break;case"UNDER_CONTRACT":i="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":i="Active Under Contract";break;default:i=e}return("Sold"===i||"Leased"===i)&&t&&"string"==typeof r&&r&&(i+=` on ${r}`),i},formatGrade(e){switch(e){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:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let r="current"===e?new Date:new Date(e);if(Number.isNaN(r.getTime()))return"";if("YYYY"===t||"year"===t)return`${r.getFullYear()}`;if("MM/DD/YY"===t){let e=r.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${r.getDate()}/${r.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][r.getMonth()]} ${r.getDate()}, ${r.getFullYear()}`},openHousesFormat(e,t,r){if(!e||!t)return"";let i=e=>{let t=e.getHours();t>12&&(t-=12);let r=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?r+="PM":r+="AM",r},s="",o=e,n=t;
1653r&&(o=new Date(e).toLocaleString("en-US",{timeZone:r}),n=new Date(t).toLocaleString("en-US",{timeZone:r}),[,,,s]=new Date(t).toLocaleString("en-US",{timeZone:r,timeZoneName:"short"}).split(" "));let a=new Date(o),l=a.toLocaleDateString("en-US"),d=i(a),c=i(new Date(n));return`${l} ${d} - ${c} ${s}`},math:(e,t,r)=>(e=parseFloat(e),({"+":e+(r=parseFloat(r)),"-":e-r,"*":e*r,"/":e/r,"%":e%r})[t]),findByKey(e,t,r,i){let s=(e||[]).find(e=>e[t]===r);return i.fn(s)},capitalize(e,t,r){let i;return"string"==typeof e&&e.length&&(i=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),i},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,r,i){let s="",o=null;i.data&&(o=e.createFrame(i.data));let n=(r||[]).filter(Boolean);if(n&&n.length){let e=0;s=n.reduce((r,s,n)=>{let a=(t||[]).find(e=>e.id===s);return a?(o&&(o.index=n-e),r+i.fn(a,{data:o})):(e+=1,r)},"")}else for(let e=0,r=(t||[]).length;e<r;e++)o&&(o.index=e),s+=i.fn(t[e],{data:o});return s},ifIn(e,t,r){return t&&t.indexOf(e)>-1?r.fn(this):r.inverse(this)},partial:(t,r)=>(e.registerPartial(t,e.compile(r.fn())),`
1653<script type="text/x-handlebars-template" class="${t} pagination-script">${r.fn()}<\/script>`),numCompare(e,t,r,i){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[r](e,t)?!i.fn||i.fn(this):!!i.fn&&i.inverse(this)},lpFormatNumber:i,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,r)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,r,i){let s=null,o=0,n=new Set;return i.data&&(s=e.createFrame(i.data)),(t||[]).reduce((e,t,a)=>{let l=r?t[r]:t;return!n.has(l)||r&&void 0===l?(n.add(l),s&&(s.index=a-o),e+i.fn(t,{data:s})):(o+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let r=t[t.length-1].hash,s=t.length>1?t[0]:r.property,o=r.precision||0;t.length>2&&(r.mode=t[1]),r.mode||(r.mode="short");let n=t.length>3?t[2]:r.separator;if("string"!=typeof n&&(n=" | "),s.isPasswordProtected)return"Exclusive Listing";let a=t.length>4?t[3]:r.priceUponRequestText;if("string"!=typeof a&&(a="Price Upon Request"),s.priceUponRequest)return a;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(r.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${r.reducedTag||"span"} class="${r.reducedClass}">${i(c,s.currency,o)}</${r.reducedTag||"span"}>`),d&&(d=i(d,s.currency,o),r.priceTag||r.priceClass?u+=`<${r.priceTag||"span"}${r.priceClass?` class="${r.priceClass}"`:""}>${d}</${r.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&i(s.leasePrice,s.currency,o);if(h){u&&(u+=n);let e=`${h}${l(s.leasePeriod,r)}`;r.leaseTag||r.leaseClass?u+=`<${r.leaseTag||"span"}${r.leaseClass?` class="${r.leaseClass}"`:""}>${e}</${r.leaseTag||"span"}>`:u+=e}
1653return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:s,...o}=i.hash,n="",a="";if("string"==typeof t)n=t;else{let e={},{height:s,width:l,altTagText:d}=t;r.forEach(r=>{t[r.field]&&!e[t[r.field]]&&(e[t[r.field]]=r.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(o.alt=d),s&&l&&(s>=l&&(o.class?o.class+=" portrait":o.class="portrait"),"setDims"in i.hash&&(o.width=l,o.height=s)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(a=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,r)=>Math.abs(e[t]-1280)-Math.abs(e[r]-1280))),n=c[0]}delete o.setDims,a||delete o.sizes,"alt"in o||(o.alt=""),!("loading"in o)&&(i?.data?.root?.sectionIndex>1||s)&&(o.loading="lazy");let l=Object.keys(o).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(o[t])}"`).join(" ");return new e.SafeString(`<img src="${n}"${a?` srcset="${a}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let r in e)null!==e[r]&&void 0!==e[r]&&"object"!=typeof e[r]&&(t+=e[r]);return t},setVideoExtension(e,t){if(!e||!t)return"";let r=new URL(e);if("res.cloudinary.com"!==r.host)return r.pathname.endsWith(`.${t}`)?e:"";let i=r.pathname.lastIndexOf("."),s=r.pathname;return -1!==i&&(s=r.pathname.substr(0,i)),r.pathname=`${s}.${t}`,r.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let r=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${r}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:a.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let r=+t?.hash?.maxChars||2,i=e.match(/\b\w/g)?.slice(0,r);return i?(t?.hash?.addText&&(i=i.map(e=>e+t.hash.addText)),i.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class m{constructor(e,t,r){if(this.config=e,this.window=t,this.document=r,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let g="lp_lead_form_conversion_fired";function y(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(g)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(g,"true")}catch{}}catch{}}function f(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let b="/api/v1/home-valuation";class v extends m{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let r=t.indexOf(", call time frame:");return -1!==r&&(t=t.substring(0,r).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,r={},i=t("street_number"),s=t("route"),o=t("administrative_area_level_1"),n=t("postal_code"),a=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return i&&(r.streetNumber=i),s&&(r.streetName=s),l&&(r.city=l),o&&(r.state=o),n&&(r.zipcode=n),a&&(r.addressLine2=a),r}_extractAddressAndCoordinates(e){let t=null,r=null;if(e?.result){let{result:i}=e;i.address?.addressComponents&&(t=this._transformAddressComponents(i.address.addressComponents)),i.geocode?.location&&(r={latitude:i.geocode.location.latitude,longitude:i.geocode.location.longitude})}return{structuredAddress:t,coordinates:r}}_filterEmptyStrings(e){let t={};for(let[r,i]of Object.entries(e))""!==i&&null!=i&&(t[r]=i);return t}_getRawAddress(e){let t=e.activity.content||{},r=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,r,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,r=null){let i={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(r&&(i.errorMessage=r.userMessage||(r.status?`Request failed with status ${r.status}`:"An error occurred"),i.errorName=r.name,i.errorStatus=r.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(i)),this.window.posthog)try{this.window.posthog.capture(e,i)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
1653ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,r,i){let s=this._formatStructuredAddress(r)||this._getRawAddress(e);if(!s)throw Error("Unable to extract home valuation address from form data");let o={companyId:e.companyId,homeValuationAddress:s,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},n={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
1653ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},a=this._filterEmptyStrings(n);return{...o,...a,...r&&{address:r},...i&&{coordinates:i}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let r=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(r,e),r.status=t,r}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,r){let i=new AbortController,s=setTimeout(()=>i.abort(),1e4);try{let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:i.signal});clearTimeout(s);let n=await o.text(),a=this._parseResponsePayload(n);if(!o.ok)throw this._createResponseError(a,o.status);if(a&&"success"===a.status&&a.redirectUrl){if(f(r))return a;if(!this._isSafeRedirectUrl(a.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),a;return this.window.location.href=a.redirectUrl,{redirected:!0,url:a.redirectUrl}}return a}catch(e){throw clearTimeout(s),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let r=this._getRawAddress(e),i=null;try{i=await this._validateAddressSafely(r)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let s=null;try{s=await this._getHomeValuationEstimateSafely(i)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),s=null}let{structuredAddress:o,coordinates:n}=this._extractAddressAndCoordinates(i),a=`${t}${b}`,l=this._buildHomeValuationData(e,s,o,n),d=await this._submitLead(a,l,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),d}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:r}=this,i=t.googleMapsAPIKey;if(!i&&r.luxuryPresence?.mapApiLoader&&(i=await r.luxuryPresence.mapApiLoader.getMapApiKey()),!i)throw Error("Google Maps API key not configured");let s=new AbortController,o=setTimeout(()=>s.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:s.signal});if(clearTimeout(o),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(o),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${b}`;if(!e?.result?.address?.addressComponents)return null;let r=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(r))return this._logMissingAddressFields(r),null;let i=this._buildAddressQueryString(r),s=`${t}?${i}`,o=new AbortController,n=setTimeout(()=>
1653o.abort(),1e4);try{let e=await fetch(s,{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(n),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(n),e}}}let w="middleName",E="redirect-pending",_=["name","firstName","lastName",w,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],S="lp_map_key_failed",C="oauthSuccess",I={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function A(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function x(e,t){t.forEach(t=>{let r=e[t];Array.isArray(r)&&0===r.length&&delete e[t]})}function R(e,t,r,i){let s=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),o=i?.merge?s.flat():s.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),o.length>0&&(e[r]=[...new Set(o)])}function T(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let r=[...e.socialLinks].sort((e,t)=>{let r=e.type?.toLowerCase()||"",i=t.type?.toLowerCase()||"";return r.localeCompare(i)});t.socialLinks=r;let i={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};r.forEach(e=>{let r=i[e.type?.toLowerCase()??""];r&&(t[r]=e.link)})}return t}function L(e){return e&&Array.isArray(e)?e.map(e=>T(e)):e}function k(e){let{region:t}=e;if(!A(t))return e;let{schools:r,pois:i,...s}=t,o={...s,schools:A(r)?r.data??[]:[],...Array.isArray(i)?{pois:i.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:o}}function M(e){return e&&Array.isArray(e)?e.map(e=>k(e)):e}function $(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let r=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:r}}function U(e){return e&&Array.isArray(e)?e.map(e=>$(e)):e}function P(e,t){return A(e)?t(e):e}function O(e,t){return Array.isArray(e)?t(e):e}var N={};N=`
1654  query PropertyDisclaimers($input: PropertyDisclaimersInput!) {
1655    propertyDisclaimers(input: $input) {
1656      feedId
1657      listingId
1658      resolvedFromListing
1659      listingCardAttribution
1660      listingDetailCourtesy
1661      listingDetailFooter
1662      logo
1663    }
1664  }
1665`;let D={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"};var F={};F=s("ikl6F");let B=new class{constructor(e){this.isBuilder=!1,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=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null,this.currencyConversionEnabled=!1,this.enabledCurrencies=[]}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setCurrencyConversion({enabled:e,enabledCurrencies:t}={}){this.currencyConversionEnabled=!0===e,this.enabledCurrencies=Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}setEventBus({enabled:e,apiKey:t,url:r}){this.eventBus={enabled:e,apiKey:t,url:r}}}({}),q=new class extends m{constructor(e,t,r){super(e,t,r),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:r}=this;this.pageId=t.pageId,this.modals=r.querySelectorAll("body > #modals >
1665 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,r=new Date().getTime()+864e5,i=`modal-controller-${e}`;try{t.localStorage.setItem(i,JSON.stringify(r))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,r=t.localStorage,i=r.getItem(`modal-controller-${e}`);if(!i)return!1;let s=JSON.parse(i);return!(new Date().getTime()>s)||(r.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:r}=this,i=this.getModalWithExpiry(e);(e&&!i||!0===t.forced)&&(r.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:r,pageSpecific:i}=e;(!i||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===r?this._exitModalHandler(e):"TIMER"===r?this._timerModalHandler(e):"FORCED"===r&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:r,exitModalTriggered:i}=this,{modalId:s}=e;function o(e){!i[s]&&(e.toElement||e.relatedTarget||(t.show(s),i[s]=!0))}r.addEventListener("mouseout",o),this.exitModalEventListeners.push(o)}_timerModalHandler(e){let{modalId:t,timerDelay:r}=e;setTimeout(()=>{this.show(t)},r)}_forcedModalHandler(e){let{modalId:t}=e,{window:r,document:i}=this;if("true"!==r.localStorage.getItem("isSignedUp")){let e=i.querySelector(`#modal-${t}`),s=e?.querySelector("form"),o=s?.dataset.delay||2e3;s.addEventListener("formsubmitted",()=>{this.setLoginState()}),r.addEventListener("oauthSuccess",()=>{this.setLoginState(),s.classList.add("success"),setTimeout(()=>{r.lpUI.hideModal(`modal-${t}`),s.reset(),s.classList.remove("success")},o)}),this.show(t,{forced:!0})}}}(B,window,document),V=new class extends m{constructor(e,t,r){super(e,t,r),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:r}=this,i=e.target.closest("button, a");if(!i)return;let s=i.dataset.type||"",o=i.href||i.dataset.href||"",n=i.target||"",{submit:a}=i.dataset;if(a){try{await this._handleSubmit(i)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(o,"_blank"===n)}if(this._trackConversion(i),"VIDEO"===s)return void this._handleVideoButton(i);if("CONTACT_US"===s)return void this._handleContactUsButton(i);if("SUBSCRIBE"===s)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===s)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===s){let t=i.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===s.substring(0,6)){let e=s.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(o?.startsWith("mailto:")){let e=o.substring(7);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(o?.startsWith("tel:")){let e=o.substring(4);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:r}=this;return t?await r.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,r,i]=t,s=`https://player.vimeo.com/video/${r}?`;return i&&(s+=`h=${i}&`),s+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,r=e.closest("section"),{src:i}=e.dataset,s="";if(i&&(i.includes("youtube.com")||i.includes("youtu.be"))&&!i.includes("youtube.com/embed")){let e=i.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
1665)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(s=e[1])}let o=this._getVimeoSrc(i);if(s?i=`https://youtube.com/embed/${s}?autoplay=1&controls=0`:o&&(i=o),!i||!r)return;let n=i.endsWith(".mp4")||i.endsWith(".webm")||i.includes("cloudinary.com"),a=`
1666      <div id="modal-${r.id}" class="modal visible">
1667        <div class="modal-content">
1668          <div class="lightbox-video">
1669            <div class="video-player">
1670              <div class="embed-container">
1671                ${n?`<video controls autoplay src="${i}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${i}"></iframe>`}
1672              </div>
1673            </div>
1674          </div>
1675        </div>
1676        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
1677      </div>
1678    `;t.body.insertAdjacentHTML("beforeend",a);let l=t.getElementById(`modal-${r.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:r}=this;r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:r}=this,{gtagConversionId:i,gtagConversionLabel:s,fbEventName:o}=e.dataset;if(i&&s){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===i)||r.sendGoogleTagManagerEvent("config",i));let e=`${i}/${s}`;r.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&o&&t.fbq("track",o,{})}}(B,window,document),j=new class extends m{constructor(e,t,r){super(e,t,r),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:r}=this,{selector:i}=e,s=[];if(s=i?r.querySelectorAll(`${i} form[data-type="contact-form"]`):r.querySelectorAll('form[data-type="contact-form"]'),r.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:r}=t.luxuryPresence.libs,{libphonenumber:i}=r;e(i.jsSrc,this.attachValidation.bind(this,s))}else this.attachValidation(s);this.validatedForms=this.validatedForms.concat(s)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let r=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;r(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(B,window,document),H=new class extends m{constructor(e,t,r){super(e,t,r),this.forms=[],this.homeValuationService=new v(e,t,r)}initialize(e={}){try{let{document:t}=this,{selector:r}=e,i=[];(i=r?t.querySelectorAll(`${r} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(i)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),r={},i=[],s=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let o=e.trim();s.test(t)&&o&&i.push(o);let n=r[t];r[t]=n?`${n} ${o}`:o}else r[t]=e}),i.length?r.name=i.join(" ").trim():!r.name&&r.firstName&&(r.name=r.firstName,r.lastName&&(r.name+=` ${r.lastName}`)),this._deriveNameParts(r)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,r){let{window:i,config:s}=this,o=Object.keys(e).filter(e=>!_.includes(e)).reduce((t,r)=>(t[r]=e[r],t),{}),{pageId:n,companyId:a,websiteId:l,pageMeta:d}=s,c=i.localStorage.getItem("utm_vars")||"{}",u=i.localStorage.getItem("referrer")||"",h=this._getFormId(r);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:i.location.href,content:{...o,...JSON.parse(c)}},page:{pageId:n,companyId:a,websiteId:l,pageMeta:{...d,formId:h}},companyId:a,referrer:u,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,r=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
1678=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},r)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let r=this._getFields(t),i=this._buildSubmissionData(e,r,t);y(this.window,this.document);let s=await this._waitForLeadSubmit(e=>this._submitLeadRequest(i,e));if(this._sendGAEvent(i),s?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,r={expired:!1,expiresAt:Date.now()+6e3},i=new Promise(e=>{t=setTimeout(()=>{r.expired=!0,e(null)},6e3)}),s=e(r).catch(e=>{if(f(r))return null;throw e});try{return await Promise.race([s,i])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(E),e.querySelector(`.${E}__indicator`))return;let t=this.document.createElement("div");t.className=`${E}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:r}=this.config;if(!t||!r)return void console.warn("[EventBus] Missing required data for user alias");let i=this.window.eventBusProvider.getDistinctId();if(!i)return void console.warn("[EventBus] No anonymous ID available for alias");let s=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(r,t);this.window.eventBusProvider.alias({anonId:i,canonicalId:s}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:r}=this;return(this._aliasUserWithEventBus(e),r.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${r.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,r={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":r.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":r.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":r.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":r.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:r={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(r)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(t=>{let{id:i,name:s,type:o}=t;if(s===w)return!0;let n="";if(i){let r=e.querySelector(`label[for='${i}']`);r?n=r.textContent.trim():t.placeholder&&(n=t.placeholder.trim())}r[s]={label:n,type:t.tagName,inputType:"INPUT"===t.tagName?o:"text"}}),r}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let r=e.querySelector(".submission-error-message");r||((r=this.document.createElement("div")).className="submission-error-message",r.setAttribute("role","alert"),e.appendChild(r)),r.textContent=t||"Something went wrong. Please try again.",r.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(B,window,document),G=new class extends m{constructor(e,t,r){super(e,t,r),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let r=1;r<=3;r+=1){let i=e&&!t;try{let e=await fetch(this._getMapKeyUrl(r,i));if(t=t||i,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let s=await e.text();if(!s)return"";return this.apiKey=s,this.apiKey}catch(e){console.error(e),r<3&&await this._delay(300*2**(r-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let r=[];e>1&&r.push(`attempt=${e}`),t&&r.push("recovered_after_failure=1");let i=r.length?`?${r.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${i}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(S)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(S,"1"):this.window.sessionStorage.removeItem(S)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
1678let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(r=>{r?t(r):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let r=Math.min(1024/e,1024/t);return{width:parseInt(e*r),height:parseInt(t*r)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let r=t.visibility?`visibility:${t.visibility}`:"",i=t.color?`color:${t.color.replace("#","0x")}`:"",s=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${r}${i}${s}`},""),r=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${r}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:r}=await t.json();return r}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,r,i,s,o){let{width:n,height:a}=this.resizeStaticMapDimensions(s,o),l={center:`${e},${t}`,zoom:r,scale:2,size:`${n}x${a}`,key:this.apiKey};i&&(l.style=this.convertThemeToStaticApiUrl(i));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:r,...i}){let{width:s,height:o}=this.resizeStaticMapDimensions(e,t),n={...i,size:`${s}x${o}`};r&&(n.style=this.convertThemeToStaticApiUrl(r));let a=new URLSearchParams;Object.entries(n).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>a.append(e,t.toString())):a.append(e,t.toString())});let l=a.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(B,window,document),K=new class extends m{destroy(){}updateQueryString(e,t,r){r||(r=this.window.location.href);let i=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),s="";null!=t&&(Array.isArray(t)?t.length&&(s=this.serializeArray(e,t)):"object"==typeof t?(i=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),s=this.serializeObj(t,"",e)):s=`${e}=${encodeURIComponent(t)}`);let o=r.split("#"),n=o[0];if(i.test(r)){let e=n;for(s=s?`$1${s}$2`:"$1";i.test(e);)n=e.replace(i,s),e=e.replace(i,"$1");n=n.replace(/(&|\?)$/,"")}else if(s){let e=-1!==n.indexOf("?")?"&":"?";n+=`${e}${s}`}return void 0!==o[1]&&null!==o[1]&&(n+=`#${o[1]}`),n}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let r=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat();if(!i.length){let r=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat(),this._parseParamToObject(i,"advancedFilters"===e)}return i.length>3?i.reduce((e,t,r)=>((r+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):i[2]?decode
1678URIComponent(i[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let r={},i=this.makePageKey(t),s=this.getParameterByName(i);return s&&(r.page=parseInt(s)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,i),s=this.getParameterByName(t);if("int"===e.type)isFinite(s=parseInt(s))||(s=null);else if("bool"===e.type||"boolean"===e.type)s="true"===s||"false"!==s&&null;else if("json"===e.type)try{s=JSON.parse(s)}catch(e){}r[e.formKey||e.param]=s}),r}serializeParams(e,t,r){let i=this.window.location.href,s=this.makePageKey(t);return i=this.updateQueryString(s,r.page,i),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),o=r[e.formKey||e.param];"json"===e.type&&null!=o&&(o=JSON.stringify(o)),i=this.updateQueryString(t,o,i)}),i}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",r=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${r}K`:`${this.formatSliderAtom(e/1e6,t)}${r}M`}formatSliderPriceRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e,r," ")}`:t.max===e?`${this.formatSliderValue(e,r," ")}${i.highSuffix}`:`${this.formatSliderValue(e,r," ")}`}formatSliderAreaRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e)} ${r}`:t.max===e?`${this.formatSliderValue(e)}${i.highSuffix} ${r}`:`${this.formatSliderValue(e)} ${r}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:r,areaSliderElement:i,neighborhoodSelect:s}=e,o={};if(t&&(o.search=t.value||null),r){let e=r.value.split(";"),t=parseInt(r.dataset.min),i=parseInt(r.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.priceMin=s!==t?s:null,o.priceMax=n!==i?n:null}if(i){let e=i.value.split(";"),t=parseInt(i.dataset.min),r=parseInt(i.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.areaMin=s!==t?s:null,o.areaMax=n!==r?n:null}return s&&(o.neighborhoodId=s.value||null),o}serializeObj(e,t="",r=""){let i=[];for(let s in e)if(e.hasOwnProperty(s)){let o,n=e[s];if(r){let e=t?`[${t}][${s}]`:`[${s}]`;o=`${r}${e}`}else o=t?`${t}[${s}]`:s;null!==n&&Array.isArray(n)?n.length&&i.push(this.serializeArray(o,n)):null!==n&&"object"==typeof n?i.push(this.serializeObj(n,o)):i.push(`${o}=${encodeURIComponent(n)}`)}return i.join("&")}serializeArray(e,t,r=""){let i=[];return t.forEach(t=>{let s=r?`${r}${e}`:e;i.push(`${s}=${encodeURIComponent(t)}`)}),i.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let r={};for(let i=0;i<e.length;i++)if((i+1)%3==0){let s=decodeURIComponent(e[i].replace(/\+/g," ")),o=e[i-1];Object.assign(r,this._setObjectPath(o,s,r,t))}return r}_setObjectPath(e,t,r,i=!1){let s=e.split(/[\[\]]/).filter(Boolean),o=["in","nin","btw","ciin","cinin"],n={},a=n,l=((e,t,r)=>{if(!t)return;let i=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===i?r:i})(r,s.join("."));return s.forEach((e,n)=>{n===s.length-1?l?a[e]=Array.isArray(l)?[...l,t]:[l,t]:a[e]=i&&o.includes(e)?[t]:t:(a[e]=r[e]?r[e]:{},a=a[e])}),n}}(B,window,document),Y=new class extends m{constructor(e,t,r){super(e,t,r),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,r=e.closest("section[id]"),i=e.dataset.append,s=r.querySelector(".lp-expand-btn");if(!s)if((s=t.createElement("button")).className="lp-expand-btn",s.setAttribute("aria-label","Open a lightbox"),s.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',i){let e=r.querySelector(i);e&&e.appendChild(s)}else{let r=t.createElement("div");r.className="lp-expand-btn-wrapper",r.style.position="relative",r.appendChild(s),e.parentNode.insertBefore(r,e.nextSibling)}s.addEventListener("click",()=>{this._createLightbox({slider:e,section:r})})}_createLightbox({slider:e,section:t,initialIndex:r}){let{window:i,document:s}=this,o=`lightbox-for-${t?.id}`,n=i.$&&i.$.fn.slick,a=n&&e.slick,l="function"==typeof i.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=s.createElement("div");t.id=o,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=`
1679      <button class="lp-lightbox__close" aria-label="close modal"></button>
1680      <div class="lp-lightbox__content">
1681        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
1682          <div class="splide__arrows">
1683            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
1684            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
1685          </div>
1686          <div class="splide__track">
1687            <ul class="splide__list"></ul>
1688          </div>
1689        </div>
1690      </div>
1691    `,"function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",s.body.appendChild(t);let n=t.querySelector(".lp-lightbox__carousel"),a=n.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
1691h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("li");r.className="lp-lightbox__slide splide__slide",r.appendChild(t),a.appendChild(r)});let l=new i.Splide(n,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==r&&r>=0&&l.go(r),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let r=t.querySelector(".splide__arrow--prev"),i=t.querySelector(".splide__arrow--next"),s=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&r?(e.preventDefault(),r.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())};s.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",t.remove()})}if("function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",n&&!d){let t,r,n,l,d;r={arrows:!0,dots:!1,infinite:!0,draggable:!0,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>'},(n=s.createElement("div")).id=o,n.className="lp-lightbox",n.setAttribute("tabindex","-1"),n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true"),n.innerHTML=`
1692        <button class="lp-lightbox__close" aria-label="close modal"></button>
1693        <div class="lp-lightbox__content">
1694          <div class="lp-lightbox__carousel"></div>
1695        </div>
1696      `,s.body.appendChild(n),l=n.querySelector(".lp-lightbox__carousel"),n.classList.add("show"),a?(t=e.slick.$slides.find("img"),r.initialSlide=e.slick?.currentSlide||0,t.each(function(){i.$(".lp-lightbox__carousel").append(i.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("div");r.className="lp-lightbox__slide",r.appendChild(t),l.appendChild(r)}),i.$(l).slick(r),setTimeout(()=>{n.focus()},100),d=e=>{if(!n.classList.contains("show"))return;let t=n.querySelector(".lp-lightbox-arrow--prev"),r=n.querySelector(".lp-lightbox-arrow--next"),i=n.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&r?(e.preventDefault(),r.click()):"Escape"===e.key&&i&&(e.preventDefault(),i.click())},s.addEventListener("keydown",d),n.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",d),n.classList.remove("show");let t=l?.slick?i.$(l).slick("slickCurrentSlide"):0;l?.slick&&i.$(l).slick("unslick"),a&&i.$(e).slick("slickGoTo",t),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",n.remove()})}else l?c():(i.luxuryPresence.libs.loadCss(i.luxuryPresence.libs.jsLibsMap.splide.cssSrc),i.luxuryPresence.libs.loadJs(i.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),i.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(B,window,document),z=new class extends m{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a}=this.config;this.window.divolte.signal(e,Object.assign({companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(B,window,document),W=new class extends m{constructor(e,t,r){super(e,t,r)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
1696)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:r}=this.config;try{this.window.eventBusProvider.capture(e,{company:r,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(B,window,document),Q=new class extends m{constructor(e,t,r){super(e,t,r),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(C,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:r}=this.config,{data:i,origin:s}=e,{type:o,height:n,event:a,source:l,token:d}=i;if(o===t||"hide_intermediate_iframe"===o){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=n,e.style.display=o===t?"unset":"none")}s===r&&"GOOGLE_SIGN_ON"===l&&("success"===a?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===a&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let r=this.document.createElement("iframe");r.src=this._buildUrlAndCopyAttributes(t,r,e),r.dataset.isSocialOauthButton=!0,t.replaceWith(r)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(C);this.window.dispatchEvent(e),y(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,r){let{buyerSellerServiceUrl:i,companyId:s,websiteId:o,pageId:n,pageMeta:a}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${i}/buttons/${r}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",s),c.searchParams.append("websiteId",o),c.searchParams.append("pageId",n),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(a)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["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"];
1696return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=4-t.length%4,i=4===r?t:t+"=".repeat(r);return JSON.parse(atob(i))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(B,window,document),J=new class extends m{constructor(e,t,r){super(e,t,r),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:r})=>{e&&e.removeEventListener&&e.removeEventListener(t,r)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector('input[name="email"]');r&&"string"==typeof e&&(r.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector(`#${this.modalId}-triggerSource`);r&&"string"==typeof e&&(r.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,r){let i="";if(r){let e=new Date;e.setTime(e.getTime()+864e5*r),i=`; expires=${e.toUTCString()}`}let s="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(s+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${i}${s}`}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(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let r=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",r),this.eventListeners.push({element:t,event:"formsubmitted",handler:r})}let r=e.querySelector('[data-dismiss="modal"]');if(r){let t=()=>{e.style.display="none",this.restoreBodyScroll()};r.addEventListener("click",t),this.eventListeners.push({element:r,event:"click",handler:t})}let i=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",i),this.eventListeners.push({element:e,event:"click",handler:i})}}(B,window,document),X=new class extends m{constructor(e,t,r){super(e,t,r),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let r=`
1697      query {
1698        validSession {
1699          success
1700        }
1701      }
1702    `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:r})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let i=t.data?.validSession?.success===!0;return this.lastValidationResult=i,this.lastValidationTime=Date.now(),i}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(B,window,document),Z=new class extends m{constructor(e,t,r){super(e,t,r),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=I[e.provider];if(!t)return;this.eventName=t.eventName;let r=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||r)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(B,window,document),ee=new class extends m{destroy(){}transformVariables(e,t){let r;return x(r={...t},["testimonialId"]),R(r,["testimonialId"],"testimonialIds"),0===r.limit&&delete r.limit,(void 0===r.limit||null===r.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(r.limit=50),("agents"===e||"agentsCount"===e||"developments"===e||"developmentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(r.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(r),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":x(e,["testimonialIds"]);break;case"agents":case"agentsCount":x(e,["officeId","teamId","developmentId","agentIds","tags"]),R(e,["officeId"],"officeIds"),R(e,["teamId"],"teamIds"),R(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":x(e,["neighborhoodIds","neighborhoodId"]),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":x(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds"),R(e,["developmentIds","developmentId"],"developmentIds");break;case"properties":case"propertiesCount":x(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
1702spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>R(e,[t],t)),R(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),R(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),R(e,["networkId"],"networkId"),R(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":x(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":x(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":x(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),R(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":x(e,["officeId","officeIds","tags"]),R(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":x(e,["teamId","teamIds"]),R(e,["teamId"],"teamIds");break;case"pois":x(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(r,e),r}transformResponse(e,t){return"agent"===e?P(t,T):"agents"===e||"agentsCount"===e?O(t,L):"neighborhood"===e?P(t,k):"neighborhoods"===e||"neighborhoodsCount"===e?O(t,M):"development"===e?P(t,$):"developments"===e||"developmentsCount"===e?O(t,U):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,r){if(!Array.isArray(t)||!t.length||!r||!r.length)return Promise.resolve(t);let i=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),s=e=>{let i={};return(e||[]).forEach(e=>{i[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&i[`${e.vendorId}:${e.mlsId}`],s={};return r.forEach(e=>{let r=t?t[D[e]]:void 0;s[e]=r??null}),{...e,...s}})};if(!i.length)return Promise.resolve(s([]));let{websiteId:o}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(N),variables:{input:{websiteId:"string"==typeof o?o:void 0,properties:i}}}).then(e=>s(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),s([]))):Promise.resolve(s([]))}}(B,window,document),et=new class extends m{constructor(e,t,r){super(e,t,r),this.natives=new WeakMap,this.rates=new Map,this.pending=new Map,this.target=void 0,this.generation=0,this.initialized=!1,this.observer=null,this.abortController=null}get currentCurrency(){return this.target}get cookieOptions(){return{document:this.document,location:this.window.location}}get enabledCurrencies(){return(this.config.enabledCurrencies??[]).map(F.toSupportedToCurrency).filter(Boolean)}initialize(){return this.initialized||!this.config.currencyConversionEnabled?Promise.resolve():(this.initialized=!0,this.generation=0,this.abortController=new this.window.AbortController,this.target=(0,F.readValidCurrencyCookie)(this.cookieOptions,{enabled:!0,enabledCurrencies:this.enabledCurrencies}),this.observer=new this.window.MutationObserver(()=>this.ensureRates(this.apply())),this.observer.observe(this.document.body,{childList:!0,subtree:!0}),this.ensureRates(this.apply()))}setCurrency(e){if(!this.config.currencyConversionEnabled)return!1;let t=(0,F.toSupportedToCurrency)(e);return!!t&&!!this.enabledCurrencies.includes(t)&&(this.target=t,this.generation+=1,(0,F.writeCurrencyCookie)(this.cookieOptions,t)||console.warn("[CurrencyConversionController] could not persist currency preference:",t),this.apply(),!0)}reset(){this.config.currencyConversionEnabled&&(this.target=void 0,this.generation+=1,(0,F.clearCurrencyCookie)(this.cookieOptions),this.apply())}destroy(){this.observer?.disconnect(),this.observer=null,this.abortController?.abort(),this.abortController=null,this.pending.clear(),this.rates.clear(),this.generation=null,this.initialized=!1}apply(){let e=new Set;return this.document.querySelectorAll("[data-lp-price]").forEach(t=>{let r=this.natives.get(t);if(!r){if(!(r=(e=>{let t=e.getAttribute("data-lp-native-amount"),r=null===t||""===t.trim()?NaN:Number(t),i=(0,F.toSupportedFromCurrency)(e.getAttribute("data-lp-native-currency"));if(!Number.isFinite(r)||r<0||!i)return;let s=Number(e.getAttribute("data-lp-precision"));return{amount:r,currency:i,precision:Number.isInteger(s)&&s>=0?s:0,originalHTML:e.innerHTML}})(t)))return;this.natives.set(t,r)}this.rates.has(r.currency)||e.add(r.currency),this.render(t,r)}),[...e]}render(e,t){let r=this.convertedText(t);if(void 0===r){e.innerHTML!==t.originalHTML&&(e.innerHTML=t.originalHTML);return}e.textContent!==r&&(e.textContent=r)}convertedText(e){if(!this.target||this.target===e.currency)return;let t=this.rates.get(e.currency)?.[this.target];
1702if("number"!=typeof t||!Number.isFinite(t))return;let r=(0,F.convertAmount)(e.amount,t);if(void 0!==r)return(0,F.formatMoney)(r,this.target,{precision:e.precision})}ensureRates(e){return e.length?Promise.all(e.map(e=>this.requestRates(e))).then(()=>{null!==this.generation&&this.apply()}):Promise.resolve()}requestRates(e){let t=this.pending.get(e);if(t)return t;let r=this.abortController?.signal,i=(0,F.fetchExchangeRates)(e,{baseUrl:this.config.valuationApiBase,signal:r,onError:t=>console.warn(`[CurrencyConversionController] exchange rate fetch failed for ${e}:`,t)}).then(t=>{r?.aborted||this.rates.set(e,t??{})});return this.pending.set(e,i),i}}(B,window,document);function er(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}er("config",B),er("modals",q),er("buttons",V),er("validation",j),er("contactForms",H),er("mapApiLoader",G),er("pagination",K),er("expandSliders",Y),er("divolte",z),er("eventBus",W),er("oauth",Q),er("qualifyingQuestionsModal",J),er("session",X),er("consent",Z),er("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),er("routerApi",ee),er("currencyConversion",et),window.luxuryPresence.formatSliderPriceRange=K.formatSliderPriceRange.bind(K),window.luxuryPresence.formatSliderAreaRange=K.formatSliderAreaRange.bind(K),window.luxuryPresence.getSearchFormValues=K.getSearchFormValues.bind(K),window.luxuryPresence.handlebarsHelpersFactory=function(t){return e(n)(t,{isEqual:(e,t)=>e==t})}})();
1703//# sourceMappingURL=lp-sdk.js.map
1704
1705    </script>
1705
1706
1707    
1707<script>
1708        var lpGlobalInitialized = false;
1709
1710        function lpGlobalInit () {
1711          if (lpGlobalInitialized) {
1712            return;
1713          }
1714            lpGlobalInitialized = true;
1715            // Initialize wow animation plugin only according to turbolinks
1716            var wow;
1717            if (window.WOW) {
1718                wow = new WOW({
1719                    animateClass: 'animated',
1720                    offset: wowOffset,
1721                    live: false,
1722                    callback: function(box) {}
1723                });
1724            }
1725            // Initialize handlebar helpers only once
1726            function handlebarsInit() {
1727              if (!window.Handlebars) {
1728                return;
1729              }
1730              HandlebarsIntl.registerWith(Handlebars);
1731              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
1732            }
1733
1734            handlebarsInit();
1735
1736              var modalContentUrl = "/modals.html";
1737                const modalsContainer = document.getElementById('modals');
1738                if (modalsContainer) {
1739                  fetch(modalContentUrl).then(function(res) {
1740                    if (!res.ok) {
1741                      throw new Error(`HTTP error! Status: ${res.status}`);
1742                    }
1743                    return res.text();
1744                  }).then(function(resultText) {
1745                    modalsContainer.innerHTML = resultText;
1746
1747                    // now we need to execute all script elements
1748                    Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) {
1749                      const script  = document.createElement("script");
1750                      script.text = s.innerHTML;
1751                      Array.from(s.attributes).forEach(function (a) {
1752                        script.setAttribute(a.name, a.value);
1753                      })
1754                      s.parentNode.replaceChild(script, s);
1755                    });
1756
1757                    try {
1758                      window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes);
1759                      window.luxuryPresence.contactForms.initialize({ selector: '#modals' });
1760                      window.luxuryPresence.validation.initialize({ selector: '#modals' });
1761                      window.luxuryPresence.oauth.initialize({
1762                        googleSignOnEnabled: true,
1763                        iframe: false });
1764                    } catch (e) {
1765                      console.log(e);
1766                    }
1767                    document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => {
1768                      closeModalBtn.addEventListener('click', function() {
1769                        window.lpUI.hideClosestModal(closeModalBtn);
1770                      });
1771                    });
1772                  }).catch((e) => console.log(e));
1773                }
1774            /* Initialize Luxury Presence SDK */
1775            try {
1776                window.luxuryPresence.config.setCompany("a0bff4f0-0ca7-460c-b77b-fa4993017cd5", {});
1777                window.luxuryPresence.config.setWebsite("d50fd8f9-cf7c-495b-ac13-fb4b878057e3", {
1778                    myhomeDashboardEnabled: true,
1779                    mlsEnabled: true,
1780                    hstValuationRedirectEnabled: true,
1781                    hvStepTwoCaptureEnabled: false
1782                });
1783                const url = new URL(window.location.href);
1784                const shareId = url.searchParams.get('shareId');
1785                window.luxuryPresence.config.setPage("a56b4e63-b6ca-476d-9d10-4e28ffffffae", {
1786                    sourceResource: "",
1787                    pageElementId: "",
1788                    pageQueryVariables: {},
1789                    shareId: "",
1790                });
1791                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
1792                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
1793                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
1794                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
1795                  window.luxuryPresence.config.setEventBus({
1796                    enabled: true,
1797                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
1798                    url: "https://p.luxurypresence.com",
1799                  });
1800                window.luxuryPresence.config.setTemplateId("f4b4a7c2-4c13-464a-823b-c1a553972fe7", {});
1801                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
1802                window.luxuryPresence.buttons.initialize({});
1803                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
1804                window.luxuryPresence.contactForms.initialize({});
1805                window.luxuryPresence.validation.initialize({});
1806                window.luxuryPresence.expandSliders.initialize({});
1807                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
1808                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
1809                /* Optional: cached pages / older SDKs may not carry this controller */
1810                window.luxuryPresence.currencyConversion?.initialize();
1811            } catch (e) {
1812                console.log(e);
1813            }
1814
1815            /* Inject Section Specific Javascript */
1816                try {
1817(function init(sectionDomId) {
1818  $('.contact_popup .close').click(function (e) {
1819    e.preventDefault();
1820    hide();
1821  });
1822  $(".contact-form__form").on("submit", function () {
1823    setTimeout(hide, 1300);
1824  });
1825  function setHttp(link) {
1826    if (link.search(/^http[s]?\:\/\//) == -1) {
1827      link = 'http://' + link;
1828    }
1829    return link;
1830  }
1831  $('#' + sectionDomId).on('lpui-show', function () {
1832    $('body').css("overflow", "hidden");
1833    $('body').on("click", hideOnOutsideClick);
1834  });
1835  function hideOnOutsideClick(evt) {
1836    if ($(evt.target).closest('#' + sectionDomId).length < 1) {
1837      hide();
1838    }
1839  }
1840  function hide() {
1841    $('body').removeClass('locked');
1842    $('body').off("click", hideOnOutsideClick);
1843    $('body').css("overflow", "unset");
1844  }
1845  $('#' + sectionDomId + " .contact-form__form").on("reset", function () {
1846    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
1847    if (redirectLink.length) {
1848      const rawHref = redirectLink.attr('href');
1849      redirectLink.attr('href', setHttp(rawHref));
1850      redirectLink[0].click();
1851    }
1852  });
1853})('modal-global-contact-us');
1854} catch(e) {
1855console.log(e);
1856}
1857                
1858                try {
1859(function init(sectionDomId) {
1860  $('.hamburger-component').click(function () {
1861    $(this).toggleClass('active');
1862    $('#overlay').fadeToggle();
1863    $('body').toggleClass('locked');
1864  });
1865  $(window).click(function () {
1866    $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown');
1867  });
1868  if ($('.development-intro-element').length || $('.custom-intro').length || $('.property-intro').length || $('.agent-intro').length || $('.neighborhood-intro').length || $('.blog-intro').length || $('.without_text').length || $('.agent-bio').length) {
1869    $('.header').addClass('white-opening');
1870  }
1871  $('*[data-type="CONTACT_US"]').click(function () {
1872    $('#overlay').fadeIn();
1873    $('body').children('div.sidemenu').removeClass('visible');
1874    $('body').addClass('locked');
1875    $('.hamburger').removeClass('active');
1876  });
1877  $('body .contact_popup .close').click(function () {
1878    $('body').removeClass('locked');
1879  });
1880  $(".contact-form__form").on("submit", function () {
1881    setTimeout(function () {
1882      $('body').removeClass('locked');
1883    }, 1300);
1884  });
1885})('global-navbar');
1886} catch(e) {
1887console.log(e);
1888}
1889                try {
1890(function init(sectionDomId, options) {
1891  var elementSelector = options.elementSelector || 'nav';
1892  var element = document.querySelector(elementSelector);
1893  var sections = document.querySelectorAll('body > section');
1894  var subNavContainers = element.querySelectorAll('.sub-nav');
1895  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
1896  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
1897  var fontColor = options.fontColor || '#fff';
1898  var fontColorScroll = options.fontColorScroll || '#000';
1899  var didScroll = false;
1900  var lastScrollTop = 0;
1901  var delta = 5;
1902
1903  // eslint-disable-next-line sonarjs/no-collapsible-if
1904  if (wow) {
1905    // Wowjs might not trigger for position fixed elements
1906    if (window.scrollY > 0) {
1907      element.querySelectorAll('.wow').forEach(el => wow.show(el));
1908    }
1909  }
1910  function adjustNavPinState() {
1911    // Remove 'visible' class from all subNavContainers
1912    for (let i = 0; i < subNavContainers.length; i++) {
1913      subNavContainers[i].classList.remove('visible');
1914    }
1915    if (window.scrollY > 0) {
1916      element.style.backgroundColor = backgroundColorScroll;
1917      element.style.color = fontColorScroll;
1918      element.classList.add('scroll');
1919    } else {
1920      element.style.backgroundColor = initialBackgroundColor;
1921      element.style.color = fontColor;
1922      element.classList.remove('scroll');
1923    }
1924  }
1925  adjustNavPinState();
1926  function onScroll() {
1927    didScroll = true;
1928  }
1929  window.addEventListener('scroll', onScroll);
1930
1931  // eslint-disable-next-line
1932  var debounceInterval = setInterval(() => {
1933    if (didScroll) {
1934      // eslint-disable-next-line
1935      hasScrolled();
1936      didScroll = false;
1937    }
1938  }, 250);
1939  function hasScrolled() {
1940    adjustNavPinState();
1941    // eslint-disable-next-line
1942    var navbarHeight = element.offsetHeight;
1943    // eslint-disable-next-line
1944    var st = window.scrollY;
1945
1946    // Make sure they scroll more than delta
1947    if (Math.abs(lastScrollTop - st) <= delta) {
1948      return;
1949    }
1950    if (st > lastScrollTop && st > navbarHeight) {
1951      // Scroll Down
1952      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
1953      document.documentElement.style.setProperty('--global-header-height', '0px');
1954
1955      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
1956      sections.forEach(section => {
1957        if (section.classList.contains('sticky')) {
1958          section.style.top = '0px';
1959        }
1960      });
1961    } else {
1962      // Scroll Up
1963      // eslint-disable-next-line
1964      if (st + window.innerHeight < document.documentElement.scrollHeight) {
1965        element.style.transform = `translateY(0) scaleY(1)`;
1966        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
1967        sections.forEach(section => {
1968          if (section.classList.contains('sticky')) {
1969            section.style.top = `${navbarHeight}px`;
1970          }
1971        });
1972      }
1973    }
1974    lastScrollTop = st;
1975  }
1976})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\".header\",\"fontColorScroll\":\"#000\",\"backgroundColorScroll\":\"rgba(255, 255, 255, 0.95)\"}"));
1977} catch(e) {
1978console.log(e);
1979}
1980                try {
1981(function init(sectionDomId) {
1982  $('.js-sidemenu-close').click(function (e) {
1983    e.preventDefault();
1984    $('body').removeClass('locked');
1985    $('.hamburger').removeClass('active');
1986    $('.sub-nav-container').removeClass('visible-subnav');
1987  });
1988  $('body > div.sidemenu .sub-nav-container > a').click(function (e) {
1989    $(this).closest('.sub-nav-container').siblings('.sub-nav-container').removeClass('visible-subnav');
1990    $(this).closest('.sub-nav-container').toggleClass('visible-subnav');
1991  });
1992  $(window).click(function () {
1993    $('.sidemenu').find('.sub-nav-container').removeClass('visible-subnav');
1994  });
1995  const contactUs = $('.sidemenu ul').find('[data-type="CONTACT_US"]');
1996  contactUs.click(function (e) {
1997    e.preventDefault();
1998    $('.hamburger').removeClass('active');
1999    $('.sub-nav-container').removeClass('visible-subnav');
2000    $('.sidemenu').removeClass('visible');
2001  });
2002  $(window).click(function (e) {
2003    let targetContactForm = $(e.target).closest('#modal-global-contact-us').length;
2004    let targetSideMenu = $(e.target).closest('.sidemenu').length;
2005    let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length;
2006    let targetHamburger = $(e.target).closest('.hamburger-component').length;
2007    if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) {
2008      $('body').removeClass('locked');
2009      $('.hamburger').removeClass('active');
2010      $('.sidemenu').removeClass('visible');
2011      $('#modal-global-contact-us').removeClass('visible');
2012      $('.sub-nav-container').removeClass('visible-subnav');
2013    }
2014  });
2015})('global-sidemenu');
2016} catch(e) {
2017console.log(e);
2018}
2019                
2020                try {
2021(function init(sectionDomId) {
2022  function isImageUrl(url) {
2023    return fetch(url, {
2024      method: 'HEAD'
2025    }).then(function (res) {
2026      return /^image\//i.test(res.headers.get('content-type') || '');
2027    }).catch(function () {
2028      return false;
2029    });
2030  }
2031  $("#" + sectionDomId + " form").on("reset", function () {
2032    var redirectLink = $('#' + sectionDomId + ' .redirect-link');
2033    if (!redirectLink.length) {
2034      return;
2035    }
2036    isImageUrl(redirectLink[0].href).then(function (isImage) {
2037      if (!isImage) {
2038        redirectLink[0].click();
2039      }
2040    });
2041  });
2042})('global-footer');
2043} catch(e) {
2044console.log(e);
2045}
2046                
2047                try {
2048(function init(sectionDomId) {
2049  var _section = $('#' + sectionDomId);
2050  var _footer = document.getElementById('global-footer');
2051  const redirectLink = _section.find('.js-redirect-link');
2052  function setHttp(link) {
2053    if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) {
2054      link = 'https://' + link;
2055    }
2056    return link;
2057  }
2058  function redirectPage(link) {
2059    if (link.length) {
2060      window.location.href = setHttp(link.attr('href'));
2061    }
2062  }
2063  const emailInput = _section.find('.js-email-input');
2064  const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/;
2065  emailInput.on('input', function () {
2066    if (emailRegex.test(this.value)) {
2067      this.setCustomValidity('');
2068    } else {
2069      this.setCustomValidity('Please enter a valid email address.');
2070    }
2071    this.reportValidity();
2072  });
2073  _section.find('input[name="name"]').on("keyup", function () {
2074    if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") {
2075      this.setCustomValidity("Please input your first name and last name.");
2076    } else {
2077      this.setCustomValidity("");
2078    }
2079  });
2080  _section.find('form').on("reset", function () {
2081    $(this).addClass("show-success");
2082    redirectPage(redirectLink);
2083  });
2084  $(window).scroll(function () {
2085    if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible');
2086  });
2087  _section.find('.close-btn, .connect-btn').click(function () {
2088    _section.find('.pop-up').toggle();
2089    _section.find('.btn-holder').toggle();
2090  });
2091  if (!_footer) return;
2092  const observer = new IntersectionObserver(entries => {
2093    entries.forEach(entry => {
2094      if (entry.isIntersecting) _section.hide();else _section.show();
2095    });
2096  }, {
2097    threshold: 0.1
2098  });
2099  observer.observe(_footer);
2100  function selectToDropdown(selectItem) {
2101    let customDropdown = `
2102        <div class="custom-select" role="presentation">
2103        <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button>
2104        <div class="custom-select-menu" style="display: none;max-height: none;">
2105        <div class="custom-select-content">
2106        </div>
2107        </div>
2108        </div>`;
2109    $(customDropdown).insertAfter(selectItem);
2110    let $dropdown = $($(selectItem).next());
2111    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
2112    let $dropdownMenu = $dropdown.find(".custom-select-menu");
2113    let $dropdownContent = $dropdown.find(".custom-select-content");
2114    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
2115    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
2116    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
2117    appendOptionButtons(selectItem, $dropdownContent);
2118    $(selectItem).removeClass().addClass("sr-only");
2119    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
2120    $dropdownToggle.html(toggleText);
2121    $dropdown.on("click", ".custom-select-item", function (e) {
2122      if ($(this).hasClass("is-disabled")) return;
2123      let elementNumber = $(this).index();
2124      let $originalSelect = $(this).closest(".custom-select").siblings("select");
2125      let $linkedOption = $originalSelect.find("option").eq(elementNumber);
2126      if (!$linkedOption.prop("selected")) {
2127        $linkedOption.prop("selected", true);
2128        $originalSelect.change();
2129        $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
2130        $dropdownToggle.html($(this).html());
2131        closeSelectMenu($(this).closest(".custom-select-menu"));
2132      }
2133      $dropdownToggle.removeClass("is-placeholder");
2134    });
2135    function convertOptionToButton(option) {
2136      var optionText = $(option).text();
2137      var optionValue = $(option).attr("value") || $(option).text();
2138      var optionIsDisabled = $(option).prop("disabled");
2139      var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
2140      return outputButton;
2141    }
2142    function appendOptionButtons(selectItem, appendTarget) {
2143      $(selectItem).find("option").each(function () {
2144        let currentButton = convertOptionToButton(this);
2145        $(appendTarget).append(currentButton);
2146      });
2147    }
2148    function showSelectMenu(selectMenu) {
2149      var customSelect = $(selectMenu).closest(".custom-select")[0];
2150      $(customSelect).addClass("open");
2151      $(selectMenu).slideDown();
2152    }
2153    function closeSelectMenu(selectMenu) {
2154      var customSelect = $(selectMenu).closest(".custom-select")[0];
2155      $(customSelect).removeClass("open");
2156      $(selectMenu).slideUp();
2157    }
2158    $dropdown.on("click", ".custom-select-toggle", function (e) {
2159      var $customSelect = $(this).closest(".custom-select");
2160      var selectMenu = $customSelect.find(".custom-select-menu")[0];
2161      if ($customSelect.hasClass("open")) {
2162        closeSelectMenu(selectMenu);
2163      } else {
2164        showSelectMenu(selectMenu);
2165      }
2166    });
2167    $(document).on("click", function (e) {
2168      if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) {
2169        $(".custom-select.open").each(function () {
2170          var selectMenu = $(this).find(".custom-select-menu")[0];
2171          closeSelectMenu(selectMenu);
2172        });
2173      }
2174    });
2175  }
2176  $(".pop-up select[name='interest']").each(function () {
2177    selectToDropdown(this);
2178  });
2179})('global-mobile-contact');
2180} catch(e) {
2181console.log(e);
2182}
2183                
2184                try {
2185(function init(a){var b=document.querySelector("#"+a+" .custom-intro"),c=document.querySelector(".not-animated");!c&&$("#"+a).hasClass("is-background-color-light")&&$("#global-navbar").addClass("intro-with-light-border");b.offsetTop-1;window.addEventListener("scroll",function(){c||(1<document.body.scrollTop||1<document.documentElement.scrollTop?b.classList.add("custom-intro-animate"):b.classList.remove("custom-intro-animate"))})})('section-07a9765c-42ce-4fec-af93-d918d005c528', 'undefined');
2186} catch(e) {
2187console.log(e);
2188}
2189                try {
2190(function init(sectionDomId, options) {
2191  let section = null;
2192  switch (sectionDomId) {
2193    case 'NAVBAR':
2194      section = document.querySelector('body > nav, #global-navbar');
2195      break;
2196    case 'FOOTER':
2197      section = document.querySelector('body > footer, #global-footer');
2198      break;
2199    case 'SIDEMENU':
2200      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2201      break;
2202    case 'CONTACT':
2203      section = document.querySelector('#modal-global-contact-us');
2204      break;
2205    case 'MOBILE_CONTACT':
2206      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2207      break;
2208    case 'SUBSCRIBE':
2209      // Subscribe Not Implemented
2210      section = null;
2211      break;
2212    case 'ACCOUNT':
2213      // Account Not Implemented
2214      section = null;
2215      break;
2216    default:
2217      section = document.querySelector('#' + sectionDomId);
2218  }
2219  if (!section) {
2220    return;
2221  }
2222
2223  // Where content / items are rendered
2224  const dataContainer = section.querySelector('.data-container');
2225  if (!dataContainer) {
2226    // no place to render items = no need to query server or do anything else
2227    return;
2228  }
2229  let variables = options.variables || {};
2230
2231  // Some variables in options may not have been injected - remove
2232  Object.keys(variables).forEach(function (variableName) {
2233    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2234      delete variables[variableName];
2235    }
2236  });
2237
2238  // Merge page query variables
2239  if (options.usePageResource) {
2240    variables = {
2241      ...variables,
2242      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2243    };
2244  }
2245
2246  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2247  // resolve the flag — fetchData reads the section stamp, aux fetches read
2248  // their own resource's stamp (auxUsesRouter).
2249  function apiUrl(useRouter) {
2250    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2251  }
2252
2253  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2254  // (options.routerApiAux is stamped per aux resource server-side).
2255  function auxUsesRouter(resource) {
2256    return !!(options.routerApiAux && options.routerApiAux[resource]);
2257  }
2258
2259  // Pagination Executes on a Numbered Pagination Container
2260  //  Or via a load more button
2261  let mode = 'BUTTONLESS_PAGINATION';
2262  const container = section.querySelector('.pagination-container');
2263  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2264  if (container) {
2265    mode = 'NUMBERED_PAGINATION';
2266  }
2267  if (loadMoreButton) {
2268    mode = 'LOAD_MORE_BUTTON';
2269  }
2270  let searchContainer = section.querySelector('.search-container');
2271  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2272  const eventPrefix = '__pagination-';
2273  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2274    param: 'neighborhoodId',
2275    urlKey: 'neighborhood'
2276  }, {
2277    param: 'search',
2278    urlKey: 'search'
2279  }, {
2280    param: 'salesPriceGTE',
2281    urlKey: 'pricemin',
2282    formKey: 'priceMin',
2283    type: 'int'
2284  }, {
2285    param: 'salesPriceLTE',
2286    urlKey: 'pricemax',
2287    formKey: 'priceMax',
2288    type: 'int'
2289  }, {
2290    param: 'livingSpaceSizeGTE',
2291    urlKey: 'areamin',
2292    formKey: 'areaMin',
2293    type: 'int'
2294  }, {
2295    param: 'livingSpaceSizeLTE',
2296    urlKey: 'areamax',
2297    formKey: 'areaMax',
2298    type: 'int'
2299  }] : []);
2300
2301  // Total entries - initialized in first render
2302  let totalNumber = 0;
2303  const DefaultSearchParams = {
2304    page: 1
2305  };
2306  searchFormParams.forEach(function (formParam) {
2307    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2308  });
2309  let searchParams = {
2310    ...DefaultSearchParams
2311  };
2312  const offset = options.variables?.offset || 0;
2313  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2314  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2315
2316  // entries of per page
2317  // when query variables for a given section would't be filled options.pageSize can store
2318  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2319  let pageSize = parseInt(options.pageSize, 10) || 9;
2320
2321  // Adding mobile pageRange support
2322  var NARROW_BREAKPOINT = 600;
2323  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2324  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2325
2326  // Page range (pages on both sides of the current page)
2327  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2328  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2329  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2330
2331  // Whether to display the 'Previous' button
2332  var showPrevious = true;
2333
2334  // Whether to display the 'Next' button
2335  var showNext = true;
2336
2337  // Whether to display the page buttons
2338  var showPageNumbers = true;
2339
2340  // 'Previous' text
2341  var prevText = options.prevText || '&laquo;';
2342
2343  // 'Next' text
2344  var nextText = options.nextText || '&raquo;';
2345
2346  // Ellipsis text
2347  var ellipsisText = '&hellip;';
2348  var classPrefix = 'paginationjs';
2349
2350  // Default active class
2351  var activeClassName = 'active';
2352
2353  // Default disable class
2354  var disableClassName = 'disabled';
2355
2356  // Pagination element's position in the container
2357  var position = 'bottom';
2358
2359  // Whether to trigger pagination at initialization
2360  var triggerPagingOnInit = !options.skipInitialLoad;
2361  var showFirstOnEllipsisShow = true;
2362  var showLastOnEllipsisShow = true;
2363
2364  // Instantiated in init()
2365  var el = null;
2366
2367  // Controls scrollTop logic
2368  var firstRender = true;
2369  var renderBySearch = false;
2370  var disabled = false;
2371
2372  // Pagination script class selector
2373  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
2374
2375  // Property Specific Image Override if No Image
2376  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
2377
2378  // Construct template
2379  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
2380  var template = Handlebars.compile(templateHTML);
2381
2382  // Initialize
2383  init();
2384  function init() {
2385    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2386
2387    // Append/prepend pagination element to the pagination container
2388    if (mode === 'NUMBERED_PAGINATION') {
2389      el = document.createElement('div');
2390      el.className = 'paginationjs';
2391      container[position === 'bottom' ? 'append' : 'prepend'](el);
2392    }
2393    if (searchContainer) {
2394      initSearchContainer({
2395        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
2396        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
2397        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
2398        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
2399      }, function () {
2400        syncSearchFormState(searchParams);
2401      });
2402    }
2403
2404    // Bind events
2405    observer();
2406  }
2407  function syncSearchFormState(params) {
2408    searchContainer.dispatchEvent(new CustomEvent('sync', {
2409      detail: params
2410    }));
2411  }
2412  function initSearchContainer(options, done) {
2413    var promises = [];
2414    if (options.fetchNeighborhoods) {
2415      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
2416        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
2417          detail: {
2418            data: neighborhoods.map(function (item) {
2419              return {
2420                value: item.id,
2421                label: item.name
2422              };
2423            })
2424          }
2425        }));
2426      }));
2427    }
2428    if (options.fetchPostCategories) {
2429      promises.push(fetchPostCategories(function (categories) {
2430        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
2431          detail: {
2432            data: categories
2433          }
2434        }));
2435      }));
2436    }
2437    if (options.fetchOffices) {
2438      promises.push(fetchOffices(function (offices) {
2439        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
2440          detail: {
2441            data: offices
2442          }
2443        }));
2444      }));
2445    }
2446    if (options.fetchRentalRates) {
2447      promises.push(fetchAllRentalRates(function (rentalRates) {
2448        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
2449          detail: {
2450            data: rentalRates
2451          }
2452        }));
2453      }));
2454    }
2455    if (promises.length > 0) {
2456      Promise.all(promises).then(function () {
2457        done();
2458      });
2459    } else {
2460      // element's custom code is not executed yet, so we're scheduling callback to after element's code
2461      setTimeout(done);
2462    }
2463  }
2464  function fetchAllNeighborhoods(done) {
2465    var useRouter = auxUsesRouter('neighborhoods');
2466    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
2467    // args on both APIs (the federated neighborhoods field accepts
2468    // withProperties/withBlogPosts); only the selection set differs.
2469    var gqlQuery = 'query ($companyId: String, $withProperties: NeighborhoodPropertiesFilter, $withBlogPosts: NeighborhoodBlogPostsFilter, $offset: Int, $limit: Int) {' + 'neighborhoods (companyId: $companyId, withProperties: $withProperties, withBlogPosts: $withBlogPosts, offset: $offset, limit: $limit) {' + (useRouter ? 'items {id, name}' : 'id, name') + '}}';
2470    var payload = {};
2471    payload.offset = 0;
2472    payload.limit = 100;
2473    payload.companyId = variables.companyId;
2474    if (options.resource === 'properties') {
2475      payload.withProperties = {
2476        active: true
2477      };
2478      ['agentIds', 'tag', 'propertyTypeId', 'statusIds', 'architectureStyle', 'lifestyle', 'salesPriceGTE', 'salesPriceLTE', 'leasePriceGTE', 'leasePriceLTE', 'livingSpaceSizeGTE', 'livingSpaceSizeLTE', 'bathCountGTE', 'bathCountLTE', 'bedroomCountGTE', 'bedroomCountLTE', 'bathCountGTE', 'bathCountLTE', 'bedroomCountGTE', 'bedroomCountLTE', 'featuredListing', 'leaseProperty', 'neighborhoodId', 'developmentId', 'openHouse'].forEach(function (field) {
2479        if (variables[field] !== undefined && variables[field] !== null) {
2480          payload.withProperties[field] = variables[field];
2481        }
2482      });
2483    }
2484    if (options.resource === 'posts') {
2485      payload.withBlogPosts = {
2486        active: true
2487      };
2488      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
2489        if (variables[field] !== undefined && variables[field] !== null) {
2490          payload.withBlogPosts[field] = variables[field];
2491        }
2492      });
2493    }
2494
2495    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2496    if (useRouter) {
2497      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
2498    }
2499    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2500      query: gqlQuery,
2501      variables: payload
2502    }).then(function (res) {
2503      var value = res.body.data && res.body.data.neighborhoods || {};
2504      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2505      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2506      done(items, items.length);
2507    });
2508  }
2509  function fetchPostCategories(done) {
2510    var featured = options.resource === 'posts' && !!variables.featured;
2511    var useRouter = auxUsesRouter('postCategories');
2512    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2513    // selection set differs ({ items {...} } on the router).
2514    var selection = 'id, name, publishedCount, featuredPublishedCount';
2515    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'postCategories (companyId: $companyId, offset: $offset, limit: $limit ' + (featured ? ' withFeaturedPublishedOnly: true' : ' withPublishedOnly: true') + ') {' + (useRouter ? 'items {' + selection + '}' : selection) + '}}';
2516    var payload = {};
2517    payload.offset = 0;
2518    payload.limit = 100;
2519    payload.companyId = variables.companyId;
2520    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2521      query: gqlQuery,
2522      variables: payload
2523    }).then(function (res) {
2524      var value = res.body.data && res.body.data.postCategories || {};
2525      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2526      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2527      done(items.map(function (item) {
2528        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
2529        return item;
2530      }), items.length);
2531    });
2532  }
2533  function fetchOffices(done) {
2534    var useRouter = auxUsesRouter('offices');
2535    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2536    // selection set differs ({ items {...} } on the router).
2537    var selection = 'id, name, tags';
2538    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
2539    // APIs differ in more than the items wrapper: federated offices takes
2540    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
2541    var gqlQuery = useRouter ? 'query ($companyId: ID!, $offset: Int, $limit: Int) {' + 'offices (companyId: $companyId, offset: $offset, limit: $limit) {' + 'items {' + selection + '}}}' : 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'offices (companyId: $companyId, offset: $offset, limit: $limit) {' + selection + '}}';
2542    var payload = {
2543      offset: 0,
2544      limit: 100,
2545      companyId: variables.companyId
2546    };
2547
2548    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2549    if (useRouter) {
2550      payload = window.luxuryPresence.routerApi.transformVariables('office
2550s', payload);
2551    }
2552    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2553      query: gqlQuery,
2554      variables: payload
2555    }).then(function (res) {
2556      var value = res.body.data && res.body.data.offices || {};
2557      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2558      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2559      done(items, items.length);
2560    });
2561  }
2562
2563  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
2564  function fetchAllRentalRates(done) {
2565    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
2566    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
2567    var payload = {
2568      offset: 0,
2569      limit: 100,
2570      companyId: variables.companyId
2571    };
2572    superagent.post(url + '/graphql').withCredentials().send({
2573      query: gqlQuery,
2574      variables: payload
2575    }).then(function (res) {
2576      var items = res.body.data && res.body.data.rentalRates || [];
2577      done(items, items.length);
2578    }).catch(function (err) {
2579      console.error('Error fetching rental rates:', err);
2580      done([], 0);
2581    });
2582  }
2583  function fetchData(params, done) {
2584    var resource = options.resource;
2585    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
2586    var payload = {};
2587    try {
2588      payload = JSON.parse(JSON.stringify(variables));
2589    } catch (e) {
2590      Object.keys(variables).forEach(function (variableName) {
2591        payload[variableName] = variables[variableName];
2592      });
2593    }
2594    payload.offset = (params.page - 1) * pageSize + offset;
2595    payload.limit = pageSize;
2596    payload.companyId = options.companyId;
2597    searchFormParams.forEach(function (formParam) {
2598      var val = params[formParam.formKey || formParam.param];
2599      if (val !== null && val !== undefined) {
2600        objSet(payload, formParam.param, val);
2601      }
2602    });
2603
2604    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2605    if (options.useRouterApi) {
2606      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
2607    }
2608
2609    // TODO: Disabled loading due to jarring effect
2610    // dataContainer.html('Loading...');
2611    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
2612      query: gqlQuery,
2613      variables: payload
2614    }).then(function (res) {
2615      if (res.body.errors) {
2616        done(res.body.errors);
2617        return;
2618      }
2619      var data = res.body.data || {};
2620      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2621      var resources;
2622      var resourceCount;
2623      if (options.useRouterApi) {
2624        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
2625        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
2626        resourceCount = page.count;
2627      } else {
2628        resources = data[resource] || [];
2629        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
2630      }
2631      const finish = function (items) {
2632        if (resource === 'properties' && propertyPlaceholderImage?.id) {
2633          items = items.map(item => {
2634            if (item.media?.length === 0) {
2635              return Object.assign(item, {
2636                media: [propertyPlaceholderImage]
2637              });
2638            }
2639            return item;
2640          });
2641        }
2642        done(null, items, resourceCount);
2643      };
2644
2645      // ROUTER-CLEANUP: client half of PLAT-4073 — resolve the requested
2646      // disclaimers before rendering; older SDKs skip (keys stay unset).
2647      if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') {
2648        window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish);
2649        return;
2650      }
2651      finish(resources);
2652    });
2653  }
2654  function getTotalPage() {
2655    return Math.ceil(totalNumber / pageSize);
2656  }
2657  function renderPaginationList() {
2658    var totalPages = getTotalPage();
2659    var rangeStart = searchParams.page - pageRange;
2660    var rangeEnd = searchParams.page + pageRange;
2661    if (rangeEnd > totalPages) {
2662      rangeEnd = totalPages;
2663      rangeStart = totalPages - pageRange * 2;
2664      rangeStart = rangeStart < 1 ? 1 : rangeStart;
2665    }
2666    if (rangeStart <= 1) {
2667      rangeStart = 1;
2668      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
2669    }
2670
2671    // Making sure that 1 more page button is shown in edge positions
2672    if (pageRange === 0) {
2673      if (searchParams.page === totalPages) {
2674        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
2675      }
2676      if (searchParams.page === 1) {
2677        rangeEnd = Math.min(2, totalPages);
2678      }
2679    }
2680
2681    // Render pagination list
2682    if (mode === 'NUMBERED_PAGINATION') {
2683      el.innerHTML = generateHTML({
2684        currentPage: searchParams.page,
2685        pageRange: pageRange,
2686        rangeStart: rangeStart,
2687        rangeEnd: rangeEnd
2688      });
2689      if (totalPages < 2 && hidePaginationOnFirstPage) {
2690        container.style.display = 'none';
2691      } else {
2692        container.style.display = '';
2693      }
2694    } else if (mode === 'LOAD_MORE_BUTTON') {
2695      if (searchParams.page >= totalPages) {
2696        loadMoreButton.style.display = 'none';
2697      } else {
2698        loadMoreButton.style.display = '';
2699      }
2700    }
2701  }
2702  function render(data) {
2703    renderPaginationList();
2704
2705    // Render new content with handlebars
2706    var html = '';
2707    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
2708      // If using load more, append search results to existing results
2709      html = dataContainer.innerHTML;
2710    }
2711    for (var i = 0; i < data.length; i++) {
2712      var itemData = recursivelyParse(data[i]);
2713      itemData.sectionIndex = options.sectionIndex;
2714      itemData.renderOptions = options.renderOptions;
2715      html += template(itemData);
2716    }
2717    dataContainer.innerHTML = html;
2718
2719    // Scroll Top
2720    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
2721      // Only animate to the top if we replace dataContainer (numbered pagination)
2722      setTimeout(() => {
2723        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
2724        window.scrollTo({
2725          top: scrollTargetOffsetTop,
2726          behavior: 'smooth'
2727        });
2728      }, 250);
2729    }
2730    return true;
2731  }
2732  function generateHTML(args) {
2733    const totalPages = getTotalPage();
2734    const {
2735      rangeStart,
2736      rangeEnd
2737    } = args;
2738    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2739      ...searchParams,
2740      page
2741    });
2742    let html = '';
2743    if (showPrevious || showPageNumbers || showNext) {
2744      html += '<div class="paginationjs-pages"><ul>';
2745
2746      // Previous button
2747      if (showPrevious) {
2748        if (searchParams.page <= 1) {
2749          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
2750        } else {
2751          html += `<li class="${classPrefix}-prev J-paginationjs-previous" data-num="${searchParams.page - 1}" title="Previous page"><a href="${makeLnk(searchParams.page - 1)}">${prevText}</a></li>`;
2752        }
2753      }
2754
2755      // Pages
2756      if (showPageNumbers) {
2757        if (rangeStart <= 3) {
2758          for (let i = 1; i < rangeStart; i++) {
2759            html += `<li class="${classPrefix}-page J-paginationjs-page ${i === searchParams.page ? activeClassName : ''}" data-num="${i}"><a ${i === searchParams.page ? '' : `href="${makeLnk(i)}"`}>${i}</a></li>`;
2760          }
2761        } else {
2762          if (showFirstOnEllipsisShow) {
2763            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
2764          }
2765          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2766        }
2767        for (let i = rangeStart; i <= rangeEnd; i++) {
2768          html += `<li class="${classPrefix}-page J-paginationjs-page ${i === searchParams.page ? activeClassName : ''}" data-num="${i}"><a ${i === searchParams.page ? '' : `href="${makeLnk(i)}"`}>${i}</a></li>`;
2769        }
2770        if (rangeEnd < totalPages - 2) {
2771          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2772          if (showLastOnEllipsisShow) {
2773            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
2774          }
2775        } else {
2776          for (let i = rangeEnd + 1; i <= totalPages; i++) {
2777            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
2778          }
2779        }
2780      }
2781
2782      // Next button
2783      if (showNext) {
2784        if (searchParams.page >= totalPages) {
2785          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
2786        } else {
2787          html += `<li class="${classPrefix}-next J-paginationjs-next" data-num="${searchParams.page + 1}" title="Next page"><a href="${makeLnk(searchParams.page + 1)}">${nextText}</a></li>`;
2788        }
2789      }
2790      html += '</ul></div>';
2791    }
2792    return html;
2793  }
2794  function go(newSearchParams, callback, restorationVisit) {
2795    if (disabled) return;
2796    var goToPageNumber = newSearchParams.page;
2797
2798    // Page number is out of bounds
2799    if (!goToPageNumber || goToPageNumber < 1) return;
2800    var totalPage = getTotalPage();
2801
2802    // Page number is out of bounds
2803    if (!restorationVisit && totalNumber > 0) {
2804      if (goToPageNumber > totalPage) return;
2805    }
2806    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
2807      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2808        ...newSearchParams,
2809        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
2810      });
2811      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
2812        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
2813          queryString: true
2814        }));
2815      }
2816    }
2817
2818    // Fetch and update page
2819    fetchData(newSearchParams, renderWithData);
2820    disabled = true;
2821    function renderWithData(err, data, count) {
2822      if (err) {
2823        dataContainer.dispatchEvent(new Event('error'));
2824      } else {
2825        searchParams = {
2826          ...newSearchParams
2827        };
2828        totalNumber = count - offset;
2829        if (data.length === 0) {
2830          dataContainer.dispatchEvent(new Event('no-data'));
2831        } else {
2832          dataContainer.dispatchEvent(new Event('data'));
2833        }
2834        render(data);
2835        firstRender = false;
2836      }
2837      disabled = false;
2838      renderBySearch = false;
2839    }
2840  }
2841  function areQueryParamsEqual(first, second) {
2842    var differ = Object.keys(first).find(function (key) {
2843      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
2844    });
2845    if (differ) {
2846      return false;
2847    }
2848    differ = Object.keys(second).find(function (key) {
2849      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
2850    });
2851    return !differ;
2852  }
2853  function next(callback) {
2854    go({
2855      ...searchParams,
2856      page: searchParams.page + 1
2857    }, callback);
2858  }
2859  function previous(callback) {
2860    go({
2861      ...searchParams,
2862      page: searchParams.page - 1
2863    }, callback);
2864  }
2865  function refresh(callback) {
2866    go(searchParams, callback);
2867  }
2868  function update(params, callback) {
2869    renderBySearch = true;
2870    go(params, callback);
2871  }
2872  function observer() {
2873    if (searchContainer) {
2874      searchContainer.addEventListener('search', function (event, newSearchParams) {
2875        newSearchParams = event.detail || newSearchParams;
2876        update({
2877          ...searchParams,
2878          ...newSearchParams,
2879          page: 1
2880        });
2881      });
2882      searchContainer.addEventListener('clear-search', function () {
2883        const defaultSearchParams = {
2884          ...DefaultSearchParams
2885        };
2886        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
2887          ...defaultSearchParams,
2888          page: null
2889        }, {
2890          ...searchParams,
2891          page: null
2892        });
2893
2894        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
2895        // when search form have default state
2896        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
2897          return;
2898        }
2899
2900        // if someone initially go to some page and click 'Clear' on search from
2901        // we should't navigate to first page. We should preserve page value
2902        if (isCurrentSearchFormStateDefault) {
2903          defaultSearchParams.page = searchParams.page;
2904        }
2905        syncSearchFormState(defaultSearchParams);
2906        update(defaultSearchParams);
2907      });
2908    }
2909    if (mode === 'LOAD_MORE_BUTTON') {
2910      loadMoreButton.addEventListener('click', function (event) {
2911        go({
2912          ...searchParams,
2913          page: searchParams.page + 1
2914        });
2915        return false;
2916      });
2917    }
2918    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
2919      // Do initial render
2920      go(Object.assign({}, searchParams, {
2921        page: 1
2922      }));
2923      return;
2924    }
2925    if (mode === 'NUMBERED_PAGINATION') {
2926      // Go to specified page number
2927      container.addEventListener(eventPrefix + 'go', function (event) {
2928        let {
2929          pageNumber,
2930          done
2931        } = event.detail || {};
2932        pageNumber = parseInt(pageNumber, 10);
2933        if (!pageNumber) {
2934          return;
2935        }
2936        go({
2937          ...searchParams,
2938          page: pageNumber
2939        }, done);
2940      });
2941
2942      // Page number button click
2943      el.addEventListener('click', function (event) {
2944        let clickTarget = event.target;
2945        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
2946        let pageNumber = current?.getAttribute('data-num');
2947        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
2948          return;
2949        } else {
2950          go({
2951            ...searchParams,
2952            page: parseInt(pageNumber, 10)
2953          });
2954        }
2955        event.preventDefault();
2956      });
2957
2958      // Whether to load the default page
2959      var defaultPageNumber = searchParams.page;
2960      if (triggerPagingOnInit) {
2961        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
2962          detail: {
2963            pageNumber: defaultPageNumber
2964          }
2965        }));
2966      }
2967    }
2968    window.addEventListener('popstate', function (event) {
2969      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2970      if (!areQueryParamsEqual(newParams, searchParams)) {
2971        go(newParams, null, true);
2972        if (searchContainer) {
2973          syncSearchFormState(newParams);
2974        }
2975      }
2976    });
2977  }
2978  function replaceVariables(template, variables) {
2979    var formattedString;
2980    for (var key in variables) {
2981      var value = variables[key];
2982      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
2983      formattedString = (formattedString || template).replace(regexp, value);
2984    }
2985    return formattedString;
2986  }
2987  function isTextEditorValue(obj) {
2988    return 'raw' in obj || 'gjs' in obj;
2989  }
2990  function getTextEditorValue(obj) {
2991    if (!obj.html) {
2992      return '';
2993    }
2994    var data = obj.html;
2995    var css = (obj.raw || obj.gjs || {}).css;
2996    if (css) {
2997      data = data + '<style>' + css + '</style>';
2998    }
2999    return data;
3000  }
3001
3002  /**
3003   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
3004   * strips out raw proprties and returns only HTML if it exists.
3005   * @param {Object} resources a collection retrieved from the database
3006   * @return {Object} the newly modified object.
3007   */
3008  function recursivelyParse(resources) {
3009    forEach(resources, function (value, key) {
3010      if (!value) {
3011        return;
3012      }
3013      if (value instanceof Object) {
3014        if (isTextEditorValue(value)) {
3015          resources[key] = getTextEditorValue(value);
3016          return;
3017        } else {
3018          return recursivelyParse(value);
3019        }
3020      }
3021      try {
3022        var parsedData = JSON.parse(value);
3023        if (isTextEditorValue(parsedData)) {
3024          resources[key] = getTextEditorValue(parsedData);
3025        }
3026      } catch (e) {
3027        // do nothing if we failed to parse value as JSON
3028      }
3029    });
3030    return resources;
3031  }
3032  function forEach(collection, iteratee) {
3033    var func = Array.isArray(collection) ? arrayEach : baseFor;
3034    return func(collection, iteratee);
3035  }
3036  function baseFor(object, iteratee) {
3037    if (!object) {
3038      return;
3039    }
3040    var iterable = Object(object);
3041    var props = Object.keys(object);
3042    var length = props.length;
3043    var index = -1;
3044    while (length--) {
3045      var key = props[++index];
3046      if (iteratee(iterable[key], key, iterable) === false) {
3047        break;
3048      }
3049    }
3050    return object;
3051  }
3052  function objSet(obj, path, value) {
3053    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
3054    pathArray.reduce((acc, key, i) => {
3055      if (acc[key] === undefined) acc[key] = {};
3056      if (i === pathArray.length - 1) acc[key] = value;
3057      return acc[key];
3058    }, obj);
3059  }
3060  function arrayEach(array, iteratee) {
3061    var index = -1;
3062    var length = array.length;
3063    while (++index < length) {
3064      if (iteratee(array[index], index, array) === false) {
3065        break;
3066      }
3067    }
3068    return array;
3069  }
3070  function selectPageRangeMode(e) {
3071    pageRange = e.matches ? mobilePageRange : desktopPageRange;
3072    renderPaginationList();
3073  }
3074  paginationMql.addEventListener('change', selectPageRangeMode);
3075})('section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b', JSON.parse("{\"pageSize\":\"6\",\"resource\":\"properties\",\"pageRange\":1,\"variables\":{\"order\":\"salesPrice\",\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"a0bff4f0-0ca7-460c-b77b-fa4993017cd5\",\"categoryId\":\"{{pageElement.categoryId}}\",\"sort\":\"soldDate\",\"limit\":6,\"statusIds\":[\"b0e88b38-7437-438d-a6fd-b13f135e1683\"],\"advancedFilters\":{\"query\":{\"statusIds\":{\"in\":[\"96031d77-bbe5-4de3-90d8-1e4e70de8ca8\",\"b0e88b38-7437-438d-a6fd-b13f135e1683\"]}}},\"websiteId\":\"d50fd8f9-cf7c-495b-ac13-fb4b878057e3\"},\"hidePaginationOnFirstPage\":true,\"companyId\":\"a0bff4f0-0ca7-460c-b77b-fa4993017cd5\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3076} catch(e) {
3077console.log(e);
3078}
3079                try {
3080(function init(sectionDomId) {})('section-22e9bdae-0b1d-407e-928b-eb9fd6849f2b', JSON.parse("{\"resource\":\"properties\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"a0bff4f0-0ca7-460c-b77b-fa4993017cd5\",\"usePageResource\":false,\"sectionIndex\":2}"));
3081} catch(e) {
3082console.log(e);
3083}
3084                try {
3085(function init(sectionDomId) {})('section-42b4c951-7cf7-4581-abf1-88973a82cc53', 'undefined');
3086} catch(e) {
3087console.log(e);
3088}
3089                try {
3090(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
3091})('section-18cf665d-1310-4b42-97d3-c5933fa8c09c', 'undefined');
3092} catch(e) {
3093console.log(e);
3094}
3095                try {
3096(function init(sectionDomId, options) {
3097  let section = null;
3098  switch (sectionDomId) {
3099    case 'NAVBAR':
3100      section = document.querySelector('body > nav, #global-navbar');
3101      break;
3102    case 'FOOTER':
3103      section = document.querySelector('body > footer, #global-footer');
3104      break;
3105    case 'SIDEMENU':
3106      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
3107      break;
3108    case 'CONTACT':
3109      section = document.querySelector('#modal-global-contact-us');
3110      break;
3111    case 'MOBILE_CONTACT':
3112      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
3113      break;
3114    case 'SUBSCRIBE':
3115      // Subscribe Not Implemented
3116      section = null;
3117      break;
3118    case 'ACCOUNT':
3119      // Account Not Implemented
3120      section = null;
3121      break;
3122    default:
3123      section = document.querySelector('#' + sectionDomId);
3124  }
3125  if (!section) {
3126    return;
3127  }
3128  var url = window.luxuryPresence.defaults.routerUrl;
3129  var companyId = window.luxuryPresence.defaults.companyId;
3130  var limit = options.limit || 8;
3131  if (typeof limit === 'string') {
3132    limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected
3133  }
3134  var templateSelector = options.templateSelector || '.jsIGTemplate';
3135  var containerSelector = options.containerSelector || '.jsIGContainer';
3136  var hasDataClass = options.hasDataClass || 'has-data';
3137  var hideActivateMessage = options.hasDataClass || false;
3138  var payload = {
3139    companyId: companyId,
3140    limit: limit
3141  };
3142  if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) {
3143    payload.resourceId = options.resourceId;
3144    // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase
3145    payload.resource = String(options.resource || 'agent').toUpperCase();
3146    payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true;
3147  }
3148  var query = 'query InstagramFeed (\n' + '  $companyId: ID!\n' + '  $instagramAuthorizationId: ID\n' + '  $username: String\n' + (payload.resourceId ? '$resource: InstagramContentAuthResourceEnum\n $resourceId: ID\n $fallbackToNoResource: Boolean' : '') + '  $limit: Int\n' + ') {\n' + '  instagramContentFeed (\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';
3149  var templateHTML = section.querySelector(templateSelector)?.innerHTML || '';
3150  var template = Handlebars.compile(templateHTML);
3151  var container = section.querySelector(containerSelector);
3152  if (options.variables) {
3153    Object.keys(options.variables).forEach(function (key) {
3154      if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) {
3155        payload[key] = options.variables[key];
3156      }
3157    });
3158  }
3159  function getData() {
3160    var feed = {
3161      error: true
3162    };
3163    if (payload.companyId == null || payload.companyId === '') {
3164      // instagramContentFeed requires companyId (ID!) — nothing to fetch without it.
3165      // Checked after the options.variables merge, which may override the default.
3166      // Deferred so element listeners (attached after this template runs) still receive it.
3167      setTimeout(function () {
3168        section.dispatchEvent(new CustomEvent('ig-data', {
3169          detail: feed
3170        }));
3171      }, 0);
3172      return;
3173    }
3174    superagent.post(url + '/graphql').send({
3175      query: query,
3176      variables: payload
3177    }).then(res => {
3178      try {
3179        if (!res.body.errors) {
3180          feed = res.body.data.instagramContentFeed;
3181          if (!feed.active) {
3182            if (!hideActivateMessage && sectionDomId === 'section-temp' && container) {
3183              if (payload.resourceId) {
3184                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>';
3185              } else {
3186                container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>';
3187              }
3188            }
3189          } else {
3190            if (feed.items.length) {
3191              if (hasDataClass) {
3192                section.classList.add(hasDataClass);
3193              }
3194              const feedName = feed.username;
3195              section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl));
3196              section.querySelectorAll('.jsIGName').forEach(name => {
3197                name.textContent = '@' + feedName;
3198                name.setAttribute('title', '@' + feedName);
3199              });
3200              if (container && template) {
3201                container.innerHTML = template(feed);
3202              }
3203            }
3204          }
3205        }
3206      } catch (e) {}
3207      section.dispatchEvent(new CustomEvent('ig-data', {
3208        detail: feed
3209      }));
3210    }).catch(e => {
3211      console.log('err', e);
3212      section.dispatchEvent(new CustomEvent('ig-data', {
3213        detail: feed
3214      }));
3215    });
3216  }
3217  getData();
3218})('section-d0ae8c06-4909-4560-ae59-43d727b8e49f', JSON.parse("{\"limit\":5,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"a0bff4f0-0ca7-460c-b77b-fa4993017cd5\",\"usePageResource\":false,\"sectionIndex\":5,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3219} catch(e) {
3220console.log(e);
3221}
3222                try {
3223(function init(sectionId) {
3224  const $section = $('#' + sectionId);
3225  const $autoShrinks = $section.find('.jsShrink');
3226  const toAdjust = [];
3227  const minFontSize = 10;
3228  $autoShrinks.each(function () {
3229    const $el = $(this);
3230    const $parent = $el.parent();
3231    const {
3232      $cl: $sizer
3233    } = makeElementCopy($el, $parent);
3234    const {
3235      $cl: $sizerMin
3236    } = makeElementCopy($el, $parent);
3237    toAdjust.push({
3238      $el,
3239      $parent,
3240      $sizer,
3241      $sizerMin,
3242      altered: false
3243    });
3244  });
3245  adjustSizes();
3246  $section.on('ig-data', adjustSizes);
3247  $(window).on('resize.lpui-auto-clean', adjustSizes);
3248  function makeElementCopy($el, $parent) {
3249    const $cont = $('<div style="width: 0; height: 0; position: relative; overflow: hidden;"></div>');
3250    $parent.prepend($cont);
3251    const $cl = $el.clone().removeClass('wow fadeInUp jsShrink').appendTo($cont);
3252    $cl[0].removeAttribute('style');
3253    $cl[0].removeAttribute('data-wow-delay');
3254    $cl.css({
3255      'position': 'absolute',
3256      'overflow-wrap': 'normal',
3257      'white-space': 'nowrap'
3258    });
3259    return {
3260      $cont,
3261      $cl
3262    };
3263  }
3264  function resetStyles(item) {
3265    if (item.altered) {
3266      item.$el[0].style.fontSize = '';
3267      item.$el[0].style.letterSpacing = '';
3268      item.altered = false;
3269    }
3270  }
3271  function setStyles($el, k, fontSize, letterSpacing) {
3272    $el.css('font-size', `${Math.floor(fontSize * k)}px`);
3273    if (letterSpacing) {
3274      $el.css('letter-spacing', `${letterSpacing * k}px`);
3275    }
3276  }
3277  function adjustSizes() {
3278    toAdjust.forEach(function (item) {
3279      const {
3280        $el,
3281        $parent,
3282        $sizer,
3283        $sizerMin
3284      } = item;
3285      try {
3286        const contW = $parent[0].getBoundingClientRect().width;
3287        const sizeW = $sizer[0].getBoundingClientRect().width;
3288        if (!sizeW || contW >= sizeW) {
3289          resetStyles(item);
3290          return;
3291        }
3292        const mf = $sizer.css('font-size').match(/([\d\.]+)px/);
3293        if (!mf) {
3294          resetStyles(item);
3295          return;
3296        }
3297        const origFontSize = parseFloat(mf[1]);
3298        if (!origFontSize || origFontSize <= minFontSize) {
3299          resetStyles();
3300          return;
3301        }
3302        const ms = $sizer.css('letter-spacing').match(/([\d\.]+)px/);
3303        const origLetterSpacing = ms && parseFloat(ms[1]) || 0;
3304        const fontK = minFontSize / origFontSize;
3305        setStyles($sizerMin, fontK, origFontSize, origLetterSpacing);
3306        const minW = $sizerMin[0].getBoundingClientRect().width;
3307        item.altered = true;
3308        if (minW >= contW) {
3309          setStyles($el, fontK, origFontSize, origLetterSpacing);
3310        } else {
3311          setStyles($el, contW / minW * fontK, origFontSize, origLetterSpacing);
3312        }
3313      } catch (e) {
3314        console.log(e);
3315      }
3316    });
3317  }
3318})('section-d0ae8c06-4909-4560-ae59-43d727b8e49f', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"a0bff4f0-0ca7-460c-b77b-fa4993017cd5\",\"usePageResource\":false,\"sectionIndex\":5}"));
3319} catch(e) {
3320console.log(e);
3321}
3322
3323            var { body } = document;
3324            var globalNav = body.querySelector(':scope > nav');
3325            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
3326
3327            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
3328                modalCloseBtn.addEventListener('click', function() {
3329                window.lpUI.hideClosestModal(modalCloseBtn);
3330              });
3331            });
3332
3333            window.addEventListener('click', function() {
3334                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
3335                    sharedPopup.style.display = 'none' ;
3336                });
3337            });
3338
3339            /* Misc Partials / Addons */
3340            function initWOW() {
3341                if (wow) {
3342                    wow.init();
3343                    wow.scrollHandler();
3344                    setTimeout(function () {
3345                        const wowHideStyle = document.getElementById('wow-hide-elements');
3346                        if(wowHideStyle) {
3347                            wowHideStyle.disabled = true;
3348                        }
3349                    }, 1);
3350                }
3351            }
3352
3353            const wowHideElements =  document.getElementById('wow-hide-elements');
3354            if (wowHideElements) {
3355               wowHideElements.disabled = false;
3356            }
3357
3358                initWOW();
3359
3360            /* Generic Navbar Handling */
3361            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
3362                hamburgerComponent.addEventListener('click', function() {
3363                window.lpUI.sideMenuToggle();
3364              });
3365            });
3366            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
3367                toggleEl.addEventListener('click', function() {
3368                window.lpUI.sideMenuToggle();
3369              });
3370            });
3371
3372            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
3373                linkEl.addEventListener('click', function(e) {
3374                  e.preventDefault();
3375                  e.stopPropagation();
3376                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
3377                  if (subNav && subNav.classList.contains('visible')){
3378                    subNav.classList.remove('visible');
3379                  } else {
3380                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
3381                      globalSubNav.classList.remove('visible');
3382                    });
3383                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
3384                        sideMenuSubNav.classList.remove('visible');
3385                    });
3386                    subNav?.classList.add('visible');
3387                  }
3388                });
3389            });
3390            window.addEventListener('click', function() {
3391                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
3392                    subNavEl.classList.remove('visible');
3393                });
3394            });
3395
3396        }
3397
3398        document.addEventListener('DOMContentLoaded', lpGlobalInit);
3399
3400    </script>
3400
3401
3402    
3402<script type="module">
3403    function selectorExists(selector) {
3404        return document.querySelector(selector) !== null;
3405    }
3406
3407    // Function to initialize the third-party library
3408    function initParoller(selector = '.my-paroller') {
3409        var $parollerElements = $(selector);
3410        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
3411            $parollerElements.paroller();
3412        }
3413    }
3414
3415    const parollerSelector = '.my-paroller';
3416
3417    if (selectorExists(parollerSelector)) {
3418        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
3419            initParoller(parollerSelector);
3420            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
3421        });
3422    }
3423    </script>
3423
3424
3425        <!-- Follow Up Boss Page View Tracker-->
3426        
3426<script type="text/plain" data-consent-category="analytics">
3427            window.widgetTracker("send", "pageview");
3428        </script>
3428
3429        <!-- End Follow Up Boss Page View Tracker -->
3430            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3430-3431
3430
3431            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3431GTM-T9SFQGHZ
vendor: 107 bytes, lines 3431-3433
3431"
3432            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3433            
3433<!-- End Google Tag Manager -->
3434        <!-- CS - Change email address on contact form on agent details page dynamically-->
3435<script>
3436window.onload = function () {
3437    setTimeout(function () {
3438        const contactForm = document.getElementById('modal-global-contact-us');
3439        if (!contactForm) return;
3440
3441        const emailLinks = contactForm.querySelectorAll('.contact-form__footer .block p:nth-child(2) a.link');
3442
3443        function updateEmailBasedOnPath() {
3444            const path = window.location.pathname;
3445
3446            const emailMap = {
3447                '/team/carrie-sakey': '[email protected]',
3448                '/team/rachel-fowler': '[email protected]',
3449                '/team/sara-fowler': '[email protected]',
3450                '/team/catherine-cardell-yarmosh': '[email protected]',
3451                '/team/cristy-dow': '[email protected]',
3452                '/team/kathy-f-quinn': '[email protected]',
3453                '/team/melissa-terranova': '[email protected]',
3454                '/team/bert-terranova': '[email protected]',
3455                '/team/robin-bernier': '[email protected]',
3456                '/team/lindsay-holland': '[email protected]',
3457                '/team/jaime-memoli': '[email protected]',
3458                '/team/ava-fisher': '[email protected]',
3459                '/team/kristen-delaurentiis': '[email protected]',
3460                '/team/jason-fowler': '[email protected]'
3461            };
3462
3463            const newEmail = emailMap[path] || '[email protected]';
3464
3465            emailLinks.forEach(link => {
3466                link.textContent = newEmail;
3467                link.href = `mailto:${newEmail}`;
3468            });
3469        }
3470
3471        updateEmailBasedOnPath();
3472    }, 1000);
3473};
3474</script>
3474
3475<!-- CS - Change email address on contact form on agent details page dynamically-->
3476            
3476<script
3477                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
3478                data-website-id="d50fd8f9-cf7c-495b-ac13-fb4b878057e3"
3479                
3480                defer></script>
vendor: 1 bytes, line 3480
3480
3481<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 3481
3481
3482<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a47951314eeb2fb7',t:'MTc5MTUwNjI1MA=='};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>
3482</body>
3483</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.