PageSourceSearch

https://amalfiestates.com/blog

html amalfiestates.com collected 2026-10-04 02:58:22 UTC 346,271 bytes, 3,917 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>Blog - Amalfi Estates</title>
10        <meta property="og:title" content="Blog - Amalfi Estates">
11        <meta name="twitter:title" content="Blog - Amalfi Estates">
12        <meta name="description" content="Get inspiration for buying or selling a home by reading Amalfi Estate&#x27;s blog posts and podcasts here. Real estate information at your fingertips!">
13        <meta property="og:description" content="Get inspiration for buying or selling a home by reading Amalfi Estate&#x27;s blog posts and podcasts here. Real estate information at your fingertips!">
14        <meta name="twitter:description" content="Get inspiration for buying or selling a home by reading Amalfi Estate&#x27;s blog posts and podcasts here. Real estate information at your fingertips!">
15        <meta property="og:image" content="https://media-production.lp-cdn.com/media/552af5a3-6fee-4885-b6a3-0c743da90bd8">
16        <meta name="twitter:image" content="https://media-production.lp-cdn.com/media/552af5a3-6fee-4885-b6a3-0c743da90bd8">
17        <meta property="og:url" content="https://amalfiestates.com/blog">
18        <link rel="canonical" href="https://amalfiestates.com/blog">
19    
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19
20    <link rel="preconnect" href="https://fonts.googleapis.com">
21    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
22    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i">
23    <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
24    <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript>
25    <link rel="icon" type="image/x-icon" href="/favicon.ico">
26    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
27    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
28    <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
29    <style id="global-css">:root{--global-primary-font-family:Montserrat,sans-serif;--global-primary-font-family-short:Montserrat;--global-secondary-font-family:Montserrat,sans-serif;--global-secondary-font-family-short:Montserrat;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:45px;--global-h2-font-size:40px;--global-h3-font-size:38px;--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:Montserrat,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Montserrat,sans-serif;}h1{font-size:45px;}h2{font-size:40px;}h3{font-size:38px;}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">.pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev a:hover{color:#999!important;}.pagination-container .paginationjs .paginationjs-pages li.paginationjs-next a:hover{color:#999!important;}@media only screen and (max-width: 1024px){#modal-global-contact-us div.contact-form__container{width:100%;}#modal-global-contact-us div.contact-form__close.close{color:#fff;opacity:1;}}nav#global-navbar .header.theme-light .header__hamburger circle{fill:#779AD0;}nav#global-navbar .header.theme-light .header__hamburger svg rect{fill:#fff!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:#FFF;background-color:#000;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF;background-color:#779AD0;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .navigation__link:after{background:#fff;}nav#global-navbar .header.theme-light .search__btn svg{color:#fff;}nav#global-navbar .header.theme-light a.header__btn-contact{background:transparent;color:#fff!important;border-color:#fff!important;}nav#global-navbar .header.theme-light a.header__btn-contact:hover{background:#fff!important;color:#000!important;border-color:#fff!important;}nav#global-navbar .header .header__hamburger circle{fill:#779AD0;}nav#global-navbar .header .header__hamburger svg rect{fill:#fff!important;}nav#global-navbar .header ul.navigation li.navigation__item{color:#000;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link{color:#FFF;background-color:#000;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF;background-color:#779AD0;}nav#global-navbar .header ul.navigation li.navigation__item .navigation__link:after{background:#fff;}nav#global-navbar .header .search__btn svg{color:#000;}nav#global-navbar.scroll .header{background-color:#fff;}nav#global-navbar.scroll .header .header__hamburger circle{fill:#779AD0;}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:#FFF;background-color:#000;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF;background-color:#779AD0;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .navigation__link:after{background:#779AD0;}
31nav#global-navbar.scroll .header .search__btn svg{color:#779AD0;}nav#global-navbar.scroll .header a.header__btn-contact{background:transparent;color:#fff!important;border-color:#fff!important;}nav#global-navbar.scroll .header a.header__btn-contact:hover{background:#fff!important;color:#000!important;border-color:#fff!important;}nav#global-navbar.scroll .header.theme-light .logo__img.light{display:none;}nav#global-navbar.scroll .header.theme-light .logo__img.dark{display:block;}nav#global-navbar.scroll .header.theme-auto .logo__img.light{display:none;}nav#global-navbar.scroll .header.theme-auto .logo__img.dark{display:block;}#global-footer .footer-navigation__link:hover{color:#4979C1;}footer#global-footer .site-footer__disclaimer{opacity:100;}footer .site-footer__col-content{opacity:1!important;}.auto-year-update::after{content:' Amalfi Estates, DRE# 02014153';}</style>
32    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
33        <style id="page-css">
34            #section-33514986-d0a9-4c0c-9c08-c60d74b86348{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/bb25ro2ymibiivef5nfr');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .video-wrapper .full-screen-video-component .video-wrapper.playing video{opacity:1!important;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .lp-play.visible{opacity:1;cursor:pointer;}@media (max-width: 900px){#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .lp-play.visible{display:none;}}@media (max-width: 900px){#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .lp-play{display:none;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.parallax-enabled{z-index:unset;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.parallax-enabled .lp-container{position:relative;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.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-33514986-d0a9-4c0c-9c08-c60d74b86348.parallax-enabled>div.video-wrapper{left:0;top:0;width:100%;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.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-33514986-d0a9-4c0c-9c08-c60d74b86348.parallax-enabled>div.overlay-component{left:0;top:0;width:100%;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.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);
34background: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-33514986-d0a9-4c0c-9c08-c60d74b86348.parallax-enabled .opening-with-search:before{left:0;top:0;width:100%;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search:before{display:none;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-Full{min-height:100vh;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-Full>div.video-wrapper{height:100vh;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-Full:before{min-height:100vh;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-770px{min-height:770px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-770px>div.video-wrapper{height:770px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-770px:before{min-height:770px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-600px{min-height:600px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-600px>div.video-wrapper{height:600px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search.height-class-600px:before{min-height:600px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-description{letter-spacing:.1em;margin-bottom:15px;max-width:640px;margin-left:auto;margin-right:auto;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-description a,#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-pretitle{margin-bottom:15px;max-width:860px;margin-left:auto;margin-right:auto;white-space:pre-line;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-title{margin-bottom:15px;max-width:860px;margin-left:auto;margin-right:auto;white-space:pre-line;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-button{margin:0 15px;}@media (max-width: 768px){#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .opening-button{margin:0;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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;-webkit-justify-content:center;justify-content:center;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-form.with-filters{padding-top:32px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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;
34-webkit-justify-content:center;justify-content:center;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-button:hover{background-color:#fff;color:#000;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-lease-tabs{position:absolute;left:0;bottom:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-lease-tab{padding:4px 20px;background-color:#000;color:#fff;cursor:pointer;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-lease-tab.active{background-color:#fff;color:#000;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-wrapper{margin:5px;letter-spacing:normal;width:100%;max-width:444px;position:relative;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-container,#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .predefined-links{padding:10px 0;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-container a,#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .predefined-links a{color:#b6b6b6;-webkit-transition:color 0.3s ease;transition:color 0.3s ease;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-container a:hover,#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .predefined-links a:hover{color:#fff;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .predefined-links{max-height:400px;overflow:auto;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-block{margin:15px 0;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-block-title{margin:0;padding:0 48px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-block-title .results-title-label{margin:0 20px 10px 0;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-block-title .search-near-container{margin-bottom:15px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-block:nth-child(n + 2) .search-near-container{display:none;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-link{display:block;padding:4px 48px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .results-link.selected-link{color:#fff;background-color:rgba(255, 255, 255, 0.2);}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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;-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-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .not-visible{display:none!important;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .nothing-found{width:100%;padding:20px;}@media (max-width: 560px){#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-form{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-button{width:100%;max-width:444px;}}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .opening-with-search .search-near{cursor:pointer;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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;
34-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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .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-33514986-d0a9-4c0c-9c08-c60d74b86348 .loc-msg-close:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .search-near-hidden .search-near-container{display:none;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .loc-msg-title{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:20px;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .loc-msg-container{-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;overflow:auto;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .loc-msg-container p{margin:0;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348 .loc-msg-container p+p{margin-top:1em;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.visible-loc-msg{z-index:1000;}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.visible-loc-msg .loc-msg-backdrop{background-color:rgba(255,255,255,0.4);}#section-33514986-d0a9-4c0c-9c08-c60d74b86348.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-33514986-d0a9-4c0c-9c08-c60d74b86348{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/bb25ro2ymibiivef5nfr');}}@media (min-width: 1280px) and (orientation: landscape){#section-33514986-d0a9-4c0c-9c08-c60d74b86348{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/bb25ro2ymibiivef5nfr');}}@media (min-width: 1920px) and (orientation: landscape){#section-33514986-d0a9-4c0c-9c08-c60d74b86348{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/bb25ro2ymibiivef5nfr');}}@media (min-width: 2560px) and (orientation: landscape){#section-33514986-d0a9-4c0c-9c08-c60d74b86348{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/bb25ro2ymibiivef5nfr');}}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8{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;background-color:#fff;}
34#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .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-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .collection:not(.collection--3) .item{width:calc(50% - 20px);}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .collection:not(.collection--3) .item figure{height:462px;}}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item{width:calc(33.33333% - 20px);margin:0 10px 48px;-webkit-text-decoration:none;text-decoration:none;color:inherit;}@media (max-width: 991px){#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item{width:calc(50% - 20px);}}@media (max-width: 767px){#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item{margin-bottom:24px;width:100%;}}@media (hover: hover) and (pointer: fine){#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item:hover img{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item figure{position:relative;overflow:hidden;margin:0 0 24px 0;background-color:#f2f2f2;height:310px;}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item img{-webkit-transition:all .3s;transition:all .3s;height:100%;width:100%;object-fit:cover;}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item .label{text-transform:uppercase;position:absolute;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-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item .lp-h5{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;margin:0 0 8px;}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item .bf1{margin:0 0 8px;}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .item-text{margin:0;}#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .lp-pagination{margin-top:16px;}@media (max-width: 767px){#section-b77708cd-fdfc-4613-9af8-1194d5b50ae8 .lp-pagination{margin-top:8px;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#779AD0;--bgColor_H:216;--bgColor_S:49%;--bgColor_L:64%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#779AD0;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup{min-height:80vh;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup .lp-container-custom{padding:0 25px;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form{margin:0;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form.success .newsletter-signup__form-container{display:none;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__inputs-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__inputs-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-container{position:relative;z-index:1;}@media (max-width: 768px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-container .lp-h2{margin-bottom:32px;}}@media (max-width: 768px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-container .lp-text--subtitle{margin-bottom:32px;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:16px;}@media (max-width: 768px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:0px;margin-top:32px;}}@media (min-width: 769px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-item.lp-input{padding-top:0;padding-bottom:0;width:250px;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-item.lp-btn{text-transform:uppercase;font-weight:700;}@media (min-width: 769px){#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup__form-item.lp-btn{width:200
34px;}}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup .success-block{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;visibility:visible;opacity:1;z-index:2;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;text-align:center;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .newsletter-signup .success-block.hide{display:none;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .lp-h-pot{max-width:1px;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .lp-title-group{max-width:unset;padding:0 20px;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 input:-webkit-autofill,#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 input:-webkit-autofill:hover,#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 input:-webkit-autofill:focus,#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 input:-webkit-autofill:active{-webkit-text-fill-color:var(--fontColor);-webkit-box-shadow:0 0 0px 1000px var(--bgColor) inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;}#section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99 .lp-disclaimer{max-width:730px;margin:20px auto 0 auto;}#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;-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;
34-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;}
34#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%;}
34nav .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(255, 255, 255, 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(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--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;
34-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:#ffffff;color:#14171A;--fontColor:#14171A;--fontColor_H:210;--fontColor_S:13%;--fontColor_L:9%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--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;}
34footer .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;}}
34footer .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
34ox='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
34699 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
3471 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;
34-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;
34height: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);}}
35        </style>
36    <style id="custom-style-css">.hyperlink-style-1{color:rgba(33, 31, 31, 1)!important;}.hyperlink-style-1:hover{color:rgba(119, 154, 208, 1)!important;}.pagination-style-1 li a{color:rgba(119, 154, 208, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(119, 154, 208, 1)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(119, 154, 208, 1)!important;border-color:rgba(119, 154, 208, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(119, 154, 208, 1)!important;border-color:rgba(119, 154, 208, 1)!important;}.social_icons-style-1 a{border-color:rgba(119, 154, 208, 1)!important;background-color:rgba(119, 154, 208, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(73, 121, 193, 1)!important;background-color:rgba(73, 121, 193, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a i{color:inherit!important;}
36.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(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(119, 154, 208, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(119, 154, 208, 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(119, 154, 208, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 0.5)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 0.5)!important;}.pagination-style-2 li a:hover{color:rgba(255, 255, 255, 0.5)!important;background-color:rgba(119, 154, 208, 1)!important;border-color:rgba(119, 154, 208, 1)!important;}.pagination-style-2 li.active a{color:rgba(255, 255, 255, 0.5)!important;background-color:rgba(119, 154, 208, 1)!important;border-color:rgba(119, 154, 208, 1)!important;}.button-style-3{color:rgba(255, 255, 255, 1)!important;background-color:rgba(119, 154, 208, 1)!important;border-color:rgba(119, 154, 208, 1)!important;}.button-style-3:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(73, 121, 193, 1)!important;border-color:rgba(73, 121, 193, 1)!important;}.hyperlink-style-3{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-3:hover{color:rgba(0, 0, 0, 1)!important;}.button-style-4{color:rgba(119, 154, 208, 1)!important;background-color:rgba(255,255,255,1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-4:hover{color:rgba(255,255,255,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-4{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-4:hover{color:rgba(255,255,255,1)!important;}</style>
37        <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode
38             defaults, and dynamically loads the locale + main (and banner if needed). -->
39        
39<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="2b9f3b9c-8d13-4525-81b1-0e846aa51be2"></script>
39
40
41
42        
42<script>
43            (function utmParse() {
44                const url = new URL(window.location.href);
45                if (url.search) {
46                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
47                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
48                        if (matched) {
49                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
50                        }
51                        return acc;
52                    }, {});
53                    if (Object.keys(utm).length) {
54                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
55                    } else {
56                        // Remove old utm vars
57                        window.localStorage.removeItem('utm_vars');
58                    }
59                }
60                // Set referrer in local storage
61                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
62                if (!window.localStorage.getItem('referrer')) {
63                    // Capture the Referrer URL
64                    const referrer = document.referrer;
65                    if (referrer) {
66                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
67                        const currentDomain = window.location.hostname;
68                        const referrerDomain = new URL(referrer).hostname;
69
70                        if (referrerDomain !== currentDomain) {
71                            // Store it in localStorage
72                            localStorage.setItem('referrer', referrer);
73                        }
74                    }
75                }
76            })();
77        </script>
77
78        <!-- Google Tag Manager -->
79<script>
vendor: 331 bytes, lines 79-83
79(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
80new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
81j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
82'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
83})(window,document,'script','dataLayer','
83GTM-N69GP49
vendor: 3 bytes, line 83
83');
83</script>
83
84<!-- End Google Tag Manager -->
85
86
87<!-- Google Tag Manager -->
88<script>
vendor: 331 bytes, lines 88-92
88(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
89new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
90j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
91'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
92})(window,document,'script','dataLayer','
92GTM-KBFVRKS
vendor: 3 bytes, line 92
92');
92</script>
92
93<!-- End Google Tag Manager -->
94
95
96<meta name="google-site-verification" content="1jluayOJ9KFv_74QacLuP6RyJGQsCL3JUU7j5frkjnM" />
97
98<!-- Start - Analytics Request -->
99<script src="https://anthonymarguleas.engynesystems.com/condorscripts/10a7b876d79b41f1944da5372a3d7aa1.js?v=1021" type="text/javascript" async defer></script>
99
100<!-- End - Analytics Request -->
101    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
102</head>
103<body>
104    <div id="google_translate_element" style="display: none"></div>
105
106        <nav id="global-navbar" data-el-id="b395957e-29e6-4bd5-99ee-352fbee7732a">
107            <div class="header theme-auto">
108  <div class="lp-container header__container">
109    <div class="header__logo">
110      <a href="/" class="logo">
111        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/si9ou55cwnjkkynx63uf" 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/si9ou55cwnjkkynx63uf 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/si9ou55cwnjkkynx63uf 800w" sizes="500px" class="logo__img dark" alt="">
112        <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/swa31xibimcojqvnv7yv" 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/swa31xibimcojqvnv7yv 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/swa31xibimcojqvnv7yv 800w" sizes="500px" class="logo__img light" alt="">
113      </a>
114    </div>
115
116    <div class="header__right"> 
117      <ul class="navigation">
118        <li class="navigation__item">
119          <a  href="/giving-back/" class="navigation__link">Giving Back</a>
120        </li>
121        <li class="navigation__item sub-nav-container">
122          <a href="#" class="navigation__link">About Us</a>
123          <ul class="sub-nav">
124            <li class="sub-nav__item"><a  href="/about-us" class="sub-nav__link">LA Team</a></li>
125            <li class="sub-nav__item"><a  href="/dallas-team" class="sub-nav__link">Dallas Team</a></li>
126            <li class="sub-nav__item"><a  href="/press" class="sub-nav__link">In the Press</a></li>
127            <li class="sub-nav__item"><a  href="/testimonials" class="sub-nav__link">Testimonials</a></li>
128            <li class="sub-nav__item"><a  href="/videos" class="sub-nav__link">Videos</a></li>
129            <li class="sub-nav__item"><a  href="/market-update" class="sub-nav__link">Market Updates</a></li>
130            <li class="sub-nav__item"><a  href="/blog" class="sub-nav__link">Blogs</a></li>
131            <li class="sub-nav__item"><a  href="/careers/" class="sub-nav__link">Careers</a></li>
132            <li class="sub-nav__item"><a  href="/contact" class="sub-nav__link">Contact Us</a></li>
133            <li class="sub-nav__item"><a target="_blank" href="/faqs" class="sub-nav__link">FAQs</a></li>
134          </ul> 
135        </li>
136        <li class="navigation__item sub-nav-container">
137          <a href="#" class="navigation__link">Properties</a>
138          <ul class="sub-nav">
139            <li class="sub-nav__item"><a  href="/properties" class="sub-nav__link">Current Listings</a></li>
140            <li class="sub-nav__item"><a  href="/sold-homes/" class="sub-nav__link">Sold Homes</a></li>
141          </ul> 
142        </li>
143        <li class="navigation__item">
144          <a  href="/communities" class="navigation__link">Communities</a>
145        </li>
146        <li class="navigation__item sub-nav-container">
147          <a href="#" class="navigation__link">Buying</a>
148          <ul class="sub-nav">
149            <li class="sub-nav__item"><a  href="/buying" class="sub-nav__link">Buying Process</a></li>
150            <li class="sub-nav__item"><a  href="/home-search/listings?search_type&#x3D;envelope&amp;south&#x3D;34.04336628385183&amp;west&#x3D;-118.55438156372071&amp;north&#x3D;34.05019357872283&amp;east&#x3D;-118.4936134362793&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;status%5B%5D&#x3D;Active&amp;status_days%5BActive%5D&#x3D;36500&amp;status%5B%5D&#x3D;Under+Contract&amp;status_days%5BUnder+Contract%5D&#x3D;36500&amp;status%5B%5D&#x3D;Pending&amp;status_days%5BPending%5D&#x3D;36500&amp;status_days%5BSold%5D&#x3D;180&amp;mailer_schedule&#x3D;instant&amp;order&#x3D;status_modified_at%3Adesc&amp;page&#x3D;1" class="sub-nav__link">Search Homes</a></li>
151          </ul> 
152        </li>
153        <li class="navigation__item sub-nav-container">
154          <a href="#" class="navigation__link">Selling</a>
155          <ul class="sub-nav">
156            <li class="sub-nav__item"><a  href="/selling" class="sub-nav__link">Selling Process</a></li>
157            <li class="sub-nav__item"><a  href="/home-valuation" class="sub-nav__link">Home Valuation</a></li>
158            <li class="sub-nav__item"><a  href="/sellers-marketing/" class="sub-nav__link">
158Sellers Marketing</a></li>
159            <li class="sub-nav__item"><a  href="/trade-in/" class="sub-nav__link">Trade In</a></li>
160          </ul> 
161        </li>
162
163      </ul>
164      
165      
166      
167
168
169      <button class="hamburger-component header__hamburger">
170        <svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
171          <circle cx="30" cy="30" r="30" />
172          <rect class="line line--top" x="18" y="26" width="24" height="2" />
173          <rect class="line line--bottom" x="30" y="32" width="12" height="2" />
174        </svg>
175      </button>
176    </div>
177
178  </div>
179</div>
180        </nav>
181        <div id="global-sidemenu" class="sidemenu" data-el-id="1575f740-92ae-4292-919d-936adffb0f46">
182            <div class="sidemenu__container">
183  
184
185  <div class="sidemenu__img" style="background-image: url('https://media-production.lp-cdn.com/media/bd095128-b987-4418-baab-4b3d1f7297f5');">
186  </div>
187  
188  <div class="sidemenu__wrapper">
189    <div class="sidemenu__header">
190      <button class="sidemenu__toggle toggle sidemenu__toggle--right">Close Menu</button>
191    </div>
192    
193    <div class="sidemenu__nav">
194      <ul class="navigation">
195        <li class="navigation__item" >
196          <a  href="/" class="navigation__link" >Home</a>
197        </li>
198        <li class="navigation__item sub-nav-container" data-wow-delay="2.1s">
199          <a href="#" class="navigation__link">
200          Properties
201            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
202              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
203            </svg>
204          </a>
205          <ul class="sub-nav">
206            <li class="sub-nav__item"><a  href="/properties" class="sub-nav__link feature">Current Listings</a></li>
207            <li class="sub-nav__item"><a  href="/sold-homes/" class="sub-nav__link feature">Sold Homes</a></li>
208          </ul>
209    
210        </li>
211        <li class="navigation__item sub-nav-container" data-wow-delay="2.2s">
212          <a href="#" class="navigation__link">
213          Communities
214            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
215              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
216            </svg>
217          </a>
218          <ul class="sub-nav">
219            <li class="sub-nav__item"><a  href="/communities" class="sub-nav__link feature">All Communities</a></li>
220            <li class="sub-nav__item"><a  href="/westside" class="sub-nav__link feature">Westside</a></li>
221            <li class="sub-nav__item"><a  href="/mid-wilshire-downtown/" class="sub-nav__link feature">Mid Wilshire-Downtown</a></li>
222            <li class="sub-nav__item"><a  href="/san-fernando-valley/" class="sub-nav__link feature">San Fernando Valley</a></li>
223            <li class="sub-nav__item"><a  href="/san-gabrielle-valley/" class="sub-nav__link feature">San Gabriel Valley</a></li>
224            <li class="sub-nav__item"><a  href="/south-bay/" class="sub-nav__link feature">South Bay</a></li>
225          </ul>
226    
227        </li>
228        <li class="navigation__item sub-nav-container" data-wow-delay="2.3s">
229          <a href="#" class="navigation__link">
230          Buying
231            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
232              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
233            </svg>
234          </a>
235          <ul class="sub-nav">
236            <li class="sub-nav__item"><a  href="/buying" class="sub-nav__link feature">Buying Process</a></li>
237            <li class="sub-nav__item"><a  href="/home-search/listings?search_type&#x3D;envelope&amp;south&#x3D;34.04336628385183&amp;west&#x3D;-118.55438156372071&amp;north&#x3D;34.05019357872283&amp;east&#x3D;-118.4936134362793&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Commercial&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;status%5B%5D&#x3D;Active&amp;status_days%5BActive%5D&#x3D;36500&amp;status%5B%5D&#x3D;Under+Contract&amp;status_days%5BUnder+Contract%5D&#x3D;36500&amp;status%5B%5D&#x3D;Pending&amp;status_days%5BPending%5D&#x3D;36500&amp;status_days%5BSold%5D&#x3D;180&amp;mailer_schedule&#x3D;instant&amp;order&#x3D;status_modified_at%3Adesc&amp;page&#x3D;1" class="sub-nav__link feature">Search Homes</a></li>
238          </ul>
239    
240        </li>
241        <li class="navigation__item sub-nav-container" data-wow-delay="2.4s">
242          <a href="#" class="navigation__link">
243          Selling
244            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
245              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
246            </svg>
247          </a>
248          <ul class="sub-nav">
249            <li class="sub-nav__item"><a  href="/selling" class="sub-nav__link feature">Selling Process</a></li>
250            <li class="sub-nav__item"><a  href="/home-valuation" class="sub-nav__link feature">Home Valuation</a></li>
251            <li class="sub-nav__item"><a  href="/sellers-marketing/" class="sub-nav__link feature">
251Sellers Marketing</a></li>
252            <li class="sub-nav__item"><a  href="/trade-in/" class="sub-nav__link feature">Trade In</a></li>
253          </ul>
254    
255        </li>
256        <li class="navigation__item sub-nav-container" data-wow-delay="2.5s">
257          <a href="#" class="navigation__link">
258          About Us
259            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="arrow" xmlns="http://www.w3.org/2000/svg">
260              <path d="M7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z" fill="currentColor"/>
261            </svg>
262          </a>
263          <ul class="sub-nav">
264            <li class="sub-nav__item"><a  href="/about-us" class="sub-nav__link feature">LA Team</a></li>
265            <li class="sub-nav__item"><a  href="/dallas-team" class="sub-nav__link feature">Dallas Team</a></li>
266            <li class="sub-nav__item"><a  href="/giving-back/" class="sub-nav__link feature">Giving Back</a></li>
267            <li class="sub-nav__item"><a  href="/market-update" class="sub-nav__link feature">Market Updates</a></li>
268            <li class="sub-nav__item"><a  href="/blog" class="sub-nav__link feature">Blog</a></li>
269            <li class="sub-nav__item"><a target="_blank" href="/careers/" class="sub-nav__link feature">Careers</a></li>
270            <li class="sub-nav__item"><a  href="/testimonials" class="sub-nav__link feature">Testimonials</a></li>
271            <li class="sub-nav__item"><a  href="/press" class="sub-nav__link feature">In the Press</a></li>
272          </ul>
273    
274        </li>
275        <li class="navigation__item" >
276          <a  href="/contact" class="navigation__link" >Contact Us</a>
277        </li>
278      </ul>
279    </div>
280  
281    <div class="sidemenu__socials">
282          <ul class="lp-socials social_icons-style-1 sidemenu-social-links">
283          
284                  <li>
285                    <a
286                      href="https://www.instagram.com/amalfiestates/?hl&#x3D;en"
287                      class="lp-socials__link socials__item"
288                      data-wow-delay="0s"
289                      target="_blank"
290                      aria-label="INSTAGRAM"
291                    >
292                        <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
293                    </a>
294                  </li>
295                  <li>
296                    <a
297                      href="https://www.facebook.com/Amalfiestates/"
298                      class="lp-socials__link socials__item"
299                      data-wow-delay="0.1s"
300                      target="_blank"
301                      aria-label="FACEBOOK"
302                    >
303                        <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
304                    </a>
305                  </li>
306                  <li>
307                    <a
308                      href="https://www.youtube.com/channel/UCF0oITsPGXTiEc3bDRZWBwQ"
309                      class="lp-socials__link socials__item"
310                      data-wow-delay="0.2s"
311                      target="_blank"
312                      aria-label="YOUTUBE"
313                    >
314                        <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
315                    </a>
316                  </li>
317                  <li>
318                    <a
319                      href="https://www.linkedin.com/company/amalfi-estates/"
320                      class="lp-socials__link socials__item"
321                      data-wow-delay="0.3s"
322                      target="_blank"
323                      aria-label="LINKEDIN"
324                    >
325                        <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
326                    </a>
327                  </li>
328                  <li>
329                    <a
330                      href="https://www.yelp.com/biz/amalfi-estates-pacific-palisades"
331                      class="lp-socials__link socials__item"
332                      data-wow-delay="0.4s"
333                      target="_blank"
334                      aria-label="YELP"
335                    >
336                        <span class="lp-i lp-i--yelp" aria-hidden="true"></span>
337                    </a>
338                  </li>
339            </ul>    </div>
340  </div>
341</div>
342
343        </div>
344        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51">
345            <div class="btn-holder" 
346style="
347--backgroundColor: rgba(20, 20, 20, 1); 
348--textColor: rgba(255, 255, 255, 1); 
349--pillTextColor: rgba(26, 26, 26, 1); 
350--pillBackgroundColor: rgba(255, 255, 255, 1);">
351
352    <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Let&#x27;s Connect</button>
353</div>
354
355
356<div class="pop-up" style="--backgroundColor: rgba(20, 20, 20, 1); --textColor: rgba(255, 255, 255, 1);">
357  <div class="lp-container">
358    <form data-type="contact-form" class="contact-form">
359      <div class="contact-form__container">
360          <h3 class="lp-h3">Leave a Message</h3>
361      
362        <div class="contact-form__content">
363          <div class="contact-form__inputs-container">
364            <div class="contact-form__item">
365              <input
366                id="__FullName"
367                type="text" name="name"
368                class="lp-input lp-input--light"
369                required
370                placeholder="Full Name">
371            </div>
372            <div class="contact-form__item">
373              <input
374                id="__Email"
375                type="email" name="email"
376                class="lp-input js-email-input lp-input--light"
377                required
378                placeholder="Email">
379            </div>
380            <div class="contact-form__item"> 
381              <input
382                class="lp-input lp-input--light"
383                type="tel" 
384                placeholder="Phone"
385                id="__Phone"
386                name="phone"
387                required>
388            </div>
389
390            <div class="contact-form__item input-group-select">
391              <select name="interest" id="-field-interest" placeholder="Interest"
392                class="lp-input dropdown-select js-select js-form-element lp-input--light" required>
393                <option value="" disabled selected data-label="Interest">Interested in...</option>
394                <option value="Selling &amp; Buying">Selling &amp; Buying</option>
395                <option value="Selling">Selling</option>
396                <option value="Buying">Buying</option>
397                <option value="Renting">Renting</option>
398                <option value="Other">Other</option>
399              </select>
400              <label for="-field-interest" class="lp-label sr-only">Interest</label>
401            </div>
402
403            <div class="contact-form__item">
404              <textarea
405                name="message"
406                rows="4"
407                id="__Message"
408                class="lp-input lp-input--light"
409                placeholder="Message"
410                required></textarea>
411            </div>
412            <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
413  <label class='lp-tcr-content'>
414    <span class='lp-tcr-checkbox'>
415      <input
416        type='checkbox'
417        id='-termsAccepted'
418        name='termsAccepted'
419        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
420        oninput="this.setCustomValidity('')"
421        required
422      /></span>
423    <span class='lp-tcr-message'>
424      
425        I agree to be contacted by
426        Amalfi Estates-
427        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
428        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
429        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
430    </span>
431  </label>
432
433</div>
434            <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit  contact-form__item">Submit</button>
435            
436            <div class="lp-h-pot">
437              <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
438            </div>
439            
440            <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
441            <input type="hidden" name="button_text" value="Let&#x27;s Connect">
442          </div>
443        </div>
444      </div>
445
446
447      <div class="success-block">
448          <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3>
449
450      </div>
451    </form>
452
453    <button type="button" class="close-btn lp-ico lp-ico-close"></button>
454
455    
456  </div>
457</div>
458
459
460        </div>
461        <section  class="image-section is-font-color-light is-background-color-dark" id="section-33514986-d0a9-4c0c-9c08-c60d74b86348" data-el-id="bce33bae-7388-4ccc-abff-e0ce18ec46d2">
462    
463<script>
464  (function(){
465    const sectionId = 'section-33514986-d0a9-4c0c-9c08-c60d74b86348'
466    const section = document.querySelector(`#${sectionId}`);
467    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');
468
469    if('true' === 'true') {
470      section.classList.add('parallax-enabled');
471      section.style.setProperty('--sectionBackground', sectionBg);
472      section.style.setProperty('background', 'transparent');
473    }
474  })()
475</script>
475
476
477
478<div class="opening-with-search height-class-770px parallax">
479  <div class="center-block">
480    <button class='lp-play video-section__play-button js-play-btn'></button>
481    <div class="container lp-container">
482
483      <div class="lp-title-group">
484        
485
486            <h1 class="h1 lp-h1 opening-title lp-pre-line" style="color: rgba(255, 255, 255, 1)">Blog</h1>
487
488        
489      </div>
490      
491      <div class="buttons"></div>
492      
493    </div>
494  </div>
495  <div class="bottom-spacer"></div>
496</div>
497</section>
498<section id="section-b77708cd-fdfc-4613-9af8-1194d5b50ae8"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="fbce30da-e561-48a0-b724-32c0e1f42ba6">
499<script type="text/x-handlebars-template" class="blogItem pagination-script">  <a class="item" href="/blog/{{slug}}">
500		<figure>
501		  {{#if media.[0]}} 
502			  {{{mediaImage media.[0] sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" alt=../lastName}}}
503			{{/if}}
504		</figure>
505		<div class="text-wrap">
506  		<h5 class="lp-h5">{{title}}</h5>
507  		<p class="bf1">
508  		  
509  	  </p>
510  	  <p class="item-text">
511    	    {{truncate subtitle 168 "…"}}
512    	    {{#numCompare subtitle.length 168 ">"}}
513    	    <span class="hyperlink-style-1 link">Read more</span>
514    	    {{/numCompare}}
515  	    </p>
516	  </div>
517	</a> 
518</script>
518
519
520<div class="section lp-vertical-paddings"> 
521  <div class="lp-container">
522    
523    
524    <div class="collection collection--3 data-container">
525          <a class="item" href="/blog/city-councils-proposition-te-provides-limited-aid-for-fire-victims">
526        		<figure>
527        			  <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/5033efbb-79a8-44ee-aff5-18be6d4c91d7" 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/5033efbb-79a8-44ee-aff5-18be6d4c91d7 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/5033efbb-79a8-44ee-aff5-18be6d4c91d7 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5033efbb-79a8-44ee-aff5-18be6d4c91d7 1282w" alt="" sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
528        		</figure>
529        		<div class="text-wrap">
530          		<h5 class="lp-h5">City Council’s Proposition TE Provides Limited Aid for Fire Victims</h5>
531          		<p class="bf1">
532          		  
533          	  </p>
534          	  <p class="item-text">
535            	    
536          	    </p>
537        	  </div>
538        	</a> 
539          <a class="item" href="/blog/palisades-foreclosures-have-increased-but-still-represent-just-03-of-properties">
540        		<figure>
541        			  <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/e919b435-d450-4ca8-b19a-3bf113ebdc37" 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/e919b435-d450-4ca8-b19a-3bf113ebdc37 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/e919b435-d450-4ca8-b19a-3bf113ebdc37 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/e919b435-d450-4ca8-b19a-3bf113ebdc37 1702w" alt="Aerial view of Pacific Palisades, highlighting the community and surrounding residential landscape." sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
542        		</figure>
543        		<div class="text-wrap">
544          		<h5 class="lp-h5">Palisades Foreclosures Have Increased — But Still Represent Just 0.3% of Properties</h5>
545          		<p class="bf1">
546          		  
547          	  </p>
548          	  <p class="item-text">
549            	    Foreclosure activity has risen since 2025, but the latest numbers remain a small fraction of the Palisades housing market.
550          	    </p>
551        	  </div>
552        	</a> 
553          <a class="item" href="/blog/why-this-may-be-the-best-time-in-a-decade-to-buy-a-home-in-dallas">
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/17b01066-483a-46c0-bd83-034a433fdc2f" 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/17b01066-483a-46c0-bd83-034a433fdc2f 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/17b01066-483a-46c0-bd83-034a433fdc2f 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/17b01066-483a-46c0-bd83-034a433fdc2f 1454w" alt="Downtown Dallas Amalfi Estates the best realtor in dallas" sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
556        		</figure>
557        		<div class="text-wrap">
558          		<h5 class="lp-h5">Why This May Be the Best Time in a Decade to Buy a Home in Dallas</h5>
559          		<p class="bf1">
560          		  
561          	  </p>
562          	  <p class="item-text">
563            	    
564          	    </p>
565        	  </div>
566        	</a> 
567          <a class="item" href="/blog/what-i-learned-after-helping-sell-56-palisades-lots-for-70-families-since-the-fire">
568        		<figure>
569        			  <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/cd7dfc72-22de-44db-90e1-6ce8b11fc73c" 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/cd7dfc72-22de-44db-90e1-6ce8b11fc73c 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/cd7dfc72-22de-44db-90e1-6ce8b11fc73c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cd7dfc72-22de-44db-90e1-6ce8b11fc73c 1400w" alt="Anthony Marguleas the best Realtor in pacific palisades" sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
570        		</figure>
571        		<div class="text-wrap">
572          		<h5 class="lp-h5">What I Learned After Helping Sell 56 Palisades Lots for 70 Families Since the Fire</h5>
573          		<p class="bf1">
574          		  
575          	  </p>
576          	  <p class="item-text">
577            	    
578          	    </p>
579        	  </div>
580        	</a> 
581          <a class="item" href="/blog/dallas-market-lease-breakdown-2026">
582        		<figure>
583        			  <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/e9877122-cbac-4aa9-8329-95050c91c16a" 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/e9877122-cbac-4aa9-8329-95050c91c16a 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/e9877122-cbac-4aa9-8329-95050c91c16a 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/e9877122-cbac-4aa9-8329-95050c91c16a 1378w" alt="Aerial view of a Dallas apartment community featuring a central lake, walking paths, mature trees, and resort-style amenities surrounded by residential buildings." sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
584        		</figure>
585        		<div class="text-wrap">
586          		<h5 class="lp-h5">Dallas Market Lease Breakdown</h5>
587          		<p class="bf1">
588          		  
589          	  </p>
590          	  <p class="item-text">
591            	    A Closer Look at Dallas Rental Prices, Hidden Costs, and What Renters Need to Know Before Moving
592          	    </p>
593        	  </div>
594        	</a> 
595          <a class="item" href="/blog/why-amalfi-estates-is-the-leading-independent-brokerage-on-the-westside">
596        		<figure>
597        			  <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/0bfdf824-5628-4b68-bafe-3d217af0ffa7" 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/0bfdf824-5628-4b68-bafe-3d217af0ffa7 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/0bfdf824-5628-4b68-bafe-3d217af0ffa7 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0bfdf824-5628-4b68-bafe-3d217af0ffa7 1860w" alt="" sizes="(min-width: 769px) 381px, (min-width: 561px) 450px, 100vw" loading="lazy">
598        		</figure>
599        		<div class="text-wrap">
600          		<h5 class="lp-h5">Why Amalfi Estates Is the Leading Independent Brokerage on the Westside</h5>
601          		<p class="bf1">
602          		  
603          	  </p>
604          	  <p class="item-text">
605            	    Trusted Experts in the Palisades, Santa Monica, and Brentwood Real Estate Markets
606          	    </p>
607        	  </div>
608        	</a> 
609    </div>
610    <div class="lp-pagination pagination-container pagination-style-1"></div>
611  </div>
612</div>
613
614</section>
615<section id="section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99"  class="solid-section is-font-color-light is-background-color-light" data-el-id="19e4a145-7cee-4338-8873-657ce2636b4c">
616  
617<div class="newsletter-signup lp-vertical-paddings redesign">
618  <div class="lp-container-custom">
619    <form data-type="contact-form" class="newsletter-signup__form">
620      <div class="newsletter-signup__form-container">
621        <div class="lp-title-group">
622          <h2 class="lp-h2">Receive market updates in your inbox.</h2>
623          
624        </div>
625        <div class="newsletter-signup-form">
626          <div class="newsletter-signup__inputs-container">
627              <input id="section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99__newsSignFirstName" type="text" name="name" class="lp-in
627put lp-input--light newsletter-signup__form-item" required placeholder="Name">
628              
629            <input id="section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99__newsSignEmail" type="email" name="email" class="lp-input lp-input--light newsletter-signup__form-item" required placeholder="Email" pattern="[a-zA-Z0-9.!#$%&amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+">
630            
631            <button type="submit" class="lp-btn lp-btn--filled lp-btn--light submit button-style-2 newsletter-signup__form-item lp-btn--mob-full-width">Submit</button>
632            
633            <div class="lp-h-pot">
634              <input id="section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
635            </div>
636            
637            <input style="display: none;" type="text" name="source" value="NEWSLETTER_SIGNUP" />
638          </div>
639        </div>
640        <div class="lp-disclaimer">  <label style='display: none;' for='section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99-termsAccepted'>Opt In/Disclaimer Consent:</label>
641  <label class='lp-tcr-content'>
642    <span class='lp-tcr-checkbox'>
643      <input
644        type='checkbox'
645        id='section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99-termsAccepted'
646        name='termsAccepted'
647        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
648        oninput="this.setCustomValidity('')"
649        required
650      /></span>
651    <span class='lp-tcr-message'>
652      
653        I agree to be contacted by
654        Amalfi Estates-
655        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
656        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
657        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
658    </span>
659  </label>
660
661</div>
662      </div>
663      <div class="success-block">
664        <div class="lp-title-group">
665          <h2 class="lp-h2">Thank You</h2>
666          <div class="lp-text--subtitle">You have successfully been added to our Newsletter. Stay tuned for the latest updates sent straight to your inbox!</div>
667        </div>
668      </div>
669    </form>
670    
671  </div>
672</div>
673</section>
674
675        <div id="modals" class="modals"></div>
676        <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="f3892c1c-f128-483a-b998-cb1ea48c25c1">
677            <div class="site-footer">
678
679  <div class="site-footer__bottom"> 
680    <div class="lp-container">
681      
682        <div class="site-footer__logo-bar">
683          <div class="site-footer__logo-container">
684            <img src="https://media-production.lp-cdn.com/media/ca0c1987-6fa6-4db4-bfcc-be6b3241a014" alt="">
685          </div>
686          <div class="site-footer__logo-container">
687            
688          </div>
689        </div>
690
691      <div class="site-footer__info">
692        <div class="site-footer__col">
693            <h5 class="lp-h5 site-footer__col-title">Amalfi Estates</h5>
694
695            <div class="site-footer__col-content lp-a"><p><a href="tel:3105734245">310.573.4245</a><br /><a href="/cdn-cgi/l/email-protection#b8d1d6ded7f8d9d5d9d4ded1ddcbccd9ccddcb96dbd7d5"><span class="__cf_email__" data-cfemail="bbd2d5ddd4fbdad6dad7ddd2dec8cfdacfdec895d8d4d6">[email&#160;protected]</span></a><br /><br />DRE# 02014153</p></div>
696        </div>
697
698
699          <div class="site-footer__col">
700              <h5 class="lp-h5 site-footer__col-title">Address</h5>
701
702              <div class="site-footer__col-content lp-a"><p>Pacific Palisades, CA 90272</p></div>
703          </div>
704        
705        <div class="site-footer__navigation-wrap">
706          <ul class="footer-navigation">
707            <li class="footer-navigation__item">
708              <a  href="/" class="footer-navigation__link">Home</a>
709            </li>
710            <li class="footer-navigation__item">
711              <a  href="/properties" class="footer-navigation__link">Properties</a>
712            </li>
713            <li class="footer-navigation__item">
714              <a  href="/about-us" class="footer-navigation__link">LA Team</a>
715            </li>
716            <li class="footer-navigation__item">
717              <a  href="/communities" class="footer-navigation__link">Communities</a>
718            </li>
719            <li class="footer-navigation__item">
720              <a  href="/testimonials" class="footer-navigation__link">Testimonials</a>
721            </li>
722            <li class="footer-navigation__item">
723              <a  href="/contact" class="footer-navigation__link">Contact Us</a>
724            </li>
725          </ul>
726        
727          <ul class="lp-socials social_icons-style-1 site-footer__socials socials">
728          
729                  <li>
730                    <a
731                      href="https://twitter.com/amalfiestates?lang&#x3D;en"
732                      class="lp-socials__link socials__item"
733                      data-wow-delay="0s"
734                      target="_blank"
735                      aria-label="TWITTER"
736                    >
737                        <span class="lp-i lp-i--twitter" aria-hidden="true"></span>
738                    </a>
739                  </li>
740                  <li>
741                    <a
742                      href="https://www.facebook.com/Amalfiestates/"
743                      class="lp-socials__link socials__item"
744                      data-wow-delay="0.1s"
745                      target="_blank"
746                      aria-label="FACEBOOK"
747                    >
748                        <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
749                    </a>
750                  </li>
751                  <li>
752                    <a
753                      href="https://www.instagram.com/amalfiestates/?hl&#x3D;en"
754                      class="lp-socials__link socials__item"
755                      data-wow-delay="0.2s"
756                      target="_blank"
757                      aria-label="INSTAGRAM"
758                    >
759                        <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
760                    </a>
761                  </li>
762                  <li>
763                    <a
764                      href="https://www.youtube.com/channel/UCF0oITsPGXTiEc3bDRZWBwQ"
765                      class="lp-socials__link socials__item"
766                      data-wow-delay="0.3s"
767                      target="_blank"
768                      aria-label="YOUTUBE"
769                    >
770                        <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
771                    </a>
772                  </li>
773                  <li>
774                    <a
775                      href="https://www.linkedin.com/company/amalfi-estates/"
776                      class="lp-socials__link socials__item"
777                      data-wow-delay="0.4s"
778                      target="_blank"
779                      aria-label="LINKEDIN"
780                    >
781                        <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
782                    </a>
783                  </li>
784                  <li>
785                    <a
786                      href="https://www.yelp.com/biz/amalfi-estates-pacific-palisades"
787                      class="lp-socials__link socials__item"
788                      data-wow-delay="0.5s"
789                      target="_blank"
790                      aria-label="YELP"
791                    >
792                        <span class="lp-i lp-i--yelp" aria-hidden="true"></span>
793                    </a>
794                  </li>
795            </ul>
796
797        </div>
798      </div>
799      
800      <div class="site-footer__disclaimer"><p style="font-size: 12px;"><a class="link" href="https://d1e1jt2fj4r8r.cloudfront.net/b8947b11-20b5-447c-afdb-bd8d92c8512d/BwYS9e60W/Texas%20ConsumerProtection%20Notice.pdf" target="_blank" rel="noopener">Texas Real Estate Commission Consumer Protection Notice</a><br><a class="link" href="https://d1e1jt2fj4r8r.cloudfront.net/d2a359c0-d879-4840-938b-f0bb8351cc6c/c200b248-cd79-4476-8223-aab98ac83906/Amalfi%20Estates.pdf" target="_blank" rel="noopener">Texas Real Estate Commission Information About Brokerage Services</a></p>
801<p style="font-size: 12px;">All information is deemed reliable but not guaranteed and should be independently reviewed and verified.</p>
802<p><img style="width: 100px; height: auto;
802 margin-top: 1px;" src="https://media-production.lp-cdn.com/media/533e5da4-0053-4b56-898c-070fe2b0e5e5" alt="">&nbsp; &nbsp;<img style="width: 120px; margin-top: 1px;" src="https://media-production.lp-cdn.com/media/b9e3ed9a-4d2b-4f29-90d3-3b0dd3d0e78f" alt=""></p></div>
803
804      <div class="site-footer__copy">
805        <div class="lp-a site-footer__copy-lp">
806        <span>Powered by</span>
807        <a href="https://www.luxurypresence.com/" class="" target="_blank">Luxury Presence</a>
808        </div>
809        <div>Copyright © <span class="auto-year-update">2026</span> | <a href="/terms-and-conditions">Privacy Policy</a></div>
810      </div>
811      
812    </div>
813  </div>
814
815  
816    
817</div>
818
819        </footer>
820
821        <div id="modal-global-contact-us" class="modal "
822            data-el-id=""
823            style="background-color: ;"
824            >
825            <div class="modal-content">
826                  <div class="contact-form">
827            <div class="contact-form__close close"></div>
828            <div class="contact-form__container">
829        
830              <form class="contact-form__form" data-type="contact-form" style="color: #FFFFFF; background: rgba(119, 154, 208, 1);  fill: #FFFFFF;">
831                <h5 class="lp-h5 contact-form__title1">Get in Touch</h5>
832                <div class="input-container">
833                  <input id="-cmp-name" name="name" type="text" class="lp-input lp-input--light contact-form__input" placeholder="Name" required>
834                  <span class="input-icon"></span>
835                </div>
836        
837                <div class="input-container">
838                  <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-]+)+">
839                  <span class="input-icon"></span>
840                </div>
841        
842                <div class="input-container">
843                  <input id="-cmp-phone" name="phone" type="tel" class="lp-input lp-input--light  contact-form__input" placeholder="Phone" required>
844                  <span class="input-icon"></span>
845                </div>
846        
847                <div class="input-container">
848                  <textarea id="-cmp-contactMessage" placeholder="Message" name="message" required type="text" class="lp-input lp-input--light  contact-form__input"></textarea>
849                  <span class="input-icon"></span>
850                </div>
851        
852                <div class="h-pot">
853                  <label for="-cmp-middleName">Middle Name</label>
854                  <input id="-cmp-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
855                </div>
856        
857                <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
858          <label class='lp-tcr-content'>
859            <span class='lp-tcr-checkbox'>
860              <input
861                type='checkbox'
862                id='-termsAccepted'
863                name='termsAccepted'
864                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
865                oninput="this.setCustomValidity('')"
866                required
867              /></span>
868            <span class='lp-tcr-message'>
869              
870                I agree to be contacted by
871                Amalfi Estates-
872                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
873                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
874                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
875            </span>
876          </label>
877        
878        </div>
879        
880                <input type="hidden" name="source" value="CONTACT_INQUIRY">
881                <button class="contact-form__submit btn lp-btn lp-btn--filled button-style-4" type="submit">
882        
883                  <span class="sync-icon lp-i--spin">
884                    <svg width="20" height="15" viewBox="0 0 20 15" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
885                      <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" />
886                    </svg>
887                  </span>
888        
889                  <span class="success-icon">
890                    <svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
891                      <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" />
892                    </svg>
893                  </span>
894        
895                  Submit<span class="success-text">ted</span>
896                </button>
897              </form>
898              
899              <div class="contact-form__details">
900                <h5 class="lp-h5 contact-form__title2">Contact Details</h5>
901                <div class="company">
902                  <div class="company_contact lp-a">
903                      <p><strong>Amalfi Estates</strong></p>
904        <p><a href="tel:3105734245">(310) 573-4245</a></p>
905        <p><a href="/cdn-cgi/l/email-protection#365f58505976575b575a505f534542574253451855595b"> <span class="__cf_email__" data-cfemail="7e171018113e1f131f1218171b0d0a1f0a1b0d501d1113">[email&#160;protected]</span></a></p>
906        <p><br /><br /></p>
907        <p>984 Monument St., #105<br />Pacific Palisades, CA 90272</p>
908                  </div>
909                </div>
910                
911                <div class="socials">
912                  <ul class="lp-socials social_icons-style-1 lp-socials socials--theme-1">
913                  
914                          <li>
915                            <a
916                              href="https://twitter.com/amalfiestates?lang&#x3D;en"
917                              class="lp-socials__link lp-socials__link"
918                              data-wow-delay="0s"
919                              target="_blank"
920                              aria-label="TWITTER"
921                            >
922                                <span class="lp-i lp-i--twitter" aria-hidden="true"></span>
923                            </a>
924                          </li>
925                          <li>
926                            <a
927                              href="https://www.facebook.com/Amalfiestates/"
928                              class="lp-socials__link lp-socials__link"
929                              data-wow-delay="0.1s"
930                              target="_blank"
931                              aria-label="FACEBOOK"
932                            >
933                                <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
934                            </a>
935                          </li>
936                          <li>
937                            <a
938                              href="https://www.instagram.com/amalfiestates/?hl&#x3D;en"
939                              class="lp-socials__link lp-socials__link"
940                              data-wow-delay="0.2s"
941                              target="_blank"
942                              aria-label="INSTAGRAM"
943                            >
944                                <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
945                            </a>
946                          </li>
947                          <li>
948                            <a
949                              href="https://www.youtube.com/channel/UCF0oITsPGXTiEc3bDRZWBwQ"
950                              class="lp-socials__link lp-socials__link"
951                              data-wow-delay="0.3s"
952                              target="_blank"
953                              aria-label="YOUTUBE"
954                            >
955                                <span class="lp-i lp-i--youtube" aria-hidden="true"></span>
956                            </a>
957                          </li>
958                          <li>
959                            <a
960                              href="https://www.linkedin.com/company/amalfi-estates/"
961                              class="lp-socials__link lp-socials__link"
962                              data-wow-delay="0.4s"
963                              target="_blank"
964                              aria-label="LINKEDIN"
965                            >
966                                <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
967                            </a>
968                          </li>
969                          <li>
970                            <a
971                              href="https://www.yelp.com/biz/amalfi-estates-pacific-palisades"
972                              class="lp-socials__link lp-socials__link"
973                              data-wow-delay="0.5s"
974                              target="_blank"
975                              aria-label="YELP"
976                            >
977                                <span class="lp-i lp-i--yelp" aria-hidden="true"></span>
978                            </a>
979                          </li>
980                    </ul>        </div>
981              </div>
982            </div>
983        </div>
984        <!-- version 1 -->
985            </div>
986            <button class="close lp-close" type="button" aria-label="close modal">
987                <span class="lp-close-icon" aria-hidden="true"></span>
988            </button>
989        </div>
990        <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;">
991          <style>
992            #qualifying-questions-modal .custom-select-toggle {
993              border: 1px solid #848484;
994              border-radius: 8px;
995              padding: 12px 16px;
996            }
997        
998            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
999              color: #848484;
1000            }
1001        
1002            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
1003              color: #848484;
1004              opacity: 1;
1005            }
1006        
1007            #qualifying-questions-modal .disclaimer-more {
1008              display: none;
1009            }
1010        
1011            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
1012              display: inline;
1013            }
1014        
1015            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
1016              display: none;
1017            }
1018          </style>
vendor: 119 bytes, lines 1018-1019
1018
1019          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1019<script>
1020            function toggleDisclaimerQualifyingQuestionsModal() {
1021              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
1022              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
1023        
1024              if (disclaimerText.classList.contains('collapsed')) {
1025                disclaimerText.classList.remove('collapsed');
1026                toggleButton.textContent = 'Read less';
1027                toggleButton.setAttribute('aria-expanded', 'true');
1028              } else {
1029                disclaimerText.classList.add('collapsed');
1030                toggleButton.textContent = 'Read more';
1031                toggleButton.setAttribute('aria-expanded', 'false');
1032              }
1033            }
1034          </script>
1034
1035          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
1036            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
1037              <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;">
1038                <span aria-hidden="true">&times;</span>
1039              </button>
1040              <div style="padding: 40px 30px 32px;">
1041                <div style="text-align: left; margin-bottom: 32px;">
1042                  <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;">
1043                    Thanks, please provide more information to help serve you
1044                  </h2>
1045                </div>
1046                <form id="qualifying-questions-modal-form" data-type="contact-form">
1047                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
1048                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
1049                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
1050                  <label for="qualifying-questions-modal-email" style="display:none;">
1051                    Email
1052                  </label>
1053                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
1054                    Trigger Source
1055                  </label>
1056        
1057                  <div style="margin-bottom: 20px;">
1058                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
1059                      Phone Number
1060                    </label>
1061                    <input
1062                      type="tel"
1063                      id="qualifying-questions-modal-phoneNumber"
1064                      name="phoneNumber"
1065                      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;"
1066                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
1067                      required
1068                      placeholder="Phone"
1069                      aria-label="Phone Number"
1070                      inputmode="tel"
1071                      autocomplete="tel"
1072                      onfocus="this.style.borderColor='black';"
1073                      onblur="this.style.borderColor='#848484';"
1074                    />
1075                  </div>
1076        
1077                  <div style="margin-bottom: 20px;">
1078                    <label for="qualifying-questions-modal-interest" style="display:none;">
1079                      Interest
1080                    </label>
1081                    <select
1082                      id="qualifying-questions-modal-interest"
1083                      name="interest"
1084                      required
1085                      data-label="Interest"
1086                      aria-label="Interest"
1087                      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;"
1088                      onfocus="this.style.borderColor='black'; this.style.color='black';"
1089                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
1090                    >
1091                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
1092                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
1093                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
1094                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
1095                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
1096                      <option value="Other" style="background: #fff; color: black;">Other</option>
1097                    </select>
1098                  </div>
1099        
1100                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
1101                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
1102                    <label class='lp-tcr-content'>
1103                      <span class='lp-tcr-checkbox'>
1104                        <input
1105                          type='checkbox'
1106                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
1107                          name='termsAccepted'
1108                          aria-describedby='qualifying-questions-modal-disclaimer-text'
1109                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1110                          oninput="this.setCustomValidity('')"
1111                          required
1112                        /></span>
1113                      <span class='lp-tcr-message'>
1114                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
1115                          
1116                            I agree to be contacted by
1117                            <strong>Amalfi Estates-</strong>
1118                            via call, email, and text <span class="disclaimer-more">for real estate services. 
1119                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
1120                            You can also click the unsubscribe link in the emails. 
1121                            Message and data rates may apply. Message frequency may vary.</span>
1122                            <span class="disclaimer-ellipsis">...</span>
1123                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
1124                        </div>
1125                        <button
1126                          id="qualifying-questions-modal-toggle-disclaimer"
1127                          type="button"
1128                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
1129                          aria-expanded="false"
1130                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
1131                        >
1132                          Read more
1133                        </button>
1134                      </span>
1135                    </label>
1136                  </div>
1137        
1138                  <div>
1139                    <button
1140                      type="submit"
1141                      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;"
1142                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1143                      onmouseout="this.style.background='black'; this.style.color='white';"
1144                    >
1145                      Submit
1146                    </button>
1147                  </div>
1148                </form>
1149              </div>
1150            </div>
1151          </div>
1152        </div>
1153
1154    
1154<script>
1155        (function() {
1156        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1157
1158        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1159            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1160            entries.forEach(function(video) {
1161                if (video.isIntersecting) {
1162                for (var source in video.target.children) {
1163                    var videoSource = video.target.children[source];
1164                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1165                    videoSource.src = videoSource.dataset.src;
1166                    }
1167                }
1168
1169                video.target.load();
1170                video.target.classList.remove("lazy");
1171                lazyVideoObserver.unobserve(video.target);
1172                }
1173            });
1174            });
1175
1176            lazyVideos.forEach(function(lazyVideo) {
1177                lazyVideoObserver.observe(lazyVideo);
1178            });
1179        }
1180        })();
1181    </script>
1181
1182
1183        <!-- Global site tag (gtag.js) - Google Analytics -->
1184        
1184<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1184
1185
1186            <!-- Google Tag Manager -->
1187            
1187<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1188                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1189                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1190                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1191            })(window,document,'script','dataLayer','GTM-PSHL83P');</script>
1191
1192            <!-- End Google Tag Manager -->
1193            <!-- Google Tag Manager -->
1194            
1194<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1195                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1196                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1197                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1198            })(window,document,'script','dataLayer','GTM-NRB4D5T');</script>
1198
1199            <!-- End Google Tag Manager -->
1200            <!-- Google Tag Manager -->
1201            
1201<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1202                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1203                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1204                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1205            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1205
1206            <!-- End Google Tag Manager -->
1207
1208
1209        <!-- LP Tracker (divolte.js) - LP Divolte -->
1210            
1210<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1210
1211        <!-- LP Tracker (eventBus) - LP EventBus -->
1212            
1212<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1212
1213
1214    
1214<script>
1215        window.dataLayer = window.dataLayer || [];
1216        document.sendGoogleTagManagerEvent = function() {
1217            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1218            if (window.navigator.globalPrivacyControl) {
1219                return;
1220            }
1221
1222            dataLayer.push(arguments);
1223        }
1224
1225        document.sendGoogleTagManagerEvent('js', new Date());
1226            document.sendGoogleTagManagerEvent('config', 'G-LRC2PKYE4V', { page: location.pathname, location: location.href });
1227            document.sendGoogleTagManagerEvent('config', 'G-SGVBV9SDQX', { page: location.pathname, location: location.href });
1228        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1229            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1230                event_category: googleEvent.eventCategory,
1231                event_label: googleEvent.eventLabel,
1232                value: googleEvent.eventValue,
1233                page: googleEvent.page,
1234                location: googleEvent.location
1235            })
1236        };
1237
1238        document.addEventListener("DOMContentLoaded", function() {
1239            (function() {
1240                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1241                var date = new Date();
1242                var elements = document.getElementsByClassName('auto-year-update');
1243                var i;
1244                for (i = 0; i < elements.length; i++) {
1245                    elements[i].innerText = date.getFullYear();
1246                }
1247            })();
1248            if (window.divolteLp) {
1249                window.divolteLp('sendLpPageView', {});
1250            }
1251            if (window.eventBusLp) {
1252                window.eventBusLp('sendLpPageView', {});
1253            }
1254        });
1255    </script>
1255
1256
1257            <!-- Facebook Pixel Code -->
1258            
1258<script type="text/plain" data-consent-category="advertising">
vendor: 575 bytes, lines 1258-1267
1258
1259                !function(f,b,e,v,n,t,s)
1260                {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
1261                        n.callMethod.apply(n,arguments):n.queue.push(arguments)};
1262                    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
1263                    n.queue=[];t=b.createElement(e);t.async=!0;
1264                    t.src=v;s=b.getElementsByTagName(e)[0];
1265                    s.parentNode.insertBefore(t,s)}(window, document,'script',
1266                        'https://connect.facebook.net/en_US/fbevents.js');
1267                fbq('init', '
1267613549979560135
vendor: 58 bytes, lines 1267-1269
1267');
1268                fbq('track', 'PageView');
1269            
1269</script>
1269
1270            <noscript><img height="1" width="1" style="display:none"
1271                           src="https://www.facebook.com/tr?id=613549979560135&ev=PageView&noscript=1"
1272                /></noscript>
1273            <!-- End Facebook Pixel Code -->
1274
1275    
1275<script>
1276    // Function to dynamically load a script
1277    function loadScript(url, callback) {
1278        var script = document.createElement('script');
1279        script.type = 'text/javascript';
1280        script.src = url;
1281        script.defer = true;
1282        script.async = true;
1283        script.onload = callback;
1284        document.head.appendChild(script);
1285    }
1286
1287    // Function to dynamically load CSS file
1288    function loadCSS(url) {
1289        var link = document.createElement("link");
1290        link.rel = "stylesheet";
1291        link.href = url;
1292        document.head.appendChild(link);
1293    }
1294
1295    // Global methods / variables that can be accessed by element js
1296    window.luxuryPresence = {
1297        libs: {
1298            loadJs: loadScript,
1299            loadCss: loadCSS,
1300            jsLibsMap: {
1301                paroller: {
1302                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1303                    isLoaded: false,
1304                },
1305                ionRangeSlider: {
1306                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1307                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1308                    isLoaded: false,
1309                    requires: ['jquery'],
1310                },
1311                splide: {
1312                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1313                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1314                    isLoaded: false,
1315                },
1316                wow: {
1317                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1318                    isLoaded: false,
1319                },
1320                jquery: {
1321                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1322                    isLoaded: false,
1323                },
1324                slick: {
1325                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1326                    isLoaded: false,
1327                    requires: ['jquery'],
1328                },
1329                libphonenumber: {
1330                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1331                    isLoaded: false,
1332                },
1333            },
1334        },
1335    };
1336    </script>
1336
1337    
1337<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>
1337
1338    
1338<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1338
1339    
1339<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1339
1340    
1340<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1340
1341    
1341<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>
1341
1342    
1342<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>
1342
1343    
1343<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>
1343
1344
1345    <!-- GOOGLE TRANSLATE SCRIPT -->
1346    
1346<script>
1347        function googleTranslateElementInit() {
1348            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1349            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1350            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1351            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1352                translate.innerText = '';
1353                new google.translate.TranslateElement({
1354                    pageLanguage: 'en',
1355                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1356                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1357                }, translate);
1358            });
1359        }
1360    </script>
1360
1361    
1361<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1361
1362            
1362<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1362
1363
1364    <!-- GOOGLE TRANSLATE SCRIPT END-->
1365    
1365<script>
1366
1367        // UI helpers
1368        (function () {
1369
1370            function getSideMenu () {
1371                return document.querySelector('body > div.sidemenu');
1372            }
1373
1374            function sideMenuHide (instant) {
1375                var sideMenu = getSideMenu();
1376                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1377                  return;
1378                }
1379                sideMenu.classList.remove('visible');
1380                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1381                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1382            }
1383
1384            function sideMenuShow () {
1385                var sideMenu = getSideMenu();
1386                if (!sideMenu || sideMenu.classList.contains('visible')) {
1387                  return;
1388                }
1389                sideMenu.classList.add('visible');
1390                sideMenu.dispatchEvent(new Event('lpui-show'));
1391                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1392            }
1393
1394            function sideMenuToggle () {
1395                var sideMenu = getSideMenu();
1396                if (!sideMenu) {
1397                  return;
1398                }
1399                var isSideMenuVisible = sideMenu.classList.contains('visible');
1400                if (isSideMenuVisible) {
1401                    sideMenuHide();
1402                } else {
1403                    sideMenuShow();
1404                }
1405            }
1406
1407            var scrollLockRequests = {};
1408            window.__debug_scrollLockRequests = scrollLockRequests;
1409            var hideScrollStyles = ''+
1410                    'body {'+
1411                    'overflow: hidden;' +
1412                    '}';
1413            var hideScrollId = 'hide-body-scroll-style';
1414
1415            function scrollLock () {
1416                var style = document.createElement('style');
1417                style.id = hideScrollId;
1418                style.textContent = hideScrollStyles;
1419                document.head.appendChild(style);
1420                window.dispatchEvent(new Event('lpui-scroll-locked'));
1421            }
1422
1423            function scrollUnlock () {
1424                document.getElementById(hideScrollId)?.remove();
1425                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1426            }
1427
1428            function requestScrollLock (lockId) {
1429                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1430                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1431                if (!wasLocked) {
1432                    scrollLock();
1433                }
1434            }
1435
1436            function releaseScrollLock (lockId) {
1437                if (lockId) {
1438                    delete scrollLockRequests[lockId];
1439                    if (!Object.keys(scrollLockRequests).length) {
1440                        scrollUnlock();
1441                    }
1442                } else {
1443                    scrollLockRequests = {};
1444                    window.__debug_scrollLockRequests = scrollLockRequests;
1445                    scrollUnlock();
1446                }
1447            }
1448
1449            function showModal (modalId, options) {
1450                var modal = document.getElementById(modalId);
1451                if (!modal) {
1452                    return;
1453                }
1454
1455                if (!modal.classList.contains('visible')) {
1456                    modal.classList.add('visible');
1457                    if (options && options.scrollLock) {
1458                        window.lpUI.requestScrollLock(modalId);
1459                    }
1460                    modal.dispatchEvent(new Event('lpui-show'));
1461                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1462                }
1463
1464                const visibleModals = document.querySelectorAll('.modal.visible');
1465
1466                if (visibleModals.length > 1) {
1467
1468                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1469                        const zIndex = window.getComputedStyle(modal).zIndex;
1470                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1471                        return Math.max(maxZIndex, parsedZIndex);
1472                    }, 0);
1473
1474                    modal.style.zIndex = maxZIndex + 1;
1475                }
1476
1477            }
1478
1479            function _hideModal (modalEl) {
1480                if (!modalEl) {
1481                    return;
1482                }
1483                if (!modalEl.classList.contains('visible')) {
1484                    return;
1485                }
1486                modalEl.classList.remove('visible');
1487                modalEl.style.zIndex = '';
1488                modalEl.dispatchEvent(new Event('lpui-hide'));
1489                var modalId = modalEl.getAttribute('id');
1490                if (modalId) {
1491                    window.lpUI.releaseScrollLock(modalId);
1492                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1493                }
1494            }
1495
1496            function hideModal (modalId) {
1497                _hideModal(document.getElementById(modalId));
1498            }
1499
1500            function hideClosestModal (el) {
1501              const modal = el?.closest('.modal');
1502              if (!modal) {
1503                return;
1504              }
1505              if (modal.classList) {
1506                _hideModal(modal);
1507                return;
1508              }
1509              if (modal.length && modal[0].classList) {
1510                _hideModal(modal[0]);
1511              }
1512            }
1513
1514            window.lpUI = {
1515                sideMenuHide: sideMenuHide,
1516                sideMenuShow: sideMenuShow,
1517                sideMenuToggle: sideMenuToggle,
1518                requestScrollLock: requestScrollLock,
1519                releaseScrollLock: releaseScrollLock,
1520                showModal: showModal,
1521                hideModal: hideModal,
1522                hideClosestModal: hideClosestModal
1523            }
1524        })();
1525
1526        var stringifyPrimitive = function(v) {
1527            switch (typeof v) {
1528                case 'string':
1529                    return v;
1530
1531                case 'boolean':
1532                    return v ? 'true' : 'false';
1533
1534                case 'number':
1535                    return isFinite(v) ? v : '';
1536
1537                default:
1538                    return '';
1539            }
1540        };
1541
1542        function objectToQuerystring(obj, sep, eq, name) {
1543            // https://github.com/Gozala/querystring/blob/master/encode.js
1544            sep = sep || '&';
1545            eq = eq || '=';
1546            if (obj === null) {
1547                obj = undefined;
1548            }
1549
1550            if (typeof obj === 'object') {
1551                return Object.keys(obj).map(function(k) {
1552                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1553                    if (Array.isArray(obj[k])) {
1554                        return obj[k].map(function(v) {
1555                            return ks + encodeURIComponent(stringifyPrimitive(v));
1556                        }).join(sep);
1557                    } else {
1558                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1559                    }
1560                }).filter(Boolean).join(sep);
1561
1562            }
1563
1564            if (!name) return '';
1565            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1566                    encodeURIComponent(stringifyPrimitive(obj));
1567        }
1568
1569        function getPath(url, options) {
1570            var parser = document.createElement('a');
1571            parser.href = url || '';
1572            var path = parser.pathname || '';
1573            if (path[0] !== '/') {
1574              // IE does not return path starting with a slash
1575              path = '/' + path;
1576            }
1577
1578            if (options && options.queryString) {
1579                path += parser.search;
1580            }
1581
1582            return path;
1583        }
1584
1585        function getMLSAutocomplete(keyword) {
1586            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1587            var query = {
1588                kind: 'listings',
1589                query: keyword
1590            };
1591
1592            return superagent
1593                .get(searchURL)
1594                .query(query)
1595                .then(function(res) {
1596                    var data = res.body || [];
1597                    // Array of listing_auto_complete documents: id, display_address, city, state,
1598                    // price, sold_price, status, status_modified_at, photo_urls (array of URLs).
1599
1600                    return data;
1601                });
1602        }
1603
1604        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1605            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1606
1607            return superagent
1608                .get(searchURL)
1609                .query({ kind: 'listings', query: keyword, ...filters })
1610                .then(function(res) {
1611                    // Same response shape as getMLSAutocomplete.
1612                    return res.body || [];
1613                });
1614        }
1615
1616        function makeMlsLink(data) {
1617            // Code Dupe from utils/googlePlace
1618            // mapping of google data type to mls data type
1619            var mapping = {
1620                neighborhood: 'neighborhood',
1621                locality: 'place',
1622                administrative_area_level_2: 'county',
1623                administrative_area_level_1: 'state',
1624                postal_code: 'postalcode',
1625            };
1626
1627            function _filterTypes(types) {
1628                return types.filter(function(type) { return type !== 'political' });
1629            }
1630
1631            if (!data || !Object.keys(data).length) {
1632                return '/home-search/listings';
1633            }
1634
1635            var newData = {};
1636            _filterTypes(data.types).forEach(function(type) {
1637                if (mapping[type]) {
1638                    newData.search_type = mapping[type];
1639                }
1640            });
1641            newData.omnibox = data.formatted_address;
1642            data.address_components.forEach(function(component) {
1643                _filterTypes(component.types).forEach(function(type) {
1644                    if (mapping[type]) {
1645                        newData[mapping[type]] = component.long_name;
1646                    }
1647                });
1648            });
1649            var bounds = data.geometry.bounds;
1650            var convertedData = Object.assign(bounds, newData);
1651
1652            return '/home-search/listings?' + objectToQuerystring(convertedData);
1653        }
1654
1655        function debounce(func, wait) {
1656            let timeout;
1657            return function(...args) {
1658                const context = this;
1659                clearTimeout(timeout);
1660                timeout = setTimeout(() => func.apply(context, args), wait)
1661            }
1662        }
1663
1664        // Global methods / variables that can be accessed by element js
1665        window.luxuryPresence = {
1666            ...window.luxuryPresence,
1667            defaults: {
1668                companyId: 'd2a359c0-d879-4840-938b-f0bb8351cc6c',
1669                apiGatewayUrl: '/api-gw',
1670                routerUrl: '/api-nv',
1671                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\
1671n    }\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        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    $developmentId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $tag: [String!]\n    $agentId: [ID!]\n    $neighborhoodId: ID\n    $neighborhoodIds: [ID!]\n  ) {\n    developments (\n      developmentId: $developmentId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      googlePlaceData\n      seoTitle\n      seoDescription\n      tags\n    }\n    developmentsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      count\n    }\n  }\n","pois":"\n  query PointsOfInterest (\n    $regionId: UUID!\n    $radiu
1671s: 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"},
1672                propertyPlaceholderImage: {"id":"aef1c560-4b29-400d-a892-3b8882fee312","alt":null,"bytes":10180,"width":1920,"format":"jpg","height":1200,"shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ogsa0qrz7utoi4ekwm2u","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/ogsa0qrz7utoi4ekwm2u","authorUrl":null,"mediumUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ogsa0qrz7utoi4ekwm2u","sourceUrl":null,"xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ogsa0qrz7utoi4ekwm2u","__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/ogsa0qrz7utoi4ekwm2u","description":null,"displayName":"property-logo-11","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ogsa0qrz7utoi4ekwm2u","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/ogsa0qrz7utoi4ekwm2u","originalFileName":"Property logo (11)"}
1673            },
1674            objectToQuerystring: objectToQuerystring,
1675            getPath: getPath,
1676            getMLSAutocomplete: getMLSAutocomplete,
1677            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1678            makeMlsLink: makeMlsLink,
1679            debounce: debounce,
1680        };
1681
1682        var wowOffset = 100;
1683    </script>
1683
1684    
1684<script>
1685        (()=>{function e(e){return e&&e.__esModule?e.default:e}var t={},i={};i={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let i=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===i[1].toLowerCase().indexOf("video"))return null;let s=i[i.length-1];s.lastIndexOf(".")>-1?s=`${s.slice(0,s.lastIndexOf("."))}.jpg`:s+=".jpg",i[i.length-1]=s;let r=3;"videos"===i[1].toLowerCase()&&""!==i[2]&&(r=2);let a=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;r<i.length-1&&a.test(i[r]);)r++;return i.splice(r,0,"so_0,eo_0"),t+i.join("/")}},t=function(e,{isEqual:t}){let s=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],r=function(e,t,i){let s="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 r="number"==typeof i?i:0,a=Number.isInteger(e)?0:r,o={minimumFractionDigits:a,maximumFractionDigits:a};return"USD"===t?`$${e.toLocaleString(s,o)}`:"CAD"===t?`$${e.toLocaleString(s,o)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(s,o)}`:"GBP"===t?`\xa3${e.toLocaleString(s,o)}`:"PERCENT"===t?`${e}%`:"number"==typeof i&&i>-1?e.toLocaleString(s,{maximumFractionDigits:i}):e.toLocaleString(s)},a=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 i,s,r=t||{};switch(r.mode){case"short":i=o(e),s=r.frequencySeparator||"/";break;case"standard":case"std":i=n(e),s=r.frequencySeparator||"/";break;default:i=a(e),s=r.frequencySeparator||" "}return i?r.frequencyTag||r.frequencyClass?`${s}<${r.frequencyTag||"span"}${r.frequencyClass?` class="${r.frequencyClass}"`:""}>${i}</${r.frequencyTag||"span"}>`:s+i:""};return{isEmpty(e,t){let i=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?i?t.fn(this):t.inverse(this):i},ifEquals(e,i,s){return t(e,i)?s.fn(this):s.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/&nbsp;/g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",striptagsLineBreaks:e=>e?(e=(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/(<br\s*\/?>)|(<\/p\s*>)(?=.*(<\/p\s*>|<br\s*\/?>))/g,"&#10;")).replace(/&nbsp;/g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",truncate:(e,t,i)=>e?e.length>t?"string"==typeof i?e.slice(0,t-i.length)+i:e.slice(0,t):e:"",setSubArray(e=[],t,i,s,r){r.data.root[s]=e.slice(t,i)},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:a,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,i,s){return e>=t&&e<i?s.fn(this):s.inverse(this)},formatPropertyStatus(e,t,i){let s="";switch(e){case"SOLD":s="Sold";break;case"FOR_SALE":s="For Sale";break;case"COMING_SOON":s="Coming Soon";break;case"INACTIVE":s="Inactive";break;case"POCKET_LISTING":s="Pocket Listing";break;case"PENDING":s="Pending";break;case"UNDER_CONTRACT":s="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":s="Active Under Contract";break;default:s=e}return("Sold"===s||"Leased"===s)&&t&&"string"==typeof i&&i&&(s+=` on ${i}`),s},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 i="current"===e?new Date:new Date(e);if(Number.isNaN(i.getTime()))return"";if("YYYY"===t||"year"===t)return`${i.getFullYear()}`;if("MM/DD/YY"===t){let e=i.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${i.getDate()}/${i.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][i.getMonth()]} ${i.getDate()}, ${i.getFullYear()}`},openHousesFormat(e,t,i){if(!e||!t)return"";let s=e=>{let t=e.getHours();t>12&&(t-=12);let i=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?i+="PM":i+="AM",i},r="",a=e,o=t;
1685i&&(a=new Date(e).toLocaleString("en-US",{timeZone:i}),o=new Date(t).toLocaleString("en-US",{timeZone:i}),[,,,r]=new Date(t).toLocaleString("en-US",{timeZone:i,timeZoneName:"short"}).split(" "));let n=new Date(a),l=n.toLocaleDateString("en-US"),d=s(n),c=s(new Date(o));return`${l} ${d} - ${c} ${r}`},math:(e,t,i)=>(e=parseFloat(e),({"+":e+(i=parseFloat(i)),"-":e-i,"*":e*i,"/":e/i,"%":e%i})[t]),findByKey(e,t,i,s){let r=(e||[]).find(e=>e[t]===i);return s.fn(r)},capitalize(e,t,i){let s;return"string"==typeof e&&e.length&&(s=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),s},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,i,s){let r="",a=null;s.data&&(a=e.createFrame(s.data));let o=(i||[]).filter(Boolean);if(o&&o.length){let e=0;r=o.reduce((i,r,o)=>{let n=(t||[]).find(e=>e.id===r);return n?(a&&(a.index=o-e),i+s.fn(n,{data:a})):(e+=1,i)},"")}else for(let e=0,i=(t||[]).length;e<i;e++)a&&(a.index=e),r+=s.fn(t[e],{data:a});return r},ifIn(e,t,i){return t&&t.indexOf(e)>-1?i.fn(this):i.inverse(this)},partial:(t,i)=>(e.registerPartial(t,e.compile(i.fn())),`
1685<script type="text/x-handlebars-template" class="${t} pagination-script">${i.fn()}<\/script>`),numCompare(e,t,i,s){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}})[i](e,t)?!s.fn||s.fn(this):!!s.fn&&s.inverse(this)},lpFormatNumber:r,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,i)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,i,s){let r=null,a=0,o=new Set;return s.data&&(r=e.createFrame(s.data)),(t||[]).reduce((e,t,n)=>{let l=i?t[i]:t;return!o.has(l)||i&&void 0===l?(o.add(l),r&&(r.index=n-a),e+s.fn(t,{data:r})):(a+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let i=t[t.length-1].hash,s=t.length>1?t[0]:i.property,a=i.precision||0;t.length>2&&(i.mode=t[1]),i.mode||(i.mode="short");let o=t.length>3?t[2]:i.separator;if("string"!=typeof o&&(o=" | "),s.isPasswordProtected)return"Exclusive Listing";let n=t.length>4?t[3]:i.priceUponRequestText;if("string"!=typeof n&&(n="Price Upon Request"),s.priceUponRequest)return n;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(i.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${i.reducedTag||"span"} class="${i.reducedClass}">${r(c,s.currency,a)}</${i.reducedTag||"span"}>`),d&&(d=r(d,s.currency,a),i.priceTag||i.priceClass?u+=`<${i.priceTag||"span"}${i.priceClass?` class="${i.priceClass}"`:""}>${d}</${i.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&r(s.leasePrice,s.currency,a);if(h){u&&(u+=o);let e=`${h}${l(s.leasePeriod,i)}`;i.leaseTag||i.leaseClass?u+=`<${i.leaseTag||"span"}${i.leaseClass?` class="${i.leaseClass}"`:""}>${e}</${i.leaseTag||"span"}>`:u+=e}
1685return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:r,...a}=i.hash,o="",n="";if("string"==typeof t)o=t;else{let e={},{height:r,width:l,altTagText:d}=t;s.forEach(i=>{t[i.field]&&!e[t[i.field]]&&(e[t[i.field]]=i.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(a.alt=d),r&&l&&(r>=l&&(a.class?a.class+=" portrait":a.class="portrait"),"setDims"in i.hash&&(a.width=l,a.height=r)),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&&(n=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,i)=>Math.abs(e[t]-1280)-Math.abs(e[i]-1280))),o=c[0]}delete a.setDims,n||delete a.sizes,"alt"in a||(a.alt=""),!("loading"in a)&&(i?.data?.root?.sectionIndex>1||r)&&(a.loading="lazy");let l=Object.keys(a).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(a[t])}"`).join(" ");return new e.SafeString(`<img src="${o}"${n?` srcset="${n}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let i in e)null!==e[i]&&void 0!==e[i]&&"object"!=typeof e[i]&&(t+=e[i]);return t},setVideoExtension(e,t){if(!e||!t)return"";let i=new URL(e);if("res.cloudinary.com"!==i.host)return i.pathname.endsWith(`.${t}`)?e:"";let s=i.pathname.lastIndexOf("."),r=i.pathname;return -1!==s&&(r=i.pathname.substr(0,s)),i.pathname=`${r}.${t}`,i.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 i=`${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="${i}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:i.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let i=+t?.hash?.maxChars||2,s=e.match(/\b\w/g)?.slice(0,i);return s?(t?.hash?.addText&&(s=s.map(e=>e+t.hash.addText)),s.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class s{constructor(e,t,i){if(this.config=e,this.window=t,this.document=i,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let r="lp_lead_form_conversion_fired";function a(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(r)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(r,"true")}catch{}}catch{}}function o(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let n="/api/v1/home-valuation";class l extends s{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 i=t.indexOf(", call time frame:");return -1!==i&&(t=t.substring(0,i).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,i={},s=t("street_number"),r=t("route"),a=t("administrative_area_level_1"),o=t("postal_code"),n=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return s&&(i.streetNumber=s),r&&(i.streetName=r),l&&(i.city=l),a&&(i.state=a),o&&(i.zipcode=o),n&&(i.addressLine2=n),i}_extractAddressAndCoordinates(e){let t=null,i=null;if(e?.result){let{result:s}=e;s.address?.addressComponents&&(t=this._transformAddressComponents(s.address.addressComponents)),s.geocode?.location&&(i={latitude:s.geocode.location.latitude,longitude:s.geocode.location.longitude})}return{structuredAddress:t,coordinates:i}}_filterEmptyStrings(e){let t={};for(let[i,s]of Object.entries(e))""!==s&&null!=s&&(t[i]=s);return t}_getRawAddress(e){let t=e.activity.content||{},i=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,i,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,i=null){let s={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(i&&(s.errorMessage=i.userMessage||(i.status?`Request failed with status ${i.status}`:"An error occurred"),s.errorName=i.name,s.errorStatus=i.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(s)),this.window.posthog)try{this.window.posthog.capture(e,s)}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
1685ontact 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,i,s){let r=this._formatStructuredAddress(i)||this._getRawAddress(e);if(!r)throw Error("Unable to extract home valuation address from form data");let a={companyId:e.companyId,homeValuationAddress:r,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},o={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
1685ourceResource,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||{}},n=this._filterEmptyStrings(o);return{...a,...n,...i&&{address:i},...s&&{coordinates:s}}}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 i=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(i,e),i.status=t,i}_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,i){let s=new AbortController,r=setTimeout(()=>s.abort(),1e4);try{let a=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:s.signal});clearTimeout(r);let n=await a.text(),l=this._parseResponsePayload(n);if(!a.ok)throw this._createResponseError(l,a.status);if(l&&"success"===l.status&&l.redirectUrl){if(o(i))return l;if(!this._isSafeRedirectUrl(l.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),l;return this.window.location.href=l.redirectUrl,{redirected:!0,url:l.redirectUrl}}return l}catch(e){throw clearTimeout(r),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let i=this._getRawAddress(e),s=null;try{s=await this._validateAddressSafely(i)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let r=null;try{r=await this._getHomeValuationEstimateSafely(s)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),r=null}let{structuredAddress:a,coordinates:o}=this._extractAddressAndCoordinates(s),l=`${t}${n}`,d=this._buildHomeValuationData(e,r,a,o),c=await this._submitLead(l,d,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),c}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:i}=this,s=t.googleMapsAPIKey;if(!s&&i.luxuryPresence?.mapApiLoader&&(s=await i.luxuryPresence.mapApiLoader.getMapApiKey()),!s)throw Error("Google Maps API key not configured");let r=new AbortController,a=setTimeout(()=>r.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:r.signal});if(clearTimeout(a),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(a),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()}${n}`;if(!e?.result?.address?.addressComponents)return null;let i=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(i))return this._logMissingAddressFields(i),null;let s=this._buildAddressQueryString(i),r=`${t}?${s}`,a=new AbortController,o=setTimeout(()=>a.abort(),1e4);try{let e=await fetch(r,{headers:{Accept:"application/json"},signal:a.signal});if(clearTimeout(o),!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(o),e}}}let d="middleName",c="redirect-pending",u=["name","firstName","lastName",d,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],h="lp_map_key_failed",p="oauthSuccess",m={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;
1685]+)/);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 g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function y(e,t){t.forEach(t=>{let i=e[t];Array.isArray(i)&&0===i.length&&delete e[t]})}function f(e,t,i,s){let r=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])),a=s?.merge?r.flat():r.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),a.length>0&&(e[i]=[...new Set(a)])}function w(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 i=[...e.socialLinks].sort((e,t)=>{let i=e.type?.toLowerCase()||"",s=t.type?.toLowerCase()||"";return i.localeCompare(s)});t.socialLinks=i;let s={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};i.forEach(e=>{let i=s[e.type?.toLowerCase()??""];i&&(t[i]=e.link)})}return t}function v(e){return e&&Array.isArray(e)?e.map(e=>w(e)):e}function b(e){let{region:t}=e;if(!g(t))return e;let{schools:i,pois:s,...r}=t,a={...r,schools:g(i)?i.data??[]:[],...Array.isArray(s)?{pois:s.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:a}}function S(e){return e&&Array.isArray(e)?e.map(e=>b(e)):e}function _(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let i=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:i}}function E(e){return e&&Array.isArray(e)?e.map(e=>_(e)):e}function I(e,t){return g(e)?t(e):e}function A(e,t){return Array.isArray(e)?t(e):e}var L={};L=`
1686  query PropertyDisclaimers($input: PropertyDisclaimersInput!) {
1687    propertyDisclaimers(input: $input) {
1688      feedId
1689      listingId
1690      resolvedFromListing
1691      listingCardAttribution
1692      listingDetailCourtesy
1693      listingDetailFooter
1694      logo
1695    }
1696  }
1697`;let $={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"},x=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}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}setEventBus({enabled:e,apiKey:t,url:i}){this.eventBus={enabled:e,apiKey:t,url:i}}}({}),T=new class extends s{constructor(e,t,i){super(e,t,i),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:i}=this;this.pageId=t.pageId,this.modals=i.querySelectorAll("body > #modals >
1697 .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,i=new Date().getTime()+864e5,s=`modal-controller-${e}`;try{t.localStorage.setItem(s,JSON.stringify(i))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,i=t.localStorage,s=i.getItem(`modal-controller-${e}`);if(!s)return!1;let r=JSON.parse(s);return!(new Date().getTime()>r)||(i.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:i}=this,s=this.getModalWithExpiry(e);(e&&!s||!0===t.forced)&&(i.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:i,pageSpecific:s}=e;(!s||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===i?this._exitModalHandler(e):"TIMER"===i?this._timerModalHandler(e):"FORCED"===i&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:i,exitModalTriggered:s}=this,{modalId:r}=e;function a(e){!s[r]&&(e.toElement||e.relatedTarget||(t.show(r),s[r]=!0))}i.addEventListener("mouseout",a),this.exitModalEventListeners.push(a)}_timerModalHandler(e){let{modalId:t,timerDelay:i}=e;setTimeout(()=>{this.show(t)},i)}_forcedModalHandler(e){let{modalId:t}=e,{window:i,document:s}=this;if("true"!==i.localStorage.getItem("isSignedUp")){let e=s.querySelector(`#modal-${t}`),r=e?.querySelector("form"),a=r?.dataset.delay||2e3;r.addEventListener("formsubmitted",()=>{this.setLoginState()}),i.addEventListener("oauthSuccess",()=>{this.setLoginState(),r.classList.add("success"),setTimeout(()=>{i.lpUI.hideModal(`modal-${t}`),r.reset(),r.classList.remove("success")},a)}),this.show(t,{forced:!0})}}}(x,window,document),k=new class extends s{constructor(e,t,i){super(e,t,i),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:i}=this,s=e.target.closest("button, a");if(!s)return;let r=s.dataset.type||"",a=s.href||s.dataset.href||"",o=s.target||"",{submit:n}=s.dataset;if(n){try{await this._handleSubmit(s)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(a,"_blank"===o)}if(this._trackConversion(s),"VIDEO"===r)return void this._handleVideoButton(s);if("CONTACT_US"===r)return void this._handleContactUsButton(s);if("SUBSCRIBE"===r)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===r)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===r){let t=s.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===r.substring(0,6)){let e=r.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(a?.startsWith("mailto:")){let e=a.substring(7);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(a?.startsWith("tel:")){let e=a.substring(4);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:i}=this;return t?await i.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[,i,s]=t,r=`https://player.vimeo.com/video/${i}?`;return s&&(r+=`h=${s}&`),r+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,i=e.closest("section"),{src:s}=e.dataset,r="";if(s&&(s.includes("youtube.com")||s.includes("youtu.be"))&&!s.includes("youtube.com/embed")){let e=s.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
1697)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(r=e[1])}let a=this._getVimeoSrc(s);if(r?s=`https://youtube.com/embed/${r}?autoplay=1&controls=0`:a&&(s=a),!s||!i)return;let o=s.endsWith(".mp4")||s.endsWith(".webm")||s.includes("cloudinary.com"),n=`
1698      <div id="modal-${i.id}" class="modal visible">
1699        <div class="modal-content">
1700          <div class="lightbox-video">
1701            <div class="video-player">
1702              <div class="embed-container">
1703                ${o?`<video controls autoplay src="${s}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${s}"></iframe>`}
1704              </div>
1705            </div>
1706          </div>
1707        </div>
1708        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
1709      </div>
1710    `;t.body.insertAdjacentHTML("beforeend",n);let l=t.getElementById(`modal-${i.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:i}=this;i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:i}=this,{gtagConversionId:s,gtagConversionLabel:r,fbEventName:a}=e.dataset;if(s&&r){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===s)||i.sendGoogleTagManagerEvent("config",s));let e=`${s}/${r}`;i.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&a&&t.fbq("track",a,{})}}(x,window,document),C=new class extends s{constructor(e,t,i){super(e,t,i),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:i}=this,{selector:s}=e,r=[];if(r=s?i.querySelectorAll(`${s} form[data-type="contact-form"]`):i.querySelectorAll('form[data-type="contact-form"]'),i.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:i}=t.luxuryPresence.libs,{libphonenumber:s}=i;e(s.jsSrc,this.attachValidation.bind(this,r))}else this.attachValidation(r);this.validatedForms=this.validatedForms.concat(r)}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 i=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;i(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("")})}}}(x,window,document),M=new class extends s{constructor(e,t,i){super(e,t,i),this.forms=[],this.homeValuationService=new l(e,t,i)}initialize(e={}){try{let{document:t}=this,{selector:i}=e,s=[];(s=i?t.querySelectorAll(`${i} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(s)}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),i={},s=[],r=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let a=e.trim();r.test(t)&&a&&s.push(a);let o=i[t];i[t]=o?`${o} ${a}`:a}else i[t]=e}),s.length?i.name=s.join(" ").trim():!i.name&&i.firstName&&(i.name=i.firstName,i.lastName&&(i.name+=` ${i.lastName}`)),this._deriveNameParts(i)}_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,i){let{window:s,config:r}=this,a=Object.keys(e).filter(e=>!u.includes(e)).reduce((t,i)=>(t[i]=e[i],t),{}),{pageId:o,companyId:n,websiteId:l,pageMeta:d}=r,c=s.localStorage.getItem("utm_vars")||"{}",h=s.localStorage.getItem("referrer")||"",p=this._getFormId(i);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:s.location.href,content:{...a,...JSON.parse(c)}},page:{pageId:o,companyId:n,websiteId:l,pageMeta:{...d,formId:p}},companyId:n,referrer:h,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,i=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
1710=>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")},i)}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 i=this._getFields(t),s=this._buildSubmissionData(e,i,t);a(this.window,this.document);let r=await this._waitForLeadSubmit(e=>this._submitLeadRequest(s,e));if(this._sendGAEvent(s),r?.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,i={expired:!1,expiresAt:Date.now()+6e3},s=new Promise(e=>{t=setTimeout(()=>{i.expired=!0,e(null)},6e3)}),r=e(i).catch(e=>{if(o(i))return null;throw e});try{return await Promise.race([r,s])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(c),e.querySelector(`.${c}__indicator`))return;let t=this.document.createElement("div");t.className=`${c}__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:i}=this.config;if(!t||!i)return void console.warn("[EventBus] Missing required data for user alias");let s=this.window.eventBusProvider.getDistinctId();if(!s)return void console.warn("[EventBus] No anonymous ID available for alias");let r=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(i,t);this.window.eventBusProvider.alias({anonId:s,canonicalId:r}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:i}=this;return(this._aliasUserWithEventBus(e),i.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${i.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,i={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":i.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":i.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":i.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":i.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:i={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(i)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),i={};return t.forEach(t=>{let{id:s,name:r,type:a}=t;if(r===d)return!0;let o="";if(s){let i=e.querySelector(`label[for='${s}']`);i?o=i.textContent.trim():t.placeholder&&(o=t.placeholder.trim())}i[r]={label:o,type:t.tagName,inputType:"INPUT"===t.tagName?a:"text"}}),i}_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 i=e.querySelector(".submission-error-message");i||((i=this.document.createElement("div")).className="submission-error-message",i.setAttribute("role","alert"),e.appendChild(i)),i.textContent=t||"Something went wrong. Please try again.",i.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(x,window,document),P=new class extends s{constructor(e,t,i){super(e,t,i),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 i=1;i<=3;i+=1){let s=e&&!t;try{let e=await fetch(this._getMapKeyUrl(i,s));if(t=t||s,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let r=await e.text();if(!r)return"";return this.apiKey=r,this.apiKey}catch(e){console.error(e),i<3&&await this._delay(300*2**(i-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let i=[];e>1&&i.push(`attempt=${e}`),t&&i.push("recovered_after_failure=1");let s=i.length?`?${i.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${s}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(h)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(h,"1"):this.window.sessionStorage.removeItem(h)}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");
1710let 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(i=>{i?t(i):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 i=Math.min(1024/e,1024/t);return{width:parseInt(e*i),height:parseInt(t*i)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let i=t.visibility?`visibility:${t.visibility}`:"",s=t.color?`color:${t.color.replace("#","0x")}`:"",r=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${i}${s}${r}`},""),i=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${i}${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:i}=await t.json();return i}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,i,s,r,a){let{width:o,height:n}=this.resizeStaticMapDimensions(r,a),l={center:`${e},${t}`,zoom:i,scale:2,size:`${o}x${n}`,key:this.apiKey};s&&(l.style=this.convertThemeToStaticApiUrl(s));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:i,...s}){let{width:r,height:a}=this.resizeStaticMapDimensions(e,t),o={...s,size:`${r}x${a}`};i&&(o.style=this.convertThemeToStaticApiUrl(i));let n=new URLSearchParams;Object.entries(o).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,t.toString())):n.append(e,t.toString())});let l=n.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(x,window,document),U=new class extends s{destroy(){}updateQueryString(e,t,i){i||(i=this.window.location.href);let s=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),r="";null!=t&&(Array.isArray(t)?t.length&&(r=this.serializeArray(e,t)):"object"==typeof t?(s=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),r=this.serializeObj(t,"",e)):r=`${e}=${encodeURIComponent(t)}`);let a=i.split("#"),o=a[0];if(s.test(i)){let e=o;for(r=r?`$1${r}$2`:"$1";s.test(e);)o=e.replace(s,r),e=e.replace(s,"$1");o=o.replace(/(&|\?)$/,"")}else if(r){let e=-1!==o.indexOf("?")?"&":"?";o+=`${e}${r}`}return void 0!==a[1]&&null!==a[1]&&(o+=`#${a[1]}`),o}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let i=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat();if(!s.length){let i=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat(),this._parseParamToObject(s,"advancedFilters"===e)}return s.length>3?s.reduce((e,t,i)=>((i+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):s[2]?decode
1710URIComponent(s[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 i={},s=this.makePageKey(t),r=this.getParameterByName(s);return r&&(i.page=parseInt(r)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),r=this.getParameterByName(t);if("int"===e.type)isFinite(r=parseInt(r))||(r=null);else if("bool"===e.type||"boolean"===e.type)r="true"===r||"false"!==r&&null;else if("json"===e.type)try{r=JSON.parse(r)}catch(e){}i[e.formKey||e.param]=r}),i}serializeParams(e,t,i){let s=this.window.location.href,r=this.makePageKey(t);return s=this.updateQueryString(r,i.page,s),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,r),a=i[e.formKey||e.param];"json"===e.type&&null!=a&&(a=JSON.stringify(a)),s=this.updateQueryString(t,a,s)}),s}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",i=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${i}K`:`${this.formatSliderAtom(e/1e6,t)}${i}M`}formatSliderPriceRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e,i," ")}`:t.max===e?`${this.formatSliderValue(e,i," ")}${s.highSuffix}`:`${this.formatSliderValue(e,i," ")}`}formatSliderAreaRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e)} ${i}`:t.max===e?`${this.formatSliderValue(e)}${s.highSuffix} ${i}`:`${this.formatSliderValue(e)} ${i}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:i,areaSliderElement:s,neighborhoodSelect:r}=e,a={};if(t&&(a.search=t.value||null),i){let e=i.value.split(";"),t=parseInt(i.dataset.min),s=parseInt(i.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.priceMin=r!==t?r:null,a.priceMax=o!==s?o:null}if(s){let e=s.value.split(";"),t=parseInt(s.dataset.min),i=parseInt(s.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.areaMin=r!==t?r:null,a.areaMax=o!==i?o:null}return r&&(a.neighborhoodId=r.value||null),a}serializeObj(e,t="",i=""){let s=[];for(let r in e)if(e.hasOwnProperty(r)){let a,o=e[r];if(i){let e=t?`[${t}][${r}]`:`[${r}]`;a=`${i}${e}`}else a=t?`${t}[${r}]`:r;null!==o&&Array.isArray(o)?o.length&&s.push(this.serializeArray(a,o)):null!==o&&"object"==typeof o?s.push(this.serializeObj(o,a)):s.push(`${a}=${encodeURIComponent(o)}`)}return s.join("&")}serializeArray(e,t,i=""){let s=[];return t.forEach(t=>{let r=i?`${i}${e}`:e;s.push(`${r}=${encodeURIComponent(t)}`)}),s.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let i={};for(let s=0;s<e.length;s++)if((s+1)%3==0){let r=decodeURIComponent(e[s].replace(/\+/g," ")),a=e[s-1];Object.assign(i,this._setObjectPath(a,r,i,t))}return i}_setObjectPath(e,t,i,s=!1){let r=e.split(/[\[\]]/).filter(Boolean),a=["in","nin","btw","ciin","cinin"],o={},n=o,l=((e,t,i)=>{if(!t)return;let s=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===s?i:s})(i,r.join("."));return r.forEach((e,o)=>{o===r.length-1?l?n[e]=Array.isArray(l)?[...l,t]:[l,t]:n[e]=s&&a.includes(e)?[t]:t:(n[e]=i[e]?i[e]:{},n=n[e])}),o}}(x,window,document),N=new class extends s{constructor(e,t,i){super(e,t,i),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,i=e.closest("section[id]"),s=e.dataset.append,r=i.querySelector(".lp-expand-btn");if(!r)if((r=t.createElement("button")).className="lp-expand-btn",r.setAttribute("aria-label","Open a lightbox"),r.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',s){let e=i.querySelector(s);e&&e.appendChild(r)}else{let i=t.createElement("div");i.className="lp-expand-btn-wrapper",i.style.position="relative",i.appendChild(r),e.parentNode.insertBefore(i,e.nextSibling)}r.addEventListener("click",()=>{this._createLightbox({slider:e,section:i})})}_createLightbox({slider:e,section:t,initialIndex:i}){let{window:s,document:r}=this,a=`lightbox-for-${t?.id}`,o=s.$&&s.$.fn.slick,n=o&&e.slick,l="function"==typeof s.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=r.createElement("div");t.id=a,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=`
1711      <button class="lp-lightbox__close" aria-label="close modal"></button>
1712      <div class="lp-lightbox__content">
1713        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
1714          <div class="splide__arrows">
1715            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
1716            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
1717          </div>
1718          <div class="splide__track">
1719            <ul class="splide__list"></ul>
1720          </div>
1721        </div>
1722      </div>
1723    `,"function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",r.body.appendChild(t);let o=t.querySelector(".lp-lightbox__carousel"),n=o.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
1723h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("li");i.className="lp-lightbox__slide splide__slide",i.appendChild(t),n.appendChild(i)});let l=new s.Splide(o,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==i&&i>=0&&l.go(i),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let i=t.querySelector(".splide__arrow--prev"),s=t.querySelector(".splide__arrow--next"),r=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&i?(e.preventDefault(),i.click()):"ArrowRight"===e.key&&s?(e.preventDefault(),s.click()):"Escape"===e.key&&r&&(e.preventDefault(),r.click())};r.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",t.remove()})}if("function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",o&&!d){let t,i,o,l,d;i={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>'},(o=r.createElement("div")).id=a,o.className="lp-lightbox",o.setAttribute("tabindex","-1"),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.innerHTML=`
1724        <button class="lp-lightbox__close" aria-label="close modal"></button>
1725        <div class="lp-lightbox__content">
1726          <div class="lp-lightbox__carousel"></div>
1727        </div>
1728      `,r.body.appendChild(o),l=o.querySelector(".lp-lightbox__carousel"),o.classList.add("show"),n?(t=e.slick.$slides.find("img"),i.initialSlide=e.slick?.currentSlide||0,t.each(function(){s.$(".lp-lightbox__carousel").append(s.$(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 i=r.createElement("div");i.className="lp-lightbox__slide",i.appendChild(t),l.appendChild(i)}),s.$(l).slick(i),setTimeout(()=>{o.focus()},100),d=e=>{if(!o.classList.contains("show"))return;let t=o.querySelector(".lp-lightbox-arrow--prev"),i=o.querySelector(".lp-lightbox-arrow--next"),s=o.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())},r.addEventListener("keydown",d),o.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",d),o.classList.remove("show");let t=l?.slick?s.$(l).slick("slickCurrentSlide"):0;l?.slick&&s.$(l).slick("unslick"),n&&s.$(e).slick("slickGoTo",t),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",o.remove()})}else l?c():(s.luxuryPresence.libs.loadCss(s.luxuryPresence.libs.jsLibsMap.splide.cssSrc),s.luxuryPresence.libs.loadJs(s.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),s.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(x,window,document),R=new class extends s{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:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n}=this.config;this.window.divolte.signal(e,Object.assign({companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(x,window,document),B=new class extends s{constructor(e,t,i){super(e,t,i)}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"}
1728)),(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:i}=this.config;try{this.window.eventBusProvider.capture(e,{company:i,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",{})}}(x,window,document),D=new class extends s{constructor(e,t,i){super(e,t,i),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(p,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:i}=this.config,{data:s,origin:r}=e,{type:a,height:o,event:n,source:l,token:d}=s;if(a===t||"hide_intermediate_iframe"===a){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=o,e.style.display=a===t?"unset":"none")}r===i&&"GOOGLE_SIGN_ON"===l&&("success"===n?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===n&&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 i=this.document.createElement("iframe");i.src=this._buildUrlAndCopyAttributes(t,i,e),i.dataset.isSocialOauthButton=!0,t.replaceWith(i)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(p);this.window.dispatchEvent(e),a(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,i){let{buyerSellerServiceUrl:s,companyId:r,websiteId:a,pageId:o,pageMeta:n}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${s}/buttons/${i}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",r),c.searchParams.append("websiteId",a),c.searchParams.append("pageId",o),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(n)),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"];
1728return 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,"/"),i=4-t.length%4,s=4===i?t:t+"=".repeat(i);return JSON.parse(atob(s))}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")}}}(x,window,document),O=new class extends s{constructor(e,t,i){super(e,t,i),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:i})=>{e&&e.removeEventListener&&e.removeEventListener(t,i)}),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 i=t.querySelector('input[name="email"]');i&&"string"==typeof e&&(i.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector(`#${this.modalId}-triggerSource`);i&&"string"==typeof e&&(i.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,i){let s="";if(i){let e=new Date;e.setTime(e.getTime()+864e5*i),s=`; expires=${e.toUTCString()}`}let r="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(r+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${s}${r}`}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 i=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",i),this.eventListeners.push({element:t,event:"formsubmitted",handler:i})}let i=e.querySelector('[data-dismiss="modal"]');if(i){let t=()=>{e.style.display="none",this.restoreBodyScroll()};i.addEventListener("click",t),this.eventListeners.push({element:i,event:"click",handler:t})}let s=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",s),this.eventListeners.push({element:e,event:"click",handler:s})}}(x,window,document),q=new class extends s{constructor(e,t,i){super(e,t,i),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 i=`
1729      query {
1730        validSession {
1731          success
1732        }
1733      }
1734    `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:i})});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 s=t.data?.validSession?.success===!0;return this.lastValidationResult=s,this.lastValidationTime=Date.now(),s}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}}(x,window,document),V=new class extends s{constructor(e,t,i){super(e,t,i),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=m[e.provider];if(!t)return;this.eventName=t.eventName;let i=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||i)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(x,window,document),F=new class extends s{destroy(){}transformVariables(e,t){let i;return y(i={...t},["testimonialId"]),f(i,["testimonialId"],"testimonialIds"),0===i.limit&&delete i.limit,(void 0===i.limit||null===i.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(i.limit=50),("agents"===e||"agentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(i.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(i),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":y(e,["testimonialIds"]);break;case"agents":case"agentsCount":y(e,["officeId","teamId","developmentId","agentIds","tags"]),f(e,["officeId"],"officeIds"),f(e,["teamId"],"teamIds"),f(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":y(e,["neighborhoodIds","neighborhoodId"]),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":y(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds");break;case"properties":case"propertiesCount":y(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
1734spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>f(e,[t],t)),f(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),f(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),f(e,["networkId"],"networkId"),f(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":y(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":y(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":y(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),f(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":y(e,["officeId","officeIds","tags"]),f(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":y(e,["teamId","teamIds"]),f(e,["teamId"],"teamIds");break;case"pois":y(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(i,e),i}transformResponse(e,t){return"agent"===e?I(t,w):"agents"===e||"agentsCount"===e?A(t,v):"neighborhood"===e?I(t,b):"neighborhoods"===e||"neighborhoodsCount"===e?A(t,S):"development"===e?I(t,_):"developments"===e||"developmentsCount"===e?A(t,E):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,i){if(!Array.isArray(t)||!t.length||!i||!i.length)return Promise.resolve(t);let s=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})),r=e=>{let s={};return(e||[]).forEach(e=>{s[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&s[`${e.vendorId}:${e.mlsId}`],r={};return i.forEach(e=>{let i=t?t[$[e]]:void 0;r[e]=i??null}),{...e,...r}})};if(!s.length)return Promise.resolve(r([]));let{websiteId:a}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(L),variables:{input:{websiteId:"string"==typeof a?a:void 0,properties:s}}}).then(e=>r(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),r([]))):Promise.resolve(r([]))}}(x,window,document);function j(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}j("config",x),j("modals",T),j("buttons",k),j("validation",C),j("contactForms",M),j("mapApiLoader",P),j("pagination",U),j("expandSliders",N),j("divolte",R),j("eventBus",B),j("oauth",D),j("qualifyingQuestionsModal",O),j("session",q),j("consent",V),j("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(){}}),j("routerApi",F),window.luxuryPresence.formatSliderPriceRange=U.formatSliderPriceRange.bind(U),window.luxuryPresence.formatSliderAreaRange=U.formatSliderAreaRange.bind(U),window.luxuryPresence.getSearchFormValues=U.getSearchFormValues.bind(U),window.luxuryPresence.handlebarsHelpersFactory=function(i){return e(t)(i,{isEqual:(e,t)=>e==t})}})();
1735//# sourceMappingURL=lp-sdk.js.map
1736
1737    </script>
1737
1738
1739    
1739<script>
1740        var lpGlobalInitialized = false;
1741
1742        function lpGlobalInit () {
1743          if (lpGlobalInitialized) {
1744            return;
1745          }
1746            lpGlobalInitialized = true;
1747            // Initialize wow animation plugin only according to turbolinks
1748            var wow;
1749            if (window.WOW) {
1750                wow = new WOW({
1751                    animateClass: 'animated',
1752                    offset: wowOffset,
1753                    live: false,
1754                    callback: function(box) {}
1755                });
1756            }
1757            // Initialize handlebar helpers only once
1758            function handlebarsInit() {
1759              if (!window.Handlebars) {
1760                return;
1761              }
1762              HandlebarsIntl.registerWith(Handlebars);
1763              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
1764            }
1765
1766            handlebarsInit();
1767
1768              var modalContentUrl = "/modals.html";
1769                const modalsContainer = document.getElementById('modals');
1770                if (modalsContainer) {
1771                  fetch(modalContentUrl).then(function(res) {
1772                    if (!res.ok) {
1773                      throw new Error(`HTTP error! Status: ${res.status}`);
1774                    }
1775                    return res.text();
1776                  }).then(function(resultText) {
1777                    modalsContainer.innerHTML = resultText;
1778
1779                    // now we need to execute all script elements
1780                    Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) {
1781                      const script  = document.createElement("script");
1782                      script.text = s.innerHTML;
1783                      Array.from(s.attributes).forEach(function (a) {
1784                        script.setAttribute(a.name, a.value);
1785                      })
1786                      s.parentNode.replaceChild(script, s);
1787                    });
1788
1789                    try {
1790                      window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes);
1791                      window.luxuryPresence.contactForms.initialize({ selector: '#modals' });
1792                      window.luxuryPresence.validation.initialize({ selector: '#modals' });
1793                      window.luxuryPresence.oauth.initialize({
1794                        googleSignOnEnabled: true,
1795                        iframe: false });
1796                    } catch (e) {
1797                      console.log(e);
1798                    }
1799                    document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => {
1800                      closeModalBtn.addEventListener('click', function() {
1801                        window.lpUI.hideClosestModal(closeModalBtn);
1802                      });
1803                    });
1804                  }).catch((e) => console.log(e));
1805                }
1806            /* Initialize Luxury Presence SDK */
1807            try {
1808                window.luxuryPresence.config.setCompany("d2a359c0-d879-4840-938b-f0bb8351cc6c", {});
1809                window.luxuryPresence.config.setWebsite("2b9f3b9c-8d13-4525-81b1-0e846aa51be2", {
1810                    myhomeDashboardEnabled: true,
1811                    mlsEnabled: true,
1812                    hstValuationRedirectEnabled: true,
1813                    hvStepTwoCaptureEnabled: false
1814                });
1815                const url = new URL(window.location.href);
1816                const shareId = url.searchParams.get('shareId');
1817                window.luxuryPresence.config.setPage("a4a58f1d-fcc8-41f5-bac1-3c42e699b925", {
1818                    sourceResource: "",
1819                    pageElementId: "",
1820                    pageQueryVariables: {},
1821                    shareId: "",
1822                });
1823                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
1824                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
1825                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
1826                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
1827                  window.luxuryPresence.config.setEventBus({
1828                    enabled: true,
1829                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
1830                    url: "https://p.luxurypresence.com",
1831                  });
1832                window.luxuryPresence.config.setTemplateId("e3960201-1a19-4660-a991-8658653d81e9", {});
1833                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
1834                window.luxuryPresence.buttons.initialize({});
1835                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
1836                window.luxuryPresence.contactForms.initialize({});
1837                window.luxuryPresence.validation.initialize({});
1838                window.luxuryPresence.expandSliders.initialize({});
1839                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
1840                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
1841            } catch (e) {
1842                console.log(e);
1843            }
1844
1845            /* Inject Section Specific Javascript */
1846                try {
1847(function init(sectionDomId) {
1848  let address = $('#' + sectionDomId + " .company_address").text().trim();
1849  $('#' + sectionDomId + " .company_address").text(address);
1850  function setHttp(link) {
1851    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
1852      link = 'http://' + link;
1853    }
1854    return link;
1855  }
1856  $(`#${sectionDomId} .contact-form__form`).on('reset', () => {
1857    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
1858    if (redirectLink.length) {
1859      const rawHref = redirectLink.attr('href');
1860      redirectLink.attr('href', setHttp(rawHref));
1861      redirectLink[0].click();
1862    }
1863  });
1864})('modal-global-contact-us');
1865} catch(e) {
1866console.log(e);
1867}
1868                
1869                try {
1870(function init(sectionDomId) {
1871  var resizeMenu = function () {
1872    var widthSoFar = 0;
1873    var availableWidth = $('#' + sectionDomId + ' .navigation').width();
1874    if ($(window).width() > 1024) {
1875      $('#' + sectionDomId + ' .navigation > li').each(function () {
1876        $(this).hide();
1877        const currentItemWidth = $(this).outerWidth();
1878        if (availableWidth - widthSoFar >= currentItemWidth) $(this).css({
1879          "visibility": "visible",
1880          "display": "list-item",
1881          "height": "auto"
1882        });
1883        widthSoFar += $(this).outerWidth();
1884      });
1885    }
1886  };
1887  $(window).on('resize.lpui-auto-clean', resizeMenu);
1888  const mediaQuery = window.matchMedia('(hover: hover) and (pointer: fine)');
1889  var $subNavTrigger = $('body > nav .sub-nav-container a');
1890  var $subNavContainer = $('body > nav .sub-nav-container');
1891  if (mediaQuery.matches) {
1892    $subNavTrigger.off('click');
1893    $subNavContainer.mouseout(function () {
1894      var self = $(this);
1895      self.removeClass('active').find('.sub-nav').removeClass('visible');
1896    }).mouseover(function () {
1897      $(this).siblings('.sub-nav-container').removeClass('active').find('.sub-nav').removeClass('visible');
1898      $(this).addClass('active').find('.sub-nav').addClass('visible');
1899    }).mouseup(function () {
1900      var self = $(this);
1901      self.toggleClass('active');
1902    });
1903  }
1904  function isSectionLight(sect) {
1905    if (!sect || !sect.style) {
1906      return true;
1907    }
1908    if (sect.style.backgroundImage) {
1909      return false;
1910    }
1911    if ($(sect).children('.video-wrapper').length) {
1912      return false;
1913    }
1914    return sect.classList.contains('is-background-color-light');
1915  }
1916  const $header = $(`#${sectionDomId} > .header`);
1917  if ($header.hasClass('theme-auto')) {
1918    if (isSectionLight($('body > section')[0])) {
1919      $header.removeClass('theme-light');
1920    } else {
1921      $header.addClass('theme-light');
1922    }
1923  }
1924  var resizeTimeout;
1925  clearTimeout(resizeTimeout);
1926  resizeTimeout = setTimeout(function () {
1927    resizeMenu();
1928  }, 1000);
1929})('global-navbar');
1930} catch(e) {
1931console.log(e);
1932}
1933                try {
1934(function init(sectionDomId, options) {
1935  var elementSelector = options.elementSelector || 'nav';
1936  var element = document.querySelector(elementSelector);
1937  var sections = document.querySelectorAll('body > section');
1938  var subNavContainers = element.querySelectorAll('.sub-nav');
1939  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
1940  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
1941  var fontColor = options.fontColor || '#fff';
1942  var fontColorScroll = options.fontColorScroll || '#000';
1943  var didScroll = false;
1944  var lastScrollTop = 0;
1945  var delta = 5;
1946
1947  // eslint-disable-next-line sonarjs/no-collapsible-if
1948  if (wow) {
1949    // Wowjs might not trigger for position fixed elements
1950    if (window.scrollY > 0) {
1951      element.querySelectorAll('.wow').forEach(el => wow.show(el));
1952    }
1953  }
1954  function adjustNavPinState() {
1955    // Remove 'visible' class from all subNavContainers
1956    for (let i = 0; i < subNavContainers.length; i++) {
1957      subNavContainers[i].classList.remove('visible');
1958    }
1959    if (window.scrollY > 0) {
1960      element.style.backgroundColor = backgroundColorScroll;
1961      element.style.color = fontColorScroll;
1962      element.classList.add('scroll');
1963    } else {
1964      element.style.backgroundColor = initialBackgroundColor;
1965      element.style.color = fontColor;
1966      element.classList.remove('scroll');
1967    }
1968  }
1969  adjustNavPinState();
1970  function onScroll() {
1971    didScroll = true;
1972  }
1973  window.addEventListener('scroll', onScroll);
1974
1975  // eslint-disable-next-line
1976  var debounceInterval = setInterval(() => {
1977    if (didScroll) {
1978      // eslint-disable-next-line
1979      hasScrolled();
1980      didScroll = false;
1981    }
1982  }, 250);
1983  function hasScrolled() {
1984    adjustNavPinState();
1985    // eslint-disable-next-line
1986    var navbarHeight = element.offsetHeight;
1987    // eslint-disable-next-line
1988    var st = window.scrollY;
1989
1990    // Make sure they scroll more than delta
1991    if (Math.abs(lastScrollTop - st) <= delta) {
1992      return;
1993    }
1994    if (st > lastScrollTop && st > navbarHeight) {
1995      // Scroll Down
1996      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
1997      document.documentElement.style.setProperty('--global-header-height', '0px');
1998
1999      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
2000      sections.forEach(section => {
2001        if (section.classList.contains('sticky')) {
2002          section.style.top = '0px';
2003        }
2004      });
2005    } else {
2006      // Scroll Up
2007      // eslint-disable-next-line
2008      if (st + window.innerHeight < document.documentElement.scrollHeight) {
2009        element.style.transform = `translateY(0) scaleY(1)`;
2010        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
2011        sections.forEach(section => {
2012          if (section.classList.contains('sticky')) {
2013            section.style.top = `${navbarHeight}px`;
2014          }
2015        });
2016      }
2017    }
2018    lastScrollTop = st;
2019  }
2020})('NAVBAR', JSON.parse("{\"fontColor\":\"#211F1F\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#ffffff\",\"backgroundColorScroll\":\"#2C3426\",\"initialBackgroundColor\":\"transparent\"}"));
2021} catch(e) {
2022console.log(e);
2023}
2024                try {
2025(function init(sectionDomId) {
2026  sectionDomId = "global-sidemenu";
2027  var $sidemenu = $('#' + sectionDomId);
2028  const subNavItems = $('body > div.sidemenu .sub-nav-container .sub-nav__item');
2029  const hideSubNavItems = () => {
2030    subNavItems.removeClass('fadeInUp');
2031  };
2032  const showSubNavItems = subnav => {
2033    if ($(subnav).find('.arrow').hasClass('active')) {
2034      $(".sidemenu").find('.arrow').removeClass('active');
2035    } else {
2036      $(".sidemenu").find('.arrow').removeClass('active');
2037      $(subnav).find('.arrow').addClass('active');
2038    }
2039    let i = 0;
2040    subnav.find('.sub-nav__item').each((idx, item) => {
2041      i++;
2042      var timeout;
2043      clearTimeout(timeout);
2044      timeout = setTimeout(() => {
2045        $(item).addClass('fadeInUp');
2046      }, 100 + i * 50);
2047    });
2048  };
2049  $(document).on("click", function (e) {
2050    if ($(e.target).closest(".navigation").length < 1) {
2051      hideSubNavItems();
2052    }
2053  });
2054  $('body > div.sidemenu .sub-nav-container > a').click(function (e) {
2055    const subnavContainer = $(this).closest('.sub-nav-container');
2056    hideSubNavItems();
2057    showSubNavItems(subnavContainer);
2058  });
2059  const hideSideMenu = () => {
2060    $('body > div.sidemenu').removeClass('visible');
2061  };
2062  $('body > div.sidemenu .navigation .navigation__item:not(.sub-nav-container) .navigation__link').on('click', function (e) {
2063    onHide();
2064    hideSideMenu();
2065  });
2066  $('body > div.sidemenu .sub-nav-container .sub-nav__link').on('click', function (e) {
2067    onHide();
2068    setTimeout(() => {
2069      hideSideMenu();
2070    }, 1601);
2071  });
2072  var shown = false;
2073  function onShow() {
2074    if (shown) {
2075      return;
2076    }
2077    shown = true;
2078    window.lpUI.requestScrollLock(sectionDomId);
2079    $('#' + sectionDomId + ' .navigation__link').removeClass('fade-in');
2080    $('#' + sectionDomId + ' .lp-socials__link').removeClass('fade-in');
2081    let i = 0;
2082    $('#' + sectionDomId + ' .navigation__link').each(function () {
2083      i++;
2084      setTimeout(() => {
2085        $(this).addClass('fade-in');
2086      }, 900 + i * 50);
2087    });
2088    $('#' + sectionDomId + ' .lp-socials__link').each(function () {
2089      i++;
2090      setTimeout(() => {
2091        $(this).addClass('fade-in');
2092      }, 900 + i * 50);
2093    });
2094  }
2095  function onHide() {
2096    hideSubNavItems();
2097    if (!shown) {
2098      return;
2099    }
2100    $('#' + sectionDomId + ' .lp-socials__link').removeClass('fade-in');
2101    let i = 0;
2102    $($('#' + sectionDomId + ' .navigation__link').get().reverse()).each(function () {
2103      i++;
2104      setTimeout(() => {
2105        $(this).removeClass('fade-in');
2106      }, i * 50);
2107    });
2108    shown = false;
2109    setTimeout(() => {
2110      window.lpUI.releaseScrollLock(sectionDomId);
2111    }, 1600);
2112  }
2113  $sidemenu.on('lpui-show', onShow);
2114  $sidemenu.on('lpui-hide', onHide);
2115})('global-sidemenu');
2116} catch(e) {
2117console.log(e);
2118}
2119                
2120                try {
2121(function init(sectionDomId) {
2122  function setHttp(link) {
2123    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
2124      link = 'http://' + link;
2125    }
2126    return link;
2127  }
2128  $(`#${sectionDomId} form`).on("reset", function () {
2129    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
2130    if (redirectLink.length) {
2131      const rawHref = redirectLink.attr('href');
2132      redirectLink.attr('href', setHttp(rawHref));
2133      redirectLink[0].click();
2134    }
2135  });
2136})('global-footer');
2137} catch(e) {
2138console.log(e);
2139}
2140                
2141                try {
2142(function init(sectionDomId) {
2143  var _section = $('#' + sectionDomId);
2144  var _footer = document.getElementById('global-footer');
2145  const redirectLink = _section.find('.js-redirect-link');
2146  function setHttp(link) {
2147    if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) {
2148      link = 'https://' + link;
2149    }
2150    return link;
2151  }
2152  function redirectPage(link) {
2153    if (link.length) {
2154      window.location.href = setHttp(link.attr('href'));
2155    }
2156  }
2157  const emailInput = _section.find('.js-email-input');
2158  const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/;
2159  emailInput.on('input', function () {
2160    if (emailRegex.test(this.value)) {
2161      this.setCustomValidity('');
2162    } else {
2163      this.setCustomValidity('Please enter a valid email address.');
2164    }
2165    this.reportValidity();
2166  });
2167  _section.find('input[name="name"]').on("keyup", function () {
2168    if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") {
2169      this.setCustomValidity("Please input your first name and last name.");
2170    } else {
2171      this.setCustomValidity("");
2172    }
2173  });
2174  _section.find('form').on("reset", function () {
2175    $(this).addClass("show-success");
2176    redirectPage(redirectLink);
2177  });
2178  $(window).scroll(function () {
2179    if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible');
2180  });
2181  _section.find('.close-btn, .connect-btn').click(function () {
2182    _section.find('.pop-up').toggle();
2183    _section.find('.btn-holder').toggle();
2184  });
2185  if (!_footer) return;
2186  const observer = new IntersectionObserver(entries => {
2187    entries.forEach(entry => {
2188      if (entry.isIntersecting) _section.hide();else _section.show();
2189    });
2190  }, {
2191    threshold: 0.1
2192  });
2193  observer.observe(_footer);
2194  function selectToDropdown(selectItem) {
2195    let customDropdown = `
2196        <div class="custom-select" role="presentation">
2197        <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button>
2198        <div class="custom-select-menu" style="display: none;max-height: none;">
2199        <div class="custom-select-content">
2200        </div>
2201        </div>
2202        </div>`;
2203    $(customDropdown).insertAfter(selectItem);
2204    let $dropdown = $($(selectItem).next());
2205    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
2206    let $dropdownMenu = $dropdown.find(".custom-select-menu");
2207    let $dropdownContent = $dropdown.find(".custom-select-content");
2208    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
2209    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
2210    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
2211    appendOptionButtons(selectItem, $dropdownContent);
2212    $(selectItem).removeClass().addClass("sr-only");
2213    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
2214    $dropdownToggle.html(toggleText);
2215    $dropdown.on("click", ".custom-select-item", function (e) {
2216      if ($(this).hasClass("is-disabled")) return;
2217      let elementNumber = $(this).index();
2218      let $originalSelect = $(this).closest(".custom-select").siblings("select");
2219      let $linkedOption = $originalSelect.find("option").eq(elementNumber);
2220      if (!$linkedOption.prop("selected")) {
2221        $linkedOption.prop("selected", true);
2222        $originalSelect.change();
2223        $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
2224        $dropdownToggle.html($(this).html());
2225        closeSelectMenu($(this).closest(".custom-select-menu"));
2226      }
2227      $dropdownToggle.removeClass("is-placeholder");
2228    });
2229    function convertOptionToButton(option) {
2230      var optionText = $(option).text();
2231      var optionValue = $(option).attr("value") || $(option).text();
2232      var optionIsDisabled = $(option).prop("disabled");
2233      var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
2234      return outputButton;
2235    }
2236    function appendOptionButtons(selectItem, appendTarget) {
2237      $(selectItem).find("option").each(function () {
2238        let currentButton = convertOptionToButton(this);
2239        $(appendTarget).append(currentButton);
2240      });
2241    }
2242    function showSelectMenu(selectMenu) {
2243      var customSelect = $(selectMenu).closest(".custom-select")[0];
2244      $(customSelect).addClass("open");
2245      $(selectMenu).slideDown();
2246    }
2247    function closeSelectMenu(selectMenu) {
2248      var customSelect = $(selectMenu).closest(".custom-select")[0];
2249      $(customSelect).removeClass("open");
2250      $(selectMenu).slideUp();
2251    }
2252    $dropdown.on("click", ".custom-select-toggle", function (e) {
2253      var $customSelect = $(this).closest(".custom-select");
2254      var selectMenu = $customSelect.find(".custom-select-menu")[0];
2255      if ($customSelect.hasClass("open")) {
2256        closeSelectMenu(selectMenu);
2257      } else {
2258        showSelectMenu(selectMenu);
2259      }
2260    });
2261    $(document).on("click", function (e) {
2262      if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) {
2263        $(".custom-select.open").each(function () {
2264          var selectMenu = $(this).find(".custom-select-menu")[0];
2265          closeSelectMenu(selectMenu);
2266        });
2267      }
2268    });
2269  }
2270  $(".pop-up select[name='interest']").each(function () {
2271    selectToDropdown(this);
2272  });
2273})('global-mobile-contact');
2274} catch(e) {
2275console.log(e);
2276}
2277                
2278                try {
2279(function init(sectionDomId, options) {
2280  const $section = $('#' + sectionDomId);
2281  const $videoWrap = $section.find('.full-screen-video-component > .video-wrapper');
2282  const $playButton = $section.find('.js-play-btn');
2283  if ($videoWrap.length) {
2284    const $video = $videoWrap.find('video');
2285    $video.each(function () {
2286      var v = this;
2287      if (v.readyState > 0) {
2288        $videoWrap.addClass('playing');
2289        var promise = v.play();
2290        if (promise !== undefined) {
2291          promise.catch(error => {
2292            $playButton.addClass('visible');
2293          }).then(() => {});
2294        }
2295      } else {
2296        v.addEventListener('canplay', function () {
2297          $videoWrap.addClass('playing');
2298        }, {
2299          once: true
2300        });
2301      }
2302    });
2303  }
2304  $playButton.on('click', function () {
2305    const $video = $videoWrap.find('video');
2306    this.classList.remove('visible');
2307    if ($video[0].currentTime === 0) {
2308      $video[0].load();
2309      $video[0].play();
2310    }
2311  });
2312  window.luxuryPresence.mapApiLoader.load().then(() => {
2313    const $searchWrapper = $section.find('.search-wrapper');
2314    if (!$searchWrapper.length) {
2315      return;
2316    }
2317    const searchMls = $searchWrapper[0].dataset.searchMls === 'true';
2318    const searchProperties = $searchWrapper[0].dataset.searchProperties === 'true';
2319    const searchPlaces = searchMls;
2320    const showNeighborhoods = searchMls;
2321    const searchNearEnabled = searchMls;
2322    const $searchInput = $section.find('.search-input');
2323    const $searchResults = $section.find('.search-results');
2324    const $resultsContainer = $section.find('.results-container');
2325    const $loader = $section.find('.search-in-progress');
2326    const $predefined = $section.find('.predefined-links');
2327    const $searchBtn = $section.find('.search-button');
2328    const $leaseFalseButton = $section.find('.jsLeaseFalse');
2329    const $leaseTrueButton = $section.find('.jsLeaseTrue');
2330    const $nextSection = $section.next();
2331    const fixZIndex = $nextSection.length && parseInt($nextSection.css('z-index')) || 1;
2332    const searchDelay = 300;
2333    const maxPlaces = 3;
2334    const maxMls = 5;
2335    const leaseFilter = $leaseFalseButton.length > 0 && $leaseTrueButton.length > 0;
2336    const service = new google.maps.places.AutocompleteService();
2337    const geocoder = new google.maps.Geocoder();
2338    var keyword;
2339    var leasePropertyState = false;
2340    var leasePropertySearched;
2341    var searchActive = false;
2342    var isLoading = false;
2343    function showSearchResults() {
2344      searchActive = true;
2345      updateSearchDisplay();
2346    }
2347    function hideSearchResults() {
2348      searchActive = false;
2349      updateSearchDisplay();
2350    }
2351    function showLoading() {
2352      isLoading = true;
2353      updateSearchDisplay();
2354    }
2355    function hideLoading() {
2356      isLoading = false;
2357      updateSearchDisplay();
2358    }
2359    function updateSearchDisplay() {
2360      if (leaseFilter) {
2361        if (leasePropertyState) {
2362          $leaseTrueButton.addClass('active');
2363          $leaseFalseButton.removeClass('active');
2364        } else {
2365          $leaseFalseButton.addClass('active');
2366          $leaseTrueButton.removeClass('active');
2367        }
2368      }
2369      if (!searchActive) {
2370        $searchResults.removeClass('show');
2371        $searchResults.css('height', '0');
2372        return;
2373      }
2374      var hasResults = !!$resultsContainer.html();
2375      var hasPredefined = $predefined.find('a:not(.not-processed)').length > 0;
2376      if (hasResults) {
2377        $predefined.addClass('not-visible');
2378        $loader.addClass('not-visible');
2379        $resultsContainer.removeClass('not-visible');
2380      } else if (isLoading) {
2381        $resultsContainer.addClass('not-visible');
2382        $predefined.addClass('not-visible');
2383        $loader.removeClass('not-visible');
2384      } else if (hasPredefined) {
2385        $resultsContainer.addClass('not-visible');
2386        $loader.addClass('not-visible');
2387        $predefined.removeClass('not-visible');
2388      } else {
2389        $resultsContainer.addClass('not-visible');
2390        $loader.addClass('not-visible');
2391        $predefined.addClass('not-visible');
2392      }
2393      var height = 0;
2394      height += $predefined[0].getBoundingClientRect().height;
2395      height += $resultsContainer[0].getBoundingClientRect().height;
2396      height += $loader[0].getBoundingClientRect().height;
2397      if (height > 0) {
2398        $searchResults.addClass('show');
2399      } else {
2400        $searchResults.removeClass('show');
2401      }
2402      $searchResults.css('height', height + 'px');
2403    }
2404    function clearSelection() {
2405      $searchResults.find('.selected-link').removeClass('selected-link');
2406    }
2407    function moveSelection(up) {
2408      var $cont = $resultsContainer.html() ? $resultsContainer : $predefined;
2409      var $links = $cont.find('.results-link');
2410      if (!$links.length) {
2411        return;
2412      }
2413      var idx = -1;
2414      $links.each(function (i) {
2415        if (idx === -1 && $(this).is('.selected-link')) {
2416          idx = i;
2417        }
2418      });
2419      var newIdx;
2420      if (up) {
2421        newIdx = idx - 1;
2422        if (newIdx < 0) {
2423          newIdx = $links.length - 1;
2424        }
2425      } else {
2426        newIdx = idx + 1;
2427        if (newIdx > $links.length - 1) {
2428          newIdx = 0;
2429        }
2430      }
2431      if (newIdx !== idx) {
2432        $searchResults.find('.selected-link').removeClass('selected-link');
2433        $($links.get(newIdx)).addClass('selected-link');
2434      }
2435    }
2436    var newSearchTimer;
2437    function inputChanged(ev) {
2438      if (ev.which === 38) {
2439        ev.preventDefault();
2440        moveSelection(true);
2441        return false;
2442      }
2443      if (ev.which === 40) {
2444        ev.preventDefault();
2445        moveSelection();
2446        return false;
2447      }
2448      if (ev.which === 13) {
2449        $lnk = $searchResults.find('.selected-link');
2450        if ($lnk.length) {
2451          $lnk[0].click();
2452          hideSearchResults();
2453        } else {
2454          $searchBtn.click();
2455        }
2456      }
2457      window.clearTimeout(newSearchTimer);
2458      newSearchTimer = window.setTimeout(startSearch, searchDelay);
2459    }
2460    function startSearch() {
2461      const term = $searchInput.val();
2462      if (term === keyword && leasePropertySearched === leasePropertyState) {
2463        return;
2464      }
2465      leasePropertySearched = leasePropertyState;
2466      keyword = term;
2467      if (term) {
2468        doSearch(term, leasePropertySearched);
2469      } else {
2470        setResults(null);
2471      }
2472    }
2473    function mlsSearch(term, leaseProperty) {
2474      var query = {
2475        keyword_search: term,
2476        limit: maxMls
2477      };
2478      if (leaseFilter && leaseProperty) {
2479        query.lease_property = true;
2480      }
2481      return superagent.get(window.location.protocol + '//' + window.location.host + '/home-search/listings.json').query(query).then(function (res) {
2482        if (!Array.isArray(res.body)) {
2483          return [];
2484        }
2485        return res.body.map(function (item) {
2486          return {
2487            id: item.id,
2488            display_address: [item.address_1, item.city, [item.state, item.postal_code].filter(function (i) {
2489              return i;
2490            }).join(' ')].filter(function (i) {
2491              return i;
2492            }).join(', ')
2493          };
2494        });
2495      }, function (e) {
2496        console.log(e);
2497        return [];
2498      });
2499    }
2500    function resolveGeoBounds(placeId, description, terms) {
2501      return new Promise(function (resolve, reject) {
2502        geocoder.geocode({
2503          'placeId': placeId
2504        }, function (results, status) {
2505          if (status != 'OK') {
2506            return resolve(null);
2507          }
2508          var result = results[0];
2509          var bounds = new google.maps.LatLngBounds();
2510          bounds.extend(result.geometry.viewport.getSouthWest());
2511          bounds.extend(result.geometry.viewport.getNorthEast());
2512          result.geometry.bounds = bounds.toJSON();
2513          var placeUrl = window.luxuryPresence.makeMlsLink(result);
2514          return resolve({
2515            placeUrl: placeUrl,
2516            description: description,
2517            cityName: terms[0].value,
2518            stateName: terms[1].value
2519          });
2520        });
2521      });
2522    }
2523    function resolveAutocomplete(term, deeper) {
2524      var request = {
2525        input: term,
2526        componentRestrictions: {
2527          country: 'us'
2528        },
2529        types: deeper ? ['geocode'] : ['(regions)'],
2530        limit: 1
2531      };
2532      return new Promise(function (resolve, reject) {
2533        service.getPlacePredictions(request, function (results, status) {
2534          if (status !== google.maps.places.PlacesServiceStatus.OK) {
2535            resolve(null);
2536            return;
2537          }
2538          if (!Array.isArray(results)) {
2539            resolve(null);
2540            return;
2541          }
2542          if (deeper) {
2543            var allowedTypes = {
2544              'neighborhood': true,
2545              'administrative_area_level_3': true,
2546              'administrative_area_level_4': true,
2547              'administrative_area_level_5': true,
2548              'sublocality_level_1': true,
2549              'sublocality_level_2': true,
2550              'sublocality_level_3': true
2551            };
2552            results = results.filter(function (res) {
2553              return res.types.find(t => allowedTypes[t]);
2554            });
2555          }
2556          if (!results.length) {
2557            resolve(null);
2558            return;
2559          }
2560          resolve(results);
2561        });
2562      });
2563    }
2564    var placesResult = {};
2565    function placesSearch(term, ignoreInput) {
2566      if (placesResult.term !== term) {
2567        placesResult = {
2568          term: term,
2569          result: resolveAutocomplete(term).then(function (results) {
2570            if (!ignoreInput && term !== keyword) {
2571              return null;
2572            }
2573            if (ignoreInput && !results) {
2574              return resolveAutocomplete(term, true);
2575            }
2576            return results;
2577          }).then(function (results) {
2578            if (!ignoreInput && term !== keyword) {
2579              return [];
2580            }
2581            if (!results) {
2582              return [];
2583            }
2584            var geoResultPromises = results.map(function (result) {
2585              return resolveGeoBounds(result.place_id, result.description, result.terms);
2586            });
2587            return Promise.all(geoResultPromises).then(function (geoLinks) {
2588              return geoLinks.filter(function (i) {
2589                return i;
2590              }).slice(0, maxPlaces);
2591            });
2592          })
2593        };
2594      }
2595      return placesResult.result;
2596    }
2597    function propertiesSearch(term, leaseProperty) {
2598      var payload = {
2599        companyId: window.luxuryPresence.defaults.companyId,
2600        search: term,
2601        offset: 0,
2602        limit: 6,
2603        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"]
2604      };
2605      if (leaseFilter) {
2606        payload.leaseProperty = !!leaseProperty;
2607      }
2608      var useRouter = Boolean(options && options.useRouterApi);
2609      return superagent.post((useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl) + '/graphql').send({
2610        query: window.luxuryPresence.defaults.gql.properties,
2611        variables: useRouter ? window.luxuryPresence.routerApi.transformVariables('properties', payload) : payload
2612      }).then(function (res) {
2613        var data = res.body.data || {};
2614        var page = data.properties || {};
2615        return useRouter ? page.items || [] : page || [];
2616      }, function (err) {
2617        return [];
2618      });
2619    }
2620    function doSearch(term, leaseProperty) {
2621      showLoading();
2622      Promise.all([searchMls ? mlsSearch(term, leaseProperty) : [], searchPlaces ? placesSearch(term) : [], searchProperties ? propertiesSearch(term, leaseProperty) : []]).then(function (res) {
2623        if (term !== keyword) {
2624          return;
2625        }
2626        setResults(res[0], res[1], res[2], leaseProperty);
2627      });
2628    }
2629    function makeResultsBlockHtml(title, links) {
2630      if (!links || !links.length) {
2631        return '';
2632      }
2633      var html = '<div class="results-block">';
2634      html += '<div class="results-block-title">';
2635      if (searchNearEnabled) {
2636        html += '<div class="search-near-container"><a class="search-near lp-link lp-link--light">Search Near Me</a></div>';
2637      }
2638      html += '<div class="results-title-label">' + title + '</div></div>';
2639      html += links.join('') + '</div>';
2640      return html;
2641    }
2642    function setResults(mlsResults, placesResults, propertiesResults, leaseProperty) {
2643      clearSelection();
2644      hideLoading();
2645      if (!mlsResults) {
2646        $resultsContainer.html('');
2647        updateSearchDisplay();
2648        return;
2649      }
2650      if (!mlsResults.length && !placesResults.length && !propertiesResults.length) {
2651        $resultsContainer.html('<div class="nothing-found">No results found</div>');
2652        updateSearchDisplay();
2653        return;
2654      }
2655      var propertiesHtml = makeResultsBlockHtml('Featured Properties', propertiesResults.map(function (result) {
2656        return `<a href="/properties/${result.slug}" class="results-link">${result.privateAddress ? result.name : result.fullAddress}</a>`;
2657      }));
2658      var placesHtml = makeResultsBlockHtml('Locations', placesResults.map(function (result) {
2659        return `<a class="results-link" href="${result.placeUrl}${leaseProperty ? '&lease_property=true' : ''}&cityName=${result.cityName}&stateName=${result.stateName}">${result.description}</a>`;
2660      }));
2661      var mlsHtml = makeResultsBlockHtml('Address', mlsResults.map(function (result) {
2662        return `<a href="/home-search/listings/${result.id}" class="results-link">${result.display_address}</a>`;
2663      }));
2664      $resultsContainer.html(propertiesHtml + placesHtml + mlsHtml);
2665      updateSearchDisplay();
2666    }
2667    function searchBtnClicked() {
2668      var resultsBlockHref = $("#" + sectionDomId + " .results-block .results-link").attr("href");
2669      const term = $searchInput.val();
2670      if (!term) {
2671        return;
2672      }
2673      if (searchMls) {
2674        window.location.href = resultsBlockHref;
2675        return;
2676      }
2677      if (searchProperties) {
2678        window.location.href = "/properties/sale";
2679      }
2680    }
2681    var neighborhoods = null;
2682    function fetchNeighborhoods() {
2683      var url = window.luxuryPresence.defaults.apiGatewayUrl;
2684      var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'neighborhoods (companyId: $companyId, offset: $offset, limit: $limit) {id, name, mlsLink, googlePlaceData}}';
2685      var payload = {};
2686      payload.offset = 0;
2687      payload.limit = 100;
2688      payload.companyId = window.luxuryPresence.defaults.companyId;
2689      return superagent.post(url + '/graphql').withCredentials().send({
2690        query: gqlQuery,
2691        variables: payload
2692      }).then(function (res) {
2693        neighborhoods = res.body.data && res.body.data.neighborhoods;
2694        if (neighborhoods && !neighborhoods.length) {
2695          neighborhoods = null;
2696        }
2697      });
2698    }
2699    function setPredefinedNeighborhoods() {
2700      return fetchNeighborhoods().then(function () {
2701        if (!neighborhoods) {
2702          return;
2703        }
2704        var leaseProperty = leaseFilter && leasePropertyState;
2705        var placesHtml = makeResultsBlockHtml('Locations', neighborhoods.map(function (item) {
2706          return `<a class="results-link" href="${item.mlsLink}${leaseProperty ? '&lease_property=true' : ''}">${item.googlePlaceData && item.googlePlaceData.formatted_address || item.name}</a>`;
2707        }));
2708        $predefined.html(placesHtml);
2709        updateSearchDisplay();
2710      });
2711    }
2712    if (showNeighborhoods) {
2713      setPredefinedNeighborhoods();
2714    }
2715    $searchInput.on('focus', showSearchResults);
2716    $searchInput.on('keyup focus', inputChanged);
2717    $searchResults.on('mouseenter', '.results-link', function (ev) {
2718      clearSelection();
2719    });
2720    $searchBtn.on('click', searchBtnClicked);
2721    $leaseFalseButton.on('click', function () {
2722      if (leasePropertyState) {
2723        leasePropertyState = false;
2724        if (showNeighborhoods) {
2725          setPredefinedNeighborhoods();
2726        }
2727        updateSearchDisplay();
2728        setResults(null);
2729        startSearch();
2730      }
2731    });
2732    $leaseTrueButton.on('click', function () {
2733      if (!leasePropertyState) {
2734        leasePropertyState = true;
2735        if (showNeighborhoods) {
2736          setPredefinedNeighborhoods();
2737        }
2738        updateSearchDisplay();
2739        setResults(null);
2740        startSearch();
2741      }
2742    });
2743    function createPolygonUrl(center, radius, n) {
2744      var step = Math.PI * 2 / n;
2745      var angle = 0 - step / 2;
2746      var points = [];
2747      var kx = 1.0 / Math.cos(center[1] * Math.PI / 180);
2748      for (var i = 0; i < n; i++) {
2749        points.push('[' + (center[0] + radius * Math.sin(angle) * kx).toFixed(5) + ',' + (center[1] - radius * Math.cos(angle)).toFixed(5) + ']');
2750        angle += step;
2751      }
2752      points.push(points[0]);
2753      var str = '[[' + points.join(',') + ']]';
2754      return '&polygon=' + encodeURIComponent(str);
2755    }
2756    function makeNearMeUrl(center, leaseProperty) {
2757      var url = '/home-search/listings?search_type=envelope';
2758      if (leaseProperty) {
2759        url += '&lease_property=true';
2760      }
2761      var distance = 0.11;
2762      var lat = center[1];
2763      var lng = center[0];
2764      url += '&south=' + (lat - distance);
2765      url += '&north=' + (lat + distance);
2766      url += '&west=' + (lng - distance);
2767      url += '&east=' + (lng + distance);
2768      url += createPolygonUrl(center, distance, 54);
2769      return url;
2770    }
2771    var $locMsg = null;
2772    $section.on('click', '.search-near', function () {
2773      showLoading();
2774      navigator.geolocation.getCurrentPosition(function (position) {
2775        hideLoading();
2776        hideSearchResults();
2777        if (!position || !position.coords || !position.coords.latitude || !position.coords.longitude) {
2778          showLocationMessage('Unknown Location', '<p>Getting position of your device failed.</p><p>
2778You can type your address manually in the search field</p>');
2779          return;
2780        }
2781        var url = makeNearMeUrl([position.coords.longitude, position.coords.latitude], leaseFilter && leasePropertyState);
2782        var link = document.createElement('a');
2783        link.href = url;
2784        link.class = 'lp-visually-hidden';
2785        $section[0].appendChild(link);
2786        link.click();
2787        setTimeout(function () {
2788          $section[0].removeChild(link);
2789        }, 100);
2790      }, function (geoError) {
2791        hideLoading();
2792        hideSearchResults();
2793        var title = 'Unknown Location';
2794        var msg;
2795        if (geoError.code === 1) {
2796          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>';
2797        } else {
2798          msg = '<p>Getting position of your device failed.</p><p>You can type your address manually in the search field</p>';
2799        }
2800        showLocationMessage(title, msg);
2801      });
2802    });
2803    var locHideTimer = null;
2804    function showLocationMessage(title, message) {
2805      clearTimeout(locHideTimer);
2806      if (!$locMsg) {
2807        var html = `<div class="loc-msg-backdrop">
2808          <div class="loc-msg-wrap">
2809            <div class="loc-msg-modal">
2810              <div class="loc-msg-close"></div>
2811              <h4 class="loc-msg-title lp-h4"></h4>
2812              <div class="loc-msg-container"></div>
2813            </div>
2814          </div>
2815        </div>
2816        `;
2817        $locMsg = $(html);
2818        $locMsg.on('click', hideLocationMessage);
2819        $section.append($locMsg);
2820      }
2821      $locMsg.find('.loc-msg-container').html(message);
2822      $locMsg.find('.loc-msg-title').html(title);
2823      setTimeout(function () {
2824        if ($locMsg) {
2825          $section.addClass('visible-loc-msg');
2826        }
2827      });
2828    }
2829    function hideLocationMessage() {
2830      $section.removeClass('visible-loc-msg');
2831      locHideTimer = setTimeout(function () {
2832        $locMsg.remove();
2833        $locMsg = null;
2834      }, 400);
2835    }
2836    function outsideClickHandler(e) {
2837      if ($searchWrapper.find($(e.target)).length > 0) {
2838        return;
2839      }
2840      hideSearchResults();
2841    }
2842    $(document).on('click', outsideClickHandler);
2843    if ('geolocation' in navigator) {
2844      $searchWrapper.removeClass('search-near-hidden');
2845    }
2846    updateSearchDisplay();
2847  });
2848})('section-33514986-d0a9-4c0c-9c08-c60d74b86348', 'undefined');
2849} catch(e) {
2850console.log(e);
2851}
2852                try {
2853(function init(sectionDomId, options) {
2854  let section = null;
2855  switch (sectionDomId) {
2856    case 'NAVBAR':
2857      section = document.querySelector('body > nav, #global-navbar');
2858      break;
2859    case 'FOOTER':
2860      section = document.querySelector('body > footer, #global-footer');
2861      break;
2862    case 'SIDEMENU':
2863      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2864      break;
2865    case 'CONTACT':
2866      section = document.querySelector('#modal-global-contact-us');
2867      break;
2868    case 'MOBILE_CONTACT':
2869      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2870      break;
2871    case 'SUBSCRIBE':
2872      // Subscribe Not Implemented
2873      section = null;
2874      break;
2875    case 'ACCOUNT':
2876      // Account Not Implemented
2877      section = null;
2878      break;
2879    default:
2880      section = document.querySelector('#' + sectionDomId);
2881  }
2882  if (!section) {
2883    return;
2884  }
2885
2886  // Where content / items are rendered
2887  const dataContainer = section.querySelector('.data-container');
2888  if (!dataContainer) {
2889    // no place to render items = no need to query server or do anything else
2890    return;
2891  }
2892  let variables = options.variables || {};
2893
2894  // Some variables in options may not have been injected - remove
2895  Object.keys(variables).forEach(function (variableName) {
2896    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2897      delete variables[variableName];
2898    }
2899  });
2900
2901  // Merge page query variables
2902  if (options.usePageResource) {
2903    variables = {
2904      ...variables,
2905      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2906    };
2907  }
2908
2909  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2910  // resolve the flag — fetchData reads the section stamp, aux fetches read
2911  // their own resource's stamp (auxUsesRouter).
2912  function apiUrl(useRouter) {
2913    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2914  }
2915
2916  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2917  // (options.routerApiAux is stamped per aux resource server-side).
2918  function auxUsesRouter(resource) {
2919    return !!(options.routerApiAux && options.routerApiAux[resource]);
2920  }
2921
2922  // Pagination Executes on a Numbered Pagination Container
2923  //  Or via a load more button
2924  let mode = 'BUTTONLESS_PAGINATION';
2925  const container = section.querySelector('.pagination-container');
2926  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2927  if (container) {
2928    mode = 'NUMBERED_PAGINATION';
2929  }
2930  if (loadMoreButton) {
2931    mode = 'LOAD_MORE_BUTTON';
2932  }
2933  let searchContainer = section.querySelector('.search-container');
2934  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2935  const eventPrefix = '__pagination-';
2936  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2937    param: 'neighborhoodId',
2938    urlKey: 'neighborhood'
2939  }, {
2940    param: 'search',
2941    urlKey: 'search'
2942  }, {
2943    param: 'salesPriceGTE',
2944    urlKey: 'pricemin',
2945    formKey: 'priceMin',
2946    type: 'int'
2947  }, {
2948    param: 'salesPriceLTE',
2949    urlKey: 'pricemax',
2950    formKey: 'priceMax',
2951    type: 'int'
2952  }, {
2953    param: 'livingSpaceSizeGTE',
2954    urlKey: 'areamin',
2955    formKey: 'areaMin',
2956    type: 'int'
2957  }, {
2958    param: 'livingSpaceSizeLTE',
2959    urlKey: 'areamax',
2960    formKey: 'areaMax',
2961    type: 'int'
2962  }] : []);
2963
2964  // Total entries - initialized in first render
2965  let totalNumber = 0;
2966  const DefaultSearchParams = {
2967    page: 1
2968  };
2969  searchFormParams.forEach(function (formParam) {
2970    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2971  });
2972  let searchParams = {
2973    ...DefaultSearchParams
2974  };
2975  const offset = options.variables?.offset || 0;
2976  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2977  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2978
2979  // entries of per page
2980  // when query variables for a given section would't be filled options.pageSize can store
2981  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2982  let pageSize = parseInt(options.pageSize, 10) || 9;
2983
2984  // Adding mobile pageRange support
2985  var NARROW_BREAKPOINT = 600;
2986  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2987  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2988
2989  // Page range (pages on both sides of the current page)
2990  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2991  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2992  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2993
2994  // Whether to display the 'Previous' button
2995  var showPrevious = true;
2996
2997  // Whether to display the 'Next' button
2998  var showNext = true;
2999
3000  // Whether to display the page buttons
3001  var showPageNumbers = true;
3002
3003  // 'Previous' text
3004  var prevText = options.prevText || '&laquo;';
3005
3006  // 'Next' text
3007  var nextText = options.nextText || '&raquo;';
3008
3009  // Ellipsis text
3010  var ellipsisText = '&hellip;';
3011  var classPrefix = 'paginationjs';
3012
3013  // Default active class
3014  var activeClassName = 'active';
3015
3016  // Default disable class
3017  var disableClassName = 'disabled';
3018
3019  // Pagination element's position in the container
3020  var position = 'bottom';
3021
3022  // Whether to trigger pagination at initialization
3023  var triggerPagingOnInit = !options.skipInitialLoad;
3024  var showFirstOnEllipsisShow = true;
3025  var showLastOnEllipsisShow = true;
3026
3027  // Instantiated in init()
3028  var el = null;
3029
3030  // Controls scrollTop logic
3031  var firstRender = true;
3032  var renderBySearch = false;
3033  var disabled = false;
3034
3035  // Pagination script class selector
3036  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
3037
3038  // Property Specific Image Override if No Image
3039  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
3040
3041  // Construct template
3042  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
3043  var template = Handlebars.compile(templateHTML);
3044
3045  // Initialize
3046  init();
3047  function init() {
3048    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
3049
3050    // Append/prepend pagination element to the pagination container
3051    if (mode === 'NUMBERED_PAGINATION') {
3052      el = document.createElement('div');
3053      el.className = 'paginationjs';
3054      container[position === 'bottom' ? 'append' : 'prepend'](el);
3055    }
3056    if (searchContainer) {
3057      initSearchContainer({
3058        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
3059        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
3060        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
3061        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
3062      }, function () {
3063        syncSearchFormState(searchParams);
3064      });
3065    }
3066
3067    // Bind events
3068    observer();
3069  }
3070  function syncSearchFormState(params) {
3071    searchContainer.dispatchEvent(new CustomEvent('sync', {
3072      detail: params
3073    }));
3074  }
3075  function initSearchContainer(options, done) {
3076    var promises = [];
3077    if (options.fetchNeighborhoods) {
3078      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
3079        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
3080          detail: {
3081            data: neighborhoods.map(function (item) {
3082              return {
3083                value: item.id,
3084                label: item.name
3085              };
3086            })
3087          }
3088        }));
3089      }));
3090    }
3091    if (options.fetchPostCategories) {
3092      promises.push(fetchPostCategories(function (categories) {
3093        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
3094          detail: {
3095            data: categories
3096          }
3097        }));
3098      }));
3099    }
3100    if (options.fetchOffices) {
3101      promises.push(fetchOffices(function (offices) {
3102        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
3103          detail: {
3104            data: offices
3105          }
3106        }));
3107      }));
3108    }
3109    if (options.fetchRentalRates) {
3110      promises.push(fetchAllRentalRates(function (rentalRates) {
3111        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
3112          detail: {
3113            data: rentalRates
3114          }
3115        }));
3116      }));
3117    }
3118    if (promises.length > 0) {
3119      Promise.all(promises).then(function () {
3120        done();
3121      });
3122    } else {
3123      // element's custom code is not executed yet, so we're scheduling callback to after element's code
3124      setTimeout(done);
3125    }
3126  }
3127  function fetchAllNeighborhoods(done) {
3128    var useRouter = auxUsesRouter('neighborhoods');
3129    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
3130    // args on both APIs (the federated neighborhoods field accepts
3131    // withProperties/withBlogPosts); only the selection set differs.
3132    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') + '}}';
3133    var payload = {};
3134    payload.offset = 0;
3135    payload.limit = 100;
3136    payload.companyId = variables.companyId;
3137    if (options.resource === 'properties') {
3138      payload.withProperties = {
3139        active: true
3140      };
3141      ['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) {
3142        if (variables[field] !== undefined && variables[field] !== null) {
3143          payload.withProperties[field] = variables[field];
3144        }
3145      });
3146    }
3147    if (options.resource === 'posts') {
3148      payload.withBlogPosts = {
3149        active: true
3150      };
3151      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
3152        if (variables[field] !== undefined && variables[field] !== null) {
3153          payload.withBlogPosts[field] = variables[field];
3154        }
3155      });
3156    }
3157
3158    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3159    if (useRouter) {
3160      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
3161    }
3162    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3163      query: gqlQuery,
3164      variables: payload
3165    }).then(function (res) {
3166      var value = res.body.data && res.body.data.neighborhoods || {};
3167      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3168      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3169      done(items, items.length);
3170    });
3171  }
3172  function fetchPostCategories(done) {
3173    var featured = options.resource === 'posts' && !!variables.featured;
3174    var useRouter = auxUsesRouter('postCategories');
3175    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3176    // selection set differs ({ items {...} } on the router).
3177    var selection = 'id, name, publishedCount, featuredPublishedCount';
3178    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) + '}}';
3179    var payload = {};
3180    payload.offset = 0;
3181    payload.limit = 100;
3182    payload.companyId = variables.companyId;
3183    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3184      query: gqlQuery,
3185      variables: payload
3186    }).then(function (res) {
3187      var value = res.body.data && res.body.data.postCategories || {};
3188      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3189      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3190      done(items.map(function (item) {
3191        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
3192        return item;
3193      }), items.length);
3194    });
3195  }
3196  function fetchOffices(done) {
3197    var useRouter = auxUsesRouter('offices');
3198    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3199    // selection set differs ({ items {...} } on the router).
3200    var selection = 'id, name, tags';
3201    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
3202    // APIs differ in more than the items wrapper: federated offices takes
3203    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
3204    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 + '}}';
3205    var payload = {
3206      offset: 0,
3207      limit: 100,
3208      companyId: variables.companyId
3209    };
3210
3211    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3212    if (useRouter) {
3213      payload = window.luxuryPresence.routerApi.transformVariables('office
3213s', payload);
3214    }
3215    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3216      query: gqlQuery,
3217      variables: payload
3218    }).then(function (res) {
3219      var value = res.body.data && res.body.data.offices || {};
3220      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3221      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3222      done(items, items.length);
3223    });
3224  }
3225
3226  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
3227  function fetchAllRentalRates(done) {
3228    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
3229    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
3230    var payload = {
3231      offset: 0,
3232      limit: 100,
3233      companyId: variables.companyId
3234    };
3235    superagent.post(url + '/graphql').withCredentials().send({
3236      query: gqlQuery,
3237      variables: payload
3238    }).then(function (res) {
3239      var items = res.body.data && res.body.data.rentalRates || [];
3240      done(items, items.length);
3241    }).catch(function (err) {
3242      console.error('Error fetching rental rates:', err);
3243      done([], 0);
3244    });
3245  }
3246  function fetchData(params, done) {
3247    var resource = options.resource;
3248    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
3249    var payload = {};
3250    try {
3251      payload = JSON.parse(JSON.stringify(variables));
3252    } catch (e) {
3253      Object.keys(variables).forEach(function (variableName) {
3254        payload[variableName] = variables[variableName];
3255      });
3256    }
3257    payload.offset = (params.page - 1) * pageSize + offset;
3258    payload.limit = pageSize;
3259    payload.companyId = options.companyId;
3260    searchFormParams.forEach(function (formParam) {
3261      var val = params[formParam.formKey || formParam.param];
3262      if (val !== null && val !== undefined) {
3263        objSet(payload, formParam.param, val);
3264      }
3265    });
3266
3267    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3268    if (options.useRouterApi) {
3269      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
3270    }
3271
3272    // TODO: Disabled loading due to jarring effect
3273    // dataContainer.html('Loading...');
3274    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
3275      query: gqlQuery,
3276      variables: payload
3277    }).then(function (res) {
3278      if (res.body.errors) {
3279        done(res.body.errors);
3280        return;
3281      }
3282      var data = res.body.data || {};
3283      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3284      var resources;
3285      var resourceCount;
3286      if (options.useRouterApi) {
3287        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
3288        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
3289        resourceCount = page.count;
3290      } else {
3291        resources = data[resource] || [];
3292        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
3293      }
3294      const finish = function (items) {
3295        if (resource === 'properties' && propertyPlaceholderImage?.id) {
3296          items = items.map(item => {
3297            if (item.media?.length === 0) {
3298              return Object.assign(item, {
3299                media: [propertyPlaceholderImage]
3300              });
3301            }
3302            return item;
3303          });
3304        }
3305        done(null, items, resourceCount);
3306      };
3307
3308      // ROUTER-CLEANUP: client half of PLAT-4073 — resolve the requested
3309      // disclaimers before rendering; older SDKs skip (keys stay unset).
3310      if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') {
3311        window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish);
3312        return;
3313      }
3314      finish(resources);
3315    });
3316  }
3317  function getTotalPage() {
3318    return Math.ceil(totalNumber / pageSize);
3319  }
3320  function renderPaginationList() {
3321    var totalPages = getTotalPage();
3322    var rangeStart = searchParams.page - pageRange;
3323    var rangeEnd = searchParams.page + pageRange;
3324    if (rangeEnd > totalPages) {
3325      rangeEnd = totalPages;
3326      rangeStart = totalPages - pageRange * 2;
3327      rangeStart = rangeStart < 1 ? 1 : rangeStart;
3328    }
3329    if (rangeStart <= 1) {
3330      rangeStart = 1;
3331      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
3332    }
3333
3334    // Making sure that 1 more page button is shown in edge positions
3335    if (pageRange === 0) {
3336      if (searchParams.page === totalPages) {
3337        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
3338      }
3339      if (searchParams.page === 1) {
3340        rangeEnd = Math.min(2, totalPages);
3341      }
3342    }
3343
3344    // Render pagination list
3345    if (mode === 'NUMBERED_PAGINATION') {
3346      el.innerHTML = generateHTML({
3347        currentPage: searchParams.page,
3348        pageRange: pageRange,
3349        rangeStart: rangeStart,
3350        rangeEnd: rangeEnd
3351      });
3352      if (totalPages < 2 && hidePaginationOnFirstPage) {
3353        container.style.display = 'none';
3354      } else {
3355        container.style.display = '';
3356      }
3357    } else if (mode === 'LOAD_MORE_BUTTON') {
3358      if (searchParams.page >= totalPages) {
3359        loadMoreButton.style.display = 'none';
3360      } else {
3361        loadMoreButton.style.display = '';
3362      }
3363    }
3364  }
3365  function render(data) {
3366    renderPaginationList();
3367
3368    // Render new content with handlebars
3369    var html = '';
3370    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
3371      // If using load more, append search results to existing results
3372      html = dataContainer.innerHTML;
3373    }
3374    for (var i = 0; i < data.length; i++) {
3375      var itemData = recursivelyParse(data[i]);
3376      itemData.sectionIndex = options.sectionIndex;
3377      itemData.renderOptions = options.renderOptions;
3378      html += template(itemData);
3379    }
3380    dataContainer.innerHTML = html;
3381
3382    // Scroll Top
3383    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
3384      // Only animate to the top if we replace dataContainer (numbered pagination)
3385      setTimeout(() => {
3386        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
3387        window.scrollTo({
3388          top: scrollTargetOffsetTop,
3389          behavior: 'smooth'
3390        });
3391      }, 250);
3392    }
3393    return true;
3394  }
3395  function generateHTML(args) {
3396    const totalPages = getTotalPage();
3397    const {
3398      rangeStart,
3399      rangeEnd
3400    } = args;
3401    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3402      ...searchParams,
3403      page
3404    });
3405    let html = '';
3406    if (showPrevious || showPageNumbers || showNext) {
3407      html += '<div class="paginationjs-pages"><ul>';
3408
3409      // Previous button
3410      if (showPrevious) {
3411        if (searchParams.page <= 1) {
3412          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
3413        } else {
3414          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>`;
3415        }
3416      }
3417
3418      // Pages
3419      if (showPageNumbers) {
3420        if (rangeStart <= 3) {
3421          for (let i = 1; i < rangeStart; i++) {
3422            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>`;
3423          }
3424        } else {
3425          if (showFirstOnEllipsisShow) {
3426            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
3427          }
3428          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3429        }
3430        for (let i = rangeStart; i <= rangeEnd; i++) {
3431          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>`;
3432        }
3433        if (rangeEnd < totalPages - 2) {
3434          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3435          if (showLastOnEllipsisShow) {
3436            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
3437          }
3438        } else {
3439          for (let i = rangeEnd + 1; i <= totalPages; i++) {
3440            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
3441          }
3442        }
3443      }
3444
3445      // Next button
3446      if (showNext) {
3447        if (searchParams.page >= totalPages) {
3448          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
3449        } else {
3450          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>`;
3451        }
3452      }
3453      html += '</ul></div>';
3454    }
3455    return html;
3456  }
3457  function go(newSearchParams, callback, restorationVisit) {
3458    if (disabled) return;
3459    var goToPageNumber = newSearchParams.page;
3460
3461    // Page number is out of bounds
3462    if (!goToPageNumber || goToPageNumber < 1) return;
3463    var totalPage = getTotalPage();
3464
3465    // Page number is out of bounds
3466    if (!restorationVisit && totalNumber > 0) {
3467      if (goToPageNumber > totalPage) return;
3468    }
3469    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3470      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3471        ...newSearchParams,
3472        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
3473      });
3474      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
3475        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
3476          queryString: true
3477        }));
3478      }
3479    }
3480
3481    // Fetch and update page
3482    fetchData(newSearchParams, renderWithData);
3483    disabled = true;
3484    function renderWithData(err, data, count) {
3485      if (err) {
3486        dataContainer.dispatchEvent(new Event('error'));
3487      } else {
3488        searchParams = {
3489          ...newSearchParams
3490        };
3491        totalNumber = count - offset;
3492        if (data.length === 0) {
3493          dataContainer.dispatchEvent(new Event('no-data'));
3494        } else {
3495          dataContainer.dispatchEvent(new Event('data'));
3496        }
3497        render(data);
3498        firstRender = false;
3499      }
3500      disabled = false;
3501      renderBySearch = false;
3502    }
3503  }
3504  function areQueryParamsEqual(first, second) {
3505    var differ = Object.keys(first).find(function (key) {
3506      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
3507    });
3508    if (differ) {
3509      return false;
3510    }
3511    differ = Object.keys(second).find(function (key) {
3512      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
3513    });
3514    return !differ;
3515  }
3516  function next(callback) {
3517    go({
3518      ...searchParams,
3519      page: searchParams.page + 1
3520    }, callback);
3521  }
3522  function previous(callback) {
3523    go({
3524      ...searchParams,
3525      page: searchParams.page - 1
3526    }, callback);
3527  }
3528  function refresh(callback) {
3529    go(searchParams, callback);
3530  }
3531  function update(params, callback) {
3532    renderBySearch = true;
3533    go(params, callback);
3534  }
3535  function observer() {
3536    if (searchContainer) {
3537      searchContainer.addEventListener('search', function (event, newSearchParams) {
3538        newSearchParams = event.detail || newSearchParams;
3539        update({
3540          ...searchParams,
3541          ...newSearchParams,
3542          page: 1
3543        });
3544      });
3545      searchContainer.addEventListener('clear-search', function () {
3546        const defaultSearchParams = {
3547          ...DefaultSearchParams
3548        };
3549        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
3550          ...defaultSearchParams,
3551          page: null
3552        }, {
3553          ...searchParams,
3554          page: null
3555        });
3556
3557        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
3558        // when search form have default state
3559        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
3560          return;
3561        }
3562
3563        // if someone initially go to some page and click 'Clear' on search from
3564        // we should't navigate to first page. We should preserve page value
3565        if (isCurrentSearchFormStateDefault) {
3566          defaultSearchParams.page = searchParams.page;
3567        }
3568        syncSearchFormState(defaultSearchParams);
3569        update(defaultSearchParams);
3570      });
3571    }
3572    if (mode === 'LOAD_MORE_BUTTON') {
3573      loadMoreButton.addEventListener('click', function (event) {
3574        go({
3575          ...searchParams,
3576          page: searchParams.page + 1
3577        });
3578        return false;
3579      });
3580    }
3581    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
3582      // Do initial render
3583      go(Object.assign({}, searchParams, {
3584        page: 1
3585      }));
3586      return;
3587    }
3588    if (mode === 'NUMBERED_PAGINATION') {
3589      // Go to specified page number
3590      container.addEventListener(eventPrefix + 'go', function (event) {
3591        let {
3592          pageNumber,
3593          done
3594        } = event.detail || {};
3595        pageNumber = parseInt(pageNumber, 10);
3596        if (!pageNumber) {
3597          return;
3598        }
3599        go({
3600          ...searchParams,
3601          page: pageNumber
3602        }, done);
3603      });
3604
3605      // Page number button click
3606      el.addEventListener('click', function (event) {
3607        let clickTarget = event.target;
3608        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
3609        let pageNumber = current?.getAttribute('data-num');
3610        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
3611          return;
3612        } else {
3613          go({
3614            ...searchParams,
3615            page: parseInt(pageNumber, 10)
3616          });
3617        }
3618        event.preventDefault();
3619      });
3620
3621      // Whether to load the default page
3622      var defaultPageNumber = searchParams.page;
3623      if (triggerPagingOnInit) {
3624        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
3625          detail: {
3626            pageNumber: defaultPageNumber
3627          }
3628        }));
3629      }
3630    }
3631    window.addEventListener('popstate', function (event) {
3632      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
3633      if (!areQueryParamsEqual(newParams, searchParams)) {
3634        go(newParams, null, true);
3635        if (searchContainer) {
3636          syncSearchFormState(newParams);
3637        }
3638      }
3639    });
3640  }
3641  function replaceVariables(template, variables) {
3642    var formattedString;
3643    for (var key in variables) {
3644      var value = variables[key];
3645      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
3646      formattedString = (formattedString || template).replace(regexp, value);
3647    }
3648    return formattedString;
3649  }
3650  function isTextEditorValue(obj) {
3651    return 'raw' in obj || 'gjs' in obj;
3652  }
3653  function getTextEditorValue(obj) {
3654    if (!obj.html) {
3655      return '';
3656    }
3657    var data = obj.html;
3658    var css = (obj.raw || obj.gjs || {}).css;
3659    if (css) {
3660      data = data + '<style>' + css + '</style>';
3661    }
3662    return data;
3663  }
3664
3665  /**
3666   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
3667   * strips out raw proprties and returns only HTML if it exists.
3668   * @param {Object} resources a collection retrieved from the database
3669   * @return {Object} the newly modified object.
3670   */
3671  function recursivelyParse(resources) {
3672    forEach(resources, function (value, key) {
3673      if (!value) {
3674        return;
3675      }
3676      if (value instanceof Object) {
3677        if (isTextEditorValue(value)) {
3678          resources[key] = getTextEditorValue(value);
3679          return;
3680        } else {
3681          return recursivelyParse(value);
3682        }
3683      }
3684      try {
3685        var parsedData = JSON.parse(value);
3686        if (isTextEditorValue(parsedData)) {
3687          resources[key] = getTextEditorValue(parsedData);
3688        }
3689      } catch (e) {
3690        // do nothing if we failed to parse value as JSON
3691      }
3692    });
3693    return resources;
3694  }
3695  function forEach(collection, iteratee) {
3696    var func = Array.isArray(collection) ? arrayEach : baseFor;
3697    return func(collection, iteratee);
3698  }
3699  function baseFor(object, iteratee) {
3700    if (!object) {
3701      return;
3702    }
3703    var iterable = Object(object);
3704    var props = Object.keys(object);
3705    var length = props.length;
3706    var index = -1;
3707    while (length--) {
3708      var key = props[++index];
3709      if (iteratee(iterable[key], key, iterable) === false) {
3710        break;
3711      }
3712    }
3713    return object;
3714  }
3715  function objSet(obj, path, value) {
3716    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
3717    pathArray.reduce((acc, key, i) => {
3718      if (acc[key] === undefined) acc[key] = {};
3719      if (i === pathArray.length - 1) acc[key] = value;
3720      return acc[key];
3721    }, obj);
3722  }
3723  function arrayEach(array, iteratee) {
3724    var index = -1;
3725    var length = array.length;
3726    while (++index < length) {
3727      if (iteratee(array[index], index, array) === false) {
3728        break;
3729      }
3730    }
3731    return array;
3732  }
3733  function selectPageRangeMode(e) {
3734    pageRange = e.matches ? mobilePageRange : desktopPageRange;
3735    renderPaginationList();
3736  }
3737  paginationMql.addEventListener('change', selectPageRangeMode);
3738})('section-b77708cd-fdfc-4613-9af8-1194d5b50ae8', JSON.parse("{\"pageSize\":\"6\",\"resource\":\"posts\",\"pageRange\":1,\"variables\":{\"limit\":6,\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"d2a359c0-d879-4840-938b-f0bb8351cc6c\",\"categoryId\":\"{{pageElement.categoryId}}\",\"order\":\"createdAt\",\"categoryIds\":[\"cc21cbea-bcdc-48cf-b18a-a2d8e6ee7bc3\"]},\"hidePaginationOnFirstPage\":true,\"companyId\":\"d2a359c0-d879-4840-938b-f0bb8351cc6c\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":true,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3739} catch(e) {
3740console.log(e);
3741}
3742                try {
3743(function init(sectionDomId) {}
3743)('section-b77708cd-fdfc-4613-9af8-1194d5b50ae8', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"companyId\":\"d2a359c0-d879-4840-938b-f0bb8351cc6c\",\"usePageResource\":false,\"sectionIndex\":2,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3744} catch(e) {
3745console.log(e);
3746}
3747                try {
3748(function init(sectionDomId) {
3749  var $contactForm = $('#' + sectionDomId + ' .newsletter-signup__form');
3750  $contactForm.find('.contact-form__reset').click(function (e) {
3751    e.preventDefault();
3752    $(this).closest('form').removeClass('success').trigger("reset");
3753  });
3754  $contactForm.find('input[name="name"]').on("keyup", function () {
3755    if (this.value.replaceAll(/\d/g, "").trim() === "") {
3756      this.setCustomValidity("Please enter your name.");
3757    } else {
3758      this.setCustomValidity("");
3759    }
3760  });
3761  const form = $("#" + sectionDomId).find("form");
3762  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
3763  form.on("reset", function () {
3764    redirectPage(redirectLink);
3765  });
3766  function redirectPage(link) {
3767    if (link.length) {
3768      const rawHref = link.attr('href');
3769      link.attr('href', setHttp(rawHref));
3770      link[0].click();
3771    }
3772  }
3773  function setHttp(link) {
3774    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
3775      link = 'http://' + link;
3776    }
3777    return link;
3778  }
3779})('section-c49e3a85-d2a3-4eeb-a16e-f65587d5fe99', 'undefined');
3780} catch(e) {
3781console.log(e);
3782}
3783
3784            var { body } = document;
3785            var globalNav = body.querySelector(':scope > nav');
3786            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
3787
3788            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
3789                modalCloseBtn.addEventListener('click', function() {
3790                window.lpUI.hideClosestModal(modalCloseBtn);
3791              });
3792            });
3793
3794            window.addEventListener('click', function() {
3795                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
3796                    sharedPopup.style.display = 'none' ;
3797                });
3798            });
3799
3800            /* Misc Partials / Addons */
3801            function initWOW() {
3802                if (wow) {
3803                    wow.init();
3804                    wow.scrollHandler();
3805                    setTimeout(function () {
3806                        const wowHideStyle = document.getElementById('wow-hide-elements');
3807                        if(wowHideStyle) {
3808                            wowHideStyle.disabled = true;
3809                        }
3810                    }, 1);
3811                }
3812            }
3813
3814            const wowHideElements =  document.getElementById('wow-hide-elements');
3815            if (wowHideElements) {
3816               wowHideElements.disabled = false;
3817            }
3818
3819                initWOW();
3820
3821            /* Generic Navbar Handling */
3822            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
3823                hamburgerComponent.addEventListener('click', function() {
3824                window.lpUI.sideMenuToggle();
3825              });
3826            });
3827            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
3828                toggleEl.addEventListener('click', function() {
3829                window.lpUI.sideMenuToggle();
3830              });
3831            });
3832
3833            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
3834                linkEl.addEventListener('click', function(e) {
3835                  e.preventDefault();
3836                  e.stopPropagation();
3837                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
3838                  if (subNav && subNav.classList.contains('visible')){
3839                    subNav.classList.remove('visible');
3840                  } else {
3841                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
3842                      globalSubNav.classList.remove('visible');
3843                    });
3844                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
3845                        sideMenuSubNav.classList.remove('visible');
3846                    });
3847                    subNav?.classList.add('visible');
3848                  }
3849                });
3850            });
3851            window.addEventListener('click', function() {
3852                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
3853                    subNavEl.classList.remove('visible');
3854                });
3855            });
3856
3857        }
3858
3859        document.addEventListener('DOMContentLoaded', lpGlobalInit);
3860
3861    </script>
3861
3862
3863    
3863<script type="module">
3864    function selectorExists(selector) {
3865        return document.querySelector(selector) !== null;
3866    }
3867
3868    // Function to initialize the third-party library
3869    function initParoller(selector = '.my-paroller') {
3870        var $parollerElements = $(selector);
3871        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
3872            $parollerElements.paroller();
3873        }
3874    }
3875
3876    const parollerSelector = '.my-paroller';
3877
3878    if (selectorExists(parollerSelector)) {
3879        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
3880            initParoller(parollerSelector);
3881            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
3882        });
3883    }
3884    </script>
3884
3885
3886            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3886-3887
3886
3887            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3887GTM-PSHL83P
vendor: 107 bytes, lines 3887-3889
3887"
3888            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3889            
3889<!-- End Google Tag Manager -->
3890            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3890-3891
3890
3891            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3891GTM-NRB4D5T
vendor: 107 bytes, lines 3891-3893
3891"
3892            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3893            
3893<!-- End Google Tag Manager -->
3894            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3894-3895
3894
3895            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3895GTM-T9SFQGHZ
vendor: 107 bytes, lines 3895-3897
3895"
3896            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3897            
3897<!-- End Google Tag Manager -->
3898        <!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 3898-3899
3898
3899<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3899GTM-N69GP49
vendor: 85 bytes, lines 3899-3900
3899"
3900height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3901<!-- End Google Tag Manager (noscript) -->
3902
3903
3904<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 3904-3905
3904
3905<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3905GTM-KBFVRKS
vendor: 85 bytes, lines 3905-3906
3905"
3906height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3907<!-- End Google Tag Manager (noscript) -->
3908
3909
3910            
3910<script
3911                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
3912                data-website-id="2b9f3b9c-8d13-4525-81b1-0e846aa51be2"
3913                
3914                defer></script>
vendor: 1 bytes, line 3914
3914
3915<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:'a450eca8f84523d3',t:'MTc5MTA4MjcwMg=='};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>
3915<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
3915
3916</body>
3917</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.