PageSourceSearch

https://njfromatoz.com/properties/sale

html njfromatoz.com collected 2026-10-09 23:38:30 UTC 377,882 bytes, 4,037 lines download raw bytes

1<!DOCTYPE html>
2<html class="no-js" lang=en>
3<head>
4    <meta charset="utf-8">
5    <meta http-equiv="x-ua-compatible" content="ie=edge">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7    <meta name="twitter:card" content="summary_large_image">
8    <meta property="og:type" content="website">
9        <title>For Sale Properties | Allison Ziefert Real Estate Group</title>
10        <meta property="og:title" content="For Sale Properties | Allison Ziefert Real Estate Group">
11        <meta name="twitter:title" content="For Sale Properties | Allison Ziefert Real Estate Group">
12        <meta name="description" content="Explore available properties for sale and listings in New Jersey. Contact Allison Ziefert Group for exclusive real estate opportunities. Contact us now!">
13        <meta property="og:description" content="Explore available properties for sale and listings in New Jersey. Contact Allison Ziefert Group for exclusive real estate opportunities. Contact us now!">
14        <meta name="twitter:description" content="Explore available properties for sale and listings in New Jersey. Contact Allison Ziefert Group for exclusive real estate opportunities. Contact us now!">
15        <meta property="og:image" content="https://res.cloudinary.com/luxuryp/images/w_960,c_limit,f_auto,q_auto/buumir1m8evswwhzk0ss/modern-living-room-3-1">
16        <meta name="twitter:image" content="https://res.cloudinary.com/luxuryp/images/w_960,c_limit,f_auto,q_auto/buumir1m8evswwhzk0ss/modern-living-room-3-1">
17        <meta property="og:url" content="https://njfromatoz.com/properties/sale">
18        <link rel="canonical" href="https://njfromatoz.com/properties/sale">
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    <style>@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Regular.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Regular.woff') format('woff');font-weight: 400;font-style: normal;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Italic.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Italic.woff') format('woff');font-weight: 400;font-style: italic;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBold.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBold.woff') format('woff');font-weight: 600;font-style: normal;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBoldItalic.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBoldItalic.woff') format('woff');font-weight: 600;font-style: italic;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Bold.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-Bold.woff') format('woff');font-weight: 700;font-style: normal;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-BoldItalic.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-BoldItalic.woff') format('woff');font-weight: 700;font-style: italic;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBold.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBold.woff') format('woff');font-weight: 500;font-style: normal;}@font-face {font-family: 'CompassSerif';src: url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBoldItalic.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSerif/CompassSerif-SemiBoldItalic.woff') format('woff');font-weight: 500;font-style: italic;}</style><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:100,200,300,400,500,600,700,800,900">
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:CompassSerif,serif;--global-primary-font-family-short:CompassSerif;--global-secondary-font-family:Inter,sans-serif;--global-secondary-font-family-short:Inter;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:57px;--global-h2-font-size:36px;--global-h3-font-size:28px;--global-h4-font-size:28px;--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:Inter,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:CompassSerif,serif;}h1{font-size:57px;}h2{font-size:36px;}h3{font-size:28px;}h4{font-size:28px;}h5{font-size:22px;}h6{font-size:20px;}</style>
30        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/masterpiece/index.css" />
31    <style id="website-css">h1,.lp-h1,h2,.lp-h2,h3,.lp-h3,h4,.lp-h4,h5,.lp-h5{text-transform:none!important;}.testimonials-section .list-cell .title h6.body.lp-h6{font-size:16px;font-weight:400;line-height:27px;}.testimonials-section .list-cell .title h6.title.lp-h6{font-family:var(--global-primary-font-family);}body>div.mobile-contact-wrapper{z-index:99999999!important;}@media only screen and (max-width: 768px){footer#global-footer a:not(.socials__item),footer#global-footer .link,footer#global-footer .footer-navigation__link{text-underline-offset:5px;}}.cta-block .lp-h2 p{margin-bottom:0;}.hyperlink-style-1:before,.hyperlink-style-2:before{content:""!important;}div.popup-modal button.popup-modal__close{opacity:0.8!important;}@media(max-width : 768px){div.popup-modal button.popup-modal__close:before,div.popup-modal button.popup-modal__close:after{background-color:#000000!important;box-shadow:0px 0px 18px 5px rgba(255,255,255,0.75);}}div.popup-modal h2{font-size:50px;}@media(max-width : 768px){div.popup-modal h2{font-size:40px;}}div.popup-modal span.lp-tcr-message a{color:#9C9E8F;}div.popup-modal span.lp-tcr-message a:hover{color:#000000;}nav .navigation__link{text-transform:none;font-size:16px!important;}nav#global-navbar{background-color:unset!important;}nav#global-navbar .header.theme-light .lp-container .logo img.light{display:block;}nav#global-navbar .header.theme-light .lp-container .logo img.dark{display:none;}nav#global-navbar .header.theme-light .header__hamburger circle{fill:#fff;}nav#global-navbar .header.theme-light .header__hamburger svg rect{fill:#9C9E8F!important;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item{color:#fff;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .sub-nav__link:hover{color:#fff;background-color:#9C9E8F;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .navigation__link:after{background:#fff;}nav#global-navbar .header .lp-container .logo img.light{display:none;}nav#global-navbar .header .lp-container .logo img.dark{display:block;}nav#global-navbar .header .header__hamburger circle{fill:#9C9E8F;}nav#global-navbar .header .header__hamburger svg rect{fill:#ffffff!important;}nav#global-navbar .header ul.navigation li.navigation__item{color:#000000;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#ffffff;background-color:#9C9E8F;}nav#global-navbar .header ul.navigation li.navigation__item .navigation__link:after{background:#9C9E8F;}nav#global-navbar.scroll .header{background-color:#fff;}nav#global-navbar.scroll .header .lp-container .logo img.light{display:none;}nav#global-navbar.scroll .header .lp-container .logo img.dark{display:block;}nav#global-navbar.scroll .header .header__hamburger circle{fill:#9C9E8F;}nav#global-navbar.scroll .header .header__hamburger svg rect{fill:#fff!important;}nav#global-navbar.scroll .header ul.navigation li.navigation__item{color:#000;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#ffffff;background-color:#9C9E8F;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .navigation__link:after{background:#9C9E8F;}nav .header{padding-top:10px;padding-bottom:20px;}nav.scroll .header{padding-top:10px;padding-bottom:10px;}nav#global-navbar .header .header__logo a.logo{height:90px;}@media screen and (max-width: 768px){nav#global-navbar .header .header__logo a.logo{height:60px;}}footer .site-footer__logo-bar{padding-bottom:40px;}
31footer .site-footer__col-content{opacity:1.0!important;padding-bottom:16px;}footer h5{text-transform:uppercase;}footer .site-footer__disclaimer{padding-top:40px;opacity:1.0!important;}footer .site-footer__col-content a{color:#ffffff!important;}footer .site-footer__col-content a:hover{color:#cecece!important;}footer#global-footer .site-footer .footer-navigation__link{-webkit-text-decoration:underline;text-decoration:underline;text-transform:none;text-underline-offset:4px;letter-spacing:-0.5px;}footer#global-footer .site-footer .footer-navigation__link:hover{color:#cecece;}footer .site-footer__disclaimer a{-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:4px;letter-spacing:-0.5px;color:#ffffff;}footer .site-footer__disclaimer a:hover{color:#cecece;}footer#global-footer .lp-container .site-footer__copy a{position:relative;display:inline-block;color:#ffffff;}footer#global-footer .lp-container .site-footer__copy a:before,footer#global-footer .lp-container .site-footer__copy a:after{content:"";position:absolute;display:block;width:100%;height:1px;opacity:.9;-webkit-transition:0.3s linear;transition:0.3s linear;background:currentColor;bottom:0;left:0;}footer#global-footer .lp-container .site-footer__copy a:after{opacity:1;width:0;}footer#global-footer .lp-container .site-footer__copy a:hover{color:#cecece;}footer#global-footer .lp-container .site-footer__copy a:hover:after{opacity:1;width:100%;color:#cecece;}@media (max-width: 420px){footer .site-footer__socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-left:auto!important;}footer .site-footer__socials li:first-child{margin-left:0;}footer .site-footer__socials li{margin:0 3px;}}.sidemenu .sidemenu__nav .navigation__item{border-color:#9C9E8F;}div#global-sidemenu .navigation .navigation__link:hover{color:#9C9E8F;}body>div.sidemenu .sidemenu__header{padding-bottom:0!important;}body>div.sidemenu .navigation__link{padding:6px 12px 6px 70px;}body>div.sidemenu .sub-nav__link{text-transform:none;font-family:var(--global-primary-font-family)!important;}body>div.sidemenu .sub-nav__link:hover{color:#9C9E8F;}footer .site-footer__logo-container img{-webkit-filter:invert(1);filter:invert(1);}@media (max-width: 520px){footer .site-footer__logo-container img{max-width:210px!important;}}div#global-mobile-contact .pop-up button.lp-btn{border:1px solid #9C9E8F!important;color:#9C9E8F!important;background-color:transparent;}div#global-mobile-contact .pop-up button.lp-btn:hover{color:#ffffff!important;background-color:#9C9E8F!important;}div#global-mobile-contact .pop-up span.lp-tcr-message a:hover{color:#9C9E8F;}div#global-mobile-contact .pop-up input.lp-input,div#global-mobile-contact .pop-up textarea{border-color:#000000;color:#000000;}@media only screen and (min-width: 769px){div#modal-global-contact-us div.contact-form__close.close{color:#9C9E8F;opacity:1;}}@media only screen and (max-width: 1024px){div#modal-global-contact-us div.contact-form__close.close{color:#fff;opacity:1;}}@media (max-width: 767px){#modal-global-contact-us .socials .lp-socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#modal-global-contact-us .socials .lp-socials li{padding:8px 4px;}}@media only screen and (min-width: 768px){#global-sidemenu .sidemenu__wrapper::-webkit-scrollbar{width:10px!important;}#global-sidemenu .sidemenu__wrapper::-webkit-scrollbar-track{background:#f1f1f1;}#global-sidemenu .sidemenu__wrapper::-webkit-scrollbar-thumb{background:#000;cursor:pointer;}#global-sidemenu .sidemenu__wrapper::-webkit-scrollbar-thumb:hover{background:#000;}}</style>
32    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
33        <style id="page-css">
34            #section-08c11126-4ca7-4355-a714-186817126398{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#000000;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#000000;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.30));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/f316f071-8a9f-4130-8688-cb51eb1ef6dd');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-08c11126-4ca7-4355-a714-186817126398 .video-wrapper .full-screen-video-component .video-wrapper::before{content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000;z-index:-1000;}#section-08c11126-4ca7-4355-a714-186817126398 .video-wrapper .full-screen-video-component .video-wrapper video{-webkit-transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);opacity:0!important;}#section-08c11126-4ca7-4355-a714-186817126398 .video-wrapper .full-screen-video-component .video-wrapper.playing video{opacity:1!important;}#section-08c11126-4ca7-4355-a714-186817126398 .lp-play{opacity:0;background-color:transparent;display:inline-block;border:none;position:absolute;bottom:50px;right:50px;width:27px;height:24px;z-index:3;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out;cursor:unset;}#section-08c11126-4ca7-4355-a714-186817126398 .lp-play.visible{opacity:1;cursor:pointer;}@media (max-width: 900px){#section-08c11126-4ca7-4355-a714-186817126398 .lp-play.visible{display:none;}}@media (max-width: 900px){#section-08c11126-4ca7-4355-a714-186817126398 .lp-play{display:none;}}#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled{z-index:unset;}#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled .lp-container{position:relative;}#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled>div.video-wrapper{position:fixed;left:var(--global-body-padding, 0);top:var(--global-body-padding, 0);width:calc(100% - var(--global-body-padding, 0px) * 2);z-index:-1001;}@media (max-width: 767px){#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled>
34div.video-wrapper{left:0;top:0;width:100%;}}#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled>div.overlay-component{position:fixed;left:var(--global-body-padding, 0);top:var(--global-body-padding, 0);right:unset;width:calc(100% - var(--global-body-padding, 0px) * 2);}@media (max-width: 767px){#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled>div.overlay-component{left:0;top:0;width:100%;}}#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled .opening-with-search:before{display:block;content:'';left:var(--global-body-padding, 0);top:var(--global-body-padding, 0);width:calc(100% - var(--global-body-padding, 0px) * 2);background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;background-position-y:22%;position:fixed;z-index:-1001;height:100%;}@media (max-width: 767px){#section-08c11126-4ca7-4355-a714-186817126398.parallax-enabled .opening-with-search:before{left:0;top:0;width:100%;}}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search{position:relative;--top-padding:170px;--bottom-padding:30px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:770px;padding-top:var(--top-padding);padding-bottom:var(--bottom-padding);}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search:before{display:none;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-Full{min-height:100vh;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-Full>div.video-wrapper{height:100vh;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-Full:before{min-height:100vh;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-770px{min-height:770px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-770px>div.video-wrapper{height:770px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-770px:before{min-height:770px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-600px{min-height:600px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-600px>div.video-wrapper{height:600px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search.height-class-600px:before{min-height:600px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .bottom-spacer{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;max-height:calc(var(--top-padding) - var(--bottom-padding));}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .center-block{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-description{letter-spacing:.1em;margin-bottom:15px;max-width:640px;margin-left:auto;margin-right:auto;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-description a,#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-description a[x-apple-data-detectors]{color:inherit!important;-webkit-text-decoration:none!important;text-decoration:none!important;font-size:inherit!important;font-family:inherit!important;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-pretitle{margin-bottom:15px;max-width:860px;margin-left:auto;margin-right:auto;white-space:pre-line;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-title{margin-bottom:15px;max-width:860px;margin-left:auto;margin-right:auto;white-space:pre-line;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-button{margin:0 15px;}@media (max-width: 768px){#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .opening-button{margin:0;}}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-form{margin-top:30px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-form.with-filters{padding-top:32px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-button{margin:5px;border:none;border-radius:0;outline:none;background-color:#000;color:#fff;height:44px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:50px;padding-right:50px;-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;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-button:hover{background-color:#fff;color:#000;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-lease-tabs{position:absolute;left:0;bottom:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-lease-tab{padding:4px 20px;background-color:#000;color:#fff;cursor:pointer;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-lease-tab.active{background-color:#fff;color:#000;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-wrapper{margin:5px;letter-spacing:normal;width:100%;max-width:444px;position:relative;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-input-container{width:100%;border:none;height:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-input-container .search-icon{color:#c0c0c0;margin-right:10px;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:20px;line-height:0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-input-container .search-input{color:#000;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;width:50px;border:none;border-radius:0;outline:none;background:transparent;font-size:16px;padding:0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-results{line-height:normal;text-align:left;background-color:rgba(0, 0, 0, 0.8);position:absolute;width:100%;left:0;top:100%;border:none;overflow:hidden;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;height:0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-container,#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .predefined-links{padding:10px 0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-container a,#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .predefined-links a{color:#b6b6b6;-webkit-transition:color 0.3s ease;transition:color 0.3s ease;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-container a:hover,#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .predefined-links a:hover{color:#fff;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .predefined-links{max-height:400px;overflow:auto;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-block{margin:15px 0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-block-title{margin:0;padding:0 48px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-block-title .results-title-label{margin:0 20px 10px 0;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-block-title .search-near-container{margin-bottom:15px;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-block:nth-child(n + 2) .search-near-container{display:none;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-link{display:block;padding:4px 48px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .results-link.selected-link{color:#fff;background-color:rgba(255, 255, 255, 0.2);}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-in-progress{padding:30px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:30px;opacity:0.5;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .not-visible{display:none!important;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .nothing-found{width:100%;padding:20px;}@media (max-width: 560px){#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-form{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-button{width:100%;max-width:444px;}}#section-08c11126-4ca7-4355-a714-186817126398 .opening-with-search .search-near{cursor:pointer;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;-webkit-transition:background-color 0.3s ease;transition:background-color 0.3s ease;background-color:transparent;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-wrap{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:20px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-clip-path:polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);clip-path:polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);-webkit-transition:clip-path 0.4s ease;transition:clip-path 0.4s ease;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-modal{border-radius:20px;padding:10px 20px 20px;max-width:400px;min-width:100px;background-color:rgba(0,0,0,0.9);color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;max-height:100%;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-close{position:absolute;width:40px;height:40px;top:10px;right:10px;cursor:pointer;-webkit-transition:all 0.3s ease;transition:all 0.3s ease;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-close:before{content:'';width:20px;height:2px;background-color:#fff;position:absolute;left:10px;top:19px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-close:after{content:'';width:20px;height:2px;background-color:#fff;position:absolute;left:10px;top:19px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-close:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);}#section-08c11126-4ca7-4355-a714-186817126398 .search-near-hidden .search-near-container{display:none;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-title{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:20px;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-container{-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;overflow:auto;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-container p{margin:0;}#section-08c11126-4ca7-4355-a714-186817126398 .loc-msg-container p+p{margin-top:1em;}#section-08c11126-4ca7-4355-a714-186817126398.visible-loc-msg{z-index:1000;}#section-08c11126-4ca7-4355-a714-186817126398.visible-loc-msg .loc-msg-backdrop{background-color:rgba(255,255,255,0.4);}#section-08c11126-4ca7-4355-a714-186817126398.visible-loc-msg .loc-msg-wrap{-webkit-clip-path:polygon(0 0, 0 100%, 100% 100%, 100% 0%);clip-path:polygon(0 0, 0 100%, 100% 100%, 100% 0%);}@media (min-width: 960px) and (orientation: landscape){#section-08c11126-4ca7-4355-a714-186817126398{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/f316f071-8a9f-4130-8688-cb51eb1ef6dd');}}@media (min-width: 1280px) and (orientation: landscape){#section-08c11126-4ca7-4355-a714-186817126398{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/f316f071-8a9f-4130-8688-cb51eb1ef6dd');}}@media (min-width: 1920px) and (orientation: landscape){#section-08c11126-4ca7-4355-a714-186817126398{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/f316f071-8a9f-4130-8688-cb51eb1ef6dd');}}@media (min-width: 2560px) and (orientation: landscape){#section-08c11126-4ca7-4355-a714-186817126398{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/f316f071-8a9f-4130-8688-cb51eb1ef6dd');}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927{color:#211f1f;--fontColor:#211f1f;--fontColor_H:0;--fontColor_S:3%;--fontColor_L:13%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#fff;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .section .lp-container p.bf1.label{background:#9C9E8F!important;color:#FFF;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 div.section .item p.bf1{text-transform:uppercase;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .section .lp-container .paginationjs-pages .paginationjs-prev:not(.disabled):hover a:after,#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .section .lp-container .paginationjs-pages .paginationjs-next:not(.disabled):hover a:after{color:#9C9E8F;opacity:.7;}@media (min-width: 1921px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .section .lp-container{max-width:2000px;}}
34#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .collection{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:0 -10px;}@media (min-width: 1024px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .collection:not(.collection--3) .item{width:calc(50% - 20px);}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .collection:not(.collection--3) .item figure{height:462px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item{width:calc(33.33333% - 20px);margin:0 10px 48px;-webkit-text-decoration:none;text-decoration:none;color:inherit;}@media (max-width: 991px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item{width:calc(50% - 20px);}}@media (max-width: 768px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item{margin-bottom:24px;width:100%;}}@media (hover: hover) and (pointer: fine){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item:hover .img{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item figure{position:relative;overflow:hidden;margin:0 0 16px;background-color:#f2f2f2;height:310px;}@media (min-width: 1921px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item figure{height:464px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .img{-webkit-transition:all .3s;transition:all .3s;height:100%;width:100%;object-fit:cover;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .label{position:absolute;text-transform:uppercase;top:10px;right:10px;padding:6px 10px;background-color:rgba(255,255,255, .8);margin:0;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .lp-h5{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;margin:0 0 4px;}@media (min-width: 1921px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .lp-h5{font-size:28px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf1{margin:0 0 4px;}@media (min-width: 1921px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf1{font-size:16px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .item-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;margin:0;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf2{list-style:none;margin:0;padding:0;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;text-transform:uppercase;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf2 li{margin:0;}@media (min-width: 1921px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf2 li{font-size:14px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .item .bf2 li+li:before{content:'\00a0\00a0|\00a0\00a0';}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .lp-pagination{margin-top:16px;}@media (max-width: 768px){#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .lp-pagination{margin-top:8px;}}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .lp-text--subtitle p{margin:0;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .label-house{position:absolute;bottom:10px;left:10px;background:rgba(0, 0, 0, 0.8);padding:6px 10px;line-height:22px;color:#ffffff;text-transform:uppercase;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .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;-webkit-justify-content:space-between;justify-content:space-between;position:relative;padding-top:16px;gap:10px;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927 .lp-mls-compliance__mls-logo{margin-left:auto;}#section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#EFEFEF;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:94%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#EFEFEF;}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .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;
34-webkit-justify-content:space-between;justify-content:space-between;}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block .text-block{max-width:65%;}@media (max-width: 768px){#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block .text-block{max-width:100%;margin-bottom:24px;}}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block .lp-h2{margin-bottom:0;}@media (max-width: 768px){#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .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-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block .lp-h2{margin-bottom:24px;text-align:center;}}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .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-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block--Center-aligned .text-block{margin-left:auto;margin-right:auto;margin-bottom:24px;}@media (min-width: 769px){#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 .cta-block--Right-aligned .text-block{padding-right:20px;}}#section-855d0879-113a-4e34-8b5b-781d0b1f30d9 h2{color:#9C9E8F;}#section-9b699237-bd33-47e1-a3a6-3c086016df48{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.45));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/24e0d451-42e0-441f-af46-0b5139b7720f');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}@media (max-width: 767px){#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section{min-height:65vh!important;}}#section-9b699237-bd33-47e1-a3a6-3c086016df48 .lp-title-group{max-width:750px;}#section-9b699237-bd33-47e1-a3a6-3c086016df48.parallax-enabled{-webkit-clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);}#section-9b699237-bd33-47e1-a3a6-3c086016df48.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-9b699237-bd33-47e1-a3a6-3c086016df48.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:780px;text-align:center;position:relative;z-index:2;}@media (max-width: 767px){#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section{min-height:100vh;}}#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section:before{content:'';position:absolute;bottom:0;left:0;height:50%;width:100%;pointer-events:none;z-index:3;-webkit-transform:translateZ(1px);-moz-transform:translateZ(1px);-ms-transform:translateZ(1px);transform:translateZ(1px);background:linear-gradient(180deg, rgba(0, 0, 0, 0) 0%,  var(--opacityColor) 100%);}#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-9b699237-bd33-47e1-a3a6-3c086016df48 .section .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}#section-9b699237-bd33-47e1-a3a6-3c086016df48 .lp-container{-webkit-transform:translateZ(1px);-moz-transform:translateZ(1px);-ms-transform:translateZ(1px);transform:translateZ(1px);}@media (min-width: 960px) and (orientation: landscape){#section-9b699237-bd33-47e1-a3a6-3c086016df48{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/24e0d451-42e
340-441f-af46-0b5139b7720f');}}@media (min-width: 1280px) and (orientation: landscape){#section-9b699237-bd33-47e1-a3a6-3c086016df48{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/24e0d451-42e0-441f-af46-0b5139b7720f');}}@media (min-width: 1920px) and (orientation: landscape){#section-9b699237-bd33-47e1-a3a6-3c086016df48{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/24e0d451-42e0-441f-af46-0b5139b7720f');}}@media (min-width: 2560px) and (orientation: landscape){#section-9b699237-bd33-47e1-a3a6-3c086016df48{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/24e0d451-42e0-441f-af46-0b5139b7720f');}}#section-843c4f7d-2270-4187-af56-23dd530aef1f{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FFF;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(2 / 4 * var(--global-section-padding));background-color:#FFF;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .lp-h3{color:#9C9E8F;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed{display:none;margin:50px 0 100px;}@media (max-width: 768px){#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed{margin:30px 0 60px;}}#section-843c4f7d-2270-4187-af56-23dd530aef1f .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-843c4f7d-2270-4187-af56-23dd530aef1f .feed h2,#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed h3{text-align:center;margin:20px 0 60px;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .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-843c4f7d-2270-4187-af56-23dd530aef1f .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-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding-bottom:62.5%;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item:nth-child(n+5){display:none;}}@media (max-width: 520px){#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-bottom:125%;}}#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item:hover{z-index:2;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item:nth-child(n+6){display:none;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .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-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item__img svg{display:none;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .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-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item__img:hover{height:104%;width:104%;margin-left:-2%;}}#section-843c4f7d-2270-4187-af56-23dd530aef1f .feed__content__item__img:hover svg{display:block;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .instagram-link{display:block;overflow:hidden;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .instagram-link,#section-843c4f7d-2270-4187-af56-23dd530aef1f .instagram-link:hover,#section-843c4f7d-2270-4187-af56-23dd530aef1f .instagram-link:visited{color:inherit;-webkit-text-decoration:none;text-decoration:none;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .instagram-username{overflow-wrap:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .media-type-icon{position:absolute;top:10px;right:10px;}#section-843c4f7d-2270-4187-af56-23dd530aef1f .has-data .feed{display:block;}#section-843c4f7d-2270-4187-af56-23dd530aef1f.has-data .feed,#section-843c4f7d-2270-4187-af56-23dd530aef1f#section-temp .feed{display:block;}#section-843c4f7d-2270-4187-af56-23dd530aef1f>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;}#modal-global-contact-us>.close{display:none;}#modal-global-contact-us .contact-form{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);width:100%;background:center no-repeat;-webkit-background-size:cover;background-size:cover;min-height:800px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;color:#000;-webkit-box-pack:space-around;-ms-flex-pack:space-around;
39-webkit-justify-content:space-around;justify-content:space-around;}#modal-global-contact-us .contact-form ::parent{-webkit-align-items:unset;-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset;}@media (max-width: 1024px){#modal-global-contact-us .contact-form{min-height:100vh;height:auto;display:block;}}#modal-global-contact-us .contact-form .input-container{width:100%;}#modal-global-contact-us .contact-form .input-container+.input-container{margin-top:8px;}#modal-global-contact-us .contact-form__container{z-index:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__container{padding:0;width:100%;display:block;}}#modal-global-contact-us .contact-form__close{position:absolute;right:5px;top:5px;z-index:10;background-color:transparent;border:none;width:40px;height:40px;cursor:pointer;opacity:0.2;}#modal-global-contact-us .contact-form__close.close{color:#000;}#modal-global-contact-us .contact-form__close:before,#modal-global-contact-us .contact-form__close:after{display:block;content:'';position:absolute;width:20px;height:2px;background-color:currentColor;left:50%;top:50%;}@media (max-width: 768px){#modal-global-contact-us .contact-form__close{top:1vh;}}@media (min-width: 768px) and (max-width: 810px),(min-height: 1024px) and (max-height: 1080px){#modal-global-contact-us .contact-form__close{top:3vh;}}#modal-global-contact-us .contact-form__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form__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__form{width:100%;max-width:637px;text-align:center;min-height:463px;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;position:relative;margin-right:110px;padding:64px 65px;margin-bottom:0;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__form{width:100%;max-width:100%;margin-right:0;padding:44px 24px;}}#modal-global-contact-us .contact-form__details{width:100%;max-width:510px;margin-top:66px;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__details{width:100%;max-width:100%;margin-top:48px;padding-left:24px;padding-right:24px;}}#modal-global-contact-us .contact-form__input{width:100%;}#modal-global-contact-us .contact-form__submit{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:16px;width:100%;padding-top:5px;padding-bottom:5px;height:50px;}#modal-global-contact-us .contact-form .thank-you{display:none;padding:24px;}#modal-global-contact-us .contact-form .success .thank-you{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;}
39#modal-global-contact-us .contact-form .success .form-group{display:none;}#modal-global-contact-us .contact-form .success .image{display:none;}#modal-global-contact-us .contact-form__title1{margin-bottom:16px;text-align:left;}#modal-global-contact-us .contact-form__title2{margin-bottom:16px;}#modal-global-contact-us .contact-form__description{margin-bottom:48px;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__description{margin-bottom:32px;}}#modal-global-contact-us .form-inputs-wrap.center-aligned{margin-left:auto;margin-right:auto;}#modal-global-contact-us .company{padding-top:24px;padding-bottom:48px;border-top:1px solid rgba(0, 0, 0, 0.5);color:rgba(0, 0, 0, 0.5);}@media (max-width: 1024px){#modal-global-contact-us .company{padding-bottom:32px;}}#modal-global-contact-us .company_title{margin-bottom:0;}#modal-global-contact-us .company .lp-a a{white-space:nowrap;}#modal-global-contact-us .company p{margin-bottom:0;}#modal-global-contact-us .socials{margin:-8px;margin-bottom:20px;}@media (max-width: 767px){#modal-global-contact-us .socials{margin-left:auto;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin-right:auto;max-width:100%;}}#modal-global-contact-us .socials li{margin:0;padding:8px;}#modal-global-contact-us .contact-form__submit{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#modal-global-contact-us .sync-icon{display:none;margin-right:10px;-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;}#modal-global-contact-us .success-icon{display:none;margin-right:10px;-webkit-transition:0s;transition:0s;visibility:visible;}#modal-global-contact-us .loading{pointer-events:none;}#modal-global-contact-us .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}#modal-global-contact-us .success-text{display:none;}#modal-global-contact-us .success{pointer-events:none;}#modal-global-contact-us .success .success-icon{display:block;}#modal-global-contact-us .success .success-text{display:inline;}nav{-webkit-transition:0.2s all;transition:0.2s all;}nav nav{-webkit-transition:0.2s all;transition:0.2s all;}nav .header{padding-top:30px;padding-bottom:30px;}nav .header__right{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-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}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:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}nav .header__btn-contact{border:1px solid;border-radius:3px;padding:18px 40px;-webkit-transition:0.2s all;transition:0.2s all;text-transform:none;margin-left:40px;font-size:18px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}@media (hover: hover) and (pointer: fine){nav .header__btn-contact:hover{background-color:var(--themeBlack);color:var(--themeWhite);}}@media (max-width: 768px){nav .header__btn-contact{padding:10px;margin-left:5px;margin-right:12px;}}nav .header__hamburger{background-color:transparent;cursor:pointer;outline:none;position:relative;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-left:41px;width:60px;height:60px;border:none;}@media (max-width: 768px){nav .header__hamburger{width:40px;height:40px;margin-left:15px;}}@media (hover: hover) and (pointer: fine){nav .header__hamburger:hover .line--top{width:12px;x:30px;}nav .header__hamburger:hover .line--bottom{width:24px;x:18px;}}nav .header__hamburger svg{width:100%;height:100%;}
39nav .header__hamburger circle{fill:var(--themeBeige);}nav .header__hamburger .line{fill:var(--themeWhite);height:2px;width:24px;x:18px;y:26px;-webkit-transition:0.2s all;transition:0.2s all;}nav .header__hamburger .line--bottom{width:12px;x:30px;y:32px;}nav .sub-nav{position:absolute;left:0;top:100%;padding:0;max-height:0;z-index:5;margin:0;list-style-type:none;overflow:hidden;visibility:hidden;-webkit-transition:visibility 0s linear 0.3s,max-height 0.3s ease;transition:visibility 0s linear 0.3s,max-height 0.3s ease;}nav .sub-nav.visible{-webkit-transition:visibility 0s linear 0s,max-height 0.3s ease-in;transition:visibility 0s linear 0s,max-height 0.3s ease-in;max-height:100vh;visibility:visible;}nav .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .sub-nav__link{display:block;color:var(--themeWhite);font-size:14px;font-weight:600;padding:10px 18px;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:178px;min-width:100%;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;background-color:var(--themeBlack);}@media (hover: hover) and (pointer: fine){nav .sub-nav__link:hover{color:var(--themeWhite);background-color:rgba(75, 75, 75, 1);}}nav .logo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;outline:none;max-width:234px;height:60px;}@media (max-width: 768px){nav .logo{width:145px;}}nav .logo__img{object-fit:contain;object-position:left;max-width:100%;max-height:100%;}nav .logo__img.light{display:none;}nav .logo__img.dark{display:block;}nav .scroll .header{padding-top:22px;padding-bottom:22px;}@media (hover: hover) and (pointer: fine){nav .scroll .header__btn-contact:hover{background-color:var(--themeWhite);color:var(--themeBlack);}}nav .scroll .search__btn{color:var(--themeWhite);}nav .scroll .logo__img.dark{display:none;}nav .scroll .logo__img.light{display:block;}nav .header.theme-light{color:#fff;}nav .header.theme-light .lp-btn.lp-btn--dark.lp-btn--outline{color:var(--themeWhite, #fff);border-color:var(--themeWhite, #fff);}nav .header.theme-light .lp-btn.lp-btn--dark.lp-btn--outline:hover{color:var(--themeBlack, #fff);border-color:var(--themeBlack, #fff);background-color:var(--themeWhite, #fff);}nav .header.theme-light .logo__img.dark{display:none;}nav .header.theme-light .logo__img.light{display:block;}nav.scroll .header{padding-top:22px;padding-bottom:22px;}nav.scroll .lp-btn.lp-btn--dark.lp-btn--outline{color:var(--themeWhite, #fff);border-color:var(--themeWhite, #fff);}nav.scroll .lp-btn.lp-btn--dark.lp-btn--outline:hover{color:var(--themeBlack, #fff);border-color:var(--themeBlack, #fff);background-color:var(--themeWhite, #fff);}nav.scroll .search__btn{color:var(--themeWhite);}nav.scroll .logo__img.dark{display:none;}nav.scroll .logo__img.light{display:block;}nav .navigation{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;list-style-type:none;margin:0;padding:0;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-flex:1;-ms-flex:1;flex:1;}@media (max-width: 1024px){nav .navigation{display:none;}}nav .navigation__item{padding:0;margin:0;visibility:hidden;height:0;}nav .navigation__item+.navigation__item{padding-left:20px;}@media (hover: hover) and (pointer: fine){nav .navigation .navigation__item:not(.sub-nav-container) .navigation__link:after{content:'';position:absolute;display:block;width:0;height:2px;-webkit-transition:width .3s linear;transition:width .3s linear;background:var(--themeBeige);bottom:0;left:0;}nav .navigation .navigation__item:not(.sub-nav-container) .navigation__link:hover:after{width:100%;}}nav .navigation__link{display:block;position:relative;font-size:18px;line-height:18px;background-color:transparent;border:none;border-bottom:2px solid transparent;border-top:2px solid transparent;cursor:pointer;padding:21px 10px;max-width:180px;z-index:2;outline:none;color:inherit;-webkit-text-decoration:none;text-decoration:none;white-space:nowrap;-webkit-font-smoothing:unset;-webkit-transition:color .3s linear;transition:color .3s linear;}nav .navigation__link:focus,nav .navigation__link:active{outline:none;}nav .sub-nav-container{position:relative;padding-right:21px;}nav .sub-nav-container:after{display:block;content:'';width:8px;height:8px;border-right:2px solid;border-bottom:2px solid;position:absolute;right:3px;top:50%;-webkit-transform:translate(0, calc(-50% - 3px)) rotate(45deg);-moz-transform:translate(0, calc(-50% - 3px)) rotate(45deg);-ms-transform:translate(0, calc(-50% - 3px)) rotate(45deg);transform:translate(0, calc(-50% - 3px)) rotate(45deg);-webkit-transition:-webkit-transform 0.2s linear;transition:transform 0.2s linear;}nav .sub-nav-container.active:after{-webkit-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);-moz-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);-ms-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);transform:translate(0, calc(-50% + 3px)) rotate(-135deg);}nav .search{position:relative;}nav .search__btn{border:none;background-color:transparent;margin-left:20px;cursor:pointer;display:block;color:inherit;}@media (max-width: 768px){nav .search__btn{margin-left:0;}}nav .search__btn svg{display:block;}@media (max-width: 768px){nav .hide-mobile{display:none;}}body>div.sidemenu{background-color:rgba(239, 239, 239, 1);color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(239, 239, 239, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:94%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.1);width:100%;display:block;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:.1s all ease-out 2s;transition:.1s all ease-out 2s;background:transparent;}body>div.sidemenu .sidemenu__container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu.visible{-webkit-transition:0s all;transition:0s all;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);z-index:900;background-color:transparent;}body>div.sidemenu.visible .sidemenu__img{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000);transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000);}body>div.sidemenu.visible .sidemenu__wrapper{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000);transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000);}body>div.sidemenu.visible .sidemenu__toggle{pointer-events:auto;}body>div.sidemenu .sidemenu__img{background:center no-repeat;-webkit-background-size:cover;background-size:cover;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000) .5s;transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000) .5s;}@media (max-width: 768px){body>div.sidemenu .sidemenu__img{display:none;}}body>div.sidemenu .sidemenu__wrapper{background-color:var(--bgColor, #211F1F);-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;height:100vh;padding:80px 0 66px 0;overflow-y:auto;max-width:700px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000) .5s;transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000) .5s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar{width:4px;background-color:transparent;}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar-thumb{background-color:var(--fontColor, #ffffff);}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 4px rgba(0,0,0,0.3);background-color:var(--bgColor, #211F1F);}@media (max-width: 768px){body>div.sidemenu .sidemenu__wrapper{padding:40px 0 66px 0;}}body>div.sidemenu .sidemenu__toggle{height:48px;margin-right:auto;margin-left:70px;position:relative;border:none;background-color:transparent;outline:none;color:var(--fontColor, #ffffff);padding-right:50px;font-family:inherit;pointer-events:none;cursor:pointer;}@media (max-width: 768px){body>div.sidemenu .sidemenu__toggle{margin-left:20px;}}body>div.sidemenu .sidemenu__toggle--right{margin-left:auto;margin-right:70px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__toggle--right{margin-right:20px;}}body>div.sidemenu .sidemenu__toggle:focus{outline:none;}body>div.sidemenu .sidemenu__toggle:before,body>div.sidemenu .sidemenu__toggle:after{content:'';display:block;position:absolute;width:20px;height:2px;background-color:currentColor;right:0;top:50%;}body>div.sidemenu .sidemenu__toggle: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__toggle:after{-webkit-transform:translate(-50%, -50%) rotate(-225deg);-moz-transform:translate(-50%, -50%) rotate(-225deg);-ms-transform:translate(-50%, -50%) rotate(-225deg);transform:translate(-50%, -50%) rotate(-225deg);}body>div.sidemenu .sidemenu__nav{margin-bottom:auto;padding:0;}body>div.sidemenu .sidemenu__socials{margin-left:auto;padding-top:30px;padding-right:70px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__socials{padding-right:20px;padding-left:20px;}}body>div.sidemenu .sidemenu__socials .lp-socials li{margin-bottom:14px;}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:93px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__header{padding-bottom:59px;}}body>div.sidemenu .sidemenu__logo{display:none;}@media (max-width: 768px){body>div.sidemenu .sidemenu__logo{display:block;}}body>div.sidemenu .sidemenu__logo-img{display:block;max-height:50px;}body>div.sidemenu .navigation{list-style-type:none;margin:0;padding:0;max-width:100%;}body>div.sidemenu .navigation__item{border-bottom:1px solid var(--colorLighter1);margin:0;overflow:hidden;}body>div.sidemenu .navigation__link{padding:12px 12px 12px 70px;display:block;font-size:22px;font-weight:400;line-height:48px;color:var(--fontColor, #ffffff);-webkit-transition:0.2s all;transition:0.2s all;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;font-family:var(--global-primary-font-family);-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);opacity:0;position:relative;transition-property:transform,opacity,color;transition-duration:0.55s,0.55s,0.3s;transition-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1),ease-in-out,ease-in-out;}@media(max-width: 768px){body>div.sidemenu .navigation__link{padding-left:20px;padding-right:20px;padding-bottom:16px;}}@media (hover: hover) and (pointer: fine){body>div.sidemenu .navigation__link:hover{color:var(--fontColor, #ffffff);}}body>div.sidemenu .sub-nav{list-style-type:none;display:none;margin:0;padding:10px 0 30px 85px;}@media(max-width: 768px){body>div.sidemenu .sub-nav{padding-bottom:16px;padding-left:35px;}}body>div.sidemenu .sub-nav__item{padding-bottom:10px;margin:0;opacity:0;}body>div.sidemenu .sub-nav__item.fadeInUp{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:var(--delay);animation-delay:var(--delay);}body>div.sidemenu .sub-nav__link{font-size:16px;font-weight:400;cursor:pointer;color:var(--fontColor, #ffffff);font-family:var(--global-secondary-font-family);-webkit-text-decoration:none;text-decoration:none;}body>div.sidemenu .sub-nav.visible{display:block;}body>div.sidemenu .lp-socials__link{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px);position:relative;transition-property:transform,opacity,color;transition-duration:0.55s,0.55s,0.3s;transition-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1),ease-in-out,ease-in-out;}body>div.sidemenu body>div.sidemenu{width:100%;}body>div.sidemenu body>div.sidemenu.visible{-webkit-transition:0s all;transition:0s all;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);z-index:900;background-color:transparent;}body>div.sidemenu body>div.sidemenu.visible .sidemenu__img{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000);transition:.7s cubic-bezier(0.645,  0.045, 0.355, 1.000);}body>div.sidemenu body>div.sidemenu.visible .sidemenu__wrapper{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000);transition:1s cubic-bezier(0.645,  0.045, 0.355, 1.000);}body>div.sidemenu body>div.sidemenu.visible .sidemenu__toggle{pointer-events:auto;}body>div.sidemenu .fade-in{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}body>div.sidemenu .arrow{vertical-align:middle;margin-bottom:10px;-webkit-transition:.4s;transition:.4s;}body>div.sidemenu .arrow.active{-webkit-transform:rotate(-180deg);-moz-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.4s;transition:.4s;}footer{background-color:rgba(156, 158, 143, 1);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:rgba(156, 158, 143, 1);--bgColor_H:68;--bgColor_S:7%;--bgColor_L:59%;--bgColor_A:1;--bgColor_darkenDir:-1;}footer .lp-input--dark{background-color:#fff;}footer .site-footer__subscribe{padding-top:92px;padding-bottom:92px;background-color:rgba(0,0,0,0.1);}@media (max-width: 768px){footer .site-footer__subscribe{padding-top:64px;padding-bottom:64px;}}footer .site-footer__logo-bar{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;padding-bottom:64px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (max-width: 768px){footer .site-footer__logo-bar{padding-bottom:24px;}}footer .site-footer__logo-container img{max-width:268px;max-height:56px;object-fit:contain;display:block;object-position:left top;}footer .site-footer__logo-container+.site-footer__logo-container{margin-left:50px;}@media (max-width: 768px){footer .site-footer__logo-container+.site-footer__logo-container{margin-left:0;margin-top:16px;width:100%;}}footer .site-footer__info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}@media (max-width: 768px){footer .site-footer__info{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .site-footer__info .lp-a a{white-space:nowrap;}
39footer .site-footer__col{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-right:32px;}footer .site-footer__col-title{width:100%;margin-bottom:16px;min-height:29px;}footer .site-footer__col-content{opacity:0.5;padding-bottom:16px;}footer .site-footer__col-content p{margin-bottom:0;}footer .site-footer__col-content a{color:inherit;}footer .site-footer__col-content+.site-footer__col-content{padding-left:40px;}@media (max-width: 768px){footer .site-footer__col-content+.site-footer__col-content{padding-left:0;}}footer .site-footer__navigation-wrap{width:100%;padding-top:32px;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;}@media (max-width: 992px){footer .site-footer__navigation-wrap{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:18px;}}@media (max-width: 768px){footer .site-footer__navigation-wrap{padding-top:24px;padding-bottom:0;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}footer .site-footer__socials{margin-left:auto;}@media (max-width: 992px){footer .site-footer__socials{margin-left:0;}}@media (max-width: 768px){footer .site-footer__socials{margin-right:auto;}}footer .site-footer__socials li{margin-bottom:0;}footer .site-footer__disclaimer{padding-top:64px;padding-bottom:32px;position:relative;opacity:0.5;}@media (max-width: 768px){footer .site-footer__disclaimer{padding-top:18px;padding-bottom:25px;}}footer .site-footer__disclaimer:after{content:'';display:block;position:absolute;left:0;bottom:0;right:0;height:1px;background-color:currentColor;opacity:0.2;}footer .site-footer__copy{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-top:32px;font-size:18px;}@media (max-width: 768px){footer .site-footer__copy{padding-top:15px;-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 .site-footer__copy>div:first-child{margin-bottom:15px;}}footer .site-footer__copy a{color:inherit;}footer .site-footer__copy-lp span{margin-right:5px;}footer .site-footer__copy-lp img{margin-right:30px;}@media (max-width: 768px){footer .site-footer__copy-lp img{margin-right:0;margin-bottom:15px;}}@media (min-width: 769px){footer .site-footer__copy-lp{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;}}footer .site-footer__bottom{padding-top:96px;padding-bottom:96px;}@media (max-width: 768px){footer .site-footer__bottom{padding-top:64px;padding-bottom:64px;}}footer .footer-contact{margin-bottom:13px;}footer .footer-contact p{margin-bottom:0;opacity:.7;}footer .footer-contact ul{list-style:none;padding-left:0;margin:0;}footer .footer-subscribe{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;}@media (max-width: 768px){footer .footer-subscribe{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .footer-subscribe__title-wrap{padding-right:50px;}@media (max-width: 768px){footer .footer-subscribe__title-wrap{padding-right:0;padding-bottom:32px;}}footer .footer-subscribe__title{margin-bottom:8px;}footer .footer-subscribe__sub-title{margin-bottom:0;}footer .footer-subscribe__form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;max-width:330px;margin-bottom:0;position:relative;}footer .footer-subscribe__submit{margin-top:16px;}footer .footer-subscribe__success-msg{position:absolute;top:100%;width:100%;text-align:center;opacity:.7;padding-top:10px;}footer .footer-navigation{list-style:none;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;padding:0 20px 0 0;margin:0 -30px;}@media (max-width: 992px){footer .footer-navigation{margin-bottom:36px;}}@media (max-width: 768px){footer .footer-navigation{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 0 36px;}}footer .footer-navigation__item{margin:0 30px;}@media (max-width: 768px){footer .footer-navigation__item{margin:0 0 10px;}}
39footer .footer-navigation__link{color:inherit;-webkit-text-decoration:none;text-decoration:none;font-size:14px;line-height:14px;background-color:transparent;border:none;font-family:inherit;cursor:pointer;padding-left:0;padding-right:0;-webkit-transition:0.2s all;transition:0.2s all;}@media (hover: hover) and (pointer: fine){footer .footer-navigation__link:hover{color:var(--themeBeige);}}footer .lp-socials li{margin-bottom:14px;}footer .sync-icon{display:none;margin-right:10px;-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;}footer .success-icon{display:none;margin-right:10px;-webkit-transition:0s;transition:0s;visibility:visible;}footer .loading{pointer-events:none;}footer .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}footer .success .success-icon{display:block;}footer .lp-footer-disclaimers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:20px;margin-top:32px;padding-top:32px;}@media (max-width: 768px){footer .lp-footer-disclaimers{padding-top:15px;margin-top:15px;}}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">.pagination-style-1 li a{color:rgba(156, 158, 143, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(33, 31, 31, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(156, 158, 143, 1)!important;border-color:rgba(156, 158, 143, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(156, 158, 143, 1)!important;border-color:rgba(156, 158, 143, 1)!important;}.button-style-1{color:rgba(156, 158, 143, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(156, 158, 143, 1)!important;}.button-style-1:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(156, 158, 143, 1)!important;border-color:rgba(156, 158, 143, 1)!important;}.social_icons-style-1 a{border-color:rgba(156, 158, 143, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(156, 158, 143, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(156, 158, 143, 1)!important;background-color:rgba(156, 158, 143, 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(156, 158, 143, 1)!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(156, 158, 143, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(206, 206, 206, 1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 0)!important;}.pagination-style-2 li a:hover{color:rgba(156, 158, 143, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li.active a{color:rgba(156, 158, 143, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!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(156, 158, 143, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}
41.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.hyperlink-style-3{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-3:hover{color:rgba(156, 158, 143, 1)!important;}.hyperlink-style-4{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-4:hover{color:rgba(206, 206, 206, 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="be227485-eaf0-455b-aee0-a0e351474420"></script>
44
45
46
47        
47<script>
48            (function utmParse() {
49                const url = new URL(window.location.href);
50                if (url.search) {
51                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
52                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
53                        if (matched) {
54                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
55                        }
56                        return acc;
57                    }, {});
58                    if (Object.keys(utm).length) {
59                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
60                    } else {
61                        // Remove old utm vars
62                        window.localStorage.removeItem('utm_vars');
63                    }
64                }
65                // Set referrer in local storage
66                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
67                if (!window.localStorage.getItem('referrer')) {
68                    // Capture the Referrer URL
69                    const referrer = document.referrer;
70                    if (referrer) {
71                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
72                        const currentDomain = window.location.hostname;
73                        const referrerDomain = new URL(referrer).hostname;
74
75                        if (referrerDomain !== currentDomain) {
76                            // Store it in localStorage
77                            localStorage.setItem('referrer', referrer);
78                        }
79                    }
80                }
81            })();
82        </script>
82
83        <!-- Bing Webmaster Tools Verification -->
84<script>
85        // Check if on the homepage before the body loads
86        if (window.location.pathname === '/' || window.location.pathname === '/index.html') {
87        document.write('<meta name="msvalidate.01" content="9444E455BC3D007F3F70BCA3F6F54DD2" />');
88        }
89</script>
89
90    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
91</head>
92<body>
93    <div id="google_translate_element" style="display: none"></div>
94
95        <nav id="global-navbar" data-el-id="b395957e-29e6-4bd5-99ee-352fbee7732a">
96            <div class="header theme-auto">
97  <div class="lp-container header__container">
98    <div class="header__logo">
99      <a href="/" class="logo">
100        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1a7319f0-bc14-4910-8be8-98cc038c9789" 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/1a7319f0-bc14-4910-8be8-98cc038c9789 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1a7319f0-bc14-4910-8be8-98cc038c9789 960w" sizes="500px" class="logo__img dark" alt="Allison Ziefert Real Estate Group">
101        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/414a1dad-2db4-45d6-aed8-def07b029be3" 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/414a1dad-2db4-45d6-aed8-def07b029be3 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/414a1dad-2db4-45d6-aed8-def07b029be3 960w" sizes="500px" class="logo__img light" alt="Allison Ziefert Real Estate Group">
102      </a>
103    </div>
104
105    <div class="header__right"> 
106      <ul class="navigation">
107        <li class="navigation__item sub-nav-container">
108          <a href="#" class="navigation__link">Properties</a>
109          <ul class="sub-nav">
110            <li class="sub-nav__item"><a  href="/properties/sale" class="sub-nav__link">Featured Properties</a></li>
111            <li class="sub-nav__item"><a  href="/properties/sold" class="sub-nav__link">Past Transactions</a></li>
112          </ul> 
113        </li>
114        <li class="navigation__item">
115          <a  href="/home-search/listings" class="navigation__link">Home Search</a>
116        </li>
117        <li class="navigation__item">
118          <a  href="/home-valuation" class="navigation__link">Home Valuation</a>
119        </li>
120        <li class="navigation__item">
121          <a  href="/communities" class="navigation__link">Communities</a>
122        </li>
123        <li class="navigation__item">
124          <a data-type="CONTACT_US" class="navigation__link">Contact Us</a>
125        </li>
126
127      </ul>
128      
129      
130      
131
132
133      <button class="hamburger-component header__hamburger">
134        <svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
135          <circle cx="30" cy="30" r="30" />
136          <rect class="line line--top" x="18" y="26" width="24" height="2" />
137          <rect class="line line--bottom" x="30" y="32" width="12" height="2" />
138        </svg>
139      </button>
140    </div>
141
142  </div>
143</div>
144        </nav>
145        <div id="global-sidemenu" class="sidemenu" data-el-id="1575f740-92ae-4292-919d-936adffb0f46">
146            <div class="sidemenu__container">
147  
148
149  <div class="sidemenu__img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85/https://media-production.lp-cdn.com/media/129701c0-e121-454e-9084-abcb96fcdbf9');">
150  </div>
151  
152  <div class="sidemenu__wrapper">
153    <div class="sidemenu__header">
154      <button class="sidemenu__toggle toggle sidemenu__toggle--right">Close Menu</button>
155    </div>
156    
157    <div class="sidemenu__nav">
158      <ul class="navigation">
159        <li class="navigation__item" >
160          <a  href="/" class="navigation__link" >Home</a>
161        </li>
162        <li class="navigation__item" >
163          <a  href="/team" class="navigation__link" >Meet the Team</a>
164        </li>
165        <li class="navigation__item sub-nav-container" data-wow-delay="2.2s">
166          <a href="#" class="navigation__link">
167          Properties
168            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
169              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
170            </svg>
171          </a>
172          <ul class="sub-nav">
173            <li class="sub-nav__item"><a  href="/properties/sale" class="sub-nav__link feature">Featured Properties</a></li>
174            <li class="sub-nav__item"><a  href="/properties/sold" class="sub-nav__link feature">Past Transactions</a></li>
175          </ul>
176    
177        </li>
178        <li class="navigation__item" >
179          <a  href="/home-search/listings" class="navigation__link" >Home Search</a>
180        </li>
181        <li class="navigation__item" >
182          <a  href="/home-valuation" class="navigation__link" >Home Valuation</a>
183        </li>
184        <li class="navigation__item" >
185          <a  href="/communities" class="navigation__link" >Communities</a>
186        </li>
187        <li class="navigation__item" >
188          <a  href="/testimonials" class="navigation__link" >Testimonials</a>
189        </li>
190        <li class="navigation__item sub-nav-container" data-wow-delay="2.7s">
191          <a href="#" class="navigation__link">
192          Resources
193            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
194              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
195            </svg>
196          </a>
197          <ul class="sub-nav">
198            <li class="sub-nav__item"><a  href="/buyers-guide" class="sub-nav__link feature">Buyer&#x27;s Guide</a></li>
199            <li class="sub-nav__item"><a  href="/sellers-guide" class="sub-nav__link feature">Seller&#x27;s Guide</a></li>
200            <li class="sub-nav__item"><a  href="/mortgage-calculator" class="sub-nav__link feature">Mortgage Calculator</a></li>
201          </ul>
202    
203        </li>
204        <li class="navigation__item" >
205          <a  href="/market-reports" class="navigation__link" >Market Reports</a>
206        </li>
207        <li class="navigation__item" >
208          <a  href="/video" class="navigation__link" >Video Gallery</a>
209        </li>
210        <li class="navigation__item" >
211          <a  href="/press" class="navigation__link" >Press & Media</a>
212        </li>
213        <li class="navigation__item" >
214          <a  href="/blog" class="navigation__link" >Blog</a>
215        </li>
216        <li class="navigation__item" >
217          <a  href="/contact-us" class="navigation__link" >Contact Us</a>
218        </li>
219        <li class="navigation__item" >
220          <a  href="/home-search/auth/sign_in" class="navigation__link" >My Search Portal</a>
221        </li>
222      </ul>
223    </div>
224  
225    <div class="sidemenu__socials">
226          <ul class="lp-socials social_icons-style-1 sidemenu-social-links">
227          
228                  <li>
229                    <a
230                      href="https://www.instagram.com/njfromatoz/"
231                      class="lp-socials__link socials__item"
232                      data-wow-delay="0s"
233                      target="_blank"
234                      aria-label="INSTAGRAM"
235                    >
236                        <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
237                    </a>
238                  </li>
239                  <li>
240                    <a
241                      href="https://www.linkedin.com/in/allisonziefert/"
242                      class="lp-socials__link socials__item"
243                      data-wow-delay="0.1s"
244                      target="_blank"
245                      aria-label="LINKEDIN"
246                    >
247                        <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
248                    </a>
249                  </li>
250                  <li>
251                    <a
252                      href="https://www.youtube.com/@njfromatoz/featured"
253                      class="lp-socials__link socials__item"
254                      data-wow-delay="0.2s"
255                      target="_blank"
256                      aria-label="YOUTUBE"
257                    >
258                        <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
259                    </a>
260                  </li>
261                  <li>
262                    <a
263                      href="https://www.google.com/search?q&#x3D;Allison+Ziefert+realtor&amp;rlz&#x3D;1C1VDKB_enPH1045PH1045&amp;oq&#x3D;Allison+Ziefert+realtor&amp;gs_lcrp&#x3D;EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg9MgYIAhBFGDzSAQk0NTkyajBqMTWoAgiwAgHxBe38LS_e99po&amp;sourceid&#x3D;chrome&amp;ie&#x3D;UTF-8#lrd&#x3D;0x89c3ac44e59ca929:0xe5947d912e97eba9,1,,,,"
264                      class="lp-socials__link socials__item"
265                      data-wow-delay="0.3s"
266                      target="_blank"
267                      aria-label="GOOGLE"
268                    >
269                        <span class="lp-i lp-i--google" aria-hidden="true"></span>
270                    </a>
271                  </li>
272                  <li>
273                    <a
274                      href="https://www.zillow.com/profile/Allison%20Ziefert"
275                      class="lp-socials__link socials__item"
276                      data-wow-delay="0.4s"
277                      target="_blank"
278                      aria-label="ZILLOW"
279                    >
280                        <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
281                    </a>
282                  </li>
283                  <li>
284                    <a
285                      href="https://www.compass.com/agents/allison-ziefert-real-estate-group/"
286                      class="lp-socials__link socials__item"
287                      data-wow-delay="0.5s"
288                      target="_blank"
289                      aria-label="BROKERAGE"
290                    >
291                      <svg width="20" height="20" viewBox="0 0 60.14 60"><path d="M29.86 0a30 30 0 00.28 60 30.03 30.03 0 0030-30A30 30 0 0029.86 0zm.28 8a22.03 22.03 0 0122 22 22 22 0 11-22-22zm7.18 9.17l-20 20 5.65 5.66 20-20z" /></svg>
292                    </a>
293                  </li>
294            </ul>    </div>
295  </div>
296</div>
297
298        </div>
299        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51">
300            <div class="btn-holder" 
301style="
302--backgroundColor: rgba(239, 239, 239, 1); 
303--textColor: rgba(0, 0, 0, 1); 
304--pillTextColor: rgba(255, 255, 255, 1); 
305--pillBackgroundColor: rgba(156, 158, 143, 1);">
306
307    <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Contact Us</button>
308</div>
309
310
311<div class="pop-up" style="--backgroundColor: rgba(239, 239, 239, 1); --textColor: rgba(0, 0, 0, 1);">
312  <div class="lp-container">
313    <form data-type="contact-form" class="contact-form">
314      <div class="contact-form__container">
315          <h3 class="lp-h3">Leave a Message</h3>
316      
317        <div class="contact-form__content">
318          <div class="contact-form__inputs-container">
319            <div class="contact-form__item">
320              <input
321                id="__FullName"
322                type="text" name="name"
323                class="lp-input lp-input--light"
324                required
325                placeholder="Full Name">
326            </div>
327            <div class="contact-form__item">
328              <input
329                id="__Email"
330                type="email" name="email"
331                class="lp-input js-email-input lp-input--light"
332                required
333                placeholder="Email">
334            </div>
335            <div class="contact-form__item"> 
336              <input
337                class="lp-input lp-input--light"
338                type="tel" 
339                placeholder="Phone"
340                id="__Phone"
341                name="phone"
342                required>
343            </div>
344
345            <div class="contact-form__item input-group-select">
346              <select name="interest" id="-field-interest" placeholder="Interest"
347                class="lp-input dropdown-select js-select js-form-element lp-input--light" required>
348                <option value="" disabled selected data-label="Interest">Interested in...</option>
349                <option value="Selling &amp; Buying">Selling &amp; Buying</option>
350                <option value="Selling">Selling</option>
351                <option value="Buying">Buying</option>
352                <option value="Renting">Renting</option>
353                <option value="Other">Other</option>
354              </select>
355              <label for="-field-interest" class="lp-label sr-only">Interest</label>
356            </div>
357
358            <div class="contact-form__item">
359              <textarea
360                name="message"
361                rows="4"
362                id="__Message"
363                class="lp-input lp-input--light"
364                placeholder="Message"
365                required></textarea>
366            </div>
367            <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
368  <label class='lp-tcr-content'>
369    <span class='lp-tcr-checkbox'>
370      <input
371        type='checkbox'
372        id='-termsAccepted'
373        name='termsAccepted'
374        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
375        oninput="this.setCustomValidity('')"
376        required
377      /></span>
378    <span class='lp-tcr-message'>
379      
380        I agree to be contacted by
381        Allison Ziefert Real Estate Group
382        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
383        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
384        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
385    </span>
386  </label>
387
388</div>
389            <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit  contact-form__item">Submit</button>
390            
391            <div class="lp-h-pot">
392              <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
393            </div>
394            
395            <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
396            <input type="hidden" name="button_text" value="Contact Us">
397          </div>
398        </div>
399      </div>
400
401
402      <div class="success-block">
403          <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3>
404
405      </div>
406    </form>
407
408    <button type="button" class="close-btn lp-ico lp-ico-close"></button>
409
410    
411  </div>
412</div>
413
414
415        </div>
416        <section  class="image-section is-font-color-light is-background-color-dark" id="section-08c11126-4ca7-4355-a714-186817126398" data-el-id="bce33bae-7388-4ccc-abff-e0ce18ec46d2">
417    
418<script>
419  (function(){
420    const sectionId = 'section-08c11126-4ca7-4355-a714-186817126398'
421    const section = document.querySelector(`#${sectionId}`);
422    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');
423
424    if('true' === 'true') {
425      section.classList.add('parallax-enabled');
426      section.style.setProperty('--sectionBackground', sectionBg);
427      section.style.setProperty('background', 'transparent');
428    }
429  })()
430</script>
430
431
432
433<div class="opening-with-search height-class-600px parallax">
434  <div class="center-block">
435    <button class='lp-play video-section__play-button js-play-btn'></button>
436    <div class="container lp-container">
437
438      <div class="lp-title-group">
439        
440
441            <h1 class="h1 lp-h1 opening-title lp-pre-line" style="color: rgba(255, 255, 255, 1)">Featured Properties</h1>
442
443        
444      </div>
445      
446      <div class="buttons"></div>
447      
448    </div>
449  </div>
450  <div class="bottom-spacer"></div>
451</div>
452</section>
453<section id="section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="4466f752-1b35-475b-b356-3b1a744bc6ee">
454<script type="text/x-handlebars-template" class="item pagination-script">  <a class="item" href="{{#if fromMLS}}/home-search/listings/{{id}}{{else}}/properties/{{slug}}{{/if}}">
455		<figure>
456		  {{#if media.[0]}} 
457		  {{{mediaImage media.[0] sizes="(min-width: 769px) 640px,  100vw" class="img" alt=name}}}
458			{{/if}}
459			
460		  {{#if status}}
461			  <p class="bf1 label">{{formatPropertyStatus status false (hbFormatDate soldDate)}}</p>
462			{{/if}}
463        {{#if openHouseHours}}
464          <div class="open-house label-house bf1">Open House: {{openHouseHours}}</div>
465        {{/if}}
466		</figure>
467		<h5 class="lp-h5">
468		  {{formatPropertyPrice this}}
469		  </h5>
470		<p class="bf1">
471      {{#if privateAddress}}
472      {{name}}<br/>
473      Private Address
474      {{else}}
475      {{#if fullAddress}}
476      {{fullAddress}}
477      {{/if}}
478      {{/if}}
479		</p> 
480	  <ul class="bf2"> 
481      {{#if (or bedroomCount bathCount livingSpaceSize)}}
482      {{#if bedroomCount}}
483      <li>{{bedroomCount}} Bed{{#numCompare bedroomCount 1 ">"}}s{{/numCompare}}</li>
484      {{/if}}
485      {{#if bathCount}}
486      <li>{{bathCount}} Bath{{#numCompare bathCount 1 ">"}}s{{/numCompare}}</li>
487      {{/if}}
488      {{#if livingSpaceSize}}
489      <li>{{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}</li>
490      {{/if}}
491      {{/if}}
492    </ul>
493	</a> 
494</script>
494
495<div class="section lp-vertical-paddings"> 
496  <div class="lp-container">
497    
498    <div class="collection collection--3 data-container">
499        <a class="item" href="/properties/412-N-Park-Avenue">
500      		<figure>
501      		  <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/e68928a3-e8be-4e2f-8fe6-bab2e05795c4" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/e68928a3-e8be-4e2f-8fe6-bab2e05795c4 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/e68928a3-e8be-4e2f-8fe6-bab2e05795c4 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/e68928a3-e8be-4e2f-8fe6-bab2e05795c4 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/e68928a3-e8be-4e2f-8fe6-bab2e05795c4 2048w" alt="412 North Park Avenue" class="img" sizes="(min-width: 769px) 640px,  100vw" loading="lazy">
502      			
503      			  <p class="bf1 label">For Sale</p>
504      		</figure>
505      		<h5 class="lp-h5">
506      		  $395,000
507      		  </h5>
508      		<p class="bf1">
509            412 North Park Avenue, Linden, NJ 07036
510      		</p> 
511      	  <ul class="bf2"> 
512            <li>3 Beds</li>
513            <li>1.1 Baths</li>
514            <li>735 Sq.Ft.</li>
515          </ul>
516      	</a> 
517        <a class="item" href="/properties/147-Glen-Avenue">
518      		<figure>
519      		  <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/cc344583-d59a-445f-846c-28f2a69aaf4e" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/cc344583-d59a-445f-846c-28f2a69aaf4e 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/cc344583-d59a-445f-846c-28f2a69aaf4e 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/cc344583-d59a-445f-846c-28f2a69aaf4e 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cc344583-d59a-445f-846c-28f2a69aaf4e 2048w" alt="147 Glen Avenue" class="img" sizes="(min-width: 769px) 640px,  100vw" loading="lazy">
520      			
521      			  <p class="bf1 label">For Sale</p>
522      		</figure>
523      		<h5 class="lp-h5">
524      		  $6,000/mo
525      		  </h5>
526      		<p class="bf1">
527            147 Glen Avenue, Millburn, NJ 07041
528      		</p> 
529      	  <ul class="bf2"> 
530            <li>4 Beds</li>
531            <li>3.1 Baths</li>
532            <li>3,209 Sq.Ft.</li>
533          </ul>
534      	</a> 
535        <a class="item" href="/properties/321-Boyden-Ave">
536      		<figure>
537      		  <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/c885b127-d60e-4a61-bc2e-d6ced98968ca" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/c885b127-d60e-4a61-bc2e-d6ced98968ca 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/c885b127-d60e-4a61-bc2e-d6ced98968ca 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/c885b127-d60e-4a61-bc2e-d6ced98968ca 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/c885b127-d60e-4a61-bc2e-d6ced98968ca 2048w" alt="321 Boyden Avenue home with a blue front door, flowering garden, and green lawn." class="img" sizes="(min-width: 769px) 640px,  100vw" loading="lazy">
538      			
539      			  <p class="bf1 label">For Sale</p>
540                <div class="open-house label-house bf1">Open House: 10/10/2026, 2:00 PM - 4:00 PM</div>
541      		</figure>
542      		<h5 class="lp-h5">
543      		  $489,000
544      		  </h5>
545      		<p class="bf1">
546            321 Boyden Avenue, Maplewood, NJ 07040
547      		</p> 
548      	  <ul class="bf2"> 
549            <li>2 Beds</li>
550            <li>1 Bath</li>
551          </ul>
552      	</a> 
553        <a class="item" href="/properties/28-Oxford-Terrace">
554      		<figure>
555      		  <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/f77ad2a7-d5c0-4e22-82e0-9cac37ae131f" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/f77ad2a7-d5c0-4e22-82e0-9cac37ae131f 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/f77ad2a7-d5c0-4e22-82e0-9cac37ae131f 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/f77ad2a7-d5c0-4e22-82e0-9cac37ae131f 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f77ad2a7-d5c0-4e22-82e0-9cac37ae131f 2048w" alt="Two-story gray house with a covered porch, brick steps, and a broad green lawn." class="img" sizes="(min-width: 769px) 640px,  100vw" loading="lazy">
556      			
557      			  <p class="bf1 label">Pending</p>
558      		</figure>
559      		<h5 class="lp-h5">
560      		  $749,000
561      		  </h5>
562      		<p class="bf1">
563            28 Oxford Terrace, West Orange, NJ 07052
564      		</p> 
565      	  <ul class="bf2"> 
566            <li>4 Beds</li>
567            <li>2.1 Baths</li>
568          </ul>
569      	</a> 
570    </div>
571    <div class="lp-pagination pagination-container pagination-style-1"></div>
572  </div>
573</div>
574</section>
575<section id="section-855d0879-113a-4e34-8b5b-781d0b1f30d9"  class="solid-section is-font-color-light is-background-color-dark" data-el-id="e7db0aa2-a33d-4b1c-bd9f-41337c1c9384">
576  <div class="lp-vertical-paddings redesign">
577  <div class="lp-container cta-block cta-block--Right-aligned">
578    <div class="text-block">
579        <h2 class="lp-h2"><p>Find Your Dream Home Today</p></h2>
580    </div>
581    
582            <a
583                href="/home-search/listings"
584                
585                class="lp-btn lp-btn--dark lp-btn--big lp-btn--outline lp-btn--mob-full-width button-style-1"
586                
587                
588                
589                
590                
591                >
592                        Browse Properties
593                </a>
594  </div>
595</div>
596</section>
597<section  class="image-section is-font-color-light is-background-color-light" id="section-9b699237-bd33-47e1-a3a6-3c086016df48" data-el-id="60f303de-57c9-4a3b-87cf-c1b576e15623">
598    
598<script>
599  (function(){
600    const sectionId = 'section-9b699237-bd33-47e1-a3a6-3c086016df48'
601    const section = document.querySelector(`#${sectionId}`);
602    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');
603
604    if('true' === 'true') {
605      section.classList.add('parallax-enabled');
606      section.style.setProperty('--sectionBackground', sectionBg);
607      section.style.setProperty('background', 'none');
608    }
609  })()
610</script>
610
611
612<div class="section work-with-us parallax" style="--opacityColor:rgba(0, 0, 0, 0);">
613  <div class="lp-container lp-vertical-paddings">
614    
615    <div class="lp-title-group">
616        <h2 class="lp-h2">Work With Us</h2>
617      
618      <p class="pre-line">We are passionate about researching market stats, negotiating contracts, and helping our clients find and sell homes. The majority of our business comes from past clients and referrals from people who know our work. </p>
619    </div>
620
621
622
623
624    
625
626
627    <div class="btn-container">
628              <a
629                  role="button"
630                  data-type="CONTACT_US"
631                  class="btn btn--link lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-2"
632                  
633                  
634                  
635                  
636                  
637                  >
638                          Contact Us
639                  </a>
640    </div>
641  </div>
642</div>
643</section>
644<section id="section-843c4f7d-2270-4187-af56-23dd530aef1f"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="1b5dc03a-76a1-431a-b1f1-9def4c75f9f5">
645  
645<script type="text/x-handlebars-template" class="jsIGTemplate">
646    {{#each items}}
647      <a href="{{permalink}}" target="_blank" class="feed__content__item wow fadeInUp insta-type-{{mediaType}}" data-wow-delay="1.{{@index}}s">
648      <div class=" feed__content__item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{else}}{{mediaUrl}}{{/ifEquals}}');">
649        <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 ">
650          <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>
651        </svg>
652      </div>
653      {{#ifEquals mediaType 'VIDEO'}}
654        <div class="media-type-icon">
655          <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>
656        </div>
657      {{/ifEquals}}
658    </a> 
659    {{/each}}
660</script>
660
661<div class="feed redesign">
662  <div class="lp-container">
663    <span class="pre-title feature wow fadeInUp">Follow Us</span>
664    <a href="#" target="_blank" class="instagram-link jsIGLink"><h3 class="lp-h3 wow fadeInUp jsIGName jsShrink instagram-username" data-wow-delay=".5s"></h3></a>
665    <div class="feed__content jsIGContainer"></div>
666  </div>
667</div>
668</section>
669
670        <div id="modals" class="modals"></div>
671        <footer id="global-footer" class="is-font-color-light is-background-color-light" data-el-id="f3892c1c-f128-483a-b998-cb1ea48c25c1">
672            <div class="site-footer">
673
674  <div class="site-footer__bottom"> 
675    <div class="lp-container">
676      
677        <div class="site-footer__logo-bar">
678          <div class="site-footer__logo-container">
679            <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0b0306ca-6610-41f3-bf9f-7c5bf6a4ed00" 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/0b0306ca-6610-41f3-bf9f-7c5bf6a4ed00 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0b0306ca-6610-41f3-bf9f-7c5bf6a4ed00 960w" sizes="268px" alt="Compass">
680          </div>
681          <div class="site-footer__logo-container">
682            
683          </div>
684        </div>
685
686      <div class="site-footer__info">
687        <div class="site-footer__col">
688            <h5 class="lp-h5 site-footer__col-title">Allison Ziefert Real Estate Group</h5>
689
690            <div class="site-footer__col-content lp-a"><p><a href="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/7a42cd3e-ba98-4731-88af-7d1fae90a030" target="_blank" rel="noopener">Top 1% on Garden State MLS</a></p>
691<p><a href="tel:9177510448" target="_blank" rel="noopener">(917) 751-0448</a><br><a href="/cdn-cgi/l/email-protection#90f8f5fcfcffd0fefaf6e2fffdf1e4ffeabef3fffd" target="_blank" rel="noopener"><span class="__cf_email__" data-cfemail="b6ded3dadad9f6d8dcd0c4d9dbd7c2d9cc98d5d9db">[email&#160;protected]</span> </a></p></div>
692        </div>
693
694
695          <div class="site-footer__col">
696              <h5 class="lp-h5 site-footer__col-title">Address</h5>
697
698              <div class="site-footer__col-content lp-a"><p>378-380 Millburn Ave., 2nd Floor, Millburn, NJ 07041<br>113 Grove St, <span class="fMYBhe">Montclair, NJ 07042<br>1776 On The Green, Morristown, NJ 07960</span></p></div>
699          </div>
700        
701        <div class="site-footer__navigation-wrap">
702          <ul class="footer-navigation">
703            <li class="footer-navigation__item">
704              <a  href="/" class="footer-navigation__link">Home</a>
705            </li>
706            <li class="footer-navigation__item">
707              <a  href="/team" class="footer-navigation__link">Meet the Team</a>
708            </li>
709            <li class="footer-navigation__item">
710              <a  href="/properties/sale" class="footer-navigation__link">Featured Properties</a>
711            </li>
712            <li class="footer-navigation__item">
713              <a  href="/communities" class="footer-navigation__link">Communities</a>
714            </li>
715            <li class="footer-navigation__item">
716              <a  href="/testimonials" class="footer-navigation__link">Testimonials</a>
717            </li>
718            <li class="footer-navigation__item">
719              <button data-type="CONTACT_US" class="footer-navigation__link" type="button">Contact Us</button>
720            </li>
721          </ul>
722        
723          <ul class="lp-socials social_icons-style-2 site-footer__socials socials">
724          
725                  <li>
726                    <a
727                      href="https://www.instagram.com/njfromatoz/"
728                      class="lp-socials__link socials__item"
729                      data-wow-delay="0s"
730                      target="_blank"
731                      aria-label="INSTAGRAM"
732                    >
733                        <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
734                    </a>
735                  </li>
736                  <li>
737                    <a
738                      href="https://www.linkedin.com/in/allisonziefert/"
739                      class="lp-socials__link socials__item"
740                      data-wow-delay="0.1s"
741                      target="_blank"
742                      aria-label="LINKEDIN"
743                    >
744                        <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
745                    </a>
746                  </li>
747                  <li>
748                    <a
749                      href="https://www.youtube.com/@njfromatoz/featured"
750                      class="lp-socials__link socials__item"
751                      data-wow-delay="0.2s"
752                      target="_blank"
753                      aria-label="YOUTUBE"
754                    >
755                        <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
756                    </a>
757                  </li>
758                  <li>
759                    <a
760                      href="https://www.google.com/search?q&#x3D;Allison+Ziefert+realtor&amp;rlz&#x3D;1C1VDKB_enPH1045PH1045&amp;oq&#x3D;Allison+Ziefert+realtor&amp;gs_lcrp&#x3D;EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg9MgYIAhBFGDzSAQk0NTkyajBqMTWoAgiwAgHxBe38LS_e99po&amp;sourceid&#x3D;chrome&amp;ie&#x3D;UTF-8#lrd&#x3D;0x89c3ac44e59ca929:0xe5947d912e97eba9,1,,,,"
761                      class="lp-socials__link socials__item"
762                      data-wow-delay="0.3s"
763                      target="_blank"
764                      aria-label="GOOGLE"
765                    >
766                        <span class="lp-i lp-i--google" aria-hidden="true"></span>
767                    </a>
768                  </li>
769                  <li>
770                    <a
771                      href="https://www.zillow.com/profile/Allison%20Ziefert"
772                      class="lp-socials__link socials__item"
773                      data-wow-delay="0.4s"
774                      target="_blank"
775                      aria-label="ZILLOW"
776                    >
777                        <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
778                    </a>
779                  </li>
780                  <li>
781                    <a
782                      href="https://www.compass.com/agents/allison-ziefert-real-estate-group/"
783                      class="lp-socials__link socials__item"
784                      data-wow-delay="0.5s"
785                      target="_blank"
786                      aria-label="BROKERAGE"
787                    >
788                      <svg width="20" height="20" viewBox="0 0 60.14 60"><path d="M29.86 0a30 30 0 00.28 60 30.03 30.03 0 0030-30A30 30 0 0029.86 0zm.28 8a22.03 22.03 0 0122 22 22 22 0 11-22-22zm7.18 9.17l-20 20 5.65 5.66 20-20z" /></svg>
789                    </a>
790                  </li>
791            </ul>
792
793        </div>
794      </div>
795      
796      <div class="site-footer__disclaimer"><p style="font-size: 12px;">Allison Ziefert Real Estate Group is a team of real estate broker-salespersons affiliated with Compass. <a href="https://www.compass.com" target="_blank" rel="noopener">Compass</a> is a licensed real estate broker and abides by equal housing opportunity laws. All material presented herein is intended for informational purposes only. Information is compiled from sources deemed reliable but is subject to errors, omissions, changes in price, condition, sale, or withdrawal without notice. No statement is made as to accuracy of any description. All measurements and square footages are approximate. This is not intended to solicit property already listed. Nothing herein shall be construed as legal, accounting or other professional advice outside the realm of real estate brokerage.</p>
797<p style="font-size: 12px;">DIRECT DATA COLLECTION<br>Personal data is only stored when voluntarily given by you for a determined purpose e.g. in context of a registration, a survey, a contest, or in performance of a contract. Your individual, identifiable, personal data will not be disclosed to third parties, without your consent.</p>
798<p style="font-size: 12px;">PHONE NUMBERS<br>Any phone numbers collected through our site, whether through webform or other means, will be used exclusively to communicate with you regarding our services and will never be shared or sold to third parties for promotional or marketing purposes.</p>
799<p style="font-size: 12px;">TELEPHONE COMMUNICATIONS WITH YOU<br>You agree that our company and its agents may call or text you at any phone number (landline or wireless) that you provide to us, using an automated dialing system and/or a prerecorded message, for marketing services and/or account-related purposes, such as appointment confirmations, service alerts, billing and collection issues or account recovery concerns. You can manage your contact preferences by emailing us, c
799alling us, or replying to text messages with &ldquo;HELP&rdquo; for assistance or &ldquo;STOP&rdquo; to unsubscribe. Reply &ldquo;START&rdquo; to resubscribe. Message and data rates may apply.</p>
800<p><img style="filter: invert(1); width: 100px; margin-top: 10px;" src="https://res.cloudinary.com/luxuryp/images/zbxf1j3xdplm6lhfnqo3/realtor-eho-logo-07232021-update-dark" alt=""></p></div>
801
802      <div class="site-footer__copy">
803        <div class="lp-a site-footer__copy-lp">
804          <div class="site-footer__logo-container">
805            <img src="https://media-production.lp-cdn.com/media/f78e371f-8cef-4648-9d4d-fb6d0cdbee59" alt="">
806          </div>
807        <span>Website designed and developed by</span>
808        <a href="https://www.luxurypresence.com/" class="" target="_blank">Luxury Presence</a>
809        </div>
810        <div>Copyright © <span class="auto-year-update">2026</span> | <a href="/terms-and-conditions">Privacy Policy</a></div>
811      </div>
812      
813    </div>
814  </div>
815
816  
817    
818</div>
819
820        </footer>
821
822        <div id="modal-global-contact-us" class="modal "
823            data-el-id=""
824            style="background-color: ;"
825            >
826            <div class="modal-content">
827                  <div class="contact-form">
828            <div class="contact-form__close close"></div>
829            <div class="contact-form__container">
830        
831              <form class="contact-form__form" data-type="contact-form" style="color: rgba(255, 255, 255, 1); background: rgba(156, 158, 143, 1);  fill: rgba(255, 255, 255, 1);">
832                <h5 class="lp-h5 contact-form__title1">Get in Touch</h5>
833                <div class="input-container">
834                  <input id="-cmp-name" name="name" type="text" class="lp-input lp-input--light contact-form__input" placeholder="Name" required>
835                  <span class="input-icon"></span>
836                </div>
837        
838                <div class="input-container">
839                  <input id="-cmp-email" name="email" type="email" class="lp-input lp-input--light contact-form__input" placeholder="Email" required pattern="[a-zA-Z0-9.!#$%&amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+">
840                  <span class="input-icon"></span>
841                </div>
842        
843                <div class="input-container">
844                  <input id="-cmp-phone" name="phone" type="tel" class="lp-input lp-input--light  contact-form__input" placeholder="Phone" required>
845                  <span class="input-icon"></span>
846                </div>
847        
848                <div class="input-container">
849                  <textarea id="-cmp-contactMessage" placeholder="Message" name="message" required type="text" class="lp-input lp-input--light  contact-form__input"></textarea>
850                  <span class="input-icon"></span>
851                </div>
852        
853                <div class="h-pot">
854                  <label for="-cmp-middleName">Middle Name</label>
855                  <input id="-cmp-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
856                </div>
857        
858                <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
859          <label class='lp-tcr-content'>
860            <span class='lp-tcr-checkbox'>
861              <input
862                type='checkbox'
863                id='-termsAccepted'
864                name='termsAccepted'
865                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
866                oninput="this.setCustomValidity('')"
867                required
868              /></span>
869            <span class='lp-tcr-message'>
870              
871                I agree to be contacted by
872                Allison Ziefert Real Estate Group
873                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
874                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
875                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
876            </span>
877          </label>
878        
879        </div>
880        
881                <input type="hidden" name="source" value="CONTACT_INQUIRY">
882                <button class="contact-form__submit btn lp-btn lp-btn--filled button-style-2" type="submit">
883        
884                  <span class="sync-icon lp-i--spin">
885                    <svg width="20" height="15" viewBox="0 0 20 15" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
886                      <path d="M16.3636 3.66667L12.7273 7.33333H15.4545C15.4545 10.3675 13.0091 12.8333 10 12.8333C9.08182 12.8333 8.20909 12.6042 7.45455 12.1917L6.12727 13.53C7.24545 14.245 8.57273 14.6667 10 14.6667C14.0182 14.6667 17.2727 11.385 17.2727 7.33333H20L16.3636 3.66667ZM4.54545 7.33333C4.54545 4.29917 6.99091 1.83333 10 1.83333C10.9182 1.83333 11.7909 2.0625 12.5455 2.475L13.8727 1.13667C12.7545 0.421666 11.4273 0 10 0C5.98182 0 2.72727 3.28167 2.72727 7.33333H0L3.63636 11L7.27273 7.33333H4.54545Z" />
887                    </svg>
888                  </span>
889        
890                  <span class="success-icon">
891                    <svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
892                      <path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 18C5.59 18 2 14.41 2 10C2 5.59 5.59 2 10 2C14.41 2 18 5.59 18 10C18 14.41 14.41 18 10 18ZM14.59 5.58L8 12.17L5.41 9.59L4 11L8 15L16 7L14.59 5.58Z" />
893                    </svg>
894                  </span>
895        
896                  Submit<span class="success-text">ted</span>
897                </button>
898              </form>
899              
900              <div class="contact-form__details">
901                <h5 class="lp-h5 contact-form__title2">Contact Details</h5>
902                <div class="company">
903                  <div class="company_contact lp-a">
904                      <p><strong>Allison Ziefert Real Estate Group</strong></p>
905        <p><a href="tel:9177510448" target="_blank" rel="noopener">(917) 751-0448</a></p>
906        <p><a href="/cdn-cgi/l/email-protection#fa929f969695ba94909c8895979b8e9580d4999597" target="_blank" rel="noopener"><span class="__cf_email__" data-cfemail="f098959c9c9fb09e9a96829f9d91849f8ade939f9d">[email&#160;protected]</span> </a></p>
907        <p><br><br></p>
908        <p>378-380 Millburn Ave., 2nd Floor, Millburn, NJ 07041<br>113 Grove St,&nbsp;<span class="fMYBhe">Montclair, NJ 07042<br>1776 On The Green, Morristown, NJ 07960</span></p>
909                  </div>
910                </div>
911                
912                <div class="socials">
913                  <ul class="lp-socials social_icons-style-1 lp-socials socials--theme-1">
914                  
915                          <li>
916                            <a
917                              href="https://www.instagram.com/njfromatoz/"
918                              class="lp-socials__link lp-socials__link"
919                              data-wow-delay="0s"
920                              target="_blank"
921                              aria-label="INSTAGRAM"
922                            >
923                                <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
924                            </a>
925                          </li>
926                          <li>
927                            <a
928                              href="https://www.linkedin.com/in/allisonziefert/"
929                              class="lp-socials__link lp-socials__link"
930                              data-wow-delay="0.1s"
931                              target="_blank"
932                              aria-label="LINKEDIN"
933                            >
934                                <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
935                            </a>
936                          </li>
937                          <li>
938                            <a
939                              href="https://www.youtube.com/@njfromatoz/featured"
940                              class="lp-socials__link lp-socials__link"
941                              data-wow-delay="0.2s"
942                              target="_blank"
943                              aria-label="YOUTUBE"
944                            >
945                                <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
946                            </a>
947                          </li>
948                          <li>
949                            <a
950                              href="https://www.google.com/search?q&#x3D;Allison+Ziefert+realtor&amp;rlz&#x3D;1C1VDKB_enPH1045PH1045&amp;oq&#x3D;Allison+Ziefert+realtor&amp;gs_lcrp&#x3D;EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg9MgYIAhBFGDzSAQk0NTkyajBqMTWoAgiwAgHxBe38LS_e99po&amp;sourceid&#x3D;chrome&amp;ie&#x3D;UTF-8#lrd&#x3D;0x89c3ac44e59ca929:0xe5947d912e97eba9,1,,,,"
951                              class="lp-socials__link lp-socials__link"
952                              data-wow-delay="0.3s"
953                              target="_blank"
954                              aria-label="GOOGLE"
955                            >
956                                <span class="lp-i lp-i--google" aria-hidden="true"></span>
957                            </a>
958                          </li>
959                          <li>
960                            <a
961                              href="https://www.zillow.com/profile/Allison%20Ziefert"
962                              class="lp-socials__link lp-socials__link"
963                              data-wow-delay="0.4s"
964                              target="_blank"
965                              aria-label="ZILLOW"
966                            >
967                                <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
968                            </a>
969                          </li>
970                          <li>
971                            <a
972                              href="https://www.compass.com/agents/allison-ziefert-real-estate-group/"
973                              class="lp-socials__link lp-socials__link"
974                              data-wow-delay="0.5s"
975                              target="_blank"
976                              aria-label="BROKERAGE"
977                            >
978                              <svg width="20" height="20" viewBox="0 0 60.14 60"><path d="M29.86 0a30 30 0 00.28 60 30.03 30.03 0 0030-30A30 30 0 0029.86 0zm.28 8a22.03 22.03 0 0122 22 22 22 0 11-22-22zm7.18 9.17l-20 20 5.65 5.66 20-20z" /></svg>
979                            </a>
980                          </li>
981                    </ul>        </div>
982              </div>
983            </div>
984        </div>
985        <!-- version 1 -->
986            </div>
987            <button class="close lp-close" type="button" aria-label="close modal">
988                <span class="lp-close-icon" aria-hidden="true"></span>
989            </button>
990        </div>
991        <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;">
992          <style>
993            #qualifying-questions-modal .custom-select-toggle {
994              border: 1px solid #848484;
995              border-radius: 8px;
996              padding: 12px 16px;
997            }
998        
999            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
1000              color: #848484;
1001            }
1002        
1003            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
1004              color: #848484;
1005              opacity: 1;
1006            }
1007        
1008            #qualifying-questions-modal .disclaimer-more {
1009              display: none;
1010            }
1011        
1012            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
1013              display: inline;
1014            }
1015        
1016            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
1017              display: none;
1018            }
1019          </style>
vendor: 119 bytes, lines 1019-1020
1019
1020          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1020<script>
1021            function toggleDisclaimerQualifyingQuestionsModal() {
1022              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
1023              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
1024        
1025              if (disclaimerText.classList.contains('collapsed')) {
1026                disclaimerText.classList.remove('collapsed');
1027                toggleButton.textContent = 'Read less';
1028                toggleButton.setAttribute('aria-expanded', 'true');
1029              } else {
1030                disclaimerText.classList.add('collapsed');
1031                toggleButton.textContent = 'Read more';
1032                toggleButton.setAttribute('aria-expanded', 'false');
1033              }
1034            }
1035          </script>
1035
1036          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
1037            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
1038              <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;">
1039                <span aria-hidden="true">&times;</span>
1040              </button>
1041              <div style="padding: 40px 30px 32px;">
1042                <div style="text-align: left; margin-bottom: 32px;">
1043                  <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;">
1044                    Thanks, please provide more information to help serve you
1045                  </h2>
1046                </div>
1047                <form id="qualifying-questions-modal-form" data-type="contact-form">
1048                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
1049                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
1050                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
1051                  <label for="qualifying-questions-modal-email" style="display:none;">
1052                    Email
1053                  </label>
1054                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
1055                    Trigger Source
1056                  </label>
1057        
1058                  <div style="margin-bottom: 20px;">
1059                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
1060                      Phone Number
1061                    </label>
1062                    <input
1063                      type="tel"
1064                      id="qualifying-questions-modal-phoneNumber"
1065                      name="phoneNumber"
1066                      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;"
1067                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
1068                      required
1069                      placeholder="Phone"
1070                      aria-label="Phone Number"
1071                      inputmode="tel"
1072                      autocomplete="tel"
1073                      onfocus="this.style.borderColor='black';"
1074                      onblur="this.style.borderColor='#848484';"
1075                    />
1076                  </div>
1077        
1078                  <div style="margin-bottom: 20px;">
1079                    <label for="qualifying-questions-modal-interest" style="display:none;">
1080                      Interest
1081                    </label>
1082                    <select
1083                      id="qualifying-questions-modal-interest"
1084                      name="interest"
1085                      required
1086                      data-label="Interest"
1087                      aria-label="Interest"
1088                      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;"
1089                      onfocus="this.style.borderColor='black'; this.style.color='black';"
1090                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
1091                    >
1092                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
1093                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
1094                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
1095                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
1096                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
1097                      <option value="Other" style="background: #fff; color: black;">Other</option>
1098                    </select>
1099                  </div>
1100        
1101                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
1102                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
1103                    <label class='lp-tcr-content'>
1104                      <span class='lp-tcr-checkbox'>
1105                        <input
1106                          type='checkbox'
1107                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
1108                          name='termsAccepted'
1109                          aria-describedby='qualifying-questions-modal-disclaimer-text'
1110                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1111                          oninput="this.setCustomValidity('')"
1112                          required
1113                        /></span>
1114                      <span class='lp-tcr-message'>
1115                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
1116                          
1117                            I agree to be contacted by
1118                            <strong>Allison Ziefert Real Estate Group</strong>
1119                            via call, email, and text <span class="disclaimer-more">for real estate services. 
1120                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
1121                            You can also click the unsubscribe link in the emails. 
1122                            Message and data rates may apply. Message frequency may vary.</span>
1123                            <span class="disclaimer-ellipsis">...</span>
1124                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
1125                        </div>
1126                        <button
1127                          id="qualifying-questions-modal-toggle-disclaimer"
1128                          type="button"
1129                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
1130                          aria-expanded="false"
1131                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
1132                        >
1133                          Read more
1134                        </button>
1135                      </span>
1136                    </label>
1137                  </div>
1138        
1139                  <div>
1140                    <button
1141                      type="submit"
1142                      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;"
1143                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1144                      onmouseout="this.style.background='black'; this.style.color='white';"
1145                    >
1146                      Submit
1147                    </button>
1148                  </div>
1149                </form>
1150              </div>
1151            </div>
1152          </div>
1153        </div>
1154
1155    
1155<script>
1156        (function() {
1157        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1158
1159        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1160            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1161            entries.forEach(function(video) {
1162                if (video.isIntersecting) {
1163                for (var source in video.target.children) {
1164                    var videoSource = video.target.children[source];
1165                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1166                    videoSource.src = videoSource.dataset.src;
1167                    }
1168                }
1169
1170                video.target.load();
1171                video.target.classList.remove("lazy");
1172                lazyVideoObserver.unobserve(video.target);
1173                }
1174            });
1175            });
1176
1177            lazyVideos.forEach(function(lazyVideo) {
1178                lazyVideoObserver.observe(lazyVideo);
1179            });
1180        }
1181        })();
1182    </script>
1182
1183
1184        <!-- Global site tag (gtag.js) - Google Analytics -->
1185        
1185<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1185
1186
1187            <!-- Google Tag Manager -->
1188            
1188<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1189                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1190                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1191                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1192            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1192
1193            <!-- End Google Tag Manager -->
1194
1195
1196        <!-- LP Tracker (divolte.js) - LP Divolte -->
1197            
1197<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1197
1198        <!-- LP Tracker (eventBus) - LP EventBus -->
1199            
1199<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1199
1200
1201    
1201<script>
1202        window.dataLayer = window.dataLayer || [];
1203        document.sendGoogleTagManagerEvent = function() {
1204            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1205            if (window.navigator.globalPrivacyControl) {
1206                return;
1207            }
1208
1209            dataLayer.push(arguments);
1210        }
1211
1212        document.sendGoogleTagManagerEvent('js', new Date());
1213            document.sendGoogleTagManagerEvent('config', 'G-2F54L7HCW5', { page: location.pathname, location: location.href });
1214        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1215            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1216                event_category: googleEvent.eventCategory,
1217                event_label: googleEvent.eventLabel,
1218                value: googleEvent.eventValue,
1219                page: googleEvent.page,
1220                location: googleEvent.location
1221            })
1222        };
1223
1224        document.addEventListener("DOMContentLoaded", function() {
1225            (function() {
1226                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1227                var date = new Date();
1228                var elements = document.getElementsByClassName('auto-year-update');
1229                var i;
1230                for (i = 0; i < elements.length; i++) {
1231                    elements[i].innerText = date.getFullYear();
1232                }
1233            })();
1234            if (window.divolteLp) {
1235                window.divolteLp('sendLpPageView', {});
1236            }
1237            if (window.eventBusLp) {
1238                window.eventBusLp('sendLpPageView', {});
1239            }
1240        });
1241    </script>
1241
1242
1243
1244    
1244<script>
1245    // Function to dynamically load a script
1246    function loadScript(url, callback) {
1247        var script = document.createElement('script');
1248        script.type = 'text/javascript';
1249        script.src = url;
1250        script.defer = true;
1251        script.async = true;
1252        script.onload = callback;
1253        document.head.appendChild(script);
1254    }
1255
1256    // Function to dynamically load CSS file
1257    function loadCSS(url) {
1258        var link = document.createElement("link");
1259        link.rel = "stylesheet";
1260        link.href = url;
1261        document.head.appendChild(link);
1262    }
1263
1264    // Global methods / variables that can be accessed by element js
1265    window.luxuryPresence = {
1266        libs: {
1267            loadJs: loadScript,
1268            loadCss: loadCSS,
1269            jsLibsMap: {
1270                paroller: {
1271                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1272                    isLoaded: false,
1273                },
1274                ionRangeSlider: {
1275                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1276                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1277                    isLoaded: false,
1278                    requires: ['jquery'],
1279                },
1280                splide: {
1281                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1282                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1283                    isLoaded: false,
1284                },
1285                wow: {
1286                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1287                    isLoaded: false,
1288                },
1289                jquery: {
1290                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1291                    isLoaded: false,
1292                },
1293                slick: {
1294                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1295                    isLoaded: false,
1296                    requires: ['jquery'],
1297                },
1298                libphonenumber: {
1299                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1300                    isLoaded: false,
1301                },
1302            },
1303        },
1304    };
1305    </script>
1305
1306    
1306<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>
1306
1307    
1307<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1307
1308    
1308<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1308
1309    
1309<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1309
1310    
1310<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>
1310
1311    
1311<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>
1311
1312    
1312<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>
1312
1313
1314    <!-- GOOGLE TRANSLATE SCRIPT -->
1315    
1315<script>
1316        function googleTranslateElementInit() {
1317            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1318            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1319            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1320            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1321                translate.innerText = '';
1322                new google.translate.TranslateElement({
1323                    pageLanguage: 'en',
1324                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1325                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1326                }, translate);
1327            });
1328        }
1329    </script>
1329
1330    
1330<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1330
1331            
1331<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1331
1332
1333    <!-- GOOGLE TRANSLATE SCRIPT END-->
1334    
1334<script>
1335
1336        // UI helpers
1337        (function () {
1338
1339            function getSideMenu () {
1340                return document.querySelector('body > div.sidemenu');
1341            }
1342
1343            function sideMenuHide (instant) {
1344                var sideMenu = getSideMenu();
1345                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1346                  return;
1347                }
1348                sideMenu.classList.remove('visible');
1349                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1350                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1351            }
1352
1353            function sideMenuShow () {
1354                var sideMenu = getSideMenu();
1355                if (!sideMenu || sideMenu.classList.contains('visible')) {
1356                  return;
1357                }
1358                sideMenu.classList.add('visible');
1359                sideMenu.dispatchEvent(new Event('lpui-show'));
1360                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1361            }
1362
1363            function sideMenuToggle () {
1364                var sideMenu = getSideMenu();
1365                if (!sideMenu) {
1366                  return;
1367                }
1368                var isSideMenuVisible = sideMenu.classList.contains('visible');
1369                if (isSideMenuVisible) {
1370                    sideMenuHide();
1371                } else {
1372                    sideMenuShow();
1373                }
1374            }
1375
1376            var scrollLockRequests = {};
1377            window.__debug_scrollLockRequests = scrollLockRequests;
1378            var hideScrollStyles = ''+
1379                    'body {'+
1380                    'overflow: hidden;' +
1381                    '}';
1382            var hideScrollId = 'hide-body-scroll-style';
1383
1384            function scrollLock () {
1385                var style = document.createElement('style');
1386                style.id = hideScrollId;
1387                style.textContent = hideScrollStyles;
1388                document.head.appendChild(style);
1389                window.dispatchEvent(new Event('lpui-scroll-locked'));
1390            }
1391
1392            function scrollUnlock () {
1393                document.getElementById(hideScrollId)?.remove();
1394                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1395            }
1396
1397            function requestScrollLock (lockId) {
1398                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1399                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1400                if (!wasLocked) {
1401                    scrollLock();
1402                }
1403            }
1404
1405            function releaseScrollLock (lockId) {
1406                if (lockId) {
1407                    delete scrollLockRequests[lockId];
1408                    if (!Object.keys(scrollLockRequests).length) {
1409                        scrollUnlock();
1410                    }
1411                } else {
1412                    scrollLockRequests = {};
1413                    window.__debug_scrollLockRequests = scrollLockRequests;
1414                    scrollUnlock();
1415                }
1416            }
1417
1418            function showModal (modalId, options) {
1419                var modal = document.getElementById(modalId);
1420                if (!modal) {
1421                    return;
1422                }
1423
1424                if (!modal.classList.contains('visible')) {
1425                    modal.classList.add('visible');
1426                    if (options && options.scrollLock) {
1427                        window.lpUI.requestScrollLock(modalId);
1428                    }
1429                    modal.dispatchEvent(new Event('lpui-show'));
1430                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1431                }
1432
1433                const visibleModals = document.querySelectorAll('.modal.visible');
1434
1435                if (visibleModals.length > 1) {
1436
1437                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1438                        const zIndex = window.getComputedStyle(modal).zIndex;
1439                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1440                        return Math.max(maxZIndex, parsedZIndex);
1441                    }, 0);
1442
1443                    modal.style.zIndex = maxZIndex + 1;
1444                }
1445
1446            }
1447
1448            function _hideModal (modalEl) {
1449                if (!modalEl) {
1450                    return;
1451                }
1452                if (!modalEl.classList.contains('visible')) {
1453                    return;
1454                }
1455                modalEl.classList.remove('visible');
1456                modalEl.style.zIndex = '';
1457                modalEl.dispatchEvent(new Event('lpui-hide'));
1458                var modalId = modalEl.getAttribute('id');
1459                if (modalId) {
1460                    window.lpUI.releaseScrollLock(modalId);
1461                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1462                }
1463            }
1464
1465            function hideModal (modalId) {
1466                _hideModal(document.getElementById(modalId));
1467            }
1468
1469            function hideClosestModal (el) {
1470              const modal = el?.closest('.modal');
1471              if (!modal) {
1472                return;
1473              }
1474              if (modal.classList) {
1475                _hideModal(modal);
1476                return;
1477              }
1478              if (modal.length && modal[0].classList) {
1479                _hideModal(modal[0]);
1480              }
1481            }
1482
1483            window.lpUI = {
1484                sideMenuHide: sideMenuHide,
1485                sideMenuShow: sideMenuShow,
1486                sideMenuToggle: sideMenuToggle,
1487                requestScrollLock: requestScrollLock,
1488                releaseScrollLock: releaseScrollLock,
1489                showModal: showModal,
1490                hideModal: hideModal,
1491                hideClosestModal: hideClosestModal
1492            }
1493        })();
1494
1495        var stringifyPrimitive = function(v) {
1496            switch (typeof v) {
1497                case 'string':
1498                    return v;
1499
1500                case 'boolean':
1501                    return v ? 'true' : 'false';
1502
1503                case 'number':
1504                    return isFinite(v) ? v : '';
1505
1506                default:
1507                    return '';
1508            }
1509        };
1510
1511        function objectToQuerystring(obj, sep, eq, name) {
1512            // https://github.com/Gozala/querystring/blob/master/encode.js
1513            sep = sep || '&';
1514            eq = eq || '=';
1515            if (obj === null) {
1516                obj = undefined;
1517            }
1518
1519            if (typeof obj === 'object') {
1520                return Object.keys(obj).map(function(k) {
1521                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1522                    if (Array.isArray(obj[k])) {
1523                        return obj[k].map(function(v) {
1524                            return ks + encodeURIComponent(stringifyPrimitive(v));
1525                        }).join(sep);
1526                    } else {
1527                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1528                    }
1529                }).filter(Boolean).join(sep);
1530
1531            }
1532
1533            if (!name) return '';
1534            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1535                    encodeURIComponent(stringifyPrimitive(obj));
1536        }
1537
1538        function getPath(url, options) {
1539            var parser = document.createElement('a');
1540            parser.href = url || '';
1541            var path = parser.pathname || '';
1542            if (path[0] !== '/') {
1543              // IE does not return path starting with a slash
1544              path = '/' + path;
1545            }
1546
1547            if (options && options.queryString) {
1548                path += parser.search;
1549            }
1550
1551            return path;
1552        }
1553
1554        function getMLSAutocomplete(keyword) {
1555            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1556            var query = {
1557                kind: 'listings',
1558                query: keyword
1559            };
1560
1561            return superagent
1562                .get(searchURL)
1563                .query(query)
1564                .then(function(res) {
1565                    var data = res.body || [];
1566                    // Array of listing_auto_complete documents: id, display_address, city, state,
1567                    // price, sold_price, status, status_modified_at, photo_urls (array of URLs).
1568
1569                    return data;
1570                });
1571        }
1572
1573        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1574            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1575
1576            return superagent
1577                .get(searchURL)
1578                .query({ kind: 'listings', query: keyword, ...filters })
1579                .then(function(res) {
1580                    // Same response shape as getMLSAutocomplete.
1581                    return res.body || [];
1582                });
1583        }
1584
1585        function makeMlsLink(data) {
1586            // Code Dupe from utils/googlePlace
1587            // mapping of google data type to mls data type
1588            var mapping = {
1589                neighborhood: 'neighborhood',
1590                locality: 'place',
1591                administrative_area_level_2: 'county',
1592                administrative_area_level_1: 'state',
1593                postal_code: 'postalcode',
1594            };
1595
1596            function _filterTypes(types) {
1597                return types.filter(function(type) { return type !== 'political' });
1598            }
1599
1600            if (!data || !Object.keys(data).length) {
1601                return '/home-search/listings';
1602            }
1603
1604            var newData = {};
1605            _filterTypes(data.types).forEach(function(type) {
1606                if (mapping[type]) {
1607                    newData.search_type = mapping[type];
1608                }
1609            });
1610            newData.omnibox = data.formatted_address;
1611            data.address_components.forEach(function(component) {
1612                _filterTypes(component.types).forEach(function(type) {
1613                    if (mapping[type]) {
1614                        newData[mapping[type]] = component.long_name;
1615                    }
1616                });
1617            });
1618            var bounds = data.geometry.bounds;
1619            var convertedData = Object.assign(bounds, newData);
1620
1621            return '/home-search/listings?' + objectToQuerystring(convertedData);
1622        }
1623
1624        function debounce(func, wait) {
1625            let timeout;
1626            return function(...args) {
1627                const context = this;
1628                clearTimeout(timeout);
1629                timeout = setTimeout(() => func.apply(context, args), wait)
1630            }
1631        }
1632
1633        // Global methods / variables that can be accessed by element js
1634        window.luxuryPresence = {
1635            ...window.luxuryPresence,
1636            defaults: {
1637                companyId: 'b0108bde-2b87-474d-8bcd-d7fcfd16c5cc',
1638                apiGatewayUrl: '/api-gw',
1639                routerUrl: '/api-nv',
1640                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\
1640n    }\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
1640x\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"},
1641                propertyPlaceholderImage: {"id":"4d94deb4-51cf-42cc-aa43-81fa37e4b51b","alt":null,"bytes":62125,"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/1e323f03-efda-446d-91b0-6430cb26c8bc","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/1e323f03-efda-446d-91b0-6430cb26c8bc","authorUrl":null,"createdAt":"2025-03-10T18:36:49.361Z","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/1e323f03-efda-446d-91b0-6430cb26c8bc","sourceUrl":null,"updatedAt":"2025-03-10T18:36:49.361Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1e323f03-efda-446d-91b0-6430cb26c8bc","__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/1e323f03-efda-446d-91b0-6430cb26c8bc","de
1641scription":null,"displayName":"property_placeholder-logo-1","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1e323f03-efda-446d-91b0-6430cb26c8bc","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/1e323f03-efda-446d-91b0-6430cb26c8bc","originalFileName":"Property_placeholder-logo (1)","cloudinaryPublicId":"1e323f03-efda-446d-91b0-6430cb26c8bc"}
1642            },
1643            objectToQuerystring: objectToQuerystring,
1644            getPath: getPath,
1645            getMLSAutocomplete: getMLSAutocomplete,
1646            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1647            makeMlsLink: makeMlsLink,
1648            debounce: debounce,
1649        };
1650
1651        var wowOffset = 100;
1652    </script>
1652
1653    
1653<script>
1654        (()=>{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));
1654if(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)];
1654let t="x"===e[2]||"X"===e[2],r=parseInt(e.slice(t?3:2,-1),t?16:10);return 0===r||r>1114111||r>=55296&&r<=57343?e:160===r?" ":String.fromCodePoint(r)}(r[0]):"&",end:r?d.lastIndex:t+1}}(e,o):function(e,t,r){let i=function(e,t){let r=null;u.lastIndex=t+1;let i=u.exec(e);for(;i;){let t=i[0];if(r)t===r&&(r=null);else if('"'===t||"'"===t)r=t;else if(">"===t)return u.lastIndex;i=u.exec(e)}return -1}(e,t);return{text:-1===i?"<":function(e,t,r,i){if(!i)return"";let s=e.slice(t,r);if(/^<br\s*\/?>$/.test(s))return"&#10;";if(/^<\/p\s*>$/.test(s)){h.lastIndex=r;let t=h.exec(e);if(t&&"<"===t[0][0])return"&#10;"}return""}(e,t,i,r),end:-1===i?t+1:i}}(e,o,t);r+=n.text,i=n.end}return r}n=function(e,{isEqual:t}){let r=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],i=function(e,t,r){let i="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let s="number"==typeof r?r:0,o=Number.isInteger(e)?0:s,n={minimumFractionDigits:o,maximumFractionDigits:o};return"USD"===t?`$${e.toLocaleString(i,n)}`:"CAD"===t?`$${e.toLocaleString(i,n)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(i,n)}`:"GBP"===t?`\xa3${e.toLocaleString(i,n)}`:"PERCENT"===t?`${e}%`:"number"==typeof r&&r>-1?e.toLocaleString(i,{maximumFractionDigits:r}):e.toLocaleString(i)},s=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let r,i,a=t||{};switch(a.mode){case"short":r=o(e),i=a.frequencySeparator||"/";break;case"standard":case"std":r=n(e),i=a.frequencySeparator||"/";break;default:r=s(e),i=a.frequencySeparator||" "}return r?a.frequencyTag||a.frequencyClass?`${i}<${a.frequencyTag||"span"}${a.frequencyClass?` class="${a.frequencyClass}"`:""}>${r}</${a.frequencyTag||"span"}>`:i+r:""};return{isEmpty(e,t){let r=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?r?t.fn(this):t.inverse(this):r},ifEquals(e,r,i){return t(e,r)?i.fn(this):i.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!1):"",striptagsLineBreaks:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!0):"",truncate:(e,t,r)=>e?e.length>t?"string"==typeof r?e.slice(0,t-r.length)+r:e.slice(0,t):e:"",setSubArray(e=[],t,r,i,s){s.data.root[i]=e.slice(t,r)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:s,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,r,i){return e>=t&&e<r?i.fn(this):i.inverse(this)},formatPropertyStatus(e,t,r){let i="";switch(e){case"SOLD":i="Sold";break;case"FOR_SALE":i="For Sale";break;case"COMING_SOON":i="Coming Soon";break;case"INACTIVE":i="Inactive";break;case"POCKET_LISTING":i="Pocket Listing";break;case"PENDING":i="Pending";break;case"UNDER_CONTRACT":i="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":i="Active Under Contract";break;default:i=e}return("Sold"===i||"Leased"===i)&&t&&"string"==typeof r&&r&&(i+=` on ${r}`),i},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let r="current"===e?new Date:new Date(e);if(Number.isNaN(r.getTime()))return"";if("YYYY"===t||"year"===t)return`${r.getFullYear()}`;if("MM/DD/YY"===t){let e=r.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${r.getDate()}/${r.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][r.getMonth()]} ${r.getDate()}, ${r.getFullYear()}`},openHousesFormat(e,t,r){if(!e||!t)return"";let i=e=>{let t=e.getHours();t>12&&(t-=12);let r=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?r+="PM":r+="AM",r},s="",o=e,n=t;
1654r&&(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())),`
1654<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}
1654return 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
1654ontact 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
1654ourceResource,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(()=>
1654o.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=`
1655  query PropertyDisclaimers($input: PropertyDisclaimersInput!) {
1656    propertyDisclaimers(input: $input) {
1657      feedId
1658      listingId
1659      resolvedFromListing
1660      listingCardAttribution
1661      listingDetailCourtesy
1662      listingDetailFooter
1663      logo
1664    }
1665  }
1666`;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 >
1666 .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=)
1666)|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=`
1667      <div id="modal-${r.id}" class="modal visible">
1668        <div class="modal-content">
1669          <div class="lightbox-video">
1670            <div class="video-player">
1671              <div class="embed-container">
1672                ${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>`}
1673              </div>
1674            </div>
1675          </div>
1676        </div>
1677        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
1678      </div>
1679    `;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
1679=>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");
1679let 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
1679URIComponent(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=`
1680      <button class="lp-lightbox__close" aria-label="close modal"></button>
1681      <div class="lp-lightbox__content">
1682        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
1683          <div class="splide__arrows">
1684            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
1685            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
1686          </div>
1687          <div class="splide__track">
1688            <ul class="splide__list"></ul>
1689          </div>
1690        </div>
1691      </div>
1692    `,"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
1692h(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=`
1693        <button class="lp-lightbox__close" aria-label="close modal"></button>
1694        <div class="lp-lightbox__content">
1695          <div class="lp-lightbox__carousel"></div>
1696        </div>
1697      `,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"}
1697)),(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"];
1697return 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=`
1698      query {
1699        validSession {
1700          success
1701        }
1702      }
1703    `;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","
1703spaceTypeIds","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];
1703if("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})}})();
1704//# sourceMappingURL=lp-sdk.js.map
1705
1706    </script>
1706
1707
1708    
1708<script>
1709        var lpGlobalInitialized = false;
1710
1711        function lpGlobalInit () {
1712          if (lpGlobalInitialized) {
1713            return;
1714          }
1715            lpGlobalInitialized = true;
1716            // Initialize wow animation plugin only according to turbolinks
1717            var wow;
1718            if (window.WOW) {
1719                wow = new WOW({
1720                    animateClass: 'animated',
1721                    offset: wowOffset,
1722                    live: false,
1723                    callback: function(box) {}
1724                });
1725            }
1726            // Initialize handlebar helpers only once
1727            function handlebarsInit() {
1728              if (!window.Handlebars) {
1729                return;
1730              }
1731              HandlebarsIntl.registerWith(Handlebars);
1732              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
1733            }
1734
1735            handlebarsInit();
1736
1737            /* Initialize Luxury Presence SDK */
1738            try {
1739                window.luxuryPresence.config.setCompany("b0108bde-2b87-474d-8bcd-d7fcfd16c5cc", {});
1740                window.luxuryPresence.config.setWebsite("be227485-eaf0-455b-aee0-a0e351474420", {
1741                    myhomeDashboardEnabled: true,
1742                    mlsEnabled: true,
1743                    hstValuationRedirectEnabled: true,
1744                    hvStepTwoCaptureEnabled: false
1745                });
1746                const url = new URL(window.location.href);
1747                const shareId = url.searchParams.get('shareId');
1748                window.luxuryPresence.config.setPage("f8bf671a-859a-442e-bad2-5679ce8ef9b4", {
1749                    sourceResource: "",
1750                    pageElementId: "",
1751                    pageQueryVariables: {},
1752                    shareId: "",
1753                });
1754                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
1755                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
1756                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
1757                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
1758                  window.luxuryPresence.config.setEventBus({
1759                    enabled: true,
1760                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
1761                    url: "https://p.luxurypresence.com",
1762                  });
1763                window.luxuryPresence.config.setTemplateId("34ae9410-e2da-4ccb-947e-bdaa3b48f731", {});
1764                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
1765                window.luxuryPresence.buttons.initialize({});
1766                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
1767                window.luxuryPresence.contactForms.initialize({});
1768                window.luxuryPresence.validation.initialize({});
1769                window.luxuryPresence.expandSliders.initialize({});
1770                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
1771                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
1772                /* Optional: cached pages / older SDKs may not carry this controller */
1773                window.luxuryPresence.currencyConversion?.initialize();
1774            } catch (e) {
1775                console.log(e);
1776            }
1777
1778            /* Inject Section Specific Javascript */
1779                try {
1780(function init(sectionDomId) {
1781  let address = $('#' + sectionDomId + " .company_address").text().trim();
1782  $('#' + sectionDomId + " .company_address").text(address);
1783  function setHttp(link) {
1784    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
1785      link = 'http://' + link;
1786    }
1787    return link;
1788  }
1789  $(`#${sectionDomId} .contact-form__form`).on('reset', () => {
1790    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
1791    if (redirectLink.length) {
1792      const rawHref = redirectLink.attr('href');
1793      redirectLink.attr('href', setHttp(rawHref));
1794      redirectLink[0].click();
1795    }
1796  });
1797})('modal-global-contact-us');
1798} catch(e) {
1799console.log(e);
1800}
1801                
1802                try {
1803(function init(sectionDomId) {
1804  var resizeMenu = function () {
1805    var widthSoFar = 0;
1806    var availableWidth = $('#' + sectionDomId + ' .navigation').width();
1807    if ($(window).width() > 1024) {
1808      $('#' + sectionDomId + ' .navigation > li').each(function () {
1809        $(this).hide();
1810        const currentItemWidth = $(this).outerWidth();
1811        if (availableWidth - widthSoFar >= currentItemWidth) $(this).css({
1812          "visibility": "visible",
1813          "display": "list-item",
1814          "height": "auto"
1815        });
1816        widthSoFar += $(this).outerWidth();
1817      });
1818    }
1819  };
1820  $(window).on('resize.lpui-auto-clean', resizeMenu);
1821  const mediaQuery = window.matchMedia('(hover: hover) and (pointer: fine)');
1822  var $subNavTrigger = $('body > nav .sub-nav-container a');
1823  var $subNavContainer = $('body > nav .sub-nav-container');
1824  if (mediaQuery.matches) {
1825    $subNavTrigger.off('click');
1826    $subNavContainer.mouseout(function () {
1827      var self = $(this);
1828      self.removeClass('active').find('.sub-nav').removeClass('visible');
1829    }).mouseover(function () {
1830      $(this).siblings('.sub-nav-container').removeClass('active').find('.sub-nav').removeClass('visible');
1831      $(this).addClass('active').find('.sub-nav').addClass('visible');
1832    }).mouseup(function () {
1833      var self = $(this);
1834      self.toggleClass('active');
1835    });
1836  }
1837  function isSectionLight(sect) {
1838    if (!sect || !sect.style) {
1839      return true;
1840    }
1841    if (sect.style.backgroundImage) {
1842      return false;
1843    }
1844    if ($(sect).children('.video-wrapper').length) {
1845      return false;
1846    }
1847    return sect.classList.contains('is-background-color-light');
1848  }
1849  const $header = $(`#${sectionDomId} > .header`);
1850  if ($header.hasClass('theme-auto')) {
1851    if (isSectionLight($('body > section')[0])) {
1852      $header.removeClass('theme-light');
1853    } else {
1854      $header.addClass('theme-light');
1855    }
1856  }
1857  var resizeTimeout;
1858  clearTimeout(resizeTimeout);
1859  resizeTimeout = setTimeout(function () {
1860    resizeMenu();
1861  }, 1000);
1862})('global-navbar');
1863} catch(e) {
1864console.log(e);
1865}
1866                try {
1867(function init(sectionDomId, options) {
1868  var elementSelector = options.elementSelector || 'nav';
1869  var element = document.querySelector(elementSelector);
1870  var sections = document.querySelectorAll('body > section');
1871  var subNavContainers = element.querySelectorAll('.sub-nav');
1872  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
1873  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
1874  var fontColor = options.fontColor || '#fff';
1875  var fontColorScroll = options.fontColorScroll || '#000';
1876  var didScroll = false;
1877  var lastScrollTop = 0;
1878  var delta = 5;
1879
1880  // eslint-disable-next-line sonarjs/no-collapsible-if
1881  if (wow) {
1882    // Wowjs might not trigger for position fixed elements
1883    if (window.scrollY > 0) {
1884      element.querySelectorAll('.wow').forEach(el => wow.show(el));
1885    }
1886  }
1887  function adjustNavPinState() {
1888    // Remove 'visible' class from all subNavContainers
1889    for (let i = 0; i < subNavContainers.length; i++) {
1890      subNavContainers[i].classList.remove('visible');
1891    }
1892    if (window.scrollY > 0) {
1893      element.style.backgroundColor = backgroundColorScroll;
1894      element.style.color = fontColorScroll;
1895      element.classList.add('scroll');
1896    } else {
1897      element.style.backgroundColor = initialBackgroundColor;
1898      element.style.color = fontColor;
1899      element.classList.remove('scroll');
1900    }
1901  }
1902  adjustNavPinState();
1903  function onScroll() {
1904    didScroll = true;
1905  }
1906  window.addEventListener('scroll', onScroll);
1907
1908  // eslint-disable-next-line
1909  var debounceInterval = setInterval(() => {
1910    if (didScroll) {
1911      // eslint-disable-next-line
1912      hasScrolled();
1913      didScroll = false;
1914    }
1915  }, 250);
1916  function hasScrolled() {
1917    adjustNavPinState();
1918    // eslint-disable-next-line
1919    var navbarHeight = element.offsetHeight;
1920    // eslint-disable-next-line
1921    var st = window.scrollY;
1922
1923    // Make sure they scroll more than delta
1924    if (Math.abs(lastScrollTop - st) <= delta) {
1925      return;
1926    }
1927    if (st > lastScrollTop && st > navbarHeight) {
1928      // Scroll Down
1929      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
1930      document.documentElement.style.setProperty('--global-header-height', '0px');
1931
1932      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
1933      sections.forEach(section => {
1934        if (section.classList.contains('sticky')) {
1935          section.style.top = '0px';
1936        }
1937      });
1938    } else {
1939      // Scroll Up
1940      // eslint-disable-next-line
1941      if (st + window.innerHeight < document.documentElement.scrollHeight) {
1942        element.style.transform = `translateY(0) scaleY(1)`;
1943        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
1944        sections.forEach(section => {
1945          if (section.classList.contains('sticky')) {
1946            section.style.top = `${navbarHeight}px`;
1947          }
1948        });
1949      }
1950    }
1951    lastScrollTop = st;
1952  }
1953})('NAVBAR', JSON.parse("{\"fontColor\":\"#211F1F\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#ffffff\",\"backgroundColorScroll\":\"#2C3426\",\"initialBackgroundColor\":\"transparent\"}"));
1954} catch(e) {
1955console.log(e);
1956}
1957                try {
1958(function init(sectionDomId) {
1959  sectionDomId = "global-sidemenu";
1960  var $sidemenu = $('#' + sectionDomId);
1961  const subNavItems = $('body > div.sidemenu .sub-nav-container .sub-nav__item');
1962  const hideSubNavItems = () => {
1963    subNavItems.removeClass('fadeInUp');
1964  };
1965  const showSubNavItems = subnav => {
1966    if ($(subnav).find('.arrow').hasClass('active')) {
1967      $(".sidemenu").find('.arrow').removeClass('active');
1968    } else {
1969      $(".sidemenu").find('.arrow').removeClass('active');
1970      $(subnav).find('.arrow').addClass('active');
1971    }
1972    let i = 0;
1973    subnav.find('.sub-nav__item').each((idx, item) => {
1974      i++;
1975      var timeout;
1976      clearTimeout(timeout);
1977      timeout = setTimeout(() => {
1978        $(item).addClass('fadeInUp');
1979      }, 100 + i * 50);
1980    });
1981  };
1982  $(document).on("click", function (e) {
1983    if ($(e.target).closest(".navigation").length < 1) {
1984      hideSubNavItems();
1985    }
1986  });
1987  $('body > div.sidemenu .sub-nav-container > a').click(function (e) {
1988    const subnavContainer = $(this).closest('.sub-nav-container');
1989    hideSubNavItems();
1990    showSubNavItems(subnavContainer);
1991  });
1992  const hideSideMenu = () => {
1993    $('body > div.sidemenu').removeClass('visible');
1994  };
1995  $('body > div.sidemenu .navigation .navigation__item:not(.sub-nav-container) .navigation__link').on('click', function (e) {
1996    onHide();
1997    hideSideMenu();
1998  });
1999  $('body > div.sidemenu .sub-nav-container .sub-nav__link').on('click', function (e) {
2000    onHide();
2001    setTimeout(() => {
2002      hideSideMenu();
2003    }, 1601);
2004  });
2005  var shown = false;
2006  function onShow() {
2007    if (shown) {
2008      return;
2009    }
2010    shown = true;
2011    window.lpUI.requestScrollLock(sectionDomId);
2012    $('#' + sectionDomId + ' .navigation__link').removeClass('fade-in');
2013    $('#' + sectionDomId + ' .lp-socials__link').removeClass('fade-in');
2014    let i = 0;
2015    $('#' + sectionDomId + ' .navigation__link').each(function () {
2016      i++;
2017      setTimeout(() => {
2018        $(this).addClass('fade-in');
2019      }, 900 + i * 50);
2020    });
2021    $('#' + sectionDomId + ' .lp-socials__link').each(function () {
2022      i++;
2023      setTimeout(() => {
2024        $(this).addClass('fade-in');
2025      }, 900 + i * 50);
2026    });
2027  }
2028  function onHide() {
2029    hideSubNavItems();
2030    if (!shown) {
2031      return;
2032    }
2033    $('#' + sectionDomId + ' .lp-socials__link').removeClass('fade-in');
2034    let i = 0;
2035    $($('#' + sectionDomId + ' .navigation__link').get().reverse()).each(function () {
2036      i++;
2037      setTimeout(() => {
2038        $(this).removeClass('fade-in');
2039      }, i * 50);
2040    });
2041    shown = false;
2042    setTimeout(() => {
2043      window.lpUI.releaseScrollLock(sectionDomId);
2044    }, 1600);
2045  }
2046  $sidemenu.on('lpui-show', onShow);
2047  $sidemenu.on('lpui-hide', onHide);
2048})('global-sidemenu');
2049} catch(e) {
2050console.log(e);
2051}
2052                
2053                try {
2054(function init(sectionDomId) {
2055  function setHttp(link) {
2056    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
2057      link = 'http://' + link;
2058    }
2059    return link;
2060  }
2061  $(`#${sectionDomId} form`).on("reset", function () {
2062    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
2063    if (redirectLink.length) {
2064      const rawHref = redirectLink.attr('href');
2065      redirectLink.attr('href', setHttp(rawHref));
2066      redirectLink[0].click();
2067    }
2068  });
2069})('global-footer');
2070} catch(e) {
2071console.log(e);
2072}
2073                
2074                try {
2075(function init(sectionDomId) {
2076  var _section = $('#' + sectionDomId);
2077  var _footer = document.getElementById('global-footer');
2078  const redirectLink = _section.find('.js-redirect-link');
2079  function setHttp(link) {
2080    if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) {
2081      link = 'https://' + link;
2082    }
2083    return link;
2084  }
2085  function redirectPage(link) {
2086    if (link.length) {
2087      window.location.href = setHttp(link.attr('href'));
2088    }
2089  }
2090  const emailInput = _section.find('.js-email-input');
2091  const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/;
2092  emailInput.on('input', function () {
2093    if (emailRegex.test(this.value)) {
2094      this.setCustomValidity('');
2095    } else {
2096      this.setCustomValidity('Please enter a valid email address.');
2097    }
2098    this.reportValidity();
2099  });
2100  _section.find('input[name="name"]').on("keyup", function () {
2101    if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") {
2102      this.setCustomValidity("Please input your first name and last name.");
2103    } else {
2104      this.setCustomValidity("");
2105    }
2106  });
2107  _section.find('form').on("reset", function () {
2108    $(this).addClass("show-success");
2109    redirectPage(redirectLink);
2110  });
2111  $(window).scroll(function () {
2112    if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible');
2113  });
2114  _section.find('.close-btn, .connect-btn').click(function () {
2115    _section.find('.pop-up').toggle();
2116    _section.find('.btn-holder').toggle();
2117  });
2118  if (!_footer) return;
2119  const observer = new IntersectionObserver(entries => {
2120    entries.forEach(entry => {
2121      if (entry.isIntersecting) _section.hide();else _section.show();
2122    });
2123  }, {
2124    threshold: 0.1
2125  });
2126  observer.observe(_footer);
2127  function selectToDropdown(selectItem) {
2128    let customDropdown = `
2129        <div class="custom-select" role="presentation">
2130        <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button>
2131        <div class="custom-select-menu" style="display: none;max-height: none;">
2132        <div class="custom-select-content">
2133        </div>
2134        </div>
2135        </div>`;
2136    $(customDropdown).insertAfter(selectItem);
2137    let $dropdown = $($(selectItem).next());
2138    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
2139    let $dropdownMenu = $dropdown.find(".custom-select-menu");
2140    let $dropdownContent = $dropdown.find(".custom-select-content");
2141    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
2142    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
2143    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
2144    appendOptionButtons(selectItem, $dropdownContent);
2145    $(selectItem).removeClass().addClass("sr-only");
2146    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
2147    $dropdownToggle.html(toggleText);
2148    $dropdown.on("click", ".custom-select-item", function (e) {
2149      if ($(this).hasClass("is-disabled")) return;
2150      let elementNumber = $(this).index();
2151      let $originalSelect = $(this).closest(".custom-select").siblings("select");
2152      let $linkedOption = $originalSelect.find("option").eq(elementNumber);
2153      if (!$linkedOption.prop("selected")) {
2154        $linkedOption.prop("selected", true);
2155        $originalSelect.change();
2156        $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
2157        $dropdownToggle.html($(this).html());
2158        closeSelectMenu($(this).closest(".custom-select-menu"));
2159      }
2160      $dropdownToggle.removeClass("is-placeholder");
2161    });
2162    function convertOptionToButton(option) {
2163      var optionText = $(option).text();
2164      var optionValue = $(option).attr("value") || $(option).text();
2165      var optionIsDisabled = $(option).prop("disabled");
2166      var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
2167      return outputButton;
2168    }
2169    function appendOptionButtons(selectItem, appendTarget) {
2170      $(selectItem).find("option").each(function () {
2171        let currentButton = convertOptionToButton(this);
2172        $(appendTarget).append(currentButton);
2173      });
2174    }
2175    function showSelectMenu(selectMenu) {
2176      var customSelect = $(selectMenu).closest(".custom-select")[0];
2177      $(customSelect).addClass("open");
2178      $(selectMenu).slideDown();
2179    }
2180    function closeSelectMenu(selectMenu) {
2181      var customSelect = $(selectMenu).closest(".custom-select")[0];
2182      $(customSelect).removeClass("open");
2183      $(selectMenu).slideUp();
2184    }
2185    $dropdown.on("click", ".custom-select-toggle", function (e) {
2186      var $customSelect = $(this).closest(".custom-select");
2187      var selectMenu = $customSelect.find(".custom-select-menu")[0];
2188      if ($customSelect.hasClass("open")) {
2189        closeSelectMenu(selectMenu);
2190      } else {
2191        showSelectMenu(selectMenu);
2192      }
2193    });
2194    $(document).on("click", function (e) {
2195      if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) {
2196        $(".custom-select.open").each(function () {
2197          var selectMenu = $(this).find(".custom-select-menu")[0];
2198          closeSelectMenu(selectMenu);
2199        });
2200      }
2201    });
2202  }
2203  $(".pop-up select[name='interest']").each(function () {
2204    selectToDropdown(this);
2205  });
2206})('global-mobile-contact');
2207} catch(e) {
2208console.log(e);
2209}
2210                
2211                try {
2212(function init(sectionDomId) {
2213  const $section = $('#' + sectionDomId);
2214  const $videoWrap = $section.find('.full-screen-video-component > .video-wrapper');
2215  const $playButton = $section.find('.js-play-btn');
2216  if ($videoWrap.length) {
2217    const $video = $videoWrap.find('video');
2218    $video.each(function () {
2219      var v = this;
2220      if (v.readyState > 0) {
2221        $videoWrap.addClass('playing');
2222        var promise = v.play();
2223        if (promise !== undefined) {
2224          promise.catch(error => {
2225            $playButton.addClass('visible');
2226          }).then(() => {});
2227        }
2228      } else {
2229        v.addEventListener('canplay', function () {
2230          $videoWrap.addClass('playing');
2231        }, {
2232          once: true
2233        });
2234      }
2235    });
2236  }
2237  $playButton.on('click', function () {
2238    const $video = $videoWrap.find('video');
2239    this.classList.remove('visible');
2240    if ($video[0].currentTime === 0) {
2241      $video[0].load();
2242      $video[0].play();
2243    }
2244  });
2245  window.luxuryPresence.mapApiLoader.load().then(() => {
2246    const $searchWrapper = $section.find('.search-wrapper');
2247    if (!$searchWrapper.length) {
2248      return;
2249    }
2250    const searchMls = $searchWrapper[0].dataset.searchMls === 'true';
2251    const searchProperties = $searchWrapper[0].dataset.searchProperties === 'true';
2252    const searchPlaces = searchMls;
2253    const showNeighborhoods = searchMls;
2254    const searchNearEnabled = searchMls;
2255    const $searchInput = $section.find('.search-input');
2256    const $searchResults = $section.find('.search-results');
2257    const $resultsContainer = $section.find('.results-container');
2258    const $loader = $section.find('.search-in-progress');
2259    const $predefined = $section.find('.predefined-links');
2260    const $searchBtn = $section.find('.search-button');
2261    const $leaseFalseButton = $section.find('.jsLeaseFalse');
2262    const $leaseTrueButton = $section.find('.jsLeaseTrue');
2263    const $nextSection = $section.next();
2264    const fixZIndex = $nextSection.length && parseInt($nextSection.css('z-index')) || 1;
2265    const searchDelay = 300;
2266    const maxPlaces = 3;
2267    const maxMls = 5;
2268    const leaseFilter = $leaseFalseButton.length > 0 && $leaseTrueButton.length > 0;
2269    const service = new google.maps.places.AutocompleteService();
2270    const geocoder = new google.maps.Geocoder();
2271    var keyword;
2272    var leasePropertyState = false;
2273    var leasePropertySearched;
2274    var searchActive = false;
2275    var isLoading = false;
2276    function showSearchResults() {
2277      searchActive = true;
2278      updateSearchDisplay();
2279    }
2280    function hideSearchResults() {
2281      searchActive = false;
2282      updateSearchDisplay();
2283    }
2284    function showLoading() {
2285      isLoading = true;
2286      updateSearchDisplay();
2287    }
2288    function hideLoading() {
2289      isLoading = false;
2290      updateSearchDisplay();
2291    }
2292    function updateSearchDisplay() {
2293      if (leaseFilter) {
2294        if (leasePropertyState) {
2295          $leaseTrueButton.addClass('active');
2296          $leaseFalseButton.removeClass('active');
2297        } else {
2298          $leaseFalseButton.addClass('active');
2299          $leaseTrueButton.removeClass('active');
2300        }
2301      }
2302      if (!searchActive) {
2303        $searchResults.removeClass('show');
2304        $searchResults.css('height', '0');
2305        return;
2306      }
2307      var hasResults = !!$resultsContainer.html();
2308      var hasPredefined = $predefined.find('a:not(.not-processed)').length > 0;
2309      if (hasResults) {
2310        $predefined.addClass('not-visible');
2311        $loader.addClass('not-visible');
2312        $resultsContainer.removeClass('not-visible');
2313      } else if (isLoading) {
2314        $resultsContainer.addClass('not-visible');
2315        $predefined.addClass('not-visible');
2316        $loader.removeClass('not-visible');
2317      } else if (hasPredefined) {
2318        $resultsContainer.addClass('not-visible');
2319        $loader.addClass('not-visible');
2320        $predefined.removeClass('not-visible');
2321      } else {
2322        $resultsContainer.addClass('not-visible');
2323        $loader.addClass('not-visible');
2324        $predefined.addClass('not-visible');
2325      }
2326      var height = 0;
2327      height += $predefined[0].getBoundingClientRect().height;
2328      height += $resultsContainer[0].getBoundingClientRect().height;
2329      height += $loader[0].getBoundingClientRect().height;
2330      if (height > 0) {
2331        $searchResults.addClass('show');
2332      } else {
2333        $searchResults.removeClass('show');
2334      }
2335      $searchResults.css('height', height + 'px');
2336    }
2337    function clearSelection() {
2338      $searchResults.find('.selected-link').removeClass('selected-link');
2339    }
2340    function moveSelection(up) {
2341      var $cont = $resultsContainer.html() ? $resultsContainer : $predefined;
2342      var $links = $cont.find('.results-link');
2343      if (!$links.length) {
2344        return;
2345      }
2346      var idx = -1;
2347      $links.each(function (i) {
2348        if (idx === -1 && $(this).is('.selected-link')) {
2349          idx = i;
2350        }
2351      });
2352      var newIdx;
2353      if (up) {
2354        newIdx = idx - 1;
2355        if (newIdx < 0) {
2356          newIdx = $links.length - 1;
2357        }
2358      } else {
2359        newIdx = idx + 1;
2360        if (newIdx > $links.length - 1) {
2361          newIdx = 0;
2362        }
2363      }
2364      if (newIdx !== idx) {
2365        $searchResults.find('.selected-link').removeClass('selected-link');
2366        $($links.get(newIdx)).addClass('selected-link');
2367      }
2368    }
2369    var newSearchTimer;
2370    function inputChanged(ev) {
2371      if (ev.which === 38) {
2372        ev.preventDefault();
2373        moveSelection(true);
2374        return false;
2375      }
2376      if (ev.which === 40) {
2377        ev.preventDefault();
2378        moveSelection();
2379        return false;
2380      }
2381      if (ev.which === 13) {
2382        $lnk = $searchResults.find('.selected-link');
2383        if ($lnk.length) {
2384          $lnk[0].click();
2385          hideSearchResults();
2386        } else {
2387          $searchBtn.click();
2388        }
2389      }
2390      window.clearTimeout(newSearchTimer);
2391      newSearchTimer = window.setTimeout(startSearch, searchDelay);
2392    }
2393    function startSearch() {
2394      const term = $searchInput.val();
2395      if (term === keyword && leasePropertySearched === leasePropertyState) {
2396        return;
2397      }
2398      leasePropertySearched = leasePropertyState;
2399      keyword = term;
2400      if (term) {
2401        doSearch(term, leasePropertySearched);
2402      } else {
2403        setResults(null);
2404      }
2405    }
2406    function mlsSearch(term, leaseProperty) {
2407      var query = {
2408        keyword_search: term,
2409        limit: maxMls
2410      };
2411      if (leaseFilter && leaseProperty) {
2412        query.lease_property = true;
2413      }
2414      return superagent.get(window.location.protocol + '//' + window.location.host + '/home-search/listings.json').query(query).then(function (res) {
2415        if (!Array.isArray(res.body)) {
2416          return [];
2417        }
2418        return res.body.map(function (item) {
2419          return {
2420            id: item.id,
2421            display_address: [item.address_1, item.city, [item.state, item.postal_code].filter(function (i) {
2422              return i;
2423            }).join(' ')].filter(function (i) {
2424              return i;
2425            }).join(', ')
2426          };
2427        });
2428      }, function (e) {
2429        console.log(e);
2430        return [];
2431      });
2432    }
2433    function resolveGeoBounds(placeId, description, terms) {
2434      return new Promise(function (resolve, reject) {
2435        geocoder.geocode({
2436          'placeId': placeId
2437        }, function (results, status) {
2438          if (status != 'OK') {
2439            return resolve(null);
2440          }
2441          var result = results[0];
2442          var bounds = new google.maps.LatLngBounds();
2443          bounds.extend(result.geometry.viewport.getSouthWest());
2444          bounds.extend(result.geometry.viewport.getNorthEast());
2445          result.geometry.bounds = bounds.toJSON();
2446          var placeUrl = window.luxuryPresence.makeMlsLink(result);
2447          return resolve({
2448            placeUrl: placeUrl,
2449            description: description,
2450            cityName: terms[0].value,
2451            stateName: terms[1].value
2452          });
2453        });
2454      });
2455    }
2456    function resolveAutocomplete(term, deeper) {
2457      var request = {
2458        input: term,
2459        componentRestrictions: {
2460          country: 'us'
2461        },
2462        types: deeper ? ['geocode'] : ['(regions)'],
2463        limit: 1
2464      };
2465      return new Promise(function (resolve, reject) {
2466        service.getPlacePredictions(request, function (results, status) {
2467          if (status !== google.maps.places.PlacesServiceStatus.OK) {
2468            resolve(null);
2469            return;
2470          }
2471          if (!Array.isArray(results)) {
2472            resolve(null);
2473            return;
2474          }
2475          if (deeper) {
2476            var allowedTypes = {
2477              'neighborhood': true,
2478              'administrative_area_level_3': true,
2479              'administrative_area_level_4': true,
2480              'administrative_area_level_5': true,
2481              'sublocality_level_1': true,
2482              'sublocality_level_2': true,
2483              'sublocality_level_3': true
2484            };
2485            results = results.filter(function (res) {
2486              return res.types.find(t => allowedTypes[t]);
2487            });
2488          }
2489          if (!results.length) {
2490            resolve(null);
2491            return;
2492          }
2493          resolve(results);
2494        });
2495      });
2496    }
2497    var placesResult = {};
2498    function placesSearch(term, ignoreInput) {
2499      if (placesResult.term !== term) {
2500        placesResult = {
2501          term: term,
2502          result: resolveAutocomplete(term).then(function (results) {
2503            if (!ignoreInput && term !== keyword) {
2504              return null;
2505            }
2506            if (ignoreInput && !results) {
2507              return resolveAutocomplete(term, true);
2508            }
2509            return results;
2510          }).then(function (results) {
2511            if (!ignoreInput && term !== keyword) {
2512              return [];
2513            }
2514            if (!results) {
2515              return [];
2516            }
2517            var geoResultPromises = results.map(function (result) {
2518              return resolveGeoBounds(result.place_id, result.description, result.terms);
2519            });
2520            return Promise.all(geoResultPromises).then(function (geoLinks) {
2521              return geoLinks.filter(function (i) {
2522                return i;
2523              }).slice(0, maxPlaces);
2524            });
2525          })
2526        };
2527      }
2528      return placesResult.result;
2529    }
2530    function propertiesSearch(term, leaseProperty) {
2531      var payload = {
2532        companyId: window.luxuryPresence.defaults.companyId,
2533        search: term,
2534        offset: 0,
2535        limit: 6,
2536        statusIds: ["5f528253-abb7-484e-95c3-330269ac1105", "959c11cf-8655-4f91-874c-292b0ab7ea6b", "a0012964-4f51-4430-abf8-6547c5ab6441", "df04ccbe-4621-4140-a504-ee1a17430bb7", "88b4ace6-f39b-4b25-a051-8f6dba976833", "96031d77-bbe5-4de3-90d8-1e4e70de8ca8"]
2537      };
2538      if (leaseFilter) {
2539        payload.leaseProperty = !!leaseProperty;
2540      }
2541      var gqlQuery = 'query ($companyId: String, $search: String, $offset: Int, $limit: Int, $propertyStatusId: [String!], $leaseProperty: Boolean) {properties (companyId: $companyId, search: $search, offset: $offset, limit: $limit, propertyStatusId: $propertyStatusId, leaseProperty: $leaseProperty) {items {id name slug fullAddress privateAddress}}}';
2542      return superagent.post(window.luxuryPresence.defaults.routerUrl + '/graphql').send({
2543        query: gqlQuery,
2544        variables: window.luxuryPresence.routerApi.transformVariables('properties', payload)
2545      }).then(function (res) {
2546        var data = res.body.data || {};
2547        var page = data.properties || {};
2548        return page.items || [];
2549      }, function (err) {
2550        return [];
2551      });
2552    }
2553    function doSearch(term, leaseProperty) {
2554      showLoading();
2555      Promise.all([searchMls ? mlsSearch(term, leaseProperty) : [], searchPlaces ? placesSearch(term) : [], searchProperties ? propertiesSearch(term, leaseProperty) : []]).then(function (res) {
2556        if (term !== keyword) {
2557          return;
2558        }
2559        setResults(res[0], res[1], res[2], leaseProperty);
2560      });
2561    }
2562    function makeResultsBlockHtml(title, links) {
2563      if (!links || !links.length) {
2564        return '';
2565      }
2566      var html = '<div class="results-block">';
2567      html += '<div class="results-block-title">';
2568      if (searchNearEnabled) {
2569        html += '<div class="search-near-container"><a class="search-near lp-link lp-link--light">Search Near Me</a></div>';
2570      }
2571      html += '<div class="results-title-label">' + title + '</div></div>';
2572      html += links.join('') + '</div>';
2573      return html;
2574    }
2575    function setResults(mlsResults, placesResults, propertiesResults, leaseProperty) {
2576      clearSelection();
2577      hideLoading();
2578      if (!mlsResults) {
2579        $resultsContainer.html('');
2580        updateSearchDisplay();
2581        return;
2582      }
2583      if (!mlsResults.length && !placesResults.length && !propertiesResults.length) {
2584        $resultsContainer.html('<div class="nothing-found">No results found</div>');
2585        updateSearchDisplay();
2586        return;
2587      }
2588      var propertiesHtml = makeResultsBlockHtml('Featured Properties', propertiesResults.map(function (result) {
2589        return `<a href="/properties/${result.slug}" class="results-link">${result.privateAddress ? result.name : result.fullAddress}</a>`;
2590      }));
2591      var placesHtml = makeResultsBlockHtml('Locations', placesResults.map(function (result) {
2592        return `<a class="results-link" href="${result.placeUrl}${leaseProperty ? '&lease_property=true' : ''}&cityName=${result.cityName}&stateName=${result.stateName}">${result.description}</a>`;
2593      }));
2594      var mlsHtml = makeResultsBlockHtml('Address', mlsResults.map(function (result) {
2595        return `<a href="/home-search/listings/${result.id}" class="results-link">${result.display_address}</a>`;
2596      }));
2597      $resultsContainer.html(propertiesHtml + placesHtml + mlsHtml);
2598      updateSearchDisplay();
2599    }
2600    function searchBtnClicked() {
2601      var resultsBlockHref = $("#" + sectionDomId + " .results-block .results-link").attr("href");
2602      const term = $searchInput.val();
2603      if (!term) {
2604        return;
2605      }
2606      if (searchMls) {
2607        window.location.href = resultsBlockHref;
2608        return;
2609      }
2610      if (searchProperties) {
2611        window.location.href = "/properties/sale";
2612      }
2613    }
2614    var neighborhoods = null;
2615    function fetchNeighborhoods() {
2616      var url = window.luxuryPresence.defaults.routerUrl;
2617      var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'neighborhoods (companyId: $companyId, offset: $offset, limit: $limit) {items {id, name, mlsLink, googlePlaceData}}}';
2618      var payload = {};
2619      payload.offset = 0;
2620      payload.limit = 100;
2621      payload.companyId = window.luxuryPresence.defaults.companyId;
2622      return superagent.post(url + '/graphql').withCredentials().send({
2623        query: gqlQuery,
2624        variables: payload
2625      }).then(function (res) {
2626        var data = res.body.data && res.body.data.neighborhoods;
2627        neighborhoods = data && data.items || null;
2628        if (neighborhoods && !neighborhoods.length) {
2629          neighborhoods = null;
2630        }
2631      });
2632    }
2633    function setPredefinedNeighborhoods() {
2634      return fetchNeighborhoods().then(function () {
2635        if (!neighborhoods) {
2636          return;
2637        }
2638        var leaseProperty = leaseFilter && leasePropertyState;
2639        var placesHtml = makeResultsBlockHtml('Locations', neighborhoods.map(function (item) {
2640          return `<a class="results-link" href="${item.mlsLink}${leaseProperty ? '&lease_property=true' : ''}">${item.googlePlaceData && item.googlePlaceData.formatted_address || item.name}</a>`;
2641        }));
2642        $predefined.html(placesHtml);
2643        updateSearchDisplay();
2644      });
2645    }
2646    if (showNeighborhoods) {
2647      setPredefinedNeighborhoods();
2648    }
2649    $searchInput.on('focus', showSearchResults);
2650    $searchInput.on('keyup focus', inputChanged);
2651    $searchResults.on('mouseenter', '.results-link', function (ev) {
2652      clearSelection();
2653    });
2654    $searchBtn.on('click', searchBtnClicked);
2655    $leaseFalseButton.on('click', function () {
2656      if (leasePropertyState) {
2657        leasePropertyState = false;
2658        if (showNeighborhoods) {
2659          setPredefinedNeighborhoods();
2660        }
2661        updateSearchDisplay();
2662        setResults(null);
2663        startSearch();
2664      }
2665    });
2666    $leaseTrueButton.on('click', function () {
2667      if (!leasePropertyState) {
2668        leasePropertyState = true;
2669        if (showNeighborhoods) {
2670          setPredefinedNeighborhoods();
2671        }
2672        updateSearchDisplay();
2673        setResults(null);
2674        startSearch();
2675      }
2676    });
2677    function createPolygonUrl(center, radius, n) {
2678      var step = Math.PI * 2 / n;
2679      var angle = 0 - step / 2;
2680      var points = [];
2681      var kx = 1.0 / Math.cos(center[1] * Math.PI / 180);
2682      for (var i = 0; i < n; i++) {
2683        points.push('[' + (center[0] + radius * Math.sin(angle) * kx).toFixed(5) + ',' + (center[1] - radius * Math.cos(angle)).toFixed(5) + ']');
2684        angle += step;
2685      }
2686      points.push(points[0]);
2687      var str = '[[' + points.join(',') + ']]';
2688      return '&polygon=' + encodeURIComponent(str);
2689    }
2690    function makeNearMeUrl(center, leaseProperty) {
2691      var url = '/home-search/listings?search_type=envelope';
2692      if (leaseProperty) {
2693        url += '&lease_property=true';
2694      }
2695      var distance = 0.11;
2696      var lat = center[1];
2697      var lng = center[0];
2698      url += '&south=' + (lat - distance);
2699      url += '&north=' + (lat + distance);
2700      url += '&west=' + (lng - distance);
2701      url += '&east=' + (lng + distance);
2702      url += createPolygonUrl(center, distance, 54);
2703      return url;
2704    }
2705    var $locMsg = null;
2706    $section.on('click', '.search-near', function () {
2707      showLoading();
2708      navigator.geolocation.getCurrentPosition(function (position) {
2709        hideLoading();
2710        hideSearchResults();
2711        if (!position || !position.coords || !position.coords.latitude || !position.coords.longitude) {
2712          showLocationMessage('Unknown Location', '<p>Getting position of your device failed.</p><p>
2712You can type your address manually in the search field</p>');
2713          return;
2714        }
2715        var url = makeNearMeUrl([position.coords.longitude, position.coords.latitude], leaseFilter && leasePropertyState);
2716        var link = document.createElement('a');
2717        link.href = url;
2718        link.class = 'lp-visually-hidden';
2719        $section[0].appendChild(link);
2720        link.click();
2721        setTimeout(function () {
2722          $section[0].removeChild(link);
2723        }, 100);
2724      }, function (geoError) {
2725        hideLoading();
2726        hideSearchResults();
2727        var title = 'Unknown Location';
2728        var msg;
2729        if (geoError.code === 1) {
2730          msg = '<p>To be able to search near you we need to know your current location.</p><p>If you don\'t want to give access to your device\'s location, you can type your address in the search field</p>';
2731        } else {
2732          msg = '<p>Getting position of your device failed.</p><p>You can type your address manually in the search field</p>';
2733        }
2734        showLocationMessage(title, msg);
2735      });
2736    });
2737    var locHideTimer = null;
2738    function showLocationMessage(title, message) {
2739      clearTimeout(locHideTimer);
2740      if (!$locMsg) {
2741        var html = `<div class="loc-msg-backdrop">
2742          <div class="loc-msg-wrap">
2743            <div class="loc-msg-modal">
2744              <div class="loc-msg-close"></div>
2745              <h4 class="loc-msg-title lp-h4"></h4>
2746              <div class="loc-msg-container"></div>
2747            </div>
2748          </div>
2749        </div>
2750        `;
2751        $locMsg = $(html);
2752        $locMsg.on('click', hideLocationMessage);
2753        $section.append($locMsg);
2754      }
2755      $locMsg.find('.loc-msg-container').html(message);
2756      $locMsg.find('.loc-msg-title').html(title);
2757      setTimeout(function () {
2758        if ($locMsg) {
2759          $section.addClass('visible-loc-msg');
2760        }
2761      });
2762    }
2763    function hideLocationMessage() {
2764      $section.removeClass('visible-loc-msg');
2765      locHideTimer = setTimeout(function () {
2766        $locMsg.remove();
2767        $locMsg = null;
2768      }, 400);
2769    }
2770    function outsideClickHandler(e) {
2771      if ($searchWrapper.find($(e.target)).length > 0) {
2772        return;
2773      }
2774      hideSearchResults();
2775    }
2776    $(document).on('click', outsideClickHandler);
2777    if ('geolocation' in navigator) {
2778      $searchWrapper.removeClass('search-near-hidden');
2779    }
2780    updateSearchDisplay();
2781  });
2782})('section-08c11126-4ca7-4355-a714-186817126398', 'undefined');
2783} catch(e) {
2784console.log(e);
2785}
2786                try {
2787(function init(sectionDomId, options) {
2788  let section = null;
2789  switch (sectionDomId) {
2790    case 'NAVBAR':
2791      section = document.querySelector('body > nav, #global-navbar');
2792      break;
2793    case 'FOOTER':
2794      section = document.querySelector('body > footer, #global-footer');
2795      break;
2796    case 'SIDEMENU':
2797      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2798      break;
2799    case 'CONTACT':
2800      section = document.querySelector('#modal-global-contact-us');
2801      break;
2802    case 'MOBILE_CONTACT':
2803      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2804      break;
2805    case 'SUBSCRIBE':
2806      // Subscribe Not Implemented
2807      section = null;
2808      break;
2809    case 'ACCOUNT':
2810      // Account Not Implemented
2811      section = null;
2812      break;
2813    default:
2814      section = document.querySelector('#' + sectionDomId);
2815  }
2816  if (!section) {
2817    return;
2818  }
2819
2820  // Where content / items are rendered
2821  const dataContainer = section.querySelector('.data-container');
2822  if (!dataContainer) {
2823    // no place to render items = no need to query server or do anything else
2824    return;
2825  }
2826  let variables = options.variables || {};
2827
2828  // Some variables in options may not have been injected - remove
2829  Object.keys(variables).forEach(function (variableName) {
2830    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2831      delete variables[variableName];
2832    }
2833  });
2834
2835  // Merge page query variables
2836  if (options.usePageResource) {
2837    variables = {
2838      ...variables,
2839      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2840    };
2841  }
2842
2843  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2844  // resolve the flag — fetchData reads the section stamp, aux fetches read
2845  // their own resource's stamp (auxUsesRouter).
2846  function apiUrl(useRouter) {
2847    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2848  }
2849
2850  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2851  // (options.routerApiAux is stamped per aux resource server-side).
2852  function auxUsesRouter(resource) {
2853    return !!(options.routerApiAux && options.routerApiAux[resource]);
2854  }
2855
2856  // Pagination Executes on a Numbered Pagination Container
2857  //  Or via a load more button
2858  let mode = 'BUTTONLESS_PAGINATION';
2859  const container = section.querySelector('.pagination-container');
2860  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2861  if (container) {
2862    mode = 'NUMBERED_PAGINATION';
2863  }
2864  if (loadMoreButton) {
2865    mode = 'LOAD_MORE_BUTTON';
2866  }
2867  let searchContainer = section.querySelector('.search-container');
2868  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2869  const eventPrefix = '__pagination-';
2870  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2871    param: 'neighborhoodId',
2872    urlKey: 'neighborhood'
2873  }, {
2874    param: 'search',
2875    urlKey: 'search'
2876  }, {
2877    param: 'salesPriceGTE',
2878    urlKey: 'pricemin',
2879    formKey: 'priceMin',
2880    type: 'int'
2881  }, {
2882    param: 'salesPriceLTE',
2883    urlKey: 'pricemax',
2884    formKey: 'priceMax',
2885    type: 'int'
2886  }, {
2887    param: 'livingSpaceSizeGTE',
2888    urlKey: 'areamin',
2889    formKey: 'areaMin',
2890    type: 'int'
2891  }, {
2892    param: 'livingSpaceSizeLTE',
2893    urlKey: 'areamax',
2894    formKey: 'areaMax',
2895    type: 'int'
2896  }] : []);
2897
2898  // Total entries - initialized in first render
2899  let totalNumber = 0;
2900  const DefaultSearchParams = {
2901    page: 1
2902  };
2903  searchFormParams.forEach(function (formParam) {
2904    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2905  });
2906  let searchParams = {
2907    ...DefaultSearchParams
2908  };
2909  const offset = options.variables?.offset || 0;
2910  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2911  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2912
2913  // entries of per page
2914  // when query variables for a given section would't be filled options.pageSize can store
2915  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2916  let pageSize = parseInt(options.pageSize, 10) || 9;
2917
2918  // Adding mobile pageRange support
2919  var NARROW_BREAKPOINT = 600;
2920  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2921  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2922
2923  // Page range (pages on both sides of the current page)
2924  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2925  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2926  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2927
2928  // Whether to display the 'Previous' button
2929  var showPrevious = true;
2930
2931  // Whether to display the 'Next' button
2932  var showNext = true;
2933
2934  // Whether to display the page buttons
2935  var showPageNumbers = true;
2936
2937  // 'Previous' text
2938  var prevText = options.prevText || '&laquo;';
2939
2940  // 'Next' text
2941  var nextText = options.nextText || '&raquo;';
2942
2943  // Ellipsis text
2944  var ellipsisText = '&hellip;';
2945  var classPrefix = 'paginationjs';
2946
2947  // Default active class
2948  var activeClassName = 'active';
2949
2950  // Default disable class
2951  var disableClassName = 'disabled';
2952
2953  // Pagination element's position in the container
2954  var position = 'bottom';
2955
2956  // Whether to trigger pagination at initialization
2957  var triggerPagingOnInit = !options.skipInitialLoad;
2958  var showFirstOnEllipsisShow = true;
2959  var showLastOnEllipsisShow = true;
2960
2961  // Instantiated in init()
2962  var el = null;
2963
2964  // Controls scrollTop logic
2965  var firstRender = true;
2966  var renderBySearch = false;
2967  var disabled = false;
2968
2969  // Pagination script class selector
2970  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
2971
2972  // Property Specific Image Override if No Image
2973  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
2974
2975  // Construct template
2976  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
2977  var template = Handlebars.compile(templateHTML);
2978
2979  // Initialize
2980  init();
2981  function init() {
2982    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2983
2984    // Append/prepend pagination element to the pagination container
2985    if (mode === 'NUMBERED_PAGINATION') {
2986      el = document.createElement('div');
2987      el.className = 'paginationjs';
2988      container[position === 'bottom' ? 'append' : 'prepend'](el);
2989    }
2990    if (searchContainer) {
2991      initSearchContainer({
2992        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
2993        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
2994        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
2995        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
2996      }, function () {
2997        syncSearchFormState(searchParams);
2998      });
2999    }
3000
3001    // Bind events
3002    observer();
3003  }
3004  function syncSearchFormState(params) {
3005    searchContainer.dispatchEvent(new CustomEvent('sync', {
3006      detail: params
3007    }));
3008  }
3009  function initSearchContainer(options, done) {
3010    var promises = [];
3011    if (options.fetchNeighborhoods) {
3012      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
3013        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
3014          detail: {
3015            data: neighborhoods.map(function (item) {
3016              return {
3017                value: item.id,
3018                label: item.name
3019              };
3020            })
3021          }
3022        }));
3023      }));
3024    }
3025    if (options.fetchPostCategories) {
3026      promises.push(fetchPostCategories(function (categories) {
3027        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
3028          detail: {
3029            data: categories
3030          }
3031        }));
3032      }));
3033    }
3034    if (options.fetchOffices) {
3035      promises.push(fetchOffices(function (offices) {
3036        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
3037          detail: {
3038            data: offices
3039          }
3040        }));
3041      }));
3042    }
3043    if (options.fetchRentalRates) {
3044      promises.push(fetchAllRentalRates(function (rentalRates) {
3045        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
3046          detail: {
3047            data: rentalRates
3048          }
3049        }));
3050      }));
3051    }
3052    if (promises.length > 0) {
3053      Promise.all(promises).then(function () {
3054        done();
3055      });
3056    } else {
3057      // element's custom code is not executed yet, so we're scheduling callback to after element's code
3058      setTimeout(done);
3059    }
3060  }
3061  function fetchAllNeighborhoods(done) {
3062    var useRouter = auxUsesRouter('neighborhoods');
3063    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
3064    // args on both APIs (the federated neighborhoods field accepts
3065    // withProperties/withBlogPosts); only the selection set differs.
3066    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') + '}}';
3067    var payload = {};
3068    payload.offset = 0;
3069    payload.limit = 100;
3070    payload.companyId = variables.companyId;
3071    if (options.resource === 'properties') {
3072      payload.withProperties = {
3073        active: true
3074      };
3075      ['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) {
3076        if (variables[field] !== undefined && variables[field] !== null) {
3077          payload.withProperties[field] = variables[field];
3078        }
3079      });
3080    }
3081    if (options.resource === 'posts') {
3082      payload.withBlogPosts = {
3083        active: true
3084      };
3085      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
3086        if (variables[field] !== undefined && variables[field] !== null) {
3087          payload.withBlogPosts[field] = variables[field];
3088        }
3089      });
3090    }
3091
3092    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3093    if (useRouter) {
3094      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
3095    }
3096    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3097      query: gqlQuery,
3098      variables: payload
3099    }).then(function (res) {
3100      var value = res.body.data && res.body.data.neighborhoods || {};
3101      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3102      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3103      done(items, items.length);
3104    });
3105  }
3106  function fetchPostCategories(done) {
3107    var featured = options.resource === 'posts' && !!variables.featured;
3108    var useRouter = auxUsesRouter('postCategories');
3109    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3110    // selection set differs ({ items {...} } on the router).
3111    var selection = 'id, name, publishedCount, featuredPublishedCount';
3112    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) + '}}';
3113    var payload = {};
3114    payload.offset = 0;
3115    payload.limit = 100;
3116    payload.companyId = variables.companyId;
3117    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3118      query: gqlQuery,
3119      variables: payload
3120    }).then(function (res) {
3121      var value = res.body.data && res.body.data.postCategories || {};
3122      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3123      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3124      done(items.map(function (item) {
3125        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
3126        return item;
3127      }), items.length);
3128    });
3129  }
3130  function fetchOffices(done) {
3131    var useRouter = auxUsesRouter('offices');
3132    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3133    // selection set differs ({ items {...} } on the router).
3134    var selection = 'id, name, tags';
3135    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
3136    // APIs differ in more than the items wrapper: federated offices takes
3137    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
3138    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 + '}}';
3139    var payload = {
3140      offset: 0,
3141      limit: 100,
3142      companyId: variables.companyId
3143    };
3144
3145    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3146    if (useRouter) {
3147      payload = window.luxuryPresence.routerApi.transformVariables('office
3147s', payload);
3148    }
3149    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3150      query: gqlQuery,
3151      variables: payload
3152    }).then(function (res) {
3153      var value = res.body.data && res.body.data.offices || {};
3154      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3155      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3156      done(items, items.length);
3157    });
3158  }
3159
3160  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
3161  function fetchAllRentalRates(done) {
3162    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
3163    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
3164    var payload = {
3165      offset: 0,
3166      limit: 100,
3167      companyId: variables.companyId
3168    };
3169    superagent.post(url + '/graphql').withCredentials().send({
3170      query: gqlQuery,
3171      variables: payload
3172    }).then(function (res) {
3173      var items = res.body.data && res.body.data.rentalRates || [];
3174      done(items, items.length);
3175    }).catch(function (err) {
3176      console.error('Error fetching rental rates:', err);
3177      done([], 0);
3178    });
3179  }
3180  function fetchData(params, done) {
3181    var resource = options.resource;
3182    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
3183    var payload = {};
3184    try {
3185      payload = JSON.parse(JSON.stringify(variables));
3186    } catch (e) {
3187      Object.keys(variables).forEach(function (variableName) {
3188        payload[variableName] = variables[variableName];
3189      });
3190    }
3191    payload.offset = (params.page - 1) * pageSize + offset;
3192    payload.limit = pageSize;
3193    payload.companyId = options.companyId;
3194    searchFormParams.forEach(function (formParam) {
3195      var val = params[formParam.formKey || formParam.param];
3196      if (val !== null && val !== undefined) {
3197        objSet(payload, formParam.param, val);
3198      }
3199    });
3200
3201    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3202    if (options.useRouterApi) {
3203      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
3204    }
3205
3206    // TODO: Disabled loading due to jarring effect
3207    // dataContainer.html('Loading...');
3208    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
3209      query: gqlQuery,
3210      variables: payload
3211    }).then(function (res) {
3212      if (res.body.errors) {
3213        done(res.body.errors);
3214        return;
3215      }
3216      var data = res.body.data || {};
3217      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3218      var resources;
3219      var resourceCount;
3220      if (options.useRouterApi) {
3221        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
3222        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
3223        resourceCount = page.count;
3224      } else {
3225        resources = data[resource] || [];
3226        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
3227      }
3228      const finish = function (items) {
3229        if (resource === 'properties' && propertyPlaceholderImage?.id) {
3230          items = items.map(item => {
3231            if (item.media?.length === 0) {
3232              return Object.assign(item, {
3233                media: [propertyPlaceholderImage]
3234              });
3235            }
3236            return item;
3237          });
3238        }
3239        done(null, items, resourceCount);
3240      };
3241
3242      // ROUTER-CLEANUP: client half of PLAT-4073 — resolve the requested
3243      // disclaimers before rendering; older SDKs skip (keys stay unset).
3244      if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') {
3245        window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish);
3246        return;
3247      }
3248      finish(resources);
3249    });
3250  }
3251  function getTotalPage() {
3252    return Math.ceil(totalNumber / pageSize);
3253  }
3254  function renderPaginationList() {
3255    var totalPages = getTotalPage();
3256    var rangeStart = searchParams.page - pageRange;
3257    var rangeEnd = searchParams.page + pageRange;
3258    if (rangeEnd > totalPages) {
3259      rangeEnd = totalPages;
3260      rangeStart = totalPages - pageRange * 2;
3261      rangeStart = rangeStart < 1 ? 1 : rangeStart;
3262    }
3263    if (rangeStart <= 1) {
3264      rangeStart = 1;
3265      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
3266    }
3267
3268    // Making sure that 1 more page button is shown in edge positions
3269    if (pageRange === 0) {
3270      if (searchParams.page === totalPages) {
3271        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
3272      }
3273      if (searchParams.page === 1) {
3274        rangeEnd = Math.min(2, totalPages);
3275      }
3276    }
3277
3278    // Render pagination list
3279    if (mode === 'NUMBERED_PAGINATION') {
3280      el.innerHTML = generateHTML({
3281        currentPage: searchParams.page,
3282        pageRange: pageRange,
3283        rangeStart: rangeStart,
3284        rangeEnd: rangeEnd
3285      });
3286      if (totalPages < 2 && hidePaginationOnFirstPage) {
3287        container.style.display = 'none';
3288      } else {
3289        container.style.display = '';
3290      }
3291    } else if (mode === 'LOAD_MORE_BUTTON') {
3292      if (searchParams.page >= totalPages) {
3293        loadMoreButton.style.display = 'none';
3294      } else {
3295        loadMoreButton.style.display = '';
3296      }
3297    }
3298  }
3299  function render(data) {
3300    renderPaginationList();
3301
3302    // Render new content with handlebars
3303    var html = '';
3304    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
3305      // If using load more, append search results to existing results
3306      html = dataContainer.innerHTML;
3307    }
3308    for (var i = 0; i < data.length; i++) {
3309      var itemData = recursivelyParse(data[i]);
3310      itemData.sectionIndex = options.sectionIndex;
3311      itemData.renderOptions = options.renderOptions;
3312      html += template(itemData);
3313    }
3314    dataContainer.innerHTML = html;
3315
3316    // Scroll Top
3317    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
3318      // Only animate to the top if we replace dataContainer (numbered pagination)
3319      setTimeout(() => {
3320        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
3321        window.scrollTo({
3322          top: scrollTargetOffsetTop,
3323          behavior: 'smooth'
3324        });
3325      }, 250);
3326    }
3327    return true;
3328  }
3329  function generateHTML(args) {
3330    const totalPages = getTotalPage();
3331    const {
3332      rangeStart,
3333      rangeEnd
3334    } = args;
3335    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3336      ...searchParams,
3337      page
3338    });
3339    let html = '';
3340    if (showPrevious || showPageNumbers || showNext) {
3341      html += '<div class="paginationjs-pages"><ul>';
3342
3343      // Previous button
3344      if (showPrevious) {
3345        if (searchParams.page <= 1) {
3346          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
3347        } else {
3348          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>`;
3349        }
3350      }
3351
3352      // Pages
3353      if (showPageNumbers) {
3354        if (rangeStart <= 3) {
3355          for (let i = 1; i < rangeStart; i++) {
3356            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>`;
3357          }
3358        } else {
3359          if (showFirstOnEllipsisShow) {
3360            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
3361          }
3362          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3363        }
3364        for (let i = rangeStart; i <= rangeEnd; i++) {
3365          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>`;
3366        }
3367        if (rangeEnd < totalPages - 2) {
3368          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3369          if (showLastOnEllipsisShow) {
3370            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
3371          }
3372        } else {
3373          for (let i = rangeEnd + 1; i <= totalPages; i++) {
3374            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
3375          }
3376        }
3377      }
3378
3379      // Next button
3380      if (showNext) {
3381        if (searchParams.page >= totalPages) {
3382          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
3383        } else {
3384          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>`;
3385        }
3386      }
3387      html += '</ul></div>';
3388    }
3389    return html;
3390  }
3391  function go(newSearchParams, callback, restorationVisit) {
3392    if (disabled) return;
3393    var goToPageNumber = newSearchParams.page;
3394
3395    // Page number is out of bounds
3396    if (!goToPageNumber || goToPageNumber < 1) return;
3397    var totalPage = getTotalPage();
3398
3399    // Page number is out of bounds
3400    if (!restorationVisit && totalNumber > 0) {
3401      if (goToPageNumber > totalPage) return;
3402    }
3403    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3404      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3405        ...newSearchParams,
3406        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
3407      });
3408      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
3409        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
3410          queryString: true
3411        }));
3412      }
3413    }
3414
3415    // Fetch and update page
3416    fetchData(newSearchParams, renderWithData);
3417    disabled = true;
3418    function renderWithData(err, data, count) {
3419      if (err) {
3420        dataContainer.dispatchEvent(new Event('error'));
3421      } else {
3422        searchParams = {
3423          ...newSearchParams
3424        };
3425        totalNumber = count - offset;
3426        if (data.length === 0) {
3427          dataContainer.dispatchEvent(new Event('no-data'));
3428        } else {
3429          dataContainer.dispatchEvent(new Event('data'));
3430        }
3431        render(data);
3432        firstRender = false;
3433      }
3434      disabled = false;
3435      renderBySearch = false;
3436    }
3437  }
3438  function areQueryParamsEqual(first, second) {
3439    var differ = Object.keys(first).find(function (key) {
3440      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
3441    });
3442    if (differ) {
3443      return false;
3444    }
3445    differ = Object.keys(second).find(function (key) {
3446      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
3447    });
3448    return !differ;
3449  }
3450  function next(callback) {
3451    go({
3452      ...searchParams,
3453      page: searchParams.page + 1
3454    }, callback);
3455  }
3456  function previous(callback) {
3457    go({
3458      ...searchParams,
3459      page: searchParams.page - 1
3460    }, callback);
3461  }
3462  function refresh(callback) {
3463    go(searchParams, callback);
3464  }
3465  function update(params, callback) {
3466    renderBySearch = true;
3467    go(params, callback);
3468  }
3469  function observer() {
3470    if (searchContainer) {
3471      searchContainer.addEventListener('search', function (event, newSearchParams) {
3472        newSearchParams = event.detail || newSearchParams;
3473        update({
3474          ...searchParams,
3475          ...newSearchParams,
3476          page: 1
3477        });
3478      });
3479      searchContainer.addEventListener('clear-search', function () {
3480        const defaultSearchParams = {
3481          ...DefaultSearchParams
3482        };
3483        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
3484          ...defaultSearchParams,
3485          page: null
3486        }, {
3487          ...searchParams,
3488          page: null
3489        });
3490
3491        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
3492        // when search form have default state
3493        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
3494          return;
3495        }
3496
3497        // if someone initially go to some page and click 'Clear' on search from
3498        // we should't navigate to first page. We should preserve page value
3499        if (isCurrentSearchFormStateDefault) {
3500          defaultSearchParams.page = searchParams.page;
3501        }
3502        syncSearchFormState(defaultSearchParams);
3503        update(defaultSearchParams);
3504      });
3505    }
3506    if (mode === 'LOAD_MORE_BUTTON') {
3507      loadMoreButton.addEventListener('click', function (event) {
3508        go({
3509          ...searchParams,
3510          page: searchParams.page + 1
3511        });
3512        return false;
3513      });
3514    }
3515    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
3516      // Do initial render
3517      go(Object.assign({}, searchParams, {
3518        page: 1
3519      }));
3520      return;
3521    }
3522    if (mode === 'NUMBERED_PAGINATION') {
3523      // Go to specified page number
3524      container.addEventListener(eventPrefix + 'go', function (event) {
3525        let {
3526          pageNumber,
3527          done
3528        } = event.detail || {};
3529        pageNumber = parseInt(pageNumber, 10);
3530        if (!pageNumber) {
3531          return;
3532        }
3533        go({
3534          ...searchParams,
3535          page: pageNumber
3536        }, done);
3537      });
3538
3539      // Page number button click
3540      el.addEventListener('click', function (event) {
3541        let clickTarget = event.target;
3542        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
3543        let pageNumber = current?.getAttribute('data-num');
3544        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
3545          return;
3546        } else {
3547          go({
3548            ...searchParams,
3549            page: parseInt(pageNumber, 10)
3550          });
3551        }
3552        event.preventDefault();
3553      });
3554
3555      // Whether to load the default page
3556      var defaultPageNumber = searchParams.page;
3557      if (triggerPagingOnInit) {
3558        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
3559          detail: {
3560            pageNumber: defaultPageNumber
3561          }
3562        }));
3563      }
3564    }
3565    window.addEventListener('popstate', function (event) {
3566      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
3567      if (!areQueryParamsEqual(newParams, searchParams)) {
3568        go(newParams, null, true);
3569        if (searchContainer) {
3570          syncSearchFormState(newParams);
3571        }
3572      }
3573    });
3574  }
3575  function replaceVariables(template, variables) {
3576    var formattedString;
3577    for (var key in variables) {
3578      var value = variables[key];
3579      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
3580      formattedString = (formattedString || template).replace(regexp, value);
3581    }
3582    return formattedString;
3583  }
3584  function isTextEditorValue(obj) {
3585    return 'raw' in obj || 'gjs' in obj;
3586  }
3587  function getTextEditorValue(obj) {
3588    if (!obj.html) {
3589      return '';
3590    }
3591    var data = obj.html;
3592    var css = (obj.raw || obj.gjs || {}).css;
3593    if (css) {
3594      data = data + '<style>' + css + '</style>';
3595    }
3596    return data;
3597  }
3598
3599  /**
3600   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
3601   * strips out raw proprties and returns only HTML if it exists.
3602   * @param {Object} resources a collection retrieved from the database
3603   * @return {Object} the newly modified object.
3604   */
3605  function recursivelyParse(resources) {
3606    forEach(resources, function (value, key) {
3607      if (!value) {
3608        return;
3609      }
3610      if (value instanceof Object) {
3611        if (isTextEditorValue(value)) {
3612          resources[key] = getTextEditorValue(value);
3613          return;
3614        } else {
3615          return recursivelyParse(value);
3616        }
3617      }
3618      try {
3619        var parsedData = JSON.parse(value);
3620        if (isTextEditorValue(parsedData)) {
3621          resources[key] = getTextEditorValue(parsedData);
3622        }
3623      } catch (e) {
3624        // do nothing if we failed to parse value as JSON
3625      }
3626    });
3627    return resources;
3628  }
3629  function forEach(collection, iteratee) {
3630    var func = Array.isArray(collection) ? arrayEach : baseFor;
3631    return func(collection, iteratee);
3632  }
3633  function baseFor(object, iteratee) {
3634    if (!object) {
3635      return;
3636    }
3637    var iterable = Object(object);
3638    var props = Object.keys(object);
3639    var length = props.length;
3640    var index = -1;
3641    while (length--) {
3642      var key = props[++index];
3643      if (iteratee(iterable[key], key, iterable) === false) {
3644        break;
3645      }
3646    }
3647    return object;
3648  }
3649  function objSet(obj, path, value) {
3650    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
3651    pathArray.reduce((acc, key, i) => {
3652      if (acc[key] === undefined) acc[key] = {};
3653      if (i === pathArray.length - 1) acc[key] = value;
3654      return acc[key];
3655    }, obj);
3656  }
3657  function arrayEach(array, iteratee) {
3658    var index = -1;
3659    var length = array.length;
3660    while (++index < length) {
3661      if (iteratee(array[index], index, array) === false) {
3662        break;
3663      }
3664    }
3665    return array;
3666  }
3667  function selectPageRangeMode(e) {
3668    pageRange = e.matches ? mobilePageRange : desktopPageRange;
3669    renderPaginationList();
3670  }
3671  paginationMql.addEventListener('change', selectPageRangeMode);
3672})('section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927', JSON.parse("{\"pageSize\":\"9\",\"resource\":\"properties\",\"pageRange\":1,\"variables\":{\"limit\":9,\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"b0108bde-2b87-474d-8bcd-d7fcfd16c5cc\",\"categoryId\":\"{{pageElement.categoryId}}\",\"sort\":\"createdAt\",\"statusIds\":[\"5f528253-abb7-484e-95c3-330269ac1105\",\"959c11cf-8655-4f91-874c-292b0ab7ea6b\",\"a0012964-4f51-4430-abf8-6547c5ab6441\",\"df04ccbe-4621-4140-a504-ee1a17430bb7\",\"88b4ace6-f39b-4b25-a051-8f6dba976833\",\"96031d77-bbe5-4de3-90d8-1e4e70de8ca8\"],\"advancedFilters\":{\"query\":{\"statusIds\":{\"in\":[\"5f528253-abb7-484e-95c3-330269ac1105\",\"959c11cf-8655-4f91-874c-292b0ab7ea6b\",\"a0012964-4f51-4430-abf8-6547c5ab6441\",\"df04ccbe-4621-4140-a504-ee1a17430bb7\",\"88b4ace6-f39b-4b25-a051-8f6dba976833\"]}}},\"websiteId\":\"be227485-eaf0-455b-aee0-a0e351474420\"},\"hidePaginationOnFirstPage\":true,\"companyId\":\"b0108bde-2b87-474d-8bcd-d7fcfd16c5cc\",\"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}}"));
3673} catch(e) {
3674console.log(e);
3675}
3676                try {
3677(function init(sectionDomId) {})('section-d55c7d5f-e879-4fc8-9812-a1a4be8f3927', 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\":\"b0108bde-2b87-474d-8bcd-d7fcfd16c5cc\",\"usePageResource\":false,\"sectionIndex\":2}"));
3678} catch(e) {
3679console.log(e);
3680}
3681                try {
3682(function init(sectionDomId) {})('section-855d0879-113a-4e34-8b5b-781d0b1f30d9', 'undefined');
3683} catch(e) {
3684console.log(e);
3685}
3686                try {
3687(function init(sectionDomId) {
3688  const $section = $('#' + sectionDomId);
3689  if ($section.find('.parallax').length) $section.addClass('parallax-enabled');
3690  if ($section.find('.video-wrapper').length) $section.addClass('video');
3691})('section-9b699237-bd33-47e1-a3a6-3c086016df48', 'undefined');
3692} catch(e) {
3693console.log(e);
3694}
3695                try {
3696(function init(sectionDomId, options) {
3697  let section = null;
3698  switch (sectionDomId) {
3699    case 'NAVBAR':
3700      section = document.querySelector('body > nav, #global-navbar');
3701      break;
3702    case 'FOOTER':
3703      section = document.querySelector('body > footer, #global-footer');
3704      break;
3705    case 'SIDEMENU':
3706      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
3707      break;
3708    case 'CONTACT':
3709      section = document.querySelector('#modal-global-contact-us');
3710      break;
3711    case 'MOBILE_CONTACT':
3712      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
3713      break;
3714    case 'SUBSCRIBE':
3715      // Subscribe Not Implemented
3716      section = null;
3717      break;
3718    case 'ACCOUNT':
3719      // Account Not Implemented
3720      section = null;
3721      break;
3722    default:
3723      section = document.querySelector('#' + sectionDomId);
3724  }
3725  if (!section) {
3726    return;
3727  }
3728  var url = window.luxuryPresence.defaults.routerUrl;
3729  var companyId = window.luxuryPresence.defaults.companyId;
3730  var limit = options.limit || 8;
3731  if (typeof limit === 'string') {
3732    limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected
3733  }
3734  var templateSelector = options.templateSelector || '.jsIGTemplate';
3735  var containerSelector = options.containerSelector || '.jsIGContainer';
3736  var hasDataClass = options.hasDataClass || 'has-data';
3737  var hideActivateMessage = options.hasDataClass || false;
3738  var payload = {
3739    companyId: companyId,
3740    limit: limit
3741  };
3742  if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) {
3743    payload.resourceId = options.resourceId;
3744    // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase
3745    payload.resource = String(options.resource || 'agent').toUpperCase();
3746    payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true;
3747  }
3748  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';
3749  var templateHTML = section.querySelector(templateSelector)?.innerHTML || '';
3750  var template = Handlebars.compile(templateHTML);
3751  var container = section.querySelector(containerSelector);
3752  if (options.variables) {
3753    Object.keys(options.variables).forEach(function (key) {
3754      if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) {
3755        payload[key] = options.variables[key];
3756      }
3757    });
3758  }
3759  function getData() {
3760    var feed = {
3761      error: true
3762    };
3763    if (payload.companyId == null || payload.companyId === '') {
3764      // instagramContentFeed requires companyId (ID!) — nothing to fetch without it.
3765      // Checked after the options.variables merge, which may override the default.
3766      // Deferred so element listeners (attached after this template runs) still receive it.
3767      setTimeout(function () {
3768        section.dispatchEvent(new CustomEvent('ig-data', {
3769          detail: feed
3770        }));
3771      }, 0);
3772      return;
3773    }
3774    superagent.post(url + '/graphql').send({
3775      query: query,
3776      variables: payload
3777    }).then(res => {
3778      try {
3779        if (!res.body.errors) {
3780          feed = res.body.data.instagramContentFeed;
3781          if (!feed.active) {
3782            if (!hideActivateMessage && sectionDomId === 'section-temp' && container) {
3783              if (payload.resourceId) {
3784                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>';
3785              } else {
3786                container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>';
3787              }
3788            }
3789          } else {
3790            if (feed.items.length) {
3791              if (hasDataClass) {
3792                section.classList.add(hasDataClass);
3793              }
3794              const feedName = feed.username;
3795              section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl));
3796              section.querySelectorAll('.jsIGName').forEach(name => {
3797                name.textContent = '@' + feedName;
3798                name.setAttribute('title', '@' + feedName);
3799              });
3800              if (container && template) {
3801                container.innerHTML = template(feed);
3802              }
3803            }
3804          }
3805        }
3806      } catch (e) {}
3807      section.dispatchEvent(new CustomEvent('ig-data', {
3808        detail: feed
3809      }));
3810    }).catch(e => {
3811      console.log('err', e);
3812      section.dispatchEvent(new CustomEvent('ig-data', {
3813        detail: feed
3814      }));
3815    });
3816  }
3817  getData();
3818})('section-843c4f7d-2270-4187-af56-23dd530aef1f', JSON.parse("{\"limit\":5,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"b0108bde-2b87-474d-8bcd-d7fcfd16c5cc\",\"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}}"));
3819} catch(e) {
3820console.log(e);
3821}
3822                try {
3823(function init(sectionId) {
3824  const $section = $('#' + sectionId);
3825  const $autoShrinks = $section.find('.jsShrink');
3826  const toAdjust = [];
3827  const minFontSize = 10;
3828  $autoShrinks.each(function () {
3829    const $el = $(this);
3830    const $parent = $el.parent();
3831    const {
3832      $cl: $sizer
3833    } = makeElementCopy($el, $parent);
3834    const {
3835      $cl: $sizerMin
3836    } = makeElementCopy($el, $parent);
3837    toAdjust.push({
3838      $el,
3839      $parent,
3840      $sizer,
3841      $sizerMin,
3842      altered: false
3843    });
3844  });
3845  adjustSizes();
3846  $section.on('ig-data', adjustSizes);
3847  $(window).on('resize.lpui-auto-clean', adjustSizes);
3848  function makeElementCopy($el, $parent) {
3849    const $cont = $('<div style="width: 0; height: 0; position: relative; overflow: hidden;"></div>');
3850    $parent.prepend($cont);
3851    const $cl = $el.clone().removeClass('wow fadeInUp jsShrink').appendTo($cont);
3852    $cl[0].removeAttribute('style');
3853    $cl[0].removeAttribute('data-wow-delay');
3854    $cl.css({
3855      'position': 'absolute',
3856      'overflow-wrap': 'normal',
3857      'white-space': 'nowrap'
3858    });
3859    return {
3860      $cont,
3861      $cl
3862    };
3863  }
3864  function resetStyles(item) {
3865    if (item.altered) {
3866      item.$el[0].style.fontSize = '';
3867      item.$el[0].style.letterSpacing = '';
3868      item.altered = false;
3869    }
3870  }
3871  function setStyles($el, k, fontSize, letterSpacing) {
3872    $el.css('font-size', `${Math.floor(fontSize * k)}px`);
3873    if (letterSpacing) {
3874      $el.css('letter-spacing', `${letterSpacing * k}px`);
3875    }
3876  }
3877  function adjustSizes() {
3878    toAdjust.forEach(function (item) {
3879      const {
3880        $el,
3881        $parent,
3882        $sizer,
3883        $sizerMin
3884      } = item;
3885      try {
3886        const contW = $parent[0].getBoundingClientRect().width;
3887        const sizeW = $sizer[0].getBoundingClientRect().width;
3888        if (!sizeW || contW >= sizeW) {
3889          resetStyles(item);
3890          return;
3891        }
3892        const mf = $sizer.css('font-size').match(/([\d\.]+)px/);
3893        if (!mf) {
3894          resetStyles(item);
3895          return;
3896        }
3897        const origFontSize = parseFloat(mf[1]);
3898        if (!origFontSize || origFontSize <= minFontSize) {
3899          resetStyles();
3900          return;
3901        }
3902        const ms = $sizer.css('letter-spacing').match(/([\d\.]+)px/);
3903        const origLetterSpacing = ms && parseFloat(ms[1]) || 0;
3904        const fontK = minFontSize / origFontSize;
3905        setStyles($sizerMin, fontK, origFontSize, origLetterSpacing);
3906        const minW = $sizerMin[0].getBoundingClientRect().width;
3907        item.altered = true;
3908        if (minW >= contW) {
3909          setStyles($el, fontK, origFontSize, origLetterSpacing);
3910        } else {
3911          setStyles($el, contW / minW * fontK, origFontSize, origLetterSpacing);
3912        }
3913      } catch (e) {
3914        console.log(e);
3915      }
3916    });
3917  }
3918})('section-843c4f7d-2270-4187-af56-23dd530aef1f', 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\":\"b0108bde-2b87-474d-8bcd-d7fcfd16c5cc\",\"usePageResource\":false,\"sectionIndex\":5}"));
3919} catch(e) {
3920console.log(e);
3921}
3922
3923            var { body } = document;
3924            var globalNav = body.querySelector(':scope > nav');
3925            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
3926
3927            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
3928                modalCloseBtn.addEventListener('click', function() {
3929                window.lpUI.hideClosestModal(modalCloseBtn);
3930              });
3931            });
3932
3933            window.addEventListener('click', function() {
3934                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
3935                    sharedPopup.style.display = 'none' ;
3936                });
3937            });
3938
3939            /* Misc Partials / Addons */
3940            function initWOW() {
3941                if (wow) {
3942                    wow.init();
3943                    wow.scrollHandler();
3944                    setTimeout(function () {
3945                        const wowHideStyle = document.getElementById('wow-hide-elements');
3946                        if(wowHideStyle) {
3947                            wowHideStyle.disabled = true;
3948                        }
3949                    }, 1);
3950                }
3951            }
3952
3953            const wowHideElements =  document.getElementById('wow-hide-elements');
3954            if (wowHideElements) {
3955               wowHideElements.disabled = false;
3956            }
3957
3958                initWOW();
3959
3960            /* Generic Navbar Handling */
3961            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
3962                hamburgerComponent.addEventListener('click', function() {
3963                window.lpUI.sideMenuToggle();
3964              });
3965            });
3966            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
3967                toggleEl.addEventListener('click', function() {
3968                window.lpUI.sideMenuToggle();
3969              });
3970            });
3971
3972            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
3973                linkEl.addEventListener('click', function(e) {
3974                  e.preventDefault();
3975                  e.stopPropagation();
3976                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
3977                  if (subNav && subNav.classList.contains('visible')){
3978                    subNav.classList.remove('visible');
3979                  } else {
3980                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
3981                      globalSubNav.classList.remove('visible');
3982                    });
3983                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
3984                        sideMenuSubNav.classList.remove('visible');
3985                    });
3986                    subNav?.classList.add('visible');
3987                  }
3988                });
3989            });
3990            window.addEventListener('click', function() {
3991                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
3992                    subNavEl.classList.remove('visible');
3993                });
3994            });
3995
3996        }
3997
3998        document.addEventListener('DOMContentLoaded', lpGlobalInit);
3999
4000    </script>
4000
4001
4002    
4002<script type="module">
4003    function selectorExists(selector) {
4004        return document.querySelector(selector) !== null;
4005    }
4006
4007    // Function to initialize the third-party library
4008    function initParoller(selector = '.my-paroller') {
4009        var $parollerElements = $(selector);
4010        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
4011            $parollerElements.paroller();
4012        }
4013    }
4014
4015    const parollerSelector = '.my-paroller';
4016
4017    if (selectorExists(parollerSelector)) {
4018        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
4019            initParoller(parollerSelector);
4020            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
4021        });
4022    }
4023    </script>
4023
4024
4025            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 4025-4026
4025
4026            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
4026GTM-T9SFQGHZ
vendor: 107 bytes, lines 4026-4028
4026"
4027            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4028            
4028<!-- End Google Tag Manager -->
4029        
4030            
4030<script
4031                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
4032                data-website-id="be227485-eaf0-455b-aee0-a0e351474420"
4033                
4034                defer></script>
vendor: 1 bytes, line 4034
4034
4035<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 4035
4035
4036<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:'a4813825ecc46cba',t:'MTc5MTU4OTExMA=='};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>
4036</body>
4037</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.