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>Featured Floor Plans | Hometown Collection | Gaithersburg MD</title> 10 <meta property="og:title" content="Featured Floor Plans | Hometown Collection | Gaithersburg MD"> 11 <meta name="twitter:title" content="Featured Floor Plans | Hometown Collection | Gaithersburg MD"> 12 <meta name="description" content="Discover our customizable floor plans designed to suit every lifestyle. Browse layouts and start building your dream home today. Get in Touch now!"> 13 <meta property="og:description" content="Discover our customizable floor plans designed to suit every lifestyle. Browse layouts and start building your dream home today. Get in Touch now!"> 14 <meta name="twitter:description" content="Discover our customizable floor plans designed to suit every lifestyle. Browse layouts and start building your dream home today. Get in Touch now!"> 15 <meta property="og:image" content="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/shauup0u3oujcugqmdqv"> 16 <meta name="twitter:image" content="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/shauup0u3oujcugqmdqv"> 17 <meta property="og:url" content="https://hometowncollectionmb.com/floor-plans"> 18 <link rel="canonical" href="https://hometowncollectionmb.com/floor-plans"> 19
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cormorant%20Garamond:300,300i,400,400i,500,500i,600,600i,700,700i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Urbanist:100,200,300,400,500,600,700,800,900,100i,200i,300i,400i,500i,600i,700i,800i,900i"> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:'Cormorant Garamond',serif;--global-primary-font-family-short:Cormorant Garamond;--global-secondary-font-family:Urbanist,sans-serif;--global-secondary-font-family-short:Urbanist;--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:Urbanist,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> 30 <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/producer/index.css" /> 31 <style id="website-css">footer#global-footer .lp-link:after{background-color:#fff;}footer#global-footer .footer .first_text_footer .img_size{height:100px;}body>div.mobile-contact-wrapper .connect-btn border:2px solid #a6a6a6!important;</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css"> 34 #section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2{color:#fff;--fontColor:#fff;--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;--section-padding-top:calc(6 / 4 * var(--global-section-padding));background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.7));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/shauup0u3oujcugqmdqv');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .slick-arrow{border:1px solid #fff;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .slick-arrow:before{color:#fff;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .slick-arrow:hover{border:1px solid #4191C6;background-color:#4191C6;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .slick-arrow:hover:before{color:#fff;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__col{width:100%;max-width:50%;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__col{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__col--left{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__title-group{text-align:left;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__title-group .lp-text--subtitle{max-width:100%;}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__mob-wiew{display:none;text-align:center;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__mob-wiew{display:block;}}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-section__desktop-view{display:none;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__item img{display:block;width:100%;height:513px;object-fit:cover;}@media(max-width: 580px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__item img{height:241px;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows{padding-left:32px;padding-right:32px;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows--mob{padding:32px 0;}@media(min-width: 769px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows--mob{display:none;}}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows--desk{display:none;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows .lp-arrow{position:relative;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows .lp-arrow{margin-left:8px;margin-right:8px;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows .lp-arrow:first-child{margin-bottom:16px;}@media(max-width: 768px){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2 .sell-slider__arrows .lp-arrow:first-child{margin-bottom:0;}}#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2>div:last-child{padding-top:calc(6 / 4 * var(--global-section-padding))!important;}@media (min-width: 960px) and (orientation: landscape){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/shauup0u3oujcugqmdqv');}}@media (min-width: 1280px) and (orientation: landscape){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/shauup0u3oujcugqmdqv');}}@media (min-width: 1920px) and (orientation: landscape){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/shauup0u3oujcugqmdqv');}}@media (min-width: 2560px) and (orientation: landscape){#section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2{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/shauup0u3oujcugqmdqv');}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#fff;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab input{border-bottom:1px solid #000!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .search-container .irs--round .irs-bar{background-color:#000!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .search-container .irs--round .irs-handle{background-color:#000!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-to{background-color:#000!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .irs-from{background-color:#000!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__img img{object-fit:fill!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__text::after{content:'Prices subject to change without notice';font-size:12px;font-style:italic;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .container{max-width:1920px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .redesign .feature h4{text-transform:initial;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .title,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .description{text-align:center;margin-bottom:60px;max-width:75%;margin-left:auto;margin-right:auto;}@media (max-width: 768px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .title,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .description{margin-bottom:30px;max-width:100%;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section{padding-bottom:140px;}@media (max-width: 991px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section{padding-bottom:100px;}}@media (max-width: 768px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section{padding-bottom:40px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section h2{text-align:center;margin-bottom:0;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .top-part{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;padding-bottom:140px;}@media(max-width: 1000px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .top-part{padding-bottom:60px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .clear-btn-wrapper{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;width:12%;}@media(max-width: 1000px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .clear-btn-wrapper{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:24px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .clear-btn-wrapper .clear-btn{border:none;border-bottom:2px solid #999999;padding:4px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .clear-btn-wrapper .clear-btn:hover{border-color:#fff;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container{width:88%;display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:1fr 1fr 1fr;-ms-grid-rows:auto;grid-template-rows:auto;gap:48px 32px;grid-template-areas:". . . " ". . ." ". .";}@media(max-width: 1200px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container{-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;-ms-grid-rows:auto;grid-template-rows:auto;grid-template-areas:". ." ". ." ". ." ". .";}}@media(max-width: 1000px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container{width:100%;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .rangeslider{margin-bottom:34px;}}@media(max-width: 800px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container{-ms-grid-columns:1fr;grid-template-columns:1fr;-ms-grid-rows:auto;grid-template-rows:auto;gap:32px 32px;grid-template-areas:"." "." "." "." "." "." ".";}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-content:space-between;-ms-flex-line-pack:space-between;align-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:250px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item .text-search{width:100%;background:none;border:none;color:inherit;font-size:16px;padding:8px 16px 16px 0;border-bottom:1px solid currentColor;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item svg{position:absolute;right:0;top:30%;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item span{margin-bottom:8px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown{min-width:200
34px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;position:relative;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown.active svg{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:.3s;transition:.3s;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .label{font-weight:normal;color:inherit;cursor:pointer;padding:8px 16px 16px 0;font-size:16px;text-transform:none;background:transparent;border-bottom:1px solid;position:relative;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .label svg{-webkit-transition:.3s;transition:.3s;position:absolute;right:0;top:45%;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown{z-index:8;position:absolute;top:51px;right:0;left:0;bottom:0;background:#FFFFFF;text-transform:uppercase;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;max-height:220px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown::-webkit-scrollbar{width:9px;border-radius:50px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown::-webkit-scrollbar-track{background:#FFFFFF;border:1px solid #E8E8E8;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown::-webkit-scrollbar-thumb{background:#C4C4C4;border-radius:50px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown::-webkit-scrollbar-thumb:hover{background:#555;}@supports (scrollbar-color: #C4C4C4 #FFFFFF){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown{scrollbar-color:#C4C4C4 #FFFFFF;scrollbar-width:thin;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .option,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .reset{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:16px;width:100%;font-size:12px;font-weight:700;height:calc(112px/3);color:#000;border-bottom:1px solid #000;cursor:pointer;-webkit-transition:.3s;transition:.3s;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .option svg,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .reset svg{margin-right:10px;pointer-events:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .option.hidden,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .reset.hidden{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .option.selected,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .reset.selected,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .option:hover,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown .reset:hover{background:#000;color:#fff;-webkit-transition:.3s;transition:.3s;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-dropdown .dropdown.hidden{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .seasonal-price-select.hidden{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round{height:20px;position:absolute;top:13px;left:0;right:0;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-handle{cursor:pointer;background-color:currentColor;width:10px;height:10px;border-width:1px;border-color:currentColor;top:31px;box-shadow:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-bar{background-color:currentColor;height:1px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-line{height:1px;background-color:#404040;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-min,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-max{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-from:before,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-to:before,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-single:before{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-from,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-to,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-single{font-size:13px;color:currentColor;font-family:var(--global-secondary-font-family);background-color:transparent;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-from{left:0!important;visibility:visible!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-to{right:0!important;left:auto!important;visibility:visible!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs--round .irs-single{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs-from,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs-to,#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .irs-single{top:43px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list{display:-ms-gri
34d;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;-ms-grid-rows:1fr;grid-template-rows:1fr;gap:55px 80px;grid-template-areas:". .";padding:0;color:#000;list-style:none;}@media (max-width: 991px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list{gap:55px 25px;}}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list{-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:".";gap:35px 25px;justify-items:center;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list.three-items{-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:1fr 1fr 1fr;grid-template-areas:". . .";gap:55px 40px;}@media (max-width: 1200px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list.three-items{-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-template-areas:". .";gap:55px 80px;}}@media (max-width: 991px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list.three-items{gap:55px 25px;}}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list.three-items{-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:".";gap:35px 25px;justify-items:center;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list.property-list--share .property-list__share{display:inline-block;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item{background-color:#fff;text-align:center;font-weight:bold;position:relative;min-height:500px;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item{min-height:1px;height:calc(100% - 1px);width:99%;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item:hover .property-list__hover{opacity:1;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item h4{margin:0 0 7px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item p{white-space:normal;margin:0 0 7px;}@media (max-width: 768px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item p{margin-bottom:3px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item .price-title{text-transform:none;margin:0;font-family:var(--global-secondary-font-family);}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item-link{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%;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item-link{height:auto;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__img{width:100%;height:315px;vertical-align:top;background-color:gray;position:relative;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__img{height:200px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__img img{width:100%;height:100%;object-fit:cover;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__text{background-color:#fff;padding:25px 15px 15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__text{margin-bottom:15px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__label{position:absolute;top:0;right:0;background:#000;color:#fff;padding:4px 35px;z-index:2;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .hover-link{position:absolute;top:0;left:0;width:100%;height:100%;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .hover-link{display:none;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__hover{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255, 255, 255, 0.75);opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear;z-index:3;cursor:pointer;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__hover{opacity:1;background-color:var(--bgColor);position:static;padding:15px 0 0;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;height:auto;margin:0 -2px;width:calc(100% + 4px);}}
34#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__hover h4{text-transform:none;}@media(max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__hover h4{display:none;}}@media (min-width: 601px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__buttons{position:absolute;top:50%;left:50%;width:100%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__view .btn{margin-bottom:20px;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__view .btn{margin-bottom:0;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .btn{vertical-align:top;margin:0 10px;display:none;}@media(max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .btn{margin:0;}}@media(min-width: 601px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .btn.btn--primary-dark{display:inline-block;}}@media(max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .btn.btn--primary-light{display:inline-block;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__share{position:relative;display:none;}@media(max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__share{margin-bottom:25px;margin-top:15px;width:100%;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__share.property-list__share--opened .socials{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__share .socials{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__share .socials .socials__link{width:70px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .is-background-color-light ul.property-list .btn.btn--primary-dark{display:inline-block;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .is-background-color-light ul.property-list .btn.btn--primary-light{display:none;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .redesign ul.property-list{margin-bottom:60px;margin-left:0;}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .redesign ul.property-list{margin-bottom:30px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .empty-result{text-align:center;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .label-house{bottom:0;position:absolute;width:100%;padding:8px 0;background:rgba(255, 255, 255, 0.7);}@media (max-width: 768px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .label-house{font-size:12px;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item .property-list__mls-attribution{text-shadow:none;width:calc(100% - 200px);margin:0;}@media (max-width: 1024px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab ul.property-list .property-list__item .property-list__mls-attribution{width:100%;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__item .property-list__mls-attribution+.property-list__mls-logo{position:absolute!important;right:15px!important;bottom:15px!important;}@media (max-width: 1024px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__item .property-list__mls-attribution+.property-list__mls-logo{position:relative!important;right:unset!important;bottom:unset!important;}}@media (max-width: 600px){#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__item .property-list__mls-logo{display:inline-block!important;}}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list__item:has(.mls-compliance-container) .property-list__text{padding-bottom:0;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .mls-compliance-container{margin-top:auto;padding:0 15px 15px;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab>div:last-child{padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item .text-search::-webkit-input-placeholder{color:inherit;opacity:1;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item .text-search::-moz-placeholder{color:inherit;opacity:1;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item .text-search:-ms-input-placeholder{color:inherit;opacity:1;}#section-da28ff70-b32c-4718-98b5-01a5d85656ab .property-list-section .search-container .search-item .text-search::placeholder{color:inherit;opacity:1;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{background-attachment:fixed;-webkit-background-position:center;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;color:#fff;--fontColor:#fff;--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));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/cygcrapkvxcworz4mfn7');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 h2{color:#4191C6;}@media only screen and (max-width: 768px){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{background-attachment:unset;}}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .lp-a a:hover{color:#fff;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .lp-a a:hover:after{background-color:#fff!important;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{--colGap:20px;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .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;margin-left:calc(var(--colGap, 0) / -2);margin-right:calc(var(--colGap, 0) / -2);-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .lp-h2{margin-top:0;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col{position:relative;width:100%;min-height:1px;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;padding-left:calc(var(--colGap, 0) / 2);padding-right:calc(var(--colGap, 0) / 2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__image{background-color:#f2f2f2;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-2{-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;}@media (max-width: 768px){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-2{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-2 .media-card__image{padding-bottom:63.6%;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-3{-webkit-flex:0 0 33.33%;-ms-flex:0 0 33.33%;flex:0 0 33.33%;max-width:33.33%;}@media (max-width: 768px){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-3{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-3 .media-card__image{padding-bottom:97%;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-4{-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%;}@media (max-width: 768px){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-4{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .col-1-4 .media-card__image{padding-bottom:97%;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-blocks{text-align:center;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card{width:100%;text-align:center;display:block;-webkit-text-decoration:none;text-decoration:none;color:inherit;margin-bottom:60px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (max-width: 768px){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card{margin-bottom:40px;}}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__image{position:relative;padding-bottom:40%;margin-bottom:32px;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__image img{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__title{margin-bottom:16px;max-width:380px;margin-left:auto;margin-right:auto;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description{margin-bottom:32px;overflow:hidden;white-space:pre-line;max-width:380px;margin-left:auto;margin-right:auto;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description .btn-more{cursor:pointer;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description .substring{display:none;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description .more-text{display:block;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description.cropped{height:100%;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description.cropped .substring{display:block;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__description.cropped .more-text{display:none;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .media-card__button{margin-top:auto;}#section-3bd492d6-c0b9-4b2b-acf6-883219de6476 .lp-text--subtitle{margin-left:auto;margin-right:auto;}@media (min-width: 960px) and (orientation: landscape){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/cygcrapkvxcworz4mfn7');}}@media (min-width: 1280px) and (orientation: landscape){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{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/cygcrapkvxcworz4mfn7');}}@media (min-width: 1920px) and (orientation: landscape){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{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/cygcrapkvxcworz4mfn7');}}@media (min-width: 2560px) and (orientation: landscape){#section-3bd492d6-c0b9-4b2b-acf6-883219de6476{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/cygcrapkvxcworz4mfn7');}}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5{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,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/tacfxpx3kb6gjinedgzb');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5.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-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;
34background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .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;-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-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us h2{padding-bottom:40px;}}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .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-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .redesign.work-with-us .description{margin-bottom:40px;}}#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .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-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5 .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-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/tacfxpx3kb6gjinedgzb');}}@media (min-width: 1280px) and (orientation: landscape){#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/tacfxpx3kb6gjinedgzb');}}@media (min-width: 1920px) and (orientation: landscape){#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/tacfxpx3kb6gjinedgzb');}}@media (min-width: 2560px) and (orientation: landscape){#section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5{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/tacfxpx3kb6gjinedgzb');}}#section-739c3d68-8237-4212-b354-6f93e6c00751{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 1);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed{padding:80px 0;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .title{margin:0 20px 0 0;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .instagram-link .instagram-name{display:inline;margin:0;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .title+.instagram-link{margin-top:5px;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-wrapper{margin-bottom:20px;
34display:-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-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .follow-button{margin:20px 0 0 0;display:block;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .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;-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-739c3d68-8237-4212-b354-6f93e6c00751 .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-nav-prev{margin-left:30px;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-nav-next{margin-left:10px;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .hidden-control{display:none;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single,#section-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single:first-child,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi:first-child{margin-left:auto;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single:last-child,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi:last-child{margin-right:auto;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single.type2,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi.type2{width:calc(100% / 5 * 2);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single.type3,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi.type3{width:calc(100% / 2);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single.type4,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi.type4{width:calc(100% / 2);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single.type5,#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-container{padding:0;width:100%;}}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;
34top: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-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-item:hover .video-icon{opacity:0;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single .ig-feed-item__info{padding:15%;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .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;-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-739c3d68-8237-4212-b354-6f93e6c00751 .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .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-739c3d68-8237-4212-b354-6f93e6c00751 .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-right,#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .title,#section-739c3d68-8237-4212-b354-6f93e6c00751 .instagram-link{margin-right:0;text-align:center;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-nav-prev,#section-739c3d68-8237-4212-b354-6f93e6c00751 .top-nav-next{display:none;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-739c3d68-8237-4212-b354-6f93e6c00751 .ig-feed{display:none;}#section-739c3d68-8237-4212-b354-6f93e6c00751 .has-data .ig-feed{display:block;}#section-739c3d68-8237-4212-b354-6f93e6c00751.has-data .ig-feed,#section-739c3d68-8237-4212-b354-6f93e6c00751#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;}
34#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;}}@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
34-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;left: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;
34-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;}}nav .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;
34left: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;-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:rgba(4, 45, 73, 0.85);color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(4, 45, 73, 0.85);--bgColor_H:204;--bgColor_S:90%;--bgColor_L:15%;--bgColor_A:0.85;--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;
34-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( 35 var(--bgColor_H, 0), 36 var(--bgColor_S, 0%), 37 calc(50% + (var(--bgColor_L, 100%) - 50%) * 0.9), 38 var(--bgColor_A, 1) 39 );}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:rgba(24, 31, 36, 1);color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(24, 31, 36, 1);--bgColor_H:205;--bgColor_S:20%;--bgColor_L:12%;--bgColor_A:1;--bgColor_darkenDir:1;--greyColor:hsla( 40var(--fontColor_H), 41var(--fontColor_S), 42calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445), 43var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla( 44 var(--fontColor_H), 45 var(--fontColor_S), 46 calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445), 47 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;
47-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla( 48 var(--bgColor_H), 49 var(--bgColor_S), 50 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15), 51 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( 52 var(--bgColor_H), 53 var(--bgColor_S), 54 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4), 55 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;
55left: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( 56 var(--bgColor_H), 57 var(--bgColor_S), 58 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 59 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( 60 var(--bgColor_H), 61 var(--bgColor_S), 62 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 63 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;
63-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{z-index:200;position:relative;}body>div.mobile-contact-wrapper .lp-ico:before{content:'';width:1em;height:1em;background-color:currentColor;-webkit-background-size:cover;background-size:cover;display:block;-webkit-mask-position:center;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transition:all .3s;transition:all .3s;}body>div.mobile-contact-wrapper .lp-ico-search:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewB
63ox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-arrow-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-scroll-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-close:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-phone:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8
63699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-sms:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-email:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.85
6371 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper a{-webkit-text-decoration:none;text-decoration:none;}body>div.mobile-contact-wrapper .btn-holder{bottom:-50px;left:19px;position:fixed;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:13px;opacity:0;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .btn-holder{right:19px;padding:0 48px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}body>div.mobile-contact-wrapper .btn-holder.visible{bottom:28px;opacity:1;}body>div.mobile-contact-wrapper .search-btn{width:48px;height:48px;border-radius:999px;font-size:0;line-height:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-transition:all .3s;transition:all .3s;padding:12px;color:#141414;background:#fff;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .search-btn{position:absolute;left:0;bottom:0;}}body>div.mobile-contact-wrapper .search-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .connect-btn{height:48px;padding:0 24px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;text-transform:uppercase;border-radius:25px;color:var(--pillTextColor);background:var(--pillBackgroundColor);border:1px solid rgba(255, 255, 255, 0.2);cursor:pointer;font-size:10px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.4px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-transition:all .4s;transition:all .4s;box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);-webkit-animation:pulsate 2s ease infinite;animation:pulsate 2s ease infinite;}body>div.mobile-contact-wrapper .connect-btn:before{width:16px;height:16px;}body>div.mobile-contact-wrapper .pop-up{display:none;position:fixed;bottom:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;border-radius:16px 16px 0 0;color:var(--textColor);background:var(--backgroundColor);}@media (max-height: 850px){body>div.mobile-contact-wrapper .pop-up{max-height:85vh;overflow-y:auto;}}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up{max-height:none;overflow-y:initial;max-width:637px;border-radius:16px;bottom:28px;left:19px;}}body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:24px;padding-bottom:24px;-webkit-box-pack:center;-ms-flex-pack:center;
63-webkit-justify-content:center;justify-content:center;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:40px;padding-bottom:40px;min-height:450px;padding-left:56px;padding-right:56px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.mobile-contact-wrapper .pop-up .close-btn{width:44px;height:44px;background-color:transparent;border-color:transparent;display:block;margin:24px auto 0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--textColor);cursor:pointer;padding:10px;border:0;}body>div.mobile-contact-wrapper .pop-up .close-btn:before{width:24px;height:24px;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .close-btn{position:absolute;top:14px;right:12px;margin:0;}}body>div.mobile-contact-wrapper .pop-up .icon-btn{width:44px;height:44px;border-radius:999px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:8px;color:var(--textColor);position:relative;}body>div.mobile-contact-wrapper .pop-up .icon-btn:after{position:absolute;bottom:0;width:100%;left:0;border-radius:999px;
63height:100%;content:'';border:solid 1px var(--textColor);opacity:.3;}body>div.mobile-contact-wrapper .pop-up .icon-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .success-block{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .success-block{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}body>div.mobile-contact-wrapper .success-block .lp-btn{margin-top:24px;}body>div.mobile-contact-wrapper .contact-form{margin:0;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .contact-form__item{width:100%;}}body>div.mobile-contact-wrapper .contact-form__item .lp-input{width:100%;}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{color:#818181;}body>div.mobile-contact-wrapper .contact-form__item+.contact-form__item{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form.show-success .contact-form__container,body>div.mobile-contact-wrapper .contact-form.success .contact-form__container{display:none;}body>div.mobile-contact-wrapper .contact-form.show-success .success-block,body>div.mobile-contact-wrapper .contact-form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.mobile-contact-wrapper .contact-form .lp-disclaimer{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form .lp-h3{margin-bottom:16px;}body>div.mobile-contact-wrapper .success-message{font-size:22px;}@-webkit-keyframes pulsate{0%{box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);}50%{box-shadow:0 0 4px 6px rgba(255, 255, 255, .5);}100%{box-shadow:0 0 12px 12px rgba(255, 255, 255, 0);}} 64 </style> 65 <style id="custom-style-css">.social_icons-style-1 a{border-color:rgba(24, 31, 36, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(24, 31, 36, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(24, 31, 36, 1)!important;background-color:rgba(24, 31, 36, 1)!important;color:rgba(255,255,255,1)!important;}.social_icons-style-1 a i{color:inherit!important;}
65.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-1:hover{color:rgba(65, 145, 198, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.pagination-style-1 li a{color:rgba(24, 31, 36, 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(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 1)!important;}.hyperlink-style-1{color:rgba(24, 31, 36, 1)!important;}.hyperlink-style-1:hover{color:rgba(65, 145, 198, 1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(65, 145, 198, 1)!important;}.button-style-2{color:rgba(24, 31, 36, 1)!important;background-color:rgba(24, 31, 36, 0)!important;border-color:rgba(24, 31, 36, 1)!important;}.button-style-2:hover{color:#FFFFFF!important;background-color:rgba(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 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(65, 145, 198, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}
65.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!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(65, 145, 198, 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(65, 145, 198, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.button-style-3{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-3:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 1)!important;}.button-style-4{color:rgba(255, 255, 255, 1)!important;background-color:rgba(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 1)!important;}.button-style-4:hover{color:#FFFFFF!important;background-color:rgba(24, 31, 36, 1)!important;border-color:rgba(24, 31, 36, 1)!important;}.button-style-5{color:rgba(255, 255, 255, 1)!important;background-color:rgba(65, 145, 198, 1)!important;border-color:rgba(65, 145, 198, 1)!important;}.button-style-5:hover{color:rgba(65, 145, 198, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}</style> 66 <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode 67 defaults, and dynamically loads the locale + main (and banner if needed). --> 68
68<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="5c8ab3ef-2f1d-45fe-9125-fcc3c56486bf"></script>
68 69 70 71
71<script> 72 (function utmParse() { 73 const url = new URL(window.location.href); 74 if (url.search) { 75 const utm = url.search.split(/\?|&/g).reduce((acc, current) => { 76 const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); 77 if (matched) { 78 acc[matched[0]] = current.replace(`${matched[0]}=`, ''); 79 } 80 return acc; 81 }, {}); 82 if (Object.keys(utm).length) { 83 window.localStorage.setItem('utm_vars', JSON.stringify(utm)); 84 } else { 85 // Remove old utm vars 86 window.localStorage.removeItem('utm_vars'); 87 } 88 } 89 // Set referrer in local storage 90 // This is meant to be stored once to avoid self-referrals and to have the first referrer only. 91 if (!window.localStorage.getItem('referrer')) { 92 // Capture the Referrer URL 93 const referrer = document.referrer; 94 if (referrer) { 95 // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) 96 const currentDomain = window.location.hostname; 97 const referrerDomain = new URL(referrer).hostname; 98 99 if (referrerDomain !== currentDomain) { 100 // Store it in localStorage 101 localStorage.setItem('referrer', referrer); 102 } 103 } 104 } 105 })(); 106 </script>
106 107 <!-- Bing Webmaster Tools Verification --> 108
108<script> 109 // Check if on the homepage before the body loads 110 if (window.location.pathname === '/' || window.location.pathname === '/index.html') { 111 document.write('<meta name="msvalidate.01" content="FD1AE9665AF4EABB9DF11EF5ACC83A2A" />'); 112 } 113 </script>
113 114
114<script type="application/ld+json"> 115{ 116 "@context": "https://schema.org", 117 "@type": "RealEstateAgent", 118 "name": "Jeanette Mitchell", 119 "keywords": "real estate agent Gaithersburg, Gaithersburg realtor, Jeanette Mitchell real estate", 120 "image": "https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tlskq5tw6agoxthtaigo", 121 "@id": "", 122 "url": "https://hometowncollectionmb.com/", 123 "telephone": "(301) 580-3051", 124 "priceRange": "$$", 125 "address": { 126 "@type": "PostalAddress", 127 "streetAddress": "406 Tschiffely Square Rd", 128 "addressLocality": "Gaithersburg", 129 "addressRegion": "MD", 130 "postalCode": "20878", 131 "addressCountry": "US" 132 }, 133 "geo": { 134 "@type": "GeoCoordinates", 135 "latitude": 39.1215167, 136 "longitude": -77.24441929999999 137 }, 138 "openingHoursSpecification": { 139 "@type": "OpeningHoursSpecification", 140 "dayOfWeek": [ 141 "Monday", 142 "Tuesday", 143 "Wednesday", 144 "Thursday", 145 "Friday", 146 "Saturday", 147 "Sunday" 148 ], 149 "opens": "09:00", 150 "closes": "18:00" 151 }, 152 "sameAs": [ 153 "https://www.facebook.com/HometownCollectionMB/", 154 "https://www.instagram.com/hometowncollection_mb/", 155 "https://www.linkedin.com/company/hometown-collection-by-mitchell-best/", 156 "https://www.google.com/search?q=home+town+collection+Gaithersburg%2C+MD&sca_esv=e7fb66bace9eb99e&ei=AT0EZ4KLBonf2roPi93EoQg&ved=0ahUKEwjCj-jehv2IAxWJr1YBHYsuMYQQ4dUDCA8&uact=5&oq=home+town+collection+Gaithersburg%2C+MD&gs_lp=Egxnd3Mtd2l6LXNlcnAiJWhvbWUgdG93biBjb2xsZWN0aW9uIEdhaXRoZXJzYnVyZywgTUQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRInoEBUABY93hwAngAkAEAmAF_oAGVE6oBBTEyLjEyuAEDyAEA-AEB-AECmAIaoAKgFMICCxAAGIAEGLEDGIMBwgIIEAAYgAQYsQPCAgUQLhiABMICDhAAGIAEGLEDGIMBGIoFwgIFEAAYgATCAgoQABiABBhDGIoFwgIOEC4YgAQYsQMY0QMYxwHCAhEQLhiABBixAxjRAxiDARjHAcICGRAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigXCAgsQABiABBiSAxiKBcICKBAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigUYlwUY3AQY3gQY4ATYAQHCAggQLhiABBixA8ICCxAuGIAEGLEDGNQCwgIQEC4YgAQY0QMYQxjHARiKBcICBxAAGIAEGArCAhEQLhiABBjHARiYBRiZBRivAcICCxAuGIAEGMcBGK8BwgIGEAAYFhgewgIIEAAYFhgKGB7CAggQABgWGB4YD8ICGhAuGIAEGMcBGK8BGJcFGNwEGN4EGOAE2AEBwgIKEAAYFhgKGB4YD8ICCBAuGBYYChgewgIOEC4YFhjHARgKGB4YrwHCAgsQABiABBiGAxiKBcICBxAAGIAEGA3CAgYQABgNGB7CAggQABgNGB4YD8ICBxAhGKABGAqYAwC6BgYIARABGBSSBwQ5LjE3oAfH5AE&sclient=gws-wiz-serp#lrd=0x89b62d83a416aaab:0x702654f848ae0d7,3,,,," 157 ] 158} 159</script>
159 160 161<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 161-162
161 162<script async src="https://www.googletagmanager.com/gtag/js?id=
162G-JP7X59867S
vendor: 13 bytes, line 162
162"></script>
163<script> 164
vendor: 138 bytes, lines 164-168
164window.dataLayer = window.dataLayer || []; 165 function gtag(){dataLayer.push(arguments);} 166 gtag('js', new Date()); 167 168 gtag('config', '
168G-JP7X59867S
vendor: 5 bytes, line 168
168');
169</script>
169 170 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 171</head> 172<body> 173 <div id="google_translate_element" style="display: none"></div> 174 175 <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b"> 176 <div class="redesign"> 177 <div class="content-container header"> 178 <div class="container header__container"> 179 <div class="navbar"> 180 <div class="logo"> 181 <a href="/" class="logo__link"> 182 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tlskq5tw6agoxthtaigo" 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/tlskq5tw6agoxthtaigo 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/tlskq5tw6agoxthtaigo 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tlskq5tw6agoxthtaigo 986w" class="logo__img light" alt=""> 183 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tlskq5tw6agoxthtaigo" 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/tlskq5tw6agoxthtaigo 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/tlskq5tw6agoxthtaigo 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tlskq5tw6agoxthtaigo 986w" class="logo__img dark" alt=""> 184 </a> 185 </div> 186 <div class="navigation"> 187 <ul> 188 <li class="navigation__item"> 189 <a href="/" class="navigation__link wow fadeInUp" data-wow-delay="2.0"><span>HOME</span></a> 190 </li> 191 <li class="navigation__item"> 192 <a href="/floor-plans" class="navigation__link wow fadeInUp" data-wow-delay="2.1"><span>FLOOR PLANS</span></a> 193 </li> 194 <li class="navigation__item"> 195 <a href="/available-homes" class="navigation__link wow fadeInUp" data-wow-delay="2.2"><span>AVAILABLE HOMES</span></a> 196 </li> 197 <li class="navigation__item"> 198 <a href="/available-lots" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>AVAILABLE LOTS</span></a> 199 </li> 200 <li class="navigation__item"> 201 <a href="/our-process" class="navigation__link wow fadeInUp" data-wow-delay="2.4"><span>OUR PROCESS</span></a> 202 </li> 203 <li class="navigation__item"> 204 <a href="/about-us" class="navigation__link wow fadeInUp" data-wow-delay="2.5"><span>ABOUT US</span></a> 205 </li> 206 <li class="navigation__item"> 207 <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>CONTACT US</span></a> 208 </li> 209 <li class="navigation__item"> 210 <a href="tel:3015803051" class="navigation__link wow fadeInUp" data-wow-delay="2.7"><span>(301) 580-3051</span></a> 211 </li> 212 </ul> 213 </div> 214 <div class="buttons-wrapper"> 215 <button type="button" class="hamburger-component hamburger"> 216 <span class="hamburger__bars"></span> 217 </button> 218 </div> 219 </div> 220 </div> 221 </div> 222</div> 223 224 </nav> 225 <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18"> 226 <div class="sidebar"> 227 228 <button class="toggle sidebar__close close"></button> 229 <div class="sidebar__content"> 230 231 <ul class="sidebar__nav"> 232 <li class="sidebar__nav-item"> 233 <a href="/" class="sidebar__nav-link">Home</a> 234 </li> 235 <li class="sidebar__nav-item"> 236 <a href="/floor-plans" class="sidebar__nav-link">Floor Plans</a> 237 </li> 238 <li class="sidebar__nav-item"> 239 <a href="/available-homes" class="sidebar__nav-link">Available Homes</a> 240 </li> 241 <li class="sidebar__nav-item"> 242 <a href="/available-lots" class="sidebar__nav-link">Available Lots</a> 243 </li> 244 <li class="sidebar__nav-item"> 245 <a href="/our-process" class="sidebar__nav-link">Our Process</a> 246 </li> 247 <li class="sidebar__nav-item"> 248 <a href="/properties" class="sidebar__nav-link">Portfolio</a> 249 </li> 250 <li class="sidebar__nav-item"> 251 <a href="/build-on-your-lot" class="sidebar__nav-link">Build on Your Lot</a> 252 </li> 253 <li class="sidebar__nav-item sub-nav-container"> 254 <div class="sub-nav"> 255 <ul class="sidebar__subnav"> 256 <li class="sidebar__subnav-item"><a href="/netzero-homes" class="sidebar__subnav-link">NetZer0 Homes</a></li> 257 <li class="sidebar__subnav-item"><a href="/accessory-dwelling-units" class="sidebar__subnav-link">Accesory Dwelling Units</a></li> 258 <li class="sidebar__subnav-item"><a href="/accessible-home-building" class="sidebar__subnav-link">Accessible Home Building</a></li> 259 <li class="sidebar__subnav-item"><a href="/multigenerational-homes" class="sidebar__subnav-link">Multigenerational Homes</a></li> 260 </ul> 261 </div> 262 <a href="#" class="sidebar__nav-link link main-nav">Special Features</a> 263 </li> 264 <li class="sidebar__nav-item"> 265 <a href="/blog" class="sidebar__nav-link">Blog</a> 266 </li> 267 <li class="sidebar__nav-item"> 268 <a href="/faq" class="sidebar__nav-link">FAQ</a> 269 </li> 270 <li class="sidebar__nav-item"> 271 <a href="/about-us" class="sidebar__nav-link">About Us</a> 272 </li> 273 <li class="sidebar__nav-item"> 274 <a href="/contact-us" class="sidebar__nav-link">Contact Us</a> 275 </li> 276 </ul> 277 </div> 278</div> 279 </div> 280 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51"> 281 <div class="btn-holder" 282style=" 283--backgroundColor: rgba(255, 255, 255, 1); 284--textColor: rgba(24, 31, 36, 1); 285--pillTextColor: rgba(255, 255, 255, 1);
286--pillBackgroundColor: rgba(65, 145, 198, 1);"> 287 288 <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Let's Connect</button> 289</div> 290 291 292<div class="pop-up" style="--backgroundColor: rgba(255, 255, 255, 1); --textColor: rgba(24, 31, 36, 1);"> 293 <div class="lp-container"> 294 <form data-type="contact-form" class="contact-form"> 295 <div class="contact-form__container"> 296 <h3 class="lp-h3">Leave a Message</h3> 297 298 <div class="contact-form__content"> 299 <div class="contact-form__inputs-container"> 300 <div class="contact-form__item"> 301 <input 302 id="__FullName" 303 type="text" name="name" 304 class="lp-input lp-input--dark" 305 required 306 placeholder="Full Name"> 307 </div> 308 <div class="contact-form__item"> 309 <input 310 id="__Email" 311 type="email" name="email" 312 class="lp-input js-email-input lp-input--dark" 313 required 314 placeholder="Email"> 315 </div> 316 <div class="contact-form__item"> 317 <input 318 class="lp-input lp-input--dark" 319 type="tel" 320 placeholder="Phone" 321 id="__Phone" 322 name="phone" 323 required> 324 </div> 325 326 <div class="contact-form__item input-group-select"> 327 <select name="interest" id="-field-interest" placeholder="Interest" 328 class="lp-input dropdown-select js-select js-form-element lp-input--dark" required> 329 <option value="" disabled selected data-label="Interest">Interested in...</option> 330 <option value="Selling & Buying">Selling & Buying</option> 331 <option value="Selling">Selling</option> 332 <option value="Buying">Buying</option> 333 <option value="Renting">Renting</option> 334 <option value="Other">Other</option> 335 </select> 336 <label for="-field-interest" class="lp-label sr-only">Interest</label> 337 </div> 338 339 <div class="contact-form__item"> 340 <textarea 341 name="message" 342 rows="4" 343 id="__Message" 344 class="lp-input lp-input--dark" 345 placeholder="Message" 346 required></textarea> 347 </div> 348 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 349 <label class='lp-tcr-content'> 350 <span class='lp-tcr-checkbox'> 351 <input 352 type='checkbox' 353 id='-termsAccepted' 354 name='termsAccepted' 355 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 356 oninput="this.setCustomValidity('')" 357 required 358 /></span> 359 <span class='lp-tcr-message'> 360 361 I agree to be contacted by 362 Marty Mitchell 363 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 364 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 365 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 366 </span> 367 </label> 368 369</div> 370 <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit contact-form__item">Submit</button> 371 372 <div class="lp-h-pot"> 373 <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 374 </div> 375 376 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 377 <input type="hidden" name="button_text" value="Let's Connect"> 378 </div> 379 </div> 380 </div> 381 382 383 <div class="success-block"> 384 <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3> 385 386 </div> 387 </form> 388 389 <button type="button" class="close-btn lp-ico lp-ico-close"></button> 390 391 392 </div> 393</div> 394 395 396 </div> 397 <section class="image-section is-font-color-light is-background-color-light" id="section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2" data-el-id="feb51d95-d0fa-4995-bd33-c25e295aedf6"> 398 <div class="sell-section lp-vertical-paddings redesign"> 399 <div class="lp-container"> 400 <div class="sell-section__row"> 401 <div class="sell-section__col sell-section__col--left"> 402 403 <div class="sell-section__text-wrap"> 404 <div class="lp-title-group sell-section__title-group"> 405 <h2 class="lp-h2">Floor Plans</h2> 406 <div class="lp-h6 lp-text--subtitle"><h4>FIND YOUR SENSE OF PLACE</h4> 407<p>With our stunning designs, industry-leading building methods, and quality that speaks for itself, these Hometown Collection floor plans provide an unparalleled living experience at the right price. Immerse yourself in every luxurious detail by exploring our collection of floor plans below.</p> 408<p>Get started with our interactive search feature and find the right home for your lifestyle!</p></div> 409 </div> 410 </div> 411 <div class="sell-slider__arrows sell-slider__arrows--desk jsSellSliderArrowsDesk"></div> 412 </div> 413 414 <div class="sell-section__col"> 415 <div class="sell-slider js-sell-slider" data-arrows-style=""> 416 <div class="sell-slider__item"> 417 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/89d10741-5ddf-4977-bc67-224212aa97c3" 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/89d10741-5ddf-4977-bc67-224212aa97c3 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/89d10741-5ddf-4977-bc67-224212aa97c3 850w" sizes="(max-width: 768px) 100vw, 50vw" alt="0"> 418 </div> 419 <div class="sell-slider__item"> 420 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0d102ca6-dea7-458b-b7d9-7f573354d36f" 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/0d102ca6-dea7-458b-b7d9-7f573354d36f 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0d102ca6-dea7-458b-b7d9-7f573354d36f 850w" sizes="(max-width: 768px) 100vw, 50vw" alt="1"> 421 </div> 422 <div class="sell-slider__item"> 423 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4296fb2b-0c12-497c-9257-2f2a2c796f49" 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/4296fb2b-0c12-497c-9257-2f2a2c796f49 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4296fb2b-0c12-497c-9257-2f2a2c796f49 850w" sizes="(max-width: 768px) 100vw, 50vw" alt="2"> 424 </div> 425 <div class="sell-slider__item"> 426 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/da864290-86e4-4fbd-95da-56fdfff9dfd4" 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/da864290-86e4-4fbd-95da-56fdfff9dfd4 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/da864290-86e4-4fbd-95da-56fdfff9dfd4 850w" sizes="(max-width: 768px) 100vw, 50vw" alt="3"> 427 </div> 428 </div> 429 430 <div class="sell-section__mob-wiew"> 431 <div class="sell-slider__arrows sell-slider__arrows--mob jsSellSliderArrowsMob"></div> 432 </div> 433 </div> 434 </div> 435 </div> 436</div> 437</section> 438<section id="section-da28ff70-b32c-4718-98b5-01a5d85656ab" class="solid-section is-font-color-dark is-background-color-light" data-el-id="2d9c964b-697a-40d9-b4d7-669b0f28c45d">
439<script type="text/x-handlebars-template" class="gridItem pagination-script"><li class="property-list__item feature"> 440 <a class="property-list__item-link" 441 href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} 442 data-turbolinks="false" {{/if}}> 443 <div class="property-list__img"> 444 {{{mediaImage media.[0] alt=name}}} 445 {{#if openHouseHours}} 446 <div class="open-house label-house bf1">Open House: {{openHouseHours}}</div> 447 {{/if}} 448 </div> 449 <span class="property-list__label"> 450 {{formatPropertyStatus status}} 451 </span> 452 <div class="property-list__text"> 453 <h4 class="serif">{{name}}</h4> 454 {{#if privateAddress}} 455 <p> 456 Call for Address 457 </p> 458 {{else}} 459 {{#if fullAddress}} 460 <p> 461 {{fullAddress}} 462 </p> 463 {{else}} 464 <p> 465 Call For Address 466 </p> 467 {{/if}} 468 {{/if}} 469 <p> 470 {{#if bedroomCount}} {{bedroomCount}} Bed{{#numCompare bedroomCount 1 ">"}}s{{/numCompare}} {{#if (or 471 livingSpaceSize bathCount)}}|{{/if}} {{/if}} 472 {{#if bathCount}} {{bathCount}} Bath{{#numCompare bathCount 1 ">"}}s{{/numCompare}} {{#numCompare 473 livingSpaceSize 0 ">"}}|{{/numCompare}} {{/if}} 474 {{#if livingSpaceSize}} 475 {{#numCompare livingSpaceSize 0 ">"}} 476 {{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}} 477 {{/numCompare}} 478 {{/if}} 479 </p> 480 <h5 class="price-title"> 481 {{~formatPropertyPrice .~}} 482 </h5> 483 </div> 484 </a> 485 486 <div class="property-list__hover"> 487 <a href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} 488 data-turbolinks="false" {{/if}} class="hover-link"></a> 489 <div class="property-list__buttons"> 490 <a class="property-list__view" 491 href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} 492 data-turbolinks="false" {{/if}}> 493 <button class="btn btn--primary-dark button-style-2">VIEW PROPERTY</button> 494 <button class="btn btn--primary-light button-style-2">VIEW PROPERTY</button> 495 </a> 496 <div class="property-list__share"> 497 <a class="btn btn--primary-dark button-style-2">SHARE PROPERTY</a> 498 <a class="btn btn--primary-light button-style-2">SHARE PROPERTY</a> 499 <ul class="socials socials--block-dark"> 500 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://hometowncollectionmb.com/properties/{{slug}}" 501 target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 502 <li><a href="https://twitter.com/intent/tweet?url=https://hometowncollectionmb.com/properties/{{slug}}&text={{name}}" 503 target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 504 <li><a href="mailto:?subject={{name}}&body={{name}} - https://hometowncollectionmb.com/properties/{{slug}}" 505 class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 506 </ul> 507 </div> 508 </div> 509 </div> 510</li> 511</script>
511 512<div class="redesign property-list-section lp-vertical-paddings"> 513 <div> 514 <div class="container title"> 515 <h2 class="lp-h2">Floor Plans</h2> 516 </div> 517 <div class="container"> 518 <ul 519 class="property-list three-items data-container"> 520 <li class="property-list__item feature"> 521 <a class="property-list__item-link" 522 href="/properties/the-kensington" > 523 <div class="property-list__img"> 524 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ea1fa3c6-7050-4672-823c-26eab14d0c17" 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/ea1fa3c6-7050-4672-823c-26eab14d0c17 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ea1fa3c6-7050-4672-823c-26eab14d0c17 1000w" alt="The Kensington" loading="lazy"> 525 </div> 526 <span class="property-list__label"> 527 For Sale 528 </span> 529 <div class="property-list__text"> 530 <h4 class="serif">The Kensington</h4> 531 <p> 532 The base house starts with 4 bedrooms and 2.5 bathrooms., Gaithersburg, MD 20878 533 </p> 534 <p> 535 3 Beds | 536 537 1,997 Sq.Ft. 538 </p> 539 <h5 class="price-title"></h5> 540 </div> 541 </a> 542 543 <div class="property-list__hover"> 544 <a href="/properties/the-kensington" class="hover-link"></a> 545 <div class="property-list__buttons"> 546 <a class="property-list__view" 547 href="/properties/the-kensington" > 548 <button class="btn btn--primary-dark button-style-2">VIEW PROPERTY</button> 549 <button class="btn btn--primary-light button-style-2">VIEW PROPERTY</button> 550 </a> 551 <div class="property-list__share"> 552 <a class="btn btn--primary-dark button-style-2">SHARE PROPERTY</a> 553 <a class="btn btn--primary-light button-style-2">SHARE PROPERTY</a> 554 <ul class="socials socials--block-dark"> 555 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://hometowncollectionmb.com/properties/the-kensington" 556 target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 557 <li><a href="https://twitter.com/intent/tweet?url=https://hometowncollectionmb.com/properties/the-kensington&text=The Kensington" 558 target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 559 <li><a href="/cdn-cgi/l/email-protection#645b1711060e01071059300c01442f010a170d0a03100b0a42060b001d59300c01442f010a170d0a03100b0a4449440c101014175e4b4b0c0b0901100b130a070b08080107100d0b0a09064a070b094b14160b140116100d01174b100c01490f010a170d0a03100b0a" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 560 </ul> 561 </div> 562 </div> 563 </div> 564 </li> 565 <li class="property-list__item feature"> 566 <a class="property-list__item-link" 567 href="/properties/oakland-modified" > 568 <div class="property-list__img"> 569 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/76e7eb73-286e-4625-91ea-c028f1b010e6" alt="The Oakland â Modified" loading="lazy"> 570 </div> 571 <span class="property-list__label"> 572 For Sale 573 </span> 574 <div class="property-list__text"> 575 <h4 class="serif">The Oakland â Modified</h4> 576 <p> 577 The base house starts with 4 bedrooms, 2.5 bathrooms, and a basement garage., Gaithersburg, MD 20878 578 </p> 579 <p> 580 4 Beds | 581 2.5 Baths | 582 2,332 Sq.Ft. 583 </p> 584 <h5 class="price-title">$380,000</h5> 585 </div> 586 </a> 587 588 <div class="property-list__hover"> 589 <a href="/properties/oakland-modified" class="hover-link"></a> 590 <div class="property-list__buttons"> 591 <a class="property-list__view" 592 href="/properties/oakland-modified" > 593 <button class="btn btn--primary-dark button-style-2">VIEW PROPERTY</button> 594 <button class="btn btn--primary-light button-style-2">VIEW PROPERTY</button> 595 </a> 596 <div class="property-list__share"> 597 <a class="btn btn--primary-dark button-style-2">SHARE PROPERTY</a> 598 <a class="btn btn--primary-light button-style-2">SHARE PROPERTY</a> 599 <ul class="socials socials--block-dark"> 600 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://hometowncollectionmb.com/properties/oakland-modified" 601 target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 602 <li><a href="https://twitter.com/intent/tweet?url=https://hometowncollectionmb.com/properties/oakland-modified&text=The Oakland â Modified" 603 target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 604 <li><a href="/cdn-cgi/l/email-protection#94abe7e1f6fef1f7e0a9c0fcf1b4dbf5fff8f5faf0b4761407b4d9fbf0fdf2fdf1f0b2f6fbf0eda9c0fcf1b4dbf5fff8f5faf0b4761407b4d9fbf0fdf2fdf1f0b4b9b4fce0e0e4e7aebbbbfcfbf9f1e0fbe3faf7fbf8f8f1f7e0fdfbfaf9f6baf7fbf9bbe4e6fbe4f1e6e0fdf1e7bbfbf5fff8f5faf0b9f9fbf0fdf2fdf1f0" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 605 </ul> 606 </div> 607 </div> 608 </div> 609 </li> 610 <li class="property-list__item feature"> 611 <a class="property-list__item-link" 612 href="/properties/the-oakland" > 613 <div class="property-list__img"> 614 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5b213ec3-53fc-49f9-98e5-8f1af1c4990e" 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/5b213ec3-53fc-49f9-98e5-8f1af1c4990e 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5b213ec3-53fc-49f9-98e5-8f1af1c4990e 1000w" alt="The Oakland" loading="lazy"> 615 </div>
616 <span class="property-list__label"> 617 For Sale 618 </span> 619 <div class="property-list__text"> 620 <h4 class="serif">The Oakland</h4> 621 <p> 622 The base house starts with 4 bedrooms, 2.5 bathrooms, and an upstairs laundry room., Gaithersburg, MD 20878 623 </p> 624 <p> 625 4 Beds | 626 2.5 Baths | 627 2,332 Sq.Ft. 628 </p> 629 <h5 class="price-title">$335,000</h5> 630 </div> 631 </a> 632 633 <div class="property-list__hover"> 634 <a href="/properties/the-oakland" class="hover-link"></a> 635 <div class="property-list__buttons"> 636 <a class="property-list__view" 637 href="/properties/the-oakland" > 638 <button class="btn btn--primary-dark button-style-2">VIEW PROPERTY</button> 639 <button class="btn btn--primary-light button-style-2">VIEW PROPERTY</button> 640 </a> 641 <div class="property-list__share"> 642 <a class="btn btn--primary-dark button-style-2">SHARE PROPERTY</a> 643 <a class="btn btn--primary-light button-style-2">SHARE PROPERTY</a> 644 <ul class="socials socials--block-dark"> 645 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://hometowncollectionmb.com/properties/the-oakland" 646 target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 647 <li><a href="https://twitter.com/intent/tweet?url=https://hometowncollectionmb.com/properties/the-oakland&text=The Oakland" 648 target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 649 <li><a href="/cdn-cgi/l/email-protection#89b6fafcebe3eceafdb4dde1eca9c6e8e2e5e8e7edafebe6edf0b4dde1eca9c6e8e2e5e8e7eda9a4a9e1fdfdf9fab3a6a6e1e6e4ecfde6fee7eae6e5e5eceafde0e6e7e4eba7eae6e4a6f9fbe6f9ecfbfde0ecfaa6fde1eca4e6e8e2e5e8e7ed" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 650 </ul> 651 </div> 652 </div> 653 </div> 654 </li> 655 <li class="property-list__item feature"> 656 <a class="property-list__item-link" 657 href="/properties/frederick" > 658 <div class="property-list__img"> 659 <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/9c824150-6519-49f3-90cb-7299c5542b3b" 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/9c824150-6519-49f3-90cb-7299c5542b3b 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/9c824150-6519-49f3-90cb-7299c5542b3b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/9c824150-6519-49f3-90cb-7299c5542b3b 1800w" alt="The Frederick" loading="lazy"> 660 </div> 661 <span class="property-list__label"> 662 For Sale 663 </span> 664 <div class="property-list__text"> 665 <h4 class="serif">The Frederick</h4> 666 <p> 667 The base house starts with 4 bedrooms and 2.5 bathrooms., Gaithersburg, MD 20878 668 </p> 669 <p> 670 4 Beds | 671 2.5 Baths | 672 2,474 Sq.Ft. 673 </p> 674 <h5 class="price-title">$440,000</h5> 675 </div> 676 </a> 677 678 <div class="property-list__hover"> 679 <a href="/properties/frederick" class="hover-link"></a> 680 <div class="property-list__buttons"> 681 <a class="property-list__view" 682 href="/properties/frederick" > 683 <button class="btn btn--primary-dark button-style-2">VIEW PROPERTY</button> 684 <button class="btn btn--primary-light button-style-2">VIEW PROPERTY</button> 685 </a> 686 <div class="property-list__share"> 687 <a class="btn btn--primary-dark button-style-2">SHARE PROPERTY</a> 688 <a class="btn btn--primary-light button-style-2">SHARE PROPERTY</a> 689 <ul class="socials socials--block-dark"> 690 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://hometowncollectionmb.com/properties/frederick" 691 target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 692 <li><a href="https://twitter.com/intent/tweet?url=https://hometowncollectionmb.com/properties/frederick&text=The Frederick" 693 target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 694 <li><a href="/cdn-cgi/l/email-protection#cef1bdbbaca4abadbaf39aa6abee88bcabaaabbca7ada5e8aca1aab7f39aa6abee88bcabaaabbca7ada5eee3eea6bababebdf4e1e1a6a1a3abbaa1b9a0ada1a2a2abadbaa7a1a0a3ace0ada1a3e1bebca1beabbcbaa7abbde1a8bcabaaabbca7ada5" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 695 </ul> 696 </div> 697 </div> 698 </div> 699 </li> 700 </ul> 701 <div class="empty-result" style="display: none"> 702 <h3>No Results Found. Please Try Another Search.</h3> 703 </div> 704 <div class="pagination-container pagination-style-1"></div> </div> 705 </div> 706</div> 707 708</section> 709<section class="image-section is-font-color-light is-background-color-light" id="section-3bd492d6-c0b9-4b2b-acf6-883219de6476" data-el-id="6120297b-2131-4bf4-ac23-206d01b963ec"> 710 711<div class="media-blocks lp-vertical-paddings redesign"> 712 <div class="lp-container"> 713 <div class="lp-title-group"> 714 <h2 class="lp-h2">Special Features</h2> 715 716 </div> 717 718 <div class="row"> 719 720 <div class="col col-1-3"> 721 722 <div class="media-card"> 723 <div class="media-card__image"> 724 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b1705378-29ca-4423-84e8-307c9dabc20e" 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/b1705378-29ca-4423-84e8-307c9dabc20e 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b1705378-29ca-4423-84e8-307c9dabc20e 600w" sizes="(max-width: 768px) 100vw, 33vw" alt="Accessible Home Building" loading="lazy"> 725 </div> 726 <h4 class="lp-h4 media-card__title">Accessible Home Building</h4> 727 <div class="media-card__description lp-a"><p>Hometown Collection is proud to offer accessibility options for all our homeowners. Work with our designers and builders to create a home customized to your needs. Our floor plans and features can support aging in place, wheelchair accessibility, and mobility accommodations. Reach out to learn more about our accessible homes and collaborative building process!</p></div> 728 <div> 729 <a 730 href="/accessible-home-building" 731 732 class="lp-btn lp-btn--outline lp-btn--dark media-card__button button-style-3" 733 734 735 736 737 738 > 739 Learn More 740 </a> 741 </div> 742 743 </div> 744 </div> 745 <div class="col col-1-3"> 746 747 <div class="media-card"> 748 <div class="media-card__image"> 749 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/26e23cbd-55d6-4a8a-a6b8-b7e06c3c91d6" 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/26e23cbd-55d6-4a8a-a6b8-b7e06c3c91d6 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/26e23cbd-55d6-4a8a-a6b8-b7e06c3c91d6 600w" sizes="(max-width: 768px) 100vw, 33vw" alt="Multigenerational Homes" loading="lazy"> 750 </div> 751 <h4 class="lp-h4 media-card__title">Multigenerational Homes</h4> 752 <div class="media-card__description lp-a"><p>Hometown Collection supports multigenerational living. Customize your floor plan to suit your entire family, whether you’re raising young children or aging in place. Our universal design offers options for dual owner’
752s suites, private living spaces, and specialized accessibility. Contact us to learn more about how we can build your family’s unique home!</p></div> 753 <div> 754 <a 755 href="/multigenerational-homes" 756 757 class="lp-btn lp-btn--outline lp-btn--dark media-card__button button-style-3" 758 759 760 761 762 763 > 764 Learn More 765 </a> 766 </div> 767 768 </div> 769 </div> 770 <div class="col col-1-3"> 771 772 <div class="media-card"> 773 <div class="media-card__image"> 774 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2fcf2831-4bae-401f-afc1-c735e3a11a2a" 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/2fcf2831-4bae-401f-afc1-c735e3a11a2a 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2fcf2831-4bae-401f-afc1-c735e3a11a2a 600w" sizes="(max-width: 768px) 100vw, 33vw" alt="Accessory Dwelling Units" loading="lazy"> 775 </div> 776 <h4 class="lp-h4 media-card__title">Accessory Dwelling Units</h4> 777 <div class="media-card__description lp-a"><p>Accessory Dwelling Units are a popular way to invest in your new or existing property while also offering a comfortable, private living space without being far from home - for you or your guests. Our thoughtfully designed floor plans are conveniently spacious, equipped with everything you would find in a single family home, and are built to last for generations.</p></div> 778 <div> 779 <a 780 href="/accessory-dwelling-units" 781 782 class="lp-btn lp-btn--outline lp-btn--dark media-card__button button-style-3" 783 784 785 786 787 788 > 789 Learn More 790 </a> 791 </div> 792 793 </div> 794 </div> 795 </div> 796 797 </div> 798</div> 799 800 801</section> 802<section class="image-section is-font-color-light is-background-color-light" id="section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c">
vendor: 113 bytes, lines 802-803
802 803 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
803<script> 804 (function(){ 805 const sectionId = 'section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5' 806 const section = document.querySelector(`#${sectionId}`); 807 var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image'); 808 809 if('true' === 'true') { 810 section.classList.add('parallax-enabled'); 811 section.style.setProperty('--sectionBackground', sectionBg); 812 section.style.setProperty('background', 'none'); 813 } 814 })() 815</script>
815 816<div class="redesign work-with-us parallax"> 817 <div class="container"> 818 <h2 class="serif">Work With Us</h2> 819 <div class="description">Whether you're buying your first home or selling a property, weâre here to make the process seamless and stress-free. With personalized guidance and a commitment to your goals, we ensure every transaction is handled with care and expertise from start to finish.</div> 820 <div class="btn-container"> 821 <a 822 role="button" 823 data-type="CONTACT_US" 824 class="btn btn--primary-light button-style-1" 825 826 827 828 829 830 > 831 Contact Us 832 </a> 833 </div> 834 </div> 835</div> 836</section> 837<section id="section-739c3d68-8237-4212-b354-6f93e6c00751" class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284"> 838
838<script type="text/x-handlebars-template" class="jsIGItem"> 839 <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}"> 840 <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div> 841 <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div> 842 {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}} 843 </a> 844</script>
844 845<div class="ig-feed redesign"> 846 <div class="ig-feed-top lp-container"> 847 <div class="top-wrapper"> 848 <div class="top-left"> 849 <h3 class="lp-h3 title">Follow Me on Instagram</h3> 850 <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a> 851 </div> 852 <div class="top-right"> 853 <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 Me</a> 854 <a class="nav-button top-nav-prev hidden-control button-style-1"> 855 <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> 856 </a> 857 <a class="nav-button top-nav-next hidden-control button-style-1"> 858 <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> 859 </a> 860 </div> 861 </div> 862 </div> 863 <div class="lp-container ig-feed-container "> 864 <div class="ig-feed-feed" data-limit="33"> 865 </div> 866 </div> 867 <div class="bottom-controls"> 868 <a class="bottom-nav-button bottom-nav-prev button-style-1"> 869 <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> 870 </a> 871 <a class="bottom-nav-button bottom-nav-next button-style-1"> 872 <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> 873 </a> 874 </div> 875</div> 876 877</section> 878 879 <div id="modals" class="modals"></div> 880 <footer id="global-footer" class="is-font-color-light is-background-color-dark" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b"> 881 <div class="footer redesign no_newsletter "> 882 <div class="container"> 883 <h3>Jeanette Mitchell</h3> 884 <div class="info-wrap"> 885 <div class="info-wrap-contact agent_box"> 886 <div class="info-wrap-contact_zone type_user"> 887 <h4 class="serif">GET IN TOUCH</h4> 888 <div class="info-wrap-contact_cell"> 889 <i> 890 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 891 <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" /> 892 </svg> 893 </i> 894 <p class="contact_title">Email</p> 895 <a href="/cdn-cgi/l/email-protection#08626d69666d7c7c6d2665617c6b606d6464486b6a7a6d69647c71266b6765" class="lp-link info-wrap-contact_link grey-text hyperlink-style-2"><span class="__cf_email__" data-cfemail="2b414e4a454e5f5f4e0546425f48434e47476b4849594e4a475f5205484446">[email protected]</span></a> 896 </div> 897 <div class="info-wrap-contact_cell"> 898 <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 899 <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
89913 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" /> 900 </svg></i> 901 <p class="contact_title">Phone Number</p> 902 <a href="tel:3015803051" class="lp-link info-wrap-contact_link grey-text hyperlink-style-2">(301) 580-3051</a> 903 </div> 904 </div> 905 <div class="info-wrap-contact_zone"> 906 <div class="info-wrap-contact_cell"> 907 <i> 908 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 909 <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" /> 910 <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" /> 911 <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" /> 912 </svg> 913 </i> 914 <p class="info-wrap-contact_title">Address</p> 915 <p class="info-wrap-contact_link grey-text"><p>406 Tschiffely Square Rd<br />Gaithersburg MD 20878</p></p> 916 </div> 917 </div> 918 </div> 919 </div> 920 <div class="text_footer first_text_footer"> 921 <div class="images_box"> 922 <div class="img_size"> 923 <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/0bbf8cc9-43d1-4b52-8f9b-247329965189" 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/0bbf8cc9-43d1-4b52-8f9b-247329965189 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/0bbf8cc9-43d1-4b52-8f9b-247329965189 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/0bbf8cc9-43d1-4b52-8f9b-247329965189 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0bbf8cc9-43d1-4b52-8f9b-247329965189 1460w" alt="Footer Image" sizes="200px"> 924 </div> 925 </div> 926 <div class="luxury-text"> 927 <div id="ipql"> 928<p style="font-size: 12px;">
928The property information herein is derived from various sources that may include, but not be limited to, county records and the Multiple Listing Service, and it may include approximations. Although the information is believed to be accurate, it is not warranted and you should not rely upon it without personal verification. Not intended as a solicitation if your property is already listed by another broker. Affiliated real estate agents are independent contractor sales associates, not employees. ©<span class="auto-year-update">#</span> Coldwell Banker. All Rights Reserved. Coldwell Banker and the Coldwell Banker logos are trademarks of Coldwell Banker Real Estate LLC. The Coldwell Banker® System is comprised of company owned offices which are owned by a subsidiary of Anywhere Advisors LLC and franchised offices which are independently owned and operated. The Coldwell Banker System fully supports the principles of the Fair Housing Act and the Equal Opportunity Act.<img style="margin-bottom: 4px;" src="https://media-production.lp-cdn.com/media/feea0139-a7d3-41cc-8c64-d2ab30d586b2" alt width="25px" height="auto"></p> 929<p> </p> 930</div> 931<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}</style> 932 </div> 933 </div> 934 <div class="text_footer second_text_footer"> 935 <div class="text_content_wrap"> 936 <div> 937 <div> </div> 938<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 939 </div> 940 </div> 941 </div> 942 <div class="info-privacy"> 943 <div class="form-row info-privacy__row"> 944 945 <div class="form-col form-col--powered powered-box"> 946 <div class="img-wrap"> 947 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bfhaw8kkzru028ctaukq" 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/bfhaw8kkzru028ctaukq 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bfhaw8kkzru028ctaukq 390w" sizes="200px" alt=""> 948 </div> 949 <div class="powered_zone"> 950 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-2">Luxury Presence</a> 951 </div> 952 </div> 953 954 <div class="form-col form-col--copyright"> 955 <div class="copy_zone"> 956 <span class="copy_words">Copyright ©</span> <span class="auto-year-update">2026</span> 957 | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-2">Privacy Policy</a> 958 959 </div> 960 </div> 961 962 <div class="form-col form-col--socials"> 963 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone"> 964 965 <li> 966 <a 967 href="https://www.facebook.com/HometownCollectionMB/" 968 class="lp-socials__link socials__item socials__link wow fadeInUp" 969 data-wow-delay="0s" 970 target="_blank" 971 aria-label="FACEBOOK" 972 > 973 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 974 </a> 975 </li> 976 <li> 977 <a 978 href="https://www.instagram.com/hometowncollection_mb/" 979 class="lp-socials__link socials__item socials__link wow fadeInUp" 980 data-wow-delay="0.1s" 981 target="_blank" 982 aria-label="INSTAGRAM" 983 >
984 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 985 </a> 986 </li> 987 <li> 988 <a 989 href="https://www.linkedin.com/company/hometown-collection-by-mitchell-best/" 990 class="lp-socials__link socials__item socials__link wow fadeInUp" 991 data-wow-delay="0.2s" 992 target="_blank" 993 aria-label="LINKEDIN" 994 > 995 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 996 </a> 997 </li> 998 <li> 999 <a 1000 href="https://www.google.com/search?q=home+town+collection+Gaithersburg%2C+MD&sca_esv=e7fb66bace9eb99e&ei=AT0EZ4KLBonf2roPi93EoQg&ved=0ahUKEwjCj-jehv2IAxWJr1YBHYsuMYQQ4dUDCA8&uact=5&oq=home+town+collection+Gaithersburg%2C+MD&gs_lp=Egxnd3Mtd2l6LXNlcnAiJWhvbWUgdG93biBjb2xsZWN0aW9uIEdhaXRoZXJzYnVyZywgTUQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRInoEBUABY93hwAngAkAEAmAF_oAGVE6oBBTEyLjEyuAEDyAEA-AEB-AECmAIaoAKgFMICCxAAGIAEGLEDGIMBwgIIEAAYgAQYsQPCAgUQLhiABMICDhAAGIAEGLEDGIMBGIoFwgIFEAAYgATCAgoQABiABBhDGIoFwgIOEC4YgAQYsQMY0QMYxwHCAhEQLhiABBixAxjRAxiDARjHAcICGRAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigXCAgsQABiABBiSAxiKBcICKBAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigUYlwUY3AQY3gQY4ATYAQHCAggQLhiABBixA8ICCxAuGIAEGLEDGNQCwgIQEC4YgAQY0QMYQxjHARiKBcICBxAAGIAEGArCAhEQLhiABBjHARiYBRiZBRivAcICCxAuGIAEGMcBGK8BwgIGEAAYFhgewgIIEAAYFhgKGB7CAggQABgWGB4YD8ICGhAuGIAEGMcBGK8BGJcFGNwEGN4EGOAE2AEBwgIKEAAYFhgKGB4YD8ICCBAuGBYYChgewgIOEC4YFhjHARgKGB4YrwHCAgsQABiABBiGAxiKBcICBxAAGIAEGA3CAgYQABgNGB7CAggQABgNGB4YD8ICBxAhGKABGAqYAwC6BgYIARABGBSSBwQ5LjE3oAfH5AE&sclient=gws-wiz-serp#lrd=0x89b62d83a416aaab:0x702654f848ae0d7,3,,,," 1001 class="lp-socials__link socials__item socials__link wow fadeInUp" 1002 data-wow-delay="0.3s" 1003 target="_blank" 1004 aria-label="GOOGLE" 1005 > 1006 <span class="lp-i lp-i--google" aria-hidden="true"></span> 1007 </a> 1008 </li> 1009 </ul> </div> 1010 </div> 1011 </div> 1012 </div> 1013</div> 1014 1015 </footer> 1016 1017 <div id="modal-global-contact-us" class="modal " 1018 data-el-id="" 1019 style="background-color: ;" 1020 > 1021 <div class="modal-content"> 1022 <div class="contact-form redesign " style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/pjqqegmhxogg5bprrz7t')"> 1023 <div class="container"> 1024 <div class="section-details" style="--colorTxt: #ffffff"> 1025 <h2>CONTACT DETAILS</h2> 1026 1027 <div class="info-zone"> 1028 1029 <div class="info-zone_contact type_user"> 1030 <h4 class="serif">HOMETOWN COLLECTION</h4> 1031 <div class="info-zone_contact_cell"> 1032 <i> 1033 <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1034 <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.48
103415 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"/> 1035 </svg> 1036 </i> 1037 <p class="contact_title">Phone</p> 1038 <a href="tel:(301) 580-3051" class="lp-link info-zone_contact_link link hyperlink-style-2">(301) 580-3051</a> 1039 </div> 1040 <div class="info-zone_contact_cell"> 1041 <i> 1042 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 1043 <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"/> 1044 </svg> 1045 </i> 1046 <p class="contact_title">Email</p> 1047 <a href="/cdn-cgi/l/email-protection#abc1cecac5cedfdfce85c6c2dfc8c3cec7c7ebc8c9d9cecac7dfd285c8c4c6" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="650f00040b001111004b080c11060d00090925060717000409111c4b060a08">[email protected]</span></a> 1048 </div> 1049 </div> 1050 <div class="info-zone_contact"> 1051 <div class="info-zone_contact_cell"> 1052 <i> 1053 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 1054 <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"/> 1055 <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"/> 1056 <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"/> 1057 </svg> 1058 </i> 1059 <p class="info-wrap-contact_title">Address</p> 1060 <p class="info-zone_contact_link pre-line">406 Tschiffely Square Rd 1061 Gaithersburg MD 20878</p> 1062 </div> 1063 </div> 1064 <div class="info-zone_contact"> 1065 <div class="info-zone_contact_cell"> 1066 <p class="pre-line"><div></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style></p> 1067 </div> 1068 </div> 1069 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__c
1069ontact-column"> 1070 1071 <li> 1072 <a 1073 href="https://www.facebook.com/HometownCollectionMB/" 1074 class="lp-socials__link socials__item wow fadeInUp socials__link" 1075 data-wow-delay="0s" 1076 target="_blank" 1077 aria-label="FACEBOOK" 1078 > 1079 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 1080 </a> 1081 </li> 1082 <li> 1083 <a 1084 href="https://www.instagram.com/hometowncollection_mb/" 1085 class="lp-socials__link socials__item wow fadeInUp socials__link" 1086 data-wow-delay="0.1s" 1087 target="_blank" 1088 aria-label="INSTAGRAM" 1089 > 1090 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 1091 </a> 1092 </li> 1093 <li> 1094 <a 1095 href="https://www.linkedin.com/company/hometown-collection-by-mitchell-best/" 1096 class="lp-socials__link socials__item wow fadeInUp socials__link" 1097 data-wow-delay="0.2s" 1098 target="_blank" 1099 aria-label="LINKEDIN" 1100 > 1101 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 1102 </a> 1103 </li> 1104 <li> 1105 <a 1106 href="https://www.google.com/search?q=home+town+collection+Gaithersburg%2C+MD&sca_esv=e7fb66bace9eb99e&ei=AT0EZ4KLBonf2roPi93EoQg&ved=0ahUKEwjCj-jehv2IAxWJr1YBHYsuMYQQ4dUDCA8&uact=5&oq=home+town+collection+Gaithersburg%2C+MD&gs_lp=Egxnd3Mtd2l6LXNlcnAiJWhvbWUgdG93biBjb2xsZWN0aW9uIEdhaXRoZXJzYnVyZywgTUQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRInoEBUABY93hwAngAkAEAmAF_oAGVE6oBBTEyLjEyuAEDyAEA-AEB-AECmAIaoAKgFMICCxAAGIAEGLEDGIMBwgIIEAAYgAQYsQPCAgUQLhiABMICDhAAGIAEGLEDGIMBGIoFwgIFEAAYgATCAgoQABiABBhDGIoFwgIOEC4YgAQYsQMY0QMYxwHCAhEQLhiABBixAxjRAxiDARjHAcICGRAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigXCAgsQABiABBiSAxiKBcICKBAuGIAEGLEDGNEDGEMYgwEYxwEYyQMYigUYlwUY3AQY3gQY4ATYAQHCAggQLhiABBixA8ICCxAuGIAEGLEDGNQCwgIQEC4YgAQY0QMYQxjHARiKBcICBxAAGIAEGArCAhEQLhiABBjHARiYBRiZBRivAcICCxAuGIAEGMcBGK8BwgIGEAAYFhgewgIIEAAYFhgKGB7CAggQABgWGB4YD8ICGhAuGIAEGMcBGK8BGJcFGNwEGN4EGOAE2AEBwgIKEAAYFhgKGB4YD8ICCBAuGBYYChgewgIOEC4YFhjHARgKGB4YrwHCAgsQABiABBiGAxiKBcICBxAAGIAEGA3CAgYQABgNGB7CAggQABgNGB4YD8ICBxAhGKABGAqYAwC6BgYIARABGBSSBwQ5LjE3oAfH5AE&sclient=gws-wiz-serp#lrd=0x89b62d83a416aaab:0x702654f848ae0d7,3,,,," 1107 class="lp-socials__link socials__item wow fadeInUp socials__link" 1108 data-wow-delay="0.3s" 1109 target="_blank" 1110 aria-label="GOOGLE" 1111 > 1112 <span class="lp-i lp-i--google" aria-hidden="true"></span> 1113 </a> 1114 </li> 1115 </ul> </div> 1116 </div> 1117 <div class="section-message"> 1118 <form data-type="contact-form"> 1119 <h2>SUBMIT A MESSAGE</h2> 1120 <div class="h-pot"> 1121 <label for="-middleName">Middle Name</label> 1122 <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 1123 </div> 1124 1125
1126 <div class="lp-input-group"> 1127 <label for="prod-name" class="lp-label">Name</label> 1128 <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light"> 1129 </div> 1130 <div class="lp-input-group"> 1131 <label for="prod-email" class="lp-label">Email</label> 1132 <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light"> 1133 </div> 1134 <div class="lp-input-group"> 1135 <label for="prod-phone" class="lp-label">Phone</label> 1136 <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light"> 1137 </div> 1138 <div class="lp-input-group m16"> 1139 <label for="prod-message" class="lp-label">Message</label> 1140 <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea> 1141 </div> 1142 1143 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 1144 <label class='lp-tcr-content'> 1145 <span class='lp-tcr-checkbox'> 1146 <input 1147 type='checkbox' 1148 id='-termsAccepted' 1149 name='termsAccepted' 1150 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1151 oninput="this.setCustomValidity('')" 1152 required 1153 /></span> 1154 <span class='lp-tcr-message'> 1155 1156 I agree to be contacted by 1157 Marty Mitchell 1158 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1159 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 1160 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 1161 </span> 1162 </label> 1163 1164 </div> 1165 1166 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 1167 1168 1169 <button type="submit" class="submitButton lp-btn button-style-1"> 1170 <span class="label-initial">Submit</span> 1171 <span class="label-loading">Submitting</span> 1172 <span class="label-success">Submitted</span> 1173 <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span> 1174 </button> 1175 <p class="success-message success hide"> 1176 Message sent successfully! 1177 </p> 1178 </form> 1179 1180 1181 </div> 1182 </div> 1183 </div> 1184 1185 </div> 1186 <button class="close lp-close" type="button" aria-label="close modal"> 1187 <span class="lp-close-icon" aria-hidden="true"></span> 1188 </button> 1189 </div> 1190 <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;"> 1191 <style> 1192 #qualifying-questions-modal .custom-select-toggle { 1193 border: 1px solid #848484; 1194 border-radius: 8px; 1195 padding: 12px 16px; 1196 } 1197 1198 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 1199 color: #848484; 1200 } 1201 1202 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 1203 color: #848484; 1204 opacity: 1; 1205 } 1206 1207 #qualifying-questions-modal .disclaimer-more { 1208 display: none; 1209 } 1210 1211 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 1212 display: inline; 1213 } 1214 1215 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 1216 display: none; 1217 } 1218 </style>
vendor: 119 bytes, lines 1218-1219
1218 1219 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1219<script> 1220 function toggleDisclaimerQualifyingQuestionsModal() { 1221 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 1222 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 1223 1224 if (disclaimerText.classList.contains('collapsed')) { 1225 disclaimerText.classList.remove('collapsed'); 1226 toggleButton.textContent = 'Read less'; 1227 toggleButton.setAttribute('aria-expanded', 'true'); 1228 } else { 1229 disclaimerText.classList.add('collapsed'); 1230 toggleButton.textContent = 'Read more'; 1231 toggleButton.setAttribute('aria-expanded', 'false'); 1232 } 1233 } 1234 </script>
1234 1235 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 1236 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 1237 <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;"> 1238 <span aria-hidden="true">×</span> 1239 </button> 1240 <div style="padding: 40px 30px 32px;"> 1241 <div style="text-align: left; margin-bottom: 32px;"> 1242 <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;"> 1243 Thanks, please provide more information to help serve you 1244 </h2> 1245 </div> 1246 <form id="qualifying-questions-modal-form" data-type="contact-form"> 1247 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 1248 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 1249 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 1250 <label for="qualifying-questions-modal-email" style="display:none;"> 1251 Email 1252 </label> 1253 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 1254 Trigger Source 1255 </label> 1256 1257 <div style="margin-bottom: 20px;"> 1258 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 1259 Phone Number 1260 </label> 1261 <input 1262 type="tel" 1263 id="qualifying-questions-modal-phoneNumber" 1264 name="phoneNumber" 1265 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;" 1266 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 1267 required 1268 placeholder="Phone" 1269 aria-label="Phone Number" 1270 inputmode="tel" 1271 autocomplete="tel" 1272 onfocus="this.style.borderColor='black';" 1273 onblur="this.style.borderColor='#848484';" 1274 /> 1275 </div> 1276 1277 <div style="margin-bottom: 20px;"> 1278 <label for="qualifying-questions-modal-interest" style="display:none;"> 1279 Interest 1280 </label> 1281 <select 1282 id="qualifying-questions-modal-interest" 1283 name="interest" 1284 required 1285 data-label="Interest" 1286 aria-label="Interest" 1287 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;" 1288 onfocus="this.style.borderColor='black'; this.style.color='black';" 1289 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 1290 > 1291 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 1292 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 1293 <option value="Selling" style="background: #fff; color: black;">Selling</option> 1294 <option value="Buying" style="background: #fff; color: black;">Buying</option> 1295 <option value="Renting" style="background: #fff; color: black;">Renting</option> 1296 <option value="Other" style="background: #fff; color: black;">Other</option> 1297 </select> 1298 </div> 1299 1300 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 1301 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 1302 <label class='lp-tcr-content'>
1303 <span class='lp-tcr-checkbox'> 1304 <input 1305 type='checkbox' 1306 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 1307 name='termsAccepted' 1308 aria-describedby='qualifying-questions-modal-disclaimer-text' 1309 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1310 oninput="this.setCustomValidity('')" 1311 required 1312 /></span> 1313 <span class='lp-tcr-message'> 1314 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 1315 1316 I agree to be contacted by 1317 <strong>Marty Mitchell</strong> 1318 via call, email, and text <span class="disclaimer-more">for real estate services. 1319 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1320 You can also click the unsubscribe link in the emails. 1321 Message and data rates may apply. Message frequency may vary.</span> 1322 <span class="disclaimer-ellipsis">...</span> 1323 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 1324 </div> 1325 <button 1326 id="qualifying-questions-modal-toggle-disclaimer" 1327 type="button" 1328 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 1329 aria-expanded="false" 1330 onclick="toggleDisclaimerQualifyingQuestionsModal()" 1331 > 1332 Read more 1333 </button> 1334 </span> 1335 </label> 1336 </div> 1337 1338 <div> 1339 <button 1340 type="submit" 1341 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;" 1342 onmouseover="this.style.background='transparent'; this.style.color='black';" 1343 onmouseout="this.style.background='black'; this.style.color='white';" 1344 > 1345 Submit 1346 </button> 1347 </div> 1348 </form> 1349 </div> 1350 </div> 1351 </div> 1352 </div> 1353 1354
1354<script> 1355 (function() { 1356 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 1357 1358 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 1359 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 1360 entries.forEach(function(video) { 1361 if (video.isIntersecting) { 1362 for (var source in video.target.children) { 1363 var videoSource = video.target.children[source]; 1364 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 1365 videoSource.src = videoSource.dataset.src; 1366 } 1367 } 1368 1369 video.target.load(); 1370 video.target.classList.remove("lazy"); 1371 lazyVideoObserver.unobserve(video.target); 1372 } 1373 }); 1374 }); 1375 1376 lazyVideos.forEach(function(lazyVideo) { 1377 lazyVideoObserver.observe(lazyVideo); 1378 }); 1379 } 1380 })(); 1381 </script>
1381 1382 1383 <!-- Global site tag (gtag.js) - Google Analytics --> 1384
1384<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1384 1385 1386 <!-- Google Tag Manager --> 1387
1387<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1388 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1389 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 1390 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1391 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1391 1392 <!-- End Google Tag Manager --> 1393 1394 1395 <!-- LP Tracker (divolte.js) - LP Divolte --> 1396
1396<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1396 1397 <!-- LP Tracker (eventBus) - LP EventBus --> 1398
1398<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1398 1399 1400
1400<script> 1401 window.dataLayer = window.dataLayer || []; 1402 document.sendGoogleTagManagerEvent = function() { 1403 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 1404 if (window.navigator.globalPrivacyControl) { 1405 return; 1406 } 1407 1408 dataLayer.push(arguments); 1409 } 1410 1411 document.sendGoogleTagManagerEvent('js', new Date()); 1412 document.sendGoogleTagManagerEvent('config', 'G-F5XP92L0WQ', { page: location.pathname, location: location.href }); 1413 document.sendGoogleAnalyticsEvent = function(googleEvent) { 1414 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 1415 event_category: googleEvent.eventCategory, 1416 event_label: googleEvent.eventLabel, 1417 value: googleEvent.eventValue, 1418 page: googleEvent.page, 1419 location: googleEvent.location 1420 }) 1421 }; 1422 1423 document.addEventListener("DOMContentLoaded", function() { 1424 (function() { 1425 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 1426 var date = new Date(); 1427 var elements = document.getElementsByClassName('auto-year-update'); 1428 var i; 1429 for (i = 0; i < elements.length; i++) { 1430 elements[i].innerText = date.getFullYear(); 1431 } 1432 })(); 1433 if (window.divolteLp) { 1434 window.divolteLp('sendLpPageView', {}); 1435 } 1436 if (window.eventBusLp) { 1437 window.eventBusLp('sendLpPageView', {}); 1438 } 1439 }); 1440 </script>
1440 1441 1442 1443
1443<script> 1444 // Function to dynamically load a script 1445 function loadScript(url, callback) { 1446 var script = document.createElement('script'); 1447 script.type = 'text/javascript'; 1448 script.src = url; 1449 script.defer = true; 1450 script.async = true; 1451 script.onload = callback; 1452 document.head.appendChild(script); 1453 } 1454 1455 // Function to dynamically load CSS file 1456 function loadCSS(url) { 1457 var link = document.createElement("link"); 1458 link.rel = "stylesheet"; 1459 link.href = url; 1460 document.head.appendChild(link); 1461 } 1462 1463 // Global methods / variables that can be accessed by element js 1464 window.luxuryPresence = { 1465 libs: { 1466 loadJs: loadScript, 1467 loadCss: loadCSS, 1468 jsLibsMap: { 1469 paroller: { 1470 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 1471 isLoaded: false, 1472 }, 1473 ionRangeSlider: { 1474 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 1475 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 1476 isLoaded: false, 1477 requires: ['jquery'], 1478 }, 1479 splide: { 1480 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 1481 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 1482 isLoaded: false, 1483 }, 1484 wow: { 1485 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 1486 isLoaded: false, 1487 }, 1488 jquery: { 1489 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 1490 isLoaded: false, 1491 }, 1492 slick: { 1493 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 1494 isLoaded: false, 1495 requires: ['jquery'], 1496 }, 1497 libphonenumber: { 1498 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 1499 isLoaded: false, 1500 }, 1501 }, 1502 }, 1503 }; 1504 </script>
1504 1505
1505<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>
1505 1506
1506<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1506 1507
1507<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1507 1508
1508<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1508 1509
1509<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>
1509 1510
1510<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>
1510 1511
1511<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>
1511 1512 1513 <!-- GOOGLE TRANSLATE SCRIPT --> 1514
1514<script> 1515 function googleTranslateElementInit() { 1516 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 1517 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 1518 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 1519 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 1520 translate.innerText = ''; 1521 new google.translate.TranslateElement({ 1522 pageLanguage: 'en', 1523 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 1524 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 1525 }, translate); 1526 }); 1527 } 1528 </script>
1528 1529
1529<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1529 1530
1530<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1530 1531 1532 <!-- GOOGLE TRANSLATE SCRIPT END--> 1533
1533<script> 1534 1535 // UI helpers 1536 (function () { 1537 1538 function getSideMenu () { 1539 return document.querySelector('body > div.sidemenu'); 1540 } 1541 1542 function sideMenuHide (instant) { 1543 var sideMenu = getSideMenu(); 1544 if (!sideMenu || !sideMenu.classList.contains('visible')) { 1545 return; 1546 } 1547 sideMenu.classList.remove('visible'); 1548 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 1549 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 1550 } 1551 1552 function sideMenuShow () { 1553 var sideMenu = getSideMenu(); 1554 if (!sideMenu || sideMenu.classList.contains('visible')) { 1555 return; 1556 } 1557 sideMenu.classList.add('visible'); 1558 sideMenu.dispatchEvent(new Event('lpui-show')); 1559 window.dispatchEvent(new Event('lpui-sidemenu-show')); 1560 } 1561 1562 function sideMenuToggle () { 1563 var sideMenu = getSideMenu(); 1564 if (!sideMenu) { 1565 return; 1566 } 1567 var isSideMenuVisible = sideMenu.classList.contains('visible'); 1568 if (isSideMenuVisible) { 1569 sideMenuHide(); 1570 } else { 1571 sideMenuShow(); 1572 } 1573 } 1574 1575 var scrollLockRequests = {}; 1576 window.__debug_scrollLockRequests = scrollLockRequests; 1577 var hideScrollStyles = ''+ 1578 'body {'+ 1579 'overflow: hidden;' + 1580 '}'; 1581 var hideScrollId = 'hide-body-scroll-style'; 1582 1583 function scrollLock () { 1584 var style = document.createElement('style'); 1585 style.id = hideScrollId; 1586 style.textContent = hideScrollStyles; 1587 document.head.appendChild(style); 1588 window.dispatchEvent(new Event('lpui-scroll-locked')); 1589 } 1590 1591 function scrollUnlock () { 1592 document.getElementById(hideScrollId)?.remove(); 1593 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 1594 } 1595 1596 function requestScrollLock (lockId) { 1597 var wasLocked = Object.keys(scrollLockRequests).length > 0; 1598 scrollLockRequests[lockId || '__anonymous_lock'] = true; 1599 if (!wasLocked) { 1600 scrollLock(); 1601 } 1602 } 1603 1604 function releaseScrollLock (lockId) { 1605 if (lockId) { 1606 delete scrollLockRequests[lockId]; 1607 if (!Object.keys(scrollLockRequests).length) { 1608 scrollUnlock(); 1609 } 1610 } else { 1611 scrollLockRequests = {}; 1612 window.__debug_scrollLockRequests = scrollLockRequests; 1613 scrollUnlock(); 1614 } 1615 } 1616 1617 function showModal (modalId, options) { 1618 var modal = document.getElementById(modalId); 1619 if (!modal) { 1620 return; 1621 } 1622 1623 if (!modal.classList.contains('visible')) { 1624 modal.classList.add('visible'); 1625 if (options && options.scrollLock) { 1626 window.lpUI.requestScrollLock(modalId); 1627 } 1628 modal.dispatchEvent(new Event('lpui-show')); 1629 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 1630 } 1631 1632 const visibleModals = document.querySelectorAll('.modal.visible'); 1633 1634 if (visibleModals.length > 1) { 1635 1636 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 1637 const zIndex = window.getComputedStyle(modal).zIndex; 1638 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 1639 return Math.max(maxZIndex, parsedZIndex); 1640 }, 0); 1641 1642 modal.style.zIndex = maxZIndex + 1; 1643 } 1644 1645 } 1646 1647 function _hideModal (modalEl) { 1648 if (!modalEl) { 1649 return; 1650 } 1651 if (!modalEl.classList.contains('visible')) { 1652 return; 1653 } 1654 modalEl.classList.remove('visible'); 1655 modalEl.style.zIndex = '';
1656 modalEl.dispatchEvent(new Event('lpui-hide')); 1657 var modalId = modalEl.getAttribute('id'); 1658 if (modalId) { 1659 window.lpUI.releaseScrollLock(modalId); 1660 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 1661 } 1662 } 1663 1664 function hideModal (modalId) { 1665 _hideModal(document.getElementById(modalId)); 1666 } 1667 1668 function hideClosestModal (el) { 1669 const modal = el?.closest('.modal'); 1670 if (!modal) { 1671 return; 1672 } 1673 if (modal.classList) { 1674 _hideModal(modal); 1675 return; 1676 } 1677 if (modal.length && modal[0].classList) { 1678 _hideModal(modal[0]); 1679 } 1680 } 1681 1682 window.lpUI = { 1683 sideMenuHide: sideMenuHide, 1684 sideMenuShow: sideMenuShow, 1685 sideMenuToggle: sideMenuToggle, 1686 requestScrollLock: requestScrollLock, 1687 releaseScrollLock: releaseScrollLock, 1688 showModal: showModal, 1689 hideModal: hideModal, 1690 hideClosestModal: hideClosestModal 1691 } 1692 })(); 1693 1694 var stringifyPrimitive = function(v) { 1695 switch (typeof v) { 1696 case 'string': 1697 return v; 1698 1699 case 'boolean': 1700 return v ? 'true' : 'false'; 1701 1702 case 'number': 1703 return isFinite(v) ? v : ''; 1704 1705 default: 1706 return ''; 1707 } 1708 }; 1709 1710 function objectToQuerystring(obj, sep, eq, name) { 1711 // https://github.com/Gozala/querystring/blob/master/encode.js 1712 sep = sep || '&'; 1713 eq = eq || '='; 1714 if (obj === null) { 1715 obj = undefined; 1716 } 1717 1718 if (typeof obj === 'object') { 1719 return Object.keys(obj).map(function(k) { 1720 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 1721 if (Array.isArray(obj[k])) { 1722 return obj[k].map(function(v) { 1723 return ks + encodeURIComponent(stringifyPrimitive(v)); 1724 }).join(sep); 1725 } else { 1726 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 1727 } 1728 }).filter(Boolean).join(sep); 1729 1730 } 1731 1732 if (!name) return ''; 1733 return encodeURIComponent(stringifyPrimitive(name)) + eq + 1734 encodeURIComponent(stringifyPrimitive(obj)); 1735 } 1736 1737 function getPath(url, options) { 1738 var parser = document.createElement('a'); 1739 parser.href = url || ''; 1740 var path = parser.pathname || ''; 1741 if (path[0] !== '/') { 1742 // IE does not return path starting with a slash 1743 path = '/' + path; 1744 } 1745 1746 if (options && options.queryString) { 1747 path += parser.search; 1748 } 1749 1750 return path; 1751 } 1752 1753 function getMLSAutocomplete(keyword) { 1754 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1755 var query = { 1756 kind: 'listings', 1757 query: keyword 1758 }; 1759 1760 return superagent 1761 .get(searchURL) 1762 .query(query) 1763 .then(function(res) { 1764 var data = res.body || []; 1765 // Array of listing_auto_complete documents: id, display_address, city, state, 1766 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 1767 1768 return data; 1769 }); 1770 } 1771 1772 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 1773 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1774 1775 return superagent 1776 .get(searchURL) 1777 .query({ kind: 'listings', query: keyword, ...filters }) 1778 .then(function(res) { 1779 // Same response shape as getMLSAutocomplete. 1780 return res.body || []; 1781 }); 1782 } 1783 1784 function makeMlsLink(data) { 1785 // Code Dupe from utils/googlePlace 1786 // mapping of google data type to mls data type 1787 var mapping = { 1788 neighborhood: 'neighborhood', 1789 locality: 'place', 1790 administrative_area_level_2: 'county', 1791 administrative_area_level_1: 'state', 1792 postal_code: 'postalcode', 1793 }; 1794 1795 function _filterTypes(types) { 1796 return types.filter(function(type) { return type !== 'political' }); 1797 } 1798 1799 if (!data || !Object.keys(data).length) { 1800 return '/home-search/listings'; 1801 } 1802 1803 var newData = {};
1804 _filterTypes(data.types).forEach(function(type) { 1805 if (mapping[type]) { 1806 newData.search_type = mapping[type]; 1807 } 1808 }); 1809 newData.omnibox = data.formatted_address; 1810 data.address_components.forEach(function(component) { 1811 _filterTypes(component.types).forEach(function(type) { 1812 if (mapping[type]) { 1813 newData[mapping[type]] = component.long_name; 1814 } 1815 }); 1816 }); 1817 var bounds = data.geometry.bounds; 1818 var convertedData = Object.assign(bounds, newData); 1819 1820 return '/home-search/listings?' + objectToQuerystring(convertedData); 1821 } 1822 1823 function debounce(func, wait) { 1824 let timeout; 1825 return function(...args) { 1826 const context = this; 1827 clearTimeout(timeout); 1828 timeout = setTimeout(() => func.apply(context, args), wait) 1829 } 1830 } 1831 1832 // Global methods / variables that can be accessed by element js 1833 window.luxuryPresence = { 1834 ...window.luxuryPresence, 1835 defaults: { 1836 companyId: '850552e9-2cd2-407f-a7ee-18f5819cdb5f', 1837 apiGatewayUrl: '/api-gw', 1838 routerUrl: '/api-nv', 1839 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\
1839n }\n propertiesCount(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n ) {\n count\n }\n }\n","pressReleases":"\n query PressReleases (\n $companyId: ID\n $pressReleaseIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $categories: [String!]\n $propertyId: [ID!]\n $developmentId: [ID!]\n $agentId: [ID!]\n $teamId: [ID!]\n $year: [Int!]\n ) {\n pressReleases (\n companyId: $companyId\n pressReleaseIds: $pressReleaseIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n year: $year\n ) {\n items {\n id\n title\n description\n author\n externalUrl\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n publishedAt\n categories\n }\n total\n }\n }\n","posts":"\n query Posts (\n $companyId: String\n $postId: [ID!]\n $slug: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $featured: Boolean\n $categoryId: [String!]\n $neighborhoodId: [String!]\n ) {\n posts (\n companyId: $companyId\n postId: $postId\n slug: $slug\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n categoryId: $categoryId\n neighborhoodId: $neighborhoodId\n ) {\n items {\n id\n postId\n title\n subtitle\n description\n status: postStatus\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n scheduledAt\n createdBy {\n ... on Agent {\n firstName\n lastName\n }\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n }\n total\n }\n }\n","testimonials":"\n query Testimonials (\n $companyId: String\n $agentId: ID\n $teamId: ID\n $testimonialIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n ) {\n testimonials (\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n testimonialIds: $testimonialIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ) {\n items {\n id\n testimonialId\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n agents {\n slug\n email\n firstName\n lastName\n avatar {\n smallUrl\n height\n width\n }\n }\n }\n total\n }\n }\n","neighborhoods":"\n query Neighborhoods (\n $neighborhoodId: ID\n $companyId: String\n $search: String\n $tag: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n neighborhoods (\n neighborhoodId: $neighborhoodId\n companyId: $companyId\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n ) {\n id\n name\n description\n descriptionShort\n slug\n tags\n googlePlaceData\n mlsLink\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n }\n neighborhoodsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n ) {\n count\n }\n }\n","developments":"\n query Developments (\n $developmentId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tag: [String!]\n $agentId: [ID!]\n $neighborhoodId: ID\n $neighborhoodIds: [ID!]\n ) {\n developments (\n developmentId: $developmentId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n id\n name\n description\n descriptionShort\n slug\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n googlePlaceData\n seoTitle\n seoDescription\n tags\n }\n developmentsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n count\n }\n }\n","pois":"\n query PointsOfInterest (\n $regionId: UUID!\n $radiu
1839s: 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"}, 1840 propertyPlaceholderImage: {"id":"7c4d6e14-07d2-4c35-b91e-e98f0037248e","alt":null,"bytes":43543,"width":1920,"format":"png","height":1200,"pngUrl":"","shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1d5e0997-7abf-4a18-9ca9-3259426a262c","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/1d5e0997-7abf-4a18-9ca9-3259426a262c","authorUrl":null,"createdAt":"2024-11-19T19:50:19.172Z","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/1d5e0997-7abf-4a18-9ca9-3259426a262c","sourceUrl":null,"updatedAt":"2024-11-19T19:50:19.172Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1d5e0997-7abf-4a18-9ca9-3259426a262c","__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/1d5e0997-7abf-4a18-9ca9-3259426a262c","description":null,"displayName":"property-logo-mm","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1d5e0997-7abf-4a18-9ca9-3259426a262c","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/1d5e0997-7abf-4a18-9ca9-3259426a262c","originalFileName":"Property logo MM","cloudinaryPublicId":"1d5e0997-7abf-4a18-9ca9-3259426a262c"} 1841 }, 1842 objectToQuerystring: objectToQuerystring, 1843 getPath: getPath, 1844 getMLSAutocomplete: getMLSAutocomplete, 1845 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 1846 makeMlsLink: makeMlsLink, 1847 debounce: debounce, 1848 }; 1849 1850 var wowOffset = 100; 1851 </script>
1851 1852
1852<script> 1853 (()=>{function e(e){return e&&e.__esModule?e.default:e}var t={},i={};i={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let i=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===i[1].toLowerCase().indexOf("video"))return null;let s=i[i.length-1];s.lastIndexOf(".")>-1?s=`${s.slice(0,s.lastIndexOf("."))}.jpg`:s+=".jpg",i[i.length-1]=s;let r=3;"videos"===i[1].toLowerCase()&&""!==i[2]&&(r=2);let a=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;r<i.length-1&&a.test(i[r]);)r++;return i.splice(r,0,"so_0,eo_0"),t+i.join("/")}},t=function(e,{isEqual:t}){let s=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],r=function(e,t,i){let s="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let r="number"==typeof i?i:0,a=Number.isInteger(e)?0:r,o={minimumFractionDigits:a,maximumFractionDigits:a};return"USD"===t?`$${e.toLocaleString(s,o)}`:"CAD"===t?`$${e.toLocaleString(s,o)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(s,o)}`:"GBP"===t?`\xa3${e.toLocaleString(s,o)}`:"PERCENT"===t?`${e}%`:"number"==typeof i&&i>-1?e.toLocaleString(s,{maximumFractionDigits:i}):e.toLocaleString(s)},a=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let i,s,r=t||{};switch(r.mode){case"short":i=o(e),s=r.frequencySeparator||"/";break;case"standard":case"std":i=n(e),s=r.frequencySeparator||"/";break;default:i=a(e),s=r.frequencySeparator||" "}return i?r.frequencyTag||r.frequencyClass?`${s}<${r.frequencyTag||"span"}${r.frequencyClass?` class="${r.frequencyClass}"`:""}>${i}</${r.frequencyTag||"span"}>`:s+i:""};return{isEmpty(e,t){let i=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?i?t.fn(this):t.inverse(this):i},ifEquals(e,i,s){return t(e,i)?s.fn(this):s.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/ /g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",striptagsLineBreaks:e=>e?(e=(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/(<br\s*\/?>)|(<\/p\s*>)(?=.*(<\/p\s*>|<br\s*\/?>))/g," ")).replace(/ /g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",truncate:(e,t,i)=>e?e.length>t?"string"==typeof i?e.slice(0,t-i.length)+i:e.slice(0,t):e:"",setSubArray(e=[],t,i,s,r){r.data.root[s]=e.slice(t,i)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:a,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,i,s){return e>=t&&e<i?s.fn(this):s.inverse(this)},formatPropertyStatus(e,t,i){let s="";switch(e){case"SOLD":s="Sold";break;case"FOR_SALE":s="For Sale";break;case"COMING_SOON":s="Coming Soon";break;case"INACTIVE":s="Inactive";break;case"POCKET_LISTING":s="Pocket Listing";break;case"PENDING":s="Pending";break;case"UNDER_CONTRACT":s="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":s="Active Under Contract";break;default:s=e}return("Sold"===s||"Leased"===s)&&t&&"string"==typeof i&&i&&(s+=` on ${i}`),s},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let i="current"===e?new Date:new Date(e);if(Number.isNaN(i.getTime()))return"";if("YYYY"===t||"year"===t)return`${i.getFullYear()}`;if("MM/DD/YY"===t){let e=i.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${i.getDate()}/${i.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][i.getMonth()]} ${i.getDate()}, ${i.getFullYear()}`},openHousesFormat(e,t,i){if(!e||!t)return"";let s=e=>{let t=e.getHours();t>12&&(t-=12);let i=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?i+="PM":i+="AM",i},r="",a=e,o=t;
1853i&&(a=new Date(e).toLocaleString("en-US",{timeZone:i}),o=new Date(t).toLocaleString("en-US",{timeZone:i}),[,,,r]=new Date(t).toLocaleString("en-US",{timeZone:i,timeZoneName:"short"}).split(" "));let n=new Date(a),l=n.toLocaleDateString("en-US"),d=s(n),c=s(new Date(o));return`${l} ${d} - ${c} ${r}`},math:(e,t,i)=>(e=parseFloat(e),({"+":e+(i=parseFloat(i)),"-":e-i,"*":e*i,"/":e/i,"%":e%i})[t]),findByKey(e,t,i,s){let r=(e||[]).find(e=>e[t]===i);return s.fn(r)},capitalize(e,t,i){let s;return"string"==typeof e&&e.length&&(s=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),s},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,i,s){let r="",a=null;s.data&&(a=e.createFrame(s.data));let o=(i||[]).filter(Boolean);if(o&&o.length){let e=0;r=o.reduce((i,r,o)=>{let n=(t||[]).find(e=>e.id===r);return n?(a&&(a.index=o-e),i+s.fn(n,{data:a})):(e+=1,i)},"")}else for(let e=0,i=(t||[]).length;e<i;e++)a&&(a.index=e),r+=s.fn(t[e],{data:a});return r},ifIn(e,t,i){return t&&t.indexOf(e)>-1?i.fn(this):i.inverse(this)},partial:(t,i)=>(e.registerPartial(t,e.compile(i.fn())),`
1853<script type="text/x-handlebars-template" class="${t} pagination-script">${i.fn()}<\/script>`),numCompare(e,t,i,s){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[i](e,t)?!s.fn||s.fn(this):!!s.fn&&s.inverse(this)},lpFormatNumber:r,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,i)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,i,s){let r=null,a=0,o=new Set;return s.data&&(r=e.createFrame(s.data)),(t||[]).reduce((e,t,n)=>{let l=i?t[i]:t;return!o.has(l)||i&&void 0===l?(o.add(l),r&&(r.index=n-a),e+s.fn(t,{data:r})):(a+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let i=t[t.length-1].hash,s=t.length>1?t[0]:i.property,a=i.precision||0;t.length>2&&(i.mode=t[1]),i.mode||(i.mode="short");let o=t.length>3?t[2]:i.separator;if("string"!=typeof o&&(o=" | "),s.isPasswordProtected)return"Exclusive Listing";let n=t.length>4?t[3]:i.priceUponRequestText;if("string"!=typeof n&&(n="Price Upon Request"),s.priceUponRequest)return n;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(i.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${i.reducedTag||"span"} class="${i.reducedClass}">${r(c,s.currency,a)}</${i.reducedTag||"span"}>`),d&&(d=r(d,s.currency,a),i.priceTag||i.priceClass?u+=`<${i.priceTag||"span"}${i.priceClass?` class="${i.priceClass}"`:""}>${d}</${i.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&r(s.leasePrice,s.currency,a);if(h){u&&(u+=o);let e=`${h}${l(s.leasePeriod,i)}`;i.leaseTag||i.leaseClass?u+=`<${i.leaseTag||"span"}${i.leaseClass?` class="${i.leaseClass}"`:""}>${e}</${i.leaseTag||"span"}>`:u+=e}
1853return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:r,...a}=i.hash,o="",n="";if("string"==typeof t)o=t;else{let e={},{height:r,width:l,altTagText:d}=t;s.forEach(i=>{t[i.field]&&!e[t[i.field]]&&(e[t[i.field]]=i.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(a.alt=d),r&&l&&(r>=l&&(a.class?a.class+=" portrait":a.class="portrait"),"setDims"in i.hash&&(a.width=l,a.height=r)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(n=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,i)=>Math.abs(e[t]-1280)-Math.abs(e[i]-1280))),o=c[0]}delete a.setDims,n||delete a.sizes,"alt"in a||(a.alt=""),!("loading"in a)&&(i?.data?.root?.sectionIndex>1||r)&&(a.loading="lazy");let l=Object.keys(a).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(a[t])}"`).join(" ");return new e.SafeString(`<img src="${o}"${n?` srcset="${n}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let i in e)null!==e[i]&&void 0!==e[i]&&"object"!=typeof e[i]&&(t+=e[i]);return t},setVideoExtension(e,t){if(!e||!t)return"";let i=new URL(e);if("res.cloudinary.com"!==i.host)return i.pathname.endsWith(`.${t}`)?e:"";let s=i.pathname.lastIndexOf("."),r=i.pathname;return -1!==s&&(r=i.pathname.substr(0,s)),i.pathname=`${r}.${t}`,i.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let i=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${i}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:i.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let i=+t?.hash?.maxChars||2,s=e.match(/\b\w/g)?.slice(0,i);return s?(t?.hash?.addText&&(s=s.map(e=>e+t.hash.addText)),s.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class s{constructor(e,t,i){if(this.config=e,this.window=t,this.document=i,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let r="lp_lead_form_conversion_fired";function a(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(r)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(r,"true")}catch{}}catch{}}function o(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let n="/api/v1/home-valuation";class l extends s{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let i=t.indexOf(", call time frame:");return -1!==i&&(t=t.substring(0,i).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,i={},s=t("street_number"),r=t("route"),a=t("administrative_area_level_1"),o=t("postal_code"),n=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return s&&(i.streetNumber=s),r&&(i.streetName=r),l&&(i.city=l),a&&(i.state=a),o&&(i.zipcode=o),n&&(i.addressLine2=n),i}_extractAddressAndCoordinates(e){let t=null,i=null;if(e?.result){let{result:s}=e;s.address?.addressComponents&&(t=this._transformAddressComponents(s.address.addressComponents)),s.geocode?.location&&(i={latitude:s.geocode.location.latitude,longitude:s.geocode.location.longitude})}return{structuredAddress:t,coordinates:i}}_filterEmptyStrings(e){let t={};for(let[i,s]of Object.entries(e))""!==s&&null!=s&&(t[i]=s);return t}_getRawAddress(e){let t=e.activity.content||{},i=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,i,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,i=null){let s={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(i&&(s.errorMessage=i.userMessage||(i.status?`Request failed with status ${i.status}`:"An error occurred"),s.errorName=i.name,s.errorStatus=i.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(s)),this.window.posthog)try{this.window.posthog.capture(e,s)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
1853ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,i,s){let r=this._formatStructuredAddress(i)||this._getRawAddress(e);if(!r)throw Error("Unable to extract home valuation address from form data");let a={companyId:e.companyId,homeValuationAddress:r,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},o={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
1853ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},n=this._filterEmptyStrings(o);return{...a,...n,...i&&{address:i},...s&&{coordinates:s}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let i=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(i,e),i.status=t,i}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,i){let s=new AbortController,r=setTimeout(()=>s.abort(),1e4);try{let a=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:s.signal});clearTimeout(r);let n=await a.text(),l=this._parseResponsePayload(n);if(!a.ok)throw this._createResponseError(l,a.status);if(l&&"success"===l.status&&l.redirectUrl){if(o(i))return l;if(!this._isSafeRedirectUrl(l.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),l;return this.window.location.href=l.redirectUrl,{redirected:!0,url:l.redirectUrl}}return l}catch(e){throw clearTimeout(r),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let i=this._getRawAddress(e),s=null;try{s=await this._validateAddressSafely(i)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let r=null;try{r=await this._getHomeValuationEstimateSafely(s)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),r=null}let{structuredAddress:a,coordinates:o}=this._extractAddressAndCoordinates(s),l=`${t}${n}`,d=this._buildHomeValuationData(e,r,a,o),c=await this._submitLead(l,d,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),c}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:i}=this,s=t.googleMapsAPIKey;if(!s&&i.luxuryPresence?.mapApiLoader&&(s=await i.luxuryPresence.mapApiLoader.getMapApiKey()),!s)throw Error("Google Maps API key not configured");let r=new AbortController,a=setTimeout(()=>r.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:r.signal});if(clearTimeout(a),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(a),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${n}`;if(!e?.result?.address?.addressComponents)return null;let i=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(i))return this._logMissingAddressFields(i),null;let s=this._buildAddressQueryString(i),r=`${t}?${s}`,a=new AbortController,o=setTimeout(()=>a.abort(),1e4);try{let e=await fetch(r,{headers:{Accept:"application/json"},signal:a.signal});if(clearTimeout(o),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(o),e}}}let d="middleName",c="redirect-pending",u=["name","firstName","lastName",d,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],h="lp_map_key_failed",p="oauthSuccess",m={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;
1853]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function y(e,t){t.forEach(t=>{let i=e[t];Array.isArray(i)&&0===i.length&&delete e[t]})}function f(e,t,i,s){let r=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),a=s?.merge?r.flat():r.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),a.length>0&&(e[i]=[...new Set(a)])}function v(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let i=[...e.socialLinks].sort((e,t)=>{let i=e.type?.toLowerCase()||"",s=t.type?.toLowerCase()||"";return i.localeCompare(s)});t.socialLinks=i;let s={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};i.forEach(e=>{let i=s[e.type?.toLowerCase()??""];i&&(t[i]=e.link)})}return t}function w(e){return e&&Array.isArray(e)?e.map(e=>v(e)):e}function b(e){let{region:t}=e;if(!g(t))return e;let{schools:i,pois:s,...r}=t,a={...r,schools:g(i)?i.data??[]:[],...Array.isArray(s)?{pois:s.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:a}}function S(e){return e&&Array.isArray(e)?e.map(e=>b(e)):e}function _(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let i=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:i}}function E(e){return e&&Array.isArray(e)?e.map(e=>_(e)):e}function I(e,t){return g(e)?t(e):e}function A(e,t){return Array.isArray(e)?t(e):e}var L={};L=` 1854 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 1855 propertyDisclaimers(input: $input) { 1856 feedId 1857 listingId 1858 resolvedFromListing 1859 listingCardAttribution 1860 listingDetailCourtesy 1861 listingDetailFooter 1862 logo 1863 } 1864 } 1865`;let $={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"},x=new class{constructor(e){this.isBuilder=!1,this.companyId=null,this.websiteId=null,this.pageId=null,this.shareId=null,this.pageMeta=null,this.websiteApiGatewayUrl=null,this.buyerSellerServiceUrl=null,this.leadIngesterUrl=null,this.divolteServiceUrl=null,this.eventBus=null,this.templateId=null,this.myhomeDashboardEnabled=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setEventBus({enabled:e,apiKey:t,url:i}){this.eventBus={enabled:e,apiKey:t,url:i}}}({}),T=new class extends s{constructor(e,t,i){super(e,t,i),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:i}=this;this.pageId=t.pageId,this.modals=i.querySelectorAll("body > #modals >
1865 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,i=new Date().getTime()+864e5,s=`modal-controller-${e}`;try{t.localStorage.setItem(s,JSON.stringify(i))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,i=t.localStorage,s=i.getItem(`modal-controller-${e}`);if(!s)return!1;let r=JSON.parse(s);return!(new Date().getTime()>r)||(i.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:i}=this,s=this.getModalWithExpiry(e);(e&&!s||!0===t.forced)&&(i.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:i,pageSpecific:s}=e;(!s||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===i?this._exitModalHandler(e):"TIMER"===i?this._timerModalHandler(e):"FORCED"===i&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:i,exitModalTriggered:s}=this,{modalId:r}=e;function a(e){!s[r]&&(e.toElement||e.relatedTarget||(t.show(r),s[r]=!0))}i.addEventListener("mouseout",a),this.exitModalEventListeners.push(a)}_timerModalHandler(e){let{modalId:t,timerDelay:i}=e;setTimeout(()=>{this.show(t)},i)}_forcedModalHandler(e){let{modalId:t}=e,{window:i,document:s}=this;if("true"!==i.localStorage.getItem("isSignedUp")){let e=s.querySelector(`#modal-${t}`),r=e?.querySelector("form"),a=r?.dataset.delay||2e3;r.addEventListener("formsubmitted",()=>{this.setLoginState()}),i.addEventListener("oauthSuccess",()=>{this.setLoginState(),r.classList.add("success"),setTimeout(()=>{i.lpUI.hideModal(`modal-${t}`),r.reset(),r.classList.remove("success")},a)}),this.show(t,{forced:!0})}}}(x,window,document),C=new class extends s{constructor(e,t,i){super(e,t,i),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:i}=this,s=e.target.closest("button, a");if(!s)return;let r=s.dataset.type||"",a=s.href||s.dataset.href||"",o=s.target||"",{submit:n}=s.dataset;if(n){try{await this._handleSubmit(s)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(a,"_blank"===o)}if(this._trackConversion(s),"VIDEO"===r)return void this._handleVideoButton(s);if("CONTACT_US"===r)return void this._handleContactUsButton(s);if("SUBSCRIBE"===r)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===r)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===r){let t=s.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===r.substring(0,6)){let e=r.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(a?.startsWith("mailto:")){let e=a.substring(7);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(a?.startsWith("tel:")){let e=a.substring(4);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:i}=this;return t?await i.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,i,s]=t,r=`https://player.vimeo.com/video/${i}?`;return s&&(r+=`h=${s}&`),r+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,i=e.closest("section"),{src:s}=e.dataset,r="";if(s&&(s.includes("youtube.com")||s.includes("youtu.be"))&&!s.includes("youtube.com/embed")){let e=s.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
1865)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(r=e[1])}let a=this._getVimeoSrc(s);if(r?s=`https://youtube.com/embed/${r}?autoplay=1&controls=0`:a&&(s=a),!s||!i)return;let o=s.endsWith(".mp4")||s.endsWith(".webm")||s.includes("cloudinary.com"),n=` 1866 <div id="modal-${i.id}" class="modal visible"> 1867 <div class="modal-content"> 1868 <div class="lightbox-video"> 1869 <div class="video-player"> 1870 <div class="embed-container"> 1871 ${o?`<video controls autoplay src="${s}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${s}"></iframe>`} 1872 </div> 1873 </div> 1874 </div> 1875 </div> 1876 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 1877 </div> 1878 `;t.body.insertAdjacentHTML("beforeend",n);let l=t.getElementById(`modal-${i.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:i}=this;i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:i}=this,{gtagConversionId:s,gtagConversionLabel:r,fbEventName:a}=e.dataset;if(s&&r){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===s)||i.sendGoogleTagManagerEvent("config",s));let e=`${s}/${r}`;i.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&a&&t.fbq("track",a,{})}}(x,window,document),k=new class extends s{constructor(e,t,i){super(e,t,i),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:i}=this,{selector:s}=e,r=[];if(r=s?i.querySelectorAll(`${s} form[data-type="contact-form"]`):i.querySelectorAll('form[data-type="contact-form"]'),i.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:i}=t.luxuryPresence.libs,{libphonenumber:s}=i;e(s.jsSrc,this.attachValidation.bind(this,r))}else this.attachValidation(r);this.validatedForms=this.validatedForms.concat(r)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let i=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;i(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(x,window,document),M=new class extends s{constructor(e,t,i){super(e,t,i),this.forms=[],this.homeValuationService=new l(e,t,i)}initialize(e={}){try{let{document:t}=this,{selector:i}=e,s=[];(s=i?t.querySelectorAll(`${i} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(s)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),i={},s=[],r=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let a=e.trim();r.test(t)&&a&&s.push(a);let o=i[t];i[t]=o?`${o} ${a}`:a}else i[t]=e}),s.length?i.name=s.join(" ").trim():!i.name&&i.firstName&&(i.name=i.firstName,i.lastName&&(i.name+=` ${i.lastName}`)),this._deriveNameParts(i)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,i){let{window:s,config:r}=this,a=Object.keys(e).filter(e=>!u.includes(e)).reduce((t,i)=>(t[i]=e[i],t),{}),{pageId:o,companyId:n,websiteId:l,pageMeta:d}=r,c=s.localStorage.getItem("utm_vars")||"{}",h=s.localStorage.getItem("referrer")||"",p=this._getFormId(i);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:s.location.href,content:{...a,...JSON.parse(c)}},page:{pageId:o,companyId:n,websiteId:l,pageMeta:{...d,formId:p}},companyId:n,referrer:h,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,i=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
1878=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},i)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let i=this._getFields(t),s=this._buildSubmissionData(e,i,t);a(this.window,this.document);let r=await this._waitForLeadSubmit(e=>this._submitLeadRequest(s,e));if(this._sendGAEvent(s),r?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,i={expired:!1,expiresAt:Date.now()+6e3},s=new Promise(e=>{t=setTimeout(()=>{i.expired=!0,e(null)},6e3)}),r=e(i).catch(e=>{if(o(i))return null;throw e});try{return await Promise.race([r,s])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(c),e.querySelector(`.${c}__indicator`))return;let t=this.document.createElement("div");t.className=`${c}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:i}=this.config;if(!t||!i)return void console.warn("[EventBus] Missing required data for user alias");let s=this.window.eventBusProvider.getDistinctId();if(!s)return void console.warn("[EventBus] No anonymous ID available for alias");let r=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(i,t);this.window.eventBusProvider.alias({anonId:s,canonicalId:r}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:i}=this;return(this._aliasUserWithEventBus(e),i.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${i.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,i={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":i.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":i.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":i.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":i.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:i={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(i)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),i={};return t.forEach(t=>{let{id:s,name:r,type:a}=t;if(r===d)return!0;let o="";if(s){let i=e.querySelector(`label[for='${s}']`);i?o=i.textContent.trim():t.placeholder&&(o=t.placeholder.trim())}i[r]={label:o,type:t.tagName,inputType:"INPUT"===t.tagName?a:"text"}}),i}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let i=e.querySelector(".submission-error-message");i||((i=this.document.createElement("div")).className="submission-error-message",i.setAttribute("role","alert"),e.appendChild(i)),i.textContent=t||"Something went wrong. Please try again.",i.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(x,window,document),P=new class extends s{constructor(e,t,i){super(e,t,i),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let i=1;i<=3;i+=1){let s=e&&!t;try{let e=await fetch(this._getMapKeyUrl(i,s));if(t=t||s,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let r=await e.text();if(!r)return"";return this.apiKey=r,this.apiKey}catch(e){console.error(e),i<3&&await this._delay(300*2**(i-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let i=[];e>1&&i.push(`attempt=${e}`),t&&i.push("recovered_after_failure=1");let s=i.length?`?${i.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${s}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(h)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(h,"1"):this.window.sessionStorage.removeItem(h)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
1878let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(i=>{i?t(i):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let i=Math.min(1024/e,1024/t);return{width:parseInt(e*i),height:parseInt(t*i)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let i=t.visibility?`visibility:${t.visibility}`:"",s=t.color?`color:${t.color.replace("#","0x")}`:"",r=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${i}${s}${r}`},""),i=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${i}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:i}=await t.json();return i}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,i,s,r,a){let{width:o,height:n}=this.resizeStaticMapDimensions(r,a),l={center:`${e},${t}`,zoom:i,scale:2,size:`${o}x${n}`,key:this.apiKey};s&&(l.style=this.convertThemeToStaticApiUrl(s));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:i,...s}){let{width:r,height:a}=this.resizeStaticMapDimensions(e,t),o={...s,size:`${r}x${a}`};i&&(o.style=this.convertThemeToStaticApiUrl(i));let n=new URLSearchParams;Object.entries(o).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,t.toString())):n.append(e,t.toString())});let l=n.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(x,window,document),U=new class extends s{destroy(){}updateQueryString(e,t,i){i||(i=this.window.location.href);let s=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),r="";null!=t&&(Array.isArray(t)?t.length&&(r=this.serializeArray(e,t)):"object"==typeof t?(s=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),r=this.serializeObj(t,"",e)):r=`${e}=${encodeURIComponent(t)}`);let a=i.split("#"),o=a[0];if(s.test(i)){let e=o;for(r=r?`$1${r}$2`:"$1";s.test(e);)o=e.replace(s,r),e=e.replace(s,"$1");o=o.replace(/(&|\?)$/,"")}else if(r){let e=-1!==o.indexOf("?")?"&":"?";o+=`${e}${r}`}return void 0!==a[1]&&null!==a[1]&&(o+=`#${a[1]}`),o}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let i=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat();if(!s.length){let i=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat(),this._parseParamToObject(s,"advancedFilters"===e)}return s.length>3?s.reduce((e,t,i)=>((i+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):s[2]?decode
1878URIComponent(s[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let i={},s=this.makePageKey(t),r=this.getParameterByName(s);return r&&(i.page=parseInt(r)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),r=this.getParameterByName(t);if("int"===e.type)isFinite(r=parseInt(r))||(r=null);else if("bool"===e.type||"boolean"===e.type)r="true"===r||"false"!==r&&null;else if("json"===e.type)try{r=JSON.parse(r)}catch(e){}i[e.formKey||e.param]=r}),i}serializeParams(e,t,i){let s=this.window.location.href,r=this.makePageKey(t);return s=this.updateQueryString(r,i.page,s),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,r),a=i[e.formKey||e.param];"json"===e.type&&null!=a&&(a=JSON.stringify(a)),s=this.updateQueryString(t,a,s)}),s}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",i=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${i}K`:`${this.formatSliderAtom(e/1e6,t)}${i}M`}formatSliderPriceRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e,i," ")}`:t.max===e?`${this.formatSliderValue(e,i," ")}${s.highSuffix}`:`${this.formatSliderValue(e,i," ")}`}formatSliderAreaRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e)} ${i}`:t.max===e?`${this.formatSliderValue(e)}${s.highSuffix} ${i}`:`${this.formatSliderValue(e)} ${i}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:i,areaSliderElement:s,neighborhoodSelect:r}=e,a={};if(t&&(a.search=t.value||null),i){let e=i.value.split(";"),t=parseInt(i.dataset.min),s=parseInt(i.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.priceMin=r!==t?r:null,a.priceMax=o!==s?o:null}if(s){let e=s.value.split(";"),t=parseInt(s.dataset.min),i=parseInt(s.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.areaMin=r!==t?r:null,a.areaMax=o!==i?o:null}return r&&(a.neighborhoodId=r.value||null),a}serializeObj(e,t="",i=""){let s=[];for(let r in e)if(e.hasOwnProperty(r)){let a,o=e[r];if(i){let e=t?`[${t}][${r}]`:`[${r}]`;a=`${i}${e}`}else a=t?`${t}[${r}]`:r;null!==o&&Array.isArray(o)?o.length&&s.push(this.serializeArray(a,o)):null!==o&&"object"==typeof o?s.push(this.serializeObj(o,a)):s.push(`${a}=${encodeURIComponent(o)}`)}return s.join("&")}serializeArray(e,t,i=""){let s=[];return t.forEach(t=>{let r=i?`${i}${e}`:e;s.push(`${r}=${encodeURIComponent(t)}`)}),s.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let i={};for(let s=0;s<e.length;s++)if((s+1)%3==0){let r=decodeURIComponent(e[s].replace(/\+/g," ")),a=e[s-1];Object.assign(i,this._setObjectPath(a,r,i,t))}return i}_setObjectPath(e,t,i,s=!1){let r=e.split(/[\[\]]/).filter(Boolean),a=["in","nin","btw","ciin","cinin"],o={},n=o,l=((e,t,i)=>{if(!t)return;let s=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===s?i:s})(i,r.join("."));return r.forEach((e,o)=>{o===r.length-1?l?n[e]=Array.isArray(l)?[...l,t]:[l,t]:n[e]=s&&a.includes(e)?[t]:t:(n[e]=i[e]?i[e]:{},n=n[e])}),o}}(x,window,document),N=new class extends s{constructor(e,t,i){super(e,t,i),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,i=e.closest("section[id]"),s=e.dataset.append,r=i.querySelector(".lp-expand-btn");if(!r)if((r=t.createElement("button")).className="lp-expand-btn",r.setAttribute("aria-label","Open a lightbox"),r.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',s){let e=i.querySelector(s);e&&e.appendChild(r)}else{let i=t.createElement("div");i.className="lp-expand-btn-wrapper",i.style.position="relative",i.appendChild(r),e.parentNode.insertBefore(i,e.nextSibling)}r.addEventListener("click",()=>{this._createLightbox({slider:e,section:i})})}_createLightbox({slider:e,section:t,initialIndex:i}){let{window:s,document:r}=this,a=`lightbox-for-${t?.id}`,o=s.$&&s.$.fn.slick,n=o&&e.slick,l="function"==typeof s.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=r.createElement("div");t.id=a,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=` 1879 <button class="lp-lightbox__close" aria-label="close modal"></button> 1880 <div class="lp-lightbox__content"> 1881 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 1882 <div class="splide__arrows"> 1883 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 1884 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 1885 </div> 1886 <div class="splide__track"> 1887 <ul class="splide__list"></ul> 1888 </div> 1889 </div> 1890 </div> 1891 `,"function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",r.body.appendChild(t);let o=t.querySelector(".lp-lightbox__carousel"),n=o.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
1891h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("li");i.className="lp-lightbox__slide splide__slide",i.appendChild(t),n.appendChild(i)});let l=new s.Splide(o,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==i&&i>=0&&l.go(i),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let i=t.querySelector(".splide__arrow--prev"),s=t.querySelector(".splide__arrow--next"),r=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&i?(e.preventDefault(),i.click()):"ArrowRight"===e.key&&s?(e.preventDefault(),s.click()):"Escape"===e.key&&r&&(e.preventDefault(),r.click())};r.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",t.remove()})}if("function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",o&&!d){let t,i,o,l,d;i={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(o=r.createElement("div")).id=a,o.className="lp-lightbox",o.setAttribute("tabindex","-1"),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.innerHTML=` 1892 <button class="lp-lightbox__close" aria-label="close modal"></button> 1893 <div class="lp-lightbox__content"> 1894 <div class="lp-lightbox__carousel"></div> 1895 </div> 1896 `,r.body.appendChild(o),l=o.querySelector(".lp-lightbox__carousel"),o.classList.add("show"),n?(t=e.slick.$slides.find("img"),i.initialSlide=e.slick?.currentSlide||0,t.each(function(){s.$(".lp-lightbox__carousel").append(s.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("div");i.className="lp-lightbox__slide",i.appendChild(t),l.appendChild(i)}),s.$(l).slick(i),setTimeout(()=>{o.focus()},100),d=e=>{if(!o.classList.contains("show"))return;let t=o.querySelector(".lp-lightbox-arrow--prev"),i=o.querySelector(".lp-lightbox-arrow--next"),s=o.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())},r.addEventListener("keydown",d),o.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",d),o.classList.remove("show");let t=l?.slick?s.$(l).slick("slickCurrentSlide"):0;l?.slick&&s.$(l).slick("unslick"),n&&s.$(e).slick("slickGoTo",t),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",o.remove()})}else l?c():(s.luxuryPresence.libs.loadCss(s.luxuryPresence.libs.jsLibsMap.splide.cssSrc),s.luxuryPresence.libs.loadJs(s.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),s.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(x,window,document),R=new class extends s{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n}=this.config;this.window.divolte.signal(e,Object.assign({companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(x,window,document),B=new class extends s{constructor(e,t,i){super(e,t,i)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
1896)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:i}=this.config;try{this.window.eventBusProvider.capture(e,{company:i,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(x,window,document),D=new class extends s{constructor(e,t,i){super(e,t,i),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(p,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:i}=this.config,{data:s,origin:r}=e,{type:a,height:o,event:n,source:l,token:d}=s;if(a===t||"hide_intermediate_iframe"===a){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=o,e.style.display=a===t?"unset":"none")}r===i&&"GOOGLE_SIGN_ON"===l&&("success"===n?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===n&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let i=this.document.createElement("iframe");i.src=this._buildUrlAndCopyAttributes(t,i,e),i.dataset.isSocialOauthButton=!0,t.replaceWith(i)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(p);this.window.dispatchEvent(e),a(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,i){let{buyerSellerServiceUrl:s,companyId:r,websiteId:a,pageId:o,pageMeta:n}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${s}/buttons/${i}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",r),c.searchParams.append("websiteId",a),c.searchParams.append("pageId",o),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(n)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
1896return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=4-t.length%4,s=4===i?t:t+"=".repeat(i);return JSON.parse(atob(s))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(x,window,document),O=new class extends s{constructor(e,t,i){super(e,t,i),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:i})=>{e&&e.removeEventListener&&e.removeEventListener(t,i)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector('input[name="email"]');i&&"string"==typeof e&&(i.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector(`#${this.modalId}-triggerSource`);i&&"string"==typeof e&&(i.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,i){let s="";if(i){let e=new Date;e.setTime(e.getTime()+864e5*i),s=`; expires=${e.toUTCString()}`}let r="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(r+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${s}${r}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let i=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",i),this.eventListeners.push({element:t,event:"formsubmitted",handler:i})}let i=e.querySelector('[data-dismiss="modal"]');if(i){let t=()=>{e.style.display="none",this.restoreBodyScroll()};i.addEventListener("click",t),this.eventListeners.push({element:i,event:"click",handler:t})}let s=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",s),this.eventListeners.push({element:e,event:"click",handler:s})}}(x,window,document),q=new class extends s{constructor(e,t,i){super(e,t,i),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let i=` 1897 query { 1898 validSession { 1899 success 1900 } 1901 } 1902 `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:i})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let s=t.data?.validSession?.success===!0;return this.lastValidationResult=s,this.lastValidationTime=Date.now(),s}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(x,window,document),V=new class extends s{constructor(e,t,i){super(e,t,i),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=m[e.provider];if(!t)return;this.eventName=t.eventName;let i=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||i)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(x,window,document),F=new class extends s{destroy(){}transformVariables(e,t){let i;return y(i={...t},["testimonialId"]),f(i,["testimonialId"],"testimonialIds"),0===i.limit&&delete i.limit,(void 0===i.limit||null===i.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(i.limit=50),("agents"===e||"agentsCount"===e||"developments"===e||"developmentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(i.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(i),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":y(e,["testimonialIds"]);break;case"agents":case"agentsCount":y(e,["officeId","teamId","developmentId","agentIds","tags"]),f(e,["officeId"],"officeIds"),f(e,["teamId"],"teamIds"),f(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":y(e,["neighborhoodIds","neighborhoodId"]),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":y(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds");break;case"properties":case"propertiesCount":y(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
1902spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>f(e,[t],t)),f(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),f(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),f(e,["networkId"],"networkId"),f(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":y(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":y(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":y(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),f(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":y(e,["officeId","officeIds","tags"]),f(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":y(e,["teamId","teamIds"]),f(e,["teamId"],"teamIds");break;case"pois":y(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(i,e),i}transformResponse(e,t){return"agent"===e?I(t,v):"agents"===e||"agentsCount"===e?A(t,w):"neighborhood"===e?I(t,b):"neighborhoods"===e||"neighborhoodsCount"===e?A(t,S):"development"===e?I(t,_):"developments"===e||"developmentsCount"===e?A(t,E):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,i){if(!Array.isArray(t)||!t.length||!i||!i.length)return Promise.resolve(t);let s=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),r=e=>{let s={};return(e||[]).forEach(e=>{s[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&s[`${e.vendorId}:${e.mlsId}`],r={};return i.forEach(e=>{let i=t?t[$[e]]:void 0;r[e]=i??null}),{...e,...r}})};if(!s.length)return Promise.resolve(r([]));let{websiteId:a}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(L),variables:{input:{websiteId:"string"==typeof a?a:void 0,properties:s}}}).then(e=>r(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),r([]))):Promise.resolve(r([]))}}(x,window,document);function j(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}j("config",x),j("modals",T),j("buttons",C),j("validation",k),j("contactForms",M),j("mapApiLoader",P),j("pagination",U),j("expandSliders",N),j("divolte",R),j("eventBus",B),j("oauth",D),j("qualifyingQuestionsModal",O),j("session",q),j("consent",V),j("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),j("routerApi",F),window.luxuryPresence.formatSliderPriceRange=U.formatSliderPriceRange.bind(U),window.luxuryPresence.formatSliderAreaRange=U.formatSliderAreaRange.bind(U),window.luxuryPresence.getSearchFormValues=U.getSearchFormValues.bind(U),window.luxuryPresence.handlebarsHelpersFactory=function(i){return e(t)(i,{isEqual:(e,t)=>e==t})}})(); 1903//# sourceMappingURL=lp-sdk.js.map 1904 1905 </script>
1905 1906 1907
1907<script> 1908 var lpGlobalInitialized = false; 1909 1910 function lpGlobalInit () { 1911 if (lpGlobalInitialized) { 1912 return; 1913 } 1914 lpGlobalInitialized = true; 1915 // Initialize wow animation plugin only according to turbolinks 1916 var wow; 1917 if (window.WOW) { 1918 wow = new WOW({ 1919 animateClass: 'animated', 1920 offset: wowOffset, 1921 live: false, 1922 callback: function(box) {} 1923 }); 1924 } 1925 // Initialize handlebar helpers only once 1926 function handlebarsInit() { 1927 if (!window.Handlebars) { 1928 return; 1929 } 1930 HandlebarsIntl.registerWith(Handlebars); 1931 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 1932 } 1933 1934 handlebarsInit(); 1935 1936 var modalContentUrl = "/modals.html"; 1937 const modalsContainer = document.getElementById('modals'); 1938 if (modalsContainer) { 1939 fetch(modalContentUrl).then(function(res) { 1940 if (!res.ok) { 1941 throw new Error(`HTTP error! Status: ${res.status}`); 1942 } 1943 return res.text(); 1944 }).then(function(resultText) { 1945 modalsContainer.innerHTML = resultText; 1946 1947 // now we need to execute all script elements 1948 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 1949 const script = document.createElement("script"); 1950 script.text = s.innerHTML; 1951 Array.from(s.attributes).forEach(function (a) { 1952 script.setAttribute(a.name, a.value); 1953 }) 1954 s.parentNode.replaceChild(script, s); 1955 }); 1956 1957 try { 1958 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 1959 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 1960 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 1961 window.luxuryPresence.oauth.initialize({ 1962 googleSignOnEnabled: true, 1963 iframe: false }); 1964 } catch (e) { 1965 console.log(e); 1966 } 1967 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 1968 closeModalBtn.addEventListener('click', function() { 1969 window.lpUI.hideClosestModal(closeModalBtn); 1970 }); 1971 }); 1972 }).catch((e) => console.log(e)); 1973 } 1974 /* Initialize Luxury Presence SDK */ 1975 try { 1976 window.luxuryPresence.config.setCompany("850552e9-2cd2-407f-a7ee-18f5819cdb5f", {}); 1977 window.luxuryPresence.config.setWebsite("5c8ab3ef-2f1d-45fe-9125-fcc3c56486bf", { 1978 myhomeDashboardEnabled: true, 1979 mlsEnabled: false, 1980 hstValuationRedirectEnabled: true, 1981 hvStepTwoCaptureEnabled: false 1982 }); 1983 const url = new URL(window.location.href); 1984 const shareId = url.searchParams.get('shareId'); 1985 window.luxuryPresence.config.setPage("fb7d1b7d-f61c-4fb1-90be-1833b9fed64b", { 1986 sourceResource: "", 1987 pageElementId: "", 1988 pageQueryVariables: {}, 1989 shareId: "", 1990 }); 1991 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 1992 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 1993 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 1994 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 1995 window.luxuryPresence.config.setEventBus({ 1996 enabled: true, 1997 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 1998 url: "https://p.luxurypresence.com", 1999 }); 2000 window.luxuryPresence.config.setTemplateId("0c2b9641-6f2a-40f2-a2e0-dabc022eb278", {}); 2001 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 2002 window.luxuryPresence.buttons.initialize({}); 2003 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 2004 window.luxuryPresence.contactForms.initialize({}); 2005 window.luxuryPresence.validation.initialize({}); 2006 window.luxuryPresence.expandSliders.initialize({}); 2007 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 2008 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 2009 } catch (e) { 2010 console.log(e); 2011 } 2012 2013 /* Inject Section Specific Javascript */ 2014 try { 2015(function init(sectionDomId) { 2016 const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content'); 2017 if (disclaimerLabel) { 2018 const input = disclaimerLabel.querySelector('input'); 2019 if (input) { 2020 input.setAttribute('id', `${sectionDomId}-termsAccepted`); 2021 input.value = 'true'; 2022 const label = document.createElement('label'); 2023 label.setAttribute('for', `${sectionDomId}-termsAccepted`); 2024 label.classList.add('lp-visually-hidden'); 2025 label.textContent = 'Opt in/Disclaimer Consent:'; 2026 disclaimerLabel.prepend(label); 2027 } 2028 } 2029 function setHttp(link) { 2030 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2031 link = 'https://' + link; 2032 } 2033 return link; 2034 } 2035 const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link'); 2036 socialLinks.forEach(linkElement => { 2037 const href = linkElement.getAttribute('href'); 2038 if (href) { 2039 linkElement.setAttribute('href', setHttp(href)); 2040 } 2041 }); 2042 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 2043 if (redirectLink.length) { 2044 const rawHref = setHttp(redirectLink.attr('href')); 2045 let formEvent; 2046 if (rawHref) { 2047 formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset'; 2048 $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () { 2049 redirectLink.attr('href', rawHref); 2050 redirectLink[0].click(); 2051 }); 2052 } 2053 } 2054})('modal-global-contact-us'); 2055} catch(e) { 2056console.log(e); 2057} 2058 2059 try { 2060(function init(sectionDomId) { 2061 const $section = $('#' + sectionDomId); 2062 const $hamburger = $section.find('.hamburger-component'); 2063 function onSideMenuShow() { 2064 if (!$hamburger.hasClass('active')) { 2065 $hamburger.addClass('active'); 2066 } 2067 } 2068 function onSideMenuHide() { 2069 $hamburger.removeClass('active'); 2070 } 2071 const $window = $(window); 2072 $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow); 2073 $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide); 2074 const $subContainers = $section.find('.navigation__item.sub-nav-container'); 2075 $subContainers.hover(function () { 2076 $(this).find('.sub-nav').addClass('visible'); 2077 }, function () { 2078 $(this).find('.sub-nav').removeClass('visible'); 2079 }); 2080 $window.on('click.lpui-auto-clean', function () { 2081 $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown'); 2082 }); 2083 let fixedWidth = 0; 2084 const rightPad = 20; 2085 function fixSubsPosition() { 2086 const wWidth = window.innerWidth; 2087 if (innerWidth === fixedWidth) { 2088 return; 2089 } 2090 fixedWidth = wWidth; 2091 $subContainers.each(function () { 2092 const $sub = $(this).find('.sub-nav'); 2093 $sub[0].style.right = '';
2094 const sRect = $sub[0].getBoundingClientRect(); 2095 const sRight = sRect.left + sRect.width; 2096 if (sRight > wWidth - rightPad) { 2097 const parentRect = $sub[0].offsetParent.getBoundingClientRect(); 2098 const parentRight = parentRect.left + parentRect.width; 2099 $sub[0].style.right = `${parentRight - wWidth + rightPad}px`; 2100 } 2101 }); 2102 } 2103 var debouncer; 2104 $window.on('resize.lpui-auto-clean', function () { 2105 clearTimeout(debouncer); 2106 debouncer = setTimeout(fixSubsPosition, 500); 2107 }); 2108 fixSubsPosition(); 2109 if ($('.property-intro').length || $('.property-intro-2').length) { 2110 $('nav').addClass('dark-opening'); 2111 $("#global-navbar").css({ 2112 "background-color": "rgb(26, 26, 26)", 2113 "color": "rgb(255, 255, 255)" 2114 }); 2115 } 2116 function initAutoTruncateMenu() { 2117 const $navbar = $section.find('.navbar'); 2118 const $navList = $section.find('.navigation > ul'); 2119 if (!$navbar.length || !$navList.length) { 2120 return; 2121 } 2122 const $logo = $section.find('.logo'); 2123 const $buttonsWrapper = $section.find('.buttons-wrapper'); 2124 const $allItems = $navList.children('.navigation__item'); 2125 const $phoneItem = $allItems.filter(function () { 2126 return $(this).find('a[href^="tel:"]').length > 0; 2127 }); 2128 const $menuItems = $allItems.not($phoneItem); 2129 if (!$menuItems.length) { 2130 return; 2131 } 2132 const buffer = 8; 2133 function measureFixedWidth() { 2134 let width = buffer; 2135 if ($logo.length) { 2136 width += $logo.outerWidth(true) || 0; 2137 } 2138 if ($buttonsWrapper.length) { 2139 width += $buttonsWrapper.outerWidth(true) || 0; 2140 } 2141 if ($phoneItem.length) { 2142 width += $phoneItem.outerWidth(true) || 0; 2143 } 2144 return width; 2145 } 2146 function truncateMenu() { 2147 if (!$navList.is(':visible')) { 2148 return; 2149 } 2150 $menuItems.css('display', ''); 2151 const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth(); 2152 let widthSoFar = 0; 2153 let overflowed = false; 2154 $menuItems.each(function () { 2155 const $item = $(this); 2156 if (overflowed) { 2157 $item.css('display', 'none'); 2158 return; 2159 } 2160 widthSoFar += $item.outerWidth(true); 2161 if (widthSoFar > availableWidth) { 2162 $item.css('display', 'none'); 2163 overflowed = true; 2164 } 2165 }); 2166 } 2167 let truncateFrame; 2168 function scheduleTruncate() { 2169 if (truncateFrame) { 2170 return; 2171 } 2172 truncateFrame = window.requestAnimationFrame(function () { 2173 truncateFrame = null; 2174 truncateMenu(); 2175 }); 2176 } 2177 scheduleTruncate(); 2178 if (window.ResizeObserver) { 2179 const resizeObserver = new ResizeObserver(scheduleTruncate); 2180 resizeObserver.observe($navbar[0]); 2181 } else { 2182 $(window).on('resize.lpui-auto-truncate', scheduleTruncate); 2183 } 2184 $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate); 2185 $(window).on('load.lpui-auto-truncate', scheduleTruncate); 2186 if (document.fonts && document.fonts.ready) { 2187 document.fonts.ready.then(scheduleTruncate); 2188 } 2189 } 2190 initAutoTruncateMenu(); 2191})('global-navbar'); 2192} catch(e) { 2193console.log(e); 2194} 2195 try { 2196(function init(sectionDomId, options) { 2197 var elementSelector = options.elementSelector || 'nav'; 2198 var element = document.querySelector(elementSelector); 2199 var sections = document.querySelectorAll('body > section'); 2200 var subNavContainers = element.querySelectorAll('.sub-nav'); 2201 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 2202 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 2203 var fontColor = options.fontColor || '#fff'; 2204 var fontColorScroll = options.fontColorScroll || '#000'; 2205 var didScroll = false; 2206 var lastScrollTop = 0; 2207 var delta = 5; 2208 2209 // eslint-disable-next-line sonarjs/no-collapsible-if 2210 if (wow) { 2211 // Wowjs might not trigger for position fixed elements 2212 if (window.scrollY > 0) { 2213 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 2214 } 2215 } 2216 function adjustNavPinState() { 2217 // Remove 'visible' class from all subNavContainers 2218 for (let i = 0; i < subNavContainers.length; i++) { 2219 subNavContainers[i].classList.remove('visible'); 2220 } 2221 if (window.scrollY > 0) { 2222 element.style.backgroundColor = backgroundColorScroll; 2223 element.style.color = fontColorScroll; 2224 element.classList.add('scroll'); 2225 } else {
2226 element.style.backgroundColor = initialBackgroundColor; 2227 element.style.color = fontColor; 2228 element.classList.remove('scroll'); 2229 } 2230 } 2231 adjustNavPinState(); 2232 function onScroll() { 2233 didScroll = true; 2234 } 2235 window.addEventListener('scroll', onScroll); 2236 2237 // eslint-disable-next-line 2238 var debounceInterval = setInterval(() => { 2239 if (didScroll) { 2240 // eslint-disable-next-line 2241 hasScrolled(); 2242 didScroll = false; 2243 } 2244 }, 250); 2245 function hasScrolled() { 2246 adjustNavPinState(); 2247 // eslint-disable-next-line 2248 var navbarHeight = element.offsetHeight; 2249 // eslint-disable-next-line 2250 var st = window.scrollY; 2251 2252 // Make sure they scroll more than delta 2253 if (Math.abs(lastScrollTop - st) <= delta) { 2254 return; 2255 } 2256 if (st > lastScrollTop && st > navbarHeight) { 2257 // Scroll Down 2258 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 2259 document.documentElement.style.setProperty('--global-header-height', '0px'); 2260 2261 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 2262 sections.forEach(section => { 2263 if (section.classList.contains('sticky')) { 2264 section.style.top = '0px'; 2265 } 2266 }); 2267 } else { 2268 // Scroll Up 2269 // eslint-disable-next-line 2270 if (st + window.innerHeight < document.documentElement.scrollHeight) { 2271 element.style.transform = `translateY(0) scaleY(1)`; 2272 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 2273 sections.forEach(section => { 2274 if (section.classList.contains('sticky')) { 2275 section.style.top = `${navbarHeight}px`; 2276 } 2277 }); 2278 } 2279 } 2280 lastScrollTop = st; 2281 } 2282})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}")); 2283} catch(e) { 2284console.log(e); 2285} 2286 try { 2287(function init(sectionDomId) { 2288 var sidemenu = $('#' + sectionDomId); 2289 sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () { 2290 window.lpUI.requestScrollLock(sectionDomId); 2291 }); 2292 $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () { 2293 window.lpUI.releaseScrollLock(sectionDomId); 2294 }); 2295 $(window).click(function (e) { 2296 let targetContactForm = $(e.target).closest('#modal-global-contact-us').length; 2297 let targetSideMenu = $(e.target).closest('.sidemenu').length; 2298 let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length; 2299 let targetHamburger = $(e.target).closest('.hamburger-component').length; 2300 if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { 2301 $('body').removeClass('locked'); 2302 $('.hamburger').removeClass('active'); 2303 $('.sidemenu').removeClass('visible'); 2304 $('#modal-global-contact-us').removeClass('visible'); 2305 } 2306 }); 2307})('global-sidemenu'); 2308} catch(e) { 2309console.log(e); 2310} 2311 2312 try { 2313(function init(footerId) { 2314 var textContent = $(".text_content_wrap p").text().trim().length; 2315 const socialLinks = $(`#${footerId} .lp-socials__link`); 2316 if (textContent < 1) { 2317 $(".text_content_wrap").remove(); 2318 $(".second_text_footer").css({ 2319 'margin-bottom': 0 2320 }); 2321 } 2322 if (socialLinks.length > 0) { 2323 socialLinks.attr('data-wow-offset', '10'); 2324 } 2325 if ($(window).width() > 1280) { 2326 let footer = document.querySelector("#" + footerId); 2327 let copyrightElem = footer.querySelector(".copy_zone"); 2328 if (copyrightElem) { 2329 copyrightElem.style.whiteSpace = "nowrap"; 2330 let nowrapElemWidth = copyrightElem.clientWidth; 2331 copyrightElem.style.whiteSpace = ""; 2332 let normalElemWidth = copyrightElem.clientWidth; 2333 if (nowrapElemWidth > normalElemWidth) { 2334 footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto"); 2335 } 2336 } 2337 } 2338 const form = $("#" + footerId).find("form"); 2339 const redirectLink = $('#' + footerId + ' .redirect-link'); 2340 form.on("reset", function () { 2341 redirectPage(redirectLink); 2342 }); 2343 function redirectPage(link) { 2344 if (link.length) { 2345 const rawHref = link.attr('href'); 2346 link.attr('href', setHttp(rawHref)); 2347 link[0].click(); 2348 } 2349 } 2350 function setHttp(link) { 2351 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2352 link = 'http://' + link; 2353 } 2354 return link; 2355 } 2356})('global-footer'); 2357} catch(e) { 2358console.log(e); 2359} 2360 2361 try { 2362(function init(sectionDomId) { 2363 var _section = $('#' + sectionDomId); 2364 var _footer = document.getElementById('global-footer'); 2365 const redirectLink = _section.find('.js-redirect-link'); 2366 function setHttp(link) { 2367 if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) { 2368 link = 'https://' + link; 2369 } 2370 return link; 2371 } 2372 function redirectPage(link) { 2373 if (link.length) { 2374 window.location.href = setHttp(link.attr('href')); 2375 } 2376 } 2377 const emailInput = _section.find('.js-email-input'); 2378 const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/; 2379 emailInput.on('input', function () { 2380 if (emailRegex.test(this.value)) { 2381 this.setCustomValidity(''); 2382 } else { 2383 this.setCustomValidity('Please enter a valid email address.'); 2384 } 2385 this.reportValidity(); 2386 }); 2387 _section.find('input[name="name"]').on("keyup", function () { 2388 if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") { 2389 this.setCustomValidity("Please input your first name and last name."); 2390 } else { 2391 this.setCustomValidity(""); 2392 } 2393 }); 2394 _section.find('form').on("reset", function () { 2395 $(this).addClass("show-success"); 2396 redirectPage(redirectLink); 2397 }); 2398 $(window).scroll(function () { 2399 if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible'); 2400 }); 2401 _section.find('.close-btn, .connect-btn').click(function () { 2402 _section.find('.pop-up').toggle(); 2403 _section.find('.btn-holder').toggle(); 2404 }); 2405 if (!_footer) return; 2406 const observer = new IntersectionObserver(entries => {
2407 entries.forEach(entry => { 2408 if (entry.isIntersecting) _section.hide();else _section.show(); 2409 }); 2410 }, { 2411 threshold: 0.1 2412 }); 2413 observer.observe(_footer); 2414 function selectToDropdown(selectItem) { 2415 let customDropdown = ` 2416 <div class="custom-select" role="presentation"> 2417 <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button> 2418 <div class="custom-select-menu" style="display: none;max-height: none;"> 2419 <div class="custom-select-content"> 2420 </div> 2421 </div> 2422 </div>`; 2423 $(customDropdown).insertAfter(selectItem); 2424 let $dropdown = $($(selectItem).next()); 2425 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 2426 let $dropdownMenu = $dropdown.find(".custom-select-menu"); 2427 let $dropdownContent = $dropdown.find(".custom-select-content"); 2428 $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select"); 2429 $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom"); 2430 $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id")); 2431 appendOptionButtons(selectItem, $dropdownContent); 2432 $(selectItem).removeClass().addClass("sr-only"); 2433 var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text(); 2434 $dropdownToggle.html(toggleText); 2435 $dropdown.on("click", ".custom-select-item", function (e) { 2436 if ($(this).hasClass("is-disabled")) return; 2437 let elementNumber = $(this).index(); 2438 let $originalSelect = $(this).closest(".custom-select").siblings("select"); 2439 let $linkedOption = $originalSelect.find("option").eq(elementNumber); 2440 if (!$linkedOption.prop("selected")) { 2441 $linkedOption.prop("selected", true); 2442 $originalSelect.change(); 2443 $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected"); 2444 $dropdownToggle.html($(this).html()); 2445 closeSelectMenu($(this).closest(".custom-select-menu")); 2446 } 2447 $dropdownToggle.removeClass("is-placeholder"); 2448 }); 2449 function convertOptionToButton(option) { 2450 var optionText = $(option).text(); 2451 var optionValue = $(option).attr("value") || $(option).text(); 2452 var optionIsDisabled = $(option).prop("disabled"); 2453 var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`; 2454 return outputButton; 2455 } 2456 function appendOptionButtons(selectItem, appendTarget) { 2457 $(selectItem).find("option").each(function () { 2458 let currentButton = convertOptionToButton(this); 2459 $(appendTarget).append(currentButton); 2460 }); 2461 } 2462 function showSelectMenu(selectMenu) { 2463 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2464 $(customSelect).addClass("open"); 2465 $(selectMenu).slideDown(); 2466 } 2467 function closeSelectMenu(selectMenu) { 2468 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2469 $(customSelect).removeClass("open"); 2470 $(selectMenu).slideUp(); 2471 } 2472 $dropdown.on("click", ".custom-select-toggle", function (e) { 2473 var $customSelect = $(this).closest(".custom-select"); 2474 var selectMenu = $customSelect.find(".custom-select-menu")[0]; 2475 if ($customSelect.hasClass("open")) { 2476 closeSelectMenu(selectMenu); 2477 } else { 2478 showSelectMenu(selectMenu); 2479 } 2480 }); 2481 $(document).on("click", function (e) { 2482 if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) { 2483 $(".custom-select.open").each(function () { 2484 var selectMenu = $(this).find(".custom-select-menu")[0]; 2485 closeSelectMenu(selectMenu); 2486 }); 2487 } 2488 }); 2489 } 2490 $(".pop-up select[name='interest']").each(function () { 2491 selectToDropdown(this); 2492 }); 2493})('global-mobile-contact'); 2494} catch(e) { 2495console.log(e); 2496} 2497 2498 try { 2499(function init(sectionDomId) { 2500 var $section = $('#' + sectionDomId); 2501 var $slider = $section.find('.js-sell-slider'); 2502 const arrowsStyle = $slider.data('arrows-style') || ''; 2503 var $arrowsContainerDesk = $section.find('.jsSellSliderArrowsDesk'); 2504 var $arrowsContainerMob = $section.find('.jsSellSliderArrowsMob'); 2505 var centerPaddingVar = $slider.find('img').length > 1 ? true : false;
2506 $slider.slick({ 2507 dots: false, 2508 vertical: true, 2509 slidesToShow: 1, 2510 slidesToScroll: 1, 2511 verticalSwiping: true, 2512 appendArrows: $arrowsContainerDesk, 2513 prevArrow: `<button class='lp-arrow lp-arrow--prev lp-arrow--dark lp-arrow--vertical ${arrowsStyle}'></button>`, 2514 nextArrow: `<button class='lp-arrow lp-arrow--next lp-arrow--dark lp-arrow--vertical ${arrowsStyle}'></button>`, 2515 centerMode: centerPaddingVar, 2516 centerPadding: '80px', 2517 responsive: [{ 2518 breakpoint: 769, 2519 settings: { 2520 centerMode: false, 2521 centerPadding: '0px', 2522 appendArrows: $arrowsContainerMob, 2523 vertical: false, 2524 verticalSwiping: false 2525 } 2526 }] 2527 }); 2528})('section-0c5098a0-18d2-4cc2-b7b1-3a97ebfd88b2', 'undefined'); 2529} catch(e) { 2530console.log(e); 2531} 2532 try { 2533(function init(sectionDomId, options) { 2534 let section = null; 2535 switch (sectionDomId) { 2536 case 'NAVBAR': 2537 section = document.querySelector('body > nav, #global-navbar'); 2538 break; 2539 case 'FOOTER': 2540 section = document.querySelector('body > footer, #global-footer'); 2541 break; 2542 case 'SIDEMENU': 2543 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 2544 break; 2545 case 'CONTACT': 2546 section = document.querySelector('#modal-global-contact-us'); 2547 break; 2548 case 'MOBILE_CONTACT': 2549 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 2550 break; 2551 case 'SUBSCRIBE': 2552 // Subscribe Not Implemented 2553 section = null; 2554 break; 2555 case 'ACCOUNT': 2556 // Account Not Implemented 2557 section = null; 2558 break; 2559 default: 2560 section = document.querySelector('#' + sectionDomId); 2561 } 2562 if (!section) { 2563 return; 2564 } 2565 2566 // Where content / items are rendered 2567 const dataContainer = section.querySelector('.data-container'); 2568 if (!dataContainer) { 2569 // no place to render items = no need to query server or do anything else 2570 return; 2571 } 2572 let variables = options.variables || {}; 2573 2574 // Some variables in options may not have been injected - remove 2575 Object.keys(variables).forEach(function (variableName) { 2576 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 2577 delete variables[variableName]; 2578 } 2579 }); 2580 2581 // Merge page query variables 2582 if (options.usePageResource) { 2583 variables = { 2584 ...variables, 2585 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 2586 }; 2587 } 2588 2589 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 2590 // resolve the flag â fetchData reads the section stamp, aux fetches read 2591 // their own resource's stamp (auxUsesRouter). 2592 function apiUrl(useRouter) { 2593 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 2594 } 2595 2596 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 2597 // (options.routerApiAux is stamped per aux resource server-side). 2598 function auxUsesRouter(resource) { 2599 return !!(options.routerApiAux && options.routerApiAux[resource]); 2600 } 2601 2602 // Pagination Executes on a Numbered Pagination Container 2603 // Or via a load more button 2604 let mode = 'BUTTONLESS_PAGINATION'; 2605 const container = section.querySelector('.pagination-container');
2606 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 2607 if (container) { 2608 mode = 'NUMBERED_PAGINATION'; 2609 } 2610 if (loadMoreButton) { 2611 mode = 'LOAD_MORE_BUTTON'; 2612 } 2613 let searchContainer = section.querySelector('.search-container'); 2614 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 2615 const eventPrefix = '__pagination-'; 2616 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 2617 param: 'neighborhoodId', 2618 urlKey: 'neighborhood' 2619 }, { 2620 param: 'search', 2621 urlKey: 'search' 2622 }, { 2623 param: 'salesPriceGTE', 2624 urlKey: 'pricemin', 2625 formKey: 'priceMin', 2626 type: 'int' 2627 }, { 2628 param: 'salesPriceLTE', 2629 urlKey: 'pricemax', 2630 formKey: 'priceMax', 2631 type: 'int' 2632 }, { 2633 param: 'livingSpaceSizeGTE', 2634 urlKey: 'areamin', 2635 formKey: 'areaMin', 2636 type: 'int' 2637 }, { 2638 param: 'livingSpaceSizeLTE', 2639 urlKey: 'areamax', 2640 formKey: 'areaMax', 2641 type: 'int' 2642 }] : []); 2643 2644 // Total entries - initialized in first render 2645 let totalNumber = 0; 2646 const DefaultSearchParams = { 2647 page: 1 2648 }; 2649 searchFormParams.forEach(function (formParam) { 2650 DefaultSearchParams[formParam.formKey || formParam.param] = null; 2651 }); 2652 let searchParams = { 2653 ...DefaultSearchParams 2654 }; 2655 const offset = options.variables?.offset || 0; 2656 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 2657 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 2658 2659 // entries of per page 2660 // when query variables for a given section would't be filled options.pageSize can store 2661 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 2662 let pageSize = parseInt(options.pageSize, 10) || 9; 2663 2664 // Adding mobile pageRange support 2665 var NARROW_BREAKPOINT = 600; 2666 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 2667 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 2668 2669 // Page range (pages on both sides of the current page) 2670 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 2671 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 2672 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 2673 2674 // Whether to display the 'Previous' button 2675 var showPrevious = true; 2676 2677 // Whether to display the 'Next' button 2678 var showNext = true; 2679 2680 // Whether to display the page buttons 2681 var showPageNumbers = true; 2682 2683 // 'Previous' text 2684 var prevText = options.prevText || '«'; 2685 2686 // 'Next' text 2687 var nextText = options.nextText || '»'; 2688 2689 // Ellipsis text 2690 var ellipsisText = '…'; 2691 var classPrefix = 'paginationjs'; 2692 2693 // Default active class 2694 var activeClassName = 'active'; 2695 2696 // Default disable class 2697 var disableClassName = 'disabled'; 2698 2699 // Pagination element's position in the container 2700 var position = 'bottom'; 2701 2702 // Whether to trigger pagination at initialization 2703 var triggerPagingOnInit = !options.skipInitialLoad; 2704 var showFirstOnEllipsisShow = true; 2705 var showLastOnEllipsisShow = true; 2706 2707 // Instantiated in init() 2708 var el = null; 2709 2710 // Controls scrollTop logic 2711 var firstRender = true; 2712 var renderBySearch = false; 2713 var disabled = false; 2714 2715 // Pagination script class selector 2716 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 2717 2718 // Property Specific Image Override if No Image 2719 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 2720 2721 // Construct template 2722 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 2723 var template = Handlebars.compile(templateHTML); 2724 2725 // Initialize 2726 init(); 2727 function init() { 2728 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 2729 2730 // Append/prepend pagination element to the pagination container 2731 if (mode === 'NUMBERED_PAGINATION') { 2732 el = document.createElement('div'); 2733 el.className = 'paginationjs';
2734 container[position === 'bottom' ? 'append' : 'prepend'](el); 2735 } 2736 if (searchContainer) { 2737 initSearchContainer({ 2738 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 2739 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 2740 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 2741 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 2742 }, function () { 2743 syncSearchFormState(searchParams); 2744 }); 2745 } 2746 2747 // Bind events 2748 observer(); 2749 } 2750 function syncSearchFormState(params) { 2751 searchContainer.dispatchEvent(new CustomEvent('sync', { 2752 detail: params 2753 })); 2754 } 2755 function initSearchContainer(options, done) { 2756 var promises = []; 2757 if (options.fetchNeighborhoods) { 2758 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 2759 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 2760 detail: { 2761 data: neighborhoods.map(function (item) { 2762 return { 2763 value: item.id, 2764 label: item.name 2765 }; 2766 }) 2767 } 2768 })); 2769 })); 2770 } 2771 if (options.fetchPostCategories) { 2772 promises.push(fetchPostCategories(function (categories) { 2773 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 2774 detail: { 2775 data: categories 2776 } 2777 })); 2778 })); 2779 } 2780 if (options.fetchOffices) { 2781 promises.push(fetchOffices(function (offices) { 2782 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 2783 detail: { 2784 data: offices 2785 } 2786 })); 2787 })); 2788 } 2789 if (options.fetchRentalRates) { 2790 promises.push(fetchAllRentalRates(function (rentalRates) { 2791 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 2792 detail: { 2793 data: rentalRates 2794 } 2795 })); 2796 })); 2797 } 2798 if (promises.length > 0) { 2799 Promise.all(promises).then(function () { 2800 done(); 2801 }); 2802 } else { 2803 // element's custom code is not executed yet, so we're scheduling callback to after element's code 2804 setTimeout(done); 2805 } 2806 } 2807 function fetchAllNeighborhoods(done) { 2808 var useRouter = auxUsesRouter('neighborhoods'); 2809 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 2810 // args on both APIs (the federated neighborhoods field accepts 2811 // withProperties/withBlogPosts); only the selection set differs. 2812 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') + '}}'; 2813 var payload = {}; 2814 payload.offset = 0; 2815 payload.limit = 100; 2816 payload.companyId = variables.companyId; 2817 if (options.resource === 'properties') { 2818 payload.withProperties = { 2819 active: true 2820 }; 2821 ['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) { 2822 if (variables[field] !== undefined && variables[field] !== null) { 2823 payload.withProperties[field] = variables[field]; 2824 } 2825 }); 2826 } 2827 if (options.resource === 'posts') { 2828 payload.withBlogPosts = { 2829 active: true 2830 }; 2831 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 2832 if (variables[field] !== undefined && variables[field] !== null) { 2833 payload.withBlogPosts[field] = variables[field]; 2834 } 2835 }); 2836 } 2837 2838 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2839 if (useRouter) { 2840 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 2841 } 2842 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2843 query: gqlQuery, 2844 variables: payload 2845 }).then(function (res) { 2846 var value = res.body.data && res.body.data.neighborhoods || {}; 2847 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2848 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2849 done(items, items.length); 2850 }); 2851 } 2852 function fetchPostCategories(done) { 2853 var featured = options.resource === 'posts' && !!variables.featured; 2854 var useRouter = auxUsesRouter('postCategories'); 2855 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2856 // selection set differs ({ items {...} } on the router). 2857 var selection = 'id, name, publishedCount, featuredPublishedCount'; 2858 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) + '}}'; 2859 var payload = {}; 2860 payload.offset = 0; 2861 payload.limit = 100; 2862 payload.companyId = variables.companyId; 2863 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2864 query: gqlQuery, 2865 variables: payload 2866 }).then(function (res) { 2867 var value = res.body.data && res.body.data.postCategories || {}; 2868 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2869 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2870 done(items.map(function (item) { 2871 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 2872 return item; 2873 }), items.length); 2874 }); 2875 } 2876 function fetchOffices(done) { 2877 var useRouter = auxUsesRouter('offices'); 2878 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2879 // selection set differs ({ items {...} } on the router). 2880 var selection = 'id, name, tags'; 2881 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 2882 // APIs differ in more than the items wrapper: federated offices takes 2883 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 2884 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 + '}}'; 2885 var payload = { 2886 offset: 0, 2887 limit: 100, 2888 companyId: variables.companyId 2889 }; 2890 2891 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2892 if (useRouter) { 2893 payload = window.luxuryPresence.routerApi.transformVariables('office
2893s', payload); 2894 } 2895 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2896 query: gqlQuery, 2897 variables: payload 2898 }).then(function (res) { 2899 var value = res.body.data && res.body.data.offices || {}; 2900 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2901 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2902 done(items, items.length); 2903 }); 2904 } 2905 2906 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 2907 function fetchAllRentalRates(done) { 2908 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 2909 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 2910 var payload = { 2911 offset: 0, 2912 limit: 100, 2913 companyId: variables.companyId 2914 }; 2915 superagent.post(url + '/graphql').withCredentials().send({ 2916 query: gqlQuery, 2917 variables: payload 2918 }).then(function (res) { 2919 var items = res.body.data && res.body.data.rentalRates || []; 2920 done(items, items.length); 2921 }).catch(function (err) { 2922 console.error('Error fetching rental rates:', err); 2923 done([], 0); 2924 }); 2925 } 2926 function fetchData(params, done) { 2927 var resource = options.resource; 2928 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 2929 var payload = {}; 2930 try { 2931 payload = JSON.parse(JSON.stringify(variables)); 2932 } catch (e) { 2933 Object.keys(variables).forEach(function (variableName) { 2934 payload[variableName] = variables[variableName]; 2935 }); 2936 } 2937 payload.offset = (params.page - 1) * pageSize + offset; 2938 payload.limit = pageSize; 2939 payload.companyId = options.companyId; 2940 searchFormParams.forEach(function (formParam) { 2941 var val = params[formParam.formKey || formParam.param]; 2942 if (val !== null && val !== undefined) { 2943 objSet(payload, formParam.param, val); 2944 } 2945 }); 2946 2947 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2948 if (options.useRouterApi) { 2949 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 2950 } 2951 2952 // TODO: Disabled loading due to jarring effect 2953 // dataContainer.html('Loading...'); 2954 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 2955 query: gqlQuery, 2956 variables: payload 2957 }).then(function (res) { 2958 if (res.body.errors) { 2959 done(res.body.errors); 2960 return; 2961 } 2962 var data = res.body.data || {}; 2963 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2964 var resources; 2965 var resourceCount; 2966 if (options.useRouterApi) { 2967 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 2968 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 2969 resourceCount = page.count; 2970 } else { 2971 resources = data[resource] || []; 2972 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 2973 } 2974 const finish = function (items) { 2975 if (resource === 'properties' && propertyPlaceholderImage?.id) { 2976 items = items.map(item => { 2977 if (item.media?.length === 0) { 2978 return Object.assign(item, { 2979 media: [propertyPlaceholderImage] 2980 }); 2981 } 2982 return item; 2983 }); 2984 } 2985 done(null, items, resourceCount); 2986 }; 2987 2988 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 2989 // disclaimers before rendering; older SDKs skip (keys stay unset). 2990 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 2991 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 2992 return; 2993 } 2994 finish(resources); 2995 }); 2996 } 2997 function getTotalPage() { 2998 return Math.ceil(totalNumber / pageSize); 2999 } 3000 function renderPaginationList() { 3001 var totalPages = getTotalPage(); 3002 var rangeStart = searchParams.page - pageRange; 3003 var rangeEnd = searchParams.page + pageRange; 3004 if (rangeEnd > totalPages) { 3005 rangeEnd = totalPages; 3006 rangeStart = totalPages - pageRange * 2; 3007 rangeStart = rangeStart < 1 ? 1 : rangeStart; 3008 } 3009 if (rangeStart <= 1) { 3010 rangeStart = 1; 3011 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 3012 } 3013 3014 // Making sure that 1 more page button is shown in edge positions 3015 if (pageRange === 0) { 3016 if (searchParams.page === totalPages) { 3017 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 3018 } 3019 if (searchParams.page === 1) { 3020 rangeEnd = Math.min(2, totalPages); 3021 } 3022 } 3023 3024 // Render pagination list 3025 if (mode === 'NUMBERED_PAGINATION') { 3026 el.innerHTML = generateHTML({ 3027 currentPage: searchParams.page, 3028 pageRange: pageRange, 3029 rangeStart: rangeStart, 3030 rangeEnd: rangeEnd 3031 }); 3032 if (totalPages < 2 && hidePaginationOnFirstPage) { 3033 container.style.display = 'none'; 3034 } else { 3035 container.style.display = ''; 3036 } 3037 } else if (mode === 'LOAD_MORE_BUTTON') { 3038 if (searchParams.page >= totalPages) {
3039 loadMoreButton.style.display = 'none'; 3040 } else { 3041 loadMoreButton.style.display = ''; 3042 } 3043 } 3044 } 3045 function render(data) { 3046 renderPaginationList(); 3047 3048 // Render new content with handlebars 3049 var html = ''; 3050 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 3051 // If using load more, append search results to existing results 3052 html = dataContainer.innerHTML; 3053 } 3054 for (var i = 0; i < data.length; i++) { 3055 var itemData = recursivelyParse(data[i]); 3056 itemData.sectionIndex = options.sectionIndex; 3057 itemData.renderOptions = options.renderOptions; 3058 html += template(itemData); 3059 } 3060 dataContainer.innerHTML = html; 3061 3062 // Scroll Top 3063 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 3064 // Only animate to the top if we replace dataContainer (numbered pagination) 3065 setTimeout(() => { 3066 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 3067 window.scrollTo({ 3068 top: scrollTargetOffsetTop, 3069 behavior: 'smooth' 3070 }); 3071 }, 250); 3072 } 3073 return true; 3074 } 3075 function generateHTML(args) { 3076 const totalPages = getTotalPage(); 3077 const { 3078 rangeStart, 3079 rangeEnd 3080 } = args; 3081 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3082 ...searchParams, 3083 page 3084 }); 3085 let html = ''; 3086 if (showPrevious || showPageNumbers || showNext) { 3087 html += '<div class="paginationjs-pages"><ul>'; 3088 3089 // Previous button 3090 if (showPrevious) { 3091 if (searchParams.page <= 1) { 3092 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 3093 } else { 3094 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>`; 3095 } 3096 } 3097 3098 // Pages 3099 if (showPageNumbers) { 3100 if (rangeStart <= 3) { 3101 for (let i = 1; i < rangeStart; i++) { 3102 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>`; 3103 } 3104 } else { 3105 if (showFirstOnEllipsisShow) { 3106 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 3107 } 3108 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3109 } 3110 for (let i = rangeStart; i <= rangeEnd; i++) { 3111 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>`; 3112 } 3113 if (rangeEnd < totalPages - 2) { 3114 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3115 if (showLastOnEllipsisShow) { 3116 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 3117 } 3118 } else { 3119 for (let i = rangeEnd + 1; i <= totalPages; i++) { 3120 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 3121 } 3122 } 3123 } 3124 3125 // Next button 3126 if (showNext) { 3127 if (searchParams.page >= totalPages) { 3128 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 3129 } else { 3130 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>`; 3131 } 3132 } 3133 html += '</ul></div>'; 3134 } 3135 return html; 3136 } 3137 function go(newSearchParams, callback, restorationVisit) { 3138 if (disabled) return; 3139 var goToPageNumber = newSearchParams.page; 3140 3141 // Page number is out of bounds 3142 if (!goToPageNumber || goToPageNumber < 1) return; 3143 var totalPage = getTotalPage(); 3144 3145 // Page number is out of bounds 3146 if (!restorationVisit && totalNumber > 0) { 3147 if (goToPageNumber > totalPage) return; 3148 } 3149 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3150 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3151 ...newSearchParams, 3152 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 3153 }); 3154 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 3155 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 3156 queryString: true 3157 })); 3158 } 3159 } 3160 3161 // Fetch and update page 3162 fetchData(newSearchParams, renderWithData); 3163 disabled = true; 3164 function renderWithData(err, data, count) { 3165 if (err) { 3166 dataContainer.dispatchEvent(new Event('error')); 3167 } else { 3168 searchParams = { 3169 ...newSearchParams 3170 }; 3171 totalNumber = count - offset; 3172 if (data.length === 0) { 3173 dataContainer.dispatchEvent(new Event('no-data')); 3174 } else { 3175 dataContainer.dispatchEvent(new Event('data')); 3176 } 3177 render(data); 3178 firstRender = false; 3179 } 3180 disabled = false; 3181 renderBySearch = false; 3182 } 3183 } 3184 function areQueryParamsEqual(first, second) { 3185 var differ = Object.keys(first).find(function (key) { 3186 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 3187 }); 3188 if (differ) { 3189 return false; 3190 } 3191 differ = Object.keys(second).find(function (key) { 3192 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 3193 }); 3194 return !differ; 3195 } 3196 function next(callback) { 3197 go({ 3198 ...searchParams, 3199 page: searchParams.page + 1 3200 }, callback); 3201 } 3202 function previous(callback) { 3203 go({ 3204 ...searchParams, 3205 page: searchParams.page - 1 3206 }, callback); 3207 } 3208 function refresh(callback) { 3209 go(searchParams, callback); 3210 } 3211 function update(params, callback) { 3212 renderBySearch = true; 3213 go(params, callback); 3214 } 3215 function observer() { 3216 if (searchContainer) { 3217 searchContainer.addEventListener('search', function (event, newSearchParams) { 3218 newSearchParams = event.detail || newSearchParams; 3219 update({ 3220 ...searchParams, 3221 ...newSearchParams, 3222 page: 1 3223 }); 3224 }); 3225 searchContainer.addEventListener('clear-search', function () { 3226 const defaultSearchParams = { 3227 ...DefaultSearchParams 3228 }; 3229 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 3230 ...defaultSearchParams, 3231 page: null 3232 }, { 3233 ...searchParams, 3234 page: null 3235 }); 3236 3237 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 3238 // when search form have default state 3239 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 3240 return; 3241 } 3242 3243 // if someone initially go to some page and click 'Clear' on search from 3244 // we should't navigate to first page. We should preserve page value 3245 if (isCurrentSearchFormStateDefault) { 3246 defaultSearchParams.page = searchParams.page; 3247 } 3248 syncSearchFormState(defaultSearchParams); 3249 update(defaultSearchParams); 3250 }); 3251 } 3252 if (mode === 'LOAD_MORE_BUTTON') { 3253 loadMoreButton.addEventListener('click', function (event) { 3254 go({ 3255 ...searchParams, 3256 page: searchParams.page + 1 3257 }); 3258 return false; 3259 }); 3260 } 3261 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 3262 // Do initial render 3263 go(Object.assign({}, searchParams, { 3264 page: 1 3265 })); 3266 return; 3267 } 3268 if (mode === 'NUMBERED_PAGINATION') { 3269 // Go to specified page number 3270 container.addEventListener(eventPrefix + 'go', function (event) { 3271 let { 3272 pageNumber, 3273 done 3274 } = event.detail || {}; 3275 pageNumber = parseInt(pageNumber, 10); 3276 if (!pageNumber) { 3277 return; 3278 } 3279 go({ 3280 ...searchParams, 3281 page: pageNumber 3282 }, done); 3283 }); 3284 3285 // Page number button click 3286 el.addEventListener('click', function (event) { 3287 let clickTarget = event.target; 3288 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 3289 let pageNumber = current?.getAttribute('data-num'); 3290 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 3291 return; 3292 } else { 3293 go({ 3294 ...searchParams, 3295 page: parseInt(pageNumber, 10) 3296 }); 3297 } 3298 event.preventDefault(); 3299 }); 3300 3301 // Whether to load the default page 3302 var defaultPageNumber = searchParams.page; 3303 if (triggerPagingOnInit) {
3304 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 3305 detail: { 3306 pageNumber: defaultPageNumber 3307 } 3308 })); 3309 } 3310 } 3311 window.addEventListener('popstate', function (event) { 3312 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3313 if (!areQueryParamsEqual(newParams, searchParams)) { 3314 go(newParams, null, true); 3315 if (searchContainer) { 3316 syncSearchFormState(newParams); 3317 } 3318 } 3319 }); 3320 } 3321 function replaceVariables(template, variables) { 3322 var formattedString; 3323 for (var key in variables) { 3324 var value = variables[key]; 3325 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 3326 formattedString = (formattedString || template).replace(regexp, value); 3327 } 3328 return formattedString; 3329 } 3330 function isTextEditorValue(obj) { 3331 return 'raw' in obj || 'gjs' in obj; 3332 } 3333 function getTextEditorValue(obj) { 3334 if (!obj.html) { 3335 return ''; 3336 } 3337 var data = obj.html; 3338 var css = (obj.raw || obj.gjs || {}).css; 3339 if (css) { 3340 data = data + '<style>' + css + '</style>'; 3341 } 3342 return data; 3343 } 3344 3345 /** 3346 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 3347 * strips out raw proprties and returns only HTML if it exists. 3348 * @param {Object} resources a collection retrieved from the database 3349 * @return {Object} the newly modified object. 3350 */ 3351 function recursivelyParse(resources) { 3352 forEach(resources, function (value, key) { 3353 if (!value) { 3354 return; 3355 } 3356 if (value instanceof Object) { 3357 if (isTextEditorValue(value)) { 3358 resources[key] = getTextEditorValue(value); 3359 return; 3360 } else { 3361 return recursivelyParse(value); 3362 } 3363 } 3364 try { 3365 var parsedData = JSON.parse(value); 3366 if (isTextEditorValue(parsedData)) { 3367 resources[key] = getTextEditorValue(parsedData); 3368 } 3369 } catch (e) { 3370 // do nothing if we failed to parse value as JSON 3371 } 3372 }); 3373 return resources; 3374 } 3375 function forEach(collection, iteratee) { 3376 var func = Array.isArray(collection) ? arrayEach : baseFor; 3377 return func(collection, iteratee); 3378 } 3379 function baseFor(object, iteratee) { 3380 if (!object) { 3381 return; 3382 } 3383 var iterable = Object(object); 3384 var props = Object.keys(object); 3385 var length = props.length; 3386 var index = -1; 3387 while (length--) { 3388 var key = props[++index]; 3389 if (iteratee(iterable[key], key, iterable) === false) { 3390 break; 3391 } 3392 } 3393 return object; 3394 } 3395 function objSet(obj, path, value) { 3396 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 3397 pathArray.reduce((acc, key, i) => { 3398 if (acc[key] === undefined) acc[key] = {}; 3399 if (i === pathArray.length - 1) acc[key] = value; 3400 return acc[key]; 3401 }, obj); 3402 } 3403 function arrayEach(array, iteratee) { 3404 var index = -1; 3405 var length = array.length; 3406 while (++index < length) { 3407 if (iteratee(array[index], index, array) === false) { 3408 break; 3409 } 3410 } 3411 return array; 3412 } 3413 function selectPageRangeMode(e) { 3414 pageRange = e.matches ? mobilePageRange : desktopPageRange; 3415 renderPaginationList(); 3416 } 3417 paginationMql.addEventListener('change', selectPageRangeMode); 3418})('section-da28ff70-b32c-4718-98b5-01a5d85656ab', JSON.parse("{\"pageSize\":\"10\",\"resource\":\"properties\",\"pageRange\":0,\"variables\":{\"limit\":10,\"order\":\"salesPrice\",\"offset\":0,\"sortDir\":\"ASC\",\"statusId\":\"{{variables.statusId}}\",\"companyId\":\"850552e9-2cd2-407f-a7ee-18f5819cdb5f\",\"categoryId\":\"{{pageElement.categoryId}}\",\"tag\":\"floorplan\",\"sort\":\"salesPrice\",\"propertyIds\":[\"3306e69c-88c6-40c5-ba51-228baeee8368\",\"7e44e3aa-39a1-4f8f-b2b0-a74116004be2\",\"621e3d10-5562-4b04-af27-5923ce4ae66b\",\"cd3614e1-b522-49d8-9fac-186d352a2333\",\"b588d15d-4ba7-45ca-b82a-9bc4df9a6943\"],\"websiteId\":\"5c8ab3ef-2f1d-45fe-9125-fcc3c56486bf\"},\"searchFormParams\":[{\"param\":\"search\",\"global\":true,\"urlKey\":\"search\"},{\"type\":\"int\",\"param\":\"salesPriceGTE\",\"global\":true,\"urlKey\":\"pricemin\"},{\"type\":\"int\",\"param\":\"salesPriceLTE\",\"global\":true,\"urlKey\":\"pricemax\"},{\"type\":\"int\",\"param\":\"livingSpaceSizeGTE\",\"global\":true,\"urlKey\":\"areamin\"},{\"type\":\"int\",\"param\":\"livingSpaceSizeLTE\",\"global\":true,\"urlKey\":\"areamax\"},{\"type\":\"int\",\"param\":\"bedroomCountGTE\",\"global\":true,\"urlKey\":\"bedmin\"},{\"type\":\"int\",\"param\":\"bedroomCountLTE\",\"global\":true,\"urlKey\":\"bedmax\"},{\"type\":\"int\",\"param\":\"bathCountGTE\",\"global\":true,\"urlKey\":\"bathmin\"},{\"type\":\"int\",\"param\":\"bathCountLTE\",\"global\":true,\"urlKey\":\"bathmax\"},{\"type\":\"string\",\"param\":\"neighborhoodId\",\"global\":true,\"urlKey\":\"neighborhoodId\"},{\"type\":\"string\",\"param\":\"propertyTypeId\",\"global\":true,\"urlKey\":\"propertyTypeId\"},{\"type\":\"string\",\"param\":\"sortDir\",\"global\":true,\"urlKey\":\"sortDir\"},{\"type\":\"string\",\"param\":\"seasonalPriceId\",\"global\":true,\"urlKey\":\"seasonalPriceId\"}],\"hidePaginationOnFirstPage\":true,\"companyId\":\"850552e9-2cd2-407f-a7ee-18f5819cdb5f\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 3419} catch(e) { 3420console.log(e); 3421} 3422 try { 3423(function init(sectionDomId) { 3424 const $section = $('#' + sectionDomId); 3425 const emptyResultElement = $('#' + sectionDomId + ' .empty-result'); 3426 const searchContainer = $('#' + sectionDomId + ' .search-container'); 3427 const dataContainer = $('#' + sectionDomId + ' .data-container'); 3428 const priceSlider = searchContainer.find('input[name="price-slider"]');
3429 const areaSlider = searchContainer.find('input[name="area-slider"]'); 3430 const bedsSlider = searchContainer.find('input[name="beds-slider"]'); 3431 const bathsSlider = searchContainer.find('input[name="baths-slider"]'); 3432 const priceMin = parseInt(priceSlider.attr('data-min')); 3433 const priceMax = parseInt(priceSlider.attr('data-max')); 3434 const areaMin = parseInt(areaSlider.attr('data-min')); 3435 const areaMax = parseInt(areaSlider.attr('data-max')); 3436 const rangeSliderInitialized = $(`#${sectionDomId} .search-item .irs`).length >= 1; 3437 const $inputs = $(`#${sectionDomId} .search-dropdown`); 3438 const $neighborhoodInput = $section.find('.neighborhood-select'); 3439 const $seasonalPriceInput = $section.find('.seasonal-price-select'); 3440 const $pricesortInput = $section.find('.price-sort'); 3441 const $typesInput = $section.find('.property-type'); 3442 const searchInput = $section.find('input[name="search-input"]'); 3443 function onSearch() { 3444 let params = getFilterParams(); 3445 searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 3446 detail: params 3447 })); 3448 } 3449 function getFilterParams() { 3450 let params = {}; 3451 params.salesPriceGTE = $(priceSlider).data('from') !== $(priceSlider).data('min') ? $(priceSlider).data('from') : null; 3452 params.salesPriceLTE = $(priceSlider).data('to') !== $(priceSlider).data('max') ? $(priceSlider).data('to') : null; 3453 params.livingSpaceSizeGTE = $(areaSlider).data('from') !== $(areaSlider).data('min') ? $(areaSlider).data('from') : null; 3454 params.livingSpaceSizeLTE = $(areaSlider).data('to') !== $(areaSlider).data('max') ? $(areaSlider).data('to') : null; 3455 params.bedroomCountGTE = $(bedsSlider).data('from') !== $(bedsSlider).data('min') ? $(bedsSlider).data('from') : null; 3456 params.bedroomCountLTE = $(bedsSlider).data('to') !== $(bedsSlider).data('max') ? $(bedsSlider).data('to') : null; 3457 params.bathCountGTE = $(bathsSlider).data('from') !== $(bathsSlider).data('min') ? $(bathsSlider).data('from') : null; 3458 params.bathCountLTE = $(bathsSlider).data('to') !== $(bathsSlider).data('max') ? $(bathsSlider).data('to') : null; 3459 params.neighborhoodId = $neighborhoodInput.data('selected'); 3460 params.seasonalPriceId = $seasonalPriceInput.data('selected'); 3461 params.sortDir = $pricesortInput.data('selected'); 3462 params.propertyTypeId = $typesInput.data('selected'); 3463 params.search = searchInput.val() == "" || undefined ? null : searchInput.val(); 3464 return params; 3465 } 3466 searchContainer.on('rental-rates-data', function (ev) { 3467 const rentalRates = ev?.detail?.data || []; 3468 if (rentalRates.length) { 3469 $seasonalPriceInput.removeClass('hidden'); 3470 } else { 3471 $seasonalPriceInput.addClass('hidden'); 3472 } 3473 rentalRates.forEach(item => { 3474 $seasonalPriceInput.find('.dropdown').append(`<div class="option" data-id="${item.rentalRateId}" data-name="${item.label}">${item.label}</div>`); 3475 }); 3476 const DEFAULT_LABEL_TEXT = $seasonalPriceInput.find('.label span').text(); 3477 $seasonalPriceInput.find('.option').click(evt => { 3478 $seasonalPriceInput.find('.option').removeClass('selected'); 3479 if ($seasonalPriceInput.data('selected') !== $(evt.target).data('id')) { 3480 $seasonalPriceInput.data('selected', $(evt.target).data('id')); 3481 $seasonalPriceInput.find('.dropdown .reset').removeClass('hidden'); 3482 $seasonalPriceInput.find('.label span').text($(evt.target).data('name')); 3483 $(evt.target).addClass('selected'); 3484 } else { 3485 $seasonalPriceInput.data('selected', null); 3486 $seasonalPriceInput.find('.reset').addClass('hidden'); 3487 $seasonalPriceInput.find('.label span').text(DEFAULT_LABEL_TEXT); 3488 } 3489 onSearch(); 3490 }); 3491 if (rentalRates.length > 5) $seasonalPriceInput.find('.dropdown').css("overflow-y", "scroll"); 3492 const searchParamsId = new URLSearchParams(window.location.search).get('seasonalPriceId'); 3493 if (searchParamsId) { 3494 updateSeasonalPrice(searchParamsId); 3495 } 3496 }); 3497 searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000)); 3498 searchContainer.on('sync', function (ev, params) { 3499 params = ev.detail || params; 3500 priceSlider.data('ionRangeSlider').update({ 3501 from: params.salesPriceGTE, 3502 to: params.salesPriceLTE 3503 });
3504 areaSlider.data('ionRangeSlider').update({ 3505 from: params.livingSpaceSizeGTE, 3506 to: params.livingSpaceSizeLTE 3507 }); 3508 bathsSlider.data('ionRangeSlider').update({ 3509 from: params.bathCountGTE, 3510 to: params.bathCountLTE 3511 }); 3512 bedsSlider.data('ionRangeSlider').update({ 3513 from: params.bedroomCountGTE, 3514 to: params.bedroomCountLTE 3515 }); 3516 searchInput.val(params.search); 3517 updateNeighborhoods(params.neighborhoodId); 3518 updateSeasonalPrice(params.seasonalPriceId); 3519 updateTypes(params.neighborhoodId); 3520 updatePrice(params.neighborhoodId); 3521 }); 3522 dataContainer.on('no-data', function () { 3523 emptyResultElement.show(); 3524 }); 3525 dataContainer.on('data', function () { 3526 emptyResultElement.hide(); 3527 }); 3528 $inputs.on('click', function (evt) { 3529 let el = $(evt.target).closest('.search-dropdown'); 3530 let ddHidden = el.find('.dropdown').hasClass('hidden'); 3531 $inputs.find('.dropdown').addClass('hidden'); 3532 $inputs.removeClass('active'); 3533 if (!ddHidden) { 3534 el.find('.dropdown').addClass('hidden'); 3535 el.removeClass('active'); 3536 } else { 3537 el.find('.dropdown').removeClass('hidden'); 3538 el.addClass('active'); 3539 } 3540 }); 3541 $(document.body).click(function (evt) { 3542 if (!$(evt.target).closest('#' + sectionDomId + ' .search-dropdown').length) { 3543 $inputs.find('.dropdown').addClass('hidden'); 3544 $inputs.removeClass('active'); 3545 } 3546 }); 3547 $(document).on("click", '#' + sectionDomId + ' .property-list__share .btn', function () { 3548 if ($(this).parent().hasClass('property-list__share--opened')) { 3549 $(this).parent().removeClass('property-list__share--opened'); 3550 } else { 3551 $('#' + sectionDomId + ' .property-list__share').removeClass('property-list__share--opened'); 3552 $(this).parent().addClass('property-list__share--opened'); 3553 } 3554 }); 3555 $pricesortInput.find('.dropdown .option').click(evt => { 3556 $pricesortInput.find('.dropdown .option').each((i, e) => { 3557 $(e).removeClass('selected'); 3558 }); 3559 if ($pricesortInput.data('selected') !== $(evt.target).data('value')) { 3560 $pricesortInput.data('selected', $(evt.target).data('value')); 3561 $pricesortInput.find('.dropdown .reset').removeClass('hidden'); 3562 $pricesortInput.find('.label span').html($(evt.target).data('name')); 3563 $(evt.target).addClass('selected'); 3564 } else { 3565 $pricesortInput.data('selected', null); 3566 $pricesortInput.find('.reset').addClass('hidden'); 3567 $pricesortInput.find('.label span').html('Sort by Price'); 3568 } 3569 onSearch(); 3570 }); 3571 $typesInput.find('.dropdown .option').click(evt => { 3572 $typesInput.find('.dropdown .option').each((i, e) => { 3573 $(e).removeClass('selected'); 3574 }); 3575 if ($typesInput.data('selected') !== $(evt.target).data('value')) { 3576 $typesInput.data('selected', $(evt.target).data('value')); 3577 $typesInput.find('.dropdown .reset').removeClass('hidden'); 3578 $typesInput.find('.label span').html($(evt.target).data('name')); 3579 $(evt.target).addClass('selected'); 3580 } else { 3581 $typesInput.data('selected', null); 3582 $typesInput.find('.reset').addClass('hidden'); 3583 $typesInput.find('.label span').html('Sort by Property Type'); 3584 } 3585 onSearch(); 3586 }); 3587 function populateNeighborhoods() { 3588 getLocations().then(res => { 3589 res.forEach(n => { 3590 $section.find('.neighborhood-select .dropdown').append(`<div class="option" data-id="${n.id}" data-name="${n.name}">${n.name}</div>`); 3591 }); 3592 $neighborhoodInput.find('.dropdown .option').click(evt => { 3593 $neighborhoodInput.find('.dropdown .option').each((i, e) => { 3594 $(e).removeClass('selected'); 3595 }); 3596 if ($neighborhoodInput.data('selected') !== $(evt.target).data('id')) { 3597 $neighborhoodInput.data('selected', $(evt.target).data('id')); 3598 $neighborhoodInput.find('.dropdown .reset').removeClass('hidden'); 3599 $neighborhoodInput.find('.label span').html($(evt.target).data('name')); 3600 $(evt.target).addClass('selected'); 3601 } else { 3602 $neighborhoodInput.data('selected', null); 3603 $neighborhoodInput.find('.reset').addClass('hidden'); 3604 $neighborhoodInput.find('.label span').html('Select Neighborhood'); 3605 } 3606 onSearch(); 3607 }); 3608 if (res.length > 5) $neighborhoodInput.find('.dropdown').css("overflow-y", "scroll"); 3609 const id = new URLSearchParams(window.location.search).get('neighborhoodId'); 3610 updateNeighborhoods(id); 3611 }); 3612 } 3613 function getLocations() { 3614 var url = window.luxuryPresence.defaults.apiGatewayUrl; 3615 var gqlQuery = 'query ($companyId: String) {' + 'neighborhoods (companyId: $companyId) {id, name, mlsLink}}'; 3616 var payload = { 3617 offset: 0, 3618 companyId: window.luxuryPresence.defaults.companyId 3619 }; 3620 return superagent.post(url + '/graphql').withCredentials().send({ 3621 query: gqlQuery, 3622 variables: payload 3623 }).then(function (res) { 3624 return (res.body.data || {}).neighborhoods || []; 3625 }, function (err) { 3626 return []; 3627 }); 3628 } 3629 function updateNeighborhoods(id) { 3630 $neighborhoodInput.data('selected', id); 3631 let opt = $neighborhoodInput.find(`div[data-id='${id}']`); 3632 $neighborhoodInput.find('.label span').html(opt.data("name")); 3633 opt.addClass("selected"); 3634 reset($neighborhoodInput.find('.dropdown').data("default"), $neighborhoodInput); 3635 } 3636 function updateSeasonalPrice(id) { 3637 $seasonalPriceInput.data('selected', id); 3638 let opt = $seasonalPriceInput.find(`.option[data-id='${id}']`); 3639 $seasonalPriceInput.find('.label span').text(opt.data("name")); 3640 opt.addClass("selected"); 3641 reset($seasonalPriceInput.find('.dropdown').data("default"), $seasonalPriceInput); 3642 } 3643 function updateTypes(id) { 3644 $typesInput.data('selected', id); 3645 let opt = $typesInput.find(`div[data-value='${id}']`); 3646 $typesInput.find('.label span').html(opt.data("name")); 3647 opt.addClass("selected"); 3648 reset($typesInput.find('.dropdown').data("default"), $typesInput); 3649 } 3650 function updatePrice(id) { 3651 $pricesortInput.data('selected', id); 3652 let opt = $pricesortInput.find(`div[data-value='${id}']`); 3653 $pricesortInput.find('.label span').html(opt.data("name")); 3654 opt.addClass("selected"); 3655 reset($pricesortInput.find('.dropdown').data("default"), $pricesortInput); 3656 } 3657 populateNeighborhoods(); 3658 $section.find('.reset').click(evt => { 3659 reset($(evt.target).parent().data("default"), $(evt.target).parent().parent()); 3660 onSearch(); 3661 }); 3662 function reset(text, input) { 3663 input.find('.reset').addClass('hidden'); 3664 input.data('selected', null); 3665 input.find('.dropdown .option').each((i, e) => { 3666 $(e).removeClass('selected'); 3667 }); 3668 input.find('.label span').html(text); 3669 } 3670 $section.find('.clear-btn').click(function () { 3671 [$neighborhoodInput, $typesInput, $pricesortInput, $seasonalPriceInput].forEach(e => { 3672 reset(e.find('.dropdown').data("default"), e); 3673 }); 3674 searchContainer[0]?.dispatchEvent(new Event('clear-search')); 3675 }); 3676 if (rangeSliderInitialized) { 3677 if (!priceSlider.destroy) { 3678 $(`#${sectionDomId} .search-item.price >.irs`).remove(); 3679 initPriceSlider(); 3680 } 3681 if (!areaSlider.destroy) { 3682 $(`#${sectionDomId} .search-item.area >.irs`).remove(); 3683 initAreaSlider(); 3684 } 3685 if (!bedsSlider.destroy) { 3686 $(`#${sectionDomId} .search-item.beds >.irs`).remove(); 3687 initBedsSlider(); 3688 } 3689 if (!bathsSlider.destroy) { 3690 $(`#${sectionDomId} .search-item.baths >.irs`).remove(); 3691 initBathsSlider(); 3692 } 3693 } else { 3694 initPriceSlider(); 3695 initAreaSlider(); 3696 initBedsSlider(); 3697 initBathsSlider(); 3698 } 3699 function initPriceSlider() { 3700 priceSlider.ionRangeSlider({ 3701 type: "double", 3702 skin: 'round', 3703 grid: false, 3704 force_edges: false, 3705 hide_min_max: false, 3706 hide_from_to: false, 3707 block: false, 3708 prettify: function (val) { 3709 return window.luxuryPresence.formatSliderPriceRange(val, { 3710 min: priceMin, 3711 max: priceMax 3712 }, "", { 3713 lowPrefix: "", 3714 highSuffix: "" 3715 }); 3716 }, 3717 onFinish: onSearch 3718 }); 3719 } 3720 function initAreaSlider() {
3721 areaSlider.ionRangeSlider({ 3722 type: "double", 3723 skin: 'round', 3724 grid: false, 3725 force_edges: false, 3726 hide_min_max: false, 3727 hide_from_to: false, 3728 block: false, 3729 prettify: function (val) { 3730 return window.luxuryPresence.formatSliderAreaRange(val, { 3731 min: areaMin, 3732 max: areaMax 3733 }, "SF", { 3734 lowPrefix: "<", 3735 highSuffix: "+" 3736 }); 3737 }, 3738 onFinish: onSearch 3739 }); 3740 } 3741 function initBedsSlider() { 3742 bedsSlider.ionRangeSlider({ 3743 type: "double", 3744 skin: 'round', 3745 grid: false, 3746 force_edges: false, 3747 hide_min_max: false, 3748 hide_from_to: false, 3749 block: false, 3750 prettify: function (val) { 3751 return val <= 1 ? `<1 BED MIN` : `${val} BEDS`; 3752 }, 3753 onFinish: onSearch 3754 }); 3755 } 3756 function initBathsSlider() { 3757 bathsSlider.ionRangeSlider({ 3758 type: "double", 3759 skin: 'round', 3760 grid: false, 3761 force_edges: false, 3762 hide_min_max: false, 3763 hide_from_to: false, 3764 block: false, 3765 prettify: function (val) { 3766 return val <= 1 ? `<1 BATH MIN` : `${val} BATHS`; 3767 }, 3768 onFinish: onSearch 3769 }); 3770 } 3771})('section-da28ff70-b32c-4718-98b5-01a5d85656ab', JSON.parse("{\"resource\":\"properties\",\"useRouterApi\":false,\"companyId\":\"850552e9-2cd2-407f-a7ee-18f5819cdb5f\",\"usePageResource\":false,\"sectionIndex\":2,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 3772} catch(e) { 3773console.log(e); 3774} 3775 try { 3776(function init(sectionDomId) { 3777 var $section = $('#' + sectionDomId); 3778 $section.find('.media-card__description').each(function () { 3779 var $desc = $(this); 3780 var fullHtml = $desc.html(); 3781 var text = $desc.text(); 3782 if (text.length > 188) { 3783 var substring = text.substring(0, 188); 3784 $desc.empty().append(`<span class="substring">${substring}... <a class="btn-more">VIEW MORE</a></span>`).append(`<div class="more-text">${fullHtml} <a class="btn-more">VIEW LESS</a></div>`); 3785 $desc.addClass('cropped'); 3786 } 3787 }); 3788 $section.find('.btn-more').on('click', function (e) { 3789 e.preventDefault(); 3790 $(this).closest('.media-card__description').toggleClass('cropped'); 3791 }); 3792})('section-3bd492d6-c0b9-4b2b-acf6-883219de6476', 'undefined'); 3793} catch(e) { 3794console.log(e); 3795} 3796 try { 3797(function init(sectionDomId) { 3798 const $section = $('#' + sectionDomId); 3799 if ($section.find('.parallax').length) $section.addClass('parallax-enabled'); 3800 if ($section.find('.video-wrapper').length) $section.addClass('video'); 3801})('section-ac7b98db-fd2c-445d-a1fd-0d9a94bda4f5', 'undefined'); 3802} catch(e) { 3803console.log(e); 3804} 3805 try { 3806(function init(sectionDomId, options) { 3807 let section = null; 3808 switch (sectionDomId) { 3809 case 'NAVBAR': 3810 section = document.querySelector('body > nav, #global-navbar'); 3811 break; 3812 case 'FOOTER': 3813 section = document.querySelector('body > footer, #global-footer'); 3814 break; 3815 case 'SIDEMENU': 3816 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3817 break; 3818 case 'CONTACT': 3819 section = document.querySelector('#modal-global-contact-us'); 3820 break; 3821 case 'MOBILE_CONTACT': 3822 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3823 break; 3824 case 'SUBSCRIBE': 3825 // Subscribe Not Implemented 3826 section = null; 3827 break; 3828 case 'ACCOUNT': 3829 // Account Not Implemented 3830 section = null; 3831 break; 3832 default: 3833 section = document.querySelector('#' + sectionDomId); 3834 } 3835 if (!section) { 3836 return; 3837 } 3838 var url = window.luxuryPresence.defaults.routerUrl; 3839 var companyId = window.luxuryPresence.defaults.companyId; 3840 var limit = options.limit || 8; 3841 if (typeof limit === 'string') { 3842 limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected 3843 } 3844 var templateSelector = options.templateSelector || '.jsIGTemplate'; 3845 var containerSelector = options.containerSelector || '.jsIGContainer'; 3846 var hasDataClass = options.hasDataClass || 'has-data'; 3847 var hideActivateMessage = options.hasDataClass || false; 3848 var payload = { 3849 companyId: companyId, 3850 limit: limit 3851 }; 3852 if (options.resourceId && typeof options.resourceId === 'string' && !
3852options.resourceId.match(/^{{.*}}$/)) { 3853 payload.resourceId = options.resourceId; 3854 // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase 3855 payload.resource = String(options.resource || 'agent').toUpperCase(); 3856 payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true; 3857 } 3858 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'; 3859 var templateHTML = section.querySelector(templateSelector)?.innerHTML || ''; 3860 var template = Handlebars.compile(templateHTML); 3861 var container = section.querySelector(containerSelector); 3862 if (options.variables) { 3863 Object.keys(options.variables).forEach(function (key) { 3864 if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) { 3865 payload[key] = options.variables[key]; 3866 } 3867 }); 3868 } 3869 function getData() { 3870 var feed = { 3871 error: true 3872 }; 3873 if (payload.companyId == null || payload.companyId === '') { 3874 // instagramContentFeed requires companyId (ID!) â nothing to fetch without it. 3875 // Checked after the options.variables merge, which may override the default. 3876 // Deferred so element listeners (attached after this template runs) still receive it. 3877 setTimeout(function () { 3878 section.dispatchEvent(new CustomEvent('ig-data', { 3879 detail: feed 3880 })); 3881 }, 0); 3882 return; 3883 } 3884 superagent.post(url + '/graphql').send({ 3885 query: query, 3886 variables: payload 3887 }).then(res => { 3888 try { 3889 if (!res.body.errors) { 3890 feed = res.body.data.instagramContentFeed; 3891 if (!feed.active) { 3892 if (!hideActivateMessage && sectionDomId === 'section-temp' && container) { 3893 if (payload.resourceId) { 3894 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>'; 3895 } else { 3896 container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>'; 3897 } 3898 } 3899 } else { 3900 if (feed.items.length) { 3901 if (hasDataClass) { 3902 section.classList.add(hasDataClass); 3903 } 3904 const feedName = feed.username; 3905 section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl)); 3906 section.querySelectorAll('.jsIGName').forEach(name => { 3907 name.textContent = '@' + feedName; 3908 name.setAttribute('title', '@' + feedName); 3909 }); 3910 if (container && template) { 3911 container.innerHTML = template(feed); 3912 } 3913 } 3914 } 3915 } 3916 } catch (e) {} 3917 section.dispatchEvent(new CustomEvent('ig-data', { 3918 detail: feed 3919 })); 3920 }).catch(e => { 3921 console.log('err', e); 3922 section.dispatchEvent(new CustomEvent('ig-data', { 3923 detail: feed 3924 })); 3925 }); 3926 } 3927 getData(); 3928})('section-739c3d68-8237-4212-b354-6f93e6c00751', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"850552e9-2cd2-407f-a7ee-18f5819cdb5f\",\"usePageResource\":false,\"sectionIndex\":5,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 3929} catch(e) { 3930console.log(e); 3931} 3932 try { 3933(function init(sectionDomId) { 3934 const $section = $('#' + sectionDomId); 3935 var templateHTML = $section.find('.jsIGItem').html(); 3936 var itemTemplate = templateHTML && Handlebars.compile(templateHTML); 3937 const $container = $section.find('.ig-feed-feed'); 3938 const $topPrev = $section.find('.top-nav-prev'); 3939 const $topNext = $section.find('.top-nav-next'); 3940 const $bottomPrev = $section.find('.bottom-nav-prev'); 3941 const $bottomNext = $section.find('.bottom-nav-next'); 3942 let limit = 33; 3943 try { 3944 limit = parseInt($container[0].dataset['limit']); 3945 } catch (e) {} 3946 if (!limit) { 3947 limit = 33; 3948 } 3949 let igFeed = {}; 3950 let usedWidth = 0; 3951 let slider = null; 3952 $section.on('ig-data', function (ev, feed) { 3953 feed = ev.detail || feed; 3954 igFeed = feed; 3955 if (feed.active && feed.items.length) { 3956 buildSlider(); 3957 } 3958 }); 3959 $(window).on('resize.lpui-auto-clean', onResize); 3960 let timer = null; 3961 function onResize() { 3962 clearTimeout(timer); 3963 timer = window.setTimeout(buildSlider, 50); 3964 } 3965 function getLayout(w, n) { 3966 if (w > 1100) { 3967 if (n > 7) { 3968 return { 3969 type: 'type1', 3970 single: 1, 3971 multi: n, 3972 slides: 3, 3973 slider: n > 9 3974 }; 3975 } 3976 if (n > 5) { 3977 return { 3978 type: 'type1', 3979 single: 2, 3980 multi: n, 3981 slides: 3, 3982 slider: false 3983 }; 3984 } 3985 return { 3986 type: 'type1', 3987 single: n, 3988 multi: n, 3989 slides: 3, 3990 slider: n > 3 3991 }; 3992 } else if (w > 880) { 3993 if (n > 4) { 3994 return { 3995 type: 'type2', 3996 single: 1, 3997 multi: n, 3998 slides: 2.5, 3999 slider: n > 7 4000 }; 4001 } 4002 return { 4003 type: 'type1', 4004 single: n, 4005 multi: n, 4006 slides: 3, 4007 slider: n > 3 4008 }; 4009 } else if (w > 767) { 4010 if (n > 4) { 4011 return { 4012 type: 'type3', 4013 single: 1, 4014 multi: n, 4015 slides: 2, 4016 slider: n > 5 4017 }; 4018 } 4019 return { 4020 type: 'type4', 4021 single: n, 4022 multi: n, 4023 slides: 2, 4024 slider: n > 2 4025 }; 4026 } else if (w > 460) { 4027 return { 4028 type: 'type4', 4029 single: n, 4030 multi: n, 4031 slides: 2, 4032 slider: n > 2 4033 }; 4034 } 4035 return { 4036 type: 'type5', 4037 single: n, 4038 multi: n, 4039 slides: 1, 4040 slider: n > 1 4041 }; 4042 } 4043 function ensureClass($el, className) { 4044 if ($el.hasClass(className)) { 4045 return; 4046 } 4047 $el.addClass(className); 4048 } 4049 function makeSquare($el) { 4050 const el = $el[0]; 4051 el.style.width = ''; 4052 el.style.height = ''; 4053 const rect = el.getBoundingClientRect(); 4054 if (rect.width !== rect.height) { 4055 el.style.width = rect.height + 'px'; 4056 } 4057 } 4058 function buildSlider() { 4059 const cWidth = $container[0].getBoundingClientRect().width; 4060 if (cWidth === usedWidth) { 4061 return; 4062 } 4063 $container.empty();
4064 slider = $('<div class="ig-feed-slider"></div>'); 4065 const items = igFeed.items.slice(0, limit); 4066 const layout = getLayout(cWidth, items.length); 4067 let i = 0; 4068 let slide = null; 4069 while (i < layout.single) { 4070 slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider); 4071 i++; 4072 } 4073 while (i < layout.multi) { 4074 slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider); 4075 let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide); 4076 const lim = i + 4; 4077 while (i < lim && i < layout.multi) { 4078 slideContent.append(itemTemplate(items[i])); 4079 i++; 4080 } 4081 } 4082 $container.append(slider); 4083 if (layout.slider) { 4084 $topPrev.removeClass('hidden-control'); 4085 $topNext.removeClass('hidden-control'); 4086 $bottomPrev.removeClass('hidden-control'); 4087 $bottomNext.removeClass('hidden-control'); 4088 let prev, next; 4089 if ($bottomPrev.parent()[0].getBoundingClientRect().width) { 4090 prev = $bottomPrev; 4091 next = $bottomNext; 4092 } else { 4093 prev = $topPrev; 4094 next = $topNext; 4095 makeSquare($topPrev); 4096 makeSquare($topNext); 4097 } 4098 slider.children().each(function () { 4099 this.style.width = this.getBoundingClientRect().width + 'px'; 4100 }); 4101 slider.slick({ 4102 dots: false, 4103 prevArrow: prev, 4104 nextArrow: next, 4105 slidesToScroll: 1, 4106 infinite: false, 4107 slidesToShow: layout.slides 4108 }); 4109 } else { 4110 ensureClass($topPrev, 'hidden-control'); 4111 ensureClass($topNext, 'hidden-control'); 4112 ensureClass($bottomPrev, 'hidden-control'); 4113 ensureClass($bottomNext, 'hidden-control'); 4114 } 4115 } 4116})('section-739c3d68-8237-4212-b354-6f93e6c00751', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"companyId\":\"850552e9-2cd2-407f-a7ee-18f5819cdb5f\",\"usePageResource\":false,\"sectionIndex\":5,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4117} catch(e) { 4118console.log(e); 4119} 4120 4121 var { body } = document; 4122 var globalNav = body.querySelector(':scope > nav'); 4123 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 4124 4125 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 4126 modalCloseBtn.addEventListener('click', function() { 4127 window.lpUI.hideClosestModal(modalCloseBtn); 4128 }); 4129 }); 4130 4131 window.addEventListener('click', function() { 4132 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 4133 sharedPopup.style.display = 'none' ; 4134 }); 4135 }); 4136 4137 /* Misc Partials / Addons */ 4138 function initWOW() { 4139 if (wow) { 4140 wow.init(); 4141 wow.scrollHandler(); 4142 setTimeout(function () { 4143 const wowHideStyle = document.getElementById('wow-hide-elements'); 4144 if(wowHideStyle) { 4145 wowHideStyle.disabled = true; 4146 } 4147 }, 1); 4148 } 4149 } 4150 4151 const wowHideElements = document.getElementById('wow-hide-elements'); 4152 if (wowHideElements) { 4153 wowHideElements.disabled = false; 4154 } 4155 4156 initWOW(); 4157 4158 /* Generic Navbar Handling */ 4159 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 4160 hamburgerComponent.addEventListener('click', function() { 4161 window.lpUI.sideMenuToggle(); 4162 }); 4163 }); 4164 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 4165 toggleEl.addEventListener('click', function() { 4166 window.lpUI.sideMenuToggle(); 4167 }); 4168 }); 4169 4170 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 4171 linkEl.addEventListener('click', function(e) { 4172 e.preventDefault(); 4173 e.stopPropagation();
4174 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 4175 if (subNav && subNav.classList.contains('visible')){ 4176 subNav.classList.remove('visible'); 4177 } else { 4178 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 4179 globalSubNav.classList.remove('visible'); 4180 }); 4181 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 4182 sideMenuSubNav.classList.remove('visible'); 4183 }); 4184 subNav?.classList.add('visible'); 4185 } 4186 }); 4187 }); 4188 window.addEventListener('click', function() { 4189 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 4190 subNavEl.classList.remove('visible'); 4191 }); 4192 }); 4193 4194 } 4195 4196 document.addEventListener('DOMContentLoaded', lpGlobalInit); 4197 4198 </script>
4198 4199 4200
4200<script type="module"> 4201 function selectorExists(selector) { 4202 return document.querySelector(selector) !== null; 4203 } 4204 4205 // Function to initialize the third-party library 4206 function initParoller(selector = '.my-paroller') { 4207 var $parollerElements = $(selector); 4208 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 4209 $parollerElements.paroller(); 4210 } 4211 } 4212 4213 const parollerSelector = '.my-paroller'; 4214 4215 if (selectorExists(parollerSelector)) { 4216 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 4217 initParoller(parollerSelector); 4218 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 4219 }); 4220 } 4221 </script>
4221 4222 4223 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 4223-4224
4223 4224 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
4224GTM-T9SFQGHZ
vendor: 107 bytes, lines 4224-4226
4224" 4225 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 4226
4226<!-- End Google Tag Manager --> 4227
4227<script> 4228 window.addEventListener('load', function() { 4229 var myInterval = setInterval(function() { 4230 var buttonSelector = document.querySelector('button.submitButton'); 4231 4232 if (buttonSelector) { 4233 buttonSelector.addEventListener('click', function() { 4234 gtag('event', 'ContactFormSubmission', {'send_to': 'G-JP7X59867S'}); 4235 }) 4236 clearInterval(myInterval); 4237 }; 4238 }, 3000); 4239 }); 4240</script>
4240 4241
4242<script> 4243 window.addEventListener('load', function() { 4244 document.querySelectorAll('a[href^=tel]').forEach(function(link) { 4245 link.addEventListener('click', function() { 4246 gtag('event', 'PhoneClick', {'send_to': 'G-JP7X59867S'}); 4247 }); 4248 }); 4249 }); 4250</script>
4250 4251
4251<script 4252 src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js" 4253 data-website-id="5c8ab3ef-2f1d-45fe-9125-fcc3c56486bf" 4254 4255 defer></script>
vendor: 1 bytes, line 4255
4255
4256<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:'a47472ebefa2b07e',t:'MTc5MTQ1NTIwMw=='};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>
4256<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>
4256 4257</body> 4258</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.