PageSourceSearch

https://joshnelsonrealty.com/blog

html joshnelsonrealty.com collected 2026-10-07 05:23:58 UTC 337,571 bytes, 3,477 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>Real Estate & Community Blog | Josh Nelson, MI Real Estate</title>
10        <meta property="og:title" content="Real Estate &amp; Community Blog | Josh Nelson, MI Real Estate">
11        <meta name="twitter:title" content="Real Estate &amp; Community Blog | Josh Nelson, MI Real Estate">
12        <meta name="description" content="Welcome to Josh Nelson&#x27;s Real Estate &amp; Community Blog! Discover exciting updates, expert tips &amp; local insights on Michigan real estate. Stay informed with us!">
13        <meta property="og:description" content="Welcome to Josh Nelson&#x27;s Real Estate &amp; Community Blog! Discover exciting updates, expert tips &amp; local insights on Michigan real estate. Stay informed with us!">
14        <meta name="twitter:description" content="Welcome to Josh Nelson&#x27;s Real Estate &amp; Community Blog! Discover exciting updates, expert tips &amp; local insights on Michigan real estate. Stay informed with us!">
15        <meta property="og:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1920/https://media-production.lp-cdn.com/media/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c">
16        <meta name="twitter:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1920/https://media-production.lp-cdn.com/media/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c">
17        <meta property="og:url" content="https://joshnelsonrealty.com/blog">
18        <link rel="canonical" href="https://joshnelsonrealty.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    <style>@font-face {font-family: 'MercuryDisplayRoman';src: url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/MercuryDisplayRoman/MercuryDisplay-Roman.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/MercuryDisplayRoman/MercuryDisplay-Roman.woff') format('woff');font-weight: 400;font-style: normal;}</style><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open%20Sans:300,400,500,600,700,800,300i,400i,500i,600i,700i,800i">
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:MercuryDisplayRoman,serif;--global-primary-font-family-short:MercuryDisplayRoman;--global-secondary-font-family:'Open Sans',sans-serif;--global-secondary-font-family-short:Open Sans;--global-body-padding:0px;--global-background-color:#000;--global-body-font-size:14px;--global-h1-font-size:60px;--global-h2-font-size:48px;--global-h3-font-size:26px;--global-h4-font-size:13px;--global-h5-font-size:13px;--global-h6-font-size:13px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#000;font-family:'Open Sans',sans-serif;font-size:14px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:MercuryDisplayRoman,serif;}h1{font-size:60px;}h2{font-size:48px;}h3{font-size:26px;}h4{font-size:13px;}h5{font-size:13px;}h6{font-size:13px;}</style>
30        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/influencer/index.css" />
31    <style id="website-css">@font-face{font-family:"CompassSans";src:url('d1hqn9onx2xuha.cloudfront.net/fonts/compass/CompassSans/CompassSans-Regular.eot?#iefix') format('embedded-opentype'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Regular.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Regular.woff') format('woff'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Regular.ttf') format('truetype');font-weight:400;font-style:normal;}@font-face{font-family:"CompassSans";src:url('d1hqn9onx2xuha.cloudfront.net/fonts/compass/CompassSans/CompassSans-Bold.eot?#iefix') format('embedded-opentype'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Bold.woff2') format('woff2'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Bold.woff') format('woff'),url('https://s3-us-west-2.amazonaws.com/static-lp/fonts/compass/CompassSans/CompassSans-Bold.ttf') format('truetype');font-weight:700;font-style:normal;}@font-face{font-family:'Bebas Kai';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/BebasKai-Regular.woff') format('woff');}#modal-global-contact-us.modal.visible div.modal-content div.contact-popup{padding:0;}span.lp-i--podcast:before{-webkit-mask-image:url("https://media-production.lp-cdn.com/media/03431732-84b9-45e3-83a9-d6be7f1e6e2f");-webkit-mask-image:url("https://media-production.lp-cdn.com/media/11119145-5fdb-4fe2-93e1-3631735ecf81");mask-image:url("https://media-production.lp-cdn.com/media/11119145-5fdb-4fe2-93e1-3631735ecf81");}:root{--primary:#002349;--secondary:#E0E0E0;--accent:#C4A965;--dark:#363636;}div#global-mobile-contact .connect-btn{background-color:var(--primary)!important;color:#FFF!important;}div#global-mobile-contact .lp-h3{color:var(--primary)!important;}div#global-mobile-contact .lp-btn{background-color:var(--primary)!important;border-color:var(--primary)!important;}div#global-mobile-contact .lp-btn:hover{background-color:transparent!important;color:var(--primary)!important;}div#modal-global-contact-us .contact-popup__info a{-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:3px;-webkit-transition:.3s all;transition:.3s all;}div#modal-global-contact-us .contact-popup__info a:before,div#modal-global-contact-us .contact-popup__info a:after{display:none!important;}div#modal-global-contact-us div.contact-popup__info a{position:relative!important;}div#modal-global-contact-us div.contact-popup__info a:before,div#modal-global-contact-us div.contact-popup__info a:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"";height:1px;position:absolute!important;bottom:0;left:0;}div#modal-global-contact-us div.contact-popup__info a:before{width:100%!important;background-color:var(--dark)!important;}div#modal-global-contact-us div.contact-popup__info a:after{width:0%!important;background-color:var(--accent)!important;}div#modal-global-contact-us div.contact-popup__info a:hover{color:var(--accent);}div#modal-global-contact-us div.contact-popup__info a:hover:after{width:100%!important;}div#modal-global-contact-us .contact-popup__title{color:var(--primary);}div#modal-global-contact-us h3{color:var(--primary);}div#modal-global-contact-us .contact-popup__close:before,div#modal-global-contact-us .contact-popup__close:after{background-color:var(--primary);}nav#global-navbar .navigation__link{font-size:15px!important;}nav#global-navbar .sub-nav .nav-link{font-size:15px!important;}nav#global-navbar .header__container{padding-top:35px;padding-bottom:35px;}nav#global-navbar header.header .navigation__item.sub-nav-container .sub-nav{background-color:#FFF;}nav#global-navbar header.header .navigation__item.sub-nav-container .sub-nav ul li .nav-link{color:var(--dark)!important;}nav#global-navbar header.header .navigation__item.sub-nav-container .sub-nav ul li .nav-link:hover{background-color:var(--primary);color:#FFF!important;}nav#global-navbar header.header .navigation__link:before{background-color:#FFFFFF40!important;}nav#global-navbar header.header .navigation__link:after{background-color:#FFF!important;}nav#global-navbar header.header div.header__container{border-bottom:2px solid rgba(255, 255, 255, 1);}nav#global-navbar header.header.scroll{background-color:#FFF!important;box-shadow:0 4px 30px rgba(0, 0, 0, 0.1);}nav#global-navbar header.header.scroll button.hamburger:before,nav#global-navbar header.header.scroll button.hamburger:after{border-color:var(--dark);}nav#global-navbar header.header.scroll div.header__container{border-bottom:2px solid transparent;}nav#global-navbar .navigation__item.sub-nav-container .sub-nav{width:190px;}nav#global-navbar li.navigation__item{margin-left:15px;}nav#global-navbar a.navigation__link{position:relative!important;font-weight:400;}nav#global-navbar a.navigation__link:before,nav#global-navbar a.navigation__link:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"";height:1px;position:absolute!important;bottom:0;left:0;}nav#global-navbar a.navigation__link:before{width:100%!important;background-color:#000!important;}nav#global-navbar a.navigation__link:after{width:0%!important;background-color:#FFF!important;}nav#global-navbar a.navigation__link:hover:after{width:100%!important;}nav#global-navbar header.scroll a.navigation__link:hover{color:var(--accent)!important;}nav#global-navbar header.scroll a.navigation__link:before{background-color:#36363660!important;}nav#global-navbar header.scroll a.navigation__link:hover:after{background-color:var(--accent)!important;}nav#global-navbar .container{max-width:1300px;}@media (min-width: 376px){nav#global-navbar .logo img{max-width:100%;max-height:100%;height:45px;image-rendering:auto;image-rendering:crisp-edges;}}footer#global-footer a:not(.socials__item){-webkit-text-decoration:none;text-decoration:none;position:relative!important;line-height:1.7;color:var(--dark)!important;}footer#global-footer a:not(.socials__item):before,footer#global-footer a:not(.socials__item):after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"";height:1px;position:absolute!important;bottom:0;left:0;}footer#global-footer a:not(.socials__item):hover{color:var(--accent)!important;}footer#global-footer a:not(.socials__item):before{width:100%!important;background-color:#ddd!important;}footer#global-footer a:not(.socials__item):after{width:0%!important;background-color:var(--accent)!important;}footer#global-footer a:not(.socials__item):hover:after{width:100%!important;}
31footer#global-footer .footer__copyright .link{-webkit-text-decoration:none;text-decoration:none;}footer#global-footer .footer__menu-item{text-transform:unset;}footer#global-footer .footer__copyright .img-wrap img{-webkit-filter:invert(100%)!important;filter:invert(100%)!important;}footer#global-footer .footer__disclaimer{opacity:1!important;}footer#global-footer .footer__disclaimer div:first-child{display:none!important;}</style>
32    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
33        <style id="page-css">
34            #section-42227948-5841-4e0e-a993-4f76d3586e7b{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:transparent;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:0;--bgColor_darkenDir:1;background-color:transparent;--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/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-42227948-5841-4e0e-a993-4f76d3586e7b .simple-opening{text-align:center;padding-top:275px;}#section-42227948-5841-4e0e-a993-4f76d3586e7b .simple-opening__content{max-width:815px;margin:0 auto;}#section-42227948-5841-4e0e-a993-4f76d3586e7b .simple-opening h1{margin-bottom:48px;}#section-42227948-5841-4e0e-a993-4f76d3586e7b .simple-opening__socials{margin-top:22px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding-bottom:48px;}@media (min-width: 960px) and (orientation: landscape){#section-42227948-5841-4e0e-a993-4f76d3586e7b{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/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c');}}@media (min-width: 1280px) and (orientation: landscape){#section-42227948-5841-4e0e-a993-4f76d3586e7b{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/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c');}}@media (min-width: 1920px) and (orientation: landscape){#section-42227948-5841-4e0e-a993-4f76d3586e7b{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/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c');}}@media (min-width: 2560px) and (orientation: landscape){#section-42227948-5841-4e0e-a993-4f76d3586e7b{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/d4ae2c61-4f2e-43ec-b57e-1fd858f66b0c');}}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b{color:#363636;--fontColor:#363636;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:21%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FFFFFF;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#FFFFFF;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .lp-title-group{margin-bottom:0px!important;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .lp-title-group .lp-h2{margin-bottom:0px;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .boxed-text__description{margin-bottom:30px;}}.redesign #section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .boxed-text__heading:not(h2){text-rendering:optimizeLegibility;white-space:normal;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .lp-title-group .lp-h2{margin-top:0;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container .lp-btn{margin-right:20px;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b .redesign p:not(:where(.boxed-text__heading)){margin-bottom:1.666rem;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b h1{color:#002349;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b h2{color:#002349;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b h3{color:#002349;}#section-f42f1a44-b353-4560-ac1a-1df3ec5b642b p{color:#363636;}#section-5bb14518-9a5a-4131-b654-087e692a51d7{color:#363636;--fontColor:#363636;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:21%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FFFFFF;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#FFFFFF;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list{padding-top:96px;padding-bottom:96px;}@media(max-width: 768px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list{padding-top:60px;padding-bottom:60px;}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list h3{margin:0;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;-ms-grid-rows:1fr;grid-template-rows:1fr;gap:60px 60px;grid-template-areas:". .";}@media(max-width: 768px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container{-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:".";gap:36px 36px;}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .image-holder{padding-bottom:65%;position:relative;cursor:pointer;overflow:hidden;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .image-holder .image-item{position:absolute;background:no-repeat center;-webkit-background-size:cover;background-size:cover;left:0;right:0;top:0;bottom:0;-webkit-transition:all .3s;transition:all .3s;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .image-holder .category{position:absolute;right:0;bottom:0;background-color:rgba(255,255,255, 0.7);color:#000;text-transform:uppercase;font-weight:700;padding:0px 8px;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .image-holder .overlay{opacity:0;position:absolute;right:0;left:0;bottom:0;top:0;background-color:rgba(0, 0, 0, 0.6);-webkit-transition:all .3s;transition:all .3s;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .image-holder .button-wrapper{opacity:0;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);-webkit-transition:all .3s;transition:all .3s;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .post-details .title{margin-top:35px;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .post-details .author-date{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:15px;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .post-details .author-date .date{padding-right:8px;margin-right:8px;position:relative;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .post-details .author-date .date:after{position:absolute;content:'';right:0;height:9px;width:1px;background-color:currentColor;top:50%;-webkit-transform:translate(0, -50%);-moz-transform:translate(0, -50%);-ms-transform:translate(0, -50%);transform:translate(0, -50%);}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item .post-details .description{margin-top:10px;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item:hover .image-holder .image-item{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item:hover .image-holder .overlay,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container .post-item:hover .image-holder .button-wrapper{opacity:1;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container.hide-date .post-item .post-details .author-date .date{display:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container.hide-author .post-item .post-details .author-date .date:after{display:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .posts-container.hide-author .post-item .post-details .author-date .author{display:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .pagination-container{margin-top:120px;}@media(max-width: 768px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .blog-list .pagination-container{margin-top:70px;}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs{box-sizing:border-box;font-family:inherit;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages ul{float:none;margin: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;font-weight:400;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li{float:none;margin:0 9px;border:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li a{position:relative;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;min-width:40px;height:40px;background-color:hsla(0, 0%, 100%, 0.08);border-radius:40px;color:#fff;line-height:24px;font-weight:400;text-align:center;vertical-align:middle;padding:5px;border:solid 1px transparent;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li a:hover{background-color:hsla(0, 0%, 100%, 0.3);color:#fff;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:first-of-type a,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:last-of-type a{display:block;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.active a{height:40px;line-height:24px;background-color:hsla(0, 0%, 100%, 0.17);border-color:#fff;color:#fff;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.disabled{cursor:auto;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.disabled a{pointer-events:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next{border:none;border-radius:0;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev a,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next a{min-width:24px;height:24px;border-radius:0;font-size:0;background-color:transparent;color:inherit;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev a:before,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next a:before{content:"";position:absolute;left:50%;top:50%;display:block;width:10px;height:10px;border-bottom:2px solid currentColor;border-left:2px solid currentColor;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev a:hover,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next a:hover{background-color:transparent;border-color:transparent;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev.disabled a,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next.disabled a{text-indent:-9999px;pointer-events:none;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev.disabled a:before,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next.disabled a:before{border-color:#757575;}@media (max-width: 767px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev.disabled a:after,#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li.paginationjs-next.disabled a:after{background:#757575;}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:first-child a: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);}@media (max-width: 767px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:first-child a:before{left:3px;-webkit-transform:translate(0, -50%) rotate(45deg);-moz-transform:translate(0, -50%) rotate(45deg);-ms-transform:translate(0, -50%) rotate(45deg);transform:translate(0, -50%) rotate(45deg);}}@media (max-width: 767px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:first-child a:after{left:13px;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:last-child a:before{-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);}@media (max-width: 767px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:last-child a:before{right:0;-webkit-transform:translate(0, -50%) rotate(225deg);-moz-transform:translate(0, -50%) rotate(225deg);-ms-transform:translate(0, -50%) rotate(225deg);transform:translate(0, -50%) rotate(225deg);}}@media (max-width: 767px){#section-5bb14518-9a5a-4131-b654-087e692a51d7 .pagination-container .paginationjs .paginationjs-pages li:last-child a:after{right:4px;}}#section-5bb14518-9a5a-4131-b654-087e692a51d7 h1{color:#002349;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 h2{color:#002349;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 h3{color:#002349;}#section-5bb14518-9a5a-4131-b654-087e692a51d7 p{color:#363636;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c{color:#FFFFFF;--fontColor:#FFFFFF;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#002349;--bgColor_H:211;--bgColor_S:100%;--bgColor_L:14%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#002349;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .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;
34-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup{min-height:80vh;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup .lp-container-custom{padding:0 25px;}}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form{margin:0;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form.success .newsletter-signup__form-container{display:none;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .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-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__inputs-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-container{position:relative;z-index:1;}@media (max-width: 768px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-container .lp-h2{margin-bottom:32px;}}@media (max-width: 768px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-container .lp-text--subtitle{margin-bottom:32px;}}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:16px;}@media (max-width: 768px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:0px;margin-top:32px;}}@media (min-width: 769px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-item.lp-input{padding-top:0;padding-bottom:0;width:250px;}}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-item.lp-btn{text-transform:uppercase;font-weight:700;}@media (min-width: 769px){#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup__form-item.lp-btn{width:200px;}}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .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-d4307d3d-7cb0-461b-9790-4cbaf461428c .newsletter-signup .success-block.hide{display:none;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .lp-h-pot{max-width:1px;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c .lp-title-group{max-width:unset;padding:0 20px;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c input:-webkit-autofill,#section-d4307d3d-7cb0-461b-9790-4cbaf461428c input:-webkit-autofill:hover,#section-d4307d3d-7cb0-461b-9790-4cbaf461428c input:-webkit-autofill:focus,#section-d4307d3d-7cb0-461b-9790-4cbaf461428c 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-d4307d3d-7cb0-461b-9790-4cbaf461428c .lp-disclaimer{max-width:730px;margin:20px auto 0 auto;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c h1{color:#FFFFFF;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c h2{color:#FFFFFF;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c h3{color:#FFFFFF;}#section-d4307d3d-7cb0-461b-9790-4cbaf461428c p{color:#FFFFFF;}#section-800648be-b1a1-4e21-a1a6-e04b85375975{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.4));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/99777ba1-3bf0-4531-824e-451eee0f7cd6');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-800648be-b1a1-4e21-a1a6-e04b85375975{background-attachment:fixed;-webkit-background-position:center;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;}@media only screen and (max-width: 768px){#section-800648be-b1a1-4e21-a1a6-e04b85375975{background-attachment:unset;}}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us{padding:160px 0 100px;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us h1,#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us h2,#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us h3,#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us p{white-space:pre-wrap;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us__content{position:relative;max-width:490px;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us__content h2,#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us__content p{margin:0 0 28px;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us__content:before{content:'';position:absolute;left:50%;top:-100px;height:60px;width:2px;background-image:linear-gradient(to bottom, #fff 70%, transparent 0 );-webkit-background-size:100% 15px;background-size:100% 15px;}#section-800648be-b1a1-4e21-a1a6-e04b85375975 .work-with-us .btn{-webkit-text-decoration:none;text-decoration:none;}@media (min-width: 960px) and (orientation: landscape){#section-800648be-b1a1-4e21-a1a6-e04b85375975{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/99777ba1-3bf0-4531-824e-451eee0f7cd6');}}@media (min-width: 1280px) and (orientation: landscape){#section-800648be-b1a1-4e21-a1a6-e04b85375975{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/99777ba1-3bf0-4531-824e-451eee0f7cd6');}}@media (min-width: 1920px) and (orientation: landscape){#section-800648be-b1a1-4e21-a1a6-e04b85375975{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/99777ba1-3bf0-4531-824e-451eee0f7cd6');}}@media (min-width: 2560px) and (orientation: landscape){#section-800648be-b1a1-4e21-a1a6-e04b85375975{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/99777ba1-3bf0-4531-824e-451eee0f7cd6');}}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed{padding:80px 0;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .title{margin:0 20px 0 0;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .instagram-link .instagram-name{display:inline;margin:0;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .title+.instagram-link{margin-top:5px;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-wrapper{margin-bottom:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-right{margin-left:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .follow-button{margin:20px 0 0 0;display:block;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .nav-button{margin-top:20px;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;width:42px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;transition-property:color,background-color,border-color;transition-duration:.3s;transition-timing-function:ease;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-nav-prev{margin-left:30px;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-nav-next{margin-left:10px;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .hidden-control{display:none;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi{position:relative;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:calc(100% / 3);padding:10px;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single:first-child,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi:first-child{margin-left:auto;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single:last-child,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi:last-child{margin-right:auto;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single.type2,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi.type2{width:calc(100% / 5 * 2);}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single.type3,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi.type3{width:calc(100% / 2);}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single.type4,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi.type4{width:calc(100% / 2);}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single.type5,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-container{padding:0;width:100%;}}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item__info{position:absolute;top:0;left:0;bottom:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10%;overflow:hidden;color:#fff;text-align:center;background-color:rgba(0, 0, 0, 0.8);opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;opacity:1;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .video-icon::before{content:'';display:block;width:0px;height:0px;border-style:solid;position:relative;left:1px;border-width:7.5px 0px 7.5px 11px;border-color:transparent transparent transparent #292826;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item:hover .video-icon{opacity:0;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single .ig-feed-item__info{padding:15%;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi-content{padding:10px;position:absolute;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;overflow:hidden;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .slide-multi-content .ig-feed-item:nth-child(n + 3){-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .bottom-nav-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:20px 10px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-right,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .title,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .instagram-link{margin-right:0;text-align:center;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-nav-prev,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .top-nav-next{display:none;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .ig-feed{display:none;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3 .has-data .ig-feed{display:block;}#section-aab683fa-2e6b-49e8-9307-d1c895d542e3.has-data .ig-feed,#section-aab683fa-2e6b-49e8-9307-d1c895d542e3#section-temp .ig-feed{display:block;}#modal-global-contact-us>button.close{display:none;}#modal-global-contact-us.visible .contact-popup__container{padding:60px 140px;}@media (max-width: 992px){#modal-global-contact-us.visible .contact-popup__container{padding:50px;}}@media (max-width: 767px){#modal-global-contact-us.visible .contact-popup__container{padding:75px 22px 60px;}}#modal-global-contact-us .contact-popup .hide{display:none;}#modal-global-contact-us .contact-popup__container{background-color:#fff;position:relative;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow-y:auto;}@media (max-width: 767px){#modal-global-contact-us .contact-popup__container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#modal-global-contact-us .contact-popup__close{width:30px;height:30px;position:absolute;right:40px;top:40px;background-color:transparent;border:none;padding:0;cursor:pointer;}@media (max-width: 767px){#modal-global-contact-us .contact-popup__close{right:10px;top:10px;}}#modal-global-contact-us .contact-popup__close:before,#modal-global-contact-us .contact-popup__close:after{content:'';display:block;position:absolute;width:18px;height:2px;left:50%;top:50%;background-color:#000000;}#modal-global-contact-us .contact-popup__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-popup__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-popup__col{width:50%;}@media (max-width: 767px){#modal-global-contact-us .contact-popup__col{width:100%;}}#modal-global-contact-us .contact-popup__col:first-of-type{padding-right:55px;}@media (max-width: 992px){#modal-global-contact-us .contact-popup__col:first-of-type{padding-right:15px;}}@media (max-width: 767px){#modal-global-contact-us .contact-popup__col:first-of-type{padding:0;}}#modal-global-contact-us .contact-popup__col:last-of-type{padding-left:55px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (max-width: 992px){#modal-global-contact-us .contact-popup__col:last-of-type{padding-left:15px;}}@media (max-width: 767px){#modal-global-contact-us .contact-popup__col:last-of-type{padding:0;}}#modal-global-contact-us .contact-popup__col p{margin-bottom:25px;}#modal-global-contact-us .contact-popup__title{margin:0 0 20px 0;font-size:70px;font-weight:400;line-height:0.9;}@media (max-width: 992px){#modal-global-contact-us .contact-popup__title{font-size:64px;line-height:1;}}@media (max-width: 767px){#modal-global-contact-us .contact-popup__title{font-size:46px;}}#modal-global-contact-us .contact-popup__input{display:block;width:100%;margin-bottom:13px;}#modal-global-contact-us .contact-popup__input::-webkit-input-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input::-moz-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input:-ms-input-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input:-moz-placeholder{color:#000000;}#modal-global-contact-us .contact-popup textarea.contact-popup__input{height:100px;resize:none;}#modal-global-contact-us .contact-popup__submit{display:block;width:100%;}#modal-global-contact-us .contact-popup__info{padding-top:85px;}@media (max-width: 767px){#modal-global-contact-us .contact-popup__info{padding-top:40px;}}#modal-global-contact-us .contact-popup__info div{margin:0;}
34#modal-global-contact-us .contact-popup__info div a{display:block;}#modal-global-contact-us .contact-popup__info div a:hover{-webkit-text-decoration:underline;text-decoration:underline;}#modal-global-contact-us .contact-popup__subtitle{margin:0 0 15px 0;font-weight:400;}#modal-global-contact-us .contact-popup__socials.socials{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;margin-top:auto;}@media (max-width: 768px){#modal-global-contact-us .contact-popup__socials.socials{margin-top:70px;}}@media (max-width: 580px){#modal-global-contact-us .contact-popup__socials.socials{margin-top:70px;}}#modal-global-contact-us .contact-popup__socials.socials>li{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;margin:10px 0 10px 30px;}@media (max-width: 767px){#modal-global-contact-us .contact-popup__socials.socials>li{margin:10px 20px;}}@media (max-width: 580px){#modal-global-contact-us .contact-popup__socials.socials>li{margin:10px;}}#modal-global-contact-us .contact-popup__socials.socials .socials__item{color:#999999;-webkit-transition:0.3s all ease;transition:0.3s all ease;background-color:transparent;border-color:transparent;position:relative;}#modal-global-contact-us .contact-popup__socials.socials .socials__item:hover{color:#000000;background-color:transparent;border-color:transparent;}#modal-global-contact-us .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;position:absolute;}#modal-global-contact-us .contact-popup__input::-webkit-input-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input::-moz-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input:-ms-input-placeholder{color:#000000;}#modal-global-contact-us .contact-popup__input::placeholder{color:#000000;}nav.theme-light{color:#fff;}nav.theme-light .logo__img.dark{display:none;}nav.theme-light .logo__img.light{display:block;}nav .header{z-index:900;-webkit-transition:0.3s all ease;transition:0.3s all ease;color:#fff;position:fixed;left:0;top:0;right:0;}nav .header__container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border-bottom:2px solid rgba(151, 151, 151, 0.49);padding-top:20px;padding-bottom:20px;}nav .header__right{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;}@media (max-width: 1200px){nav .header__right{padding-left:30px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}nav .header.header-animation-off .navigation__item{visibility:visible!important;-webkit-animation-delay:0s!important;animation-delay:0s!important;-webkit-animation-name:none!important;animation-name:none!important;}nav .header.theme-light:not(.scroll){color:#fff!important;}nav .header.theme-light:not(.scroll) .logo .logo__img--light{display:block;}nav .header.theme-light:not(.scroll) .logo .logo__img--dark{display:none;}nav .header.theme-light:not(.scroll) .hamburger:before,nav .header.theme-light:not(.scroll) .hamburger:after{border-color:#fff!important;}
34nav .header.theme-dark:not(.scroll){color:#000!important;}nav .header.theme-dark:not(.scroll) .logo .logo__img--light{display:none;}nav .header.theme-dark:not(.scroll) .logo .logo__img--dark{display:block;}nav .header.theme-dark:not(.scroll) .hamburger:before,nav .header.theme-dark:not(.scroll) .hamburger:after{border-color:#000!important;}nav .header.scroll .hamburger:before,nav .header.scroll .hamburger:after{border-color:#000000;}nav .header.scroll .logo__img--light{display:none;}nav .header.scroll .logo__img--dark{display:block;}nav .header.scroll .header__container{border-bottom-color:transparent;}nav .header.scroll .sub-nav{color:white;}nav .logo{display:block;z-index:911;position:relative;}nav .logo img{max-height:50px;max-width:200px;}@media (max-width: 992px){nav .logo img{max-width:150px;}}nav .logo__wrap{text-align:center;-webkit-animation-duration:1s;animation-duration:1s;}nav .logo__img--light{display:block;}nav .logo__img--dark{display:none;}@media (max-width: 1024px){nav .navigation{display:none;}}@media (max-width: 1200px){nav .navigation{width:100%;}}nav .navigation >ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 1200px){nav .navigation >ul{-webkit-box-pack:space-around;-ms-flex-pack:space-around;-webkit-justify-content:space-around;justify-content:space-around;}}nav .navigation__item{padding:10px;margin-left:25px;}nav .navigation__item.sub-nav-container{position:relative;cursor:pointer;}nav .navigation__item.sub-nav-container:hover .navigation__link:after{width:100%;}nav .navigation__item.sub-nav-container:hover .sub-nav{display:block;}nav .navigation__item.sub-nav-container:hover .width-maker{display:block;}nav .navigation__item.sub-nav-container .width-maker{display:none;cursor:pointer;position:absolute;left:0;right:0;height:41px;}nav .navigation__item.sub-nav-container .sub-nav{display:none;position:absolute;bottom:-30px;width:175px;background-color:black;-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);}nav .navigation__item.sub-nav-container .sub-nav ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}nav .navigation__item.sub-nav-container .sub-nav ul li .nav-link{display:block;padding:12px 23px;}nav .navigation__item.sub-nav-container .sub-nav ul li .nav-link:hover{background-color:#262222;}@media (max-width: 992px){nav .navigation__item{padding:10px 15px;font-size:16px;}}@media (max-width: 1200px){nav .navigation__item{margin-left:0;}}nav .navigation__item.active .navigation__link{font-weight:700;}nav .navigation__link{color:inherit;display:block;position:relative;font-size:13px;line-height:1.2;background-color:transparent;border:none;cursor:pointer;transition-property:all;white-space:nowrap;}nav .navigation__link:after{position:absolute;content:'';display:block;width:0;height:1px;bottom:-2px;left:0;-webkit-transition:0.3s all ease;transition:0.3s all ease;background-color:#ffffff;}nav .navigation__link:hover:after{width:100%;}nav .hamburger{border:none;background-color:transparent;cursor:pointer;outline:none;z-index:915;-webkit-transition:0.3s all ease;transition:0.3s all ease;position:relative;padding:0;margin-left:25px;width:21px;height:21px;}nav .hamburger:before,nav .hamburger:after{position:absolute;content:'';height:3px;left:5px;right:5px;border-left:3px solid #ffffff;border-right:3px solid #ffffff;}nav .hamburger:before{top:5px;}nav .hamburger:after{bottom:5px;}body>div.sidemenu{background-color:rgba(0, 35, 73, 1);color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(0, 35, 73, 1);--bgColor_H:211;--bgColor_S:100%;--bgColor_L:14%;--bgColor_A:1;--bgColor_darkenDir:1;}body>div.sidemenu{position:fixed;z-index:950;left:50%;top:0;height:0;width:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-transition:0.3s all ease;transition:0.3s all ease;min-height:auto;color:var(--fontColor, #ffffff);background-color:var(--bgColor, rgba(0,0,0,0.94));--socialColor:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), .6);}body>div.sidemenu.visible,body>div.sidemenu.in-pb{top:0;bottom:0;left:0;right:0;height:100vh;width:100vw;}body>div.sidemenu.in-pb{-webkit-transition:none;transition:none;}body>div.sidemenu body{color:var(--fontColor, #ffffff);background-color:var(--bgColor, rgba(0,0,0,0.94));--socialColor:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), .6);}body>div.sidemenu .sidemenu__header{padding:45px 0 35px;border-bottom:2px solid rgba(255, 255, 255, 0.24);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}body>div.sidemenu .sidemenu__close{width:20px;height:20px;position:relative;background-color:transparent;border:none;padding:0;cursor:pointer;}@media (max-width: 767px){body>div.sidemenu .sidemenu__close{margin-right:20px;}}body>div.sidemenu .sidemenu__close:before,body>div.sidemenu .sidemenu__close:after{content:'';display:block;position:absolute;width:18px;height:2px;left:50%;top:50%;background-color:var(--fontColor, #fff);}body>div.sidemenu .sidemenu__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidemenu__close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}body>div.sidemenu .sidemenu__nav{margin:0;padding:50px 0;overflow-y:scroll;}body>div.sidemenu .sidemenu__nav::-webkit-scrollbar{width:6px;}body>div.sidemenu .sidemenu__nav::-webkit-scrollbar-track{background-color:rgba(32, 32, 32, 0.05);}body>div.sidemenu .sidemenu__nav::-webkit-scrollbar-button{background-color:transparent;height:0;}body>div.sidemenu .sidemenu__nav::-webkit-scrollbar-thumb{background-color:#535353;border-radius:3px;}@media (max-width: 767px){body>div.sidemenu .sidemenu__nav{padding:30px 0;}}body>div.sidemenu .sidemenu__nav ul{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;}@media (max-width: 767px){body>div.sidemenu .sidemenu__nav ul{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.sidemenu .sidemenu__item{padding:29px 0;display:block;width:50%;}@media (max-width: 767px){body>div.sidemenu .sidemenu__item{padding:13px 0;width:100%;}}body>div.sidemenu .sidemenu__link,body>div.sidemenu .sidemenu__grouped .title,body>div.sidemenu .sidemenu__grouped .title:after{color:var(--fontColor, #ffffff);font-size:36px;font-family:var(--global-primary-font-family);display:inline;padding:0;border:none;background-color:transparent;line-height:1.6;cursor:pointer;}@media (max-width: 767px){body>div.sidemenu .sidemenu__link,body>div.sidemenu .sidemenu__grouped .title,body>div.sidemenu .sidemenu__grouped .title:after{font-size:24px;}}body>div.sidemenu .sidemenu__grouped{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu .sidemenu__grouped__wrapper{position:relative;}body>div.sidemenu .sidemenu__grouped__wrapper .title{padding-right:55px;border-bottom:1px solid currentColor;}@media(max-width: 768px){body>div.sidemenu .sidemenu__grouped__wrapper .title{border-bottom:none;}}body>div.sidemenu .sidemenu__grouped__wrapper .title:after{content:'+';position:absolute;right:0;}body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav{max-height:0;overflow:hidden;opacity:0;-webkit-transition:max-height 0.2s linear;transition:max-height 0.2s linear;}body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav ul{color:var(--fontColor, white);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:28px;}@media(max-width: 768px){body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav ul{margin-left:20px;}}body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav ul li{list-style:none;margin-bottom:17px;}body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav ul li a{cursor:pointer;}body>div.sidemenu .sidemenu__grouped__wrapper .sub-nav ul li:last-of-type{margin-bottom:0;}body>div.sidemenu .sidemenu__grouped__wrapper:hover .title:after{content:'-';}body>
34div.sidemenu .sidemenu__grouped__wrapper:hover .sub-nav{margin-top:20px;max-height:120px;opacity:1;}body>div.sidemenu .sidemenu__grouped__wrapper:hover .sub-nav.three{max-height:170px;}body>div.sidemenu .sidemenu__grouped__wrapper:hover .sub-nav.four{max-height:230px;}body>div.sidemenu .sidemenu__grouped__wrapper:hover .sub-nav.five{max-height:280px;}body>div.sidemenu .sidemenu__grouped__wrapper:hover .sub-nav.more{max-height:450px;}body>div.sidemenu .sidemenu__footer{padding:40px 0 60px;border-top:2px solid rgba(255, 255, 255, 0.24);overflow:hidden;}@media (max-width: 767px){body>div.sidemenu .sidemenu__footer{padding:30px 0 50px;}}@media (max-width: 767px){body>div.sidemenu .sidemenu__footer{padding:30px 0 90px;}}body>div.sidemenu .sidemenu__socials{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;}@media (max-width: 767px){body>div.sidemenu .sidemenu__socials{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;}}body>div.sidemenu .sidemenu__socials.socials>li{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;margin:10px 0 10px 30px;}@media (max-width: 767px){body>div.sidemenu .sidemenu__socials.socials>li{margin:10px 20px;}}@media (max-width: 580px){body>div.sidemenu .sidemenu__socials.socials>li{margin:10px;}}body>div.sidemenu .sidemenu__socials.socials .socials__item{color:#999999;color:var(--socialColor, #999);-webkit-transition:0.3s all ease;transition:0.3s all ease;background-color:transparent;border-color:transparent;font-size:unset;}body>div.sidemenu .sidemenu__socials.socials .socials__item:hover{color:var(--fontColor, #ffffff);background-color:transparent;border-color:transparent;}body>div.sidemenu .sidemenu .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (max-width: 767px){body>div.sidemenu .sidemenu .container{overflow-y:auto;}}body>div.sidemenu .logo{display:block;z-index:911;position:relative;}body>div.sidemenu .logo img{max-height:50px;max-width:200px;}@media (max-width: 992px){body>div.sidemenu .logo img{max-width:150px;}}body>div.sidemenu .logo__wrap{text-align:center;-webkit-animation-duration:1s;animation-duration:1s;}body>div.sidemenu .logo__img--light{display:block;}body>div.sidemenu .logo__img--dark{display:none;}body>div.sidemenu .body-fixed{overflow:hidden;}body>div.sidemenu .overflow-sidemenu{height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:auto;}footer{background-color:rgba(255, 255, 255, 1);color:rgba(54, 54, 54, 1);--fontColor:rgba(54, 54, 54, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:21%;--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;}footer .footer{padding:90px 0;background-color:inherit;color:inherit;overflow-y:hidden;}@media (max-width: 768px){footer .footer{padding:60px 0;}}footer .footer h4{margin:0;font-weight:bold;letter-spacing:1px;}footer .footer__logo{max-height:50px;max-width:200px;margin-bottom:20px;}footer .footer__info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:10px;}@media (max-width: 768px){footer .footer__info{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}footer .footer__info-column{-webkit-flex-basis:300px;-ms-flex-preferred-size:300px;flex-basis:300px;margin-bottom:30px;}footer .footer__info-column:first-child{margin-right:80px;}@media (max-width: 1024px){footer .footer__info-column:first-child{margin-right:0;}}@media (max-width: 768px){footer .footer__info-column:first-child{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;}}footer .footer__info-column:nth-child(2n){margin-left:50px;margin-right:50px;}@media (max-width: 768px){footer .footer__info-column:nth-child(2n){margin-left:0;}}footer .footer__info-column:not(:first-child){-webkit-flex-basis:240p
34x;-ms-flex-preferred-size:240px;flex-basis:240px;}footer .footer__info-column:not(:first-child) div{color:inherit;}footer .footer__info-column h4{margin-top:10px;}@media (max-width: 768px){footer .footer__info-column h4{margin-bottom:5px;}}footer .footer__contact{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer__contact h4{margin-bottom:10px;}footer .footer__contact-column{margin-bottom:30px;}@media (max-width: 768px){footer .footer__contact-column{width:100%;}}footer .footer__contact-column:first-child{width:100%;max-width:595px;margin-right:125px;}@media (max-width: 768px){footer .footer__contact-column:first-child{margin-right:0;}}footer .footer__contact-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 540px){footer .footer__contact-form{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}footer .footer__contact .loading input{pointer-events:none;}footer .footer__contact-input{-webkit-flex:1;-ms-flex:1;flex:1;border-right-width:0;padding:0 12px;}@media (max-width: 540px){footer .footer__contact-input{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;border-right-width:1px;margin-bottom:15px;}}@media (max-width: 540px){footer .footer__contact-submit{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}footer .footer__copyright{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-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-top:2px solid #E0E0E0;padding-top:30px;margin-top:20px;}@media (max-width: 768px){footer .footer__copyright{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-top:10px;padding-top:20px;}}footer .footer__copyright a:hover{-webkit-text-decoration:underline;text-decoration:underline;}footer .footer__copyright .link{-webkit-text-decoration:underline;text-decoration:underline;}footer .footer__copyright p,footer .footer__copyright div{color:inherit;font-size:13px;line-height:1.54;margin-right:34px;}@media (max-width: 768px){footer .footer__copyright p,footer .footer__copyright div{font-size:14px;margin-top:10px;}}footer .footer__menu{margin-top:50px;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;}@media (max-width: 540px){footer .footer__menu{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer__menu{margin-top:15px;}}@media (max-width: 540px){footer .footer__menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}footer .footer__menu-item{cursor:pointer;font-size:13px;line-height:2.54;color:inherit;text-transform:capitalize;}@media (max-width: 540px){footer .footer__menu-item{margin-right:15px;margin-top:10px;}}footer .footer__menu-item:not(:first-child){margin-left:34px;}@media (max-width: 540px){footer .footer__menu-item:not(:first-child){margin-left:0;}}footer .footer__menu-item--active{font-weight:bold;}footer .footer .footer__design{font-size:18px;}footer .footer__disclaimer{margin-top:20px;opacity:0.6;}footer .footer__disclaimer>div{margin-top:20px;}footer .socials{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}footer .socials>li{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;margin:4px 10px 4px 0;}@media (max-width: 768px){footer .socials>li{margin-right:25px;}}footer .socials__item{background-color:inherit;border:1px solid #eee;border-radius:100%;color:inherit;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:36px;height:36px;font-size:14px;-webkit-transition:all 0.5s ease;transition:all 0.5s ease;}@media (hover: hover) and (pointer: fine) and (min-width: 1025px){footer .socials__item:hover{background:#eee;}}footer .thank-you-modal{position:fixed;z-index:101;left:0;right:0;top:0;bottom:0;background-color:rgba(0, 0, 0, 0.7);color:white;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;}footer .thank-you-modal h2{white-space:pre-wrap;margin-bottom:45px;}footer .thank-you-modal.closed{display:none;}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;position:absolute;}footer .logo-light{display:none;}footer.is-background-color-dark .logo-dark{display:none;}footer.is-background-color-dark .logo-light{display:inline;}footer .img-wrap{max-width:100px;width:100%;display:block;}footer .img-wrap img{width:100%;object-fit:cover;}@media(max-width: 768px){footer .img-wrap{-webkit-order:1;-ms-flex-order:1;order:1;}}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;padding-top:30px;margin-top:20px;}@media (max-width: 768px){footer .lp-footer-disclaimers{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-top:10px;padding-top:20px;}}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:#363636!important;}.hyperlink-style-1:hover{color:#C4A965!important;}.social_icons-style-1 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a:hover{border-color:#FFFFFF!important;background-color:#FFFFFF!important;color:#002349!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;}.pagination-style-1 li a{color:#002349!important;background-color:rgba(255, 255, 255, 0.08)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:#002349!important;border-color:#002349!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:#002349!important;border-color:#002349!important;}.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:#002349!important;border-color:#002349!important;}.button-style-1:hover{color:#002349!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#002349!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:#FFFFFF!important;}.social_icons-style-2 a{border-color:#002349!important;background-color:rgba(255, 255, 255, 0)!important;color:#002349!important;}.social_icons-style-2 a:hover{border-color:#002349!important;background-color:#002349!important;color:rgba(255,255,255,1)!important;}.social_icons-style-2 a i{color:inherit!important;}
36.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-2{color:#002349!important;background-color:rgba(255,255,255,1)!important;border-color:#FFFFFF!important;}.button-style-2:hover{color:#FFFFFF!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0.08)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:#002349!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 0.98)!important;}.pagination-style-2 li.active a{color:#002349!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 0.98)!important;}.button-style-3{color:#002349!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#002349!important;}.button-style-3:hover{color:#FFFFFF!important;background-color:#002349!important;border-color:#002349!important;}.button-style-4{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-4:hover{color:#002349!important;background-color:#FFFFFF!important;border-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="d1c655e7-3a6b-4818-8bf8-e4b0b6f106a0"></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        <!-- Bing Webmaster Tools Verification -->
79<script>
80        // Check if on the homepage before the body loads
81        if (window.location.pathname === '/' || window.location.pathname === '/index.html') {
82            document.write('<meta name="msvalidate.01" content="9444E455BC3D007F3F70BCA3F6F54DD2" />');
83        }
84</script>
84
85    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
86</head>
87<body>
88    <div id="google_translate_element" style="display: none"></div>
89
90        <nav id="global-navbar" data-el-id="c6df654b-56d8-483a-8f3d-5581e27f1aa6">
91            <header class="header  theme-auto">
92  <div class="container">
93    <div class="header__container">
94      <div class="logo__wrap fadeInUp">
95        <a href="/" class="logo">
96            <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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f" 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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 3456w" alt="Dark Logo" sizes="250px" class="logo__img--dark">
97            <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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c" 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 3456w" alt="Light Logo" sizes="250px" class="logo__img--light">
98        </a>
99      </div>
100      <div class="header__right">
101        <div class="navigation">
102          <ul>
103              <li class="navigation__item sub-nav-container wow fadeInUp" data-wow-delay="1.0s">
104                <a href="#" class="navigation__link">Properties</a>
105                <div class="width-maker"></div>
106                <div class="sub-nav">
107                    <ul>
108                                <li><a  href="/properties/sale" class="nav-link">Featured Properties</a></li>
109                                <li><a  href="/properties/sold" class="nav-link">Past Transactions</a></li>
110                    </ul>
111                </div>
112              </li>
113              <li class="navigation__item wow fadeInUp" data-wow-delay="1.1s">
114                <a  href="/home-search/listings" class="navigation__link">
115                  Home Search
116                </a>
117              </li>
118              <li class="navigation__item wow fadeInUp" data-wow-delay="1.2s">
119                <a  href="/home-valuation" class="navigation__link">
120                  Home Valuation
121                </a>
122              </li>
123              <li class="navigation__item wow fadeInUp" data-wow-delay="1.3s">
124                <a  href="/neighborhoods" class="navigation__link">
125                  Neighborhoods
126                </a>
127              </li>
128              <li class="navigation__item sub-nav-container wow fadeInUp" data-wow-delay="1.4s">
129                <a href="#" class="navigation__link">Contact</a>
130                <div class="width-maker"></div>
131                <div class="sub-nav">
132                    <ul>
133                                <li><a  href="tel:6166440819" class="nav-link">M: 616.644.0819</a></li>
134                                <li><a  href="tel:5177778224" class="nav-link">O: 517.777.8224</a></li>
135                                <li><a class="nav-link" data-type="CONTACT_US">Let&#x27;s Connect</a></li>
136                    </ul>
137                </div>
138              </li>
139          </ul>
140        </div>
141
142        <button class="hamburger hamburger-component"></button>
143      </div>
144    </div>
145  </div>
146</header>
147        </nav>
148        <div id="global-sidemenu" class="sidemenu" data-el-id="658e5a45-06d4-4ed8-9889-e0ecffb58567">
149            <div class="container overflow-sidemenu">
150  <header class="sidemenu__header">
151    <a href="/" class="logo">
152      <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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c" 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 3456w" alt="logo" sizes="200px" class="logo__img--light">
153    </a>
154
155    <button class="sidemenu__close toggle"></button>
156  </header>
157
158  <div class="sidemenu__nav">
159    <ul>
160      <li class="sidemenu__item">
161        <a  href="/" class="sidemenu__link">Home</a>
162      </li>
163      <li class="sidemenu__item">
164        <a  href="/about" class="sidemenu__link">About Josh</a>
165      </li>
166      <li class="sidemenu__item">
167        <!--Onclick is added to make work hover on iPhone-->
168        <div class="sidemenu__grouped" onclick="">
169          <div class="sidemenu__grouped__wrapper">
170            <div class="title">Properties</div>
171            <div class="sub-nav    ">
172                <ul>
173                            <li><a  href="/properties/sale" class="nav-link primary-font">Featured Properties</a></li>
174                            <li><a  href="/properties/sold" class="nav-link primary-font">Past Transactions</a></li>
175                </ul>
176            </div>
177          </div>
178        </div>
179      </li>
180      <li class="sidemenu__item">
181        <a  href="/home-search/listings" class="sidemenu__link">Home Search</a>
182      </li>
183      <li class="sidemenu__item">
184        <a  href="/home-valuation" class="sidemenu__link">Home Valuation</a>
185      </li>
186      <li class="sidemenu__item">
187        <a  href="/neighborhoods" class="sidemenu__link">Neighborhoods</a>
188      </li>
189      <li class="sidemenu__item">
190        <a  href="/testimonials" class="sidemenu__link">Testimonials</a>
191      </li>
192      <li class="sidemenu__item">
193        <!--Onclick is added to make work hover on iPhone-->
194        <div class="sidemenu__grouped" onclick="">
195          <div class="sidemenu__grouped__wrapper">
196            <div class="title">Resources</div>
197            <div class="sub-nav    ">
198                <ul>
199                            <li><a  href="/about-sir" class="nav-link primary-font">About the Brand</a></li>
200                            <li><a  href="/auction" class="nav-link primary-font">Sotheby&#x27;
200s Auction House</a></li>
201                </ul>
202            </div>
203          </div>
204        </div>
205      </li>
206      <li class="sidemenu__item">
207        <a  href="/blog" class="sidemenu__link">Blog</a>
208      </li>
209      <li class="sidemenu__item">
210        <a  href="/contact" class="sidemenu__link">Let&#x27;s Connect</a>
211      </li>
212      <li class="sidemenu__item">
213        <a  href="/home-search/account" class="sidemenu__link">My Search Portal</a>
214      </li>
215    </ul>
216  </div>
217
218  <div class="sidemenu__footer ">
219    <ul class="lp-socials social_icons-style-1 sidemenu__socials socials">
220    
221            <li>
222              <a
223                href="https://www.instagram.com/jnelsonrealtor1/"
224                class="lp-socials__link socials__item"
225                data-wow-delay="0s"
226                target="_blank"
227                aria-label="INSTAGRAM"
228              >
229                  <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
230              </a>
231            </li>
232            <li>
233              <a
234                href="https://www.linkedin.com/in/joshua-nelson-58138470/"
235                class="lp-socials__link socials__item"
236                data-wow-delay="0.1s"
237                target="_blank"
238                aria-label="LINKEDIN"
239              >
240                  <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
241              </a>
242            </li>
243            <li>
244              <a
245                href="https://www.zillow.com/profile/Josh%20Nelson5"
246                class="lp-socials__link socials__item"
247                data-wow-delay="0.2s"
248                target="_blank"
249                aria-label="ZILLOW"
250              >
251                  <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
252              </a>
253            </li>
254            <li>
255              <a
256                href="https://www.biggerpockets.com/users/joshn93"
257                class="lp-socials__link socials__item"
258                data-wow-delay="0.3s"
259                target="_blank"
260                aria-label="PODCAST"
261              >
262                  <span class="lp-i lp-i--podcast" aria-hidden="true"></span>
263              </a>
264            </li>
265      </ul>  </div>
266</div>
267        </div>
268        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51">
269            <div class="btn-holder" 
270style="
271--backgroundColor: rgba(255, 255, 255, 1); 
272--textColor: rgba(54, 54, 54, 1); 
273--pillTextColor: rgba(54, 54, 54, 1); 
274--pillBackgroundColor: rgba(255, 255, 255, 1);">
275
276    <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Let&#x27;s Connect</button>
277</div>
278
279
280<div class="pop-up" style="--backgroundColor: rgba(255, 255, 255, 1); --textColor: rgba(54, 54, 54, 1);">
281  <div class="lp-container">
282    <form data-type="contact-form" class="contact-form">
283      <div class="contact-form__container">
284          <h3 class="lp-h3">Leave a Message</h3>
285      
286        <div class="contact-form__content">
287          <div class="contact-form__inputs-container">
288            <div class="contact-form__item">
289              <input
290                id="__FullName"
291                type="text" name="name"
292                class="lp-input lp-input--light"
293                required
294                placeholder="Full Name">
295            </div>
296            <div class="contact-form__item">
297              <input
298                id="__Email"
299                type="email" name="email"
300                class="lp-input js-email-input lp-input--light"
301                required
302                placeholder="Email">
303            </div>
304            <div class="contact-form__item"> 
305              <input
306                class="lp-input lp-input--light"
307                type="tel" 
308                placeholder="Phone"
309                id="__Phone"
310                name="phone"
311                required>
312            </div>
313
314            <div class="contact-form__item input-group-select">
315              <select name="interest" id="-field-interest" placeholder="Interest"
316                class="lp-input dropdown-select js-select js-form-element lp-input--light" required>
317                <option value="" disabled selected data-label="Interest">Interested in...</option>
318                <option value="Selling &amp; Buying">Selling &amp; Buying</option>
319                <option value="Selling">Selling</option>
320                <option value="Buying">Buying</option>
321                <option value="Renting">Renting</option>
322                <option value="Other">Other</option>
323              </select>
324              <label for="-field-interest" class="lp-label sr-only">Interest</label>
325            </div>
326
327            <div class="contact-form__item">
328              <textarea
329                name="message"
330                rows="4"
331                id="__Message"
332                class="lp-input lp-input--light"
333                placeholder="Message"
334                required></textarea>
335            </div>
336            <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
337  <label class='lp-tcr-content'>
338    <span class='lp-tcr-checkbox'>
339      <input
340        type='checkbox'
341        id='-termsAccepted'
342        name='termsAccepted'
343        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
344        oninput="this.setCustomValidity('')"
345        required
346      /></span>
347    <span class='lp-tcr-message'>
348      
349        I agree to be contacted by
350        Josh Nelson
351        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
352        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
353        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
354    </span>
355  </label>
356
357</div>
358            <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit  contact-form__item">Submit</button>
359            
360            <div class="lp-h-pot">
361              <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
362            </div>
363            
364            <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
365            <input type="hidden" name="button_text" value="Let&#x27;s Connect">
366          </div>
367        </div>
368      </div>
369
370
371      <div class="success-block">
372          <h3 class="lp-h3 success-message">Thank you for your message. I will be in touch with you shortly.</h3>
373
374      </div>
375    </form>
376
377    <button type="button" class="close-btn lp-ico lp-ico-close"></button>
378
379    
380  </div>
381</div>
382
383
384        </div>
385        <section  class="image-section is-font-color-light is-background-color-dark" id="section-42227948-5841-4e0e-a993-4f76d3586e7b" data-el-id="f6e6e2eb-ad74-4f8a-a5a3-64b4908be089">
386    <div class="simple-opening">
387  <div class="container">
388    <div class="simple-opening__content">
389      <h1 class="hero-heading pre-line">Blog</h1>
390      <ul class="lp-socials social_icons-style-1 socials simple-opening__socials">
391      
392      </ul>    </div>
393  </div>
394</div>
395</section>
396<section id="section-f42f1a44-b353-4560-ac1a-1df3ec5b642b"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="21c5a117-61cb-4f43-8635-2da86e3ae7dd">
397  
398</section>
399<section id="section-5bb14518-9a5a-4131-b654-087e692a51d7"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="522799fa-e972-4350-aa43-fc38d92be683">
400<script type="text/x-handlebars-template" class="blogItem pagination-script"><a class="post-item" href="/blog/{{slug}}">
401  <div class="image-holder">
402    <div class="image-item" style="background-image: url('{{media.0.mediumUrl}}')"></div>
403    {{#if categories.0.name}}
404      <div class="category">{{categories.0.name}}</div>
405    {{/if}}
406    <div class="overlay"></div>
407    <div class="button-wrapper">
408      <span class="btn btn--solid-white button-style-1">Read More</span>
409    </div>
410  </div>
411  <div class="post-details">
412    <div class="title">
413      <h3>{{title}}</h3>
414    </div>
415    <div class="author-date">
416      <div class="date">{{hbFormatDate publishedAt}}</div>
417      {{#if (or createdBy.firstName customAuthor)}}
418        <div class="author">{{#if customAuthor}}{{customAuthor}}{{else}}{{createdBy.firstName}} {{createdBy.lastName}}{{/if}}</div>
419      {{/if}}
420    </div>
421    {{#if subtitle}}
422      <div class="description">
423        {{truncate subtitle 226 '...'}}
424      </div>
425    {{/if}}
426  </div>
427</a>
428</script>
428<div class="blog-list redesign">
429  <div class="container">
430    <div class="posts-container   data-container">
431        <a class="post-item" href="/blog/the-inspection-every-haslett-lake-cottage-has-to-pass-before-it-can-close">
432          <div class="image-holder">
433            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/ba762ecb-5635-4ed4-9a37-badc7452f8c3')"></div>
434            <div class="overlay"></div>
435            <div class="button-wrapper">
436              <span class="btn btn--solid-white button-style-1">Read More</span>
437            </div>
438          </div>
439          <div class="post-details">
440            <div class="title">
441              <h3>The Inspection Every Haslett Lake Cottage Has to Pass Before It Can Close</h3>
442            </div>
443            <div class="author-date">
444              <div class="date">October 1, 2026</div>
445            </div>
446          </div>
447        </a>
448        <a class="post-item" href="/blog/the-east-lansing-rental-license-doesnt-always-transfer-with-the-deed">
449          <div class="image-holder">
450            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/37a2e35a-de6a-4706-aa4d-77f971197e1a')"></div>
451            <div class="overlay"></div>
452            <div class="button-wrapper">
453              <span class="btn btn--solid-white button-style-1">Read More</span>
454            </div>
455          </div>
456          <div class="post-details">
457            <div class="title">
458              <h3>The East Lansing Rental License Doesn&#x27;t Always Transfer With the Deed</h3>
459            </div>
460            <div class="author-date">
461              <div class="date">September 24, 2026</div>
462            </div>
463          </div>
464        </a>
465        <a class="post-item" href="/blog/the-20th-season-party-left-putnam-street-the-season-didnt">
466          <div class="image-holder">
467            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/fde9f2bf-f7d3-4512-a588-b6aa98e5aa22')"></div>
468            <div class="overlay"></div>
469            <div class="button-wrapper">
470              <span class="btn btn--solid-white button-style-1">Read More</span>
471            </div>
472          </div>
473          <div class="post-details">
474            <div class="title">
475              <h3>The 20th-Season Party Left Putnam Street. The Season Didn&#x27;t.</h3>
476            </div>
477            <div class="author-date">
478              <div class="date">September 17, 2026</div>
479            </div>
480          </div>
481        </a>
482        <a class="post-item" href="/blog/the-two-acres-carrying-baths-whole-calendar">
483          <div class="image-holder">
484            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/34d1aca3-beff-47bd-a642-007bd19bbf20')"></div>
485            <div class="overlay"></div>
486            <div class="button-wrapper">
487              <span class="btn btn--solid-white button-style-1">Read More</span>
488            </div>
489          </div>
490          <div class="post-details">
491            <div class="title">
492              <h3>The Two Acres Carrying Bath&#x27;s Whole Calendar</h3>
493            </div>
494            <div class="author-date">
495              <div class="date">September 10, 2026</div>
496            </div>
497          </div>
498        </a>
499        <a class="post-item" href="/blog/the-trailhead-is-closed-the-corner-isnt">
500          <div class="image-holder">
501            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/c06f0c7d-164a-4871-aad8-e7260087d5fc')"></div>
502            <div class="overlay"></div>
503            <div class="button-wrapper">
504              <span class="btn btn--solid-white button-style-1">Read More</span>
505            </div>
506          </div>
507          <div class="post-details">
508            <div class="title">
509              <h3>The Trailhead Is Closed. The Corner Isn&#x27;t.</h3>
510            </div>
511            <div class="author-date">
512              <div class="date">September 3, 2026</div>
513            </div>
514          </div>
515        </a>
516        <a class="post-item" href="/blog/east-lansings-summer-rule-you-can-open-downtown-just-dont-touch-the-parking">
517          <div class="image-holder">
518            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/761cff62-89dd-4693-a8a3-4909684d9d44')"></div>
519            <div class="overlay"></div>
520            <div class="button-wrapper">
521              <span class="btn btn--solid-white button-style-1">Read More</span>
522            </div>
523          </div>
524          <div class="post-details">
525            <div class="title">
526              <h3>East Lansing&#x27;s Summer Rule: You Can Open Downtown, Just Don&#x27;t Touch the Parking</h3>
527            </div>
528            <div class="author-date">
529              <div class="date">August 27, 2026</div>
530            </div>
531          </div>
532        </a>
533        <a class="post-item" href="/blog/the-five-weekends-that-take-over-downtown-mason-this-fall">
534          <div class="image-holder">
535            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/39357b64-690b-4025-b783-7cd4ca2cbd61')"></div>
536            <div class="overlay"></div>
537            <div class="button-wrapper">
538              <span class="btn btn--solid-white button-style-1">Read More</span>
539            </div>
540          </div>
541          <div class="post-details">
542            <div class="title">
543              <h3>The Five Weekends That Take Over Downtown Mason This Fall</h3>
544            </div>
545            <div class="author-date">
546              <div class="date">August 20, 2026</div>
547            </div>
548          </div>
549        </a>
550        <a class="post-item" href="/blog/okemos-doesnt-have-a-downtown-it-has-a-wednesday-night">
551          <div class="image-holder">
552            <div class="image-item" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85,fit&#x3D;scale-down,width&#x3D;1280/https://media-production.lp-cdn.com/media/b0ae0558-ddac-458f-a292-b621b044a333')"></div>
553            <div class="overlay"></div>
554            <div class="button-wrapper">
555              <span class="btn btn--solid-white button-style-1">Read More</span>
556            </div>
557          </div>
558          <div class="post-details">
559            <div class="title">
560              <h3>Okemos Doesn&#x27;t Have a Downtown. It Has a Wednesday Night.</h3>
561            </div>
562            <div class="author-date">
563              <div class="date">August 13, 2026</div>
564            </div>
565          </div>
566        </a>
567    </div>
568    <div class="pagination-container pagination-style-1"></div>  </div>
569</div>
570</section>
571<section id="section-d4307d3d-7cb0-461b-9790-4cbaf461428c"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="19e4a145-7cee-4338-8873-657ce2636b4c">
572  
573<div class="newsletter-signup lp-vertical-paddings redesign">
574  <div class="lp-container-custom">
575    <form data-type="contact-form" class="newsletter-signup__form">
576      <div class="newsletter-signup__form-container">
577        <div class="lp-title-group">
578          <h2 class="lp-h2">Receive Exclusive Listings in Your Inbox</h2>
579          <div class="lp-text--subtitle"><p>Are you interested in buying a home? Look no further than working with a real estate expert.</p></div>
580        </div>
581        <div class="newsletter-signup-form">
582          <div class="newsletter-signup__inputs-container">
583              <input id="section-d4307d3d-7cb0-461b-9790-4cbaf461428c__newsSignFirstName" type="text" name="name" class="lp-in
583put lp-input--light newsletter-signup__form-item" required placeholder="Name">
584              
585            <input id="section-d4307d3d-7cb0-461b-9790-4cbaf461428c__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-]+)+">
586            
587            <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>
588            
589            <div class="lp-h-pot">
590              <input id="section-d4307d3d-7cb0-461b-9790-4cbaf461428c__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
591            </div>
592            
593            <input style="display: none;" type="text" name="source" value="NEWSLETTER_SIGNUP" />
594          </div>
595        </div>
596        <div class="lp-disclaimer">  <label style='display: none;' for='section-d4307d3d-7cb0-461b-9790-4cbaf461428c-termsAccepted'>Opt In/Disclaimer Consent:</label>
597  <label class='lp-tcr-content'>
598    <span class='lp-tcr-checkbox'>
599      <input
600        type='checkbox'
601        id='section-d4307d3d-7cb0-461b-9790-4cbaf461428c-termsAccepted'
602        name='termsAccepted'
603        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
604        oninput="this.setCustomValidity('')"
605        required
606      /></span>
607    <span class='lp-tcr-message'>
608      
609        I agree to be contacted by
610        Josh Nelson
611        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
612        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
613        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
614    </span>
615  </label>
616
617</div>
618      </div>
619      <div class="success-block">
620        <div class="lp-title-group">
621          <h2 class="lp-h2">Thank You</h2>
622          <div class="lp-text--subtitle"><p>You have successfully been added to our Newsletter. Stay tuned for the latest updates sent straight to your inbox!</p></div>
623        </div>
624      </div>
625    </form>
626    
627  </div>
628</div>
629</section>
630<section  class="image-section is-font-color-light is-background-color-dark" id="section-800648be-b1a1-4e21-a1a6-e04b85375975" data-el-id="3b9aa9ac-f534-49a3-b661-d2cda775b424">
631    <div class="work-with-us">
632    <div class="container">
633        <div class="work-with-us__content">
634            <h2 class="wow fadeInUp" data-wow-delay=".1s">Work With Josh</h2>
635            <p class="wow fadeInUp" data-wow-delay=".2s">Dedicated to you. It has been always my mission to bring my clients home. Contact me today!</p>
636                    <a
637                        role="button"
638                        data-type="CONTACT_US"
639                        class="btn wow fadeInUp button-style-2"
640                        
641                        
642                        
643                        
644                        
645                        >
646                                Let&#x27;s Connect
647                        </a>
648        </div>
649    </div>
650</div>
651</section>
652<section id="section-aab683fa-2e6b-49e8-9307-d1c895d542e3"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284">
653  
653<script type="text/x-handlebars-template" class="jsIGItem">
654    <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}">
655      <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div>
656      <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div>
657      {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}}
658    </a> 
659</script>
659
660<div class="ig-feed redesign">
661  <div class="ig-feed-top lp-container">
662    <div class="top-wrapper">
663      <div class="top-left">
664          <h3 class="lp-h3 title">Follow Me On Instagram</h3>
665        <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a>
666      </div>
667      <div class="top-right">
668          <a href="#" target="_blank" class="lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width follow-button jsIGLink ">Follow Us</a>
669        <a class="nav-button top-nav-prev hidden-control ">
670          <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.099 13.25l-5.25-5.775L7.099 1.7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
671        </a>
672        <a class="nav-button top-nav-next hidden-control ">
673          <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.90137 1.75L7.15137 7.525L1.90137 13.3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
674        </a>
675      </div>
676    </div>
677  </div>
678  <div class="lp-container ig-feed-container ">
679    <div class="ig-feed-feed" data-limit="33">
680    </div>
681  </div>
682  <div class="bottom-controls">
683    <a class="bottom-nav-button bottom-nav-prev ">
684      <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.099 13.25l-5.25-5.775L7.099 1.7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
685    </a>
686    <a class="bottom-nav-button bottom-nav-next ">
687      <svg width="9" height="15" viewBox="0 0 9 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.90137 1.75L7.15137 7.525L1.90137 13.3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
688    </a>
689  </div>
690</div>
691
692</section>
693
694        <div id="modals" class="modals"></div>
695        <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="e518e474-22a5-4efd-a5c6-0a3b09f783c2">
696            <div class="footer">
697  <div class="container">
698    <div class="footer__info">
699      <div class="footer__info-column wow fadeInUp" data-wow-delay=".1s">
700        <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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f" 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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 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/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/8c22713d-b8ce-47c3-8d0a-662f7cb1f19f 3456w" alt="Dark Logo" sizes="250px" class="footer__logo logo-dark">
701        <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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c" 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 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/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/de18bfb5-2a1b-46cd-aa0e-077c7cb3c82c 3456w" alt="Light Logo" sizes="250px" class="footer__logo logo-light">
702        <p>
703          A Reputation for unrelenting work ethic, integrity, and honesty backed up by unparalleled knowledge of the marketplace. 
704        </p>
705      </div>
706      <div class="footer__info-column wow fadeInUp" data-wow-delay=".3s">
707        <h4>Address</h4>
708        <div>
709          <div class="c2299">
710<p>2421 W Grand River Ave<br>Okemos MI 48864</p>
711</div>
712<style>* { box-sizing: border-box; } body {margin: 0;}.c2299{padding:0 0 0 0;border:none black;}</style>
713        </div>
714      </div>
715      <div class="footer__info-column wow fadeInUp" data-wow-delay=".6s">
716        <h4>Contact</h4>
717        <div>
718          <div class="c2407">
719<p><a class="hyperlink-style-1" href="tel:6166440819">M:616.644.0819</a><br><a class="hyperlink-style-1" href="tel:5177778224">O:517.777.8224</a><br><a class="hyperlink-style-1" href="/cdn-cgi/l/email-protection#53393c203b2632133b3
719c3e36203636383621207d3d3627"><span class="__cf_email__" data-cfemail="c3a9acb0abb6a283abacaea6b0a6a6a8a6b1b0edada6b7">[email&#160;protected]</span></a></p>
720</div>
721<style>* { box-sizing: border-box; } body {margin: 0;}.c2407{padding:0 0 0 0;border:none black;}</style>
722        </div>
723      </div>
724    </div>
725    <div class="footer__contact">
726      <div class="footer__contact-column">
727        <h4>Connect With Me</h4>
728        <ul class="lp-socials social_icons-style-2 socials">
729        
730                <li>
731                  <a
732                    href="https://www.instagram.com/jnelsonrealtor1/"
733                    class="lp-socials__link socials__item wow fadeInUp"
734                    data-wow-delay="0s"
735                    target="_blank"
736                    aria-label="INSTAGRAM"
737                  >
738                      <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
739                  </a>
740                </li>
741                <li>
742                  <a
743                    href="https://www.linkedin.com/in/joshua-nelson-58138470/"
744                    class="lp-socials__link socials__item wow fadeInUp"
745                    data-wow-delay="0.1s"
746                    target="_blank"
747                    aria-label="LINKEDIN"
748                  >
749                      <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
750                  </a>
751                </li>
752                <li>
753                  <a
754                    href="https://www.zillow.com/profile/Josh%20Nelson5"
755                    class="lp-socials__link socials__item wow fadeInUp"
756                    data-wow-delay="0.2s"
757                    target="_blank"
758                    aria-label="ZILLOW"
759                  >
760                      <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
761                  </a>
762                </li>
763                <li>
764                  <a
765                    href="https://www.biggerpockets.com/users/joshn93"
766                    class="lp-socials__link socials__item wow fadeInUp"
767                    data-wow-delay="0.3s"
768                    target="_blank"
769                    aria-label="PODCAST"
770                  >
771                      <span class="lp-i lp-i--podcast" aria-hidden="true"></span>
772                  </a>
773                </li>
774          </ul>      </div>
775    </div>
776    <div class="footer__copyright wow fadeInUp" data-wow-delay=".6s">
777            <span class="img-wrap"><img src="https://media-production.lp-cdn.com/media/20574221-e126-4c05-aa86-444398b09530" alt=""></span>
778        <div class="footer__design">Real Estate Website Design by     <a href="https://www.luxurypresence.com/real-estate-website-design/"  target="_blank"  class="link hyperlink-style-1">Luxury Presence</a>
779</div>
780        <p class="footer__design">
781            Copyright &copy; <span class="auto-year-update">2026</span> |  <span><a href="/terms-and-conditions" class="hyperlink-style-1">Privacy Policy</a></span>
782        </p>
783    </div>
784
785    <div class="footer__disclaimer">
786      <div class="wow fadeInUp" data-wow-delay=".6s">
787        This Website is not the official website of Sotheby’s International Realty, Inc. Sotheby’s International Realty, Inc. does not make any representation or warranty regarding any information, including without limitation its accuracy or completeness, contained on this Website.
788      </div>
789      <div class="wow fadeInUp" data-wow-delay=".6s">
790        <p style="font-size: 12px;">​​​​​Sotheby&rsquo;s International Realty&reg; and the Sotheby&rsquo;s International Realty Logo are service marks licensed to Sotheby&rsquo;s International Realty Affiliates LLC and used with permission. White Pine Sotheby&rsquo;s International Realty fully supports the principles of the Fair Housing Act and the Equal Opportunity Act. Each office is independently owned and operated. Any services or products provided by independently owned and operated franchisees are not provided by, affiliated with or related to Sotheby&rsquo;s International Realty Affiliates LLC nor any of its affiliated companies.<br><br></p>
791<p><img src="https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/g5qzbyky8ifp5w0ex0ik/realtor-eho-logo-07232021-update-dark" alt="" width="100px"></p>
792      </div>
793    </div>
794
795
796    <div class="footer__menu wow fadeInUp" data-wow-delay=".6s">
797      <a href="/"  class="footer__menu-item hyperlink-style-1">Home</a>
798      <a href="/about"  class="footer__menu-item hyperlink-style-1">About Josh</a>
799      <a href="/properties/sale"  class="footer__menu-item hyperlink-style-1">Featured Properties</a>
800      <a href="/testimonials"  class="footer__menu-item hyperlink-style-1">Testimonials</a>
801      <a data-type="CONTACT_US" class="footer__menu-item hyperlink-style-1">Let&#x27;s Connect</a>
802    </div>
803
804  </div>
805  
806</div>
807
808<div class="thank-you-modal closed">
809  <div>
810    <h2>Email Added To
811      Subscription List</h2>
812  </div>
813  <div>
814    <button class="btn">Okay</button>
815  </div>
816</div>
817        </footer>
818
819        <div id="modal-global-contact-us" class="modal "
820            data-el-id=""
821            style="background-color: ;"
822            >
823            <div class="modal-content">
824                <div class="contact-popup">
825          <div class="contact-popup__container">
826            <button class="contact-popup__close close"></button>
827            <div class="contact-popup__col">
828              <h1 class="contact-popup__title">Get in Touch</h1>
829              <p>
830                
831              </p>
832              <form class="contact-popup__form contact-us-form" data-type="contact-form">
833                <input required name="name" type="text" class="inp contact-popup__input" placeholder="Full Name">
834                <input required type="email" name="email"
835                pattern="[a-zA-Z0-9.!#$%&amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+" class="inp contact-popup__input" placeholder="Email">
836                <input name="phone" required type="tel" class="inp contact-popup__input" placeholder="Phone">
837                <div class="h-pot">
838                  <label for="__ebookMiddleName">Middle Name</label>
839                  <input id="__ebookMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
840                </div>
841                <textarea name="message" required class="inp contact-popup__input" placeholder="Message"></textarea>
842                <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
843          <label class='lp-tcr-content'>
844            <span class='lp-tcr-checkbox'>
845              <input
846                type='checkbox'
847                id='-termsAccepted'
848                name='termsAccepted'
849                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
850                oninput="this.setCustomValidity('')"
851                required
852              /></span>
853            <span class='lp-tcr-message'>
854              
855                I agree to be contacted by
856                Josh Nelson
857                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
858                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
859                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
860            </span>
861          </label>
862        
863        </div>
864                <button class="btn btn--solid-black contact-popup__submit button-style-1" type="submit">SUBMIT</button>
865                <p class="success hide">
866                  Message sent successfully!
867                </p>
868              </form>
869              
870            </div>
871        
872            <div class="contact-popup__col">
873              
874              
875              <div class="contact-popup__info">
876                <h3 class="contact-popup__subtitle"></h3>
877                <div>
878                  <div id="ityb"><h3 class="contact-popup__subtitle">Josh Nelson
879        </h3><p><a href="tel:6166440819" class="hyperlink-style-1">M:616.644.0819</a><a href="tel:5177778224" class="hyperlink-style-1">O:517.777.8224</a><a href="/cdn-cgi/l/email-protection#ddb7b2aeb5a8bc9db5b2b0b8aeb8b8b6b8afaef3b3b8a9" class="hyperlink-style-1"><span class="__cf_email__" data-cfemail="0c66637f64796d4c646361697f696967697e7f22626978">[email&#160;protected]</span></a></p></div><div id="i47ls"><h3 class="contact-popup__subtitle">Address
880        </h3><p id="in0a">2421 W Grand River Ave<br>Okemos MI 48864</p></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
881                </div>
882              </div>
883        
884              <ul class="lp-socials social_icons-style-2 contact-popup__socials socials">
885              
886                      <li>
887                        <a
888                          href="https://www.instagram.com/jnelsonrealtor1/"
889                          class="lp-socials__link socials__item"
890                          data-wow-delay="0s"
891                          target="_blank"
892                          aria-label="INSTAGRAM"
893                        >
894                            <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
895                        </a>
896                      </li>
897                      <li>
898                        <a
899                          href="https://www.linkedin.com/in/joshua-nelson-58138470/"
900                          class="lp-socials__link socials__item"
901                          data-wow-delay="0.1s"
902                          target="_blank"
903                          aria-label="LINKEDIN"
904                        >
905                            <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
906                        </a>
907                      </li>
908                      <li>
909                        <a
910                          href="https://www.zillow.com/profile/Josh%20Nelson5"
911                          class="lp-socials__link socials__item"
912                          data-wow-delay="0.2s"
913                          target="_blank"
914                          aria-label="ZILLOW"
915                        >
916                            <span class="lp-i lp-i--zillow" aria-hidden="true"></span>
917                        </a>
918                      </li>
919                      <li>
920                        <a
921                          href="https://www.biggerpockets.com/users/joshn93"
922                          class="lp-socials__link socials__item"
923                          data-wow-delay="0.3s"
924                          target="_blank"
925                          aria-label="PODCAST"
926                        >
927                            <span class="lp-i lp-i--podcast" aria-hidden="true"></span>
928                        </a>
929                      </li>
930                </ul>    </div>
931          </div>
932        
933        </div>
934            </div>
935            <button class="close lp-close" type="button" aria-label="close modal">
936                <span class="lp-close-icon" aria-hidden="true"></span>
937            </button>
938        </div>
939        <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;">
940          <style>
941            #qualifying-questions-modal .custom-select-toggle {
942              border: 1px solid #848484;
943              border-radius: 8px;
944              padding: 12px 16px;
945            }
946        
947            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
948              color: #848484;
949            }
950        
951            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
952              color: #848484;
953              opacity: 1;
954            }
955        
956            #qualifying-questions-modal .disclaimer-more {
957              display: none;
958            }
959        
960            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
961              display: inline;
962            }
963        
964            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
965              display: none;
966            }
967          </style>
vendor: 119 bytes, lines 967-968
967
968          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
968<script>
969            function toggleDisclaimerQualifyingQuestionsModal() {
970              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
971              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
972        
973              if (disclaimerText.classList.contains('collapsed')) {
974                disclaimerText.classList.remove('collapsed');
975                toggleButton.textContent = 'Read less';
976                toggleButton.setAttribute('aria-expanded', 'true');
977              } else {
978                disclaimerText.classList.add('collapsed');
979                toggleButton.textContent = 'Read more';
980                toggleButton.setAttribute('aria-expanded', 'false');
981              }
982            }
983          </script>
983
984          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
985            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
986              <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;">
987                <span aria-hidden="true">&times;</span>
988              </button>
989              <div style="padding: 40px 30px 32px;">
990                <div style="text-align: left; margin-bottom: 32px;">
991                  <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;">
992                    Thanks, please provide more information to help serve you
993                  </h2>
994                </div>
995                <form id="qualifying-questions-modal-form" data-type="contact-form">
996                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
997                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
998                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
999                  <label for="qualifying-questions-modal-email" style="display:none;">
1000                    Email
1001                  </label>
1002                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
1003                    Trigger Source
1004                  </label>
1005        
1006                  <div style="margin-bottom: 20px;">
1007                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
1008                      Phone Number
1009                    </label>
1010                    <input
1011                      type="tel"
1012                      id="qualifying-questions-modal-phoneNumber"
1013                      name="phoneNumber"
1014                      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;"
1015                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
1016                      required
1017                      placeholder="Phone"
1018                      aria-label="Phone Number"
1019                      inputmode="tel"
1020                      autocomplete="tel"
1021                      onfocus="this.style.borderColor='black';"
1022                      onblur="this.style.borderColor='#848484';"
1023                    />
1024                  </div>
1025        
1026                  <div style="margin-bottom: 20px;">
1027                    <label for="qualifying-questions-modal-interest" style="display:none;">
1028                      Interest
1029                    </label>
1030                    <select
1031                      id="qualifying-questions-modal-interest"
1032                      name="interest"
1033                      required
1034                      data-label="Interest"
1035                      aria-label="Interest"
1036                      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;"
1037                      onfocus="this.style.borderColor='black'; this.style.color='black';"
1038                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
1039                    >
1040                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
1041                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
1042                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
1043                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
1044                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
1045                      <option value="Other" style="background: #fff; color: black;">Other</option>
1046                    </select>
1047                  </div>
1048        
1049                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
1050                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
1051                    <label class='lp-tcr-content'>
1052                      <span class='lp-tcr-checkbox'>
1053                        <input
1054                          type='checkbox'
1055                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
1056                          name='termsAccepted'
1057                          aria-describedby='qualifying-questions-modal-disclaimer-text'
1058                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1059                          oninput="this.setCustomValidity('')"
1060                          required
1061                        /></span>
1062                      <span class='lp-tcr-message'>
1063                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
1064                          
1065                            I agree to be contacted by
1066                            <strong>Josh Nelson</strong>
1067                            via call, email, and text <span class="disclaimer-more">for real estate services. 
1068                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
1069                            You can also click the unsubscribe link in the emails. 
1070                            Message and data rates may apply. Message frequency may vary.</span>
1071                            <span class="disclaimer-ellipsis">...</span>
1072                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
1073                        </div>
1074                        <button
1075                          id="qualifying-questions-modal-toggle-disclaimer"
1076                          type="button"
1077                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
1078                          aria-expanded="false"
1079                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
1080                        >
1081                          Read more
1082                        </button>
1083                      </span>
1084                    </label>
1085                  </div>
1086        
1087                  <div>
1088                    <button
1089                      type="submit"
1090                      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;"
1091                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1092                      onmouseout="this.style.background='black'; this.style.color='white';"
1093                    >
1094                      Submit
1095                    </button>
1096                  </div>
1097                </form>
1098              </div>
1099            </div>
1100          </div>
1101        </div>
1102
1103    
1103<script>
1104        (function() {
1105        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1106
1107        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1108            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1109            entries.forEach(function(video) {
1110                if (video.isIntersecting) {
1111                for (var source in video.target.children) {
1112                    var videoSource = video.target.children[source];
1113                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1114                    videoSource.src = videoSource.dataset.src;
1115                    }
1116                }
1117
1118                video.target.load();
1119                video.target.classList.remove("lazy");
1120                lazyVideoObserver.unobserve(video.target);
1121                }
1122            });
1123            });
1124
1125            lazyVideos.forEach(function(lazyVideo) {
1126                lazyVideoObserver.observe(lazyVideo);
1127            });
1128        }
1129        })();
1130    </script>
1130
1131
1132        <!-- Global site tag (gtag.js) - Google Analytics -->
1133        
1133<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1133
1134
1135            <!-- Google Tag Manager -->
1136            
1136<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1137                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1138                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1139                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1140            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1140
1141            <!-- End Google Tag Manager -->
1142
1143
1144        <!-- LP Tracker (divolte.js) - LP Divolte -->
1145            
1145<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1145
1146        <!-- LP Tracker (eventBus) - LP EventBus -->
1147            
1147<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1147
1148
1149    
1149<script>
1150        window.dataLayer = window.dataLayer || [];
1151        document.sendGoogleTagManagerEvent = function() {
1152            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1153            if (window.navigator.globalPrivacyControl) {
1154                return;
1155            }
1156
1157            dataLayer.push(arguments);
1158        }
1159
1160        document.sendGoogleTagManagerEvent('js', new Date());
1161            document.sendGoogleTagManagerEvent('config', 'G-P0SQ1LKZWY', { page: location.pathname, location: location.href });
1162        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1163            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1164                event_category: googleEvent.eventCategory,
1165                event_label: googleEvent.eventLabel,
1166                value: googleEvent.eventValue,
1167                page: googleEvent.page,
1168                location: googleEvent.location
1169            })
1170        };
1171
1172        document.addEventListener("DOMContentLoaded", function() {
1173            (function() {
1174                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1175                var date = new Date();
1176                var elements = document.getElementsByClassName('auto-year-update');
1177                var i;
1178                for (i = 0; i < elements.length; i++) {
1179                    elements[i].innerText = date.getFullYear();
1180                }
1181            })();
1182            if (window.divolteLp) {
1183                window.divolteLp('sendLpPageView', {});
1184            }
1185            if (window.eventBusLp) {
1186                window.eventBusLp('sendLpPageView', {});
1187            }
1188        });
1189    </script>
1189
1190
1191
1192    
1192<script>
1193    // Function to dynamically load a script
1194    function loadScript(url, callback) {
1195        var script = document.createElement('script');
1196        script.type = 'text/javascript';
1197        script.src = url;
1198        script.defer = true;
1199        script.async = true;
1200        script.onload = callback;
1201        document.head.appendChild(script);
1202    }
1203
1204    // Function to dynamically load CSS file
1205    function loadCSS(url) {
1206        var link = document.createElement("link");
1207        link.rel = "stylesheet";
1208        link.href = url;
1209        document.head.appendChild(link);
1210    }
1211
1212    // Global methods / variables that can be accessed by element js
1213    window.luxuryPresence = {
1214        libs: {
1215            loadJs: loadScript,
1216            loadCss: loadCSS,
1217            jsLibsMap: {
1218                paroller: {
1219                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1220                    isLoaded: false,
1221                },
1222                ionRangeSlider: {
1223                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1224                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1225                    isLoaded: false,
1226                    requires: ['jquery'],
1227                },
1228                splide: {
1229                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1230                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1231                    isLoaded: false,
1232                },
1233                wow: {
1234                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1235                    isLoaded: false,
1236                },
1237                jquery: {
1238                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1239                    isLoaded: false,
1240                },
1241                slick: {
1242                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1243                    isLoaded: false,
1244                    requires: ['jquery'],
1245                },
1246                libphonenumber: {
1247                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1248                    isLoaded: false,
1249                },
1250            },
1251        },
1252    };
1253    </script>
1253
1254    
1254<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>
1254
1255    
1255<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1255
1256    
1256<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1256
1257    
1257<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1257
1258    
1258<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>
1258
1259    
1259<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>
1259
1260    
1260<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>
1260
1261
1262    <!-- GOOGLE TRANSLATE SCRIPT -->
1263    
1263<script>
1264        function googleTranslateElementInit() {
1265            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1266            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1267            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1268            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1269                translate.innerText = '';
1270                new google.translate.TranslateElement({
1271                    pageLanguage: 'en',
1272                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1273                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1274                }, translate);
1275            });
1276        }
1277    </script>
1277
1278    
1278<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1278
1279            
1279<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1279
1280
1281    <!-- GOOGLE TRANSLATE SCRIPT END-->
1282    
1282<script>
1283
1284        // UI helpers
1285        (function () {
1286
1287            function getSideMenu () {
1288                return document.querySelector('body > div.sidemenu');
1289            }
1290
1291            function sideMenuHide (instant) {
1292                var sideMenu = getSideMenu();
1293                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1294                  return;
1295                }
1296                sideMenu.classList.remove('visible');
1297                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1298                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1299            }
1300
1301            function sideMenuShow () {
1302                var sideMenu = getSideMenu();
1303                if (!sideMenu || sideMenu.classList.contains('visible')) {
1304                  return;
1305                }
1306                sideMenu.classList.add('visible');
1307                sideMenu.dispatchEvent(new Event('lpui-show'));
1308                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1309            }
1310
1311            function sideMenuToggle () {
1312                var sideMenu = getSideMenu();
1313                if (!sideMenu) {
1314                  return;
1315                }
1316                var isSideMenuVisible = sideMenu.classList.contains('visible');
1317                if (isSideMenuVisible) {
1318                    sideMenuHide();
1319                } else {
1320                    sideMenuShow();
1321                }
1322            }
1323
1324            var scrollLockRequests = {};
1325            window.__debug_scrollLockRequests = scrollLockRequests;
1326            var hideScrollStyles = ''+
1327                    'body {'+
1328                    'overflow: hidden;' +
1329                    '}';
1330            var hideScrollId = 'hide-body-scroll-style';
1331
1332            function scrollLock () {
1333                var style = document.createElement('style');
1334                style.id = hideScrollId;
1335                style.textContent = hideScrollStyles;
1336                document.head.appendChild(style);
1337                window.dispatchEvent(new Event('lpui-scroll-locked'));
1338            }
1339
1340            function scrollUnlock () {
1341                document.getElementById(hideScrollId)?.remove();
1342                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1343            }
1344
1345            function requestScrollLock (lockId) {
1346                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1347                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1348                if (!wasLocked) {
1349                    scrollLock();
1350                }
1351            }
1352
1353            function releaseScrollLock (lockId) {
1354                if (lockId) {
1355                    delete scrollLockRequests[lockId];
1356                    if (!Object.keys(scrollLockRequests).length) {
1357                        scrollUnlock();
1358                    }
1359                } else {
1360                    scrollLockRequests = {};
1361                    window.__debug_scrollLockRequests = scrollLockRequests;
1362                    scrollUnlock();
1363                }
1364            }
1365
1366            function showModal (modalId, options) {
1367                var modal = document.getElementById(modalId);
1368                if (!modal) {
1369                    return;
1370                }
1371
1372                if (!modal.classList.contains('visible')) {
1373                    modal.classList.add('visible');
1374                    if (options && options.scrollLock) {
1375                        window.lpUI.requestScrollLock(modalId);
1376                    }
1377                    modal.dispatchEvent(new Event('lpui-show'));
1378                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1379                }
1380
1381                const visibleModals = document.querySelectorAll('.modal.visible');
1382
1383                if (visibleModals.length > 1) {
1384
1385                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1386                        const zIndex = window.getComputedStyle(modal).zIndex;
1387                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1388                        return Math.max(maxZIndex, parsedZIndex);
1389                    }, 0);
1390
1391                    modal.style.zIndex = maxZIndex + 1;
1392                }
1393
1394            }
1395
1396            function _hideModal (modalEl) {
1397                if (!modalEl) {
1398                    return;
1399                }
1400                if (!modalEl.classList.contains('visible')) {
1401                    return;
1402                }
1403                modalEl.classList.remove('visible');
1404                modalEl.style.zIndex = '';
1405                modalEl.dispatchEvent(new Event('lpui-hide'));
1406                var modalId = modalEl.getAttribute('id');
1407                if (modalId) {
1408                    window.lpUI.releaseScrollLock(modalId);
1409                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1410                }
1411            }
1412
1413            function hideModal (modalId) {
1414                _hideModal(document.getElementById(modalId));
1415            }
1416
1417            function hideClosestModal (el) {
1418              const modal = el?.closest('.modal');
1419              if (!modal) {
1420                return;
1421              }
1422              if (modal.classList) {
1423                _hideModal(modal);
1424                return;
1425              }
1426              if (modal.length && modal[0].classList) {
1427                _hideModal(modal[0]);
1428              }
1429            }
1430
1431            window.lpUI = {
1432                sideMenuHide: sideMenuHide,
1433                sideMenuShow: sideMenuShow,
1434                sideMenuToggle: sideMenuToggle,
1435                requestScrollLock: requestScrollLock,
1436                releaseScrollLock: releaseScrollLock,
1437                showModal: showModal,
1438                hideModal: hideModal,
1439                hideClosestModal: hideClosestModal
1440            }
1441        })();
1442
1443        var stringifyPrimitive = function(v) {
1444            switch (typeof v) {
1445                case 'string':
1446                    return v;
1447
1448                case 'boolean':
1449                    return v ? 'true' : 'false';
1450
1451                case 'number':
1452                    return isFinite(v) ? v : '';
1453
1454                default:
1455                    return '';
1456            }
1457        };
1458
1459        function objectToQuerystring(obj, sep, eq, name) {
1460            // https://github.com/Gozala/querystring/blob/master/encode.js
1461            sep = sep || '&';
1462            eq = eq || '=';
1463            if (obj === null) {
1464                obj = undefined;
1465            }
1466
1467            if (typeof obj === 'object') {
1468                return Object.keys(obj).map(function(k) {
1469                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1470                    if (Array.isArray(obj[k])) {
1471                        return obj[k].map(function(v) {
1472                            return ks + encodeURIComponent(stringifyPrimitive(v));
1473                        }).join(sep);
1474                    } else {
1475                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1476                    }
1477                }).filter(Boolean).join(sep);
1478
1479            }
1480
1481            if (!name) return '';
1482            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1483                    encodeURIComponent(stringifyPrimitive(obj));
1484        }
1485
1486        function getPath(url, options) {
1487            var parser = document.createElement('a');
1488            parser.href = url || '';
1489            var path = parser.pathname || '';
1490            if (path[0] !== '/') {
1491              // IE does not return path starting with a slash
1492              path = '/' + path;
1493            }
1494
1495            if (options && options.queryString) {
1496                path += parser.search;
1497            }
1498
1499            return path;
1500        }
1501
1502        function getMLSAutocomplete(keyword) {
1503            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1504            var query = {
1505                kind: 'listings',
1506                query: keyword
1507            };
1508
1509            return superagent
1510                .get(searchURL)
1511                .query(query)
1512                .then(function(res) {
1513                    var data = res.body || [];
1514                    // Array of listing_auto_complete documents: id, display_address, city, state,
1515                    // price, sold_price, status, status_modified_at, photo_urls (array of URLs).
1516
1517                    return data;
1518                });
1519        }
1520
1521        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1522            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1523
1524            return superagent
1525                .get(searchURL)
1526                .query({ kind: 'listings', query: keyword, ...filters })
1527                .then(function(res) {
1528                    // Same response shape as getMLSAutocomplete.
1529                    return res.body || [];
1530                });
1531        }
1532
1533        function makeMlsLink(data) {
1534            // Code Dupe from utils/googlePlace
1535            // mapping of google data type to mls data type
1536            var mapping = {
1537                neighborhood: 'neighborhood',
1538                locality: 'place',
1539                administrative_area_level_2: 'county',
1540                administrative_area_level_1: 'state',
1541                postal_code: 'postalcode',
1542            };
1543
1544            function _filterTypes(types) {
1545                return types.filter(function(type) { return type !== 'political' });
1546            }
1547
1548            if (!data || !Object.keys(data).length) {
1549                return '/home-search/listings';
1550            }
1551
1552            var newData = {};
1553            _filterTypes(data.types).forEach(function(type) {
1554                if (mapping[type]) {
1555                    newData.search_type = mapping[type];
1556                }
1557            });
1558            newData.omnibox = data.formatted_address;
1559            data.address_components.forEach(function(component) {
1560                _filterTypes(component.types).forEach(function(type) {
1561                    if (mapping[type]) {
1562                        newData[mapping[type]] = component.long_name;
1563                    }
1564                });
1565            });
1566            var bounds = data.geometry.bounds;
1567            var convertedData = Object.assign(bounds, newData);
1568
1569            return '/home-search/listings?' + objectToQuerystring(convertedData);
1570        }
1571
1572        function debounce(func, wait) {
1573            let timeout;
1574            return function(...args) {
1575                const context = this;
1576                clearTimeout(timeout);
1577                timeout = setTimeout(() => func.apply(context, args), wait)
1578            }
1579        }
1580
1581        // Global methods / variables that can be accessed by element js
1582        window.luxuryPresence = {
1583            ...window.luxuryPresence,
1584            defaults: {
1585                companyId: 'bda25091-f9eb-4ebc-b64e-6a6cfd5df967',
1586                apiGatewayUrl: '/api-gw',
1587                routerUrl: '/api-nv',
1588                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\
1588n    }\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
1588s: 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"},
1589                propertyPlaceholderImage: {"id":"9f3498d1-ef24-47cb-bcdb-24d136de5b79","alt":null,"bytes":146953,"width":1920,"format":"png","height":1200,"pngUrl":"","shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2e2cec43-6316-47a0-b8a8-2584fce09016","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/2e2cec43-6316-47a0-b8a8-2584fce09016","authorUrl":null,"createdAt":"2025-08-01T14:51:04.075Z","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/2e2cec43-6316-47a0-b8a8-2584fce09016","sourceUrl":null,"updatedAt":"2025-08-01T14:51:04.075Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2e2cec43-6316-47a0-b8a8-2584fce09016","__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/2e2cec43-6316-47a0-b8a8-2584fce09016","description":null,"displayName":"property-whiteplain-sir","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2e2cec43-6316-47a0-b8a8-2584fce09016","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/2e2cec43-6316-47a0-b8a8-2584fce09016","originalFileName":"Property -whiteplain SIR","cloudinaryPublicId":"2e2cec43-6316-47a0-b8a8-2584fce09016"}
1590            },
1591            objectToQuerystring: objectToQuerystring,
1592            getPath: getPath,
1593            getMLSAutocomplete: getMLSAutocomplete,
1594            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1595            makeMlsLink: makeMlsLink,
1596            debounce: debounce,
1597        };
1598
1599        var wowOffset = 100;
1600    </script>
1600
1601    
1601<script>
1602        (()=>{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;
1602i&&(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())),`
1602<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}
1602return 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
1602ontact 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
1602ourceResource,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=([^;
1602]+)/);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 v(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 w(e){return e&&Array.isArray(e)?e.map(e=>v(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=`
1603  query PropertyDisclaimers($input: PropertyDisclaimersInput!) {
1604    propertyDisclaimers(input: $input) {
1605      feedId
1606      listingId
1607      resolvedFromListing
1608      listingCardAttribution
1609      listingDetailCourtesy
1610      listingDetailFooter
1611      logo
1612    }
1613  }
1614`;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 >
1614 .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),C=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=)
1614)|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=`
1615      <div id="modal-${i.id}" class="modal visible">
1616        <div class="modal-content">
1617          <div class="lightbox-video">
1618            <div class="video-player">
1619              <div class="embed-container">
1620                ${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>`}
1621              </div>
1622            </div>
1623          </div>
1624        </div>
1625        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
1626      </div>
1627    `;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),k=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
1627=>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");
1627let 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
1627URIComponent(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=`
1628      <button class="lp-lightbox__close" aria-label="close modal"></button>
1629      <div class="lp-lightbox__content">
1630        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
1631          <div class="splide__arrows">
1632            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
1633            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
1634          </div>
1635          <div class="splide__track">
1636            <ul class="splide__list"></ul>
1637          </div>
1638        </div>
1639      </div>
1640    `,"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
1640h(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=`
1641        <button class="lp-lightbox__close" aria-label="close modal"></button>
1642        <div class="lp-lightbox__content">
1643          <div class="lp-lightbox__carousel"></div>
1644        </div>
1645      `,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"}
1645)),(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"];
1645return 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=`
1646      query {
1647        validSession {
1648          success
1649        }
1650      }
1651    `;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||"developments"===e||"developmentsCount"===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","
1651spaceTypeIds","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,v):"agents"===e||"agentsCount"===e?A(t,w):"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",C),j("validation",k),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})}})();
1652//# sourceMappingURL=lp-sdk.js.map
1653
1654    </script>
1654
1655
1656    
1656<script>
1657        var lpGlobalInitialized = false;
1658
1659        function lpGlobalInit () {
1660          if (lpGlobalInitialized) {
1661            return;
1662          }
1663            lpGlobalInitialized = true;
1664            // Initialize wow animation plugin only according to turbolinks
1665            var wow;
1666            if (window.WOW) {
1667                wow = new WOW({
1668                    animateClass: 'animated',
1669                    offset: wowOffset,
1670                    live: false,
1671                    callback: function(box) {}
1672                });
1673            }
1674            // Initialize handlebar helpers only once
1675            function handlebarsInit() {
1676              if (!window.Handlebars) {
1677                return;
1678              }
1679              HandlebarsIntl.registerWith(Handlebars);
1680              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
1681            }
1682
1683            handlebarsInit();
1684
1685              var modalContentUrl = "/modals.html";
1686                const modalsContainer = document.getElementById('modals');
1687                if (modalsContainer) {
1688                  fetch(modalContentUrl).then(function(res) {
1689                    if (!res.ok) {
1690                      throw new Error(`HTTP error! Status: ${res.status}`);
1691                    }
1692                    return res.text();
1693                  }).then(function(resultText) {
1694                    modalsContainer.innerHTML = resultText;
1695
1696                    // now we need to execute all script elements
1697                    Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) {
1698                      const script  = document.createElement("script");
1699                      script.text = s.innerHTML;
1700                      Array.from(s.attributes).forEach(function (a) {
1701                        script.setAttribute(a.name, a.value);
1702                      })
1703                      s.parentNode.replaceChild(script, s);
1704                    });
1705
1706                    try {
1707                      window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes);
1708                      window.luxuryPresence.contactForms.initialize({ selector: '#modals' });
1709                      window.luxuryPresence.validation.initialize({ selector: '#modals' });
1710                      window.luxuryPresence.oauth.initialize({
1711                        googleSignOnEnabled: true,
1712                        iframe: false });
1713                    } catch (e) {
1714                      console.log(e);
1715                    }
1716                    document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => {
1717                      closeModalBtn.addEventListener('click', function() {
1718                        window.lpUI.hideClosestModal(closeModalBtn);
1719                      });
1720                    });
1721                  }).catch((e) => console.log(e));
1722                }
1723            /* Initialize Luxury Presence SDK */
1724            try {
1725                window.luxuryPresence.config.setCompany("bda25091-f9eb-4ebc-b64e-6a6cfd5df967", {});
1726                window.luxuryPresence.config.setWebsite("d1c655e7-3a6b-4818-8bf8-e4b0b6f106a0", {
1727                    myhomeDashboardEnabled: true,
1728                    mlsEnabled: true,
1729                    hstValuationRedirectEnabled: true,
1730                    hvStepTwoCaptureEnabled: false
1731                });
1732                const url = new URL(window.location.href);
1733                const shareId = url.searchParams.get('shareId');
1734                window.luxuryPresence.config.setPage("07ef5348-01a5-43d0-b535-2fff7c0025fe", {
1735                    sourceResource: "",
1736                    pageElementId: "",
1737                    pageQueryVariables: {},
1738                    shareId: "",
1739                });
1740                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
1741                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
1742                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
1743                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
1744                  window.luxuryPresence.config.setEventBus({
1745                    enabled: true,
1746                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
1747                    url: "https://p.luxurypresence.com",
1748                  });
1749                window.luxuryPresence.config.setTemplateId("8ffaeebb-3667-4b94-9aff-cf0cb535a286", {});
1750                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
1751                window.luxuryPresence.buttons.initialize({});
1752                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
1753                window.luxuryPresence.contactForms.initialize({});
1754                window.luxuryPresence.validation.initialize({});
1755                window.luxuryPresence.expandSliders.initialize({});
1756                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
1757                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
1758            } catch (e) {
1759                console.log(e);
1760            }
1761
1762            /* Inject Section Specific Javascript */
1763                try {
1764(function init(sectionDomId) {
1765  $('.contact-popup__close').click(function (e) {
1766    e.preventDefault();
1767    $(this).closest('.contact-popup').removeClass('visible');
1768  });
1769  var $contactModal = $(".contact-popup").closest(".modal");
1770  if ($contactModal.css("transform") === "matrix(1, 0, 0, 1, 0, 0)" && !$contactModal.hasClass("visible")) {
1771    $contactModal.addClass('visible');
1772  }
1773  var sectionSelector = sectionDomId ? '#' + sectionDomId : '.contact-us-form';
1774  var body = $('body');
1775  function setHttp(link) {
1776    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
1777      link = 'http://' + link;
1778    }
1779    return link;
1780  }
1781  $("#" + sectionDomId + " form").on("reset", function () {
1782    $(this).find(".custom-select").each(function () {
1783      let linkedSelect = $(this).siblings("select")[0];
1784      $(this).find(".custom-select-toggle").text(linkedSelect.children[0].innerText);
1785      $(this).find(".custom-select-item").removeClass("is-selected");
1786    });
1787    const redirectLink = $('#' + sectionDomId + ' .redirect-link');
1788    if (redirectLink.length) {
1789      const rawHref = redirectLink.attr('href');
1790      redirectLink.attr('href', setHttp(rawHref));
1791      redirectLink[0].click();
1792    }
1793  });
1794})('modal-global-contact-us');
1795} catch(e) {
1796console.log(e);
1797}
1798                
1799                try {
1800(function init(sectionDomId) {
1801  function isSectionLight(sect) {
1802    if (!sect || !sect.style) {
1803      return true;
1804    }
1805    if (sect.style.backgroundImage) {
1806      return false;
1807    }
1808    if ($(sect).children('.video-wrapper').length) {
1809      return false;
1810    }
1811    return sect.classList.contains('is-background-color-light');
1812  }
1813  const $header = $(`#${sectionDomId} > .header`);
1814  if ($header.hasClass('theme-auto')) {
1815    if (isSectionLight($('body > section')[0])) {
1816      $header.removeClass('theme-light').addClass('theme-dark');
1817    } else {
1818      $header.removeClass('theme-dark').addClass('theme-light');
1819    }
1820  }
1821  $(window).on('scroll', function () {
1822    if ($(this).scrollTop() > 0) {
1823      $(".header").addClass("header-animation-off");
1824    }
1825  });
1826})('global-navbar');
1827} catch(e) {
1828console.log(e);
1829}
1830                try {
1831(function init(sectionDomId, options) {
1832  var elementSelector = options.elementSelector || 'nav';
1833  var element = document.querySelector(elementSelector);
1834  var sections = document.querySelectorAll('body > section');
1835  var subNavContainers = element.querySelectorAll('.sub-nav');
1836  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
1837  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
1838  var fontColor = options.fontColor || '#fff';
1839  var fontColorScroll = options.fontColorScroll || '#000';
1840  var didScroll = false;
1841  var lastScrollTop = 0;
1842  var delta = 5;
1843
1844  // eslint-disable-next-line sonarjs/no-collapsible-if
1845  if (wow) {
1846    // Wowjs might not trigger for position fixed elements
1847    if (window.scrollY > 0) {
1848      element.querySelectorAll('.wow').forEach(el => wow.show(el));
1849    }
1850  }
1851  function adjustNavPinState() {
1852    // Remove 'visible' class from all subNavContainers
1853    for (let i = 0; i < subNavContainers.length; i++) {
1854      subNavContainers[i].classList.remove('visible');
1855    }
1856    if (window.scrollY > 0) {
1857      element.style.backgroundColor = backgroundColorScroll;
1858      element.style.color = fontColorScroll;
1859      element.classList.add('scroll');
1860    } else {
1861      element.style.backgroundColor = initialBackgroundColor;
1862      element.style.color = fontColor;
1863      element.classList.remove('scroll');
1864    }
1865  }
1866  adjustNavPinState();
1867  function onScroll() {
1868    didScroll = true;
1869  }
1870  window.addEventListener('scroll', onScroll);
1871
1872  // eslint-disable-next-line
1873  var debounceInterval = setInterval(() => {
1874    if (didScroll) {
1875      // eslint-disable-next-line
1876      hasScrolled();
1877      didScroll = false;
1878    }
1879  }, 250);
1880  function hasScrolled() {
1881    adjustNavPinState();
1882    // eslint-disable-next-line
1883    var navbarHeight = element.offsetHeight;
1884    // eslint-disable-next-line
1885    var st = window.scrollY;
1886
1887    // Make sure they scroll more than delta
1888    if (Math.abs(lastScrollTop - st) <= delta) {
1889      return;
1890    }
1891    if (st > lastScrollTop && st > navbarHeight) {
1892      // Scroll Down
1893      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
1894      document.documentElement.style.setProperty('--global-header-height', '0px');
1895
1896      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
1897      sections.forEach(section => {
1898        if (section.classList.contains('sticky')) {
1899          section.style.top = '0px';
1900        }
1901      });
1902    } else {
1903      // Scroll Up
1904      // eslint-disable-next-line
1905      if (st + window.innerHeight < document.documentElement.scrollHeight) {
1906        element.style.transform = `translateY(0) scaleY(1)`;
1907        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
1908        sections.forEach(section => {
1909          if (section.classList.contains('sticky')) {
1910            section.style.top = `${navbarHeight}px`;
1911          }
1912        });
1913      }
1914    }
1915    lastScrollTop = st;
1916  }
1917})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\".header\",\"fontColorScroll\":\"#000\",\"backgroundColorScroll\":\"#fff\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}"));
1918} catch(e) {
1919console.log(e);
1920}
1921                try {
1922(function init(sectionDomId) {
1923  const $section = $('#' + sectionDomId);
1924  $section.on('lpui-show', function () {
1925    window.lpUI.requestScrollLock('side-menu');
1926  });
1927  $section.on('lpui-hide', function () {
1928    window.lpUI.releaseScrollLock('side-menu');
1929  });
1930  if (/body > div\.sidemenu { display: block;/.test($('head > style').last().text())) {
1931    $section.addClass('in-pb');
1932    $(`<style>#${sectionDomId}.in-pb {height: 100v` + 'h;}</style>').appendTo($('head'));
1933  }
1934})('global-sidemenu');
1935} catch(e) {
1936console.log(e);
1937}
1938                
1939                try {
1940(function init(sectionDomId) {
1941  var $thankYouModal = $('footer .thank-you-modal');
1942  var $body = $('body');
1943  $('footer form').on('formsubmitted', function () {
1944    $thankYouModal.removeClass('closed');
1945    $body.addClass('locked');
1946  });
1947  $('footer .thank-you-modal button').on('click', function () {
1948    $thankYouModal.addClass('closed');
1949    $body.removeClass('locked');
1950  });
1951  $('#' + sectionDomId + " form").on("reset", function () {
1952    if ($('#' + sectionDomId + ' .redirect-link').length) {
1953      $('#' + sectionDomId + ' .redirect-link')[0].click();
1954    }
1955  });
1956})('global-footer');
1957} catch(e) {
1958console.log(e);
1959}
1960                
1961                try {
1962(function init(sectionDomId) {
1963  var _section = $('#' + sectionDomId);
1964  var _footer = document.getElementById('global-footer');
1965  const redirectLink = _section.find('.js-redirect-link');
1966  function setHttp(link) {
1967    if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) {
1968      link = 'https://' + link;
1969    }
1970    return link;
1971  }
1972  function redirectPage(link) {
1973    if (link.length) {
1974      window.location.href = setHttp(link.attr('href'));
1975    }
1976  }
1977  const emailInput = _section.find('.js-email-input');
1978  const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/;
1979  emailInput.on('input', function () {
1980    if (emailRegex.test(this.value)) {
1981      this.setCustomValidity('');
1982    } else {
1983      this.setCustomValidity('Please enter a valid email address.');
1984    }
1985    this.reportValidity();
1986  });
1987  _section.find('input[name="name"]').on("keyup", function () {
1988    if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") {
1989      this.setCustomValidity("Please input your first name and last name.");
1990    } else {
1991      this.setCustomValidity("");
1992    }
1993  });
1994  _section.find('form').on("reset", function () {
1995    $(this).addClass("show-success");
1996    redirectPage(redirectLink);
1997  });
1998  $(window).scroll(function () {
1999    if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible');
2000  });
2001  _section.find('.close-btn, .connect-btn').click(function () {
2002    _section.find('.pop-up').toggle();
2003    _section.find('.btn-holder').toggle();
2004  });
2005  if (!_footer) return;
2006  const observer = new IntersectionObserver(entries => {
2007    entries.forEach(entry => {
2008      if (entry.isIntersecting) _section.hide();else _section.show();
2009    });
2010  }, {
2011    threshold: 0.1
2012  });
2013  observer.observe(_footer);
2014  function selectToDropdown(selectItem) {
2015    let customDropdown = `
2016        <div class="custom-select" role="presentation">
2017        <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button>
2018        <div class="custom-select-menu" style="display: none;max-height: none;">
2019        <div class="custom-select-content">
2020        </div>
2021        </div>
2022        </div>`;
2023    $(customDropdown).insertAfter(selectItem);
2024    let $dropdown = $($(selectItem).next());
2025    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
2026    let $dropdownMenu = $dropdown.find(".custom-select-menu");
2027    let $dropdownContent = $dropdown.find(".custom-select-content");
2028    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
2029    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
2030    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
2031    appendOptionButtons(selectItem, $dropdownContent);
2032    $(selectItem).removeClass().addClass("sr-only");
2033    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
2034    $dropdownToggle.html(toggleText);
2035    $dropdown.on("click", ".custom-select-item", function (e) {
2036      if ($(this).hasClass("is-disabled")) return;
2037      let elementNumber = $(this).index();
2038      let $originalSelect = $(this).closest(".custom-select").siblings("select");
2039      let $linkedOption = $originalSelect.find("option").eq(elementNumber);
2040      if (!$linkedOption.prop("selected")) {
2041        $linkedOption.prop("selected", true);
2042        $originalSelect.change();
2043        $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
2044        $dropdownToggle.html($(this).html());
2045        closeSelectMenu($(this).closest(".custom-select-menu"));
2046      }
2047      $dropdownToggle.removeClass("is-placeholder");
2048    });
2049    function convertOptionToButton(option) {
2050      var optionText = $(option).text();
2051      var optionValue = $(option).attr("value") || $(option).text();
2052      var optionIsDisabled = $(option).prop("disabled");
2053      var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
2054      return outputButton;
2055    }
2056    function appendOptionButtons(selectItem, appendTarget) {
2057      $(selectItem).find("option").each(function () {
2058        let currentButton = convertOptionToButton(this);
2059        $(appendTarget).append(currentButton);
2060      });
2061    }
2062    function showSelectMenu(selectMenu) {
2063      var customSelect = $(selectMenu).closest(".custom-select")[0];
2064      $(customSelect).addClass("open");
2065      $(selectMenu).slideDown();
2066    }
2067    function closeSelectMenu(selectMenu) {
2068      var customSelect = $(selectMenu).closest(".custom-select")[0];
2069      $(customSelect).removeClass("open");
2070      $(selectMenu).slideUp();
2071    }
2072    $dropdown.on("click", ".custom-select-toggle", function (e) {
2073      var $customSelect = $(this).closest(".custom-select");
2074      var selectMenu = $customSelect.find(".custom-select-menu")[0];
2075      if ($customSelect.hasClass("open")) {
2076        closeSelectMenu(selectMenu);
2077      } else {
2078        showSelectMenu(selectMenu);
2079      }
2080    });
2081    $(document).on("click", function (e) {
2082      if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) {
2083        $(".custom-select.open").each(function () {
2084          var selectMenu = $(this).find(".custom-select-menu")[0];
2085          closeSelectMenu(selectMenu);
2086        });
2087      }
2088    });
2089  }
2090  $(".pop-up select[name='interest']").each(function () {
2091    selectToDropdown(this);
2092  });
2093})('global-mobile-contact');
2094} catch(e) {
2095console.log(e);
2096}
2097                
2098                try {
2099(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
2100})('section-42227948-5841-4e0e-a993-4f76d3586e7b', 'undefined');
2101} catch(e) {
2102console.log(e);
2103}
2104                try {
2105(function init(sectionDomId) {})('section-f42f1a44-b353-4560-ac1a-1df3ec5b642b', 'undefined');
2106} catch(e) {
2107console.log(e);
2108}
2109                try {
2110(function init(sectionDomId, options) {
2111  let section = null;
2112  switch (sectionDomId) {
2113    case 'NAVBAR':
2114      section = document.querySelector('body > nav, #global-navbar');
2115      break;
2116    case 'FOOTER':
2117      section = document.querySelector('body > footer, #global-footer');
2118      break;
2119    case 'SIDEMENU':
2120      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2121      break;
2122    case 'CONTACT':
2123      section = document.querySelector('#modal-global-contact-us');
2124      break;
2125    case 'MOBILE_CONTACT':
2126      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2127      break;
2128    case 'SUBSCRIBE':
2129      // Subscribe Not Implemented
2130      section = null;
2131      break;
2132    case 'ACCOUNT':
2133      // Account Not Implemented
2134      section = null;
2135      break;
2136    default:
2137      section = document.querySelector('#' + sectionDomId);
2138  }
2139  if (!section) {
2140    return;
2141  }
2142
2143  // Where content / items are rendered
2144  const dataContainer = section.querySelector('.data-container');
2145  if (!dataContainer) {
2146    // no place to render items = no need to query server or do anything else
2147    return;
2148  }
2149  let variables = options.variables || {};
2150
2151  // Some variables in options may not have been injected - remove
2152  Object.keys(variables).forEach(function (variableName) {
2153    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2154      delete variables[variableName];
2155    }
2156  });
2157
2158  // Merge page query variables
2159  if (options.usePageResource) {
2160    variables = {
2161      ...variables,
2162      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2163    };
2164  }
2165
2166  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2167  // resolve the flag — fetchData reads the section stamp, aux fetches read
2168  // their own resource's stamp (auxUsesRouter).
2169  function apiUrl(useRouter) {
2170    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2171  }
2172
2173  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2174  // (options.routerApiAux is stamped per aux resource server-side).
2175  function auxUsesRouter(resource) {
2176    return !!(options.routerApiAux && options.routerApiAux[resource]);
2177  }
2178
2179  // Pagination Executes on a Numbered Pagination Container
2180  //  Or via a load more button
2181  let mode = 'BUTTONLESS_PAGINATION';
2182  const container = section.querySelector('.pagination-container');
2183  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2184  if (container) {
2185    mode = 'NUMBERED_PAGINATION';
2186  }
2187  if (loadMoreButton) {
2188    mode = 'LOAD_MORE_BUTTON';
2189  }
2190  let searchContainer = section.querySelector('.search-container');
2191  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2192  const eventPrefix = '__pagination-';
2193  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2194    param: 'neighborhoodId',
2195    urlKey: 'neighborhood'
2196  }, {
2197    param: 'search',
2198    urlKey: 'search'
2199  }, {
2200    param: 'salesPriceGTE',
2201    urlKey: 'pricemin',
2202    formKey: 'priceMin',
2203    type: 'int'
2204  }, {
2205    param: 'salesPriceLTE',
2206    urlKey: 'pricemax',
2207    formKey: 'priceMax',
2208    type: 'int'
2209  }, {
2210    param: 'livingSpaceSizeGTE',
2211    urlKey: 'areamin',
2212    formKey: 'areaMin',
2213    type: 'int'
2214  }, {
2215    param: 'livingSpaceSizeLTE',
2216    urlKey: 'areamax',
2217    formKey: 'areaMax',
2218    type: 'int'
2219  }] : []);
2220
2221  // Total entries - initialized in first render
2222  let totalNumber = 0;
2223  const DefaultSearchParams = {
2224    page: 1
2225  };
2226  searchFormParams.forEach(function (formParam) {
2227    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2228  });
2229  let searchParams = {
2230    ...DefaultSearchParams
2231  };
2232  const offset = options.variables?.offset || 0;
2233  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2234  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2235
2236  // entries of per page
2237  // when query variables for a given section would't be filled options.pageSize can store
2238  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2239  let pageSize = parseInt(options.pageSize, 10) || 9;
2240
2241  // Adding mobile pageRange support
2242  var NARROW_BREAKPOINT = 600;
2243  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2244  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2245
2246  // Page range (pages on both sides of the current page)
2247  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2248  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2249  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2250
2251  // Whether to display the 'Previous' button
2252  var showPrevious = true;
2253
2254  // Whether to display the 'Next' button
2255  var showNext = true;
2256
2257  // Whether to display the page buttons
2258  var showPageNumbers = true;
2259
2260  // 'Previous' text
2261  var prevText = options.prevText || '&laquo;';
2262
2263  // 'Next' text
2264  var nextText = options.nextText || '&raquo;';
2265
2266  // Ellipsis text
2267  var ellipsisText = '&hellip;';
2268  var classPrefix = 'paginationjs';
2269
2270  // Default active class
2271  var activeClassName = 'active';
2272
2273  // Default disable class
2274  var disableClassName = 'disabled';
2275
2276  // Pagination element's position in the container
2277  var position = 'bottom';
2278
2279  // Whether to trigger pagination at initialization
2280  var triggerPagingOnInit = !options.skipInitialLoad;
2281  var showFirstOnEllipsisShow = true;
2282  var showLastOnEllipsisShow = true;
2283
2284  // Instantiated in init()
2285  var el = null;
2286
2287  // Controls scrollTop logic
2288  var firstRender = true;
2289  var renderBySearch = false;
2290  var disabled = false;
2291
2292  // Pagination script class selector
2293  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
2294
2295  // Property Specific Image Override if No Image
2296  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
2297
2298  // Construct template
2299  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
2300  var template = Handlebars.compile(templateHTML);
2301
2302  // Initialize
2303  init();
2304  function init() {
2305    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2306
2307    // Append/prepend pagination element to the pagination container
2308    if (mode === 'NUMBERED_PAGINATION') {
2309      el = document.createElement('div');
2310      el.className = 'paginationjs';
2311      container[position === 'bottom' ? 'append' : 'prepend'](el);
2312    }
2313    if (searchContainer) {
2314      initSearchContainer({
2315        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
2316        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
2317        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
2318        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
2319      }, function () {
2320        syncSearchFormState(searchParams);
2321      });
2322    }
2323
2324    // Bind events
2325    observer();
2326  }
2327  function syncSearchFormState(params) {
2328    searchContainer.dispatchEvent(new CustomEvent('sync', {
2329      detail: params
2330    }));
2331  }
2332  function initSearchContainer(options, done) {
2333    var promises = [];
2334    if (options.fetchNeighborhoods) {
2335      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
2336        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
2337          detail: {
2338            data: neighborhoods.map(function (item) {
2339              return {
2340                value: item.id,
2341                label: item.name
2342              };
2343            })
2344          }
2345        }));
2346      }));
2347    }
2348    if (options.fetchPostCategories) {
2349      promises.push(fetchPostCategories(function (categories) {
2350        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
2351          detail: {
2352            data: categories
2353          }
2354        }));
2355      }));
2356    }
2357    if (options.fetchOffices) {
2358      promises.push(fetchOffices(function (offices) {
2359        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
2360          detail: {
2361            data: offices
2362          }
2363        }));
2364      }));
2365    }
2366    if (options.fetchRentalRates) {
2367      promises.push(fetchAllRentalRates(function (rentalRates) {
2368        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
2369          detail: {
2370            data: rentalRates
2371          }
2372        }));
2373      }));
2374    }
2375    if (promises.length > 0) {
2376      Promise.all(promises).then(function () {
2377        done();
2378      });
2379    } else {
2380      // element's custom code is not executed yet, so we're scheduling callback to after element's code
2381      setTimeout(done);
2382    }
2383  }
2384  function fetchAllNeighborhoods(done) {
2385    var useRouter = auxUsesRouter('neighborhoods');
2386    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
2387    // args on both APIs (the federated neighborhoods field accepts
2388    // withProperties/withBlogPosts); only the selection set differs.
2389    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') + '}}';
2390    var payload = {};
2391    payload.offset = 0;
2392    payload.limit = 100;
2393    payload.companyId = variables.companyId;
2394    if (options.resource === 'properties') {
2395      payload.withProperties = {
2396        active: true
2397      };
2398      ['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) {
2399        if (variables[field] !== undefined && variables[field] !== null) {
2400          payload.withProperties[field] = variables[field];
2401        }
2402      });
2403    }
2404    if (options.resource === 'posts') {
2405      payload.withBlogPosts = {
2406        active: true
2407      };
2408      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
2409        if (variables[field] !== undefined && variables[field] !== null) {
2410          payload.withBlogPosts[field] = variables[field];
2411        }
2412      });
2413    }
2414
2415    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2416    if (useRouter) {
2417      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
2418    }
2419    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2420      query: gqlQuery,
2421      variables: payload
2422    }).then(function (res) {
2423      var value = res.body.data && res.body.data.neighborhoods || {};
2424      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2425      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2426      done(items, items.length);
2427    });
2428  }
2429  function fetchPostCategories(done) {
2430    var featured = options.resource === 'posts' && !!variables.featured;
2431    var useRouter = auxUsesRouter('postCategories');
2432    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2433    // selection set differs ({ items {...} } on the router).
2434    var selection = 'id, name, publishedCount, featuredPublishedCount';
2435    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) + '}}';
2436    var payload = {};
2437    payload.offset = 0;
2438    payload.limit = 100;
2439    payload.companyId = variables.companyId;
2440    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2441      query: gqlQuery,
2442      variables: payload
2443    }).then(function (res) {
2444      var value = res.body.data && res.body.data.postCategories || {};
2445      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2446      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2447      done(items.map(function (item) {
2448        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
2449        return item;
2450      }), items.length);
2451    });
2452  }
2453  function fetchOffices(done) {
2454    var useRouter = auxUsesRouter('offices');
2455    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2456    // selection set differs ({ items {...} } on the router).
2457    var selection = 'id, name, tags';
2458    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
2459    // APIs differ in more than the items wrapper: federated offices takes
2460    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
2461    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 + '}}';
2462    var payload = {
2463      offset: 0,
2464      limit: 100,
2465      companyId: variables.companyId
2466    };
2467
2468    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2469    if (useRouter) {
2470      payload = window.luxuryPresence.routerApi.transformVariables('office
2470s', payload);
2471    }
2472    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2473      query: gqlQuery,
2474      variables: payload
2475    }).then(function (res) {
2476      var value = res.body.data && res.body.data.offices || {};
2477      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2478      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2479      done(items, items.length);
2480    });
2481  }
2482
2483  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
2484  function fetchAllRentalRates(done) {
2485    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
2486    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
2487    var payload = {
2488      offset: 0,
2489      limit: 100,
2490      companyId: variables.companyId
2491    };
2492    superagent.post(url + '/graphql').withCredentials().send({
2493      query: gqlQuery,
2494      variables: payload
2495    }).then(function (res) {
2496      var items = res.body.data && res.body.data.rentalRates || [];
2497      done(items, items.length);
2498    }).catch(function (err) {
2499      console.error('Error fetching rental rates:', err);
2500      done([], 0);
2501    });
2502  }
2503  function fetchData(params, done) {
2504    var resource = options.resource;
2505    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
2506    var payload = {};
2507    try {
2508      payload = JSON.parse(JSON.stringify(variables));
2509    } catch (e) {
2510      Object.keys(variables).forEach(function (variableName) {
2511        payload[variableName] = variables[variableName];
2512      });
2513    }
2514    payload.offset = (params.page - 1) * pageSize + offset;
2515    payload.limit = pageSize;
2516    payload.companyId = options.companyId;
2517    searchFormParams.forEach(function (formParam) {
2518      var val = params[formParam.formKey || formParam.param];
2519      if (val !== null && val !== undefined) {
2520        objSet(payload, formParam.param, val);
2521      }
2522    });
2523
2524    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2525    if (options.useRouterApi) {
2526      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
2527    }
2528
2529    // TODO: Disabled loading due to jarring effect
2530    // dataContainer.html('Loading...');
2531    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
2532      query: gqlQuery,
2533      variables: payload
2534    }).then(function (res) {
2535      if (res.body.errors) {
2536        done(res.body.errors);
2537        return;
2538      }
2539      var data = res.body.data || {};
2540      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2541      var resources;
2542      var resourceCount;
2543      if (options.useRouterApi) {
2544        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
2545        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
2546        resourceCount = page.count;
2547      } else {
2548        resources = data[resource] || [];
2549        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
2550      }
2551      const finish = function (items) {
2552        if (resource === 'properties' && propertyPlaceholderImage?.id) {
2553          items = items.map(item => {
2554            if (item.media?.length === 0) {
2555              return Object.assign(item, {
2556                media: [propertyPlaceholderImage]
2557              });
2558            }
2559            return item;
2560          });
2561        }
2562        done(null, items, resourceCount);
2563      };
2564
2565      // ROUTER-CLEANUP: client half of PLAT-4073 — resolve the requested
2566      // disclaimers before rendering; older SDKs skip (keys stay unset).
2567      if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') {
2568        window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish);
2569        return;
2570      }
2571      finish(resources);
2572    });
2573  }
2574  function getTotalPage() {
2575    return Math.ceil(totalNumber / pageSize);
2576  }
2577  function renderPaginationList() {
2578    var totalPages = getTotalPage();
2579    var rangeStart = searchParams.page - pageRange;
2580    var rangeEnd = searchParams.page + pageRange;
2581    if (rangeEnd > totalPages) {
2582      rangeEnd = totalPages;
2583      rangeStart = totalPages - pageRange * 2;
2584      rangeStart = rangeStart < 1 ? 1 : rangeStart;
2585    }
2586    if (rangeStart <= 1) {
2587      rangeStart = 1;
2588      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
2589    }
2590
2591    // Making sure that 1 more page button is shown in edge positions
2592    if (pageRange === 0) {
2593      if (searchParams.page === totalPages) {
2594        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
2595      }
2596      if (searchParams.page === 1) {
2597        rangeEnd = Math.min(2, totalPages);
2598      }
2599    }
2600
2601    // Render pagination list
2602    if (mode === 'NUMBERED_PAGINATION') {
2603      el.innerHTML = generateHTML({
2604        currentPage: searchParams.page,
2605        pageRange: pageRange,
2606        rangeStart: rangeStart,
2607        rangeEnd: rangeEnd
2608      });
2609      if (totalPages < 2 && hidePaginationOnFirstPage) {
2610        container.style.display = 'none';
2611      } else {
2612        container.style.display = '';
2613      }
2614    } else if (mode === 'LOAD_MORE_BUTTON') {
2615      if (searchParams.page >= totalPages) {
2616        loadMoreButton.style.display = 'none';
2617      } else {
2618        loadMoreButton.style.display = '';
2619      }
2620    }
2621  }
2622  function render(data) {
2623    renderPaginationList();
2624
2625    // Render new content with handlebars
2626    var html = '';
2627    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
2628      // If using load more, append search results to existing results
2629      html = dataContainer.innerHTML;
2630    }
2631    for (var i = 0; i < data.length; i++) {
2632      var itemData = recursivelyParse(data[i]);
2633      itemData.sectionIndex = options.sectionIndex;
2634      itemData.renderOptions = options.renderOptions;
2635      html += template(itemData);
2636    }
2637    dataContainer.innerHTML = html;
2638
2639    // Scroll Top
2640    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
2641      // Only animate to the top if we replace dataContainer (numbered pagination)
2642      setTimeout(() => {
2643        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
2644        window.scrollTo({
2645          top: scrollTargetOffsetTop,
2646          behavior: 'smooth'
2647        });
2648      }, 250);
2649    }
2650    return true;
2651  }
2652  function generateHTML(args) {
2653    const totalPages = getTotalPage();
2654    const {
2655      rangeStart,
2656      rangeEnd
2657    } = args;
2658    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2659      ...searchParams,
2660      page
2661    });
2662    let html = '';
2663    if (showPrevious || showPageNumbers || showNext) {
2664      html += '<div class="paginationjs-pages"><ul>';
2665
2666      // Previous button
2667      if (showPrevious) {
2668        if (searchParams.page <= 1) {
2669          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
2670        } else {
2671          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>`;
2672        }
2673      }
2674
2675      // Pages
2676      if (showPageNumbers) {
2677        if (rangeStart <= 3) {
2678          for (let i = 1; i < rangeStart; i++) {
2679            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>`;
2680          }
2681        } else {
2682          if (showFirstOnEllipsisShow) {
2683            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
2684          }
2685          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2686        }
2687        for (let i = rangeStart; i <= rangeEnd; i++) {
2688          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>`;
2689        }
2690        if (rangeEnd < totalPages - 2) {
2691          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2692          if (showLastOnEllipsisShow) {
2693            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
2694          }
2695        } else {
2696          for (let i = rangeEnd + 1; i <= totalPages; i++) {
2697            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
2698          }
2699        }
2700      }
2701
2702      // Next button
2703      if (showNext) {
2704        if (searchParams.page >= totalPages) {
2705          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
2706        } else {
2707          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>`;
2708        }
2709      }
2710      html += '</ul></div>';
2711    }
2712    return html;
2713  }
2714  function go(newSearchParams, callback, restorationVisit) {
2715    if (disabled) return;
2716    var goToPageNumber = newSearchParams.page;
2717
2718    // Page number is out of bounds
2719    if (!goToPageNumber || goToPageNumber < 1) return;
2720    var totalPage = getTotalPage();
2721
2722    // Page number is out of bounds
2723    if (!restorationVisit && totalNumber > 0) {
2724      if (goToPageNumber > totalPage) return;
2725    }
2726    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
2727      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2728        ...newSearchParams,
2729        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
2730      });
2731      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
2732        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
2733          queryString: true
2734        }));
2735      }
2736    }
2737
2738    // Fetch and update page
2739    fetchData(newSearchParams, renderWithData);
2740    disabled = true;
2741    function renderWithData(err, data, count) {
2742      if (err) {
2743        dataContainer.dispatchEvent(new Event('error'));
2744      } else {
2745        searchParams = {
2746          ...newSearchParams
2747        };
2748        totalNumber = count - offset;
2749        if (data.length === 0) {
2750          dataContainer.dispatchEvent(new Event('no-data'));
2751        } else {
2752          dataContainer.dispatchEvent(new Event('data'));
2753        }
2754        render(data);
2755        firstRender = false;
2756      }
2757      disabled = false;
2758      renderBySearch = false;
2759    }
2760  }
2761  function areQueryParamsEqual(first, second) {
2762    var differ = Object.keys(first).find(function (key) {
2763      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
2764    });
2765    if (differ) {
2766      return false;
2767    }
2768    differ = Object.keys(second).find(function (key) {
2769      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
2770    });
2771    return !differ;
2772  }
2773  function next(callback) {
2774    go({
2775      ...searchParams,
2776      page: searchParams.page + 1
2777    }, callback);
2778  }
2779  function previous(callback) {
2780    go({
2781      ...searchParams,
2782      page: searchParams.page - 1
2783    }, callback);
2784  }
2785  function refresh(callback) {
2786    go(searchParams, callback);
2787  }
2788  function update(params, callback) {
2789    renderBySearch = true;
2790    go(params, callback);
2791  }
2792  function observer() {
2793    if (searchContainer) {
2794      searchContainer.addEventListener('search', function (event, newSearchParams) {
2795        newSearchParams = event.detail || newSearchParams;
2796        update({
2797          ...searchParams,
2798          ...newSearchParams,
2799          page: 1
2800        });
2801      });
2802      searchContainer.addEventListener('clear-search', function () {
2803        const defaultSearchParams = {
2804          ...DefaultSearchParams
2805        };
2806        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
2807          ...defaultSearchParams,
2808          page: null
2809        }, {
2810          ...searchParams,
2811          page: null
2812        });
2813
2814        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
2815        // when search form have default state
2816        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
2817          return;
2818        }
2819
2820        // if someone initially go to some page and click 'Clear' on search from
2821        // we should't navigate to first page. We should preserve page value
2822        if (isCurrentSearchFormStateDefault) {
2823          defaultSearchParams.page = searchParams.page;
2824        }
2825        syncSearchFormState(defaultSearchParams);
2826        update(defaultSearchParams);
2827      });
2828    }
2829    if (mode === 'LOAD_MORE_BUTTON') {
2830      loadMoreButton.addEventListener('click', function (event) {
2831        go({
2832          ...searchParams,
2833          page: searchParams.page + 1
2834        });
2835        return false;
2836      });
2837    }
2838    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
2839      // Do initial render
2840      go(Object.assign({}, searchParams, {
2841        page: 1
2842      }));
2843      return;
2844    }
2845    if (mode === 'NUMBERED_PAGINATION') {
2846      // Go to specified page number
2847      container.addEventListener(eventPrefix + 'go', function (event) {
2848        let {
2849          pageNumber,
2850          done
2851        } = event.detail || {};
2852        pageNumber = parseInt(pageNumber, 10);
2853        if (!pageNumber) {
2854          return;
2855        }
2856        go({
2857          ...searchParams,
2858          page: pageNumber
2859        }, done);
2860      });
2861
2862      // Page number button click
2863      el.addEventListener('click', function (event) {
2864        let clickTarget = event.target;
2865        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
2866        let pageNumber = current?.getAttribute('data-num');
2867        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
2868          return;
2869        } else {
2870          go({
2871            ...searchParams,
2872            page: parseInt(pageNumber, 10)
2873          });
2874        }
2875        event.preventDefault();
2876      });
2877
2878      // Whether to load the default page
2879      var defaultPageNumber = searchParams.page;
2880      if (triggerPagingOnInit) {
2881        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
2882          detail: {
2883            pageNumber: defaultPageNumber
2884          }
2885        }));
2886      }
2887    }
2888    window.addEventListener('popstate', function (event) {
2889      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2890      if (!areQueryParamsEqual(newParams, searchParams)) {
2891        go(newParams, null, true);
2892        if (searchContainer) {
2893          syncSearchFormState(newParams);
2894        }
2895      }
2896    });
2897  }
2898  function replaceVariables(template, variables) {
2899    var formattedString;
2900    for (var key in variables) {
2901      var value = variables[key];
2902      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
2903      formattedString = (formattedString || template).replace(regexp, value);
2904    }
2905    return formattedString;
2906  }
2907  function isTextEditorValue(obj) {
2908    return 'raw' in obj || 'gjs' in obj;
2909  }
2910  function getTextEditorValue(obj) {
2911    if (!obj.html) {
2912      return '';
2913    }
2914    var data = obj.html;
2915    var css = (obj.raw || obj.gjs || {}).css;
2916    if (css) {
2917      data = data + '<style>' + css + '</style>';
2918    }
2919    return data;
2920  }
2921
2922  /**
2923   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
2924   * strips out raw proprties and returns only HTML if it exists.
2925   * @param {Object} resources a collection retrieved from the database
2926   * @return {Object} the newly modified object.
2927   */
2928  function recursivelyParse(resources) {
2929    forEach(resources, function (value, key) {
2930      if (!value) {
2931        return;
2932      }
2933      if (value instanceof Object) {
2934        if (isTextEditorValue(value)) {
2935          resources[key] = getTextEditorValue(value);
2936          return;
2937        } else {
2938          return recursivelyParse(value);
2939        }
2940      }
2941      try {
2942        var parsedData = JSON.parse(value);
2943        if (isTextEditorValue(parsedData)) {
2944          resources[key] = getTextEditorValue(parsedData);
2945        }
2946      } catch (e) {
2947        // do nothing if we failed to parse value as JSON
2948      }
2949    });
2950    return resources;
2951  }
2952  function forEach(collection, iteratee) {
2953    var func = Array.isArray(collection) ? arrayEach : baseFor;
2954    return func(collection, iteratee);
2955  }
2956  function baseFor(object, iteratee) {
2957    if (!object) {
2958      return;
2959    }
2960    var iterable = Object(object);
2961    var props = Object.keys(object);
2962    var length = props.length;
2963    var index = -1;
2964    while (length--) {
2965      var key = props[++index];
2966      if (iteratee(iterable[key], key, iterable) === false) {
2967        break;
2968      }
2969    }
2970    return object;
2971  }
2972  function objSet(obj, path, value) {
2973    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
2974    pathArray.reduce((acc, key, i) => {
2975      if (acc[key] === undefined) acc[key] = {};
2976      if (i === pathArray.length - 1) acc[key] = value;
2977      return acc[key];
2978    }, obj);
2979  }
2980  function arrayEach(array, iteratee) {
2981    var index = -1;
2982    var length = array.length;
2983    while (++index < length) {
2984      if (iteratee(array[index], index, array) === false) {
2985        break;
2986      }
2987    }
2988    return array;
2989  }
2990  function selectPageRangeMode(e) {
2991    pageRange = e.matches ? mobilePageRange : desktopPageRange;
2992    renderPaginationList();
2993  }
2994  paginationMql.addEventListener('change', selectPageRangeMode);
2995})('section-5bb14518-9a5a-4131-b654-087e692a51d7', JSON.parse("{\"pageSize\":\"8\",\"resource\":\"posts\",\"pageRange\":1,\"variables\":{\"sort\":\"publishedAt\",\"limit\":8,\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"bda25091-f9eb-4ebc-b64e-6a6cfd5df967\",\"categoryId\":\"{{variables.categoryId}}\",\"postStatusId\":\"5f528253-abb7-484e-95c3-330269ac1102\"},\"hidePaginationOnFirstPage\":true,\"companyId\":\"bda25091-f9eb-4ebc-b64e-6a6cfd5df967\",\"usePageResource\":false,\"sectionIndex\":3,\"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}}"));
2996} catch(e) {
2997console.log(e);
2998}
2999                try {
3000(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
3001})('section-5bb14518-9a5a-4131-b654-087e692a51d7', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"companyId\":\"bda25091-f9eb-4ebc-b64e-6a6cfd5df967\",\"usePageResource\":false,\"sectionIndex\":3,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3002} catch(e) {
3003console.log(e);
3004}
3005                try {
3006(function init(sectionDomId) {
3007  var $contactForm = $('#' + sectionDomId + ' .newsletter-signup__form');
3008  $contactForm.find('.contact-form__reset').click(function (e) {
3009    e.preventDefault();
3010    $(this).closest('form').removeClass('success').trigger("reset");
3011  });
3012  $contactForm.find('input[name="name"]').on("keyup", function () {
3013    if (this.value.replaceAll(/\d/g, "").trim() === "") {
3014      this.setCustomValidity("Please enter your name.");
3015    } else {
3016      this.setCustomValidity("");
3017    }
3018  });
3019  const form = $("#" + sectionDomId).find("form");
3020  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
3021  form.on("reset", function () {
3022    redirectPage(redirectLink);
3023  });
3024  function redirectPage(link) {
3025    if (link.length) {
3026      const rawHref = link.attr('href');
3027      link.attr('href', setHttp(rawHref));
3028      link[0].click();
3029    }
3030  }
3031  function setHttp(link) {
3032    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
3033      link = 'http://' + link;
3034    }
3035    return link;
3036  }
3037})('section-d4307d3d-7cb0-461b-9790-4cbaf461428c', 'undefined');
3038} catch(e) {
3039console.log(e);
3040}
3041                try {
3042(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
3043})('section-800648be-b1a1-4e21-a1a6-e04b85375975', 'undefined');
3044} catch(e) {
3045console.log(e);
3046}
3047                try {
3048(function init(sectionDomId, options) {
3049  let section = null;
3050  switch (sectionDomId) {
3051    case 'NAVBAR':
3052      section = document.querySelector('body > nav, #global-navbar');
3053      break;
3054    case 'FOOTER':
3055      section = document.querySelector('body > footer, #global-footer');
3056      break;
3057    case 'SIDEMENU':
3058      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
3059      break;
3060    case 'CONTACT':
3061      section = document.querySelector('#modal-global-contact-us');
3062      break;
3063    case 'MOBILE_CONTACT':
3064      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
3065      break;
3066    case 'SUBSCRIBE':
3067      // Subscribe Not Implemented
3068      section = null;
3069      break;
3070    case 'ACCOUNT':
3071      // Account Not Implemented
3072      section = null;
3073      break;
3074    default:
3075      section = document.querySelector('#' + sectionDomId);
3076  }
3077  if (!section) {
3078    return;
3079  }
3080  var url = window.luxuryPresence.defaults.routerUrl;
3081  var companyId = window.luxuryPresence.defaults.companyId;
3082  var limit = options.limit || 8;
3083  if (typeof limit === 'string') {
3084    limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected
3085  }
3086  var templateSelector = options.templateSelector || '.jsIGTemplate';
3087  var containerSelector = options.containerSelector || '.jsIGContainer';
3088  var hasDataClass = options.hasDataClass || 'has-data';
3089  var hideActivateMessage = options.hasDataClass || false;
3090  var payload = {
3091    companyId: companyId,
3092    limit: limit
3093  };
3094  if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) {
3095    payload.resourceId = options.resourceId;
3096    // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase
3097    payload.resource = String(options.resource || 'agent').toUpperCase();
3098    payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true;
3099  }
3100  var query = 'query InstagramFeed (\n' + '  $companyId: ID!\n' + '  $instagramAuthorizationId: ID\n' + '  $username: String\n' + (payload.resourceId ? '$resource: InstagramContentAuthResourceEnum\n $resourceId: ID\n $fallbackToNoResource: Boolean' : '') + '  $limit: Int\n' + ') {\n' + '  instagramContentFeed (\n' + '  companyId: $companyId\n' + '  instagramAuthorizationId: $instagramAuthorizationId\n' + '  username: $username\n' + (payload.resourceId ? 'resource: $resource\n resourceId: $resourceId\n fallbackToNoResource: $fallbackToNoResource' : '') + '  limit: $limit\n' + '  ) {\n' + '    active\n' + '    feedUrl\n' + '    username\n' + '    items {\n' + '      id\n' + '      caption\n' + '      commentsCount\n' + '      likeCount\n' + '      mediaType\n' + '      mediaUrl\n' + '      permalink\n' + '      shortcode\n' + '      thumbnailUrl\n' + '      timestamp\n' + '      username\n' + '    }\n' + '  }\n' + '}\n';
3101  var templateHTML = section.querySelector(templateSelector)?.innerHTML || '';
3102  var template = Handlebars.compile(templateHTML);
3103  var container = section.querySelector(containerSelector);
3104  if (options.variables) {
3105    Object.keys(options.variables).forEach(function (key) {
3106      if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) {
3107        payload[key] = options.variables[key];
3108      }
3109    });
3110  }
3111  function getData() {
3112    var feed = {
3113      error: true
3114    };
3115    if (payload.companyId == null || payload.companyId === '') {
3116      // instagramContentFeed requires companyId (ID!) — nothing to fetch without it.
3117      // Checked after the options.variables merge, which may override the default.
3118      // Deferred so element listeners (attached after this template runs) still receive it.
3119      setTimeout(function () {
3120        section.dispatchEvent(new CustomEvent('ig-data', {
3121          detail: feed
3122        }));
3123      }, 0);
3124      return;
3125    }
3126    superagent.post(url + '/graphql').send({
3127      query: query,
3128      variables: payload
3129    }).then(res => {
3130      try {
3131        if (!res.body.errors) {
3132          feed = res.body.data.instagramContentFeed;
3133          if (!feed.active) {
3134            if (!hideActivateMessage && sectionDomId === 'section-temp' && container) {
3135              if (payload.resourceId) {
3136                container.innerHTML = '<div style="text-align: center">Instagram account is not connected to selected ' + payload.resource + '.<br /> Connect it on the ' + payload.resource + ' page</div>';
3137              } else {
3138                container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>';
3139              }
3140            }
3141          } else {
3142            if (feed.items.length) {
3143              if (hasDataClass) {
3144                section.classList.add(hasDataClass);
3145              }
3146              const feedName = feed.username;
3147              section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl));
3148              section.querySelectorAll('.jsIGName').forEach(name => {
3149                name.textContent = '@' + feedName;
3150                name.setAttribute('title', '@' + feedName);
3151              });
3152              if (container && template) {
3153                container.innerHTML = template(feed);
3154              }
3155            }
3156          }
3157        }
3158      } catch (e) {}
3159      section.dispatchEvent(new CustomEvent('ig-data', {
3160        detail: feed
3161      }));
3162    }).catch(e => {
3163      console.log('err', e);
3164      section.dispatchEvent(new CustomEvent('ig-data', {
3165        detail: feed
3166      }));
3167    });
3168  }
3169  getData();
3170})('section-aab683fa-2e6b-49e8-9307-d1c895d542e3', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"bda25091-f9eb-4ebc-b64e-6a6cfd5df967\",\"usePageResource\":false,\"sectionIndex\":6,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3171} catch(e) {
3172console.log(e);
3173}
3174                try {
3175(function init(sectionDomId) {
3176  const $section = $('#' + sectionDomId);
3177  var templateHTML = $section.find('.jsIGItem').html();
3178  var itemTemplate = templateHTML && Handlebars.compile(templateHTML);
3179  const $container = $section.find('.ig-feed-feed');
3180  const $topPrev = $section.find('.top-nav-prev');
3181  const $topNext = $section.find('.top-nav-next');
3182  const $bottomPrev = $section.find('.bottom-nav-prev');
3183  const $bottomNext = $section.find('.bottom-nav-next');
3184  let limit = 33;
3185  try {
3186    limit = parseInt($container[0].dataset['limit']);
3187  } catch (e) {}
3188  if (!limit) {
3189    limit = 33;
3190  }
3191  let igFeed = {};
3192  let usedWidth = 0;
3193  let slider = null;
3194  $section.on('ig-data', function (ev, feed) {
3195    feed = ev.detail || feed;
3196    igFeed = feed;
3197    if (feed.active && feed.items.length) {
3198      buildSlider();
3199    }
3200  });
3201  $(window).on('resize.lpui-auto-clean', onResize);
3202  let timer = null;
3203  function onResize() {
3204    clearTimeout(timer);
3205    timer = window.setTimeout(buildSlider, 50);
3206  }
3207  function getLayout(w, n) {
3208    if (w > 1100) {
3209      if (n > 7) {
3210        return {
3211          type: 'type1',
3212          single: 1,
3213          multi: n,
3214          slides: 3,
3215          slider: n > 9
3216        };
3217      }
3218      if (n > 5) {
3219        return {
3220          type: 'type1',
3221          single: 2,
3222          multi: n,
3223          slides: 3,
3224          slider: false
3225        };
3226      }
3227      return {
3228        type: 'type1',
3229        single: n,
3230        multi: n,
3231        slides: 3,
3232        slider: n > 3
3233      };
3234    } else if (w > 880) {
3235      if (n > 4) {
3236        return {
3237          type: 'type2',
3238          single: 1,
3239          multi: n,
3240          slides: 2.5,
3241          slider: n > 7
3242        };
3243      }
3244      return {
3245        type: 'type1',
3246        single: n,
3247        multi: n,
3248        slides: 3,
3249        slider: n > 3
3250      };
3251    } else if (w > 767) {
3252      if (n > 4) {
3253        return {
3254          type: 'type3',
3255          single: 1,
3256          multi: n,
3257          slides: 2,
3258          slider: n > 5
3259        };
3260      }
3261      return {
3262        type: 'type4',
3263        single: n,
3264        multi: n,
3265        slides: 2,
3266        slider: n > 2
3267      };
3268    } else if (w > 460) {
3269      return {
3270        type: 'type4',
3271        single: n,
3272        multi: n,
3273        slides: 2,
3274        slider: n > 2
3275      };
3276    }
3277    return {
3278      type: 'type5',
3279      single: n,
3280      multi: n,
3281      slides: 1,
3282      slider: n > 1
3283    };
3284  }
3285  function ensureClass($el, className) {
3286    if ($el.hasClass(className)) {
3287      return;
3288    }
3289    $el.addClass(className);
3290  }
3291  function makeSquare($el) {
3292    const el = $el[0];
3293    el.style.width = '';
3294    el.style.height = '';
3295    const rect = el.getBoundingClientRect();
3296    if (rect.width !== rect.height) {
3297      el.style.width = rect.height + 'px';
3298    }
3299  }
3300  function buildSlider() {
3301    const cWidth = $container[0].getBoundingClientRect().width;
3302    if (cWidth === usedWidth) {
3303      return;
3304    }
3305    $container.empty();
3306    slider = $('<div class="ig-feed-slider"></div>');
3307    const items = igFeed.items.slice(0, limit);
3308    const layout = getLayout(cWidth, items.length);
3309    let i = 0;
3310    let slide = null;
3311    while (i < layout.single) {
3312      slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider);
3313      i++;
3314    }
3315    while (i < layout.multi) {
3316      slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider);
3317      let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide);
3318      const lim = i + 4;
3319      while (i < lim && i < layout.multi) {
3320        slideContent.append(itemTemplate(items[i]));
3321        i++;
3322      }
3323    }
3324    $container.append(slider);
3325    if (layout.slider) {
3326      $topPrev.removeClass('hidden-control');
3327      $topNext.removeClass('hidden-control');
3328      $bottomPrev.removeClass('hidden-control');
3329      $bottomNext.removeClass('hidden-control');
3330      let prev, next;
3331      if ($bottomPrev.parent()[0].getBoundingClientRect().width) {
3332        prev = $bottomPrev;
3333        next = $bottomNext;
3334      } else {
3335        prev = $topPrev;
3336        next = $topNext;
3337        makeSquare($topPrev);
3338        makeSquare($topNext);
3339      }
3340      slider.children().each(function () {
3341        this.style.width = this.getBoundingClientRect().width + 'px';
3342      });
3343      slider.slick({
3344        dots: false,
3345        prevArrow: prev,
3346        nextArrow: next,
3347        slidesToScroll: 1,
3348        infinite: false,
3349        slidesToShow: layout.slides
3350      });
3351    } else {
3352      ensureClass($topPrev, 'hidden-control');
3353      ensureClass($topNext, 'hidden-control');
3354      ensureClass($bottomPrev, 'hidden-control');
3355      ensureClass($bottomNext, 'hidden-control');
3356    }
3357  }
3358})('section-aab683fa-2e6b-49e8-9307-d1c895d542e3', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"companyId\":\"bda25091-f9eb-4ebc-b64e-6a6cfd5df967\",\"usePageResource\":false,\"sectionIndex\":6,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3359} catch(e) {
3360console.log(e);
3361}
3362
3363            var { body } = document;
3364            var globalNav = body.querySelector(':scope > nav');
3365            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
3366
3367            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
3368                modalCloseBtn.addEventListener('click', function() {
3369                window.lpUI.hideClosestModal(modalCloseBtn);
3370              });
3371            });
3372
3373            window.addEventListener('click', function() {
3374                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
3375                    sharedPopup.style.display = 'none' ;
3376                });
3377            });
3378
3379            /* Misc Partials / Addons */
3380            function initWOW() {
3381                if (wow) {
3382                    wow.init();
3383                    wow.scrollHandler();
3384                    setTimeout(function () {
3385                        const wowHideStyle = document.getElementById('wow-hide-elements');
3386                        if(wowHideStyle) {
3387                            wowHideStyle.disabled = true;
3388                        }
3389                    }, 1);
3390                }
3391            }
3392
3393            const wowHideElements =  document.getElementById('wow-hide-elements');
3394            if (wowHideElements) {
3395               wowHideElements.disabled = false;
3396            }
3397
3398                initWOW();
3399
3400            /* Generic Navbar Handling */
3401            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
3402                hamburgerComponent.addEventListener('click', function() {
3403                window.lpUI.sideMenuToggle();
3404              });
3405            });
3406            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
3407                toggleEl.addEventListener('click', function() {
3408                window.lpUI.sideMenuToggle();
3409              });
3410            });
3411
3412            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
3413                linkEl.addEventListener('click', function(e) {
3414                  e.preventDefault();
3415                  e.stopPropagation();
3416                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
3417                  if (subNav && subNav.classList.contains('visible')){
3418                    subNav.classList.remove('visible');
3419                  } else {
3420                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
3421                      globalSubNav.classList.remove('visible');
3422                    });
3423                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
3424                        sideMenuSubNav.classList.remove('visible');
3425                    });
3426                    subNav?.classList.add('visible');
3427                  }
3428                });
3429            });
3430            window.addEventListener('click', function() {
3431                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
3432                    subNavEl.classList.remove('visible');
3433                });
3434            });
3435
3436        }
3437
3438        document.addEventListener('DOMContentLoaded', lpGlobalInit);
3439
3440    </script>
3440
3441
3442    
3442<script type="module">
3443    function selectorExists(selector) {
3444        return document.querySelector(selector) !== null;
3445    }
3446
3447    // Function to initialize the third-party library
3448    function initParoller(selector = '.my-paroller') {
3449        var $parollerElements = $(selector);
3450        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
3451            $parollerElements.paroller();
3452        }
3453    }
3454
3455    const parollerSelector = '.my-paroller';
3456
3457    if (selectorExists(parollerSelector)) {
3458        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
3459            initParoller(parollerSelector);
3460            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
3461        });
3462    }
3463    </script>
3463
3464
3465            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3465-3466
3465
3466            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3466GTM-T9SFQGHZ
vendor: 107 bytes, lines 3466-3468
3466"
3467            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3468            
3468<!-- End Google Tag Manager -->
3469        
3470            
3470<script
3471                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
3472                data-website-id="d1c655e7-3a6b-4818-8bf8-e4b0b6f106a0"
3473                
3474                defer></script>
vendor: 1 bytes, line 3474
3474
3475<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>
vendor: 1 bytes, line 3475
3475
3476<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:'a46a7a1228b6f862',t:'MTc5MTM1MDYzOA=='};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>
3476</body>
3477</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.