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 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'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 & Buying">Selling & 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 & 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'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 Team </strong></p><p><strong>at Coldwell Banker Realty - Fairfield </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 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.!#$%&â*+/=?^_`{|}~-]+@[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 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">×</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 & 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" ";if(/^<\/p\s*>$/.test(s)){h.lastIndex=r;let t=h.exec(e);if(t&&"<"===t[0][0])return" "}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 || '«'; 2342 2343 // 'Next' text 2344 var nextText = options.nextText || '»'; 2345 2346 // Ellipsis text 2347 var ellipsisText = '…'; 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.