PageSourceSearch

https://crochetrealestate.com/blog

html crochetrealestate.com collected 2026-10-09 22:46:29 UTC 341,181 bytes, 3,436 lines download raw bytes

1<!DOCTYPE html>
2<html class="no-js" lang=en>
3<head>
4    <meta charset="utf-8">
5    <meta http-equiv="x-ua-compatible" content="ie=edge">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7    <meta name="twitter:card" content="summary_large_image">
8    <meta property="og:type" content="website">
9        <title>Blog | Crochet Real Estate Georgia Real Estate</title>
10        <meta property="og:title" content="Blog | Crochet Real Estate Georgia Real Estate">
11        <meta name="twitter:title" content="Blog | Crochet Real Estate Georgia Real Estate">
12        <meta property="og:image" content="https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid&#x3D;M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;1920">
13        <meta name="twitter:image" content="https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid&#x3D;M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;1920">
14        <meta property="og:url" content="https://crochetrealestate.com/blog">
15        <link rel="canonical" href="https://crochetrealestate.com/blog">
16    
16<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
16
17    <link rel="preconnect" href="https://fonts.googleapis.com">
18    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cormorant%20Garamond:300,300i,400,400i,500,500i,600,600i,700,700i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i">
20    <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'">
21    <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript>
22    <link rel="icon" type="image/x-icon" href="/favicon.ico">
23    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
24    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
25    <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
26    <style id="global-css">:root{--global-primary-font-family:'Cormorant Garamond',serif;--global-primary-font-family-short:Cormorant Garamond;--global-secondary-font-family:Roboto,sans-serif;--global-secondary-font-family-short:Roboto;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:70px;--global-h2-font-size:43px;--global-h3-font-size:30px;--global-h4-font-size:21px;--global-h5-font-size:17px;--global-h6-font-size:16px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:Roboto,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:'Cormorant Garamond',serif;}h1{font-size:70px;}h2{font-size:43px;}h3{font-size:30px;}h4{font-size:21px;}h5{font-size:17px;}h6{font-size:16px;}</style>
27        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/producer/index.css" />
28    <style id="website-css">body>div.mobile-contact-wrapper div.mobile-contact{bottom:150px;}@media only screen and (max-width: 768px){iframe[name='widgetCta']{bottom:55px!important;right:15px!important;}}iframe[name="widgetCta"]{bottom:70px!important;right:15px!important;}.lp-btn,.redesign .lp-btn{padding:20px 46px;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}@media only screen and (max-width: 1765px){div#modal-global-contact-us button.close{right:2vw;top:1vh;}}div.lp-disclaimer>a{-webkit-text-decoration:underline!important;text-decoration:underline!important;}footer#global-footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:40px;}div.lp-pagination.pagination-container .paginationjs ul li{margin:3px!important;}div.redesign .pagination-container .paginationjs ul li{margin:3px;}button.newsletter-signup__form-item{line-height:1;font-weight:700;}div#modal-global-contact-us .contact-form .section-message form{max-width:490px;}@media only screen and (max-width:1080px){div#modal-global-contact-us .contact-form h2{font-size:37px;}}@media only screen and (max-width:925px){div#modal-global-contact-us .contact-form h2{font-size:25px;}}div#modal-global-contact-us .close{top:4vh;}h1{text-transform:uppercase!important;}.lp-h1{text-transform:uppercase!important;}h2{text-transform:uppercase!important;}.lp-h2{text-transform:uppercase!important;}h3{text-transform:uppercase!important;}.lp-h3{text-transform:uppercase!important;}nav#global-navbar,nav#global-navbar div.content-container.header{background-color:#000!important;}div#global-sidemenu.sidemenu a,nav#global-navbar a{text-transform:uppercase;}div#global-sidemenu.sidemenu button,nav#global-navbar button{text-transform:uppercase;}nav#global-navbar .header .navigation .sub-nav ul{background-color:transparent;}nav#global-navbar .header .navigation .sub-nav ul li{background-color:rgba(255,255,255,0.9);}nav#global-navbar .header .navigation .sub-nav ul li:hover{background-color:rgba(255,255,255,1);}nav#global-navbar .header .navigation .sub-nav ul a{color:#000;}nav#global-navbar.scroll{background-color:#000!important;}nav#global-navbar.scroll li.navigation__item a.navigation__link{color:#fff;}nav#global-navbar.scroll li.navigation__item a.navigation__link span:after{background-color:#fff;}nav#global-navbar.scroll button.hamburger-component.hamburger{color:#fff;}footer .footer .info-privacy .powered_zone a{font-weight:400;}footer .footer .info-privacy .copy_zone a{font-weight:400;}div#modal-global-contact-us a.lp-link{font-weight:normal;color:#fff!important;}div#modal-global-contact-us a.lp-link:before{background-color:#aaa;}div#modal-global-contact-us a.lp-link:after{background-color:#fff;}div#modal-global-contact-us a.lp-link:hover{color:#aaa!important;}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:22px!important;}#modal-global-contact-us .contact-form .info-zone_contact .info-zone_contact_cell{margin-bottom:22px;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;font-weight:400;}#modal-global-contact-us .contact-form .section-message label{color:#fff!important;}label.lp-label{text-transform:uppercase!important;}nav#global-navbar .header{padding-top:5px;padding-bottom:5px;height:auto;}nav#global-navbar .header .logo{max-height:80px;}@media only screen and (min-width:768px){nav#global-navbar .header .logo a.logo__link img{max-height:70px;}}nav#global-navbar .header .logo a.logo__link img{max-height:50px!important;}</style>
29    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
30        <style id="page-css">
31            #section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(0, 0, 0, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:rgba(0, 0, 0, 1);--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.4));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&ixlib=rb-4.1.0&q=80&w=1280');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:600px;-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;}#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro .container{z-index:1;text-align:center;max-width:900px;}#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro__title{margin-bottom:0px;font-weight:400;margin-bottom:24px;}@media (max-width: 768px){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro__title{font-size:32px;}}@media (max-width: 360px){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro__title{font-size:22px;}}#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro__subtitle{font-weight:400;white-space:pre-line;font-size:21px;line-height:1.57;}@media (max-width: 768px){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .custom-intro__subtitle{font-size:18px;}}#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2 .description{margin-bottom:15px;}@media (min-width: 960px) and (orientation: landscape){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&ixlib=rb-4.1.0&q=80&w=1280');}}@media (min-width: 1280px) and (orientation: landscape){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&ixlib=rb-4.1.0&q=80&w=1920');}}@media (min-width: 1920px) and (orientation: landscape){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&ixlib=rb-4.1.0&q=80&w=2560');}}@media (min-width: 2560px) and (orientation: landscape){#section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://images.unsplash.com/photo-1702494600481-043a92b6271e?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGF0bGFudGF8ZW58MHx8fHwxNzkwMzg0ODI3fDA&ixlib=rb-4.1.0&q=80&w=3456');}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#fff;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list{padding:120px 0;position:relative;z-index:1;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list .center-items{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
31-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:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;max-width:1282px;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container{padding:0;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container.hide-date .blog-list__item-date{display:none;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container.hide-author .blog-list__item-author{display:none;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container.hide-author .blog-list__item-date{margin-left:0;padding-left:0;border-left:none;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__container .blog-list__item{background-color:#fff;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__section-title,#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list .description{text-align:center;margin-bottom:50px;max-width:75%;margin-left:auto;margin-right:auto;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__section-title,#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list .description{max-width:100%;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item{width:calc(50% - 18px);margin-bottom:34px;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item{width:100%;margin-bottom:32px;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-116px;left:60%;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-25px;left:40%;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-image{padding-top:70.16%;position:relative;background-color:#808080;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-image img{position:absolute;object-fit:cover;height:100%;width:100%;top:0;z-index:0;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content{padding:46px 36px;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content{padding:40px 25px;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content h4{margin:0 0 36px;position:relative;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content h4{margin:0 0 38px;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content h4:after{content:'';position:absolute;bottom:-17px;left:-116px;right:60%;height:1px;background-color:#c0c0c0;}@media(max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content h4:after{right:40%;left:-25px;bottom:-21px;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-content .link{display:inline-block;margin-top:36px;text-transform:uppercase;font-size:14px;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-details{list-style-type:none;display:block;margin:0 0 9px;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-details >li{display:inline-block;position:relative;font-size:14px;font-weight:700;line-height:1.4;text-transform:uppercase;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .blog-list__item-details >li+li{margin-left:3px;padding-left:5px;border-left:2px solid;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .search-container{margin-bottom:48px;}@media (max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .search-container{margin-bottom:32px;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .search-container__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;gap:12px;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .search-container__row:has(.lp-btn.lp-i--chevron-down){-webkit-box-pack:justify;
31-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .search-container__row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .input-container{width:100%;max-width:485px;position:relative;}@media (max-width: 1024px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .input-container{max-width:350px;}}@media (max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .input-container{max-width:100%;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .input-container .lp-input{height:50px;width:100%;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .input-container .search-icon{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .empty-results{text-align:center;display:none;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .empty-results.visible{display:block;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .filter-container{padding-top:16px;display:none;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .category-cell{margin:0 8px 8px 0;border-width:2px;padding:10px 15px;opacity:.3;position:relative;cursor:pointer;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .category-cell.active{opacity:1;}@media(hover: hover) and (pointer: fine){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .category-cell:hover{opacity:1;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .lp-btn.lp-i--chevron-down{display:none;gap:10px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .lp-btn.lp-i--chevron-down{width:100%;}}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .lp-btn.lp-i--chevron-down:before{-webkit-transition:-webkit-transform .3s;transition:transform .3s;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .lp-btn.lp-i--chevron-down.active:before{-webkit-transform:scaleY(-1);-moz-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d .category{position:absolute;top:0;left:0;background-color:#fff;color:#000;padding:8px 34px;font-size:14px;font-weight:700;line-height:24px;letter-spacing:1.5px;text-transform:uppercase;z-index:2;}#section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d>div:last-child{padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.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/https://media-production.lp-cdn.com/media/ohqdcw4gwmmu94k2bepw');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de.parallax-enabled{-webkit-clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);clip-path:polygon(0px 0px, 100% 0%, 100% 100%, 0% 100%);}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .container{text-align:center;max-width:750px;min-height:689px;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;
31-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:50px;padding-bottom:50px;position:relative;z-index:1;}@media (max-width: 768px){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us h2{padding-bottom:40px;}}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us h2:after{content:'';position:absolute;bottom:0;left:50%;margin-left:-55px;width:110px;height:1px;background-color:var(--fontColor, #ffffff);}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .description{margin-bottom:40px;}}#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de .redesign.work-with-us .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}@media (min-width: 960px) and (orientation: landscape){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de{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/ohqdcw4gwmmu94k2bepw');}}@media (min-width: 1280px) and (orientation: landscape){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de{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/ohqdcw4gwmmu94k2bepw');}}@media (min-width: 1920px) and (orientation: landscape){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de{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/ohqdcw4gwmmu94k2bepw');}}@media (min-width: 2560px) and (orientation: landscape){#section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de{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/ohqdcw4gwmmu94k2bepw');}}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#f1f1f1;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#f1f1f1;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .nav-button{border:2px solid #000!important;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .nav-button:hover{border:2px solid #000!important;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed{padding:80px 0;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .title{margin:0 20px 0 0;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .instagram-link .instagram-name{display:inline;margin:0;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .title+.instagram-link{margin-top:5px;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .follow-button{margin:20px 0 0 0;display:block;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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;
31-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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-nav-prev{margin-left:30px;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-nav-next{margin-left:10px;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .hidden-control{display:none;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single:first-child,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi:first-child{margin-left:auto;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single:last-child,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi:last-child{margin-right:auto;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single.type2,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi.type2{width:calc(100% / 5 * 2);}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single.type3,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi.type3{width:calc(100% / 2);}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single.type4,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi.type4{width:calc(100% / 2);}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single.type5,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-container{padding:0;width:100%;}}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-item:hover .video-icon{opacity:0;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single .ig-feed-item__info{padding:15%;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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;
31-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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .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-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-right,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .title,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .instagram-link{margin-right:0;text-align:center;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-nav-prev,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .top-nav-next{display:none;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .ig-feed{display:none;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb .has-data .ig-feed{display:block;}#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb.has-data .ig-feed,#section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb#section-temp .ig-feed{display:block;}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .description{margin-bottom:15px;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}
31@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;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;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;
31left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;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;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{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;min-height:70px;padding:8px 0 7px;width:100%;}nav .header .logo{z-index:911;position:relative;margin-right:10px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:300px;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}
31nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;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;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:'';position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{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;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:'';display:block;width:26px;height:2px;background-color:currentColor;position:absolute;left:0;top:0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before{-webkit-transform:translateY(-9px);-moz-transform:translateY(-9px);-ms-transform:translateY(-9px);transform:translateY(-9px);}nav .header .hamburger__bars:after{-webkit-transform:translateY(9px);-moz-transform:translateY(9px);-ms-transform:translateY(9px);transform:translateY(9px);}nav .header .hamburger:hover{text-shadow:.5px 0 0,-.5px 0 0;}nav .header .hamburger:hover .hamburger__bars:before{-webkit-transform:translateY(-7px);-moz-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px);}nav .header .hamburger:hover .hamburger__bars:after{-webkit-transform:translateY(7px);-moz-transform:translateY(7px);-ms-transform:translateY(7px);transform:translateY(7px);}nav .header .hamburger.active .hamburger__bars{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);opacity:0;}nav .header .hamburger.active .hamburger__bars:before{display:none;}nav .header .hamburger.active .hamburger__bars:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .content-container{-webkit-transition:0.2s all ease;transition:0.2s all ease;}nav.scroll .content-container,nav .scroll .content-container{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}nav.scroll .content-container .navigation__link,nav .scroll .content-container .navigation__link{visibility:visible!important;}nav.scroll .content-container .navigation .sub-nav,nav .scroll .content-container .navigation .sub-nav{-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav.scroll .content-container .navigation .sub-nav ul,nav .scroll .content-container .navigation .sub-nav ul{padding:0;}nav.scroll .content-container .navigation .sub-nav.visible,nav .scroll .content-container .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, calc(100% + 23px));-moz-transform:translate(0, calc(100% + 23px));-ms-transform:translate(0, calc(100% + 23px));transform:translate(0, calc(100% + 23px));}nav .dark-opening{background-color:rgb(26, 26, 26)!important;}nav nav.dark-opening .header{margin-top:0;}nav #ctaShowButton,nav #ctaMessage{display:none!important;}nav #ctaShowButton{display:none;opacity:0;pointer-events:none;}nav .search{cursor:pointer;}nav .search svg{display:block;}nav .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;
31-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}body>div.sidemenu{background-color:#fff;color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:20px;padding-right:20px;}}body>div.sidemenu .sidebar__close{position:absolute;right:30px;top:30px;display:inline-block;width:38px;height:38px;padding:10px;border:none;border-radius:0;background:transparent;color:inherit;z-index:1;cursor:pointer;}body>div.sidemenu .sidebar__close:before,body>div.sidemenu .sidebar__close:after{content:'';display:block;width:22px;height:2px;background-color:currentColor;position:absolute;left:50%;top:50%;}body>div.sidemenu .sidebar__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 .sidebar__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);}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:10px;top:10px;}}body>div.sidemenu .sidebar__close:focus{outline:none;}body>div.sidemenu .sidebar__nav{list-style:none;padding:0;margin:auto 0;}body>div.sidemenu .sidebar__nav-item{margin:0;padding-top:4px;padding-bottom:4px;border-bottom:1px solid hsla(
32      var(--bgColor_H, 0),
33      var(--bgColor_S, 0%),
34      calc(50% + (var(--bgColor_L, 100%) - 50%) * 0.9),
35      var(--bgColor_A, 1)
36    );}body>div.sidemenu .sidebar__nav-link{display:inline-block;padding:10px;border:none;border-radius:0;background:transparent;text-transform:none;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__nav-link:focus{outline:none;}body>div.sidemenu .sidebar__subnav{list-style:none;padding:4px 0 10px;margin:0;font-size:17px;}@media (max-width: 767px){body>div.sidemenu .sidebar__subnav{font-size:14px;letter-spacing:.3px;}}body>div.sidemenu .sidebar__subnav-item{margin-bottom:10px;}body>div.sidemenu .sidebar__subnav-item:last-child{margin-bottom:0;}body>div.sidemenu .sidebar__subnav-link{display:inline-block;padding:0;border:none;border-radius:0;background:transparent;text-transform:none;opacity:.7;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__subnav-link:focus{outline:none;}body>div.sidemenu .sub-nav{visibility:hidden;opacity:0;max-height:0;-webkit-transition:all .3s;transition:all .3s;}body>div.sidemenu .sub-nav.visible{display:block;visibility:visible;opacity:1;max-height:100vh;}body>div.sidemenu .sub-nav.visible+.main-nav{color:#7a7a7a;}body>div.sidemenu .sub-nav.visible+.main-nav:after{margin-left:40px;border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}body>div.sidemenu .sub-nav-container:hover .main-nav:after{border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container .main-nav{position:relative;display:inline-block;}body>div.sidemenu .sub-nav-container .main-nav:after{content:'';display:inline-block;position:relative;width:8px;height:8px;margin-left:25px;-webkit-transform:rotate(45deg) translateX(-100%);-moz-transform:rotate(45deg) translateX(-100%);-ms-transform:rotate(45deg) translateX(-100%);transform:rotate(45deg) translateX(-100%);border-bottom:2px solid var(--fontColor, #000000);border-right:2px solid var(--fontColor, #000000);top:0;bottom:auto;left:auto;-webkit-transition:0.5s all ease;transition:0.5s all ease;background-color:transparent;}body>div.sidemenu #main-section .sidebar{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);}footer{background-color:#fff;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;--greyColor:hsla(
37var(--fontColor_H),
38var(--fontColor_S),
39calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
40var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla(
41      var(--fontColor_H),
42      var(--fontColor_S),
43      calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
44      var(--fontColor_A));}footer .redesign .inp--dark-bg input:hover{border-color:var(--fontColor);}footer .redesign .inp+.inp{margin-top:24px;}footer .redesign .btn--primary-light{border-color:var(--fontColor);color:var(--fontColor);}footer .redesign .btn--primary-light:hover{background-color:var(--fontColor);color:var(--bgColor);}footer.is-background-color-light .redesign .btn--primary-light{border-width:1px;}footer .redesign .socials--grey{-webkit-box-pack:end;-ms-flex-pack:end;
44-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla(
45      var(--bgColor_H),
46      var(--bgColor_S),
47      calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15),
48      var(--bgColor_A));color:var(--greyColor);}footer .redesign .socials--grey .socials__link svg{fill:var(--greyColor);}footer .redesign .socials--grey .socials__link:hover{background-color:hsla(
49        var(--bgColor_H),
50        var(--bgColor_S),
51        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4),
52        var(--bgColor_A));color:var(--fontColor);}footer .redesign .socials--grey .socials__link:hover svg{fill:var(--fontColor);}footer .redesign.footer .grey-text{color:var(--fontColor);}footer .footer{position:relative;padding-top:60px;padding-bottom:30px;}@media (max-width: 560px){footer .footer{padding-top:10px;}}@media (max-width: 500px){footer .footer{padding-bottom:70px;}}footer .footer .text_content_wrap p{margin-bottom:15px;}footer .footer .text_content_wrap p:last-of-type{margin-bottom:0;}footer .footer .container{max-width:1440px;}@media (max-width: 768px){footer .footer .container{padding-left:25px;padding-right:25px;}}@media (max-width: 560px){footer .footer .container{padding-left:20px;padding-right:20px;}}footer .footer h3{margin:0 0 15px 0;}footer .footer h5{text-transform:capitalize;}footer .footer .info-wrap{margin-bottom:40px;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 .info-wrap .agent_box{width:70%;}@media (max-width: 1280px){footer .footer .info-wrap .agent_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .agent_box{width:100%;}}footer .footer .info-wrap .newsletter_box{width:30%;}@media (max-width: 1280px){footer .footer .info-wrap .newsletter_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box{width:100%;}}footer .footer .info-wrap .newsletter_box--padding{padding-top:44px;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box--padding{padding-top:0;}}footer .footer .info-wrap .newsletter_box .contact_title{margin-bottom:13px;line-height:1.6;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_cell{margin-bottom:0;padding-left:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .icon_text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:22px;position:relative;}footer .footer .info-wrap .newsletter_box .icon_text i{position:relative;width:30px;margin-right:20px;}footer .footer .info-wrap .newsletter_box .icon_text .contact_title{margin-bottom:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_zone{margin-bottom:0;}}footer .footer .info-wrap-contact{position:relative;}footer .footer .info-wrap-contact_zone{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-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:39px;}@media (max-width: 768px){footer .footer .info-wrap-contact_zone{margin-bottom:21px;}footer .footer .info-wrap-contact_zone:last-child{margin-bottom:51px;}}footer .footer .info-wrap-contact_zone i{position:absolute;left:0;display:block;}footer .footer .info-wrap-contact_zone i svg path{fill:currentColor;}footer .footer .info-wrap-contact_zone h4{margin:0 0 13px 0;width:100%;}footer .footer .info-wrap-contact_cell{position:relative;padding-left:50px;width:400px;font-size:14px;text-transform:uppercase;font-weight:bold;letter-spacing:1.5px;}@media (max-width: 1280px){footer .footer .info-wrap-contact_cell:first-of-type{margin-bottom:21px;}}footer .footer .info-wrap-contact_cell .contact_title{line-height:1;margin-bottom:5px;}footer .footer .info-wrap-contact_link{color:var(--greyColor);position:relative;}@media (max-width: 560px){footer .footer .info-wrap-contact_link{letter-spacing:0;}}footer .footer .hvr_animation{position:relative;-webkit-text-decoration:none!important;text-decoration:none!important;}footer .footer .hvr_animation:after{content:'';position:absolute;
52left:0;bottom:0;width:0%;height:1px;background:var(--greyColor);-webkit-transition:.3s linear;transition:.3s linear;}footer .footer .hvr_animation:hover:after{width:100%;}footer .footer .hvr_animation.underlined:after{width:100%;}footer .footer .hvr_animation.underlined:hover:after{width:0%;}footer .footer .form-content{padding:0!important;}footer .footer .form-content label{color:var(--fontColor);text-transform:none;letter-spacing:1;}footer .footer .form-content input{padding:2px 24px 2px 0;}footer .footer .form-content .subscribe_btn{margin-top:20px;position:relative;}footer .footer .form-content .subscribe_btn i{font-size:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;}footer .footer .form-content.success i{opacity:1;}footer .footer .form-content.success .subscribe_btn span{opacity:0;}footer .footer .form-content.success .hide{opacity:0;}footer .footer .form-content.success .hide +span{opacity:1;}footer .footer .text_footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:39px;}@media (max-width: 1280px){footer .footer .text_footer{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){footer .footer .text_footer{text-align:center;}}footer .footer .text_footer p{white-space:normal;}footer .footer .text_footer .images_box{max-width:186px;width:100%;margin-right:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 560px){footer .footer .text_footer .images_box{margin:0 auto 20px auto;}}@media (max-width: 1280px){footer .footer .text_footer .img_size{margin-bottom:20px;}}@media (max-width: 560px){footer .footer .text_footer .img_size{margin-bottom:0;}}footer .footer .text_footer .img_size img{width:100%;height:100%;object-fit:contain;}footer .footer .first_text_footer .img_size{width:100%;height:63px;}footer .footer .first_text_footer .img_size img{width:100%;height:100%;object-fit:contain;}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:51px;}}footer .footer .second_text_footer .first_img_size{width:45px;height:45px;margin-right:15px;}footer .footer .second_text_footer .second_img_size{width:100px;height:45px;}@media (max-width: 560px){footer .footer .second_text_footer{margin-bottom:21px;}}footer .footer .info-privacy{padding-top:45px;padding-bottom:30px;border-top:1px solid hsla(
53        var(--bgColor_H),
54        var(--bgColor_S),
55        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
56        var(--bgColor_A));}@media (max-width: 768px){footer .footer .info-privacy{padding-top:0;border-top:none;}}footer .footer .info-privacy__row{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-privacy .copy_zone{font-size:18px;}@media (min-width: 1350px){footer .footer .info-privacy .copy_zone{text-align:center;}}@media (min-width: 1281px){footer .footer .info-privacy .copy_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 768px){footer .footer .info-privacy .copy_zone{text-align:center;margin-bottom:10px;padding-top:45px;border-top:1px solid hsla(
57            var(--bgColor_H),
58            var(--bgColor_S),
59            calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
60            var(--bgColor_A));}}footer .footer .info-privacy .copy_zone a{color:var(--greyColor);}footer .footer .info-privacy .powered_zone{font-size:18px;}@media (min-width: 1281px){footer .footer .info-privacy .powered_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 1280px){footer .footer .info-privacy .powered_zone{text-align:center;}}@media (max-width: 768px){footer .footer .info-privacy .powered_zone{text-align:center;margin-bottom:24px;}}footer .footer .info-privacy .powered_zone a{color:var(--greyColor);}@media (min-width: 1281px){footer .footer .info-privacy .socials_zone{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 1280px){footer .footer .info-privacy .socials_zone{width:100%;margin-top:20px;-webkit-box-pack:start;-ms-flex-pack:start;
60-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer .info-privacy .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:0;margin-bottom:20px;}footer .footer .info-privacy .socials_zone li{padding:0 7px 10px 7px;}}footer .footer.one_contact .type_user{margin-bottom:73px;}@media (max-width: 768px){footer .footer.one_contact .type_user{margin-bottom:51px;}}footer .footer.no_newsletter h3{margin-bottom:46px;}footer .footer.no_newsletter .newsletter_box{display:none;}footer .footer.no_newsletter .info-wrap-contact{width:calc(70% + 230px);width:100%;padding-left:230px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact{width:100%;}}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_cell{width:50%;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_cell{width:100%;}}footer .footer.no_newsletter .info-wrap-contact h4{position:absolute;margin-top:-8px;left:0;max-width:200px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;width:100%;margin-bottom:20px;margin-top:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;}}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:71px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:39px;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:51px;}}footer .footer.no_newsletter .info-wrap-contact_zone:last-child{margin-bottom:0;}footer .footer.no_icon .info-wrap-contact_cell{padding-left:0;}footer .footer.no_icon .info-wrap-contact_cell i{display:none;}footer .footer.no-names .info-wrap-contact{padding-left:0;}footer .form-row{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: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;margin-left:-15px;margin-right:-15px;}@media (min-width: 1281px){footer .form-row{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 900px){footer .form-row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:15px;padding-right:15px;}@media (min-width: 768px){footer .form-col{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}}@media (min-width: 768px){footer .form-col--socials{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}@media (min-width: 1281px){footer .form-col--socials{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;}}@media (max-width: 768px){footer .form-col--socials{-webkit-order:-1;-ms-flex-order:-1;order:-1;}}@media (min-width: 1281px){footer .form-col--xl-auto{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}}footer .additional-links-separator{display:block;width:100%;height:0;overflow:hidden;}@media (min-width: 768px){footer .additional-links-separator{display:inline;width:auto;height:auto;}footer .additional-links-separator:before{content:"|";}}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .img-wrap{max-width:100px;width:100%;display:block;margin-right:20px;}@media (max-width: 900px){footer .img-wrap{margin-right:0;margin-bottom:10px;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .powered-box{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-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;}@media (max-width: 900px){footer .powered-box{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col--copyright{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:10px 0;}footer .luxury-link{white-space:nowrap;}footer .footer__disclaimers{padding-top:24px;padding-bottom:24px;}@media (max-width: 900px){footer .footer__disclaimers{text-align:center;}}body>div.mobile-contact-wrapper .mobile-contact{display:none;position:fixed;right:30px;bottom:25px;z-index:91;}body>div.mobile-contact-wrapper .mobile-contact a{-webkit-text-decoration:none;text-decoration:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
60-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:55px;height:55px;margin-bottom:15px;background-color:#fff;font-size:22px;border:2px solid hsla(0,0%,49.8%,.3);border-radius:90px;margin-left:1px;}body>div.mobile-contact-wrapper .mobile-contact a i{color:#000;}body>div.mobile-contact-wrapper .mobile-contact .buttons-holder{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}body>div.mobile-contact-wrapper .mobile-contact.dark a{background-color:#000;}body>div.mobile-contact-wrapper .mobile-contact.dark a i{color:#fff;}@media (max-width: 560px){body>div.mobile-contact-wrapper .mobile-contact{display:block;}}
61        </style>
62    <style id="custom-style-css">.pagination-style-1 li a{color:rgba(0, 0, 0, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 1)!important;border-color:rgba(0, 0, 0, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 1)!important;border-color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:rgba(26, 26, 26, 1)!important;}.button-style-1{color:rgba(0,0,0,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0,0,0,1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(0,0,0,1)!important;border-color:rgba(0, 0, 0, 1)!important;}.social_icons-style-1 a{border-color:rgba(0, 0, 0, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(0, 0, 0, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(0, 0, 0, 1)!important;background-color:rgba(0, 0, 0, 1)!important;color:rgba(255,255,255,1)!important;}.social_icons-style-1 a i{color:inherit!important;}
62.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(0, 0, 0, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(255, 255, 255, 0.7)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li.active a{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.button-style-3{color:rgba(94, 94, 94, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(94, 94, 94, 1)!important;}.button-style-3:hover{color:rgba(255,255,255,1)!important;background-color:rgba(94, 94, 94, 1)!important;border-color:rgba(94, 94, 94, 1)!important;}.button-style-4{color:rgba(192, 192, 192, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(192, 192, 192, 1)!important;}.button-style-4:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(192, 192, 192, 1)!important;border-color:rgba(192, 192, 192, 1)!important;}.button-style-5{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 1)!important;border-color:rgba(0, 0, 0, 1)!important;}.button-style-5:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(0, 0, 0, 0.01)!important;border-color:rgba(0, 0, 0, 1)!important;}.button-style-6{color:#000000!important;background-color:#FFFFFF!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-6:hover{color:#FFFFFF!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#FFFFFF!important;}</style>
63        <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode
64             defaults, and dynamically loads the locale + main (and banner if needed). -->
65        
65<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="db633698-1cbe-4d33-a362-b83e8348acd5"></script>
65
66
67
68        
68<script>
69            (function utmParse() {
70                const url = new URL(window.location.href);
71                if (url.search) {
72                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
73                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
74                        if (matched) {
75                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
76                        }
77                        return acc;
78                    }, {});
79                    if (Object.keys(utm).length) {
80                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
81                    } else {
82                        // Remove old utm vars
83                        window.localStorage.removeItem('utm_vars');
84                    }
85                }
86                // Set referrer in local storage
87                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
88                if (!window.localStorage.getItem('referrer')) {
89                    // Capture the Referrer URL
90                    const referrer = document.referrer;
91                    if (referrer) {
92                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
93                        const currentDomain = window.location.hostname;
94                        const referrerDomain = new URL(referrer).hostname;
95
96                        if (referrerDomain !== currentDomain) {
97                            // Store it in localStorage
98                            localStorage.setItem('referrer', referrer);
99                        }
100                    }
101                }
102            })();
103        </script>
103
104        <meta name="msvalidate.01" content="6EF94D90B750F0CF0352C86E9713C7C3" />
105    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
106</head>
107<body>
108    <div id="google_translate_element" style="display: none"></div>
109
110        <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b">
111            <div class="redesign">
112  <div class="content-container header">
113    <div class="container header__container">
114      <div class="navbar">
115        <div class="logo">
116          <a href="/" class="logo__link">
117            <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/93d52135-f2a9-4456-8666-f94649772612" 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/93d52135-f2a9-4456-8666-f94649772612 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/93d52135-f2a9-4456-8666-f94649772612 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/93d52135-f2a9-4456-8666-f94649772612 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/93d52135-f2a9-4456-8666-f94649772612 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/93d52135-f2a9-4456-8666-f94649772612 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/93d52135-f2a9-4456-8666-f94649772612 3456w" class="logo__img light" alt="">
118            <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/02475525-1c39-4b20-a5d0-d392f2afbdbc" 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 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/02475525-1c39-4b20-a5d0-d392f2afbdbc 3456w" class="logo__img dark" alt="">
119          </a>
120        </div>
121        <div class="navigation">
122          <ul>
123            <li class="navigation__item">
124              <a  href="/properties" class="navigation__link wow fadeInUp" data-wow-delay="2.0"><span>Portfolio</span></a>
125            </li>
126            <li class="navigation__item sub-nav-container">
127              <a href="#" class="navigation__link wow fadeInUp">Property Search</a>
128              <div class="sub-nav">
129                <ul>
130                  <li class="sub-nav__item"><a  href="/home-search/listings" class="nav-link sub-nav__link feature"><span>Home Search</span></a></li>
131                  <li class="sub-nav__item"><a  href="/druid-hills-homes-for-sale" class="nav-link sub-nav__link feature"><span>Druid Hills</span></a></li>
132                  <li class="sub-nav__item"><a  href="/decatur-homes-for-sale" class="nav-link sub-nav__link feature"><span>Decatur</span></a></li>
133                  <li class="sub-nav__item"><a  href="/morningside-homes-for-sale" class="nav-link sub-nav__link feature"><span>Morningside</span></a></li>
134                  <li class="sub-nav__item"><a  href="/north-decatur-homes-for-sale" class="nav-link sub-nav__link feature"><span>North Decatur</span></a></li>
135                  <li class="sub-nav__item"><a  href="/virginia-highland-homes-for-sale" class="nav-link sub-nav__link feature"><span>Virginia Highland</span></a></li>
136                  <li class="sub-nav__item"><a  href="/lavista-park-homes-for-sale" class="nav-link sub-nav__link feature"><span>Lavista Park</span></a></li>
137                </ul>
138              </div>
139            </li>
140            <li class="navigation__item">
141              <a  href="/home-valuation" class="navigation__link wow fadeInUp" data-wow-delay="2.2"><span>Home Valuation</span></a>
142            </li>
143            <li class="navigation__item">
144              <a  href="/Elevate" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>Crochet Elevate</span></a>
145            </li>
146            <li class="navigation__item">
147              <a  href="/all-cash-offer" class="navigation__link wow fadeInUp" data-wow-delay="2.4"><span>All Cash Offer</span></a>
148            </li>
149            <li class="navigation__item">
150              <a  href="/join-our-team" class="navigation__link wow fadeInUp" data-wow-delay="2.5"><span>Join Us</span></a>
151            </li>
152            <li class="navigation__item">
153              <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Contact Us</span></a>
154            </li>
155          </ul>
156        </div>
157        <div class="buttons-wrapper">
158          <button type="button" class="hamburger-component hamburger">
159            <span class="hamburger__bars"></span>
160          </button>
161        </div>
162      </div>
163    </div>
164  </div>
165</div>
166
167        </nav>
168        <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18">
169            <div class="sidebar">
170  
171  <button class="toggle sidebar__close close"></button>
172  <div class="sidebar__content">
173
174    <ul class="sidebar__nav">
175      <li class="sidebar__nav-item">
176        <a  href="/" class="sidebar__nav-link">Home</a>
177      </li>
178      <li class="sidebar__nav-item">
179        <a  href="/team" class="sidebar__nav-link">Meet the Team</a>
180      </li>
181      <li class="sidebar__nav-item">
182        <a  href="/properties" class="sidebar__nav-link">Portfolio</a>
183      </li>
184      <li class="sidebar__nav-item sub-nav-container">
185        <div class="sub-nav">
186          <ul class="sidebar__subnav">
187            <li class="sidebar__subnav-item"><a  href="/home-search/listings" class="sidebar__subnav-link">Home Search</a></li>
188            <li class="sidebar__subnav-item"><a  href="/druid-hills-homes-for-sale" class="sidebar__subnav-link">Druid Hills</a></li>
189            <li class="sidebar__subnav-item"><a  href="/decatur-homes-for-sale" class="sidebar__subnav-link">Decatur</a></li>
190            <li class="sidebar__subnav-item"><a  href="/morningside-homes-for-sale" class="sidebar__subnav-link">Morningside</a></li>
191            <li class="sidebar__subnav-item"><a  href="/north-decatur-homes-for-sale" class="sidebar__subnav-link">North Decatur</a></li>
192            <li class="sidebar__subnav-item"><a  href="/virginia-highland-homes-for-sale" class="sidebar__subnav-link">Virginia Highland</a></li>
193            <li class="sidebar__subnav-item"><a  href="/lavista-park-homes-for-sale" class="sidebar__subnav-link">Lavista Park</a></li>
194          </ul>
195        </div>
196        <a href="#" class="sidebar__nav-link link main-nav">Property Search</a>
197      </li>
198      <li class="sidebar__nav-item">
199        <a  href="/Elevate" class="sidebar__nav-link">Crochet Elevate Program</a>
200      </li>
201      <li class="sidebar__nav-item">
202        <a  href="/home-valuation" class="sidebar__nav-link">Home Valuation</a>
203      </li>
204      <li class="sidebar__nav-item">
205        <a  href="/neighborhoods" class="sidebar__nav-link">Neighborhoods</a>
206      </li>
207      <li class="sidebar__nav-item">
208        <a  href="/testimonials" class="sidebar__nav-link">Testimonials</a>
209      </li>
210      <li class="sidebar__nav-item">
211        <a  href="/press" class="sidebar__nav-link">Press</a>
212      </li>
213      <li class="sidebar__nav-item">
214        <a  href="/all-cash-offer" class="sidebar__nav-link">All Cash Offer</a>
215      </li>
216      <li class="sidebar__nav-item">
217        <a  href="/blog" class="sidebar__nav-link">Blog</a>
218      </li>
219      <li class="sidebar__nav-item">
220        <a  href="/join-our-team" class="sidebar__nav-link">Join Us</a>
221      </li>
222      <li class="sidebar__nav-item">
223        <a  href="/contact" class="sidebar__nav-link">Contact Us</a>
224      </li>
225      <li class="sidebar__nav-item">
226        <a  href="/home-search/account" class="sidebar__nav-link">My Search Portal</a>
227      </li>
228    </ul>
229  </div>
230</div>
231        </div>
232        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="ca33406a-b24a-4100-b315-87fd53d5adc2">
233            <div class="mobile-contact dark">
234  <div class="buttons-holder">
235    <a href="/cdn-cgi/l/email-protection#701a1f153013021f131815040215111c1503041104155e131f1d">
236      <i class="lp-i lp-i--envelope"></i>
237    </a>
238    <a href="tel:4044319974">
239      <i class="lp-i lp-i--phone"></i>
240    </a>
241  </div>
242</div>
243
244        </div>
245        <section  class="image-section is-font-color-light is-background-color-dark" id="section-1a8ae1c2-78c6-4cc7-a1e3-a3d2470900f2" data-el-id="e6c6941b-dd32-4d6b-b4aa-56593f2d58bb">
246    <div class="redesign custom-intro">
247    <div class="container">
248        <h1 class="custom-intro__title">Blog</h1>
249        
250    </div>
251</div>
252
253</section>
254<section id="section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="1e77e4a0-6624-43db-b736-bd434565fece">
vendor: 109 bytes, lines 254-255
254
255<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
255<script type="text/x-handlebars-template" class="gridItem pagination-script"><a href="/blog/{{slug}}" class="blog-list__item">
256  <div class="blog-list__item-image">
257    
258    
259
260    {{#if media.length}}
261      {{{mediaImage media.[0] alt=title}}}
262    {{/if}}
263  </div>
264  
265  <div class="blog-list__item-content">
266    <h4 class="serif">{{title}}</h4>
267    <ul class="blog-list__item-details">
268      
269      {{#isEmpty customAuthor}}
270        {{#if (or createdBy.firstName createdBy.lastName)}}<li class="blog-list__item-author">{{createdBy.firstName}} {{createdBy.lastName}}</li>{{/if}}
271      {{else}}
272        <li class="blog-list__item-author">{{customAuthor}}</li>
273      {{/isEmpty}}
274 
275      <li class="blog-list__item-date">{{hbFormatDate publishedAt 'MM/DD/YY'}}</li>            
276    </ul>
277    
278    {{#if subtitle}}
279    <p>{{truncate (striptags subtitle) 130 "..."}}</p>
280    {{/if}}
281    <span class="link hyperlink-style-1">Read MORE</span>
282  </div>
283</a>
284</script>
284
285
286
287
288
289
290
291<div class="redesign blog-list">
292
293  
294  <div class="container blog-list__container data-container hide-author">
295      <a href="/blog/mclendon-avenues-next-chapter-starts-at-7-am" class="blog-list__item">
296        <div class="blog-list__item-image">
297          
298          
299      
300            <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/32a4fc8e-e42f-4fa0-9be6-2418729bc27c" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/32a4fc8e-e42f-4fa0-9be6-2418729bc27c 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/32a4fc8e-e42f-4fa0-9be6-2418729bc27c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/32a4fc8e-e42f-4fa0-9be6-2418729bc27c 1536w" alt="Brick home entrance with a dark-bronze glazed door, gridded window, weathered brick steps, and oakleaf hydrangea." loading="lazy">
301        </div>
302        
303        <div class="blog-list__item-content">
304          <h4 class="serif">McLendon Avenue&#x27;s Next Chapter Starts at 7 a.m.</h4>
305          <ul class="blog-list__item-details">
306            
307              
308       
309            <li class="blog-list__item-date">10/8/26</li>            
310          </ul>
311          
312          <span class="link hyperlink-style-1">Read MORE</span>
313        </div>
314      </a>
315      <a href="/blog/the-haunted-trail-returns-to-clyde-shepherd-nature-preserve-as-lulah-hills-rises-next-door" class="blog-list__item">
316        <div class="blog-list__item-image">
317          
318          
319      
320            <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/a22229a2-6fd3-4666-bb17-7be72b45d0e7" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/a22229a2-6fd3-4666-bb17-7be72b45d0e7 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/a22229a2-6fd3-4666-bb17-7be72b45d0e7 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/a22229a2-6fd3-4666-bb17-7be72b45d0e7 1536w" alt="Brick house corner with a screened porch, gridded window, and bluestone steps beneath oak branches." loading="lazy">
321        </div>
322        
323        <div class="blog-list__item-content">
324          <h4 class="serif">The Haunted Trail Returns to Clyde Shepherd Nature Preserve as Lulah Hills Rises Next Door</h4>
325          <ul class="blog-list__item-details">
326            
327              
328       
329            <li class="blog-list__item-date">10/1/26</li>            
330          </ul>
331          
332          <span class="link hyperlink-style-1">Read MORE</span>
333        </div>
334      </a>
335      <a href="/blog/ansley-park-runs-on-two-nonprofits-and-most-residents-only-know-one-of-their-names" class="blog-list__item">
336        <div class="blog-list__item-image">
337          
338          
339      
340            <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/05ccabe4-e0ae-4b15-bf8b-5f8f240bb4cb" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/05ccabe4-e0ae-4b15-bf8b-5f8f240bb4cb 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/05ccabe4-e0ae-4b15-bf8b-5f8f240bb4cb 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/05ccabe4-e0ae-4b15-bf8b-5f8f240bb4cb 1408w" alt="Two-story brick house with a screened porch, deep lawn, and uneven brick walkway beneath an overcast sky." loading="lazy">
341        </div>
342        
343        <div class="blog-list__item-content">
344          <h4 class="serif">Ansley Park Runs on Two Nonprofits, and Most Residents Only Know One of Their Names</h4>
345          <ul class="blog-list__item-details">
346            
347              
348       
349            <li class="blog-list__item-date">09/24/26</li>            
350          </ul>
351          
352          <span class="link hyperlink-style-1">Read MORE</span>
353        </div>
354      </a>
355      <a href="/blog/peachtree-circles-historic-district-passed-every-vote-that-counted-then-one-unwritten-rule-killed-it" class="blog-list__item">
356        <div class="blog-list__item-image">
357          
358          
359      
360            <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/cc1245af-cd91-4bd6-b63b-3d9aa55b7853" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/cc1245af-cd91-4bd6-b63b-3d9aa55b7853 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/cc1245af-cd91-4bd6-b63b-3d9aa55b7853 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cc1245af-cd91-4bd6-b63b-3d9aa55b7853 1408w" alt="Two-story red-brown brick house with a wraparound porch, set beyond a deep lawn beneath mature trees." loading="lazy">
361        </div>
362        
363        <div class="blog-list__item-content">
364          <h4 class="serif">Peachtree Circle&#x27;s Historic District Passed Every Vote That Counted. Then One Unwritten Rule Killed It.</h4>
365          <ul class="blog-list__item-details">
366            
367              
368       
369            <li class="blog-list__item-date">09/17/26</li>            
370          </ul>
371          
372          <span class="link hyperlink-style-1">Read MORE</span>
373        </div>
374      </a>
375      <a href="/blog/mister-o1-opened-at-inman-quarter-last-week-blue-willow-is-next-and-neither-started-here" class="blog-list__item">
376        <div class="blog-list__item-image">
377          
378          
379      
380            <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/83ca3d37-3ba3-40ab-86c6-b0ccb14cd573" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/83ca3d37-3ba3-40ab-86c6-b0ccb14cd573 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/83ca3d37-3ba3-40ab-86c6-b0ccb14cd573 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/83ca3d37-3ba3-40ab-86c6-b0ccb14cd573 1408w" alt="Brick veranda framed by painted columns, overlooking a leafy yard and long brick walk." loading="lazy">
381        </div>
382        
383        <div class="blog-list__item-content">
384          <h4 class="serif">Mister O1 Opened at Inman Quarter Last Week. Blue Willow Is Next, and Neither Started Here.</h4>
385          <ul class="blog-list__item-details">
386            
387              
388       
389            <li class="blog-list__item-date">09/10/26</li>            
390          </ul>
391          
392          <span class="link hyperlink-style-1">Read MORE</span>
393        </div>
394      </a>
395      <a href="/blog/the-lake-claire-land-trust-runs-on-four-different-saturdays" class="blog-list__item">
396        <div class="blog-list__item-image">
397          
398          
399      
400            <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/b00b1bb7-1e06-47ce-96f7-4cdcae327516" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/b00b1bb7-1e06-47ce-96f7-4cdcae327516 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/b00b1bb7-1e06-47ce-96f7-4cdcae327516 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b00b1bb7-1e06-47ce-96f7-4cdcae327516 1408w" alt="Herringbone brick walkway beside clipped boxwood, with hydrangea and pink muhly grass in a mulched bed." loading="lazy">
401        </div>
402        
403        <div class="blog-list__item-content">
404          <h4 class="serif">The Lake Claire Land Trust Runs on Four Different Saturdays</h4>
405          <ul class="blog-list__item-details">
406            
407              
408       
409            <li class="blog-list__item-date">09/3/26</li>            
410          </ul>
411          
412          <span class="link hyperlink-style-1">Read MORE</span>
413        </div>
414      </a>
415      <a href="/blog/four-new-restaurants-landed-in-brookhaven-this-summer-the-trail-meant-to-connect-them-hasnt-moved-in-seven-years" class="blog-list__item">
416        <div class="blog-list__item-image">
417          
418          
419      
420            <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/d370cd7b-e831-4fdd-b755-293528d1c86e" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/d370cd7b-e831-4fdd-b755-293528d1c86e 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/d370cd7b-e831-4fdd-b755-293528d1c86e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/d370cd7b-e831-4fdd-b755-293528d1c86e 1408w" alt="Two-story red brick home with a black steel-and-glass portico, curving paver walk, and mature tree canopy." loading="lazy">
421        </div>
422        
423        <div class="blog-list__item-content">
424          <h4 class="serif">Four New Restaurants Landed in Brookhaven This Summer. The Trail Meant to Connect Them Hasn&#x27;t Moved in Seven Years.</h4>
425          <ul class="blog-list__item-details">
426            
427              
428       
429            <li class="blog-list__item-date">08/27/26</li>            
430          </ul>
431          
432          <span class="link hyperlink-style-1">Read MORE</span>
433        </div>
434      </a>
435      <a href="/blog/briarcliff-and-clairmont-got-the-restaurant-before-it-got-the-coffee-shop" class="blog-list__item">
436        <div class="blog-list__item-image">
437          
438          
439      
440            <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/077d1f50-4115-4e01-aa6a-00e487537318" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/077d1f50-4115-4e01-aa6a-00e487537318 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/077d1f50-4115-4e01-aa6a-00e487537318 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/077d1f50-4115-4e01-aa6a-00e487537318 1408w" alt="Two-story brick house with a screened porch, curving stone walk, deep lawn, and mature oak canopy." loading="lazy">
441        </div>
442        
443        <div class="blog-list__item-content">
444          <h4 class="serif">Briarcliff and Clairmont Got the Restaurant Before It Got the Coffee Shop</h4>
445          <ul class="blog-list__item-details">
446            
447              
448       
449            <li class="blog-list__item-date">08/20/26</li>            
450          </ul>
451          
452          <span class="link hyperlink-style-1">Read MORE</span>
453        </div>
454      </a>
455  </div>
456  <div class="empty-results">Sorry, we couldn't find any results that match that search. Try another search.</div>
457  <div class="pagination-container pagination-container--dark pagination-style-1"></div>
458</div>
459</section>
460<section  class="image-section is-font-color-light is-background-color-light" id="section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c">
461    
461<script>
462  (function(){
463    const sectionId = 'section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de'
464    const section = document.querySelector(`#${sectionId}`);
465    var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image');
466
467    if('false' === 'true') {
468      section.classList.add('parallax-enabled');
469      section.style.setProperty('--sectionBackground', sectionBg);
470      section.style.setProperty('background', 'none');
471    }
472  })()
473</script>
473
474<div class="redesign work-with-us ">
475	<div class="container">
476			<h2 class="serif">Work With Us</h2>
477			<div class="description">Get assistance in determining current property value, crafting a competitive offer, writing and negotiating a contract, and much more. Contact us today.</div>
478		<div class="btn-container">
479              <a
480                  role="button"
481                  data-type="CONTACT_US"
482                  class="btn btn--primary-light button-style-2"
483                  
484                  
485                  
486                  
487                  
488                  >
489                          Contact Us
490                  </a>
491    </div>
492	</div>
493</div> 
494</section>
495<section id="section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284">
496  
496<script type="text/x-handlebars-template" class="jsIGItem">
497    <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}">
498      <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div>
499      <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div>
500      {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}}
501    </a> 
502</script>
502
503<div class="ig-feed redesign">
504  <div class="ig-feed-top lp-container">
505    <div class="top-wrapper">
506      <div class="top-left">
507          <h3 class="lp-h3 title">Follow Us on Instagram</h3>
508        <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a>
509      </div>
510      <div class="top-right">
511          <a href="#" target="_blank" class="lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width follow-button jsIGLink button-style-1">Follow Us</a>
512        <a class="nav-button top-nav-prev hidden-control button-style-1">
513          <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>
514        </a>
515        <a class="nav-button top-nav-next hidden-control button-style-1">
516          <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>
517        </a>
518      </div>
519    </div>
520  </div>
521  <div class="lp-container ig-feed-container ">
522    <div class="ig-feed-feed" data-limit="33">
523    </div>
524  </div>
525  <div class="bottom-controls">
526    <a class="bottom-nav-button bottom-nav-prev button-style-1">
527      <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>
528    </a>
529    <a class="bottom-nav-button bottom-nav-next button-style-1">
530      <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>
531    </a>
532  </div>
533</div>
534
535</section>
536
537        <div id="modals" class="modals"></div>
538        <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b">
539            <div class="footer redesign  no_newsletter "> 
540    <div class="container">
541        <h3>Crochet Real Estate</h3>
542        <div class="info-wrap">
543            <div class="info-wrap-contact agent_box">
544                <div class="info-wrap-contact_zone type_user">
545                    <h4 class="serif">GET IN TOUCH</h4>
546                    <div class="info-wrap-contact_cell">
547                        <i>
548                            <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg">
549                                <path d="M2 0C0.903517 0 0 0.903517 0 2V16.6667C0 17.7631 0.903517 18.6667 2 18.6667H28C29.0965 18.6667 30 17.7631 30 16.6667V2C30 0.903517 29.0965 0 28 0H2ZM2.4375 1.33333H27.5625L15.6458 11.4896C15.3389 11.7512 14.6612 11.7512 14.3542 11.4896L2.4375 1.33333ZM1.33333 2.13542L10.1979 9.6979L1.33333 16.5729V2.13542ZM28.6667 2.13542V16.5729L19.8021 9.6979L28.6667 2.13542ZM11.2396 10.5833L13.4896 12.5C14.3543 13.2369 15.6457 13.2369 16.5104 12.5L18.7604 10.5833L27.4687 17.3333H2.53125L11.2396 10.5833Z" fill="#1A1A1A" />
550                            </svg>
551                        </i>
552                        <p class="contact_title">Email</p>
553                        <a href="/cdn-cgi/l/email-protection#2943464c694a5b464a414c5d5b4c48454c5a5d485d4c074a4644" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1"><span class="__cf_email__" data-cfemail="cda7a2a88daebfa2aea5a8b9bfa8aca1a8beb9acb9a8e3aea2a0">[email&#160;protected]</span></a>
554                    </div>
555                    <div class="info-wrap-contact_cell">
556                        <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
557                        <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.23
55713 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A" />
558                        </svg></i>
559                        <p class="contact_title">Phone Number</p>
560                        <a href="tel:4044319974" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">(404) 431-9974</a>
561                    </div>
562                </div>
563                <div class="info-wrap-contact_zone">
564                    <div class="info-wrap-contact_cell">
565                        <i>
566                            <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
567                                <path d="M29.9821 6.49489C29.7931 6.35756 29.679 6.32046 29.4572 6.39228L20.298 9.41368L16.1952 8.03558L15.8172 9.41525L19.7644 10.7038V28.1462L9.89831 25.7069V22.1034H8.71438V25.7515L1.21616 28.2532V15.3945H0.0322266V29.2729C0.0322266 29.5077 0.130098 29.7279 0.321106 29.8645C0.445418 29.9541 0.585911 29.9999 0.735086 29.9999C0.814804 29.9999 0.890971 29.9868 0.967926 29.96L9.48433 27.029L20.1792 29.7887C20.3224 29.8254 20.4751 29.8171 20.6152 29.7654L29.8104 26.2235C30.0942 26.1177 30.0251 25.8466 30.0251 25.5431V7.08291C30.0251 6.85086 30.17 6.63144 29.9821 6.49489ZM28.8412 25.0388L20.9483 28.0361V10.7065L28.8412 8.08649V25.0388Z" fill="#1A1A1A" />
568                                <path d="M6.57515 19.1142C6.6671 19.422 6.95006 19.6323 7.2713 19.6323C7.59215 19.6323 7.87511 19.422 7.96746 19.1142C8.67742 16.7514 10.0393 15.2447 11.3559 13.788C12.9944 11.9747 14.5422 10.2615 14.5422 7.2717C14.5422 3.39788 11.1451 0 7.2713 0C3.39827 0 0 3.39748 0 7.2717C0 10.2615 1.54819 11.9747 3.18674 13.788C4.50328 15.2447 5.86479 16.7514 6.57515 19.1142ZM7.2713 1.45426C10.316 1.45426 13.0883 4.22663 13.0883 7.2717C13.0883 9.70191 11.7852 11.1435 10.2769 12.8121C9.2461 13.9534 8.10992 15.2096 7.2713 16.9199C6.43229 15.2096 5.29651 13.953 4.2657 12.8121C2.75698 11.1432 1.45426 9.70191 1.45426 7.2717C1.45426 4.22663 4.22663 1.45426 7.2713 1.45426Z" fill="#1A1A1A" />
569                                <path d="M7.26193 10.1616C8.8705 10.1616 10.1795 8.86084 10.1795 7.26175C10.1795 5.66305 8.87089 4.3623 7.26193 4.3623C5.65297 4.3623 4.34473 5.66305 4.34473 7.26175C4.34512 8.86084 5.65336 10.1616 7.26193 10.1616ZM7.26193 5.81657C8.06898 5.81657 8.72527 6.46536 8.72527 7.26175C8.72527 8.05932 8.06898 8.70733 7.26193 8.70733C6.45528 8.70733 5.79899 8.05893 5.79899 7.26175C5.79899 6.46536 6.45528 5.81657 7.26193 5.81657Z" fill="#1A1A1A" />
570                            </svg>
571                        </i>
572                        <p class="info-wrap-contact_title">Address</p>
573                        <p class="info-wrap-contact_link grey-text"><p>1382 Scott Blvd, Unit B<br>Decatur, GA 30030</p></p>
574                    </div>
575                </div>
576            </div>
577        </div>
578        <div class="text_footer first_text_footer">
579            <div class="images_box">
580                <div class="img_size">
581                    <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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf" 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 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/cdf3394a-28de-4afb-a9dc-a2e43f117cdf 3456w" alt="Footer Image" sizes="200px">
582                </div>
583            </div>
584            <div class="luxury-text">
585                <p style="font-size: 12px;">All information is deemed reliable but not guaranteed and should be independently reviewed and verified.
586
587</p><p>&nbsp;</p><p style="opacity: 1;"><img src="https://res.cloudinary.com/luxuryp/images/zbxf1j3xdplm6lhfnqo3/realtor-eho-logo-07232021-update-dark" style="width: 100px; height: auto;"></p>
588            </div>
589        </div>
590        <div class="text_footer second_text_footer">
591            <div class="text_content_wrap">
592                <div>
593                    <div>&nbsp;</div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
594                </div>
595            </div>
596        </div>
597        <div class="info-privacy">
598          <div class="form-row info-privacy__row">
599
600            <div class="form-col form-col--powered powered-box">
601                    <div class="img-wrap">
602                        <img src="https://media-production.lp-cdn.com/media/3d7b9076-ea71-486e-ad86-59602f822639" alt="">
603                    </div>
604                <div class="powered_zone">
605                    Real Estate Website Design by <a href="https://www.luxurypresence.com/real-estate-website-design/" target="_blank" class="lp-link grey-text luxury-link underlined hyperlink-style-1">Luxury Presence</a>
606                </div>
607            </div>
608
609            <div class="form-col form-col--copyright">
610              <div class="copy_zone">
611                <span class="copy_words">Copyright &copy;</span> <span class="auto-year-update">2026</span>
612                | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-1">Privacy Policy</a>
613
614              </div>
615            </div>
616
617            <div class="form-col form-col--socials">
618                <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone">
619                
620                        <li>
621                          <a
622                            href="https://www.facebook.com/crochetrealtygroup/"
623                            class="lp-socials__link socials__item socials__link wow fadeInUp"
624                            data-wow-delay="0s"
625                            target="_blank"
626                            aria-label="FACEBOOK"
627                          >
628                              <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
629                          </a>
630                        </li>
631                        <li>
632                          <a
633                            href="https://www.instagram.com/crochetrealtygroup/"
634                            class="lp-socials__link socials__item socials__link wow fadeInUp"
635                            data-wow-delay="0.1s"
636                            target="_blank"
637                            aria-label="INSTAGRAM"
638                          >
639                              <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
640                          </a>
641                        </li>
642                        <li>
643                          <a
644                            href="https://www.linkedin.com/company/crochet-realty-group/"
645                            class="lp-socials__link socials__item socials__link wow fadeInUp"
646                            data-wow-delay="0.2s"
647                            target="_blank"
648                            aria-label="LINKEDIN"
649                          >
650                              <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
651                          </a>
652                        </li>
653                        <li>
654                          <a
655                            href="https://www.google.com/search?q&#x3D;Joe+Crochet+realtotr&amp;sca_esv&#x3D;600539231&amp;source&#x3D;hp&amp;ei&#x3D;AOmuZfKwBLDAkPIP6PagaA&amp;iflsig&#x3D;ANes7DEAAAAAZa73EKSoYnjn_V_yXvVWXtOoDpYzDbxh&amp;ved&#x3D;0ahUKEwjysLXWgvKDAxUwIEQIHWg7CA0Q4dUDCA8&amp;uact&#x3D;5&amp;oq&#x3D;Joe+Crochet+realtotr&amp;gs_lp&#x3D;Egdnd3Mtd2l6IhRKb2UgQ3JvY2hldCByZWFsdG90cjILEC4YgAQYxwEYrwFItBZQAFiQFXABeACQAQGYAegCoAG2EKoBBTEuMy02uAEDyAEA-AEC-AEBwgIFEAAYgATCAgYQABgWGB7CAgUQIRigAQ&amp;sclient&#x3D;gws-wiz#ip&#x3D;1&amp;lrd&#x3D;0x88f507c5c9e2af89:0x75361851023bd509,1,,,,"
656                            class="lp-socials__link socials__item socials__link wow fadeInUp"
657                            data-wow-delay="0.3s"
658                            target="_blank"
659                            aria-label="GOOGLE"
660                          >
661                              <span class="lp-i lp-i--google" aria-hidden="true"></span>
662                          </a>
663                        </li>
664                  </ul>            </div>
665          </div>
666        </div>
667    </div>
668</div>
669
670        </footer>
671
672        <div id="modal-global-contact-us" class="modal "
673            data-el-id=""
674            style="background-color: ;"
675            >
676            <div class="modal-content">
677                <div class="contact-form redesign " style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format&#x3D;auto,quality&#x3D;85/https://media-production.lp-cdn.com/media/j6elglqasuag2vyydi80')">
678          <div class="container">
679              <div class="section-details" style="--colorTxt: #ffffff">
680                  <h2>Contact Details</h2>
681                  
682                  <div class="info-zone">
683        
684                          <div class="info-zone_contact type_user">
685                                <h4 class="serif">Crochet Realty Group</h4>
686                                <div class="info-zone_contact_cell">
687                                        <i>
688                                            <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg">
689                                                <path d="M2 0C0.903517 0 0 0.903517 0 2V16.6667C0 17.7631 0.903517 18.6667 2 18.6667H28C29.0965 18.6667 30 17.7631 30 16.6667V2C30 0.903517 29.0965 0 28 0H2ZM2.4375 1.33333H27.5625L15.6458 11.4896C15.3389 11.7512 14.6612 11.7512 14.3542 11.4896L2.4375 1.33333ZM1.33333 2.13542L10.1979 9.6979L1.33333 16.5729V2.13542ZM28.6667 2.13542V16.5729L19.8021 9.6979L28.6667 2.13542ZM11.2396 10.5833L13.4896 12.5C14.3543 13.2369 15.6457 13.2369 16.5104 12.5L18.7604 10.5833L27.4687 17.3333H2.53125L11.2396 10.5833Z" fill="#1A1A1A"/>
690                                            </svg>
691                                        </i>
692                                    <p class="contact_title">Email</p>
693                                    <a href="/cdn-cgi/l/email-protection#ea80858faa89988589828f9e988f8b868f999e8b9e8fc4898587" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="42282d270221302d212a27363027232e2731362336276c212d2f">[email&#160;protected]</span></a>
694                                </div>
695                          </div>
696                          <div class="info-zone_contact type_user">
697                                <div class="info-zone_contact_cell">
698                                        <i>
699                                            <svg width="30" height="25" viewB
699ox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
700                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A"/>
701                                            </svg>
702                                        </i>
703                                    <p class="contact_title">Phone</p>
704                                    <a href="tel:(404) 431-9974" class="info-zone_contact_link hvr_animation link link--white hyperlink-style-2">(404) 431-9974</a>
705                                </div>
706                          </div>
707                          <div class="info-zone_contact">
708                                <div class="info-zone_contact_cell">
709                                        <i>
710                                            <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
711                                                <path d="M29.9821 6.49489C29.7931 6.35756 29.679 6.32046 29.4572 6.39228L20.298 9.41368L16.1952 8.03558L15.8172 9.41525L19.7644 10.7038V28.1462L9.89831 25.7069V22.1034H8.71438V25.7515L1.21616 28.2532V15.3945H0.0322266V29.2729C0.0322266 29.5077 0.130098 29.7279 0.321106 29.8645C0.445418 29.9541 0.585911 29.9999 0.735086 29.9999C0.814804 29.9999 0.890971 29.9868 0.967926 29.96L9.48433 27.029L20.1792 29.7887C20.3224 29.8254 20.4751 29.8171 20.6152 29.7654L29.8104 26.2235C30.0942 26.1177 30.0251 25.8466 30.0251 25.5431V7.08291C30.0251 6.85086 30.17 6.63144 29.9821 6.49489ZM28.8412 25.0388L20.9483 28.0361V10.7065L28.8412 8.08649V25.0388Z" fill="#1A1A1A"/>
712                                                <path d="M6.57515 19.1142C6.6671 19.422 6.95006 19.6323 7.2713 19.6323C7.59215 19.6323 7.87511 19.422 7.96746 19.1142C8.67742 16.7514 10.0393 15.2447 11.3559 13.788C12.9944 11.9747 14.5422 10.2615 14.5422 7.2717C14.5422 3.39788 11.1451 0 7.2713 0C3.39827 0 0 3.39748 0 7.2717C0 10.2615 1.54819 11.9747 3.18674 13.788C4.50328 15.2447 5.86479 16.7514 6.57515 19.1142ZM7.2713 1.45426C10.316 1.45426 13.0883 4.22663 13.0883 7.2717C13.0883 9.70191 11.7852 11.1435 10.2769 12.8121C9.2461 13.9534 8.10992 15.2096 7.2713 16.9199C6.43229 15.2096 5.29651 13.953 4.2657 12.8121C2.75698 11.1432 1.45426 9.70191 1.45426 7.2717C1.45426 4.22663 4.22663 1.45426 7.2713 1.45426Z" fill="#1A1A1A"/>
713                                                <path d="M7.26193 10.1616C8.8705 10.1616 10.1795 8.86084 10.1795 7.26175C10.1795 5.66305 8.87089 4.3623 7.26193 4.3623C5.65297 4.3623 4.34473 5.66305 4.34473 7.26175C4.34512 8.86084 5.65336 10.1616 7.26193 10.1616ZM7.26193 5.81657C8.06898 5.81657 8.72527 6.46536 8.72527 7.26175C8.72527 8.05932 8.06898 8.70733 7.26193 8.70733C6.45528 8.70733 5.79899 8.05893 5.79899 7.26175C5.79899 6.46536 6.45528 5.81657 7.26193 5.81657Z" fill="#1A1A1A"/>
714                                            </svg>
715                                        </i>
716                                    <p class="info-wrap-contact_title">Address</p>
717                                    <p class="info-zone_contact_link pre-line">1382 Scott Blvd, Unit B
718        Decatur, GA 30030</p>
719                                </div>
720                          </div>
721                        <div class="info-zone_contact">
722                            <div class="info-zone_contact_cell">
723                                <p class="pre-line"><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style><div></div></p>
724                            </div>
725                        </div>
726                        <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__c
726ontact-column">
727                        
728                                <li>
729                                  <a
730                                    href="https://www.facebook.com/crochetrealtygroup/"
731                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
732                                    data-wow-delay="0s"
733                                    target="_blank"
734                                    aria-label="FACEBOOK"
735                                  >
736                                      <span class="lp-i lp-i--facebook" aria-hidden="true"></span>
737                                  </a>
738                                </li>
739                                <li>
740                                  <a
741                                    href="https://www.instagram.com/crochetrealtygroup/"
742                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
743                                    data-wow-delay="0.1s"
744                                    target="_blank"
745                                    aria-label="INSTAGRAM"
746                                  >
747                                      <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
748                                  </a>
749                                </li>
750                                <li>
751                                  <a
752                                    href="https://www.linkedin.com/company/crochet-realty-group/"
753                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
754                                    data-wow-delay="0.2s"
755                                    target="_blank"
756                                    aria-label="LINKEDIN"
757                                  >
758                                      <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
759                                  </a>
760                                </li>
761                                <li>
762                                  <a
763                                    href="https://www.google.com/search?q&#x3D;Joe+Crochet+realtotr&amp;sca_esv&#x3D;600539231&amp;source&#x3D;hp&amp;ei&#x3D;AOmuZfKwBLDAkPIP6PagaA&amp;iflsig&#x3D;ANes7DEAAAAAZa73EKSoYnjn_V_yXvVWXtOoDpYzDbxh&amp;ved&#x3D;0ahUKEwjysLXWgvKDAxUwIEQIHWg7CA0Q4dUDCA8&amp;uact&#x3D;5&amp;oq&#x3D;Joe+Crochet+realtotr&amp;gs_lp&#x3D;Egdnd3Mtd2l6IhRKb2UgQ3JvY2hldCByZWFsdG90cjILEC4YgAQYxwEYrwFItBZQAFiQFXABeACQAQGYAegCoAG2EKoBBTEuMy02uAEDyAEA-AEC-AEBwgIFEAAYgATCAgYQABgWGB7CAgUQIRigAQ&amp;sclient&#x3D;gws-wiz#ip&#x3D;1&amp;lrd&#x3D;0x88f507c5c9e2af89:0x75361851023bd509,1,,,,"
764                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
765                                    data-wow-delay="0.3s"
766                                    target="_blank"
767                                    aria-label="GOOGLE"
768                                  >
769                                      <span class="lp-i lp-i--google" aria-hidden="true"></span>
770                                  </a>
771                                </li>
772                          </ul>          </div>
773              </div>
774              <div class="section-message">
775                  <form data-type="contact-form">
776                      <h2>Submit a Message</h2>
777                       <div class="h-pot">
778                        <label for="-middleName">Middle Name</label>
779                        <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
780                      </div>
781        
782        
783                      <div class="lp-input-group">
784                          <label for="prod-name" class="lp-label">Name</label>
785                          <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light">
786                      </div>
787                      <div class="lp-input-group">
788                          <label for="prod-email" class="lp-label">Email</label>
789                          <input id="prod-email" type="email" name="email" value="" required="" class="lp-in
789put lp-input--light">
790                      </div>
791                      <div class="lp-input-group">
792                          <label for="prod-phone" class="lp-label">Phone</label>
793                          <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light">
794                      </div>
795                      <div class="lp-input-group m16">
796                          <label for="prod-message" class="lp-label">Message</label>
797                          <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea>
798                      </div>
799        
800                      <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
801          <label class='lp-tcr-content'>
802            <span class='lp-tcr-checkbox'>
803              <input
804                type='checkbox'
805                id='-termsAccepted'
806                name='termsAccepted'
807                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
808                oninput="this.setCustomValidity('')"
809                required
810              /></span>
811            <span class='lp-tcr-message'>
812              
813                I agree to be contacted by
814                Crochet Real Estate
815                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
816                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
817                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
818            </span>
819          </label>
820        
821        </div>
822                      
823                      <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
824                      
825                      
826                      <button type="submit" class="submitButton lp-btn button-style-2">
827                          <span class="label-initial">Submit</span>
828                          <span class="label-loading">Submitting</span>
829                          <span class="label-success">Submitted</span>
830                          <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span>
831                      </button>
832                      <p class="success-message success hide">
833                        Message sent successfully!
834                      </p>
835                  </form>
836                  
837                  
838              </div>
839          </div>
840        </div>
841        
842            </div>
843            <button class="close lp-close" type="button" aria-label="close modal">
844                <span class="lp-close-icon" aria-hidden="true"></span>
845            </button>
846        </div>
847        <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;">
848          <style>
849            #qualifying-questions-modal .custom-select-toggle {
850              border: 1px solid #848484;
851              border-radius: 8px;
852              padding: 12px 16px;
853            }
854        
855            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
856              color: #848484;
857            }
858        
859            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
860              color: #848484;
861              opacity: 1;
862            }
863        
864            #qualifying-questions-modal .disclaimer-more {
865              display: none;
866            }
867        
868            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
869              display: inline;
870            }
871        
872            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
873              display: none;
874            }
875          </style>
vendor: 119 bytes, lines 875-876
875
876          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
876<script>
877            function toggleDisclaimerQualifyingQuestionsModal() {
878              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
879              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
880        
881              if (disclaimerText.classList.contains('collapsed')) {
882                disclaimerText.classList.remove('collapsed');
883                toggleButton.textContent = 'Read less';
884                toggleButton.setAttribute('aria-expanded', 'true');
885              } else {
886                disclaimerText.classList.add('collapsed');
887                toggleButton.textContent = 'Read more';
888                toggleButton.setAttribute('aria-expanded', 'false');
889              }
890            }
891          </script>
891
892          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
893            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
894              <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;">
895                <span aria-hidden="true">&times;</span>
896              </button>
897              <div style="padding: 40px 30px 32px;">
898                <div style="text-align: left; margin-bottom: 32px;">
899                  <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;">
900                    Thanks, please provide more information to help serve you
901                  </h2>
902                </div>
903                <form id="qualifying-questions-modal-form" data-type="contact-form">
904                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
905                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
906                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
907                  <label for="qualifying-questions-modal-email" style="display:none;">
908                    Email
909                  </label>
910                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
911                    Trigger Source
912                  </label>
913        
914                  <div style="margin-bottom: 20px;">
915                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
916                      Phone Number
917                    </label>
918                    <input
919                      type="tel"
920                      id="qualifying-questions-modal-phoneNumber"
921                      name="phoneNumber"
922                      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;"
923                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
924                      required
925                      placeholder="Phone"
926                      aria-label="Phone Number"
927                      inputmode="tel"
928                      autocomplete="tel"
929                      onfocus="this.style.borderColor='black';"
930                      onblur="this.style.borderColor='#848484';"
931                    />
932                  </div>
933        
934                  <div style="margin-bottom: 20px;">
935                    <label for="qualifying-questions-modal-interest" style="display:none;">
936                      Interest
937                    </label>
938                    <select
939                      id="qualifying-questions-modal-interest"
940                      name="interest"
941                      required
942                      data-label="Interest"
943                      aria-label="Interest"
944                      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;"
945                      onfocus="this.style.borderColor='black'; this.style.color='black';"
946                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
947                    >
948                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
949                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
950                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
951                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
952                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
953                      <option value="Other" style="background: #fff; color: black;">Other</option>
954                    </select>
955                  </div>
956        
957                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
958                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
959                    <label class='lp-tcr-content'>
960                      <span class='lp-tcr-checkbox'>
961                        <input
962                          type='checkbox'
963                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
964                          name='termsAccepted'
965                          aria-describedby='qualifying-questions-modal-disclaimer-text'
966                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
967                          oninput="this.setCustomValidity('')"
968                          required
969                        /></span>
970                      <span class='lp-tcr-message'>
971                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
972                          
973                            I agree to be contacted by
974                            <strong>Crochet Real Estate</strong>
975                            via call, email, and text <span class="disclaimer-more">for real estate services. 
976                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
977                            You can also click the unsubscribe link in the emails. 
978                            Message and data rates may apply. Message frequency may vary.</span>
979                            <span class="disclaimer-ellipsis">...</span>
980                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
981                        </div>
982                        <button
983                          id="qualifying-questions-modal-toggle-disclaimer"
984                          type="button"
985                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
986                          aria-expanded="false"
987                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
988                        >
989                          Read more
990                        </button>
991                      </span>
992                    </label>
993                  </div>
994        
995                  <div>
996                    <button
997                      type="submit"
998                      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;"
999                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1000                      onmouseout="this.style.background='black'; this.style.color='white';"
1001                    >
1002                      Submit
1003                    </button>
1004                  </div>
1005                </form>
1006              </div>
1007            </div>
1008          </div>
1009        </div>
1010
1011    
1011<script>
1012        (function() {
1013        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1014
1015        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1016            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1017            entries.forEach(function(video) {
1018                if (video.isIntersecting) {
1019                for (var source in video.target.children) {
1020                    var videoSource = video.target.children[source];
1021                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1022                    videoSource.src = videoSource.dataset.src;
1023                    }
1024                }
1025
1026                video.target.load();
1027                video.target.classList.remove("lazy");
1028                lazyVideoObserver.unobserve(video.target);
1029                }
1030            });
1031            });
1032
1033            lazyVideos.forEach(function(lazyVideo) {
1034                lazyVideoObserver.observe(lazyVideo);
1035            });
1036        }
1037        })();
1038    </script>
1038
1039
1040        <!-- Global site tag (gtag.js) - Google Analytics -->
1041        
1041<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1041
1042
1043            <!-- Google Tag Manager -->
1044            
1044<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1045                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1046                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1047                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1048            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1048
1049            <!-- End Google Tag Manager -->
1050
1051
1052        <!-- LP Tracker (divolte.js) - LP Divolte -->
1053            
1053<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1053
1054        <!-- LP Tracker (eventBus) - LP EventBus -->
1055            
1055<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1055
1056
1057    
1057<script>
1058        window.dataLayer = window.dataLayer || [];
1059        document.sendGoogleTagManagerEvent = function() {
1060            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1061            if (window.navigator.globalPrivacyControl) {
1062                return;
1063            }
1064
1065            dataLayer.push(arguments);
1066        }
1067
1068        document.sendGoogleTagManagerEvent('js', new Date());
1069            document.sendGoogleTagManagerEvent('config', 'G-GMRSLY0VL4', { page: location.pathname, location: location.href });
1070            document.sendGoogleTagManagerEvent('config', 'UA-250082834-27', { page: location.pathname, location: location.href });
1071            document.sendGoogleTagManagerEvent('config', 'G-ZSN33R3BC3', { page: location.pathname, location: location.href });
1072        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1073            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1074                event_category: googleEvent.eventCategory,
1075                event_label: googleEvent.eventLabel,
1076                value: googleEvent.eventValue,
1077                page: googleEvent.page,
1078                location: googleEvent.location
1079            })
1080        };
1081
1082        document.addEventListener("DOMContentLoaded", function() {
1083            (function() {
1084                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1085                var date = new Date();
1086                var elements = document.getElementsByClassName('auto-year-update');
1087                var i;
1088                for (i = 0; i < elements.length; i++) {
1089                    elements[i].innerText = date.getFullYear();
1090                }
1091            })();
1092            if (window.divolteLp) {
1093                window.divolteLp('sendLpPageView', {});
1094            }
1095            if (window.eventBusLp) {
1096                window.eventBusLp('sendLpPageView', {});
1097            }
1098        });
1099    </script>
1099
1100
1101
1102    
1102<script>
1103    // Function to dynamically load a script
1104    function loadScript(url, callback) {
1105        var script = document.createElement('script');
1106        script.type = 'text/javascript';
1107        script.src = url;
1108        script.defer = true;
1109        script.async = true;
1110        script.onload = callback;
1111        document.head.appendChild(script);
1112    }
1113
1114    // Function to dynamically load CSS file
1115    function loadCSS(url) {
1116        var link = document.createElement("link");
1117        link.rel = "stylesheet";
1118        link.href = url;
1119        document.head.appendChild(link);
1120    }
1121
1122    // Global methods / variables that can be accessed by element js
1123    window.luxuryPresence = {
1124        libs: {
1125            loadJs: loadScript,
1126            loadCss: loadCSS,
1127            jsLibsMap: {
1128                paroller: {
1129                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1130                    isLoaded: false,
1131                },
1132                ionRangeSlider: {
1133                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1134                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1135                    isLoaded: false,
1136                    requires: ['jquery'],
1137                },
1138                splide: {
1139                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1140                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1141                    isLoaded: false,
1142                },
1143                wow: {
1144                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1145                    isLoaded: false,
1146                },
1147                jquery: {
1148                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1149                    isLoaded: false,
1150                },
1151                slick: {
1152                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1153                    isLoaded: false,
1154                    requires: ['jquery'],
1155                },
1156                libphonenumber: {
1157                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1158                    isLoaded: false,
1159                },
1160            },
1161        },
1162    };
1163    </script>
1163
1164    
1164<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>
1164
1165    
1165<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1165
1166    
1166<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1166
1167    
1167<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1167
1168    
1168<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>
1168
1169    
1169<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>
1169
1170    
1170<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>
1170
1171
1172    <!-- GOOGLE TRANSLATE SCRIPT -->
1173    
1173<script>
1174        function googleTranslateElementInit() {
1175            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1176            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1177            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1178            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1179                translate.innerText = '';
1180                new google.translate.TranslateElement({
1181                    pageLanguage: 'en',
1182                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1183                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1184                }, translate);
1185            });
1186        }
1187    </script>
1187
1188    
1188<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1188
1189            
1189<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1189
1190
1191    <!-- GOOGLE TRANSLATE SCRIPT END-->
1192    
1192<script>
1193
1194        // UI helpers
1195        (function () {
1196
1197            function getSideMenu () {
1198                return document.querySelector('body > div.sidemenu');
1199            }
1200
1201            function sideMenuHide (instant) {
1202                var sideMenu = getSideMenu();
1203                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1204                  return;
1205                }
1206                sideMenu.classList.remove('visible');
1207                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1208                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1209            }
1210
1211            function sideMenuShow () {
1212                var sideMenu = getSideMenu();
1213                if (!sideMenu || sideMenu.classList.contains('visible')) {
1214                  return;
1215                }
1216                sideMenu.classList.add('visible');
1217                sideMenu.dispatchEvent(new Event('lpui-show'));
1218                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1219            }
1220
1221            function sideMenuToggle () {
1222                var sideMenu = getSideMenu();
1223                if (!sideMenu) {
1224                  return;
1225                }
1226                var isSideMenuVisible = sideMenu.classList.contains('visible');
1227                if (isSideMenuVisible) {
1228                    sideMenuHide();
1229                } else {
1230                    sideMenuShow();
1231                }
1232            }
1233
1234            var scrollLockRequests = {};
1235            window.__debug_scrollLockRequests = scrollLockRequests;
1236            var hideScrollStyles = ''+
1237                    'body {'+
1238                    'overflow: hidden;' +
1239                    '}';
1240            var hideScrollId = 'hide-body-scroll-style';
1241
1242            function scrollLock () {
1243                var style = document.createElement('style');
1244                style.id = hideScrollId;
1245                style.textContent = hideScrollStyles;
1246                document.head.appendChild(style);
1247                window.dispatchEvent(new Event('lpui-scroll-locked'));
1248            }
1249
1250            function scrollUnlock () {
1251                document.getElementById(hideScrollId)?.remove();
1252                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1253            }
1254
1255            function requestScrollLock (lockId) {
1256                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1257                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1258                if (!wasLocked) {
1259                    scrollLock();
1260                }
1261            }
1262
1263            function releaseScrollLock (lockId) {
1264                if (lockId) {
1265                    delete scrollLockRequests[lockId];
1266                    if (!Object.keys(scrollLockRequests).length) {
1267                        scrollUnlock();
1268                    }
1269                } else {
1270                    scrollLockRequests = {};
1271                    window.__debug_scrollLockRequests = scrollLockRequests;
1272                    scrollUnlock();
1273                }
1274            }
1275
1276            function showModal (modalId, options) {
1277                var modal = document.getElementById(modalId);
1278                if (!modal) {
1279                    return;
1280                }
1281
1282                if (!modal.classList.contains('visible')) {
1283                    modal.classList.add('visible');
1284                    if (options && options.scrollLock) {
1285                        window.lpUI.requestScrollLock(modalId);
1286                    }
1287                    modal.dispatchEvent(new Event('lpui-show'));
1288                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1289                }
1290
1291                const visibleModals = document.querySelectorAll('.modal.visible');
1292
1293                if (visibleModals.length > 1) {
1294
1295                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1296                        const zIndex = window.getComputedStyle(modal).zIndex;
1297                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1298                        return Math.max(maxZIndex, parsedZIndex);
1299                    }, 0);
1300
1301                    modal.style.zIndex = maxZIndex + 1;
1302                }
1303
1304            }
1305
1306            function _hideModal (modalEl) {
1307                if (!modalEl) {
1308                    return;
1309                }
1310                if (!modalEl.classList.contains('visible')) {
1311                    return;
1312                }
1313                modalEl.classList.remove('visible');
1314                modalEl.style.zIndex = '';
1315                modalEl.dispatchEvent(new Event('lpui-hide'));
1316                var modalId = modalEl.getAttribute('id');
1317                if (modalId) {
1318                    window.lpUI.releaseScrollLock(modalId);
1319                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1320                }
1321            }
1322
1323            function hideModal (modalId) {
1324                _hideModal(document.getElementById(modalId));
1325            }
1326
1327            function hideClosestModal (el) {
1328              const modal = el?.closest('.modal');
1329              if (!modal) {
1330                return;
1331              }
1332              if (modal.classList) {
1333                _hideModal(modal);
1334                return;
1335              }
1336              if (modal.length && modal[0].classList) {
1337                _hideModal(modal[0]);
1338              }
1339            }
1340
1341            window.lpUI = {
1342                sideMenuHide: sideMenuHide,
1343                sideMenuShow: sideMenuShow,
1344                sideMenuToggle: sideMenuToggle,
1345                requestScrollLock: requestScrollLock,
1346                releaseScrollLock: releaseScrollLock,
1347                showModal: showModal,
1348                hideModal: hideModal,
1349                hideClosestModal: hideClosestModal
1350            }
1351        })();
1352
1353        var stringifyPrimitive = function(v) {
1354            switch (typeof v) {
1355                case 'string':
1356                    return v;
1357
1358                case 'boolean':
1359                    return v ? 'true' : 'false';
1360
1361                case 'number':
1362                    return isFinite(v) ? v : '';
1363
1364                default:
1365                    return '';
1366            }
1367        };
1368
1369        function objectToQuerystring(obj, sep, eq, name) {
1370            // https://github.com/Gozala/querystring/blob/master/encode.js
1371            sep = sep || '&';
1372            eq = eq || '=';
1373            if (obj === null) {
1374                obj = undefined;
1375            }
1376
1377            if (typeof obj === 'object') {
1378                return Object.keys(obj).map(function(k) {
1379                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1380                    if (Array.isArray(obj[k])) {
1381                        return obj[k].map(function(v) {
1382                            return ks + encodeURIComponent(stringifyPrimitive(v));
1383                        }).join(sep);
1384                    } else {
1385                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1386                    }
1387                }).filter(Boolean).join(sep);
1388
1389            }
1390
1391            if (!name) return '';
1392            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1393                    encodeURIComponent(stringifyPrimitive(obj));
1394        }
1395
1396        function getPath(url, options) {
1397            var parser = document.createElement('a');
1398            parser.href = url || '';
1399            var path = parser.pathname || '';
1400            if (path[0] !== '/') {
1401              // IE does not return path starting with a slash
1402              path = '/' + path;
1403            }
1404
1405            if (options && options.queryString) {
1406                path += parser.search;
1407            }
1408
1409            return path;
1410        }
1411
1412        function getMLSAutocomplete(keyword) {
1413            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1414            var query = {
1415                kind: 'listings',
1416                query: keyword
1417            };
1418
1419            return superagent
1420                .get(searchURL)
1421                .query(query)
1422                .then(function(res) {
1423                    var data = res.body || [];
1424                    // Array of listing_auto_complete documents: id, display_address, city, state,
1425                    // price, sold_price, status, status_modified_at, photo_urls (array of URLs).
1426
1427                    return data;
1428                });
1429        }
1430
1431        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1432            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1433
1434            return superagent
1435                .get(searchURL)
1436                .query({ kind: 'listings', query: keyword, ...filters })
1437                .then(function(res) {
1438                    // Same response shape as getMLSAutocomplete.
1439                    return res.body || [];
1440                });
1441        }
1442
1443        function makeMlsLink(data) {
1444            // Code Dupe from utils/googlePlace
1445            // mapping of google data type to mls data type
1446            var mapping = {
1447                neighborhood: 'neighborhood',
1448                locality: 'place',
1449                administrative_area_level_2: 'county',
1450                administrative_area_level_1: 'state',
1451                postal_code: 'postalcode',
1452            };
1453
1454            function _filterTypes(types) {
1455                return types.filter(function(type) { return type !== 'political' });
1456            }
1457
1458            if (!data || !Object.keys(data).length) {
1459                return '/home-search/listings';
1460            }
1461
1462            var newData = {};
1463            _filterTypes(data.types).forEach(function(type) {
1464                if (mapping[type]) {
1465                    newData.search_type = mapping[type];
1466                }
1467            });
1468            newData.omnibox = data.formatted_address;
1469            data.address_components.forEach(function(component) {
1470                _filterTypes(component.types).forEach(function(type) {
1471                    if (mapping[type]) {
1472                        newData[mapping[type]] = component.long_name;
1473                    }
1474                });
1475            });
1476            var bounds = data.geometry.bounds;
1477            var convertedData = Object.assign(bounds, newData);
1478
1479            return '/home-search/listings?' + objectToQuerystring(convertedData);
1480        }
1481
1482        function debounce(func, wait) {
1483            let timeout;
1484            return function(...args) {
1485                const context = this;
1486                clearTimeout(timeout);
1487                timeout = setTimeout(() => func.apply(context, args), wait)
1488            }
1489        }
1490
1491        // Global methods / variables that can be accessed by element js
1492        window.luxuryPresence = {
1493            ...window.luxuryPresence,
1494            defaults: {
1495                companyId: '32443cf2-4f8c-4e0f-8bb4-a310afb42f31',
1496                apiGatewayUrl: '/api-gw',
1497                routerUrl: '/api-nv',
1498                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\
1498n    }\n    propertiesCount(\n    \n      agentIds: $agentIds\n      teamIds: $teamIds\n      propertyId: $propertyId\n      propertyIds: $propertyIds\n      prioritizeIds: $prioritizeIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      statusId: $statusId\n      statusIds: $statusIds\n      excludeStatusId: $excludeStatusId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n      officeIds: $officeIds\n      addressState: $addressState\n      addressCity: $addressCity\n      developmentId: $developmentId\n      featuredListing: $featuredListing\n      leaseProperty: $leaseProperty\n      search: $search\n      searchTermMode: $searchTermMode\n      salesPriceGTE: $salesPriceGTE\n      salesPriceLTE: $salesPriceLTE\n      leasePriceGTE: $leasePriceGTE\n      leasePriceLTE: $leasePriceLTE\n      livingSpaceSizeGTE: $livingSpaceSizeGTE\n      livingSpaceSizeLTE: $livingSpaceSizeLTE\n      bathCountGTE: $bathCountGTE\n      bathCountLTE: $bathCountLTE\n      bedroomCountGTE: $bedroomCountGTE\n      bedroomCountLTE: $bedroomCountLTE\n      architectureStyle: $architectureStyle\n      lifestyle: $lifestyle\n      propertyTypeId: $propertyTypeId\n      propertyTypeIds: $propertyTypeIds\n      spaceTypeIds: $spaceTypeIds\n      tag: $tag\n      archived: $archived\n      globalProperty: $globalProperty\n      withGeo: $withGeo\n      openHouse: $openHouse\n      displayMLSListings: $displayMLSListings\n      advancedFilters: $advancedFilters\n      seasonalPriceId: $seasonalPriceId\n\n    ) {\n      count\n    }\n  }\n","pressReleases":"\n  query PressReleases (\n    $companyId: ID\n    $pressReleaseIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $categories: [String!]\n    $propertyId: [ID!]\n    $developmentId: [ID!]\n    $agentId: [ID!]\n    $teamId: [ID!]\n    $year: [Int!]\n  ) {\n    pressReleases (\n      companyId: $companyId\n      pressReleaseIds: $pressReleaseIds\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      categories: $categories\n      propertyId: $propertyId\n      developmentId: $developmentId\n      agentId: $agentId\n      teamId: $teamId\n      year: $year\n    ) {\n      items {\n        id\n        title\n        description\n        author\n        externalUrl\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        publishedAt\n        categories\n      }\n      total\n    }\n  }\n","posts":"\n  query Posts (\n    $companyId: String\n    $postId: [ID!]\n    $slug: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $featured: Boolean\n    $categoryId: [String!]\n    $neighborhoodId: [String!]\n  ) {\n    posts (\n      companyId: $companyId\n      postId: $postId\n      slug: $slug\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      featured: $featured\n      postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n      categoryId: $categoryId\n      neighborhoodId: $neighborhoodId\n    ) {\n      items {\n        id\n        postId\n        title\n        subtitle\n        description\n        status: postStatus\n        featured\n        slug\n        categories {\n          id\n          name\n        }\n        createdAt\n        publishedAt\n        updatedAt\n        scheduledAt\n        createdBy {\n          ... on Agent {\n            firstName\n            lastName\n          }\n        }\n        customAuthor\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        seoTitle\n        seoDescription\n      }\n      total\n    }\n  }\n","testimonials":"\n  query Testimonials (\n    $companyId: String\n    $agentId: ID\n    $teamId: ID\n    $testimonialIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n  ) {\n    testimonials (\n      companyId: $companyId\n      agentId: $agentId\n      teamId: $teamId\n      testimonialIds: $testimonialIds\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n    ) {\n      items {\n        id\n        testimonialId\n        body\n        author\n        position\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        seoTitle\n        seoDescription\n        agents {\n          slug\n          email\n          firstName\n          lastName\n          avatar {\n            smallUrl\n            height\n            width\n          }\n        }\n      }\n      total\n    }\n  }\n","neighborhoods":"\n  query Neighborhoods (\n    $neighborhoodId: ID\n    $companyId: String\n    $search: String\n    $tag: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n  ) {\n    neighborhoods (\n      neighborhoodId: $neighborhoodId\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      tags\n      googlePlaceData\n      mlsLink\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n    }\n    neighborhoodsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n    ) {\n      count\n    }\n  }\n","developments":"\n  query Developments (\n    $companyId: ID!\n    $developmentIds: [ID!]\n    $agentId: String\n    $slug: String\n    $search: String\n    $tag: [String!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirection\n    $neighborhoodId: ID\n    $neighborhoodIds: [ID!]\n  ) {\n    developments (\n      companyId: $companyId\n      developmentIds: $developmentIds\n      agentId: $agentId\n      slug: $slug\n      search: $search\n      tag: $tag\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      items {\n        id\n        name\n        description\n        descriptionShort\n        slug\n        createdAt\n        updatedAt\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        logoMedia {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        websiteUrl\n        videoUrl\n        googlePlaceData\n        coordinates\n        mlsLink\n        seoTitle\n        seoDescription\n        featuresAndAmenities {\n          featureIds\n          features {\n            featureId\n            name\n          }\n          description\n        }\n        latitude\n        longitude\n        addressLine1\n        addressLine2\n        city\n        state\n        zipCode\n        country\n        yearCompleted\n        residences\n        availability\n        neighborhoodId\n        developer\n        architect\n        interiorDesigner\n        stories\n        buildingHeight\n        buildingHeightUnit\n        bedMin\n        bedMax\n        bathMin\n        bathMax\n        livingSpaceMin\n        livingSpaceMa
1498x\n        livingSpaceUnit\n        lotSizeMin\n        lotSizeMax\n        lotSizeUnit\n        priceMin\n        priceMax\n        priceCurrency\n        tags\n      }\n      total\n    }\n  }\n","pois":"\n  query PointsOfInterest (\n    $regionId: UUID!\n    $radius: Int\n    $offset: Int\n    $limit: Int\n    $categories: [AreasOfInterestCategories!]\n    $sortBy: AreasOfInterestSorting\n  ) {\n    pois: areasOfInterest (\n      input: {\n        regionId: $regionId\n        radius: $radius\n        offset: $offset\n        limit: $limit\n        categories: $categories\n        sortBy: $sortBy\n      }\n    ) {\n      items {\n        name\n        imageUrl\n        url\n        reviewCount\n        rating\n        price\n        displayPhone\n        distance\n        category\n        location {\n          address1\n          address2\n          address3\n          city\n          zipCode\n          country\n          state\n        }\n      }\n      total\n    }\n  }\n","offices":"\n  query Offices (\n    $companyId: ID!\n    $officeIds: [ID!]\n    $officeMlsIds: [String!]\n    $externalIds: [String!]\n    $externalSource: String\n    $agentId: ID\n    $archived: Boolean\n    $tags: [String!]\n    $slug: String\n    $search: String\n    $sort: String\n    $sortDir: SortDirection\n    $offset: Int\n    $limit: Int\n  ) {\n    offices (\n      companyId: $companyId\n      officeIds: $officeIds\n      officeMlsIds: $officeMlsIds\n      externalIds: $externalIds\n      externalSource: $externalSource\n      agentId: $agentId\n      archived: $archived\n      tags: $tags\n      slug: $slug\n      search: $search\n      sort: $sort\n      sortDir: $sortDir\n      offset: $offset\n      limit: $limit\n    ) {\n      items {\n        id\n        companyId\n        name\n        slug\n        officeMlsId\n        shortDescription\n        fullDescription\n        addressLine1\n        addressLine2\n        addressCity\n        addressState\n        addressPostalCode\n        addressCountry\n        phone\n        email\n        officeHours\n        coordinates\n        googlePlaceData\n        seoTitle\n        seoDescription\n        fullAddress\n        tags\n        media {\n          id\n          originalUrl\n          thumbnailUrl\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n        }\n      }\n      total\n    }\n  }\n","teams":"\n  query Teams (\n    $companyId: ID\n    $teamIds: [ID!]\n    $agentId: ID\n    $externalIds: [String!]\n    $externalSource: String\n    $slug: String\n    $search: String\n    $sort: String\n    $sortDir: String\n    $offset: Int\n    $limit: Int\n  ) {\n    teams (\n      companyId: $companyId\n      teamIds: $teamIds\n      agentId: $agentId\n      externalIds: $externalIds\n      externalSource: $externalSource\n      slug: $slug\n      search: $search\n      sort: $sort\n      sortDir: $sortDir\n      offset: $offset\n      limit: $limit\n    ) {\n      items {\n        id\n        companyId\n        name\n        email\n        shortBio\n        addressLine1\n        addressLine2\n        addressCity\n        addressState\n        addressCountry\n        phoneNumber1\n        phoneNumber2\n        postalCode\n        avatar {\n          id\n          thumbnailUrl\n          smallUrl\n          mediumUrl\n          largeUrl\n        }\n        urlWebsite\n        socialLinks\n        socialLinksArray\n        tags\n        seoTitle\n        seoDesc\n        slug\n        displayOrder\n      }\n      total\n    }\n  }\n"},
1499                propertyPlaceholderImage: {"id":"90126a92-ece3-496c-99e2-a37b0c55a32b","alt":null,"bytes":95749,"width":1500,"format":"jpeg","height":1500,"pngUrl":null,"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/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","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/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","authorUrl":null,"companyId":"32443cf2-4f8c-4e0f-8bb4-a310afb42f31","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/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","sourceUrl":null,"xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","__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/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","description":null,"displayName":"cre","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","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/f6bd547a-a6c7-4af4-b142-77a6a2ad1e60","originalFileName":"CRE","cloudinaryPublicId":"f6bd547a-a6c7-4af4-b142-77a6a2ad1e60"}
1500            },
1501            objectToQuerystring: objectToQuerystring,
1502            getPath: getPath,
1503            getMLSAutocomplete: getMLSAutocomplete,
1504            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1505            makeMlsLink: makeMlsLink,
1506            debounce: debounce,
1507        };
1508
1509        var wowOffset = 100;
1510    </script>
1510
1511    
1511<script>
1512        (()=>{function e(e){return e&&e.__esModule?e.default:e}var t=globalThis,r={},i={},s=t.parcelRequired4f7;null==s&&((s=function(e){if(e in r)return r[e].exports;if(e in i){var t=i[e];delete i[e];var s={id:e,exports:{}};return r[e]=s,t.call(s.exports,s,s.exports),s.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){i[e]=t},t.parcelRequired4f7=s);var o=s.register;o("ikl6F",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=e.exports.fetchExchangeRates=e.exports.toSupportedToCurrency=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.SUPPORTED_FROM_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.writeCurrencyCookie=e.exports.readValidCurrencyCookie=e.exports.readCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_NAME=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=void 0;var r=s("65bUu");Object.defineProperty(e.exports,"CURRENCY_COOKIE_MAX_AGE_SECONDS",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_MAX_AGE_SECONDS}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_NAME",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_NAME}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_PATH",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_PATH}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_SAME_SITE",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_SAME_SITE}}),Object.defineProperty(e.exports,"clearCurrencyCookie",{enumerable:!0,get:function(){return r.clearCurrencyCookie}}),Object.defineProperty(e.exports,"readCurrencyCookie",{enumerable:!0,get:function(){return r.readCurrencyCookie}}),Object.defineProperty(e.exports,"readValidCurrencyCookie",{enumerable:!0,get:function(){return r.readValidCurrencyCookie}}),Object.defineProperty(e.exports,"writeCurrencyCookie",{enumerable:!0,get:function(){return r.writeCurrencyCookie}});var i=s("gUuHZ");Object.defineProperty(e.exports,"DISPLAY_CURRENCIES",{enumerable:!0,get:function(){return i.DISPLAY_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_FROM_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_FROM_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_TO_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_TO_CURRENCIES}}),Object.defineProperty(e.exports,"toSupportedFromCurrency",{enumerable:!0,get:function(){return i.toSupportedFromCurrency}}),Object.defineProperty(e.exports,"toSupportedToCurrency",{enumerable:!0,get:function(){return i.toSupportedToCurrency}});var o=s("jCxYG");Object.defineProperty(e.exports,"fetchExchangeRates",{enumerable:!0,get:function(){return o.fetchExchangeRates}});var n=s("igUcG");Object.defineProperty(e.exports,"convertAmount",{enumerable:!0,get:function(){return n.convertAmount}}),Object.defineProperty(e.exports,"formatMoney",{enumerable:!0,get:function(){return n.formatMoney}})}),o("65bUu",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.readValidCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.writeCurrencyCookie=e.exports.readCurrencyCookie=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=e.exports.CURRENCY_COOKIE_NAME=void 0;var r=s("gUuHZ");e.exports.CURRENCY_COOKIE_NAME="lp-currency",e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=31536e3,e.exports.CURRENCY_COOKIE_SAME_SITE="Lax",e.exports.CURRENCY_COOKIE_PATH="/";let i=e=>e?.trim().toLowerCase().replace(/^\.+/,"")||void 0,o=e=>"undefined"!=typeof DOMException&&e instanceof DOMException,n=({document:t})=>{let r=`${e.exports.CURRENCY_COOKIE_NAME}=`;return t.cookie.split(";").map(e=>e.trim()).filter(e=>e.startsWith(r)).map(e=>e.slice(r.length))},a=e=>{try{return decodeURIComponent(e)}catch{return}};e.exports.readCurrencyCookie=e=>{let t=(e=>{try{return n(e)[0]}catch(e){if(!o(e))throw e;return}})(e);return void 0===t?void 0:a(t)};let l=(t,r,i,s)=>{var o;let n,a;t.document.cookie=`${e.exports.CURRENCY_COOKIE_NAME}=${r}${o=t.location,n="https:"===o.protocol?"; Secure":"",a=s?`; Domain=${s}`:"",`; Path=${e.exports.CURRENCY_COOKIE_PATH}; Max-Age=${i}; SameSite=${e.exports.CURRENCY_COOKIE_SAME_SITE}${n}${a}`}`};e.exports.writeCurrencyCookie=(t,s)=>{let a,d=(0,r.toSupportedToCurrency)(s);if(!d)return!1;let c=i(t.domain);try{if(a=n(t)[0],c&&l(t,"",0,void 0),l(t,encodeURIComponent(d),e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,c),(0,e.exports.readCurrencyCookie)(t)===d)return!0}catch(e){if(!o(e))throw e}return c&&void 0!==a&&((t,r)=>{try{if(n(t).includes(r))return;l(t,r,e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,void 0)}catch(e){if(!o(e))throw e}})(t,a),!1},e.exports.clearCurrencyCookie=e=>{let t=i(e.domain);try{t&&l(e,"",0,void 0),l(e,"",0,t)}catch(e){if(!o(e))throw e}},e.exports.readValidCurrencyCookie=(t,{enabled:s,enabledCurrencies:d})=>{if(!s)return;let c=(e=>{try{let t=n(e);if(!i(e.domain)||t.length<2)return t[0];return l(e,"",0,void 0),n(e)[0]}catch(e){if(!o(e))throw e;return}})(t);if(void 0===c)return;let u=new Set(d.map(r.toSupportedToCurrency).filter(e=>!!e)),h=(0,r.toSupportedToCurrency)(a(c));
1512if(h&&u.has(h))return h;(0,e.exports.clearCurrencyCookie)(t)}}),o("gUuHZ",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.toSupportedToCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_FROM_CURRENCIES=void 0,e.exports.SUPPORTED_FROM_CURRENCIES=["usd","cad","eur","gbp"];let r=(e,t)=>{if("string"!=typeof e)return;let r=e.toLowerCase();return t.includes(r)?r:void 0};e.exports.toSupportedFromCurrency=t=>r(t,e.exports.SUPPORTED_FROM_CURRENCIES),e.exports.DISPLAY_CURRENCIES=[{code:"usd",name:"US dollar"},{code:"eur",name:"Euro"},{code:"gbp",name:"Pound sterling"},{code:"cad",name:"Canadian dollar"},{code:"chf",name:"Swiss franc"},{code:"brl",name:"Brazilian real"},{code:"mxn",name:"Mexican peso"},{code:"sek",name:"Swedish krona"},{code:"nok",name:"Norwegian krone"},{code:"dkk",name:"Danish krone"},{code:"ars",name:"Argentine peso"},{code:"cop",name:"Colombian peso"},{code:"clp",name:"Chilean peso"},{code:"pen",name:"Peruvian sol"},{code:"dop",name:"Dominican peso"},{code:"gtq",name:"Guatemalan quetzal"},{code:"crc",name:"Costa Rican colón"},{code:"bob",name:"Bolivian boliviano"},{code:"pyg",name:"Paraguayan guaraní"},{code:"kyd",name:"Cayman Islands dollar"}],e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES.map(e=>e.code),e.exports.toSupportedToCurrency=t=>r(t,e.exports.SUPPORTED_TO_CURRENCIES)}),o("jCxYG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.fetchExchangeRates=void 0;var r=s("gUuHZ");let i=async(e,{baseUrl:t,signal:i,fetch:s,onError:o})=>{let n=(0,r.toSupportedFromCurrency)(e);if(!n)return{};let a=`${t.replace(/\/$/,"")}/api/v1/exchange-rates?from=${encodeURIComponent(n)}`;try{let e=await (s??fetch)(a,{credentials:"omit",signal:i});if(!e.ok)throw Error(`Exchange rates HTTP ${e.status}`);var l=await e.json();let t=l?.rates;if("object"!=typeof t||null===t)return{};let o={};return Object.entries(t).forEach(([e,t])=>{let i=(0,r.toSupportedToCurrency)(e);i&&"number"==typeof t&&Number.isFinite(t)&&t>0&&(o[i]=t)}),o}catch(e){try{o?.(e)}catch(e){console.warn("fetchExchangeRates: onError callback threw",e)}return{}}};e.exports.fetchExchangeRates=i}),o("igUcG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=void 0;var r=s("gUuHZ");e.exports.convertAmount=(e,t)=>{if(Number.isFinite(e)&&Number.isFinite(t)&&!(t<=0))return e*t},e.exports.formatMoney=(e,t,{precision:i=0}={})=>{let s=(0,r.toSupportedToCurrency)(t);if(!s||!Number.isFinite(e))return;let o=Number.isInteger(i)?i:0,n=Number.isInteger(e)?0:Math.min(Math.max(o,0),20);return new Intl.NumberFormat("en-US",{style:"currency",currency:s.toUpperCase(),minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}});var n={},a={};a={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let r=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===r[1].toLowerCase().indexOf("video"))return null;let i=r[r.length-1];i.lastIndexOf(".")>-1?i=`${i.slice(0,i.lastIndexOf("."))}.jpg`:i+=".jpg",r[r.length-1]=i;let s=3;"videos"===r[1].toLowerCase()&&""!==r[2]&&(s=2);let o=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;s<r.length-1&&o.test(r[s]);)s++;return r.splice(s,0,"so_0,eo_0"),t+r.join("/")}};let l={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "},d=/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9a-fA-F]+));/y,c=/[<&]/g,u=/["'>]/g,h=/<\/p\s*>|<br\s*\/?>|[\r\n\u2028\u2029]/g;function p(e,t){let r="";for(let i=0;i<e.length;){c.lastIndex=i;let s=c.exec(e);if(!s){r+=e.slice(i);break}let o=s.index;r+=e.slice(i,o);let n="&"===e[o]?function(e,t){d.lastIndex=t;let r=d.exec(e);return{text:r?function(e){if("#"!==e[1])return l[e.slice(1,-1)];
1512let t="x"===e[2]||"X"===e[2],r=parseInt(e.slice(t?3:2,-1),t?16:10);return 0===r||r>1114111||r>=55296&&r<=57343?e:160===r?" ":String.fromCodePoint(r)}(r[0]):"&",end:r?d.lastIndex:t+1}}(e,o):function(e,t,r){let i=function(e,t){let r=null;u.lastIndex=t+1;let i=u.exec(e);for(;i;){let t=i[0];if(r)t===r&&(r=null);else if('"'===t||"'"===t)r=t;else if(">"===t)return u.lastIndex;i=u.exec(e)}return -1}(e,t);return{text:-1===i?"<":function(e,t,r,i){if(!i)return"";let s=e.slice(t,r);if(/^<br\s*\/?>$/.test(s))return"&#10;";if(/^<\/p\s*>$/.test(s)){h.lastIndex=r;let t=h.exec(e);if(t&&"<"===t[0][0])return"&#10;"}return""}(e,t,i,r),end:-1===i?t+1:i}}(e,o,t);r+=n.text,i=n.end}return r}n=function(e,{isEqual:t}){let r=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],i=function(e,t,r){let i="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let s="number"==typeof r?r:0,o=Number.isInteger(e)?0:s,n={minimumFractionDigits:o,maximumFractionDigits:o};return"USD"===t?`$${e.toLocaleString(i,n)}`:"CAD"===t?`$${e.toLocaleString(i,n)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(i,n)}`:"GBP"===t?`\xa3${e.toLocaleString(i,n)}`:"PERCENT"===t?`${e}%`:"number"==typeof r&&r>-1?e.toLocaleString(i,{maximumFractionDigits:r}):e.toLocaleString(i)},s=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let r,i,a=t||{};switch(a.mode){case"short":r=o(e),i=a.frequencySeparator||"/";break;case"standard":case"std":r=n(e),i=a.frequencySeparator||"/";break;default:r=s(e),i=a.frequencySeparator||" "}return r?a.frequencyTag||a.frequencyClass?`${i}<${a.frequencyTag||"span"}${a.frequencyClass?` class="${a.frequencyClass}"`:""}>${r}</${a.frequencyTag||"span"}>`:i+r:""};return{isEmpty(e,t){let r=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?r?t.fn(this):t.inverse(this):r},ifEquals(e,r,i){return t(e,r)?i.fn(this):i.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!1):"",striptagsLineBreaks:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!0):"",truncate:(e,t,r)=>e?e.length>t?"string"==typeof r?e.slice(0,t-r.length)+r:e.slice(0,t):e:"",setSubArray(e=[],t,r,i,s){s.data.root[i]=e.slice(t,r)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:s,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,r,i){return e>=t&&e<r?i.fn(this):i.inverse(this)},formatPropertyStatus(e,t,r){let i="";switch(e){case"SOLD":i="Sold";break;case"FOR_SALE":i="For Sale";break;case"COMING_SOON":i="Coming Soon";break;case"INACTIVE":i="Inactive";break;case"POCKET_LISTING":i="Pocket Listing";break;case"PENDING":i="Pending";break;case"UNDER_CONTRACT":i="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":i="Active Under Contract";break;default:i=e}return("Sold"===i||"Leased"===i)&&t&&"string"==typeof r&&r&&(i+=` on ${r}`),i},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let r="current"===e?new Date:new Date(e);if(Number.isNaN(r.getTime()))return"";if("YYYY"===t||"year"===t)return`${r.getFullYear()}`;if("MM/DD/YY"===t){let e=r.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${r.getDate()}/${r.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][r.getMonth()]} ${r.getDate()}, ${r.getFullYear()}`},openHousesFormat(e,t,r){if(!e||!t)return"";let i=e=>{let t=e.getHours();t>12&&(t-=12);let r=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?r+="PM":r+="AM",r},s="",o=e,n=t;
1512r&&(o=new Date(e).toLocaleString("en-US",{timeZone:r}),n=new Date(t).toLocaleString("en-US",{timeZone:r}),[,,,s]=new Date(t).toLocaleString("en-US",{timeZone:r,timeZoneName:"short"}).split(" "));let a=new Date(o),l=a.toLocaleDateString("en-US"),d=i(a),c=i(new Date(n));return`${l} ${d} - ${c} ${s}`},math:(e,t,r)=>(e=parseFloat(e),({"+":e+(r=parseFloat(r)),"-":e-r,"*":e*r,"/":e/r,"%":e%r})[t]),findByKey(e,t,r,i){let s=(e||[]).find(e=>e[t]===r);return i.fn(s)},capitalize(e,t,r){let i;return"string"==typeof e&&e.length&&(i=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),i},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,r,i){let s="",o=null;i.data&&(o=e.createFrame(i.data));let n=(r||[]).filter(Boolean);if(n&&n.length){let e=0;s=n.reduce((r,s,n)=>{let a=(t||[]).find(e=>e.id===s);return a?(o&&(o.index=n-e),r+i.fn(a,{data:o})):(e+=1,r)},"")}else for(let e=0,r=(t||[]).length;e<r;e++)o&&(o.index=e),s+=i.fn(t[e],{data:o});return s},ifIn(e,t,r){return t&&t.indexOf(e)>-1?r.fn(this):r.inverse(this)},partial:(t,r)=>(e.registerPartial(t,e.compile(r.fn())),`
1512<script type="text/x-handlebars-template" class="${t} pagination-script">${r.fn()}<\/script>`),numCompare(e,t,r,i){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[r](e,t)?!i.fn||i.fn(this):!!i.fn&&i.inverse(this)},lpFormatNumber:i,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,r)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,r,i){let s=null,o=0,n=new Set;return i.data&&(s=e.createFrame(i.data)),(t||[]).reduce((e,t,a)=>{let l=r?t[r]:t;return!n.has(l)||r&&void 0===l?(n.add(l),s&&(s.index=a-o),e+i.fn(t,{data:s})):(o+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let r=t[t.length-1].hash,s=t.length>1?t[0]:r.property,o=r.precision||0;t.length>2&&(r.mode=t[1]),r.mode||(r.mode="short");let n=t.length>3?t[2]:r.separator;if("string"!=typeof n&&(n=" | "),s.isPasswordProtected)return"Exclusive Listing";let a=t.length>4?t[3]:r.priceUponRequestText;if("string"!=typeof a&&(a="Price Upon Request"),s.priceUponRequest)return a;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(r.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${r.reducedTag||"span"} class="${r.reducedClass}">${i(c,s.currency,o)}</${r.reducedTag||"span"}>`),d&&(d=i(d,s.currency,o),r.priceTag||r.priceClass?u+=`<${r.priceTag||"span"}${r.priceClass?` class="${r.priceClass}"`:""}>${d}</${r.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&i(s.leasePrice,s.currency,o);if(h){u&&(u+=n);let e=`${h}${l(s.leasePeriod,r)}`;r.leaseTag||r.leaseClass?u+=`<${r.leaseTag||"span"}${r.leaseClass?` class="${r.leaseClass}"`:""}>${e}</${r.leaseTag||"span"}>`:u+=e}
1512return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:s,...o}=i.hash,n="",a="";if("string"==typeof t)n=t;else{let e={},{height:s,width:l,altTagText:d}=t;r.forEach(r=>{t[r.field]&&!e[t[r.field]]&&(e[t[r.field]]=r.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(o.alt=d),s&&l&&(s>=l&&(o.class?o.class+=" portrait":o.class="portrait"),"setDims"in i.hash&&(o.width=l,o.height=s)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(a=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,r)=>Math.abs(e[t]-1280)-Math.abs(e[r]-1280))),n=c[0]}delete o.setDims,a||delete o.sizes,"alt"in o||(o.alt=""),!("loading"in o)&&(i?.data?.root?.sectionIndex>1||s)&&(o.loading="lazy");let l=Object.keys(o).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(o[t])}"`).join(" ");return new e.SafeString(`<img src="${n}"${a?` srcset="${a}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let r in e)null!==e[r]&&void 0!==e[r]&&"object"!=typeof e[r]&&(t+=e[r]);return t},setVideoExtension(e,t){if(!e||!t)return"";let r=new URL(e);if("res.cloudinary.com"!==r.host)return r.pathname.endsWith(`.${t}`)?e:"";let i=r.pathname.lastIndexOf("."),s=r.pathname;return -1!==i&&(s=r.pathname.substr(0,i)),r.pathname=`${s}.${t}`,r.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let r=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${r}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:a.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let r=+t?.hash?.maxChars||2,i=e.match(/\b\w/g)?.slice(0,r);return i?(t?.hash?.addText&&(i=i.map(e=>e+t.hash.addText)),i.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class m{constructor(e,t,r){if(this.config=e,this.window=t,this.document=r,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let g="lp_lead_form_conversion_fired";function y(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(g)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(g,"true")}catch{}}catch{}}function f(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let b="/api/v1/home-valuation";class v extends m{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let r=t.indexOf(", call time frame:");return -1!==r&&(t=t.substring(0,r).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,r={},i=t("street_number"),s=t("route"),o=t("administrative_area_level_1"),n=t("postal_code"),a=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return i&&(r.streetNumber=i),s&&(r.streetName=s),l&&(r.city=l),o&&(r.state=o),n&&(r.zipcode=n),a&&(r.addressLine2=a),r}_extractAddressAndCoordinates(e){let t=null,r=null;if(e?.result){let{result:i}=e;i.address?.addressComponents&&(t=this._transformAddressComponents(i.address.addressComponents)),i.geocode?.location&&(r={latitude:i.geocode.location.latitude,longitude:i.geocode.location.longitude})}return{structuredAddress:t,coordinates:r}}_filterEmptyStrings(e){let t={};for(let[r,i]of Object.entries(e))""!==i&&null!=i&&(t[r]=i);return t}_getRawAddress(e){let t=e.activity.content||{},r=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,r,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,r=null){let i={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(r&&(i.errorMessage=r.userMessage||(r.status?`Request failed with status ${r.status}`:"An error occurred"),i.errorName=r.name,i.errorStatus=r.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(i)),this.window.posthog)try{this.window.posthog.capture(e,i)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
1512ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,r,i){let s=this._formatStructuredAddress(r)||this._getRawAddress(e);if(!s)throw Error("Unable to extract home valuation address from form data");let o={companyId:e.companyId,homeValuationAddress:s,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},n={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
1512ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},a=this._filterEmptyStrings(n);return{...o,...a,...r&&{address:r},...i&&{coordinates:i}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let r=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(r,e),r.status=t,r}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,r){let i=new AbortController,s=setTimeout(()=>i.abort(),1e4);try{let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:i.signal});clearTimeout(s);let n=await o.text(),a=this._parseResponsePayload(n);if(!o.ok)throw this._createResponseError(a,o.status);if(a&&"success"===a.status&&a.redirectUrl){if(f(r))return a;if(!this._isSafeRedirectUrl(a.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),a;return this.window.location.href=a.redirectUrl,{redirected:!0,url:a.redirectUrl}}return a}catch(e){throw clearTimeout(s),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let r=this._getRawAddress(e),i=null;try{i=await this._validateAddressSafely(r)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let s=null;try{s=await this._getHomeValuationEstimateSafely(i)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),s=null}let{structuredAddress:o,coordinates:n}=this._extractAddressAndCoordinates(i),a=`${t}${b}`,l=this._buildHomeValuationData(e,s,o,n),d=await this._submitLead(a,l,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),d}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:r}=this,i=t.googleMapsAPIKey;if(!i&&r.luxuryPresence?.mapApiLoader&&(i=await r.luxuryPresence.mapApiLoader.getMapApiKey()),!i)throw Error("Google Maps API key not configured");let s=new AbortController,o=setTimeout(()=>s.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:s.signal});if(clearTimeout(o),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(o),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${b}`;if(!e?.result?.address?.addressComponents)return null;let r=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(r))return this._logMissingAddressFields(r),null;let i=this._buildAddressQueryString(r),s=`${t}?${i}`,o=new AbortController,n=setTimeout(()=>
1512o.abort(),1e4);try{let e=await fetch(s,{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(n),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(n),e}}}let w="middleName",E="redirect-pending",_=["name","firstName","lastName",w,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],S="lp_map_key_failed",C="oauthSuccess",I={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function A(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function x(e,t){t.forEach(t=>{let r=e[t];Array.isArray(r)&&0===r.length&&delete e[t]})}function R(e,t,r,i){let s=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),o=i?.merge?s.flat():s.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),o.length>0&&(e[r]=[...new Set(o)])}function T(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let r=[...e.socialLinks].sort((e,t)=>{let r=e.type?.toLowerCase()||"",i=t.type?.toLowerCase()||"";return r.localeCompare(i)});t.socialLinks=r;let i={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};r.forEach(e=>{let r=i[e.type?.toLowerCase()??""];r&&(t[r]=e.link)})}return t}function L(e){return e&&Array.isArray(e)?e.map(e=>T(e)):e}function k(e){let{region:t}=e;if(!A(t))return e;let{schools:r,pois:i,...s}=t,o={...s,schools:A(r)?r.data??[]:[],...Array.isArray(i)?{pois:i.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:o}}function M(e){return e&&Array.isArray(e)?e.map(e=>k(e)):e}function $(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let r=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:r}}function U(e){return e&&Array.isArray(e)?e.map(e=>$(e)):e}function P(e,t){return A(e)?t(e):e}function O(e,t){return Array.isArray(e)?t(e):e}var N={};N=`
1513  query PropertyDisclaimers($input: PropertyDisclaimersInput!) {
1514    propertyDisclaimers(input: $input) {
1515      feedId
1516      listingId
1517      resolvedFromListing
1518      listingCardAttribution
1519      listingDetailCourtesy
1520      listingDetailFooter
1521      logo
1522    }
1523  }
1524`;let D={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"};var F={};F=s("ikl6F");let B=new class{constructor(e){this.isBuilder=!1,this.companyId=null,this.websiteId=null,this.pageId=null,this.shareId=null,this.pageMeta=null,this.websiteApiGatewayUrl=null,this.buyerSellerServiceUrl=null,this.leadIngesterUrl=null,this.divolteServiceUrl=null,this.eventBus=null,this.templateId=null,this.myhomeDashboardEnabled=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null,this.currencyConversionEnabled=!1,this.enabledCurrencies=[]}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setCurrencyConversion({enabled:e,enabledCurrencies:t}={}){this.currencyConversionEnabled=!0===e,this.enabledCurrencies=Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}setEventBus({enabled:e,apiKey:t,url:r}){this.eventBus={enabled:e,apiKey:t,url:r}}}({}),q=new class extends m{constructor(e,t,r){super(e,t,r),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:r}=this;this.pageId=t.pageId,this.modals=r.querySelectorAll("body > #modals >
1524 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,r=new Date().getTime()+864e5,i=`modal-controller-${e}`;try{t.localStorage.setItem(i,JSON.stringify(r))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,r=t.localStorage,i=r.getItem(`modal-controller-${e}`);if(!i)return!1;let s=JSON.parse(i);return!(new Date().getTime()>s)||(r.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:r}=this,i=this.getModalWithExpiry(e);(e&&!i||!0===t.forced)&&(r.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:r,pageSpecific:i}=e;(!i||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===r?this._exitModalHandler(e):"TIMER"===r?this._timerModalHandler(e):"FORCED"===r&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:r,exitModalTriggered:i}=this,{modalId:s}=e;function o(e){!i[s]&&(e.toElement||e.relatedTarget||(t.show(s),i[s]=!0))}r.addEventListener("mouseout",o),this.exitModalEventListeners.push(o)}_timerModalHandler(e){let{modalId:t,timerDelay:r}=e;setTimeout(()=>{this.show(t)},r)}_forcedModalHandler(e){let{modalId:t}=e,{window:r,document:i}=this;if("true"!==r.localStorage.getItem("isSignedUp")){let e=i.querySelector(`#modal-${t}`),s=e?.querySelector("form"),o=s?.dataset.delay||2e3;s.addEventListener("formsubmitted",()=>{this.setLoginState()}),r.addEventListener("oauthSuccess",()=>{this.setLoginState(),s.classList.add("success"),setTimeout(()=>{r.lpUI.hideModal(`modal-${t}`),s.reset(),s.classList.remove("success")},o)}),this.show(t,{forced:!0})}}}(B,window,document),V=new class extends m{constructor(e,t,r){super(e,t,r),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:r}=this,i=e.target.closest("button, a");if(!i)return;let s=i.dataset.type||"",o=i.href||i.dataset.href||"",n=i.target||"",{submit:a}=i.dataset;if(a){try{await this._handleSubmit(i)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(o,"_blank"===n)}if(this._trackConversion(i),"VIDEO"===s)return void this._handleVideoButton(i);if("CONTACT_US"===s)return void this._handleContactUsButton(i);if("SUBSCRIBE"===s)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===s)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===s){let t=i.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===s.substring(0,6)){let e=s.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(o?.startsWith("mailto:")){let e=o.substring(7);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(o?.startsWith("tel:")){let e=o.substring(4);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:r}=this;return t?await r.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,r,i]=t,s=`https://player.vimeo.com/video/${r}?`;return i&&(s+=`h=${i}&`),s+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,r=e.closest("section"),{src:i}=e.dataset,s="";if(i&&(i.includes("youtube.com")||i.includes("youtu.be"))&&!i.includes("youtube.com/embed")){let e=i.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
1524)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(s=e[1])}let o=this._getVimeoSrc(i);if(s?i=`https://youtube.com/embed/${s}?autoplay=1&controls=0`:o&&(i=o),!i||!r)return;let n=i.endsWith(".mp4")||i.endsWith(".webm")||i.includes("cloudinary.com"),a=`
1525      <div id="modal-${r.id}" class="modal visible">
1526        <div class="modal-content">
1527          <div class="lightbox-video">
1528            <div class="video-player">
1529              <div class="embed-container">
1530                ${n?`<video controls autoplay src="${i}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${i}"></iframe>`}
1531              </div>
1532            </div>
1533          </div>
1534        </div>
1535        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
1536      </div>
1537    `;t.body.insertAdjacentHTML("beforeend",a);let l=t.getElementById(`modal-${r.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:r}=this;r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:r}=this,{gtagConversionId:i,gtagConversionLabel:s,fbEventName:o}=e.dataset;if(i&&s){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===i)||r.sendGoogleTagManagerEvent("config",i));let e=`${i}/${s}`;r.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&o&&t.fbq("track",o,{})}}(B,window,document),j=new class extends m{constructor(e,t,r){super(e,t,r),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:r}=this,{selector:i}=e,s=[];if(s=i?r.querySelectorAll(`${i} form[data-type="contact-form"]`):r.querySelectorAll('form[data-type="contact-form"]'),r.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:r}=t.luxuryPresence.libs,{libphonenumber:i}=r;e(i.jsSrc,this.attachValidation.bind(this,s))}else this.attachValidation(s);this.validatedForms=this.validatedForms.concat(s)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let r=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;r(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(B,window,document),H=new class extends m{constructor(e,t,r){super(e,t,r),this.forms=[],this.homeValuationService=new v(e,t,r)}initialize(e={}){try{let{document:t}=this,{selector:r}=e,i=[];(i=r?t.querySelectorAll(`${r} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(i)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),r={},i=[],s=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let o=e.trim();s.test(t)&&o&&i.push(o);let n=r[t];r[t]=n?`${n} ${o}`:o}else r[t]=e}),i.length?r.name=i.join(" ").trim():!r.name&&r.firstName&&(r.name=r.firstName,r.lastName&&(r.name+=` ${r.lastName}`)),this._deriveNameParts(r)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,r){let{window:i,config:s}=this,o=Object.keys(e).filter(e=>!_.includes(e)).reduce((t,r)=>(t[r]=e[r],t),{}),{pageId:n,companyId:a,websiteId:l,pageMeta:d}=s,c=i.localStorage.getItem("utm_vars")||"{}",u=i.localStorage.getItem("referrer")||"",h=this._getFormId(r);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:i.location.href,content:{...o,...JSON.parse(c)}},page:{pageId:n,companyId:a,websiteId:l,pageMeta:{...d,formId:h}},companyId:a,referrer:u,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,r=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
1537=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},r)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let r=this._getFields(t),i=this._buildSubmissionData(e,r,t);y(this.window,this.document);let s=await this._waitForLeadSubmit(e=>this._submitLeadRequest(i,e));if(this._sendGAEvent(i),s?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,r={expired:!1,expiresAt:Date.now()+6e3},i=new Promise(e=>{t=setTimeout(()=>{r.expired=!0,e(null)},6e3)}),s=e(r).catch(e=>{if(f(r))return null;throw e});try{return await Promise.race([s,i])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(E),e.querySelector(`.${E}__indicator`))return;let t=this.document.createElement("div");t.className=`${E}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:r}=this.config;if(!t||!r)return void console.warn("[EventBus] Missing required data for user alias");let i=this.window.eventBusProvider.getDistinctId();if(!i)return void console.warn("[EventBus] No anonymous ID available for alias");let s=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(r,t);this.window.eventBusProvider.alias({anonId:i,canonicalId:s}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:r}=this;return(this._aliasUserWithEventBus(e),r.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${r.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,r={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":r.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":r.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":r.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":r.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:r={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(r)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(t=>{let{id:i,name:s,type:o}=t;if(s===w)return!0;let n="";if(i){let r=e.querySelector(`label[for='${i}']`);r?n=r.textContent.trim():t.placeholder&&(n=t.placeholder.trim())}r[s]={label:n,type:t.tagName,inputType:"INPUT"===t.tagName?o:"text"}}),r}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let r=e.querySelector(".submission-error-message");r||((r=this.document.createElement("div")).className="submission-error-message",r.setAttribute("role","alert"),e.appendChild(r)),r.textContent=t||"Something went wrong. Please try again.",r.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(B,window,document),G=new class extends m{constructor(e,t,r){super(e,t,r),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let r=1;r<=3;r+=1){let i=e&&!t;try{let e=await fetch(this._getMapKeyUrl(r,i));if(t=t||i,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let s=await e.text();if(!s)return"";return this.apiKey=s,this.apiKey}catch(e){console.error(e),r<3&&await this._delay(300*2**(r-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let r=[];e>1&&r.push(`attempt=${e}`),t&&r.push("recovered_after_failure=1");let i=r.length?`?${r.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${i}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(S)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(S,"1"):this.window.sessionStorage.removeItem(S)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
1537let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(r=>{r?t(r):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let r=Math.min(1024/e,1024/t);return{width:parseInt(e*r),height:parseInt(t*r)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let r=t.visibility?`visibility:${t.visibility}`:"",i=t.color?`color:${t.color.replace("#","0x")}`:"",s=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${r}${i}${s}`},""),r=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${r}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:r}=await t.json();return r}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,r,i,s,o){let{width:n,height:a}=this.resizeStaticMapDimensions(s,o),l={center:`${e},${t}`,zoom:r,scale:2,size:`${n}x${a}`,key:this.apiKey};i&&(l.style=this.convertThemeToStaticApiUrl(i));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:r,...i}){let{width:s,height:o}=this.resizeStaticMapDimensions(e,t),n={...i,size:`${s}x${o}`};r&&(n.style=this.convertThemeToStaticApiUrl(r));let a=new URLSearchParams;Object.entries(n).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>a.append(e,t.toString())):a.append(e,t.toString())});let l=a.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(B,window,document),K=new class extends m{destroy(){}updateQueryString(e,t,r){r||(r=this.window.location.href);let i=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),s="";null!=t&&(Array.isArray(t)?t.length&&(s=this.serializeArray(e,t)):"object"==typeof t?(i=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),s=this.serializeObj(t,"",e)):s=`${e}=${encodeURIComponent(t)}`);let o=r.split("#"),n=o[0];if(i.test(r)){let e=n;for(s=s?`$1${s}$2`:"$1";i.test(e);)n=e.replace(i,s),e=e.replace(i,"$1");n=n.replace(/(&|\?)$/,"")}else if(s){let e=-1!==n.indexOf("?")?"&":"?";n+=`${e}${s}`}return void 0!==o[1]&&null!==o[1]&&(n+=`#${o[1]}`),n}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let r=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat();if(!i.length){let r=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat(),this._parseParamToObject(i,"advancedFilters"===e)}return i.length>3?i.reduce((e,t,r)=>((r+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):i[2]?decode
1537URIComponent(i[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let r={},i=this.makePageKey(t),s=this.getParameterByName(i);return s&&(r.page=parseInt(s)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,i),s=this.getParameterByName(t);if("int"===e.type)isFinite(s=parseInt(s))||(s=null);else if("bool"===e.type||"boolean"===e.type)s="true"===s||"false"!==s&&null;else if("json"===e.type)try{s=JSON.parse(s)}catch(e){}r[e.formKey||e.param]=s}),r}serializeParams(e,t,r){let i=this.window.location.href,s=this.makePageKey(t);return i=this.updateQueryString(s,r.page,i),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),o=r[e.formKey||e.param];"json"===e.type&&null!=o&&(o=JSON.stringify(o)),i=this.updateQueryString(t,o,i)}),i}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",r=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${r}K`:`${this.formatSliderAtom(e/1e6,t)}${r}M`}formatSliderPriceRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e,r," ")}`:t.max===e?`${this.formatSliderValue(e,r," ")}${i.highSuffix}`:`${this.formatSliderValue(e,r," ")}`}formatSliderAreaRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e)} ${r}`:t.max===e?`${this.formatSliderValue(e)}${i.highSuffix} ${r}`:`${this.formatSliderValue(e)} ${r}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:r,areaSliderElement:i,neighborhoodSelect:s}=e,o={};if(t&&(o.search=t.value||null),r){let e=r.value.split(";"),t=parseInt(r.dataset.min),i=parseInt(r.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.priceMin=s!==t?s:null,o.priceMax=n!==i?n:null}if(i){let e=i.value.split(";"),t=parseInt(i.dataset.min),r=parseInt(i.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.areaMin=s!==t?s:null,o.areaMax=n!==r?n:null}return s&&(o.neighborhoodId=s.value||null),o}serializeObj(e,t="",r=""){let i=[];for(let s in e)if(e.hasOwnProperty(s)){let o,n=e[s];if(r){let e=t?`[${t}][${s}]`:`[${s}]`;o=`${r}${e}`}else o=t?`${t}[${s}]`:s;null!==n&&Array.isArray(n)?n.length&&i.push(this.serializeArray(o,n)):null!==n&&"object"==typeof n?i.push(this.serializeObj(n,o)):i.push(`${o}=${encodeURIComponent(n)}`)}return i.join("&")}serializeArray(e,t,r=""){let i=[];return t.forEach(t=>{let s=r?`${r}${e}`:e;i.push(`${s}=${encodeURIComponent(t)}`)}),i.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let r={};for(let i=0;i<e.length;i++)if((i+1)%3==0){let s=decodeURIComponent(e[i].replace(/\+/g," ")),o=e[i-1];Object.assign(r,this._setObjectPath(o,s,r,t))}return r}_setObjectPath(e,t,r,i=!1){let s=e.split(/[\[\]]/).filter(Boolean),o=["in","nin","btw","ciin","cinin"],n={},a=n,l=((e,t,r)=>{if(!t)return;let i=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===i?r:i})(r,s.join("."));return s.forEach((e,n)=>{n===s.length-1?l?a[e]=Array.isArray(l)?[...l,t]:[l,t]:a[e]=i&&o.includes(e)?[t]:t:(a[e]=r[e]?r[e]:{},a=a[e])}),n}}(B,window,document),Y=new class extends m{constructor(e,t,r){super(e,t,r),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,r=e.closest("section[id]"),i=e.dataset.append,s=r.querySelector(".lp-expand-btn");if(!s)if((s=t.createElement("button")).className="lp-expand-btn",s.setAttribute("aria-label","Open a lightbox"),s.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',i){let e=r.querySelector(i);e&&e.appendChild(s)}else{let r=t.createElement("div");r.className="lp-expand-btn-wrapper",r.style.position="relative",r.appendChild(s),e.parentNode.insertBefore(r,e.nextSibling)}s.addEventListener("click",()=>{this._createLightbox({slider:e,section:r})})}_createLightbox({slider:e,section:t,initialIndex:r}){let{window:i,document:s}=this,o=`lightbox-for-${t?.id}`,n=i.$&&i.$.fn.slick,a=n&&e.slick,l="function"==typeof i.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=s.createElement("div");t.id=o,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=`
1538      <button class="lp-lightbox__close" aria-label="close modal"></button>
1539      <div class="lp-lightbox__content">
1540        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
1541          <div class="splide__arrows">
1542            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
1543            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
1544          </div>
1545          <div class="splide__track">
1546            <ul class="splide__list"></ul>
1547          </div>
1548        </div>
1549      </div>
1550    `,"function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",s.body.appendChild(t);let n=t.querySelector(".lp-lightbox__carousel"),a=n.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
1550h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("li");r.className="lp-lightbox__slide splide__slide",r.appendChild(t),a.appendChild(r)});let l=new i.Splide(n,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==r&&r>=0&&l.go(r),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let r=t.querySelector(".splide__arrow--prev"),i=t.querySelector(".splide__arrow--next"),s=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&r?(e.preventDefault(),r.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())};s.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",t.remove()})}if("function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",n&&!d){let t,r,n,l,d;r={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(n=s.createElement("div")).id=o,n.className="lp-lightbox",n.setAttribute("tabindex","-1"),n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true"),n.innerHTML=`
1551        <button class="lp-lightbox__close" aria-label="close modal"></button>
1552        <div class="lp-lightbox__content">
1553          <div class="lp-lightbox__carousel"></div>
1554        </div>
1555      `,s.body.appendChild(n),l=n.querySelector(".lp-lightbox__carousel"),n.classList.add("show"),a?(t=e.slick.$slides.find("img"),r.initialSlide=e.slick?.currentSlide||0,t.each(function(){i.$(".lp-lightbox__carousel").append(i.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("div");r.className="lp-lightbox__slide",r.appendChild(t),l.appendChild(r)}),i.$(l).slick(r),setTimeout(()=>{n.focus()},100),d=e=>{if(!n.classList.contains("show"))return;let t=n.querySelector(".lp-lightbox-arrow--prev"),r=n.querySelector(".lp-lightbox-arrow--next"),i=n.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&r?(e.preventDefault(),r.click()):"Escape"===e.key&&i&&(e.preventDefault(),i.click())},s.addEventListener("keydown",d),n.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",d),n.classList.remove("show");let t=l?.slick?i.$(l).slick("slickCurrentSlide"):0;l?.slick&&i.$(l).slick("unslick"),a&&i.$(e).slick("slickGoTo",t),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",n.remove()})}else l?c():(i.luxuryPresence.libs.loadCss(i.luxuryPresence.libs.jsLibsMap.splide.cssSrc),i.luxuryPresence.libs.loadJs(i.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),i.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(B,window,document),z=new class extends m{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a}=this.config;this.window.divolte.signal(e,Object.assign({companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(B,window,document),W=new class extends m{constructor(e,t,r){super(e,t,r)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
1555)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:r}=this.config;try{this.window.eventBusProvider.capture(e,{company:r,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(B,window,document),Q=new class extends m{constructor(e,t,r){super(e,t,r),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(C,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:r}=this.config,{data:i,origin:s}=e,{type:o,height:n,event:a,source:l,token:d}=i;if(o===t||"hide_intermediate_iframe"===o){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=n,e.style.display=o===t?"unset":"none")}s===r&&"GOOGLE_SIGN_ON"===l&&("success"===a?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===a&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let r=this.document.createElement("iframe");r.src=this._buildUrlAndCopyAttributes(t,r,e),r.dataset.isSocialOauthButton=!0,t.replaceWith(r)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(C);this.window.dispatchEvent(e),y(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,r){let{buyerSellerServiceUrl:i,companyId:s,websiteId:o,pageId:n,pageMeta:a}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${i}/buttons/${r}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",s),c.searchParams.append("websiteId",o),c.searchParams.append("pageId",n),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(a)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
1555return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=4-t.length%4,i=4===r?t:t+"=".repeat(r);return JSON.parse(atob(i))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(B,window,document),J=new class extends m{constructor(e,t,r){super(e,t,r),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:r})=>{e&&e.removeEventListener&&e.removeEventListener(t,r)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector('input[name="email"]');r&&"string"==typeof e&&(r.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector(`#${this.modalId}-triggerSource`);r&&"string"==typeof e&&(r.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,r){let i="";if(r){let e=new Date;e.setTime(e.getTime()+864e5*r),i=`; expires=${e.toUTCString()}`}let s="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(s+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${i}${s}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let r=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",r),this.eventListeners.push({element:t,event:"formsubmitted",handler:r})}let r=e.querySelector('[data-dismiss="modal"]');if(r){let t=()=>{e.style.display="none",this.restoreBodyScroll()};r.addEventListener("click",t),this.eventListeners.push({element:r,event:"click",handler:t})}let i=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",i),this.eventListeners.push({element:e,event:"click",handler:i})}}(B,window,document),X=new class extends m{constructor(e,t,r){super(e,t,r),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let r=`
1556      query {
1557        validSession {
1558          success
1559        }
1560      }
1561    `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:r})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let i=t.data?.validSession?.success===!0;return this.lastValidationResult=i,this.lastValidationTime=Date.now(),i}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(B,window,document),Z=new class extends m{constructor(e,t,r){super(e,t,r),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=I[e.provider];if(!t)return;this.eventName=t.eventName;let r=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||r)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(B,window,document),ee=new class extends m{destroy(){}transformVariables(e,t){let r;return x(r={...t},["testimonialId"]),R(r,["testimonialId"],"testimonialIds"),0===r.limit&&delete r.limit,(void 0===r.limit||null===r.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(r.limit=50),("agents"===e||"agentsCount"===e||"developments"===e||"developmentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(r.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(r),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":x(e,["testimonialIds"]);break;case"agents":case"agentsCount":x(e,["officeId","teamId","developmentId","agentIds","tags"]),R(e,["officeId"],"officeIds"),R(e,["teamId"],"teamIds"),R(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":x(e,["neighborhoodIds","neighborhoodId"]),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":x(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds"),R(e,["developmentIds","developmentId"],"developmentIds");break;case"properties":case"propertiesCount":x(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
1561spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>R(e,[t],t)),R(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),R(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),R(e,["networkId"],"networkId"),R(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":x(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":x(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":x(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),R(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":x(e,["officeId","officeIds","tags"]),R(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":x(e,["teamId","teamIds"]),R(e,["teamId"],"teamIds");break;case"pois":x(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(r,e),r}transformResponse(e,t){return"agent"===e?P(t,T):"agents"===e||"agentsCount"===e?O(t,L):"neighborhood"===e?P(t,k):"neighborhoods"===e||"neighborhoodsCount"===e?O(t,M):"development"===e?P(t,$):"developments"===e||"developmentsCount"===e?O(t,U):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,r){if(!Array.isArray(t)||!t.length||!r||!r.length)return Promise.resolve(t);let i=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),s=e=>{let i={};return(e||[]).forEach(e=>{i[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&i[`${e.vendorId}:${e.mlsId}`],s={};return r.forEach(e=>{let r=t?t[D[e]]:void 0;s[e]=r??null}),{...e,...s}})};if(!i.length)return Promise.resolve(s([]));let{websiteId:o}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(N),variables:{input:{websiteId:"string"==typeof o?o:void 0,properties:i}}}).then(e=>s(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),s([]))):Promise.resolve(s([]))}}(B,window,document),et=new class extends m{constructor(e,t,r){super(e,t,r),this.natives=new WeakMap,this.rates=new Map,this.pending=new Map,this.target=void 0,this.generation=0,this.initialized=!1,this.observer=null,this.abortController=null}get currentCurrency(){return this.target}get cookieOptions(){return{document:this.document,location:this.window.location}}get enabledCurrencies(){return(this.config.enabledCurrencies??[]).map(F.toSupportedToCurrency).filter(Boolean)}initialize(){return this.initialized||!this.config.currencyConversionEnabled?Promise.resolve():(this.initialized=!0,this.generation=0,this.abortController=new this.window.AbortController,this.target=(0,F.readValidCurrencyCookie)(this.cookieOptions,{enabled:!0,enabledCurrencies:this.enabledCurrencies}),this.observer=new this.window.MutationObserver(()=>this.ensureRates(this.apply())),this.observer.observe(this.document.body,{childList:!0,subtree:!0}),this.ensureRates(this.apply()))}setCurrency(e){if(!this.config.currencyConversionEnabled)return!1;let t=(0,F.toSupportedToCurrency)(e);return!!t&&!!this.enabledCurrencies.includes(t)&&(this.target=t,this.generation+=1,(0,F.writeCurrencyCookie)(this.cookieOptions,t)||console.warn("[CurrencyConversionController] could not persist currency preference:",t),this.apply(),!0)}reset(){this.config.currencyConversionEnabled&&(this.target=void 0,this.generation+=1,(0,F.clearCurrencyCookie)(this.cookieOptions),this.apply())}destroy(){this.observer?.disconnect(),this.observer=null,this.abortController?.abort(),this.abortController=null,this.pending.clear(),this.rates.clear(),this.generation=null,this.initialized=!1}apply(){let e=new Set;return this.document.querySelectorAll("[data-lp-price]").forEach(t=>{let r=this.natives.get(t);if(!r){if(!(r=(e=>{let t=e.getAttribute("data-lp-native-amount"),r=null===t||""===t.trim()?NaN:Number(t),i=(0,F.toSupportedFromCurrency)(e.getAttribute("data-lp-native-currency"));if(!Number.isFinite(r)||r<0||!i)return;let s=Number(e.getAttribute("data-lp-precision"));return{amount:r,currency:i,precision:Number.isInteger(s)&&s>=0?s:0,originalHTML:e.innerHTML}})(t)))return;this.natives.set(t,r)}this.rates.has(r.currency)||e.add(r.currency),this.render(t,r)}),[...e]}render(e,t){let r=this.convertedText(t);if(void 0===r){e.innerHTML!==t.originalHTML&&(e.innerHTML=t.originalHTML);return}e.textContent!==r&&(e.textContent=r)}convertedText(e){if(!this.target||this.target===e.currency)return;let t=this.rates.get(e.currency)?.[this.target];
1561if("number"!=typeof t||!Number.isFinite(t))return;let r=(0,F.convertAmount)(e.amount,t);if(void 0!==r)return(0,F.formatMoney)(r,this.target,{precision:e.precision})}ensureRates(e){return e.length?Promise.all(e.map(e=>this.requestRates(e))).then(()=>{null!==this.generation&&this.apply()}):Promise.resolve()}requestRates(e){let t=this.pending.get(e);if(t)return t;let r=this.abortController?.signal,i=(0,F.fetchExchangeRates)(e,{baseUrl:this.config.valuationApiBase,signal:r,onError:t=>console.warn(`[CurrencyConversionController] exchange rate fetch failed for ${e}:`,t)}).then(t=>{r?.aborted||this.rates.set(e,t??{})});return this.pending.set(e,i),i}}(B,window,document);function er(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}er("config",B),er("modals",q),er("buttons",V),er("validation",j),er("contactForms",H),er("mapApiLoader",G),er("pagination",K),er("expandSliders",Y),er("divolte",z),er("eventBus",W),er("oauth",Q),er("qualifyingQuestionsModal",J),er("session",X),er("consent",Z),er("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),er("routerApi",ee),er("currencyConversion",et),window.luxuryPresence.formatSliderPriceRange=K.formatSliderPriceRange.bind(K),window.luxuryPresence.formatSliderAreaRange=K.formatSliderAreaRange.bind(K),window.luxuryPresence.getSearchFormValues=K.getSearchFormValues.bind(K),window.luxuryPresence.handlebarsHelpersFactory=function(t){return e(n)(t,{isEqual:(e,t)=>e==t})}})();
1562//# sourceMappingURL=lp-sdk.js.map
1563
1564    </script>
1564
1565
1566    
1566<script>
1567        var lpGlobalInitialized = false;
1568
1569        function lpGlobalInit () {
1570          if (lpGlobalInitialized) {
1571            return;
1572          }
1573            lpGlobalInitialized = true;
1574            // Initialize wow animation plugin only according to turbolinks
1575            var wow;
1576            if (window.WOW) {
1577                wow = new WOW({
1578                    animateClass: 'animated',
1579                    offset: wowOffset,
1580                    live: false,
1581                    callback: function(box) {}
1582                });
1583            }
1584            // Initialize handlebar helpers only once
1585            function handlebarsInit() {
1586              if (!window.Handlebars) {
1587                return;
1588              }
1589              HandlebarsIntl.registerWith(Handlebars);
1590              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
1591            }
1592
1593            handlebarsInit();
1594
1595              var modalContentUrl = "/modals.html";
1596                const modalsContainer = document.getElementById('modals');
1597                if (modalsContainer) {
1598                  fetch(modalContentUrl).then(function(res) {
1599                    if (!res.ok) {
1600                      throw new Error(`HTTP error! Status: ${res.status}`);
1601                    }
1602                    return res.text();
1603                  }).then(function(resultText) {
1604                    modalsContainer.innerHTML = resultText;
1605
1606                    // now we need to execute all script elements
1607                    Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) {
1608                      const script  = document.createElement("script");
1609                      script.text = s.innerHTML;
1610                      Array.from(s.attributes).forEach(function (a) {
1611                        script.setAttribute(a.name, a.value);
1612                      })
1613                      s.parentNode.replaceChild(script, s);
1614                    });
1615
1616                    try {
1617                      window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes);
1618                      window.luxuryPresence.contactForms.initialize({ selector: '#modals' });
1619                      window.luxuryPresence.validation.initialize({ selector: '#modals' });
1620                      window.luxuryPresence.oauth.initialize({
1621                        googleSignOnEnabled: true,
1622                        iframe: false });
1623                    } catch (e) {
1624                      console.log(e);
1625                    }
1626                    document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => {
1627                      closeModalBtn.addEventListener('click', function() {
1628                        window.lpUI.hideClosestModal(closeModalBtn);
1629                      });
1630                    });
1631                  }).catch((e) => console.log(e));
1632                }
1633            /* Initialize Luxury Presence SDK */
1634            try {
1635                window.luxuryPresence.config.setCompany("32443cf2-4f8c-4e0f-8bb4-a310afb42f31", {});
1636                window.luxuryPresence.config.setWebsite("db633698-1cbe-4d33-a362-b83e8348acd5", {
1637                    myhomeDashboardEnabled: true,
1638                    mlsEnabled: true,
1639                    hstValuationRedirectEnabled: true,
1640                    hvStepTwoCaptureEnabled: false
1641                });
1642                const url = new URL(window.location.href);
1643                const shareId = url.searchParams.get('shareId');
1644                window.luxuryPresence.config.setPage("f4ce7289-6823-4e67-9677-e72ed304f82c", {
1645                    sourceResource: "",
1646                    pageElementId: "",
1647                    pageQueryVariables: {},
1648                    shareId: "",
1649                });
1650                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
1651                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
1652                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
1653                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
1654                  window.luxuryPresence.config.setEventBus({
1655                    enabled: true,
1656                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
1657                    url: "https://p.luxurypresence.com",
1658                  });
1659                window.luxuryPresence.config.setTemplateId("0c2b9641-6f2a-40f2-a2e0-dabc022eb278", {});
1660                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
1661                window.luxuryPresence.buttons.initialize({});
1662                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
1663                window.luxuryPresence.contactForms.initialize({});
1664                window.luxuryPresence.validation.initialize({});
1665                window.luxuryPresence.expandSliders.initialize({});
1666                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false });
1667                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
1668                /* Optional: cached pages / older SDKs may not carry this controller */
1669                window.luxuryPresence.currencyConversion?.initialize();
1670            } catch (e) {
1671                console.log(e);
1672            }
1673
1674            /* Inject Section Specific Javascript */
1675                try {
1676(function init(sectionDomId) {
1677  const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content');
1678  if (disclaimerLabel) {
1679    const input = disclaimerLabel.querySelector('input');
1680    if (input) {
1681      input.setAttribute('id', `${sectionDomId}-termsAccepted`);
1682      input.value = 'true';
1683      const label = document.createElement('label');
1684      label.setAttribute('for', `${sectionDomId}-termsAccepted`);
1685      label.classList.add('lp-visually-hidden');
1686      label.textContent = 'Opt in/Disclaimer Consent:';
1687      disclaimerLabel.prepend(label);
1688    }
1689  }
1690  function setHttp(link) {
1691    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
1692      link = 'https://' + link;
1693    }
1694    return link;
1695  }
1696  const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link');
1697  socialLinks.forEach(linkElement => {
1698    const href = linkElement.getAttribute('href');
1699    if (href) {
1700      linkElement.setAttribute('href', setHttp(href));
1701    }
1702  });
1703  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
1704  if (redirectLink.length) {
1705    const rawHref = setHttp(redirectLink.attr('href'));
1706    let formEvent;
1707    if (rawHref) {
1708      formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset';
1709      $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () {
1710        redirectLink.attr('href', rawHref);
1711        redirectLink[0].click();
1712      });
1713    }
1714  }
1715})('modal-global-contact-us');
1716} catch(e) {
1717console.log(e);
1718}
1719                
1720                try {
1721(function init(sectionDomId) {
1722  const $section = $('#' + sectionDomId);
1723  const $hamburger = $section.find('.hamburger-component');
1724  function onSideMenuShow() {
1725    if (!$hamburger.hasClass('active')) {
1726      $hamburger.addClass('active');
1727    }
1728  }
1729  function onSideMenuHide() {
1730    $hamburger.removeClass('active');
1731  }
1732  const $window = $(window);
1733  $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow);
1734  $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide);
1735  const $subContainers = $section.find('.navigation__item.sub-nav-container');
1736  $subContainers.hover(function () {
1737    $(this).find('.sub-nav').addClass('visible');
1738  }, function () {
1739    $(this).find('.sub-nav').removeClass('visible');
1740  });
1741  $window.on('click.lpui-auto-clean', function () {
1742    $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown');
1743  });
1744  let fixedWidth = 0;
1745  const rightPad = 20;
1746  function fixSubsPosition() {
1747    const wWidth = window.innerWidth;
1748    if (innerWidth === fixedWidth) {
1749      return;
1750    }
1751    fixedWidth = wWidth;
1752    $subContainers.each(function () {
1753      const $sub = $(this).find('.sub-nav');
1754      $sub[0].style.right = '';
1755      const sRect = $sub[0].getBoundingClientRect();
1756      const sRight = sRect.left + sRect.width;
1757      if (sRight > wWidth - rightPad) {
1758        const parentRect = $sub[0].offsetParent.getBoundingClientRect();
1759        const parentRight = parentRect.left + parentRect.width;
1760        $sub[0].style.right = `${parentRight - wWidth + rightPad}px`;
1761      }
1762    });
1763  }
1764  var debouncer;
1765  $window.on('resize.lpui-auto-clean', function () {
1766    clearTimeout(debouncer);
1767    debouncer = setTimeout(fixSubsPosition, 500);
1768  });
1769  fixSubsPosition();
1770  if ($('.property-intro').length || $('.property-intro-2').length) {
1771    $('nav').addClass('dark-opening');
1772    $("#global-navbar").css({
1773      "background-color": "rgb(26, 26, 26)",
1774      "color": "rgb(255, 255, 255)"
1775    });
1776  }
1777  function initAutoTruncateMenu() {
1778    const $navbar = $section.find('.navbar');
1779    const $navList = $section.find('.navigation > ul');
1780    if (!$navbar.length || !$navList.length) {
1781      return;
1782    }
1783    const $logo = $section.find('.logo');
1784    const $buttonsWrapper = $section.find('.buttons-wrapper');
1785    const $allItems = $navList.children('.navigation__item');
1786    const $phoneItem = $allItems.filter(function () {
1787      return $(this).find('a[href^="tel:"]').length > 0;
1788    });
1789    const $menuItems = $allItems.not($phoneItem);
1790    if (!$menuItems.length) {
1791      return;
1792    }
1793    const buffer = 8;
1794    function measureFixedWidth() {
1795      let width = buffer;
1796      if ($logo.length) {
1797        width += $logo.outerWidth(true) || 0;
1798      }
1799      if ($buttonsWrapper.length) {
1800        width += $buttonsWrapper.outerWidth(true) || 0;
1801      }
1802      if ($phoneItem.length) {
1803        width += $phoneItem.outerWidth(true) || 0;
1804      }
1805      return width;
1806    }
1807    function truncateMenu() {
1808      if (!$navList.is(':visible')) {
1809        return;
1810      }
1811      $menuItems.css('display', '');
1812      const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth();
1813      let widthSoFar = 0;
1814      let overflowed = false;
1815      $menuItems.each(function () {
1816        const $item = $(this);
1817        if (overflowed) {
1818          $item.css('display', 'none');
1819          return;
1820        }
1821        widthSoFar += $item.outerWidth(true);
1822        if (widthSoFar > availableWidth) {
1823          $item.css('display', 'none');
1824          overflowed = true;
1825        }
1826      });
1827    }
1828    let truncateFrame;
1829    function scheduleTruncate() {
1830      if (truncateFrame) {
1831        return;
1832      }
1833      truncateFrame = window.requestAnimationFrame(function () {
1834        truncateFrame = null;
1835        truncateMenu();
1836      });
1837    }
1838    scheduleTruncate();
1839    if (window.ResizeObserver) {
1840      const resizeObserver = new ResizeObserver(scheduleTruncate);
1841      resizeObserver.observe($navbar[0]);
1842    } else {
1843      $(window).on('resize.lpui-auto-truncate', scheduleTruncate);
1844    }
1845    $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate);
1846    $(window).on('load.lpui-auto-truncate', scheduleTruncate);
1847    if (document.fonts && document.fonts.ready) {
1848      document.fonts.ready.then(scheduleTruncate);
1849    }
1850  }
1851  initAutoTruncateMenu();
1852})('global-navbar');
1853} catch(e) {
1854console.log(e);
1855}
1856                try {
1857(function init(sectionDomId, options) {
1858  var elementSelector = options.elementSelector || 'nav';
1859  var element = document.querySelector(elementSelector);
1860  var sections = document.querySelectorAll('body > section');
1861  var subNavContainers = element.querySelectorAll('.sub-nav');
1862  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
1863  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
1864  var fontColor = options.fontColor || '#fff';
1865  var fontColorScroll = options.fontColorScroll || '#000';
1866  var didScroll = false;
1867  var lastScrollTop = 0;
1868  var delta = 5;
1869
1870  // eslint-disable-next-line sonarjs/no-collapsible-if
1871  if (wow) {
1872    // Wowjs might not trigger for position fixed elements
1873    if (window.scrollY > 0) {
1874      element.querySelectorAll('.wow').forEach(el => wow.show(el));
1875    }
1876  }
1877  function adjustNavPinState() {
1878    // Remove 'visible' class from all subNavContainers
1879    for (let i = 0; i < subNavContainers.length; i++) {
1880      subNavContainers[i].classList.remove('visible');
1881    }
1882    if (window.scrollY > 0) {
1883      element.style.backgroundColor = backgroundColorScroll;
1884      element.style.color = fontColorScroll;
1885      element.classList.add('scroll');
1886    } else {
1887      element.style.backgroundColor = initialBackgroundColor;
1888      element.style.color = fontColor;
1889      element.classList.remove('scroll');
1890    }
1891  }
1892  adjustNavPinState();
1893  function onScroll() {
1894    didScroll = true;
1895  }
1896  window.addEventListener('scroll', onScroll);
1897
1898  // eslint-disable-next-line
1899  var debounceInterval = setInterval(() => {
1900    if (didScroll) {
1901      // eslint-disable-next-line
1902      hasScrolled();
1903      didScroll = false;
1904    }
1905  }, 250);
1906  function hasScrolled() {
1907    adjustNavPinState();
1908    // eslint-disable-next-line
1909    var navbarHeight = element.offsetHeight;
1910    // eslint-disable-next-line
1911    var st = window.scrollY;
1912
1913    // Make sure they scroll more than delta
1914    if (Math.abs(lastScrollTop - st) <= delta) {
1915      return;
1916    }
1917    if (st > lastScrollTop && st > navbarHeight) {
1918      // Scroll Down
1919      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
1920      document.documentElement.style.setProperty('--global-header-height', '0px');
1921
1922      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
1923      sections.forEach(section => {
1924        if (section.classList.contains('sticky')) {
1925          section.style.top = '0px';
1926        }
1927      });
1928    } else {
1929      // Scroll Up
1930      // eslint-disable-next-line
1931      if (st + window.innerHeight < document.documentElement.scrollHeight) {
1932        element.style.transform = `translateY(0) scaleY(1)`;
1933        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
1934        sections.forEach(section => {
1935          if (section.classList.contains('sticky')) {
1936            section.style.top = `${navbarHeight}px`;
1937          }
1938        });
1939      }
1940    }
1941    lastScrollTop = st;
1942  }
1943})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}"));
1944} catch(e) {
1945console.log(e);
1946}
1947                try {
1948(function init(sectionDomId) {
1949  var sidemenu = $('#' + sectionDomId);
1950  sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () {
1951    window.lpUI.requestScrollLock(sectionDomId);
1952  });
1953  $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () {
1954    window.lpUI.releaseScrollLock(sectionDomId);
1955  });
1956  $(window).click(function (e) {
1957    let targetContactForm = $(e.target).closest('#modal-global-contact-us').length;
1958    let targetSideMenu = $(e.target).closest('.sidemenu').length;
1959    let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length;
1960    let targetHamburger = $(e.target).closest('.hamburger-component').length;
1961    if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) {
1962      $('body').removeClass('locked');
1963      $('.hamburger').removeClass('active');
1964      $('.sidemenu').removeClass('visible');
1965      $('#modal-global-contact-us').removeClass('visible');
1966    }
1967  });
1968})('global-sidemenu');
1969} catch(e) {
1970console.log(e);
1971}
1972                
1973                try {
1974(function init(footerId) {
1975  var textContent = $(".text_content_wrap p").text().trim().length;
1976  const socialLinks = $(`#${footerId} .lp-socials__link`);
1977  if (textContent < 1) {
1978    $(".text_content_wrap").remove();
1979    $(".second_text_footer").css({
1980      'margin-bottom': 0
1981    });
1982  }
1983  if (socialLinks.length > 0) {
1984    socialLinks.attr('data-wow-offset', '10');
1985  }
1986  if ($(window).width() > 1280) {
1987    let footer = document.querySelector("#" + footerId);
1988    let copyrightElem = footer.querySelector(".copy_zone");
1989    if (copyrightElem) {
1990      copyrightElem.style.whiteSpace = "nowrap";
1991      let nowrapElemWidth = copyrightElem.clientWidth;
1992      copyrightElem.style.whiteSpace = "";
1993      let normalElemWidth = copyrightElem.clientWidth;
1994      if (nowrapElemWidth > normalElemWidth) {
1995        footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto");
1996      }
1997    }
1998  }
1999  const form = $("#" + footerId).find("form");
2000  const redirectLink = $('#' + footerId + ' .redirect-link');
2001  form.on("reset", function () {
2002    redirectPage(redirectLink);
2003  });
2004  function redirectPage(link) {
2005    if (link.length) {
2006      const rawHref = link.attr('href');
2007      link.attr('href', setHttp(rawHref));
2008      link[0].click();
2009    }
2010  }
2011  function setHttp(link) {
2012    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
2013      link = 'http://' + link;
2014    }
2015    return link;
2016  }
2017})('global-footer');
2018} catch(e) {
2019console.log(e);
2020}
2021                
2022                try {
2023(function init(options) {})('global-mobile-contact');
2024} catch(e) {
2025console.log(e);
2026}
2027                
2028                try {
2029(function init(sectionDomId, options) {
2030  let section = null;
2031  switch (sectionDomId) {
2032    case 'NAVBAR':
2033      section = document.querySelector('body > nav, #global-navbar');
2034      break;
2035    case 'FOOTER':
2036      section = document.querySelector('body > footer, #global-footer');
2037      break;
2038    case 'SIDEMENU':
2039      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2040      break;
2041    case 'CONTACT':
2042      section = document.querySelector('#modal-global-contact-us');
2043      break;
2044    case 'MOBILE_CONTACT':
2045      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2046      break;
2047    case 'SUBSCRIBE':
2048      // Subscribe Not Implemented
2049      section = null;
2050      break;
2051    case 'ACCOUNT':
2052      // Account Not Implemented
2053      section = null;
2054      break;
2055    default:
2056      section = document.querySelector('#' + sectionDomId);
2057  }
2058  if (!section) {
2059    return;
2060  }
2061
2062  // Where content / items are rendered
2063  const dataContainer = section.querySelector('.data-container');
2064  if (!dataContainer) {
2065    // no place to render items = no need to query server or do anything else
2066    return;
2067  }
2068  let variables = options.variables || {};
2069
2070  // Some variables in options may not have been injected - remove
2071  Object.keys(variables).forEach(function (variableName) {
2072    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2073      delete variables[variableName];
2074    }
2075  });
2076
2077  // Merge page query variables
2078  if (options.usePageResource) {
2079    variables = {
2080      ...variables,
2081      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2082    };
2083  }
2084
2085  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2086  // resolve the flag — fetchData reads the section stamp, aux fetches read
2087  // their own resource's stamp (auxUsesRouter).
2088  function apiUrl(useRouter) {
2089    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2090  }
2091
2092  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2093  // (options.routerApiAux is stamped per aux resource server-side).
2094  function auxUsesRouter(resource) {
2095    return !!(options.routerApiAux && options.routerApiAux[resource]);
2096  }
2097
2098  // Pagination Executes on a Numbered Pagination Container
2099  //  Or via a load more button
2100  let mode = 'BUTTONLESS_PAGINATION';
2101  const container = section.querySelector('.pagination-container');
2102  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2103  if (container) {
2104    mode = 'NUMBERED_PAGINATION';
2105  }
2106  if (loadMoreButton) {
2107    mode = 'LOAD_MORE_BUTTON';
2108  }
2109  let searchContainer = section.querySelector('.search-container');
2110  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2111  const eventPrefix = '__pagination-';
2112  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2113    param: 'neighborhoodId',
2114    urlKey: 'neighborhood'
2115  }, {
2116    param: 'search',
2117    urlKey: 'search'
2118  }, {
2119    param: 'salesPriceGTE',
2120    urlKey: 'pricemin',
2121    formKey: 'priceMin',
2122    type: 'int'
2123  }, {
2124    param: 'salesPriceLTE',
2125    urlKey: 'pricemax',
2126    formKey: 'priceMax',
2127    type: 'int'
2128  }, {
2129    param: 'livingSpaceSizeGTE',
2130    urlKey: 'areamin',
2131    formKey: 'areaMin',
2132    type: 'int'
2133  }, {
2134    param: 'livingSpaceSizeLTE',
2135    urlKey: 'areamax',
2136    formKey: 'areaMax',
2137    type: 'int'
2138  }] : []);
2139
2140  // Total entries - initialized in first render
2141  let totalNumber = 0;
2142  const DefaultSearchParams = {
2143    page: 1
2144  };
2145  searchFormParams.forEach(function (formParam) {
2146    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2147  });
2148  let searchParams = {
2149    ...DefaultSearchParams
2150  };
2151  const offset = options.variables?.offset || 0;
2152  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2153  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2154
2155  // entries of per page
2156  // when query variables for a given section would't be filled options.pageSize can store
2157  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2158  let pageSize = parseInt(options.pageSize, 10) || 9;
2159
2160  // Adding mobile pageRange support
2161  var NARROW_BREAKPOINT = 600;
2162  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2163  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2164
2165  // Page range (pages on both sides of the current page)
2166  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2167  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2168  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2169
2170  // Whether to display the 'Previous' button
2171  var showPrevious = true;
2172
2173  // Whether to display the 'Next' button
2174  var showNext = true;
2175
2176  // Whether to display the page buttons
2177  var showPageNumbers = true;
2178
2179  // 'Previous' text
2180  var prevText = options.prevText || '&laquo;';
2181
2182  // 'Next' text
2183  var nextText = options.nextText || '&raquo;';
2184
2185  // Ellipsis text
2186  var ellipsisText = '&hellip;';
2187  var classPrefix = 'paginationjs';
2188
2189  // Default active class
2190  var activeClassName = 'active';
2191
2192  // Default disable class
2193  var disableClassName = 'disabled';
2194
2195  // Pagination element's position in the container
2196  var position = 'bottom';
2197
2198  // Whether to trigger pagination at initialization
2199  var triggerPagingOnInit = !options.skipInitialLoad;
2200  var showFirstOnEllipsisShow = true;
2201  var showLastOnEllipsisShow = true;
2202
2203  // Instantiated in init()
2204  var el = null;
2205
2206  // Controls scrollTop logic
2207  var firstRender = true;
2208  var renderBySearch = false;
2209  var disabled = false;
2210
2211  // Pagination script class selector
2212  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
2213
2214  // Property Specific Image Override if No Image
2215  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
2216
2217  // Construct template
2218  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
2219  var template = Handlebars.compile(templateHTML);
2220
2221  // Initialize
2222  init();
2223  function init() {
2224    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2225
2226    // Append/prepend pagination element to the pagination container
2227    if (mode === 'NUMBERED_PAGINATION') {
2228      el = document.createElement('div');
2229      el.className = 'paginationjs';
2230      container[position === 'bottom' ? 'append' : 'prepend'](el);
2231    }
2232    if (searchContainer) {
2233      initSearchContainer({
2234        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
2235        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
2236        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
2237        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
2238      }, function () {
2239        syncSearchFormState(searchParams);
2240      });
2241    }
2242
2243    // Bind events
2244    observer();
2245  }
2246  function syncSearchFormState(params) {
2247    searchContainer.dispatchEvent(new CustomEvent('sync', {
2248      detail: params
2249    }));
2250  }
2251  function initSearchContainer(options, done) {
2252    var promises = [];
2253    if (options.fetchNeighborhoods) {
2254      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
2255        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
2256          detail: {
2257            data: neighborhoods.map(function (item) {
2258              return {
2259                value: item.id,
2260                label: item.name
2261              };
2262            })
2263          }
2264        }));
2265      }));
2266    }
2267    if (options.fetchPostCategories) {
2268      promises.push(fetchPostCategories(function (categories) {
2269        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
2270          detail: {
2271            data: categories
2272          }
2273        }));
2274      }));
2275    }
2276    if (options.fetchOffices) {
2277      promises.push(fetchOffices(function (offices) {
2278        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
2279          detail: {
2280            data: offices
2281          }
2282        }));
2283      }));
2284    }
2285    if (options.fetchRentalRates) {
2286      promises.push(fetchAllRentalRates(function (rentalRates) {
2287        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
2288          detail: {
2289            data: rentalRates
2290          }
2291        }));
2292      }));
2293    }
2294    if (promises.length > 0) {
2295      Promise.all(promises).then(function () {
2296        done();
2297      });
2298    } else {
2299      // element's custom code is not executed yet, so we're scheduling callback to after element's code
2300      setTimeout(done);
2301    }
2302  }
2303  function fetchAllNeighborhoods(done) {
2304    var useRouter = auxUsesRouter('neighborhoods');
2305    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
2306    // args on both APIs (the federated neighborhoods field accepts
2307    // withProperties/withBlogPosts); only the selection set differs.
2308    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') + '}}';
2309    var payload = {};
2310    payload.offset = 0;
2311    payload.limit = 100;
2312    payload.companyId = variables.companyId;
2313    if (options.resource === 'properties') {
2314      payload.withProperties = {
2315        active: true
2316      };
2317      ['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) {
2318        if (variables[field] !== undefined && variables[field] !== null) {
2319          payload.withProperties[field] = variables[field];
2320        }
2321      });
2322    }
2323    if (options.resource === 'posts') {
2324      payload.withBlogPosts = {
2325        active: true
2326      };
2327      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
2328        if (variables[field] !== undefined && variables[field] !== null) {
2329          payload.withBlogPosts[field] = variables[field];
2330        }
2331      });
2332    }
2333
2334    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2335    if (useRouter) {
2336      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
2337    }
2338    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2339      query: gqlQuery,
2340      variables: payload
2341    }).then(function (res) {
2342      var value = res.body.data && res.body.data.neighborhoods || {};
2343      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2344      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2345      done(items, items.length);
2346    });
2347  }
2348  function fetchPostCategories(done) {
2349    var featured = options.resource === 'posts' && !!variables.featured;
2350    var useRouter = auxUsesRouter('postCategories');
2351    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2352    // selection set differs ({ items {...} } on the router).
2353    var selection = 'id, name, publishedCount, featuredPublishedCount';
2354    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) + '}}';
2355    var payload = {};
2356    payload.offset = 0;
2357    payload.limit = 100;
2358    payload.companyId = variables.companyId;
2359    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2360      query: gqlQuery,
2361      variables: payload
2362    }).then(function (res) {
2363      var value = res.body.data && res.body.data.postCategories || {};
2364      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2365      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2366      done(items.map(function (item) {
2367        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
2368        return item;
2369      }), items.length);
2370    });
2371  }
2372  function fetchOffices(done) {
2373    var useRouter = auxUsesRouter('offices');
2374    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2375    // selection set differs ({ items {...} } on the router).
2376    var selection = 'id, name, tags';
2377    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
2378    // APIs differ in more than the items wrapper: federated offices takes
2379    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
2380    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 + '}}';
2381    var payload = {
2382      offset: 0,
2383      limit: 100,
2384      companyId: variables.companyId
2385    };
2386
2387    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2388    if (useRouter) {
2389      payload = window.luxuryPresence.routerApi.transformVariables('office
2389s', payload);
2390    }
2391    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2392      query: gqlQuery,
2393      variables: payload
2394    }).then(function (res) {
2395      var value = res.body.data && res.body.data.offices || {};
2396      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2397      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2398      done(items, items.length);
2399    });
2400  }
2401
2402  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
2403  function fetchAllRentalRates(done) {
2404    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
2405    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
2406    var payload = {
2407      offset: 0,
2408      limit: 100,
2409      companyId: variables.companyId
2410    };
2411    superagent.post(url + '/graphql').withCredentials().send({
2412      query: gqlQuery,
2413      variables: payload
2414    }).then(function (res) {
2415      var items = res.body.data && res.body.data.rentalRates || [];
2416      done(items, items.length);
2417    }).catch(function (err) {
2418      console.error('Error fetching rental rates:', err);
2419      done([], 0);
2420    });
2421  }
2422  function fetchData(params, done) {
2423    var resource = options.resource;
2424    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
2425    var payload = {};
2426    try {
2427      payload = JSON.parse(JSON.stringify(variables));
2428    } catch (e) {
2429      Object.keys(variables).forEach(function (variableName) {
2430        payload[variableName] = variables[variableName];
2431      });
2432    }
2433    payload.offset = (params.page - 1) * pageSize + offset;
2434    payload.limit = pageSize;
2435    payload.companyId = options.companyId;
2436    searchFormParams.forEach(function (formParam) {
2437      var val = params[formParam.formKey || formParam.param];
2438      if (val !== null && val !== undefined) {
2439        objSet(payload, formParam.param, val);
2440      }
2441    });
2442
2443    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2444    if (options.useRouterApi) {
2445      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
2446    }
2447
2448    // TODO: Disabled loading due to jarring effect
2449    // dataContainer.html('Loading...');
2450    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
2451      query: gqlQuery,
2452      variables: payload
2453    }).then(function (res) {
2454      if (res.body.errors) {
2455        done(res.body.errors);
2456        return;
2457      }
2458      var data = res.body.data || {};
2459      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2460      var resources;
2461      var resourceCount;
2462      if (options.useRouterApi) {
2463        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
2464        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
2465        resourceCount = page.count;
2466      } else {
2467        resources = data[resource] || [];
2468        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
2469      }
2470      const finish = function (items) {
2471        if (resource === 'properties' && propertyPlaceholderImage?.id) {
2472          items = items.map(item => {
2473            if (item.media?.length === 0) {
2474              return Object.assign(item, {
2475                media: [propertyPlaceholderImage]
2476              });
2477            }
2478            return item;
2479          });
2480        }
2481        done(null, items, resourceCount);
2482      };
2483
2484      // ROUTER-CLEANUP: client half of PLAT-4073 — resolve the requested
2485      // disclaimers before rendering; older SDKs skip (keys stay unset).
2486      if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') {
2487        window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish);
2488        return;
2489      }
2490      finish(resources);
2491    });
2492  }
2493  function getTotalPage() {
2494    return Math.ceil(totalNumber / pageSize);
2495  }
2496  function renderPaginationList() {
2497    var totalPages = getTotalPage();
2498    var rangeStart = searchParams.page - pageRange;
2499    var rangeEnd = searchParams.page + pageRange;
2500    if (rangeEnd > totalPages) {
2501      rangeEnd = totalPages;
2502      rangeStart = totalPages - pageRange * 2;
2503      rangeStart = rangeStart < 1 ? 1 : rangeStart;
2504    }
2505    if (rangeStart <= 1) {
2506      rangeStart = 1;
2507      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
2508    }
2509
2510    // Making sure that 1 more page button is shown in edge positions
2511    if (pageRange === 0) {
2512      if (searchParams.page === totalPages) {
2513        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
2514      }
2515      if (searchParams.page === 1) {
2516        rangeEnd = Math.min(2, totalPages);
2517      }
2518    }
2519
2520    // Render pagination list
2521    if (mode === 'NUMBERED_PAGINATION') {
2522      el.innerHTML = generateHTML({
2523        currentPage: searchParams.page,
2524        pageRange: pageRange,
2525        rangeStart: rangeStart,
2526        rangeEnd: rangeEnd
2527      });
2528      if (totalPages < 2 && hidePaginationOnFirstPage) {
2529        container.style.display = 'none';
2530      } else {
2531        container.style.display = '';
2532      }
2533    } else if (mode === 'LOAD_MORE_BUTTON') {
2534      if (searchParams.page >= totalPages) {
2535        loadMoreButton.style.display = 'none';
2536      } else {
2537        loadMoreButton.style.display = '';
2538      }
2539    }
2540  }
2541  function render(data) {
2542    renderPaginationList();
2543
2544    // Render new content with handlebars
2545    var html = '';
2546    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
2547      // If using load more, append search results to existing results
2548      html = dataContainer.innerHTML;
2549    }
2550    for (var i = 0; i < data.length; i++) {
2551      var itemData = recursivelyParse(data[i]);
2552      itemData.sectionIndex = options.sectionIndex;
2553      itemData.renderOptions = options.renderOptions;
2554      html += template(itemData);
2555    }
2556    dataContainer.innerHTML = html;
2557
2558    // Scroll Top
2559    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
2560      // Only animate to the top if we replace dataContainer (numbered pagination)
2561      setTimeout(() => {
2562        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
2563        window.scrollTo({
2564          top: scrollTargetOffsetTop,
2565          behavior: 'smooth'
2566        });
2567      }, 250);
2568    }
2569    return true;
2570  }
2571  function generateHTML(args) {
2572    const totalPages = getTotalPage();
2573    const {
2574      rangeStart,
2575      rangeEnd
2576    } = args;
2577    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2578      ...searchParams,
2579      page
2580    });
2581    let html = '';
2582    if (showPrevious || showPageNumbers || showNext) {
2583      html += '<div class="paginationjs-pages"><ul>';
2584
2585      // Previous button
2586      if (showPrevious) {
2587        if (searchParams.page <= 1) {
2588          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
2589        } else {
2590          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>`;
2591        }
2592      }
2593
2594      // Pages
2595      if (showPageNumbers) {
2596        if (rangeStart <= 3) {
2597          for (let i = 1; i < rangeStart; i++) {
2598            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>`;
2599          }
2600        } else {
2601          if (showFirstOnEllipsisShow) {
2602            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
2603          }
2604          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2605        }
2606        for (let i = rangeStart; i <= rangeEnd; i++) {
2607          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>`;
2608        }
2609        if (rangeEnd < totalPages - 2) {
2610          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
2611          if (showLastOnEllipsisShow) {
2612            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
2613          }
2614        } else {
2615          for (let i = rangeEnd + 1; i <= totalPages; i++) {
2616            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
2617          }
2618        }
2619      }
2620
2621      // Next button
2622      if (showNext) {
2623        if (searchParams.page >= totalPages) {
2624          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
2625        } else {
2626          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>`;
2627        }
2628      }
2629      html += '</ul></div>';
2630    }
2631    return html;
2632  }
2633  function go(newSearchParams, callback, restorationVisit) {
2634    if (disabled) return;
2635    var goToPageNumber = newSearchParams.page;
2636
2637    // Page number is out of bounds
2638    if (!goToPageNumber || goToPageNumber < 1) return;
2639    var totalPage = getTotalPage();
2640
2641    // Page number is out of bounds
2642    if (!restorationVisit && totalNumber > 0) {
2643      if (goToPageNumber > totalPage) return;
2644    }
2645    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
2646      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
2647        ...newSearchParams,
2648        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
2649      });
2650      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
2651        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
2652          queryString: true
2653        }));
2654      }
2655    }
2656
2657    // Fetch and update page
2658    fetchData(newSearchParams, renderWithData);
2659    disabled = true;
2660    function renderWithData(err, data, count) {
2661      if (err) {
2662        dataContainer.dispatchEvent(new Event('error'));
2663      } else {
2664        searchParams = {
2665          ...newSearchParams
2666        };
2667        totalNumber = count - offset;
2668        if (data.length === 0) {
2669          dataContainer.dispatchEvent(new Event('no-data'));
2670        } else {
2671          dataContainer.dispatchEvent(new Event('data'));
2672        }
2673        render(data);
2674        firstRender = false;
2675      }
2676      disabled = false;
2677      renderBySearch = false;
2678    }
2679  }
2680  function areQueryParamsEqual(first, second) {
2681    var differ = Object.keys(first).find(function (key) {
2682      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
2683    });
2684    if (differ) {
2685      return false;
2686    }
2687    differ = Object.keys(second).find(function (key) {
2688      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
2689    });
2690    return !differ;
2691  }
2692  function next(callback) {
2693    go({
2694      ...searchParams,
2695      page: searchParams.page + 1
2696    }, callback);
2697  }
2698  function previous(callback) {
2699    go({
2700      ...searchParams,
2701      page: searchParams.page - 1
2702    }, callback);
2703  }
2704  function refresh(callback) {
2705    go(searchParams, callback);
2706  }
2707  function update(params, callback) {
2708    renderBySearch = true;
2709    go(params, callback);
2710  }
2711  function observer() {
2712    if (searchContainer) {
2713      searchContainer.addEventListener('search', function (event, newSearchParams) {
2714        newSearchParams = event.detail || newSearchParams;
2715        update({
2716          ...searchParams,
2717          ...newSearchParams,
2718          page: 1
2719        });
2720      });
2721      searchContainer.addEventListener('clear-search', function () {
2722        const defaultSearchParams = {
2723          ...DefaultSearchParams
2724        };
2725        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
2726          ...defaultSearchParams,
2727          page: null
2728        }, {
2729          ...searchParams,
2730          page: null
2731        });
2732
2733        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
2734        // when search form have default state
2735        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
2736          return;
2737        }
2738
2739        // if someone initially go to some page and click 'Clear' on search from
2740        // we should't navigate to first page. We should preserve page value
2741        if (isCurrentSearchFormStateDefault) {
2742          defaultSearchParams.page = searchParams.page;
2743        }
2744        syncSearchFormState(defaultSearchParams);
2745        update(defaultSearchParams);
2746      });
2747    }
2748    if (mode === 'LOAD_MORE_BUTTON') {
2749      loadMoreButton.addEventListener('click', function (event) {
2750        go({
2751          ...searchParams,
2752          page: searchParams.page + 1
2753        });
2754        return false;
2755      });
2756    }
2757    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
2758      // Do initial render
2759      go(Object.assign({}, searchParams, {
2760        page: 1
2761      }));
2762      return;
2763    }
2764    if (mode === 'NUMBERED_PAGINATION') {
2765      // Go to specified page number
2766      container.addEventListener(eventPrefix + 'go', function (event) {
2767        let {
2768          pageNumber,
2769          done
2770        } = event.detail || {};
2771        pageNumber = parseInt(pageNumber, 10);
2772        if (!pageNumber) {
2773          return;
2774        }
2775        go({
2776          ...searchParams,
2777          page: pageNumber
2778        }, done);
2779      });
2780
2781      // Page number button click
2782      el.addEventListener('click', function (event) {
2783        let clickTarget = event.target;
2784        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
2785        let pageNumber = current?.getAttribute('data-num');
2786        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
2787          return;
2788        } else {
2789          go({
2790            ...searchParams,
2791            page: parseInt(pageNumber, 10)
2792          });
2793        }
2794        event.preventDefault();
2795      });
2796
2797      // Whether to load the default page
2798      var defaultPageNumber = searchParams.page;
2799      if (triggerPagingOnInit) {
2800        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
2801          detail: {
2802            pageNumber: defaultPageNumber
2803          }
2804        }));
2805      }
2806    }
2807    window.addEventListener('popstate', function (event) {
2808      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2809      if (!areQueryParamsEqual(newParams, searchParams)) {
2810        go(newParams, null, true);
2811        if (searchContainer) {
2812          syncSearchFormState(newParams);
2813        }
2814      }
2815    });
2816  }
2817  function replaceVariables(template, variables) {
2818    var formattedString;
2819    for (var key in variables) {
2820      var value = variables[key];
2821      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
2822      formattedString = (formattedString || template).replace(regexp, value);
2823    }
2824    return formattedString;
2825  }
2826  function isTextEditorValue(obj) {
2827    return 'raw' in obj || 'gjs' in obj;
2828  }
2829  function getTextEditorValue(obj) {
2830    if (!obj.html) {
2831      return '';
2832    }
2833    var data = obj.html;
2834    var css = (obj.raw || obj.gjs || {}).css;
2835    if (css) {
2836      data = data + '<style>' + css + '</style>';
2837    }
2838    return data;
2839  }
2840
2841  /**
2842   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
2843   * strips out raw proprties and returns only HTML if it exists.
2844   * @param {Object} resources a collection retrieved from the database
2845   * @return {Object} the newly modified object.
2846   */
2847  function recursivelyParse(resources) {
2848    forEach(resources, function (value, key) {
2849      if (!value) {
2850        return;
2851      }
2852      if (value instanceof Object) {
2853        if (isTextEditorValue(value)) {
2854          resources[key] = getTextEditorValue(value);
2855          return;
2856        } else {
2857          return recursivelyParse(value);
2858        }
2859      }
2860      try {
2861        var parsedData = JSON.parse(value);
2862        if (isTextEditorValue(parsedData)) {
2863          resources[key] = getTextEditorValue(parsedData);
2864        }
2865      } catch (e) {
2866        // do nothing if we failed to parse value as JSON
2867      }
2868    });
2869    return resources;
2870  }
2871  function forEach(collection, iteratee) {
2872    var func = Array.isArray(collection) ? arrayEach : baseFor;
2873    return func(collection, iteratee);
2874  }
2875  function baseFor(object, iteratee) {
2876    if (!object) {
2877      return;
2878    }
2879    var iterable = Object(object);
2880    var props = Object.keys(object);
2881    var length = props.length;
2882    var index = -1;
2883    while (length--) {
2884      var key = props[++index];
2885      if (iteratee(iterable[key], key, iterable) === false) {
2886        break;
2887      }
2888    }
2889    return object;
2890  }
2891  function objSet(obj, path, value) {
2892    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
2893    pathArray.reduce((acc, key, i) => {
2894      if (acc[key] === undefined) acc[key] = {};
2895      if (i === pathArray.length - 1) acc[key] = value;
2896      return acc[key];
2897    }, obj);
2898  }
2899  function arrayEach(array, iteratee) {
2900    var index = -1;
2901    var length = array.length;
2902    while (++index < length) {
2903      if (iteratee(array[index], index, array) === false) {
2904        break;
2905      }
2906    }
2907    return array;
2908  }
2909  function selectPageRangeMode(e) {
2910    pageRange = e.matches ? mobilePageRange : desktopPageRange;
2911    renderPaginationList();
2912  }
2913  paginationMql.addEventListener('change', selectPageRangeMode);
2914})('section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d', JSON.parse("{\"pageSize\":\"8\",\"resource\":\"posts\",\"pageRange\":0,\"variables\":{\"limit\":8,\"order\":\"publishedAt\",\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"32443cf2-4f8c-4e0f-8bb4-a310afb42f31\",\"categoryId\":\"{{pageElement.categoryId}}\"},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"categoryIds\",\"urlKey\":\"category\"}],\"skipScrollOnSearch\":true,\"scrollTargetSelector\":\".blog-list__container\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"32443cf2-4f8c-4e0f-8bb4-a310afb42f31\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":true,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
2915} catch(e) {
2916console.log(e);
2917}
2918                try {
2919(function init(sectionDomId) {
2920  const section = $(`#${sectionDomId}`);
2921  const searchInput = section.find('.js-search-input');
2922  const searchContainer = section.find('.search-container');
2923  const dataContainer = section.find('.data-container');
2924  const categoryFilter = section.find('.js-category-filter');
2925  const btnCategory = section.find('.js-btn-category');
2926  let activeFilters = null;
2927  if (searchContainer.length === 0) return;
2928  const {
2929    debounce
2930  } = window.luxuryPresence;
2931  const emptyResultsText = section.find('.empty-results');
2932  searchInput.on('input', debounce(doSearch, 700));
2933  dataContainer.on('data', function () {
2934    emptyResultsText.removeClass("visible");
2935  });
2936  dataContainer.on('no-data', function () {
2937    emptyResultsText.addClass("visible");
2938  });
2939  btnCategory.click(function () {
2940    $(this).toggleClass('active');
2941    categoryFilter.slideToggle();
2942  });
2943  function doSearch() {
2944    let values = categoryFilter.find('.active').map(function () {
2945      return $(this).data('value');
2946    }).get();
2947    const params = {
2948      categoryIds: values || null,
2949      search: searchInput.val().trim() || null
2950    };
2951    searchContainer[0]?.dispatchEvent(new CustomEvent('search', {
2952      detail: params
2953    }));
2954  }
2955  categoryFilter.on('click', '.category-cell', function () {
2956    if ($(this).hasClass('js-category-all')) {
2957      section.find('.category-cell').removeClass('active');
2958      $(this).addClass('active');
2959    } else {
2960      $(this).toggleClass('active');
2961      section.find('.js-category-all').removeClass('active');
2962    }
2963    doSearch();
2964  });
2965  searchContainer.on('post-categories-data', function (ev, category) {
2966    category = ev.detail || category;
2967    categoryFilter.find('.js-category-cell').remove();
2968    categoryFilter.find('.active').removeClass('active');
2969    let btnClass = categoryFilter.data('button-style');
2970    if (Array.isArray(category.data) && category.data.length) {
2971      btnCategory.css('display', 'inline-flex');
2972      categoryFilter.append(category.data.map(item => `<button id="filter-${item.id}"  data-value="${item.id}" class="category-cell js-category-cell lp-btn ${btnClass}">${item.name}</button>`).join('\n'));
2973    } else {
2974      btnCategory.remove();
2975    }
2976    setActiveFilters();
2977  });
2978  searchContainer.on('sync', function (event, params) {
2979    params = event.detail || params;
2980    activeFilters = params;
2981    setActiveFilters();
2982  });
2983  function setActiveFilters() {
2984    categoryFilter.find('.active').removeClass('active');
2985    if (activeFilters.categoryIds !== null && activeFilters.categoryIds.length > 0) {
2986      activeFilters.categoryIds.forEach(function (categoryId) {
2987        categoryFilter.find(`#filter-${categoryId}`).addClass('active');
2988      });
2989    } else {
2990      categoryFilter.find('.js-category-all').addClass('active');
2991    }
2992  }
2993})('section-5f3ad3f5-d0ed-4c78-923a-1b73efbc864d', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"32443cf2-4f8c-4e0f-8bb4-a310afb42f31\",\"usePageResource\":false,\"sectionIndex\":2}"));
2994} catch(e) {
2995console.log(e);
2996}
2997                try {
2998(function init(sectionDomId) {
2999  const $section = $('#' + sectionDomId);
3000  if ($section.find('.parallax').length) $section.addClass('parallax-enabled');
3001  if ($section.find('.video-wrapper').length) $section.addClass('video');
3002})('section-d7ac5ffe-a0d4-4b97-aa3d-0166d41728de', 'undefined');
3003} catch(e) {
3004console.log(e);
3005}
3006                try {
3007(function init(sectionDomId, options) {
3008  let section = null;
3009  switch (sectionDomId) {
3010    case 'NAVBAR':
3011      section = document.querySelector('body > nav, #global-navbar');
3012      break;
3013    case 'FOOTER':
3014      section = document.querySelector('body > footer, #global-footer');
3015      break;
3016    case 'SIDEMENU':
3017      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
3018      break;
3019    case 'CONTACT':
3020      section = document.querySelector('#modal-global-contact-us');
3021      break;
3022    case 'MOBILE_CONTACT':
3023      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
3024      break;
3025    case 'SUBSCRIBE':
3026      // Subscribe Not Implemented
3027      section = null;
3028      break;
3029    case 'ACCOUNT':
3030      // Account Not Implemented
3031      section = null;
3032      break;
3033    default:
3034      section = document.querySelector('#' + sectionDomId);
3035  }
3036  if (!section) {
3037    return;
3038  }
3039  var url = window.luxuryPresence.defaults.routerUrl;
3040  var companyId = window.luxuryPresence.defaults.companyId;
3041  var limit = options.limit || 8;
3042  if (typeof limit === 'string') {
3043    limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected
3044  }
3045  var templateSelector = options.templateSelector || '.jsIGTemplate';
3046  var containerSelector = options.containerSelector || '.jsIGContainer';
3047  var hasDataClass = options.hasDataClass || 'has-data';
3048  var hideActivateMessage = options.hasDataClass || false;
3049  var payload = {
3050    companyId: companyId,
3051    limit: limit
3052  };
3053  if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) {
3054    payload.resourceId = options.resourceId;
3055    // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase
3056    payload.resource = String(options.resource || 'agent').toUpperCase();
3057    payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true;
3058  }
3059  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';
3060  var templateHTML = section.querySelector(templateSelector)?.innerHTML || '';
3061  var template = Handlebars.compile(templateHTML);
3062  var container = section.querySelector(containerSelector);
3063  if (options.variables) {
3064    Object.keys(options.variables).forEach(function (key) {
3065      if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) {
3066        payload[key] = options.variables[key];
3067      }
3068    });
3069  }
3070  function getData() {
3071    var feed = {
3072      error: true
3073    };
3074    if (payload.companyId == null || payload.companyId === '') {
3075      // instagramContentFeed requires companyId (ID!) — nothing to fetch without it.
3076      // Checked after the options.variables merge, which may override the default.
3077      // Deferred so element listeners (attached after this template runs) still receive it.
3078      setTimeout(function () {
3079        section.dispatchEvent(new CustomEvent('ig-data', {
3080          detail: feed
3081        }));
3082      }, 0);
3083      return;
3084    }
3085    superagent.post(url + '/graphql').send({
3086      query: query,
3087      variables: payload
3088    }).then(res => {
3089      try {
3090        if (!res.body.errors) {
3091          feed = res.body.data.instagramContentFeed;
3092          if (!feed.active) {
3093            if (!hideActivateMessage && sectionDomId === 'section-temp' && container) {
3094              if (payload.resourceId) {
3095                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>';
3096              } else {
3097                container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>';
3098              }
3099            }
3100          } else {
3101            if (feed.items.length) {
3102              if (hasDataClass) {
3103                section.classList.add(hasDataClass);
3104              }
3105              const feedName = feed.username;
3106              section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl));
3107              section.querySelectorAll('.jsIGName').forEach(name => {
3108                name.textContent = '@' + feedName;
3109                name.setAttribute('title', '@' + feedName);
3110              });
3111              if (container && template) {
3112                container.innerHTML = template(feed);
3113              }
3114            }
3115          }
3116        }
3117      } catch (e) {}
3118      section.dispatchEvent(new CustomEvent('ig-data', {
3119        detail: feed
3120      }));
3121    }).catch(e => {
3122      console.log('err', e);
3123      section.dispatchEvent(new CustomEvent('ig-data', {
3124        detail: feed
3125      }));
3126    });
3127  }
3128  getData();
3129})('section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"32443cf2-4f8c-4e0f-8bb4-a310afb42f31\",\"usePageResource\":false,\"sectionIndex\":4,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3130} catch(e) {
3131console.log(e);
3132}
3133                try {
3134(function init(sectionDomId) {
3135  const $section = $('#' + sectionDomId);
3136  var templateHTML = $section.find('.jsIGItem').html();
3137  var itemTemplate = templateHTML && Handlebars.compile(templateHTML);
3138  const $container = $section.find('.ig-feed-feed');
3139  const $topPrev = $section.find('.top-nav-prev');
3140  const $topNext = $section.find('.top-nav-next');
3141  const $bottomPrev = $section.find('.bottom-nav-prev');
3142  const $bottomNext = $section.find('.bottom-nav-next');
3143  let limit = 33;
3144  try {
3145    limit = parseInt($container[0].dataset['limit']);
3146  } catch (e) {}
3147  if (!limit) {
3148    limit = 33;
3149  }
3150  let igFeed = {};
3151  let usedWidth = 0;
3152  let slider = null;
3153  $section.on('ig-data', function (ev, feed) {
3154    feed = ev.detail || feed;
3155    igFeed = feed;
3156    if (feed.active && feed.items.length) {
3157      buildSlider();
3158    }
3159  });
3160  $(window).on('resize.lpui-auto-clean', onResize);
3161  let timer = null;
3162  function onResize() {
3163    clearTimeout(timer);
3164    timer = window.setTimeout(buildSlider, 50);
3165  }
3166  function getLayout(w, n) {
3167    if (w > 1100) {
3168      if (n > 7) {
3169        return {
3170          type: 'type1',
3171          single: 1,
3172          multi: n,
3173          slides: 3,
3174          slider: n > 9
3175        };
3176      }
3177      if (n > 5) {
3178        return {
3179          type: 'type1',
3180          single: 2,
3181          multi: n,
3182          slides: 3,
3183          slider: false
3184        };
3185      }
3186      return {
3187        type: 'type1',
3188        single: n,
3189        multi: n,
3190        slides: 3,
3191        slider: n > 3
3192      };
3193    } else if (w > 880) {
3194      if (n > 4) {
3195        return {
3196          type: 'type2',
3197          single: 1,
3198          multi: n,
3199          slides: 2.5,
3200          slider: n > 7
3201        };
3202      }
3203      return {
3204        type: 'type1',
3205        single: n,
3206        multi: n,
3207        slides: 3,
3208        slider: n > 3
3209      };
3210    } else if (w > 767) {
3211      if (n > 4) {
3212        return {
3213          type: 'type3',
3214          single: 1,
3215          multi: n,
3216          slides: 2,
3217          slider: n > 5
3218        };
3219      }
3220      return {
3221        type: 'type4',
3222        single: n,
3223        multi: n,
3224        slides: 2,
3225        slider: n > 2
3226      };
3227    } else if (w > 460) {
3228      return {
3229        type: 'type4',
3230        single: n,
3231        multi: n,
3232        slides: 2,
3233        slider: n > 2
3234      };
3235    }
3236    return {
3237      type: 'type5',
3238      single: n,
3239      multi: n,
3240      slides: 1,
3241      slider: n > 1
3242    };
3243  }
3244  function ensureClass($el, className) {
3245    if ($el.hasClass(className)) {
3246      return;
3247    }
3248    $el.addClass(className);
3249  }
3250  function makeSquare($el) {
3251    const el = $el[0];
3252    el.style.width = '';
3253    el.style.height = '';
3254    const rect = el.getBoundingClientRect();
3255    if (rect.width !== rect.height) {
3256      el.style.width = rect.height + 'px';
3257    }
3258  }
3259  function buildSlider() {
3260    const cWidth = $container[0].getBoundingClientRect().width;
3261    if (cWidth === usedWidth) {
3262      return;
3263    }
3264    $container.empty();
3265    slider = $('<div class="ig-feed-slider"></div>');
3266    const items = igFeed.items.slice(0, limit);
3267    const layout = getLayout(cWidth, items.length);
3268    let i = 0;
3269    let slide = null;
3270    while (i < layout.single) {
3271      slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider);
3272      i++;
3273    }
3274    while (i < layout.multi) {
3275      slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider);
3276      let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide);
3277      const lim = i + 4;
3278      while (i < lim && i < layout.multi) {
3279        slideContent.append(itemTemplate(items[i]));
3280        i++;
3281      }
3282    }
3283    $container.append(slider);
3284    if (layout.slider) {
3285      $topPrev.removeClass('hidden-control');
3286      $topNext.removeClass('hidden-control');
3287      $bottomPrev.removeClass('hidden-control');
3288      $bottomNext.removeClass('hidden-control');
3289      let prev, next;
3290      if ($bottomPrev.parent()[0].getBoundingClientRect().width) {
3291        prev = $bottomPrev;
3292        next = $bottomNext;
3293      } else {
3294        prev = $topPrev;
3295        next = $topNext;
3296        makeSquare($topPrev);
3297        makeSquare($topNext);
3298      }
3299      slider.children().each(function () {
3300        this.style.width = this.getBoundingClientRect().width + 'px';
3301      });
3302      slider.slick({
3303        dots: false,
3304        prevArrow: prev,
3305        nextArrow: next,
3306        slidesToScroll: 1,
3307        infinite: false,
3308        slidesToShow: layout.slides
3309      });
3310    } else {
3311      ensureClass($topPrev, 'hidden-control');
3312      ensureClass($topNext, 'hidden-control');
3313      ensureClass($bottomPrev, 'hidden-control');
3314      ensureClass($bottomNext, 'hidden-control');
3315    }
3316  }
3317})('section-4145d2d7-e6d2-4c3d-bacd-6c293d4142bb', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"32443cf2-4f8c-4e0f-8bb4-a310afb42f31\",\"usePageResource\":false,\"sectionIndex\":4}"));
3318} catch(e) {
3319console.log(e);
3320}
3321
3322            var { body } = document;
3323            var globalNav = body.querySelector(':scope > nav');
3324            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
3325
3326            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
3327                modalCloseBtn.addEventListener('click', function() {
3328                window.lpUI.hideClosestModal(modalCloseBtn);
3329              });
3330            });
3331
3332            window.addEventListener('click', function() {
3333                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
3334                    sharedPopup.style.display = 'none' ;
3335                });
3336            });
3337
3338            /* Misc Partials / Addons */
3339            function initWOW() {
3340                if (wow) {
3341                    wow.init();
3342                    wow.scrollHandler();
3343                    setTimeout(function () {
3344                        const wowHideStyle = document.getElementById('wow-hide-elements');
3345                        if(wowHideStyle) {
3346                            wowHideStyle.disabled = true;
3347                        }
3348                    }, 1);
3349                }
3350            }
3351
3352            const wowHideElements =  document.getElementById('wow-hide-elements');
3353            if (wowHideElements) {
3354               wowHideElements.disabled = false;
3355            }
3356
3357                initWOW();
3358
3359            /* Generic Navbar Handling */
3360            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
3361                hamburgerComponent.addEventListener('click', function() {
3362                window.lpUI.sideMenuToggle();
3363              });
3364            });
3365            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
3366                toggleEl.addEventListener('click', function() {
3367                window.lpUI.sideMenuToggle();
3368              });
3369            });
3370
3371            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
3372                linkEl.addEventListener('click', function(e) {
3373                  e.preventDefault();
3374                  e.stopPropagation();
3375                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
3376                  if (subNav && subNav.classList.contains('visible')){
3377                    subNav.classList.remove('visible');
3378                  } else {
3379                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
3380                      globalSubNav.classList.remove('visible');
3381                    });
3382                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
3383                        sideMenuSubNav.classList.remove('visible');
3384                    });
3385                    subNav?.classList.add('visible');
3386                  }
3387                });
3388            });
3389            window.addEventListener('click', function() {
3390                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
3391                    subNavEl.classList.remove('visible');
3392                });
3393            });
3394
3395        }
3396
3397        document.addEventListener('DOMContentLoaded', lpGlobalInit);
3398
3399    </script>
3399
3400
3401    
3401<script type="module">
3402    function selectorExists(selector) {
3403        return document.querySelector(selector) !== null;
3404    }
3405
3406    // Function to initialize the third-party library
3407    function initParoller(selector = '.my-paroller') {
3408        var $parollerElements = $(selector);
3409        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
3410            $parollerElements.paroller();
3411        }
3412    }
3413
3414    const parollerSelector = '.my-paroller';
3415
3416    if (selectorExists(parollerSelector)) {
3417        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
3418            initParoller(parollerSelector);
3419            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
3420        });
3421    }
3422    </script>
3422
3423
3424            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3424-3425
3424
3425            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3425GTM-T9SFQGHZ
vendor: 107 bytes, lines 3425-3427
3425"
3426            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
3427            
3427<!-- End Google Tag Manager -->
3428        
3429            
3429<script
3430                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
3431                data-website-id="db633698-1cbe-4d33-a362-b83e8348acd5"
3432                
3433                defer></script>
vendor: 1 bytes, line 3433
3433
3434<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 3434
3434
3435<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:'a480ebed8876f862',t:'MTc5MTU4NTk4OA=='};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>
3435</body>
3436</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.