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>California Real Estate Tips & More | Lisa Smith & Co.</title> 10 <meta property="og:title" content="California Real Estate Tips & More | Lisa Smith & Co."> 11 <meta name="twitter:title" content="California Real Estate Tips & More | Lisa Smith & Co."> 12 <meta name="description" content="Looking for a top real estate agent? Meet Lisa Smith E&V, specializing in California Real Estate. Trust her expertise for your dream home search today!"> 13 <meta property="og:description" content="Looking for a top real estate agent? Meet Lisa Smith E&V, specializing in California Real Estate. Trust her expertise for your dream home search today!"> 14 <meta name="twitter:description" content="Looking for a top real estate agent? Meet Lisa Smith E&V, specializing in California Real Estate. Trust her expertise for your dream home search today!"> 15 <meta property="og:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/q2wmgt71pmd0p90ed20c"> 16 <meta name="twitter:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/q2wmgt71pmd0p90ed20c"> 17 <meta property="og:url" content="https://smithandcorealtors.com/blog"> 18 <link rel="canonical" href="https://smithandcorealtors.com/blog"> 19
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cormorant%20Garamond:300,300i,400,400i,500,500i,600,600i,700,700i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i"> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:'Cormorant Garamond',serif;--global-primary-font-family-short:Cormorant Garamond;--global-secondary-font-family:Montserrat,sans-serif;--global-secondary-font-family-short:Montserrat;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:64px;--global-h2-font-size:44px;--global-h3-font-size:36px;--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:Montserrat,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:'Cormorant Garamond',serif;}h1{font-size:64px;}h2{font-size:44px;}h3{font-size:36px;}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">:root{--accent:#121275;--accent1:#121275;--dark:#000;--white:#fff;--offwhite:#EAEAEA;--textCasing:uppercase;}.lp-btn,.redesign .lp-btn{padding:20px 46px;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}body>div.mobile-contact-wrapper .mobile-contact.with-search div.buttons-holder{bottom:150px;}@media only screen and (max-width: 768px){iframe[name='widgetCta']{bottom:55px!important;right:15px!important;}}iframe[name="widgetCta"]{bottom:70px!important;right:15px!important;}h1,h2,h3,h4,h5,.lp-h1,.lp-h2,.lp-h3,.lp-h4,.lp-h5{text-transform:uppercase!important;}div#global-sidemenu.sidemenu a,nav#global-navbar a{text-transform:uppercase;}div#global-sidemenu.sidemenu button,nav#global-navbar button{text-transform:uppercase;}a.lp-btn,button.lp-btn,span.lp-btn,a.btn,button.btn,span.btn{border-width:1px!important;font-weight:400!important;}footer#global-footer div.container{padding-left:16px;padding-right:16px;padding-top:64px;padding-bottom:45px;box-sizing:border-box;max-width:1400px;}footer#global-footer div.container>h3{display:none;}footer#global-footer div.container div.info-wrap div.info-wrap-contact{padding-left:0px;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(1){display:none;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell{display:-ms-grid;display:grid;-ms-grid-columns:repeat(3, 300px);grid-template-columns:repeat(3, 300px);-ms-grid-rows:1fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:'logo logo logo' 'one two three';padding-left:48px;padding-right:48px;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;margin-left:auto;margin-right:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:16px;-webkit-flex:1;-ms-flex:1;flex:1;}@media (max-width: 768px){footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell{grid-template-areas:'logo' 'one' 'three' 'two';-ms-grid-columns:1fr;grid-template-columns:1fr;padding-left:0px;padding-right:0px;margin-bottom:0px;}}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell i,footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell p.info-wrap-contact_title,footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell p.info-wrap-contact_link{display:none;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;
31-webkit-justify-content:center;justify-content:center;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info>*{text-align:center;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info:nth-child(4){grid-area:logo;width:240px;margin:auto;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info:nth-child(4) img{max-height:100%;object-fit:contain;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info:nth-child(5){grid-area:one;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info:nth-child(6){grid-area:two;}footer#global-footer div.container div.info-wrap div.info-wrap-contact>*:nth-child(2) div.info-wrap-contact_cell div.contact-info:nth-child(7){grid-area:three;}footer#global-footer div.container div.first_text_footer{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;padding-left:48px;padding-right:48px;margin-bottom:24px;}@media (max-width: 768px){footer#global-footer div.container div.first_text_footer{padding-left:0px;padding-right:0px;}}footer#global-footer div.container div.first_text_footer div.images_box{margin-right:auto;margin-left:auto;max-width:240px;}footer#global-footer div.container div.first_text_footer div.images_box div.img_size{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;}footer#global-footer div.container div.first_text_footer div.luxury-text>*{text-align:center;}footer#global-footer div.container div.info-privacy{padding-top:24px;border-top:1px solid rgba(0, 0, 0, 0.1);}footer#global-footer div.container div.info-privacy div.info-privacy__row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--powered{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0px;padding-right:0px;gap:8px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--powered div.img-wrap{margin-right:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--powered div.powered_zone{padding-top:0px;padding-bottom:0px;text-transform:uppercase;font-size:12px;margin-bottom:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--copyright{padding:0px;margin:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--copyright div.copy_zone{padding:0px;margin-bottom:0px;font-size:12px;text-transform:uppercase;border-top:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--socials{padding:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--socials ul.lp-socials{gap:12px;margin-bottom:0px;}footer#global-footer div.container div.info-privacy div.info-privacy__row div.form-col--socials ul.lp-socials li{padding:0px;}footer#global-footer a:not(.lp-socials__link){position:relative!important;color:#000!important;-webkit-transition:0.4s;transition:0.4s;font-weight:400;-webkit-text-decoration:none!important;text-decoration:none!important;}footer#global-footer a:not(.lp-socials__link):hover{color:var(--accent)!important;}footer#global-footer a:not(.lp-socials__link):before,footer#global-footer a:not(.lp-socials__link):after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"" "";height:1px;position:absolute!important;bottom:0;left:0;}footer#global-footer a:not(.lp-socials__link):before{width:100%!important;background-color:rgba(0, 0, 0, 0.1)!important;}footer#global-footer a:not(.lp-socials__link):after{width:0%!important;background-color:var(--accent)!important;}footer#global-footer a:not(.lp-socials__link):hover:after{width:100%!important;}@media only screen and (max-width: 768px){footer#global-footer a:not(.lp-socials__link){-webkit-text-decoration:underline;text-decoration:underline;}footer#global-footer a:not(.lp-socials__link):before,footer#global-footer a:not(.lp-socials__link):after{display:none;}footer#global-footer a:not(.lp-socials__link):hover{color:var(--accent);}}nav#global-navbar:is(.scroll){background:var(--offwhite)!important;}nav#global-navbar:is(.scroll) div.logo img.light{display:none!important;}nav#global-navbar:is(.scroll) div.logo img.dark{display:block!important;}nav#global-navbar:is(.scroll) button.hamburger-component span.hamburger__bars{background:var(--accent);}nav#global-navbar:is(.scroll) button.hamburger-component span.hamburger__bars:before,nav#global-navbar:is(.scroll) button.hamburger-component span.hamburger__bars:after{background:var(--accent);}nav#global-navbar:is(.scroll) div.logo{border-bottom:1px solid rgba(0, 0, 0, 0.1);}nav#global-navbar:is(.scroll) div.navigation ul li.navigation__item:nth-child(1){background-color:var(--accent)!important;}nav#global-navbar:is(.scroll) div.navigation .sub-nav__link{color:#fff;}nav#global-navbar:is(.scroll) div.navigation .sub-nav__link:after{background:#35312E;}nav#global-navbar:is(.scroll) div.navigation a{color:#35312E;}nav#global-navbar:is(.scroll) div.navigation a span:after{background:#35312E;}nav#global-navbar div.logo{border-bottom:1px solid rgba(255, 255, 255, 0.5);}
31@media (max-width: 1200px){nav#global-navbar div.logo{border-color:transparent!important;}}nav#global-navbar div.navigation a{color:#FFF;}nav#global-navbar div.navigation a span{font-weight:400;}nav#global-navbar div.navigation a span:after{background:#FFF;}nav#global-navbar div.header{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;margin-top:0px;}nav#global-navbar div.header{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;}nav#global-navbar div.header div.header__container{max-width:1400px;padding-left:16px;padding-right:16px;}nav#global-navbar div.navbar{display:-ms-grid;display:grid;grid-template-areas:'one one' 'two three';-ms-grid-rows:1fr fit-content;grid-template-rows:1fr fit-content;-ms-grid-columns:1fr auto;grid-template-columns:1fr auto;padding-bottom:0px;padding-top:0px;}@media (max-width: 1200px){nav#global-navbar div.navbar{grid-template-areas:'one two three';}}nav#global-navbar div.navbar>*:nth-child(1){grid-area:one;}nav#global-navbar div.navbar>*:nth-child(2){grid-area:two;}nav#global-navbar div.navbar>*:nth-child(3){grid-area:three;}nav#global-navbar div.navbar div.logo{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-right:0px;padding-top:16px;padding-bottom:16px;}@media (max-width: 1200px){nav#global-navbar div.navbar div.logo{padding-top:0px;padding-bottom:0px;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;}}nav#global-navbar div.navbar div.navigation{width:100%;padding-left:42px;}nav#global-navbar div.navbar div.navigation ul{margin:0px;gap:32px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}nav#global-navbar div.navbar div.navigation ul li.navigation__item:nth-child(1){background-color:#FFF;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>');mask-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>');background-repeat:no-repeat;height:26px;width:26px;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;position:absolute;left:-42px;}nav#global-navbar div.navbar div.navigation ul li.navigation__item:nth-child(1) a{height:100%;width:100%;}nav#global-navbar div.navbar div.navigation ul li.navigation__item a.navigation__link{padding:0px;}@media (max-width: 1200px){nav#global-navbar div.navbar div.navigation{display:none;}}nav#global-navbar div.navbar button.hamburger{padding-left:16px;padding-right:0px;margin:0px;height:26px;}nav#global-navbar div.navbar button.hamburger span.hamburger__bars{height:1px;}nav#global-navbar div.navbar button.hamburger span.hamburger__bars:before,nav#global-navbar div.navbar button.hamburger span.hamburger__bars:after{height:1px;}nav .header .navigation__link{font-weight:400!important;}@media (min-width: 768px){nav#global-navbar a.logo__link img{height:44px;}}.contact-form__content .lp-btn{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important;}.contact-form__content .lp-btn:hover{background:transparent!important;color:var(--accent)!important;}div#global-mobile-contact a.search-btn{background:var(--accent);}div#global-mobile-contact a.search-btn:before{color:#FFF;}#global-mobile-contact .pop-up .lp-disclaimer a{position:relative!important;color:#000!important;-webkit-transition:0.4s;transition:0.4s;font-weight:400;-webkit-text-decoration:none!important;text-decoration:none!important;display:inline-block;}#global-mobile-contact .pop-up .lp-disclaimer a:hover{color:var(--accent)!important;}#global-mobile-contact .pop-up .lp-disclaimer a:before,#global-mobile-contact .pop-up .lp-disclaimer a:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"" "";height:1px;position:absolute!important;bottom:0;left:0;}#global-mobile-contact .pop-up .lp-disclaimer a:before{width:100%!important;background-color:rgba(0, 0, 0, 0.1)!important;}#global-mobile-contact .pop-up .lp-disclaimer a:after{width:0%!important;background-color:var(--accent)!important;}#global-mobile-contact .pop-up .lp-disclaimer a:hover:after{width:100%!important;}@media only screen and (max-width: 768px){#global-mobile-contact .pop-up .lp-disclaimer a{-webkit-text-decoration:underline;text-decoration:underline;}#global-mobile-contact .pop-up .lp-disclaimer a:before,#global-mobile-contact .pop-up .lp-disclaimer a:after{display:none;}#global-mobile-contact .pop-up .lp-disclaimer a:hover{color:var(--accent);}}#global-mobile-contact .pop-up input,#global-mobile-contact .pop-up textarea{border-color:rgba(0, 0, 0, 0.1);-webkit-text-fill-color:#000;}#global-mobile-contact .pop-up input:focus,#global-mobile-contact .pop-up textarea:focus{border-color:rgba(0, 0, 0, 0.75);}#global-mobile-contact .pop-up .close-btn{color:#000;}#global-mobile-contact .pop-up .lp-container{padding:64px;}@media only screen and (max-width: 768px){#global-mobile-contact .pop-up .lp-container{padding:24px 24px;}}div#global-loader img{max-height:240px;max-width:100%;}div#modal-global-contact-us .contact-form .info-zone .info-zone_contact_cell{margin-bottom:21px;}div#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:21px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:25px;}}div#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:14px;}div#modal-global-contact-us .contact-form .section-message h2{font-size:38px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form .section-message h2{font-size:28px;}}div#modal-global-contact-us .contact-form h2{font-size:38px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form h2{font-size:28px;}}div#modal-global-contact-us *{-webkit-animation-name:none!important;animation-name:none!important;}#modal-global-contact-us .contact-form .section-message label{text-transform:uppercase;color:#fff!important;}#modal-global-contact-us .lp-input-group .lp-input{border-color:rgba(255, 255, 255, 0.25)!important;}#modal-global-contact-us .lp-input-group .lp-input:focus{border-color:rgba(255, 255, 255, 1)!important;}div#modal-global-contact-us a:not(.lp-socials__link):after{background-color:#fff!important;}.info-zone_contact_cell a:hover{color:#fff!important;}.info-zone_contact_cell a:before{background-color:rgba(255, 255, 255, 0.25)!important;width:100%;}.info-zone_contact_cell a:after{background-color:#fff!important;}div#modal-global-contact-us .contact-form .section-message form{max-width:49
310px;}@media only screen and (max-width:1080px){div#modal-global-contact-us .contact-form h2{font-size:37px;}}@media only screen and (max-width:925px){div#modal-global-contact-us .contact-form h2{font-size:25px;}}div#modal-global-contact-us .close{top:4vh;}#modal-global-contact-us .lp-disclaimer a{-webkit-text-decoration:none!important;text-decoration:none!important;position:relative;display:inline-block;vertical-align:top;}#modal-global-contact-us .lp-disclaimer a:after,#modal-global-contact-us .lp-disclaimer a:before{content:"";height:1px;position:absolute;bottom:0;left:0;box-sizing:border-box;outline:none;-webkit-transition:0.4s;transition:0.4s;}#modal-global-contact-us .lp-disclaimer a:before{background-color:rgba(255, 255, 255, 0.25);width:100%;}#modal-global-contact-us .lp-disclaimer a:after{width:0%;-webkit-transition:0.4s;transition:0.4s;}#modal-global-contact-us .lp-disclaimer a:hover{-webkit-text-decoration:none!important;text-decoration:none!important;opacity:1;}#modal-global-contact-us .lp-disclaimer a:hover:after{width:100%;}div#modal-global-contact-us .contact-form{-webkit-background-position:center;background-position:center;}.lp-disclaimer .lp-tcr-message{font-weight:400!important;}</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css"> 34 #section-37090742-75c5-4ff8-8ef6-d3c202c82f24{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.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/q2wmgt71pmd0p90ed20c');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 div.custom-intro{height:80vh;}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{-webkit-background-position:50% 30%;background-position:50% 30%;}@media (max-width: 768px){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{-webkit-background-position:center;background-position:center;}}@-webkit-keyframes custom-intro-fade-in{0%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);-moz-transform:translate3d(0, -100%, 0);-ms-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);}100%{opacity:1;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);}}@keyframes custom-intro-fade-in{0%{opacity:0;-webkit-transform:translate3d(0, -100%, 0);-moz-transform:translate3d(0, -100%, 0);-ms-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);}100%{opacity:1;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);}}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 h1{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:custom-intro-fade-in;animation-name:custom-intro-fade-in;}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:600px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro .container{z-index:1;text-align:center;max-width:900px;}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro__title{margin-bottom:0px;font-weight:400;margin-bottom:24px;}@media (max-width: 768px){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro__title{font-size:32px;}}@media (max-width: 360px){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro__title{font-size:22px;}}#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro__subtitle{font-weight:400;white-space:pre-line;font-size:21px;line-height:1.57;}@media (max-width: 768px){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .custom-intro__subtitle{font-size:18px;}}
34#section-37090742-75c5-4ff8-8ef6-d3c202c82f24 .description{margin-bottom:15px;}@media (min-width: 960px) and (orientation: landscape){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{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/q2wmgt71pmd0p90ed20c');}}@media (min-width: 1280px) and (orientation: landscape){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{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/q2wmgt71pmd0p90ed20c');}}@media (min-width: 1920px) and (orientation: landscape){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{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/q2wmgt71pmd0p90ed20c');}}@media (min-width: 2560px) and (orientation: landscape){#section-37090742-75c5-4ff8-8ef6-d3c202c82f24{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/q2wmgt71pmd0p90ed20c');}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703{color:#35312E;--fontColor:#35312E;--fontColor_H:26;--fontColor_S:7%;--fontColor_L:19%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#Fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#Fff;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container{max-width:100%;padding-left:16px;padding-right:16px;gap:16px;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item{width:auto;position:relative;margin-bottom:0px;background:transparent;overflow:hidden;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item h4:after{display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-image{aspect-ratio:16/10;max-width:100%;padding-top:0px;margin-bottom:24px;width:100%;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-image img{object-fit:cover;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content{padding:0px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content>*{margin:0px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content h4.serif{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;margin-bottom:8px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content p{line-clamp:2;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span{margin-top:16px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;position:relative!important;color:#35312E!important;-webkit-transition:0.4s;transition:0.4s;font-weight:400;-webkit-text-decoration:none!important;text-decoration:none!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:hover{color:#35312E!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:before,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"" "";height:1px;position:absolute!important;bottom:0;left:0;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:before{width:100%!important;background-color:rgba(0, 0, 0, 0.1)!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:after{width:0%!important;background-color:#35312E!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:hover:after{width:100%!important;}@media only screen and (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span{-webkit-text-decoration:underline;text-decoration:underline;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:before,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:after{display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item div.blog-list__item-content span:hover{color:#35312E;}}@media (min-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1){-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-image{aspect-ratio:16/8;padding-top:0px;max-height:unset!important;z-index:1;margin-bottom:0px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content{position:absolute;width:100%;height:100%;padding:32px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;z-index:2;bottom:0px;-webkit-box-pack:end;-ms-flex-pack:end;
34-webkit-justify-content:end;justify-content:end;background:linear-gradient(180deg, rgba(0,0,0,0) 25%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0.5) 75%, rgba(0,0,0,0.75) 100%);}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content>*{color:#FFF;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content h4.serif{font-size:var(--global-h2-font-size);white-space:unset;margin-bottom:0px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content p{line-clamp:2;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span{position:relative!important;color:#fff!important;-webkit-transition:0.4s;transition:0.4s;font-weight:400;-webkit-text-decoration:none!important;text-decoration:none!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:hover{color:#fff!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:before,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"" "";height:1px;position:absolute!important;bottom:0;left:0;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:before{width:100%!important;background-color:rgba(255, 255, 255, 0.25)!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:after{width:0%!important;background-color:#fff!important;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:hover:after{width:100%!important;}@media only screen and (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span{-webkit-text-decoration:underline;text-decoration:underline;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:before,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:after{display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1) div.blog-list__item-content span:hover{color:#fff;}}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1)~a{-webkit-flex:1 1 calc(33.33% - 16px);-ms-flex:1 1 calc(33.33% - 16px);flex:1 1 calc(33.33% - 16px);max-width:33.33%;}@media (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.blog-list__container a.blog-list__item:nth-child(1)~a{-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.pagination-container div.paginationjs-pages ul{gap:16px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.pagination-container div.paginationjs-pages ul li.paginationjs-prev,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.pagination-container div.paginationjs-pages ul li.paginationjs-next{margin:0px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 div.pagination-container{margin-top:32px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list{padding:120px 0;position:relative;z-index:1;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list .center-items{-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;max-width:1282px;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container{padding:0;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container.hide-date .blog-list__item-date{display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container.hide-author .blog-list__item-author{display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container.hide-author .blog-list__item-date{margin-left:0;padding-left:0;border-left:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__container .blog-list__item{background-color:#fff;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__section-title,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list .description{text-align:center;margin-bottom:50px;max-width:75%;margin-left:auto;margin-right:auto;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__section-title,#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list .description{max-width:100%;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item{width:calc(50% - 18px);margin-bottom:34px;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item{width:100%;margin-bottom:32px;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-116px;left:60%;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-25px;left:40%;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-image{padding-top:70.16%;position:relative;background-color:#808080;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-image img{position:absolute;object-fit:cover;height:100%;width:100%;top:0;z-index:0;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content{padding:46px 36px;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content{padding:40px 25px;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content h4{margin:0 0 36px;position:relative;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content h4{margin:0 0 38px;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content h4:after{content:'';position:absolute;bottom:-17px;left:-116px;right:60%;height:1px;background-color:#c0c0c0;}@media(max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content h4:after{right:40%;left:-25px;bottom:-21px;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-content .link{display:inline-block;margin-top:36px;text-transform:uppercase;font-size:14px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-details{list-style-type:none;display:block;margin:0 0 9px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-details >li{display:inline-block;position:relative;font-size:14px;font-weight:700;line-height:1.4;text-transform:uppercase;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .blog-list__item-details >li+li{margin-left:3px;padding-left:5px;border-left:2px solid;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .search-container{margin-bottom:48px;}@media (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .search-container{margin-bottom:32px;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .search-container__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;
34gap:12px;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .search-container__row:has(.lp-btn.lp-i--chevron-down){-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .search-container__row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .input-container{width:100%;max-width:485px;position:relative;}@media (max-width: 1024px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .input-container{max-width:350px;}}@media (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .input-container{max-width:100%;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .input-container .lp-input{height:50px;width:100%;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .input-container .search-icon{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .empty-results{text-align:center;display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .empty-results.visible{display:block;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .filter-container{padding-top:16px;display:none;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .category-cell{margin:0 8px 8px 0;border-width:2px;padding:10px 15px;opacity:.3;position:relative;cursor:pointer;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .category-cell.active{opacity:1;}@media(hover: hover) and (pointer: fine){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .category-cell:hover{opacity:1;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .lp-btn.lp-i--chevron-down{display:none;gap:10px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .lp-btn.lp-i--chevron-down{width:100%;}}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .lp-btn.lp-i--chevron-down:before{-webkit-transition:-webkit-transform .3s;transition:transform .3s;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .lp-btn.lp-i--chevron-down.active:before{-webkit-transform:scaleY(-1);-moz-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703 .category{position:absolute;top:0;left:0;background-color:#fff;color:#000;padding:8px 34px;font-size:14px;font-weight:700;line-height:24px;letter-spacing:1.5px;text-transform:uppercase;z-index:2;}#section-1c231f04-3531-4dd0-babc-b62c9e4e8703>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#EAEAEA;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:92%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));background-color:#EAEAEA;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-vertical-paddings{padding-top:16px;padding-bottom:16px;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-vertical-paddings{padding-left:16px;padding-right:16px;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-vertical-paddings div.lp-container{padding-left:64px;padding-right:64px;max-width:100%;}@media (max-width: 824px){#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-vertical-paddings div.lp-container{padding-left:32px;padding-right:32px;}}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-vertical-paddings div.lp-container div.text-block{max-width:1000px;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-container{background:var(--offwhite);padding-top:96px;padding-bottom:96px;}@media (max-width: 768px){#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-container{padding-top:64px;padding-bottom:64px;}}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-container div.text-block{margin-bottom:32px;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-container div.text-block p:has(em){font-size:18px;color:var(--accent1);}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 div.lp-container div.text-block h2{margin-bottom:0px;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block .text-block{max-width:65%;}@media (max-width: 768px){#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block .text-block{max-width:100%;margin-bottom:24px;}}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block .lp-h2{margin-bottom:0;}@media (max-width: 768px){#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block .lp-h2{margin-bottom:24px;text-align:center;}}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block--Center-aligned{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;text-align:center;}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block--Center-aligned .text-block{margin-left:auto;margin-right:auto;margin-bottom:24px;}@media (min-width: 769px){#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4 .cta-block--Right-aligned .text-block{padding-right:20px;}}#section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;}#section-f773d57f-7f43-40dd-ac98-37b941a266af{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/yy1c6je4yfhzpnctrurr');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-f773d57f-7f43-40dd-ac98-37b941a266af h2:before{font-family:var(--global-primary-font-family);font-size:18px;font-style:italic;text-transform:uppercase;margin-bottom:0px;color:#fff;content:'Your Trusted Real Estate Partner';display:block;}#section-f773d57f-7f43-40dd-ac98-37b941a266af div.container{max-width:1000px!important;}@media (max-width: 768px){#section-f773d57f-7f43-40dd-ac98-37b941a266af div.container{padding-left:16px;padding-right:16px;}}#section-f773d57f-7f43-40dd-ac98-37b941a266af.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-f773d57f-7f43-40dd-ac98-37b941a266af.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-f773d57f-7f43-40dd-ac98-37b941a266af.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-f773d57f-7f43-40dd-ac98-37b941a266af .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-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us h2{padding-bottom:40px;}}#section-f773d57f-7f43-40dd-ac98-37b941a266af .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-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-f773d57f-7f43-40dd-ac98-37b941a266af .redesign.work-with-us .description{margin-bottom:40px;}}#section-f773d57f-7f43-40dd-ac98-37b941a266af .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;
34-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-f773d57f-7f43-40dd-ac98-37b941a266af .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-f773d57f-7f43-40dd-ac98-37b941a266af{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/yy1c6je4yfhzpnctrurr');}}@media (min-width: 1280px) and (orientation: landscape){#section-f773d57f-7f43-40dd-ac98-37b941a266af{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/yy1c6je4yfhzpnctrurr');}}@media (min-width: 1920px) and (orientation: landscape){#section-f773d57f-7f43-40dd-ac98-37b941a266af{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/yy1c6je4yfhzpnctrurr');}}@media (min-width: 2560px) and (orientation: landscape){#section-f773d57f-7f43-40dd-ac98-37b941a266af{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/yy1c6je4yfhzpnctrurr');}}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c{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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed{padding:80px 0;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .title{margin:0 20px 0 0;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .instagram-link .instagram-name{display:inline;margin:0;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .title+.instagram-link{margin-top:5px;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-wrapper{margin-bottom:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .follow-button{margin:20px 0 0 0;display:block;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-nav-prev{margin-left:30px;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-nav-next{margin-left:10px;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .hidden-control{display:none;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single:first-child,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi:first-child{margin-left:auto;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single:last-child,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi:last-child{margin-right:auto;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single.type2,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi.type2{width:calc(100% / 5 * 2);}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single.type3,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi.type3{width:calc(100% / 2);}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single.type4,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi.type4{width:calc(100% / 2);}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single.type5,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-container{padding:0;width:100%;}}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-feed{width:calc(100% + 20px);position:relative;
34left:-10px;overflow:hidden;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;opacity:1;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-item:hover .video-icon{opacity:0;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single .ig-feed-item__info{padding:15%;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .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;
34-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-right,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .title,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .instagram-link{margin-right:0;text-align:center;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-nav-prev,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .top-nav-next{display:none;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .ig-feed{display:none;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c .has-data .ig-feed{display:block;}#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c.has-data .ig-feed,#section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c#section-temp .ig-feed{display:block;}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .description{margin-bottom:15px;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}
34@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;
34left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;min-height:70px;padding:8px 0 7px;width:100%;}nav .header .logo{z-index:911;position:relative;margin-right:10px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:300px;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}
34nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:'';position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:'';display:block;width:26px;height:2px;background-color:currentColor;position:absolute;left:0;top:0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before{-webkit-transform:translateY(-9px);-moz-transform:translateY(-9px);-ms-transform:translateY(-9px);transform:translateY(-9px);}nav .header .hamburger__bars:after{-webkit-transform:translateY(9px);-moz-transform:translateY(9px);-ms-transform:translateY(9px);transform:translateY(9px);}nav .header .hamburger:hover{text-shadow:.5px 0 0,-.5px 0 0;}nav .header .hamburger:hover .hamburger__bars:before{-webkit-transform:translateY(-7px);-moz-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px);}nav .header .hamburger:hover .hamburger__bars:after{-webkit-transform:translateY(7px);-moz-transform:translateY(7px);-ms-transform:translateY(7px);transform:translateY(7px);}nav .header .hamburger.active .hamburger__bars{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);opacity:0;}nav .header .hamburger.active .hamburger__bars:before{display:none;}nav .header .hamburger.active .hamburger__bars:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .content-container{-webkit-transition:0.2s all ease;transition:0.2s all ease;}nav.scroll .content-container,nav .scroll .content-container{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}nav.scroll .content-container .navigation__link,nav .scroll .content-container .navigation__link{visibility:visible!important;}nav.scroll .content-container .navigation .sub-nav,nav .scroll .content-container .navigation .sub-nav{-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav.scroll .content-container .navigation .sub-nav ul,nav .scroll .content-container .navigation .sub-nav ul{padding:0;}nav.scroll .content-container .navigation .sub-nav.visible,nav .scroll .content-container .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, calc(100% + 23px));-moz-transform:translate(0, calc(100% + 23px));-ms-transform:translate(0, calc(100% + 23px));transform:translate(0, calc(100% + 23px));}nav .dark-opening{background-color:rgb(26, 26, 26)!important;}nav nav.dark-opening .header{margin-top:0;}nav #ctaShowButton,nav #ctaMessage{display:none!important;}nav #ctaShowButton{display:none;opacity:0;pointer-events:none;}nav .search{cursor:pointer;}nav .search svg{display:block;}nav .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;
34-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(234, 234, 234, 1);color:rgba(53, 49, 46, 1);--fontColor:rgba(53, 49, 46, 1);--fontColor_H:26;--fontColor_S:7%;--fontColor_L:19%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(234, 234, 234, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:92%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:20px;padding-right:20px;}}body>div.sidemenu .sidebar__close{position:absolute;right:30px;top:30px;display:inline-block;width:38px;height:38px;padding:10px;border:none;border-radius:0;background:transparent;color:inherit;z-index:1;cursor:pointer;}body>div.sidemenu .sidebar__close:before,body>div.sidemenu .sidebar__close:after{content:'';display:block;width:22px;height:2px;background-color:currentColor;position:absolute;left:50%;top:50%;}body>div.sidemenu .sidebar__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidebar__close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:10px;top:10px;}}body>div.sidemenu .sidebar__close:focus{outline:none;}body>div.sidemenu .sidebar__nav{list-style:none;padding:0;margin:auto 0;}body>div.sidemenu .sidebar__nav-item{margin:0;padding-top:4px;padding-bottom:4px;border-bottom:1px solid hsla( 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(234, 234, 234, 1);
39color:rgba(53, 49, 46, 1);--fontColor:rgba(53, 49, 46, 1);--fontColor_H:26;--fontColor_S:7%;--fontColor_L:19%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(234, 234, 234, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:92%;--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;-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;
55-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;left: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">.pagination-style-1 li a{color:#121275!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:#121275!important;border-color:#121275!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:#121275!important;border-color:#121275!important;}.hyperlink-style-1{color:rgba(53, 49, 46, 1)!important;}.hyperlink-style-1:hover{color:rgba(53, 49, 46, 1)!important;}.button-style-1{color:#121275!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#121275!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:#121275!important;border-color:#121275!important;}.social_icons-style-1 a{border-color:#121275!important;background-color:rgba(0, 0, 0, 0)!important;color:#121275!important;}.social_icons-style-1 a:hover{border-color:#121275!important;background-color:#121275!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;}.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:#121275!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li.active a{color:#121275!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(255, 255, 255, 0.7)!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:#121275!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{f
65ill:currentColor!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:#121275!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:#121275!important;border-color:#121275!important;}.button-style-3:hover{color:#121275!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#121275!important;}.button-style-4{color:#121275!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-4:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}</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="d9b87e97-cc17-4738-b3ce-1e5ee5dc3b3e"></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
107<script> 108 function addWowClassToHeadings() { 109 /*Get the elements to which the classes are to be added*/ 110 let titles = document.querySelectorAll("h2, h4, h2.lp-h2, h4.lp-h4, p:not(.success-message)"); 111 let p = document.querySelectorAll("div.redesign.work-with-us p, p.stat-card__title, .lp-text--subtitle, .redesign p:not(.success-message), .text-grid.scene, .item, .gallery__holder, .pretitle, .lp-btn, .btn, .search-form, .gallery-component__col, .neighborhood-list-item"); 112 113 titles.forEach(title => { 114 /*Classes to add*/ 115 title.classList.add("wow", "animated", "fadeInDown"); 116 }); 117 p.forEach(par => { 118 /*Classes to add*/ 119 par.classList.add("wow", "animated", "fadeInDown"); 120 }); 121 } 122 123 document.addEventListener("DOMContentLoaded", () => { 124 /*Init the library to animate on scroll*/ 125 new WOW().init(); 126 /*Call the function*/ 127 addWowClassToHeadings(); 128 const contactModal = document.querySelector('#modal-global-contact-us'); 129 $(contactModal).on('lpui-show', function(){ 130 contactModal.querySelectorAll('.wow').forEach(function (el, idx) { 131 wow.show(el) 132 }) 133 }); 134 }); 135 136</script>
136 137 138<!-- Bing Webmaster Tools Verification -->
139<script> 140 // Check if on the homepage before the body loads 141 if (window.location.pathname === '/' || window.location.pathname === '/index.html') { 142 document.write('<meta name="msvalidate.01" content="074C93FED39AD6F2C9504B05051786A4" />'); 143 } 144</script>
144 145 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 146</head> 147<body> 148 <div id="google_translate_element" style="display: none"></div> 149 150 <div id="global-loader" style="height:100%;width:100%;position:fixed;z-index:9999;left:0;top:0;background-color:rgba(248, 246, 241, 1);overflow-x:hidden;transition:1s;"> 151 <div style="position:absolute;height:100vh;text-align:center;bottom:0;left:0;right: 0;display:flex;align-items:center;"> 152 <img style="margin:0 auto;" src="https://res.cloudinary.com/luxuryp/images/w_960,c_limit,f_auto,q_auto/ehfclc0mn8cz97ksk6k4/g140" /> 153 </div> 154 </div> 155
155<script> 156 if (window.sessionStorage.getItem('global_loading_displayed') === 'yes') { 157 (function () { 158 document.getElementById('global-loader').remove(); 159 })(); 160 } 161 </script>
161 162 163 <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b"> 164 <div class="redesign"> 165 <div class="content-container header"> 166 <div class="container header__container"> 167 <div class="navbar"> 168 <div class="logo"> 169 <a href="/" class="logo__link"> 170 <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/lxj3e2ty5xwhks1ri621" 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/lxj3e2ty5xwhks1ri621 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/lxj3e2ty5xwhks1ri621 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/lxj3e2ty5xwhks1ri621 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/lxj3e2ty5xwhks1ri621 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/lxj3e2ty5xwhks1ri621 1961w" class="logo__img light" alt=""> 171 <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/iuchd34aru3mqrz79nlt" 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/iuchd34aru3mqrz79nlt 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/iuchd34aru3mqrz79nlt 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/iuchd34aru3mqrz79nlt 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/iuchd34aru3mqrz79nlt 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/iuchd34aru3mqrz79nlt 1961w" class="logo__img dark" alt=""> 172 </a> 173 </div> 174 <div class="navigation"> 175 <ul> 176 <li class="navigation__item"> 177 <a href="/team" class="navigation__link wow fadeInUp" data-wow-delay="2.0"><span>About Us</span></a> 178 </li> 179 <li class="navigation__item sub-nav-container"> 180 <a href="#" class="navigation__link wow fadeInUp">About Us</a> 181 <div class="sub-nav"> 182 <ul> 183 <li class="sub-nav__item"><a href="/team" class="nav-link sub-nav__link feature"><span>Who We Are</span></a></li> 184 <li class="sub-nav__item"><a href="/giving-back" class="nav-link sub-nav__link feature"><span>Giving Back</span></a></li> 185 </ul> 186 </div> 187 </li> 188 <li class="navigation__item"> 189 <a href="/home-search/listings" class="navigation__link wow fadeInUp" data-wow-delay="2.2"><span>Home Search</span></a> 190 </li> 191 <li class="navigation__item"> 192 <a href="/properties" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>Portfolio</span></a> 193 </li> 194 <li class="navigation__item"> 195 <a href="/before-after" class="navigation__link wow fadeInUp" data-wow-delay="2.4"><span>Curated Strategy</span></a> 196 </li> 197 <li class="navigation__item"> 198 <a href="/neighborhoods" class="navigation__link wow fadeInUp" data-wow-delay="2.5"><span>Neighborhoods</span></a> 199 </li> 200 <li class="navigation__item"> 201 <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Contact Us</span></a> 202 </li> 203 <li class="navigation__item"> 204 <a href="tel:4153289752" class="navigation__link wow fadeInUp" data-wow-delay="2.7"><span>(415) 328-9752</span></a> 205 </li> 206 </ul> 207 </div> 208 <div class="buttons-wrapper"> 209 <button type="button" class="hamburger-component hamburger">
210 <span class="hamburger__bars"></span> 211 </button> 212 </div> 213 </div> 214 </div> 215 </div> 216</div> 217 218 </nav> 219 <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18"> 220 <div class="sidebar"> 221 222 <button class="toggle sidebar__close close"></button> 223 <div class="sidebar__content"> 224 225 <ul class="sidebar__nav"> 226 <li class="sidebar__nav-item"> 227 <a href="/" class="sidebar__nav-link">Home</a> 228 </li> 229 <li class="sidebar__nav-item sub-nav-container"> 230 <div class="sub-nav"> 231 <ul class="sidebar__subnav"> 232 <li class="sidebar__subnav-item"><a href="/team" class="sidebar__subnav-link">Who We Are</a></li> 233 <li class="sidebar__subnav-item"><a href="/giving-back" class="sidebar__subnav-link">Giving Back</a></li> 234 </ul> 235 </div> 236 <a href="#" class="sidebar__nav-link link main-nav">About Us</a> 237 </li> 238 <li class="sidebar__nav-item"> 239 <a href="/properties" class="sidebar__nav-link">Portfolio</a> 240 </li> 241 <li class="sidebar__nav-item"> 242 <a href="/before-after" class="sidebar__nav-link">Curated Strategy</a> 243 </li> 244 <li class="sidebar__nav-item"> 245 <a href="/home-search/listings" class="sidebar__nav-link">Home Search</a> 246 </li> 247 <li class="sidebar__nav-item"> 248 <a href="/home-valuation" class="sidebar__nav-link">Home Valuation</a> 249 </li> 250 <li class="sidebar__nav-item"> 251 <a href="/neighborhoods" class="sidebar__nav-link">Neighborhoods</a> 252 </li> 253 <li class="sidebar__nav-item"> 254 <a href="/testimonials" class="sidebar__nav-link">Testimonials</a> 255 </li> 256 <li class="sidebar__nav-item sub-nav-container"> 257 <div class="sub-nav"> 258 <ul class="sidebar__subnav"> 259 <li class="sidebar__subnav-item"><a href="/buyers-guide" class="sidebar__subnav-link">Buyer's Guide</a></li> 260 <li class="sidebar__subnav-item"><a href="/sellers-guide" class="sidebar__subnav-link">Seller's Guide</a></li> 261 <li class="sidebar__subnav-item"><a href="/market-update" class="sidebar__subnav-link">Market Update</a></li> 262 </ul> 263 </div> 264 <a href="#" class="sidebar__nav-link link main-nav">Resources</a> 265 </li> 266 <li class="sidebar__nav-item"> 267 <a href="/blog" class="sidebar__nav-link">Journal</a> 268 </li> 269 <li class="sidebar__nav-item"> 270 <a href="/explore-marin" class="sidebar__nav-link">Explore Marin</a> 271 </li> 272 <li class="sidebar__nav-item"> 273 <a href="/contact" class="sidebar__nav-link">Contact Us</a> 274 </li> 275 <li class="sidebar__nav-item"> 276 <a href="/home-search/account" class="sidebar__nav-link">My Search Portal</a> 277 </li> 278 </ul> 279 </div> 280</div> 281 </div> 282 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51"> 283 <div class="btn-holder" 284style=" 285--backgroundColor: rgba(248, 246, 241, 1); 286--textColor: rgba(53, 49, 46, 1); 287--pillTextColor: rgba(255, 255, 255, 1); 288--pillBackgroundColor: rgba(227, 178, 101, 1);"> 289 290 <a href="/home-search/listings" class="search-btn lp-ico lp-ico-search visible hyperlink-style-1">Search</a> 291 <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Contact Us</button> 292</div> 293 294 295<div class="pop-up" style="--backgroundColor: rgba(248, 246, 241, 1); --textColor: rgba(53, 49, 46, 1);"> 296 <div class="lp-container"> 297 <form data-type="contact-form" class="contact-form"> 298 <div class="contact-form__container"> 299 <h3 class="lp-h3">Leave a Message</h3> 300 301 <div class="contact-form__content"> 302 <div class="contact-form__inputs-container"> 303 <div class="contact-form__item"> 304 <input 305 id="__FullName" 306 type="text" name="name" 307 class="lp-input lp-input--dark" 308 required 309 placeholder="Full Name"> 310 </div> 311 <div class="contact-form__item"> 312 <input 313 id="__Email" 314 type="email" name="email"
315 class="lp-input js-email-input lp-input--dark" 316 required 317 placeholder="Email"> 318 </div> 319 <div class="contact-form__item"> 320 <input 321 class="lp-input lp-input--dark" 322 type="tel" 323 placeholder="Phone" 324 id="__Phone" 325 name="phone" 326 required> 327 </div> 328 329 <div class="contact-form__item input-group-select"> 330 <select name="interest" id="-field-interest" placeholder="Interest" 331 class="lp-input dropdown-select js-select js-form-element lp-input--dark" required> 332 <option value="" disabled selected data-label="Interest">Interested in...</option> 333 <option value="Selling & Buying">Selling & Buying</option> 334 <option value="Selling">Selling</option> 335 <option value="Buying">Buying</option> 336 <option value="Renting">Renting</option> 337 <option value="Other">Other</option> 338 </select> 339 <label for="-field-interest" class="lp-label sr-only">Interest</label> 340 </div> 341 342 <div class="contact-form__item"> 343 <textarea 344 name="message" 345 rows="4" 346 id="__Message" 347 class="lp-input lp-input--dark" 348 placeholder="Message" 349 required></textarea> 350 </div> 351 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 352 <label class='lp-tcr-content'> 353 <span class='lp-tcr-checkbox'> 354 <input 355 type='checkbox' 356 id='-termsAccepted' 357 name='termsAccepted' 358 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 359 oninput="this.setCustomValidity('')" 360 required 361 /></span> 362 <span class='lp-tcr-message'> 363 364 I agree to be contacted by 365 Lisa Smith & Co 366 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 367 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 368 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 369 </span> 370 </label> 371 372</div> 373 <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit contact-form__item">Submit</button> 374 375 <div class="lp-h-pot"> 376 <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 377 </div> 378 379 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 380 <input type="hidden" name="button_text" value="Contact Us"> 381 </div> 382 </div> 383 </div> 384 385 386 <div class="success-block"> 387 <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3> 388 389 </div> 390 </form> 391 392 <button type="button" class="close-btn lp-ico lp-ico-close"></button> 393 394 395 </div> 396</div> 397 398 399 </div> 400 <section class="image-section is-font-color-light is-background-color-light" id="section-37090742-75c5-4ff8-8ef6-d3c202c82f24" data-el-id="e6c6941b-dd32-4d6b-b4aa-56593f2d58bb"> 401 <div class="redesign custom-intro"> 402 <div class="container"> 403 <h1 class="custom-intro__title">Journal</h1> 404 405 </div> 406</div> 407 408</section> 409<section id="section-1c231f04-3531-4dd0-babc-b62c9e4e8703" class="solid-section is-font-color-dark is-background-color-light" data-el-id="1e77e4a0-6624-43db-b736-bd434565fece">
410<script type="text/x-handlebars-template" class="gridItem pagination-script"><a href="/blog/{{slug}}" class="blog-list__item"> 411 <div class="blog-list__item-image"> 412 413 414 415 {{#if media.length}} 416 {{{mediaImage media.[0] alt=title}}} 417 {{/if}} 418 </div> 419 420 <div class="blog-list__item-content"> 421 <h4 class="serif">{{title}}</h4> 422 <ul class="blog-list__item-details"> 423 424 {{#isEmpty customAuthor}} 425 {{#if (or createdBy.firstName createdBy.lastName)}}<li class="blog-list__item-author">{{createdBy.firstName}} {{createdBy.lastName}}</li>{{/if}} 426 {{else}} 427 <li class="blog-list__item-author">{{customAuthor}}</li> 428 {{/isEmpty}} 429 430 <li class="blog-list__item-date">{{hbFormatDate publishedAt 'MM/DD/YY'}}</li> 431 </ul> 432 433 {{#if subtitle}} 434 <p>{{truncate (striptags subtitle) 130 "..."}}</p> 435 {{/if}} 436 <span class="link hyperlink-style-1">Read MORE</span> 437 </div> 438</a> 439</script>
439 440 441 442 443 444 445 446<div class="redesign blog-list"> 447 448 449 <div class="container blog-list__container data-container hide-date hide-author"> 450 <a href="/blog/tiburons-two-wine-bars-arent-competing-for-the-same-table" class="blog-list__item"> 451 <div class="blog-list__item-image"> 452 453 454 455 <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/ba48b571-7c4c-4d43-9f1f-10279a420086" 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/ba48b571-7c4c-4d43-9f1f-10279a420086 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/ba48b571-7c4c-4d43-9f1f-10279a420086 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ba48b571-7c4c-4d43-9f1f-10279a420086 1536w" alt="Tiburon's Two Wine Bars Aren't Competing for the Same Table" loading="lazy"> 456 </div> 457 458 <div class="blog-list__item-content"> 459 <h4 class="serif">Tiburon's Two Wine Bars Aren't Competing for the Same Table</h4> 460 <ul class="blog-list__item-details"> 461 462 463 464 <li class="blog-list__item-date">10/1/26</li> 465 </ul> 466 467 <span class="link hyperlink-style-1">Read MORE</span> 468 </div> 469 </a> 470 <a href="/blog/sausalitos-median-price-is-three-markets-wearing-one-number" class="blog-list__item"> 471 <div class="blog-list__item-image"> 472 473 474 475 <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/efe988ff-3df7-4945-bf9c-402e2596826b" 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/efe988ff-3df7-4945-bf9c-402e2596826b 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/efe988ff-3df7-4945-bf9c-402e2596826b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/efe988ff-3df7-4945-bf9c-402e2596826b 1408w" alt="Sausalito's Median Price Is Three Markets Wearing One Number" loading="lazy"> 476 </div> 477 478 <div class="blog-list__item-content"> 479 <h4 class="serif">Sausalito's Median Price Is Three Markets Wearing One Number</h4> 480 <ul class="blog-list__item-details"> 481 482 483 484 <li class="blog-list__item-date">09/24/26</li> 485 </ul> 486 487 <span class="link hyperlink-style-1">Read MORE</span> 488 </div> 489 </a> 490 <a href="/blog/two-years-after-the-sequoia-reopened-mill-valley-is-still-driving-to-san-rafael-for-its-own-film-festival" class="blog-list__item"> 491 <div class="blog-list__item-image"> 492 493 494 495 <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/0851b976-6833-4721-9379-0a0934405917" 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/0851b976-6833-4721-9379-0a0934405917 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/0851b976-6833-4721-9379-0a0934405917 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0851b976-6833-4721-9379-0a0934405917 1408w" alt="Two Years After the Sequoia Reopened, Mill Valley Is Still Driving to San Rafael for Its Own Film Festival" loading="lazy"> 496 </div> 497 498 <div class="blog-list__item-content"> 499 <h4 class="serif">Two Years After the Sequoia Reopened, Mill Valley Is Still Driving to San Rafael for Its Own Film Festival</h4> 500 <ul class="blog-list__item-details"> 501 502 503 504 <li class="blog-list__item-date">09/17/26</li> 505 </ul> 506
507 <span class="link hyperlink-style-1">Read MORE</span> 508 </div> 509 </a> 510 <a href="/blog/beach-roads-seawall-project-ends-october-30-the-job-doesnt" class="blog-list__item"> 511 <div class="blog-list__item-image"> 512 513 514 515 <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/b676be33-e0ce-46e8-9759-aaa0902be100" 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/b676be33-e0ce-46e8-9759-aaa0902be100 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/b676be33-e0ce-46e8-9759-aaa0902be100 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b676be33-e0ce-46e8-9759-aaa0902be100 1408w" alt="Beach Road's Seawall Project Ends October 30. The Job Doesn't." loading="lazy"> 516 </div> 517 518 <div class="blog-list__item-content"> 519 <h4 class="serif">Beach Road's Seawall Project Ends October 30. The Job Doesn't.</h4> 520 <ul class="blog-list__item-details"> 521 522 523 524 <li class="blog-list__item-date">09/10/26</li> 525 </ul> 526 527 <span class="link hyperlink-style-1">Read MORE</span> 528 </div> 529 </a> 530 </div> 531 <div class="empty-results">Sorry, we couldn't find any results that match that search. Try another search.</div> 532 <div class="pagination-container pagination-container--dark pagination-style-1"></div> 533</div> 534</section> 535<section id="section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4" class="solid-section is-font-color-dark is-background-color-light" data-el-id="e7db0aa2-a33d-4b1c-bd9f-41337c1c9384"> 536 <div class="lp-vertical-paddings redesign"> 537 <div class="lp-container cta-block cta-block--Center-aligned"> 538 <div class="text-block"> 539 <h2 class="lp-h2"><p><em>Want To Read More?</em></p> 540<h2>Receive The Lastest Exclusive Listings</h2> 541<p>Sign up now for our exclusive newsletter to receive guides on buying or selling your new in Marin today!</p></h2> 542 </div> 543 544 <a 545 role="button" 546 data-type="MODAL_731b2fb0-1112-4154-92a6-2449224c4108" 547 class="lp-btn lp-btn--dark lp-btn--big lp-btn--outline lp-btn--mob-full-width button-style-1" 548 549 550 551 552 553 > 554 Sign Up Now 555 </a> 556 </div> 557</div> 558</section> 559<section class="image-section is-font-color-light is-background-color-light" id="section-f773d57f-7f43-40dd-ac98-37b941a266af" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c"> 560
560<script> 561 (function(){ 562 const sectionId = 'section-f773d57f-7f43-40dd-ac98-37b941a266af' 563 const section = document.querySelector(`#${sectionId}`); 564 var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image'); 565 566 if('true' === 'true') { 567 section.classList.add('parallax-enabled'); 568 section.style.setProperty('--sectionBackground', sectionBg); 569 section.style.setProperty('background', 'none'); 570 } 571 })() 572</script>
572 573<div class="redesign work-with-us parallax"> 574 <div class="container"> 575 <h2 class="serif">Partner with Us for Personalized Real Estate Solutions</h2> 576 <div class="description">We pride ourselves in providing personalized solutions that bring our clients closer to their dream properties and enhance their long-term wealth. Contact us today to find out how we can be of assistance to you!</div> 577 <div class="btn-container"> 578 <a 579 role="button" 580 data-type="CONTACT_US" 581 class="btn btn--primary-light button-style-2" 582 583 584 585 586 587 > 588 Contact Us 589 </a> 590 </div> 591 </div> 592</div> 593</section> 594<section id="section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c" class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284"> 595
595<script type="text/x-handlebars-template" class="jsIGItem"> 596 <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}"> 597 <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div> 598 <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div> 599 {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}} 600 </a> 601</script>
601 602<div class="ig-feed redesign"> 603 <div class="ig-feed-top lp-container"> 604 <div class="top-wrapper"> 605 <div class="top-left"> 606 <h3 class="lp-h3 title">Follow Me on Instagram</h3> 607 <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a> 608 </div> 609 <div class="top-right"> 610 <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> 611 <a class="nav-button top-nav-prev hidden-control button-style-1"> 612 <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> 613 </a> 614 <a class="nav-button top-nav-next hidden-control button-style-1"> 615 <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> 616 </a> 617 </div> 618 </div> 619 </div> 620 <div class="lp-container ig-feed-container "> 621 <div class="ig-feed-feed" data-limit="33"> 622 </div> 623 </div> 624 <div class="bottom-controls"> 625 <a class="bottom-nav-button bottom-nav-prev button-style-1"> 626 <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> 627 </a> 628 <a class="bottom-nav-button bottom-nav-next button-style-1"> 629 <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> 630 </a> 631 </div> 632</div> 633 634</section> 635 636 <div id="modals" class="modals"></div> 637 <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b"> 638 <div class="footer redesign no_newsletter "> 639 <div class="container"> 640 <h3>Agent Name</h3> 641 <div class="info-wrap"> 642 <div class="info-wrap-contact agent_box"> 643 <div class="info-wrap-contact_zone type_user"> 644 <h4 class="serif">Santa Monica Real Estate</h4> 645 <div class="info-wrap-contact_cell"> 646 <i> 647 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 648 <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" /> 649 </svg> 650 </i> 651 <p class="contact_title">Email</p> 652 <a href="/cdn-cgi/l/email-protection#1774787963767463577b626f62656e67657264727974723974787a" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1"><span class="__cf_email__" data-cfemail="c5a6aaabb1a4a6b185a9b0bdb0b7bcb5b7a0b6a0aba6a0eba6aaa8">[email protected]</span></a> 653 </div> 654 <div class="info-wrap-contact_cell"> 655 <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 656 <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
65613 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" /> 657 </svg></i> 658 <p class="contact_title">Phone Number</p> 659 <a href="tel:3105554444" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">(310) 555-4444</a> 660 </div> 661 </div> 662 <div class="info-wrap-contact_zone"> 663 <div class="info-wrap-contact_cell"> 664 <i> 665 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 666 <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" /> 667 <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" /> 668 <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" /> 669 </svg> 670 </i> 671 <p class="info-wrap-contact_title">Address</p> 672 <p class="info-wrap-contact_link grey-text"><div class="contact-info"><img src="https://res.cloudinary.com/luxuryp/images/w_1920,c_limit,f_auto,q_auto/iuchd34aru3mqrz79nlt/smith-and-co-monogram-dark"></div> 673<div class="contact-info"> 674<p class="info-title">Phone Number</p> 675<p><a class="lp-link" href="tel:4153289752">(415) 328-9752</a></p> 676</div> 677<div class="contact-info"> 678<p class="info-title">Email</p> 679<p><a class="lp-link" href="/cdn-cgi/l/email-protection#bdd1d4cedcfdced0d4c9d5dcd3d9ded2cfd8dcd1c9d2cfce93ded2d0"><span class="__cf_email__" data-cfemail="81ede8f2e0c1f2ece8f5e9e0efe5e2eef3e4e0edf5eef3f2afe2eeec">[email protected]</span></a></p> 680</div> 681<div class="contact-info"> 682<p class="info-title">Address</p> 683<p>66 Walnut Ave<br>Corte Madera, CA 94925</p> 684</div></p> 685 </div> 686 </div> 687 </div> 688 </div> 689 <div class="text_footer first_text_footer"> 690 <div class="images_box"> 691 <div class="img_size"> 692 <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/e215588a-3428-4135-9813-5c2ff2d98447" 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/e215588a-3428-4135-9813-5c2ff2d98447 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/e215588a-3428-4135-9813-5c2ff2d98447 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/e215588a-3428-4135-9813-5c2ff2d98447 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/e215588a-3428-4135-9813-5c2ff2d98447 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/e215588a-3428-4135-9813-5c2ff2d98447 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/e215588a-3428-4135-9813-5c2ff2d98447 3370w" alt="Footer Image" sizes="200px"> 693 </div> 694 </div> 695 <div class="luxury-text"> 696 <p style="font-size: 14px;"><br>Lisa Smith | CA DRE# 01927676<br>
696Serhant California, Inc | CA DRE# 02440323</p> 697<p style="font-size: 12px;"><br>SERHANT., the SERHANT. logo, and other various trademarks, logos, designs, and slogans are the registered and unregistered trademarks of Serhant Real Estate, Inc. or its affiliated companies. SERHANT. is a licensed real estate broker in AZ, CA, CT, FL, GA, MA, MD, NC, NJ, NV, NY, PA, RI, SC, VA, and Washington, D.C. California DRE License # 02440323.<br><br>All listing information is deemed reliable but is not guaranteed and is subject to errors, omissions, changes in price, prior sale, or withdrawal without notice. No representation is made as to the accuracy of any description. All measurements and square footages are approximate and all descriptive information should be independently verified. No financial or legal advice provided. SERHANT. and its affiliates support the Fair Housing Act and Equal Opportunity Act. SERHANT. and its affiliates do not discriminate against voucher holders pursuant to applicable law and all lawful sources of income are accepted.<br><img style="filter: invert(0); margin-top: 10px;" src="https://res.cloudinary.com/luxuryp/images/atey8q45g4nbzeqjggpc/realtor-eho-logo-07232021-update-dark.png" width="100px;"></p> 698 </div> 699 </div> 700 <div class="text_footer second_text_footer"> 701 <div class="text_content_wrap"> 702 <div> 703 <div> </div> 704<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 705 </div> 706 </div> 707 </div> 708 <div class="info-privacy"> 709 <div class="form-row info-privacy__row"> 710 711 <div class="form-col form-col--powered powered-box"> 712 <div class="img-wrap"> 713 <img src="https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/xegvmklr9oqvwdh6zxer/group-2147206425-1-1" alt=""> 714 </div> 715 <div class="powered_zone"> 716 Real Estate Website Design by <a href="https://www.luxurypresence.com/real-estate-website-design/" target="_blank" class="lp-link grey-text luxury-link underlined hyperlink-style-1">Luxury Presence</a> 717 </div> 718 </div> 719 720 <div class="form-col form-col--copyright"> 721 <div class="copy_zone"> 722 <span class="copy_words">Copyright ©</span> <span class="auto-year-update">2026</span> 723 | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-1">Privacy Policy</a> 724 725 </div> 726 </div> 727 728 <div class="form-col form-col--socials"> 729 <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone"> 730 731 <li> 732 <a 733 href="https://www.facebook.com/lisa.smith.739326" 734 class="lp-socials__link socials__item socials__link wow fadeInUp" 735 data-wow-delay="0s" 736 target="_blank" 737 aria-label="FACEBOOK" 738 > 739 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 740 </a> 741 </li> 742 <li> 743 <a 744 href="https://www.instagram.com/smith_co_realtors?igsh=NTc4MTIwNjQ2YQ%3D%3D" 745 class="lp-socials__link socials__item socials__link wow fadeInUp" 746 data-wow-delay="0.1s" 747 target="_blank" 748 aria-label="INSTAGRAM" 749 > 750 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 751 </a> 752 </li> 753 <li> 754 <a 755 href="https://www.linkedin.com/in/lisa-smith-a7071755" 756 class="lp-socials__link socials__item socials__link wow fadeInUp" 757 data-wow-delay="0.2s" 758 target="_blank" 759 aria-label="LINKEDIN" 760 >
761 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 762 </a> 763 </li> 764 <li> 765 <a 766 href="https://www.pinterest.com/smith_and_company/" 767 class="lp-socials__link socials__item socials__link wow fadeInUp" 768 data-wow-delay="0.3s" 769 target="_blank" 770 aria-label="PINTEREST" 771 > 772 <span class="lp-i lp-i--pinterest" aria-hidden="true"></span> 773 </a> 774 </li> 775 <li> 776 <a 777 href="https://www.yelp.com/biz/smith-and-co-mill-valley" 778 class="lp-socials__link socials__item socials__link wow fadeInUp" 779 data-wow-delay="0.4s" 780 target="_blank" 781 aria-label="YELP" 782 > 783 <span class="lp-i lp-i--yelp" aria-hidden="true"></span> 784 </a> 785 </li> 786 <li> 787 <a 788 href="https://www.google.com/search?q=smith+%26+co+realtors&rlz=1C1UEAD_enPH1039PH1039&oq=smith+%26+co+realtors&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIICAEQABgWGB4yCAgCEAAYFhgeMggIAxAAGBYYHjIICAQQABgWGB4yCAgFEAAYFhgeMggIBhAAGBYYHjIICAcQABgWGB4yCggIEAAYgAQYogQyCggJEAAYgAQYogTSAQgzNjY2ajBqN6gCALACAA&sourceid=chrome&ie=UTF-8#lrd=0x808591dbc18e94dd:0x5f9aa36bfb0ad6f0,1,,,," 789 class="lp-socials__link socials__item socials__link wow fadeInUp" 790 data-wow-delay="0.5s" 791 target="_blank" 792 aria-label="GOOGLE" 793 > 794 <span class="lp-i lp-i--google" aria-hidden="true"></span> 795 </a> 796 </li> 797 </ul> </div> 798 </div> 799 </div> 800 </div> 801</div> 802 803 </footer> 804 805 <div id="modal-global-contact-us" class="modal " 806 data-el-id="" 807 style="background-color: ;" 808 > 809 <div class="modal-content"> 810 <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/1b3fb2cb-97ea-4340-a8e1-428d24a5bedd')"> 811 <div class="container"> 812 <div class="section-details" style="--colorTxt: #ffffff"> 813 <h2>Contact Details</h2> 814 815 <div class="info-zone"> 816 817 <div class="info-zone_contact type_user"> 818 <h4 class="serif">Lisa Smith & Co.</h4> 819 <div class="info-zone_contact_cell"> 820 <i> 821 <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 822 <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
82215 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"/> 823 </svg> 824 </i> 825 <p class="contact_title">Phone</p> 826 <a href="tel:(415) 328-9752" class="lp-link info-zone_contact_link link hyperlink-style-2">(415) 328-9752</a> 827 </div> 828 <div class="info-zone_contact_cell"> 829 <i> 830 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 831 <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"/> 832 </svg> 833 </i> 834 <p class="contact_title">Email</p> 835 <a href="/cdn-cgi/l/email-protection#cba7a2b8aa8bb8a6a2bfa3aaa5afa8a4b9aeaaa7bfa4b9b8e5a8a4a6" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="81ede8f2e0c1f2ece8f5e9e0efe5e2eef3e4e0edf5eef3f2afe2eeec">[email protected]</span></a> 836 </div> 837 </div> 838 <div class="info-zone_contact"> 839 <div class="info-zone_contact_cell"> 840 <i> 841 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 842 <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"/> 843 <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"/> 844 <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"/> 845 </svg> 846 </i> 847 <p class="info-wrap-contact_title">Address</p> 848 <p class="info-zone_contact_link pre-line">66 Walnut Ave 849 Corte Madera, CA 94925</p> 850 </div> 851 </div> 852 <div class="info-zone_contact"> 853 <div class="info-zone_contact_cell"> 854 <p class="pre-line"><div></div><div id="in05"><p>Lisa Smith | CA DRE# 01927676<br>
854âââââââSerhant California, Inc | CA DRE# 02440323<br></p></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#in05{padding:0px;}</style></p> 855 </div> 856 </div> 857 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__contact-column"> 858 859 <li> 860 <a 861 href="https://www.facebook.com/lisa.smith.739326" 862 class="lp-socials__link socials__item wow fadeInUp socials__link" 863 data-wow-delay="0s" 864 target="_blank" 865 aria-label="FACEBOOK" 866 > 867 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 868 </a> 869 </li> 870 <li> 871 <a 872 href="https://www.instagram.com/smith_co_realtors?igsh=NTc4MTIwNjQ2YQ%3D%3D" 873 class="lp-socials__link socials__item wow fadeInUp socials__link" 874 data-wow-delay="0.1s" 875 target="_blank" 876 aria-label="INSTAGRAM" 877 > 878 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 879 </a> 880 </li> 881 <li> 882 <a 883 href="https://www.linkedin.com/in/lisa-smith-a7071755" 884 class="lp-socials__link socials__item wow fadeInUp socials__link" 885 data-wow-delay="0.2s" 886 target="_blank" 887 aria-label="LINKEDIN" 888 > 889 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 890 </a> 891 </li> 892 <li> 893 <a 894 href="https://www.pinterest.com/smith_and_company/" 895 class="lp-socials__link socials__item wow fadeInUp socials__link" 896 data-wow-delay="0.3s" 897 target="_blank" 898 aria-label="PINTEREST" 899 > 900 <span class="lp-i lp-i--pinterest" aria-hidden="true"></span> 901 </a> 902 </li> 903 <li> 904 <a 905 href="https://www.yelp.com/biz/smith-and-co-mill-valley" 906 class="lp-socials__link socials__item wow fadeInUp socials__link" 907 data-wow-delay="0.4s" 908 target="_blank" 909 aria-label="YELP" 910 > 911 <span class="lp-i lp-i--yelp" aria-hidden="true"></span> 912 </a> 913 </li> 914 <li> 915 <a 916 href="https://www.google.com/search?q=smith+%26+co+realtors&rlz=1C1UEAD_enPH1039PH1039&oq=smith+%26+co+realtors&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIICAEQABgWGB4yCAgCEAAYFhgeMggIAxAAGBYYHjIICAQQABgWGB4yCAgFEAAYFhgeMggIBhAAGBYYHjIICAcQABgWGB4yCggIEAAYgAQYogQyCggJEAAYgAQYogTSAQgzNjY2ajBqN6gCALACAA&sourceid=chrome&ie=UTF-8#lrd=0x808591dbc18e94dd:0x5f9aa36bfb0ad6f0,1,,,," 917 class="lp-socials__link socials__item wow fadeInUp socials__link" 918 data-wow-delay="0.5s" 919 target="_blank" 920 aria-label="GOOGLE" 921 >
922 <span class="lp-i lp-i--google" aria-hidden="true"></span> 923 </a> 924 </li> 925 </ul> </div> 926 </div> 927 <div class="section-message"> 928 <form data-type="contact-form"> 929 <h2>Submit a Message</h2> 930 <div class="h-pot"> 931 <label for="-middleName">Middle Name</label> 932 <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 933 </div> 934 935 936 <div class="lp-input-group"> 937 <label for="prod-name" class="lp-label">Name</label> 938 <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light"> 939 </div> 940 <div class="lp-input-group"> 941 <label for="prod-email" class="lp-label">Email</label> 942 <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light"> 943 </div> 944 <div class="lp-input-group"> 945 <label for="prod-phone" class="lp-label">Phone</label> 946 <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light"> 947 </div> 948 <div class="lp-input-group m16"> 949 <label for="prod-message" class="lp-label">Message</label> 950 <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea> 951 </div> 952 953 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 954 <label class='lp-tcr-content'> 955 <span class='lp-tcr-checkbox'> 956 <input 957 type='checkbox' 958 id='-termsAccepted' 959 name='termsAccepted' 960 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 961 oninput="this.setCustomValidity('')" 962 required 963 /></span> 964 <span class='lp-tcr-message'> 965 966 I agree to be contacted by 967 Lisa Smith & Co 968 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 969 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 970 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 971 </span> 972 </label> 973 974 </div> 975 976 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 977 978 979 <button type="submit" class="submitButton lp-btn button-style-2"> 980 <span class="label-initial">Submit</span> 981 <span class="label-loading">Submitting</span> 982 <span class="label-success">Submitted</span> 983 <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span> 984 </button> 985 <p class="success-message success hide"> 986 Message sent successfully! 987 </p> 988 </form> 989 990 991 </div> 992 </div> 993 </div> 994 995 </div> 996 <button class="close lp-close" type="button" aria-label="close modal"> 997 <span class="lp-close-icon" aria-hidden="true"></span> 998 </button> 999 </div> 1000 <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;"> 1001 <style> 1002 #qualifying-questions-modal .custom-select-toggle { 1003 border: 1px solid #848484; 1004 border-radius: 8px; 1005 padding: 12px 16px; 1006 } 1007 1008 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 1009 color: #848484; 1010 } 1011 1012 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 1013 color: #848484; 1014 opacity: 1; 1015 } 1016 1017 #qualifying-questions-modal .disclaimer-more { 1018 display: none; 1019 } 1020 1021 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 1022 display: inline; 1023 } 1024 1025 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 1026 display: none; 1027 } 1028 </style>
vendor: 119 bytes, lines 1028-1029
1028 1029 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1029<script> 1030 function toggleDisclaimerQualifyingQuestionsModal() { 1031 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 1032 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 1033 1034 if (disclaimerText.classList.contains('collapsed')) { 1035 disclaimerText.classList.remove('collapsed'); 1036 toggleButton.textContent = 'Read less'; 1037 toggleButton.setAttribute('aria-expanded', 'true'); 1038 } else { 1039 disclaimerText.classList.add('collapsed'); 1040 toggleButton.textContent = 'Read more'; 1041 toggleButton.setAttribute('aria-expanded', 'false'); 1042 } 1043 } 1044 </script>
1044 1045 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 1046 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 1047 <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;"> 1048 <span aria-hidden="true">×</span> 1049 </button> 1050 <div style="padding: 40px 30px 32px;"> 1051 <div style="text-align: left; margin-bottom: 32px;"> 1052 <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;"> 1053 Thanks, please provide more information to help serve you 1054 </h2> 1055 </div> 1056 <form id="qualifying-questions-modal-form" data-type="contact-form"> 1057 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 1058 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 1059 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 1060 <label for="qualifying-questions-modal-email" style="display:none;"> 1061 Email 1062 </label> 1063 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 1064 Trigger Source 1065 </label> 1066 1067 <div style="margin-bottom: 20px;"> 1068 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 1069 Phone Number 1070 </label> 1071 <input 1072 type="tel" 1073 id="qualifying-questions-modal-phoneNumber" 1074 name="phoneNumber" 1075 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;" 1076 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 1077 required 1078 placeholder="Phone" 1079 aria-label="Phone Number" 1080 inputmode="tel" 1081 autocomplete="tel" 1082 onfocus="this.style.borderColor='black';" 1083 onblur="this.style.borderColor='#848484';" 1084 /> 1085 </div> 1086 1087 <div style="margin-bottom: 20px;"> 1088 <label for="qualifying-questions-modal-interest" style="display:none;"> 1089 Interest 1090 </label> 1091 <select 1092 id="qualifying-questions-modal-interest" 1093 name="interest" 1094 required 1095 data-label="Interest" 1096 aria-label="Interest" 1097 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;" 1098 onfocus="this.style.borderColor='black'; this.style.color='black';" 1099 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 1100 > 1101 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 1102 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 1103 <option value="Selling" style="background: #fff; color: black;">Selling</option> 1104 <option value="Buying" style="background: #fff; color: black;">Buying</option> 1105 <option value="Renting" style="background: #fff; color: black;">Renting</option> 1106 <option value="Other" style="background: #fff; color: black;">Other</option> 1107 </select> 1108 </div> 1109 1110 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 1111 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 1112 <label class='lp-tcr-content'>
1113 <span class='lp-tcr-checkbox'> 1114 <input 1115 type='checkbox' 1116 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 1117 name='termsAccepted' 1118 aria-describedby='qualifying-questions-modal-disclaimer-text' 1119 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1120 oninput="this.setCustomValidity('')" 1121 required 1122 /></span> 1123 <span class='lp-tcr-message'> 1124 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 1125 1126 I agree to be contacted by 1127 <strong>Lisa Smith & Co</strong> 1128 via call, email, and text <span class="disclaimer-more">for real estate services. 1129 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1130 You can also click the unsubscribe link in the emails. 1131 Message and data rates may apply. Message frequency may vary.</span> 1132 <span class="disclaimer-ellipsis">...</span> 1133 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 1134 </div> 1135 <button 1136 id="qualifying-questions-modal-toggle-disclaimer" 1137 type="button" 1138 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 1139 aria-expanded="false" 1140 onclick="toggleDisclaimerQualifyingQuestionsModal()" 1141 > 1142 Read more 1143 </button> 1144 </span> 1145 </label> 1146 </div> 1147 1148 <div> 1149 <button 1150 type="submit" 1151 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;" 1152 onmouseover="this.style.background='transparent'; this.style.color='black';" 1153 onmouseout="this.style.background='black'; this.style.color='white';" 1154 > 1155 Submit 1156 </button> 1157 </div> 1158 </form> 1159 </div> 1160 </div> 1161 </div> 1162 </div> 1163 1164
1164<script> 1165 (function() { 1166 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 1167 1168 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 1169 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 1170 entries.forEach(function(video) { 1171 if (video.isIntersecting) { 1172 for (var source in video.target.children) { 1173 var videoSource = video.target.children[source]; 1174 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 1175 videoSource.src = videoSource.dataset.src; 1176 } 1177 } 1178 1179 video.target.load(); 1180 video.target.classList.remove("lazy"); 1181 lazyVideoObserver.unobserve(video.target); 1182 } 1183 }); 1184 }); 1185 1186 lazyVideos.forEach(function(lazyVideo) { 1187 lazyVideoObserver.observe(lazyVideo); 1188 }); 1189 } 1190 })(); 1191 </script>
1191 1192 1193 <!-- Global site tag (gtag.js) - Google Analytics --> 1194
1194<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1194 1195 1196 <!-- Google Tag Manager --> 1197
1197<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1198 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1199 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 1200 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1201 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1201 1202 <!-- End Google Tag Manager --> 1203 1204 1205 <!-- LP Tracker (divolte.js) - LP Divolte --> 1206
1206<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1206 1207 <!-- LP Tracker (eventBus) - LP EventBus --> 1208
1208<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1208 1209 1210
1210<script> 1211 window.dataLayer = window.dataLayer || []; 1212 document.sendGoogleTagManagerEvent = function() { 1213 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 1214 if (window.navigator.globalPrivacyControl) { 1215 return; 1216 } 1217 1218 dataLayer.push(arguments); 1219 } 1220 1221 document.sendGoogleTagManagerEvent('js', new Date()); 1222 document.sendGoogleTagManagerEvent('config', 'G-2YRWY7XET2', { page: location.pathname, location: location.href }); 1223 document.sendGoogleAnalyticsEvent = function(googleEvent) { 1224 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 1225 event_category: googleEvent.eventCategory, 1226 event_label: googleEvent.eventLabel, 1227 value: googleEvent.eventValue, 1228 page: googleEvent.page, 1229 location: googleEvent.location 1230 }) 1231 }; 1232 1233 document.addEventListener("DOMContentLoaded", function() { 1234 (function() { 1235 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 1236 var date = new Date(); 1237 var elements = document.getElementsByClassName('auto-year-update'); 1238 var i; 1239 for (i = 0; i < elements.length; i++) { 1240 elements[i].innerText = date.getFullYear(); 1241 } 1242 })(); 1243 if (window.divolteLp) { 1244 window.divolteLp('sendLpPageView', {}); 1245 } 1246 if (window.eventBusLp) { 1247 window.eventBusLp('sendLpPageView', {}); 1248 } 1249 }); 1250 </script>
1250 1251 1252 1253
1253<script> 1254 // Function to dynamically load a script 1255 function loadScript(url, callback) { 1256 var script = document.createElement('script'); 1257 script.type = 'text/javascript'; 1258 script.src = url; 1259 script.defer = true; 1260 script.async = true; 1261 script.onload = callback; 1262 document.head.appendChild(script); 1263 } 1264 1265 // Function to dynamically load CSS file 1266 function loadCSS(url) { 1267 var link = document.createElement("link"); 1268 link.rel = "stylesheet"; 1269 link.href = url; 1270 document.head.appendChild(link); 1271 } 1272 1273 // Global methods / variables that can be accessed by element js 1274 window.luxuryPresence = { 1275 libs: { 1276 loadJs: loadScript, 1277 loadCss: loadCSS, 1278 jsLibsMap: { 1279 paroller: { 1280 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 1281 isLoaded: false, 1282 }, 1283 ionRangeSlider: { 1284 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 1285 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 1286 isLoaded: false, 1287 requires: ['jquery'], 1288 }, 1289 splide: { 1290 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 1291 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 1292 isLoaded: false, 1293 }, 1294 wow: { 1295 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 1296 isLoaded: false, 1297 }, 1298 jquery: { 1299 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 1300 isLoaded: false, 1301 }, 1302 slick: { 1303 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 1304 isLoaded: false, 1305 requires: ['jquery'], 1306 }, 1307 libphonenumber: { 1308 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 1309 isLoaded: false, 1310 }, 1311 }, 1312 }, 1313 }; 1314 </script>
1314 1315
1315<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>
1315 1316
1316<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1316 1317
1317<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1317 1318
1318<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1318 1319
1319<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>
1319 1320
1320<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>
1320 1321
1321<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>
1321 1322 1323 <!-- GOOGLE TRANSLATE SCRIPT --> 1324
1324<script> 1325 function googleTranslateElementInit() { 1326 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 1327 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 1328 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 1329 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 1330 translate.innerText = ''; 1331 new google.translate.TranslateElement({ 1332 pageLanguage: 'en', 1333 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 1334 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 1335 }, translate); 1336 }); 1337 } 1338 </script>
1338 1339
1339<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1339 1340
1340<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1340 1341 1342 <!-- GOOGLE TRANSLATE SCRIPT END--> 1343
1343<script> 1344 1345 // UI helpers 1346 (function () { 1347 1348 function getSideMenu () { 1349 return document.querySelector('body > div.sidemenu'); 1350 } 1351 1352 function sideMenuHide (instant) { 1353 var sideMenu = getSideMenu(); 1354 if (!sideMenu || !sideMenu.classList.contains('visible')) { 1355 return; 1356 } 1357 sideMenu.classList.remove('visible'); 1358 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 1359 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 1360 } 1361 1362 function sideMenuShow () { 1363 var sideMenu = getSideMenu(); 1364 if (!sideMenu || sideMenu.classList.contains('visible')) { 1365 return; 1366 } 1367 sideMenu.classList.add('visible'); 1368 sideMenu.dispatchEvent(new Event('lpui-show')); 1369 window.dispatchEvent(new Event('lpui-sidemenu-show')); 1370 } 1371 1372 function sideMenuToggle () { 1373 var sideMenu = getSideMenu(); 1374 if (!sideMenu) { 1375 return; 1376 } 1377 var isSideMenuVisible = sideMenu.classList.contains('visible'); 1378 if (isSideMenuVisible) { 1379 sideMenuHide(); 1380 } else { 1381 sideMenuShow(); 1382 } 1383 } 1384 1385 var scrollLockRequests = {}; 1386 window.__debug_scrollLockRequests = scrollLockRequests; 1387 var hideScrollStyles = ''+ 1388 'body {'+ 1389 'overflow: hidden;' + 1390 '}'; 1391 var hideScrollId = 'hide-body-scroll-style'; 1392 1393 function scrollLock () { 1394 var style = document.createElement('style'); 1395 style.id = hideScrollId; 1396 style.textContent = hideScrollStyles; 1397 document.head.appendChild(style); 1398 window.dispatchEvent(new Event('lpui-scroll-locked')); 1399 } 1400 1401 function scrollUnlock () { 1402 document.getElementById(hideScrollId)?.remove(); 1403 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 1404 } 1405 1406 function requestScrollLock (lockId) { 1407 var wasLocked = Object.keys(scrollLockRequests).length > 0; 1408 scrollLockRequests[lockId || '__anonymous_lock'] = true; 1409 if (!wasLocked) { 1410 scrollLock(); 1411 } 1412 } 1413 1414 function releaseScrollLock (lockId) { 1415 if (lockId) { 1416 delete scrollLockRequests[lockId]; 1417 if (!Object.keys(scrollLockRequests).length) { 1418 scrollUnlock(); 1419 } 1420 } else { 1421 scrollLockRequests = {}; 1422 window.__debug_scrollLockRequests = scrollLockRequests; 1423 scrollUnlock(); 1424 } 1425 } 1426 1427 function showModal (modalId, options) { 1428 var modal = document.getElementById(modalId); 1429 if (!modal) { 1430 return; 1431 } 1432 1433 if (!modal.classList.contains('visible')) { 1434 modal.classList.add('visible'); 1435 if (options && options.scrollLock) { 1436 window.lpUI.requestScrollLock(modalId); 1437 } 1438 modal.dispatchEvent(new Event('lpui-show')); 1439 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 1440 } 1441 1442 const visibleModals = document.querySelectorAll('.modal.visible'); 1443 1444 if (visibleModals.length > 1) { 1445 1446 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 1447 const zIndex = window.getComputedStyle(modal).zIndex; 1448 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 1449 return Math.max(maxZIndex, parsedZIndex); 1450 }, 0); 1451 1452 modal.style.zIndex = maxZIndex + 1; 1453 } 1454 1455 } 1456 1457 function _hideModal (modalEl) { 1458 if (!modalEl) { 1459 return; 1460 } 1461 if (!modalEl.classList.contains('visible')) { 1462 return; 1463 } 1464 modalEl.classList.remove('visible'); 1465 modalEl.style.zIndex = '';
1466 modalEl.dispatchEvent(new Event('lpui-hide')); 1467 var modalId = modalEl.getAttribute('id'); 1468 if (modalId) { 1469 window.lpUI.releaseScrollLock(modalId); 1470 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 1471 } 1472 } 1473 1474 function hideModal (modalId) { 1475 _hideModal(document.getElementById(modalId)); 1476 } 1477 1478 function hideClosestModal (el) { 1479 const modal = el?.closest('.modal'); 1480 if (!modal) { 1481 return; 1482 } 1483 if (modal.classList) { 1484 _hideModal(modal); 1485 return; 1486 } 1487 if (modal.length && modal[0].classList) { 1488 _hideModal(modal[0]); 1489 } 1490 } 1491 1492 window.lpUI = { 1493 sideMenuHide: sideMenuHide, 1494 sideMenuShow: sideMenuShow, 1495 sideMenuToggle: sideMenuToggle, 1496 requestScrollLock: requestScrollLock, 1497 releaseScrollLock: releaseScrollLock, 1498 showModal: showModal, 1499 hideModal: hideModal, 1500 hideClosestModal: hideClosestModal 1501 } 1502 })(); 1503 1504 var stringifyPrimitive = function(v) { 1505 switch (typeof v) { 1506 case 'string': 1507 return v; 1508 1509 case 'boolean': 1510 return v ? 'true' : 'false'; 1511 1512 case 'number': 1513 return isFinite(v) ? v : ''; 1514 1515 default: 1516 return ''; 1517 } 1518 }; 1519 1520 function objectToQuerystring(obj, sep, eq, name) { 1521 // https://github.com/Gozala/querystring/blob/master/encode.js 1522 sep = sep || '&'; 1523 eq = eq || '='; 1524 if (obj === null) { 1525 obj = undefined; 1526 } 1527 1528 if (typeof obj === 'object') { 1529 return Object.keys(obj).map(function(k) { 1530 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 1531 if (Array.isArray(obj[k])) { 1532 return obj[k].map(function(v) { 1533 return ks + encodeURIComponent(stringifyPrimitive(v)); 1534 }).join(sep); 1535 } else { 1536 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 1537 } 1538 }).filter(Boolean).join(sep); 1539 1540 } 1541 1542 if (!name) return ''; 1543 return encodeURIComponent(stringifyPrimitive(name)) + eq + 1544 encodeURIComponent(stringifyPrimitive(obj)); 1545 } 1546 1547 function getPath(url, options) { 1548 var parser = document.createElement('a'); 1549 parser.href = url || ''; 1550 var path = parser.pathname || ''; 1551 if (path[0] !== '/') { 1552 // IE does not return path starting with a slash 1553 path = '/' + path; 1554 } 1555 1556 if (options && options.queryString) { 1557 path += parser.search; 1558 } 1559 1560 return path; 1561 } 1562 1563 function getMLSAutocomplete(keyword) { 1564 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1565 var query = { 1566 kind: 'listings', 1567 query: keyword 1568 }; 1569 1570 return superagent 1571 .get(searchURL) 1572 .query(query) 1573 .then(function(res) { 1574 var data = res.body || []; 1575 // Array of listing_auto_complete documents: id, display_address, city, state, 1576 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 1577 1578 return data; 1579 }); 1580 } 1581 1582 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 1583 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1584 1585 return superagent 1586 .get(searchURL) 1587 .query({ kind: 'listings', query: keyword, ...filters }) 1588 .then(function(res) { 1589 // Same response shape as getMLSAutocomplete. 1590 return res.body || []; 1591 }); 1592 } 1593 1594 function makeMlsLink(data) { 1595 // Code Dupe from utils/googlePlace 1596 // mapping of google data type to mls data type 1597 var mapping = { 1598 neighborhood: 'neighborhood', 1599 locality: 'place', 1600 administrative_area_level_2: 'county', 1601 administrative_area_level_1: 'state', 1602 postal_code: 'postalcode', 1603 }; 1604 1605 function _filterTypes(types) { 1606 return types.filter(function(type) { return type !== 'political' }); 1607 } 1608 1609 if (!data || !Object.keys(data).length) { 1610 return '/home-search/listings'; 1611 } 1612 1613 var newData = {};
1614 _filterTypes(data.types).forEach(function(type) { 1615 if (mapping[type]) { 1616 newData.search_type = mapping[type]; 1617 } 1618 }); 1619 newData.omnibox = data.formatted_address; 1620 data.address_components.forEach(function(component) { 1621 _filterTypes(component.types).forEach(function(type) { 1622 if (mapping[type]) { 1623 newData[mapping[type]] = component.long_name; 1624 } 1625 }); 1626 }); 1627 var bounds = data.geometry.bounds; 1628 var convertedData = Object.assign(bounds, newData); 1629 1630 return '/home-search/listings?' + objectToQuerystring(convertedData); 1631 } 1632 1633 function debounce(func, wait) { 1634 let timeout; 1635 return function(...args) { 1636 const context = this; 1637 clearTimeout(timeout); 1638 timeout = setTimeout(() => func.apply(context, args), wait) 1639 } 1640 } 1641 1642 // Global methods / variables that can be accessed by element js 1643 window.luxuryPresence = { 1644 ...window.luxuryPresence, 1645 defaults: { 1646 companyId: '11a474bc-3fa7-4ff3-ae77-28f47805a6ba', 1647 apiGatewayUrl: '/api-gw', 1648 routerUrl: '/api-nv', 1649 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\
1649n }\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
1649s: 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"}, 1650 propertyPlaceholderImage: {"id":"27a697fb-c4ac-4438-8c7a-087891a2ccbf","alt":null,"bytes":10129,"width":1080,"format":"png","height":1080,"pngUrl":"","shared":true,"curated":false,"duration":null,"largeUrl":"https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","smallUrl":"https://res.cloudinary.com/luxuryp/images/w_960,c_limit,f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","authorUrl":null,"createdAt":"2024-10-17T00:07:52.357Z","mediumUrl":"https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","sourceUrl":null,"updatedAt":"2024-10-17T00:07:52.357Z","xLargeUrl":"https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","__typename":"Media","altTagText":null,"authorName":null,"sourceName":null,"xxLargeUrl":"https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","description":null,"displayName":"agent-placeholder-1","originalUrl":"https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","resourceType":"image","thumbnailUrl":"https://res.cloudinary.com/luxuryp/images/w_320,c_limit,f_auto,q_auto/yix0ocvrhao0z4zkhpju/agent-placeholder-1","originalFileName":"agent-placeholder (1)","cloudinaryPublicId":"yix0ocvrhao0z4zkhpju"} 1651 }, 1652 objectToQuerystring: objectToQuerystring, 1653 getPath: getPath, 1654 getMLSAutocomplete: getMLSAutocomplete, 1655 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 1656 makeMlsLink: makeMlsLink, 1657 debounce: debounce, 1658 }; 1659 1660 var wowOffset = 100; 1661 </script>
1661 1662
1662<script> 1663 (()=>{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;
1663i&&(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())),`
1663<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}
1663return 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
1663ontact 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
1663ourceResource,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=([^;
1663]+)/);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=` 1664 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 1665 propertyDisclaimers(input: $input) { 1666 feedId 1667 listingId 1668 resolvedFromListing 1669 listingCardAttribution 1670 listingDetailCourtesy 1671 listingDetailFooter 1672 logo 1673 } 1674 } 1675`;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 >
1675 .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=)
1675)|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=` 1676 <div id="modal-${i.id}" class="modal visible"> 1677 <div class="modal-content"> 1678 <div class="lightbox-video"> 1679 <div class="video-player"> 1680 <div class="embed-container"> 1681 ${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>`} 1682 </div> 1683 </div> 1684 </div> 1685 </div> 1686 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 1687 </div> 1688 `;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
1688=>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");
1688let 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
1688URIComponent(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=` 1689 <button class="lp-lightbox__close" aria-label="close modal"></button> 1690 <div class="lp-lightbox__content"> 1691 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 1692 <div class="splide__arrows"> 1693 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 1694 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 1695 </div> 1696 <div class="splide__track"> 1697 <ul class="splide__list"></ul> 1698 </div> 1699 </div> 1700 </div> 1701 `,"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
1701h(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=` 1702 <button class="lp-lightbox__close" aria-label="close modal"></button> 1703 <div class="lp-lightbox__content"> 1704 <div class="lp-lightbox__carousel"></div> 1705 </div> 1706 `,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"}
1706)),(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"];
1706return 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=` 1707 query { 1708 validSession { 1709 success 1710 } 1711 } 1712 `;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","
1712spaceTypeIds","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})}})(); 1713//# sourceMappingURL=lp-sdk.js.map 1714 1715 </script>
1715 1716 1717
1717<script> 1718 var lpGlobalInitialized = false; 1719 1720 function lpGlobalInit () { 1721 if (lpGlobalInitialized) { 1722 return; 1723 } 1724 lpGlobalInitialized = true; 1725 // Initialize wow animation plugin only according to turbolinks 1726 var wow; 1727 if (window.WOW) { 1728 wow = new WOW({ 1729 animateClass: 'animated', 1730 offset: wowOffset, 1731 live: false, 1732 callback: function(box) {} 1733 }); 1734 } 1735 // Initialize handlebar helpers only once 1736 function handlebarsInit() { 1737 if (!window.Handlebars) { 1738 return; 1739 } 1740 HandlebarsIntl.registerWith(Handlebars); 1741 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 1742 } 1743 1744 handlebarsInit(); 1745 1746 var modalContentUrl = "/modals.html"; 1747 const modalsContainer = document.getElementById('modals'); 1748 if (modalsContainer) { 1749 fetch(modalContentUrl).then(function(res) { 1750 if (!res.ok) { 1751 throw new Error(`HTTP error! Status: ${res.status}`); 1752 } 1753 return res.text(); 1754 }).then(function(resultText) { 1755 modalsContainer.innerHTML = resultText; 1756 1757 // now we need to execute all script elements 1758 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 1759 const script = document.createElement("script"); 1760 script.text = s.innerHTML; 1761 Array.from(s.attributes).forEach(function (a) { 1762 script.setAttribute(a.name, a.value); 1763 }) 1764 s.parentNode.replaceChild(script, s); 1765 }); 1766 1767 try { 1768 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 1769 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 1770 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 1771 window.luxuryPresence.oauth.initialize({ 1772 googleSignOnEnabled: true, 1773 iframe: false }); 1774 } catch (e) { 1775 console.log(e); 1776 } 1777 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 1778 closeModalBtn.addEventListener('click', function() { 1779 window.lpUI.hideClosestModal(closeModalBtn); 1780 }); 1781 }); 1782 }).catch((e) => console.log(e)); 1783 } 1784 /* Initialize Luxury Presence SDK */ 1785 try { 1786 window.luxuryPresence.config.setCompany("11a474bc-3fa7-4ff3-ae77-28f47805a6ba", {}); 1787 window.luxuryPresence.config.setWebsite("d9b87e97-cc17-4738-b3ce-1e5ee5dc3b3e", { 1788 myhomeDashboardEnabled: true, 1789 mlsEnabled: true, 1790 hstValuationRedirectEnabled: true, 1791 hvStepTwoCaptureEnabled: false 1792 }); 1793 const url = new URL(window.location.href); 1794 const shareId = url.searchParams.get('shareId'); 1795 window.luxuryPresence.config.setPage("787e8d6f-b610-4a3e-9291-72b1f591b23a", { 1796 sourceResource: "", 1797 pageElementId: "", 1798 pageQueryVariables: {}, 1799 shareId: "", 1800 }); 1801 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 1802 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 1803 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 1804 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 1805 window.luxuryPresence.config.setEventBus({ 1806 enabled: true, 1807 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 1808 url: "https://p.luxurypresence.com", 1809 }); 1810 window.luxuryPresence.config.setTemplateId("0c2b9641-6f2a-40f2-a2e0-dabc022eb278", {}); 1811 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 1812 window.luxuryPresence.buttons.initialize({}); 1813 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 1814 window.luxuryPresence.contactForms.initialize({}); 1815 window.luxuryPresence.validation.initialize({}); 1816 window.luxuryPresence.expandSliders.initialize({}); 1817 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 1818 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 1819 } catch (e) { 1820 console.log(e); 1821 } 1822 1823 /* Inject Section Specific Javascript */ 1824 try { 1825(function init(sectionDomId) { 1826 const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content'); 1827 if (disclaimerLabel) { 1828 const input = disclaimerLabel.querySelector('input'); 1829 if (input) { 1830 input.setAttribute('id', `${sectionDomId}-termsAccepted`); 1831 input.value = 'true'; 1832 const label = document.createElement('label'); 1833 label.setAttribute('for', `${sectionDomId}-termsAccepted`); 1834 label.classList.add('lp-visually-hidden'); 1835 label.textContent = 'Opt in/Disclaimer Consent:'; 1836 disclaimerLabel.prepend(label); 1837 } 1838 } 1839 function setHttp(link) { 1840 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 1841 link = 'https://' + link; 1842 } 1843 return link; 1844 } 1845 const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link'); 1846 socialLinks.forEach(linkElement => { 1847 const href = linkElement.getAttribute('href'); 1848 if (href) { 1849 linkElement.setAttribute('href', setHttp(href)); 1850 } 1851 }); 1852 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 1853 if (redirectLink.length) { 1854 const rawHref = setHttp(redirectLink.attr('href')); 1855 let formEvent; 1856 if (rawHref) { 1857 formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset'; 1858 $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () { 1859 redirectLink.attr('href', rawHref); 1860 redirectLink[0].click(); 1861 }); 1862 } 1863 } 1864})('modal-global-contact-us'); 1865} catch(e) { 1866console.log(e); 1867} 1868 1869 try { 1870(function init(sectionDomId) { 1871 const $section = $('#' + sectionDomId); 1872 const $hamburger = $section.find('.hamburger-component'); 1873 function onSideMenuShow() { 1874 if (!$hamburger.hasClass('active')) { 1875 $hamburger.addClass('active'); 1876 } 1877 } 1878 function onSideMenuHide() { 1879 $hamburger.removeClass('active'); 1880 } 1881 const $window = $(window); 1882 $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow); 1883 $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide); 1884 const $subContainers = $section.find('.navigation__item.sub-nav-container'); 1885 $subContainers.hover(function () { 1886 $(this).find('.sub-nav').addClass('visible'); 1887 }, function () { 1888 $(this).find('.sub-nav').removeClass('visible'); 1889 }); 1890 $window.on('click.lpui-auto-clean', function () { 1891 $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown'); 1892 }); 1893 let fixedWidth = 0; 1894 const rightPad = 20; 1895 function fixSubsPosition() { 1896 const wWidth = window.innerWidth; 1897 if (innerWidth === fixedWidth) { 1898 return; 1899 } 1900 fixedWidth = wWidth; 1901 $subContainers.each(function () { 1902 const $sub = $(this).find('.sub-nav'); 1903 $sub[0].style.right = '';
1904 const sRect = $sub[0].getBoundingClientRect(); 1905 const sRight = sRect.left + sRect.width; 1906 if (sRight > wWidth - rightPad) { 1907 const parentRect = $sub[0].offsetParent.getBoundingClientRect(); 1908 const parentRight = parentRect.left + parentRect.width; 1909 $sub[0].style.right = `${parentRight - wWidth + rightPad}px`; 1910 } 1911 }); 1912 } 1913 var debouncer; 1914 $window.on('resize.lpui-auto-clean', function () { 1915 clearTimeout(debouncer); 1916 debouncer = setTimeout(fixSubsPosition, 500); 1917 }); 1918 fixSubsPosition(); 1919 if ($('.property-intro').length || $('.property-intro-2').length) { 1920 $('nav').addClass('dark-opening'); 1921 $("#global-navbar").css({ 1922 "background-color": "rgb(26, 26, 26)", 1923 "color": "rgb(255, 255, 255)" 1924 }); 1925 } 1926 function initAutoTruncateMenu() { 1927 const $navbar = $section.find('.navbar'); 1928 const $navList = $section.find('.navigation > ul'); 1929 if (!$navbar.length || !$navList.length) { 1930 return; 1931 } 1932 const $logo = $section.find('.logo'); 1933 const $buttonsWrapper = $section.find('.buttons-wrapper'); 1934 const $allItems = $navList.children('.navigation__item'); 1935 const $phoneItem = $allItems.filter(function () { 1936 return $(this).find('a[href^="tel:"]').length > 0; 1937 }); 1938 const $menuItems = $allItems.not($phoneItem); 1939 if (!$menuItems.length) { 1940 return; 1941 } 1942 const buffer = 8; 1943 function measureFixedWidth() { 1944 let width = buffer; 1945 if ($logo.length) { 1946 width += $logo.outerWidth(true) || 0; 1947 } 1948 if ($buttonsWrapper.length) { 1949 width += $buttonsWrapper.outerWidth(true) || 0; 1950 } 1951 if ($phoneItem.length) { 1952 width += $phoneItem.outerWidth(true) || 0; 1953 } 1954 return width; 1955 } 1956 function truncateMenu() { 1957 if (!$navList.is(':visible')) { 1958 return; 1959 } 1960 $menuItems.css('display', ''); 1961 const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth(); 1962 let widthSoFar = 0; 1963 let overflowed = false; 1964 $menuItems.each(function () { 1965 const $item = $(this); 1966 if (overflowed) { 1967 $item.css('display', 'none'); 1968 return; 1969 } 1970 widthSoFar += $item.outerWidth(true); 1971 if (widthSoFar > availableWidth) { 1972 $item.css('display', 'none'); 1973 overflowed = true; 1974 } 1975 }); 1976 } 1977 let truncateFrame; 1978 function scheduleTruncate() { 1979 if (truncateFrame) { 1980 return; 1981 } 1982 truncateFrame = window.requestAnimationFrame(function () { 1983 truncateFrame = null; 1984 truncateMenu(); 1985 }); 1986 } 1987 scheduleTruncate(); 1988 if (window.ResizeObserver) { 1989 const resizeObserver = new ResizeObserver(scheduleTruncate); 1990 resizeObserver.observe($navbar[0]); 1991 } else { 1992 $(window).on('resize.lpui-auto-truncate', scheduleTruncate); 1993 } 1994 $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate); 1995 $(window).on('load.lpui-auto-truncate', scheduleTruncate); 1996 if (document.fonts && document.fonts.ready) { 1997 document.fonts.ready.then(scheduleTruncate); 1998 } 1999 } 2000 initAutoTruncateMenu(); 2001})('global-navbar'); 2002} catch(e) { 2003console.log(e); 2004} 2005 try { 2006(function init(sectionDomId, options) { 2007 var elementSelector = options.elementSelector || 'nav'; 2008 var element = document.querySelector(elementSelector); 2009 var sections = document.querySelectorAll('body > section'); 2010 var subNavContainers = element.querySelectorAll('.sub-nav'); 2011 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 2012 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 2013 var fontColor = options.fontColor || '#fff'; 2014 var fontColorScroll = options.fontColorScroll || '#000'; 2015 var didScroll = false; 2016 var lastScrollTop = 0; 2017 var delta = 5; 2018 2019 // eslint-disable-next-line sonarjs/no-collapsible-if 2020 if (wow) { 2021 // Wowjs might not trigger for position fixed elements 2022 if (window.scrollY > 0) { 2023 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 2024 } 2025 } 2026 function adjustNavPinState() { 2027 // Remove 'visible' class from all subNavContainers 2028 for (let i = 0; i < subNavContainers.length; i++) { 2029 subNavContainers[i].classList.remove('visible'); 2030 } 2031 if (window.scrollY > 0) { 2032 element.style.backgroundColor = backgroundColorScroll; 2033 element.style.color = fontColorScroll; 2034 element.classList.add('scroll'); 2035 } else {
2036 element.style.backgroundColor = initialBackgroundColor; 2037 element.style.color = fontColor; 2038 element.classList.remove('scroll'); 2039 } 2040 } 2041 adjustNavPinState(); 2042 function onScroll() { 2043 didScroll = true; 2044 } 2045 window.addEventListener('scroll', onScroll); 2046 2047 // eslint-disable-next-line 2048 var debounceInterval = setInterval(() => { 2049 if (didScroll) { 2050 // eslint-disable-next-line 2051 hasScrolled(); 2052 didScroll = false; 2053 } 2054 }, 250); 2055 function hasScrolled() { 2056 adjustNavPinState(); 2057 // eslint-disable-next-line 2058 var navbarHeight = element.offsetHeight; 2059 // eslint-disable-next-line 2060 var st = window.scrollY; 2061 2062 // Make sure they scroll more than delta 2063 if (Math.abs(lastScrollTop - st) <= delta) { 2064 return; 2065 } 2066 if (st > lastScrollTop && st > navbarHeight) { 2067 // Scroll Down 2068 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 2069 document.documentElement.style.setProperty('--global-header-height', '0px'); 2070 2071 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 2072 sections.forEach(section => { 2073 if (section.classList.contains('sticky')) { 2074 section.style.top = '0px'; 2075 } 2076 }); 2077 } else { 2078 // Scroll Up 2079 // eslint-disable-next-line 2080 if (st + window.innerHeight < document.documentElement.scrollHeight) { 2081 element.style.transform = `translateY(0) scaleY(1)`; 2082 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 2083 sections.forEach(section => { 2084 if (section.classList.contains('sticky')) { 2085 section.style.top = `${navbarHeight}px`; 2086 } 2087 }); 2088 } 2089 } 2090 lastScrollTop = st; 2091 } 2092})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}")); 2093} catch(e) { 2094console.log(e); 2095} 2096 try { 2097(function init(sectionDomId) { 2098 var sidemenu = $('#' + sectionDomId); 2099 sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () { 2100 window.lpUI.requestScrollLock(sectionDomId); 2101 }); 2102 $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () { 2103 window.lpUI.releaseScrollLock(sectionDomId); 2104 }); 2105 $(window).click(function (e) { 2106 let targetContactForm = $(e.target).closest('#modal-global-contact-us').length; 2107 let targetSideMenu = $(e.target).closest('.sidemenu').length; 2108 let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length; 2109 let targetHamburger = $(e.target).closest('.hamburger-component').length; 2110 if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { 2111 $('body').removeClass('locked'); 2112 $('.hamburger').removeClass('active'); 2113 $('.sidemenu').removeClass('visible'); 2114 $('#modal-global-contact-us').removeClass('visible'); 2115 } 2116 }); 2117})('global-sidemenu'); 2118} catch(e) { 2119console.log(e); 2120} 2121 2122 try { 2123(function init(footerId) { 2124 var textContent = $(".text_content_wrap p").text().trim().length; 2125 const socialLinks = $(`#${footerId} .lp-socials__link`); 2126 if (textContent < 1) { 2127 $(".text_content_wrap").remove(); 2128 $(".second_text_footer").css({ 2129 'margin-bottom': 0 2130 }); 2131 } 2132 if (socialLinks.length > 0) { 2133 socialLinks.attr('data-wow-offset', '10'); 2134 } 2135 if ($(window).width() > 1280) { 2136 let footer = document.querySelector("#" + footerId); 2137 let copyrightElem = footer.querySelector(".copy_zone"); 2138 if (copyrightElem) { 2139 copyrightElem.style.whiteSpace = "nowrap"; 2140 let nowrapElemWidth = copyrightElem.clientWidth; 2141 copyrightElem.style.whiteSpace = ""; 2142 let normalElemWidth = copyrightElem.clientWidth; 2143 if (nowrapElemWidth > normalElemWidth) { 2144 footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto"); 2145 } 2146 } 2147 } 2148 const form = $("#" + footerId).find("form"); 2149 const redirectLink = $('#' + footerId + ' .redirect-link'); 2150 form.on("reset", function () { 2151 redirectPage(redirectLink); 2152 }); 2153 function redirectPage(link) { 2154 if (link.length) { 2155 const rawHref = link.attr('href'); 2156 link.attr('href', setHttp(rawHref)); 2157 link[0].click(); 2158 } 2159 } 2160 function setHttp(link) { 2161 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2162 link = 'http://' + link; 2163 } 2164 return link; 2165 } 2166})('global-footer'); 2167} catch(e) { 2168console.log(e); 2169} 2170 2171 try { 2172(function init(sectionDomId) { 2173 var _section = $('#' + sectionDomId); 2174 var _footer = document.getElementById('global-footer'); 2175 const redirectLink = _section.find('.js-redirect-link'); 2176 function setHttp(link) { 2177 if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) { 2178 link = 'https://' + link; 2179 } 2180 return link; 2181 } 2182 function redirectPage(link) { 2183 if (link.length) { 2184 window.location.href = setHttp(link.attr('href')); 2185 } 2186 } 2187 const emailInput = _section.find('.js-email-input'); 2188 const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/; 2189 emailInput.on('input', function () { 2190 if (emailRegex.test(this.value)) { 2191 this.setCustomValidity(''); 2192 } else { 2193 this.setCustomValidity('Please enter a valid email address.'); 2194 } 2195 this.reportValidity(); 2196 }); 2197 _section.find('input[name="name"]').on("keyup", function () { 2198 if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") { 2199 this.setCustomValidity("Please input your first name and last name."); 2200 } else { 2201 this.setCustomValidity(""); 2202 } 2203 }); 2204 _section.find('form').on("reset", function () { 2205 $(this).addClass("show-success"); 2206 redirectPage(redirectLink); 2207 }); 2208 $(window).scroll(function () { 2209 if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible'); 2210 }); 2211 _section.find('.close-btn, .connect-btn').click(function () { 2212 _section.find('.pop-up').toggle(); 2213 _section.find('.btn-holder').toggle(); 2214 }); 2215 if (!_footer) return; 2216 const observer = new IntersectionObserver(entries => {
2217 entries.forEach(entry => { 2218 if (entry.isIntersecting) _section.hide();else _section.show(); 2219 }); 2220 }, { 2221 threshold: 0.1 2222 }); 2223 observer.observe(_footer); 2224 function selectToDropdown(selectItem) { 2225 let customDropdown = ` 2226 <div class="custom-select" role="presentation"> 2227 <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button> 2228 <div class="custom-select-menu" style="display: none;max-height: none;"> 2229 <div class="custom-select-content"> 2230 </div> 2231 </div> 2232 </div>`; 2233 $(customDropdown).insertAfter(selectItem); 2234 let $dropdown = $($(selectItem).next()); 2235 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 2236 let $dropdownMenu = $dropdown.find(".custom-select-menu"); 2237 let $dropdownContent = $dropdown.find(".custom-select-content"); 2238 $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select"); 2239 $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom"); 2240 $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id")); 2241 appendOptionButtons(selectItem, $dropdownContent); 2242 $(selectItem).removeClass().addClass("sr-only"); 2243 var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text(); 2244 $dropdownToggle.html(toggleText); 2245 $dropdown.on("click", ".custom-select-item", function (e) { 2246 if ($(this).hasClass("is-disabled")) return; 2247 let elementNumber = $(this).index(); 2248 let $originalSelect = $(this).closest(".custom-select").siblings("select"); 2249 let $linkedOption = $originalSelect.find("option").eq(elementNumber); 2250 if (!$linkedOption.prop("selected")) { 2251 $linkedOption.prop("selected", true); 2252 $originalSelect.change(); 2253 $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected"); 2254 $dropdownToggle.html($(this).html()); 2255 closeSelectMenu($(this).closest(".custom-select-menu")); 2256 } 2257 $dropdownToggle.removeClass("is-placeholder"); 2258 }); 2259 function convertOptionToButton(option) { 2260 var optionText = $(option).text(); 2261 var optionValue = $(option).attr("value") || $(option).text(); 2262 var optionIsDisabled = $(option).prop("disabled"); 2263 var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`; 2264 return outputButton; 2265 } 2266 function appendOptionButtons(selectItem, appendTarget) { 2267 $(selectItem).find("option").each(function () { 2268 let currentButton = convertOptionToButton(this); 2269 $(appendTarget).append(currentButton); 2270 }); 2271 } 2272 function showSelectMenu(selectMenu) { 2273 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2274 $(customSelect).addClass("open"); 2275 $(selectMenu).slideDown(); 2276 } 2277 function closeSelectMenu(selectMenu) { 2278 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2279 $(customSelect).removeClass("open"); 2280 $(selectMenu).slideUp(); 2281 } 2282 $dropdown.on("click", ".custom-select-toggle", function (e) { 2283 var $customSelect = $(this).closest(".custom-select"); 2284 var selectMenu = $customSelect.find(".custom-select-menu")[0]; 2285 if ($customSelect.hasClass("open")) { 2286 closeSelectMenu(selectMenu); 2287 } else { 2288 showSelectMenu(selectMenu); 2289 } 2290 }); 2291 $(document).on("click", function (e) { 2292 if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) { 2293 $(".custom-select.open").each(function () { 2294 var selectMenu = $(this).find(".custom-select-menu")[0]; 2295 closeSelectMenu(selectMenu); 2296 }); 2297 } 2298 }); 2299 } 2300 $(".pop-up select[name='interest']").each(function () { 2301 selectToDropdown(this); 2302 }); 2303})('global-mobile-contact'); 2304} catch(e) { 2305console.log(e); 2306} 2307 2308 try { 2309(function init(sectionDomId, options) { 2310 let section = null; 2311 switch (sectionDomId) { 2312 case 'NAVBAR': 2313 section = document.querySelector('body > nav, #global-navbar'); 2314 break; 2315 case 'FOOTER': 2316 section = document.querySelector('body > footer, #global-footer'); 2317 break; 2318 case 'SIDEMENU': 2319 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 2320 break; 2321 case 'CONTACT':
2322 section = document.querySelector('#modal-global-contact-us'); 2323 break; 2324 case 'MOBILE_CONTACT': 2325 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 2326 break; 2327 case 'SUBSCRIBE': 2328 // Subscribe Not Implemented 2329 section = null; 2330 break; 2331 case 'ACCOUNT': 2332 // Account Not Implemented 2333 section = null; 2334 break; 2335 default: 2336 section = document.querySelector('#' + sectionDomId); 2337 } 2338 if (!section) { 2339 return; 2340 } 2341 2342 // Where content / items are rendered 2343 const dataContainer = section.querySelector('.data-container'); 2344 if (!dataContainer) { 2345 // no place to render items = no need to query server or do anything else 2346 return; 2347 } 2348 let variables = options.variables || {}; 2349 2350 // Some variables in options may not have been injected - remove 2351 Object.keys(variables).forEach(function (variableName) { 2352 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 2353 delete variables[variableName]; 2354 } 2355 }); 2356 2357 // Merge page query variables 2358 if (options.usePageResource) { 2359 variables = { 2360 ...variables, 2361 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 2362 }; 2363 } 2364 2365 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 2366 // resolve the flag â fetchData reads the section stamp, aux fetches read 2367 // their own resource's stamp (auxUsesRouter). 2368 function apiUrl(useRouter) { 2369 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 2370 } 2371 2372 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 2373 // (options.routerApiAux is stamped per aux resource server-side). 2374 function auxUsesRouter(resource) { 2375 return !!(options.routerApiAux && options.routerApiAux[resource]); 2376 } 2377 2378 // Pagination Executes on a Numbered Pagination Container 2379 // Or via a load more button 2380 let mode = 'BUTTONLESS_PAGINATION'; 2381 const container = section.querySelector('.pagination-container');
2382 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 2383 if (container) { 2384 mode = 'NUMBERED_PAGINATION'; 2385 } 2386 if (loadMoreButton) { 2387 mode = 'LOAD_MORE_BUTTON'; 2388 } 2389 let searchContainer = section.querySelector('.search-container'); 2390 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 2391 const eventPrefix = '__pagination-'; 2392 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 2393 param: 'neighborhoodId', 2394 urlKey: 'neighborhood' 2395 }, { 2396 param: 'search', 2397 urlKey: 'search' 2398 }, { 2399 param: 'salesPriceGTE', 2400 urlKey: 'pricemin', 2401 formKey: 'priceMin', 2402 type: 'int' 2403 }, { 2404 param: 'salesPriceLTE', 2405 urlKey: 'pricemax', 2406 formKey: 'priceMax', 2407 type: 'int' 2408 }, { 2409 param: 'livingSpaceSizeGTE', 2410 urlKey: 'areamin', 2411 formKey: 'areaMin', 2412 type: 'int' 2413 }, { 2414 param: 'livingSpaceSizeLTE', 2415 urlKey: 'areamax', 2416 formKey: 'areaMax', 2417 type: 'int' 2418 }] : []); 2419 2420 // Total entries - initialized in first render 2421 let totalNumber = 0; 2422 const DefaultSearchParams = { 2423 page: 1 2424 }; 2425 searchFormParams.forEach(function (formParam) { 2426 DefaultSearchParams[formParam.formKey || formParam.param] = null; 2427 }); 2428 let searchParams = { 2429 ...DefaultSearchParams 2430 }; 2431 const offset = options.variables?.offset || 0; 2432 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 2433 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 2434 2435 // entries of per page 2436 // when query variables for a given section would't be filled options.pageSize can store 2437 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 2438 let pageSize = parseInt(options.pageSize, 10) || 9; 2439 2440 // Adding mobile pageRange support 2441 var NARROW_BREAKPOINT = 600; 2442 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 2443 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 2444 2445 // Page range (pages on both sides of the current page) 2446 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 2447 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 2448 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 2449 2450 // Whether to display the 'Previous' button 2451 var showPrevious = true; 2452 2453 // Whether to display the 'Next' button 2454 var showNext = true; 2455 2456 // Whether to display the page buttons 2457 var showPageNumbers = true; 2458 2459 // 'Previous' text 2460 var prevText = options.prevText || '«'; 2461 2462 // 'Next' text 2463 var nextText = options.nextText || '»'; 2464 2465 // Ellipsis text 2466 var ellipsisText = '…'; 2467 var classPrefix = 'paginationjs'; 2468 2469 // Default active class 2470 var activeClassName = 'active'; 2471 2472 // Default disable class 2473 var disableClassName = 'disabled'; 2474 2475 // Pagination element's position in the container 2476 var position = 'bottom'; 2477 2478 // Whether to trigger pagination at initialization 2479 var triggerPagingOnInit = !options.skipInitialLoad; 2480 var showFirstOnEllipsisShow = true; 2481 var showLastOnEllipsisShow = true; 2482 2483 // Instantiated in init() 2484 var el = null; 2485 2486 // Controls scrollTop logic 2487 var firstRender = true; 2488 var renderBySearch = false; 2489 var disabled = false; 2490 2491 // Pagination script class selector 2492 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 2493 2494 // Property Specific Image Override if No Image 2495 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 2496 2497 // Construct template 2498 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 2499 var template = Handlebars.compile(templateHTML); 2500 2501 // Initialize 2502 init(); 2503 function init() { 2504 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 2505 2506 // Append/prepend pagination element to the pagination container 2507 if (mode === 'NUMBERED_PAGINATION') { 2508 el = document.createElement('div'); 2509 el.className = 'paginationjs';
2510 container[position === 'bottom' ? 'append' : 'prepend'](el); 2511 } 2512 if (searchContainer) { 2513 initSearchContainer({ 2514 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 2515 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 2516 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 2517 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 2518 }, function () { 2519 syncSearchFormState(searchParams); 2520 }); 2521 } 2522 2523 // Bind events 2524 observer(); 2525 } 2526 function syncSearchFormState(params) { 2527 searchContainer.dispatchEvent(new CustomEvent('sync', { 2528 detail: params 2529 })); 2530 } 2531 function initSearchContainer(options, done) { 2532 var promises = []; 2533 if (options.fetchNeighborhoods) { 2534 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 2535 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 2536 detail: { 2537 data: neighborhoods.map(function (item) { 2538 return { 2539 value: item.id, 2540 label: item.name 2541 }; 2542 }) 2543 } 2544 })); 2545 })); 2546 } 2547 if (options.fetchPostCategories) { 2548 promises.push(fetchPostCategories(function (categories) { 2549 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 2550 detail: { 2551 data: categories 2552 } 2553 })); 2554 })); 2555 } 2556 if (options.fetchOffices) { 2557 promises.push(fetchOffices(function (offices) { 2558 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 2559 detail: { 2560 data: offices 2561 } 2562 })); 2563 })); 2564 } 2565 if (options.fetchRentalRates) { 2566 promises.push(fetchAllRentalRates(function (rentalRates) { 2567 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 2568 detail: { 2569 data: rentalRates 2570 } 2571 })); 2572 })); 2573 } 2574 if (promises.length > 0) { 2575 Promise.all(promises).then(function () { 2576 done(); 2577 }); 2578 } else { 2579 // element's custom code is not executed yet, so we're scheduling callback to after element's code 2580 setTimeout(done); 2581 } 2582 } 2583 function fetchAllNeighborhoods(done) { 2584 var useRouter = auxUsesRouter('neighborhoods'); 2585 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 2586 // args on both APIs (the federated neighborhoods field accepts 2587 // withProperties/withBlogPosts); only the selection set differs. 2588 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') + '}}'; 2589 var payload = {}; 2590 payload.offset = 0; 2591 payload.limit = 100; 2592 payload.companyId = variables.companyId; 2593 if (options.resource === 'properties') { 2594 payload.withProperties = { 2595 active: true 2596 }; 2597 ['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) { 2598 if (variables[field] !== undefined && variables[field] !== null) { 2599 payload.withProperties[field] = variables[field]; 2600 } 2601 }); 2602 } 2603 if (options.resource === 'posts') { 2604 payload.withBlogPosts = { 2605 active: true 2606 }; 2607 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 2608 if (variables[field] !== undefined && variables[field] !== null) { 2609 payload.withBlogPosts[field] = variables[field]; 2610 } 2611 }); 2612 } 2613 2614 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2615 if (useRouter) { 2616 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 2617 } 2618 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2619 query: gqlQuery, 2620 variables: payload 2621 }).then(function (res) { 2622 var value = res.body.data && res.body.data.neighborhoods || {}; 2623 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2624 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2625 done(items, items.length); 2626 }); 2627 } 2628 function fetchPostCategories(done) { 2629 var featured = options.resource === 'posts' && !!variables.featured; 2630 var useRouter = auxUsesRouter('postCategories'); 2631 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2632 // selection set differs ({ items {...} } on the router). 2633 var selection = 'id, name, publishedCount, featuredPublishedCount'; 2634 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) + '}}'; 2635 var payload = {}; 2636 payload.offset = 0; 2637 payload.limit = 100; 2638 payload.companyId = variables.companyId; 2639 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2640 query: gqlQuery, 2641 variables: payload 2642 }).then(function (res) { 2643 var value = res.body.data && res.body.data.postCategories || {}; 2644 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2645 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2646 done(items.map(function (item) { 2647 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 2648 return item; 2649 }), items.length); 2650 }); 2651 } 2652 function fetchOffices(done) { 2653 var useRouter = auxUsesRouter('offices'); 2654 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2655 // selection set differs ({ items {...} } on the router). 2656 var selection = 'id, name, tags'; 2657 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 2658 // APIs differ in more than the items wrapper: federated offices takes 2659 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 2660 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 + '}}'; 2661 var payload = { 2662 offset: 0, 2663 limit: 100, 2664 companyId: variables.companyId 2665 }; 2666 2667 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2668 if (useRouter) { 2669 payload = window.luxuryPresence.routerApi.transformVariables('office
2669s', payload); 2670 } 2671 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2672 query: gqlQuery, 2673 variables: payload 2674 }).then(function (res) { 2675 var value = res.body.data && res.body.data.offices || {}; 2676 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2677 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2678 done(items, items.length); 2679 }); 2680 } 2681 2682 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 2683 function fetchAllRentalRates(done) { 2684 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 2685 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 2686 var payload = { 2687 offset: 0, 2688 limit: 100, 2689 companyId: variables.companyId 2690 }; 2691 superagent.post(url + '/graphql').withCredentials().send({ 2692 query: gqlQuery, 2693 variables: payload 2694 }).then(function (res) { 2695 var items = res.body.data && res.body.data.rentalRates || []; 2696 done(items, items.length); 2697 }).catch(function (err) { 2698 console.error('Error fetching rental rates:', err); 2699 done([], 0); 2700 }); 2701 } 2702 function fetchData(params, done) { 2703 var resource = options.resource; 2704 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 2705 var payload = {}; 2706 try { 2707 payload = JSON.parse(JSON.stringify(variables)); 2708 } catch (e) { 2709 Object.keys(variables).forEach(function (variableName) { 2710 payload[variableName] = variables[variableName]; 2711 }); 2712 } 2713 payload.offset = (params.page - 1) * pageSize + offset; 2714 payload.limit = pageSize; 2715 payload.companyId = options.companyId; 2716 searchFormParams.forEach(function (formParam) { 2717 var val = params[formParam.formKey || formParam.param]; 2718 if (val !== null && val !== undefined) { 2719 objSet(payload, formParam.param, val); 2720 } 2721 }); 2722 2723 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2724 if (options.useRouterApi) { 2725 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 2726 } 2727 2728 // TODO: Disabled loading due to jarring effect 2729 // dataContainer.html('Loading...'); 2730 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 2731 query: gqlQuery, 2732 variables: payload 2733 }).then(function (res) { 2734 if (res.body.errors) { 2735 done(res.body.errors); 2736 return; 2737 } 2738 var data = res.body.data || {}; 2739 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2740 var resources; 2741 var resourceCount; 2742 if (options.useRouterApi) { 2743 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 2744 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 2745 resourceCount = page.count; 2746 } else { 2747 resources = data[resource] || []; 2748 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 2749 } 2750 const finish = function (items) { 2751 if (resource === 'properties' && propertyPlaceholderImage?.id) { 2752 items = items.map(item => { 2753 if (item.media?.length === 0) { 2754 return Object.assign(item, { 2755 media: [propertyPlaceholderImage] 2756 }); 2757 } 2758 return item; 2759 }); 2760 } 2761 done(null, items, resourceCount); 2762 }; 2763 2764 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 2765 // disclaimers before rendering; older SDKs skip (keys stay unset). 2766 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 2767 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 2768 return; 2769 } 2770 finish(resources); 2771 }); 2772 } 2773 function getTotalPage() { 2774 return Math.ceil(totalNumber / pageSize); 2775 } 2776 function renderPaginationList() { 2777 var totalPages = getTotalPage(); 2778 var rangeStart = searchParams.page - pageRange; 2779 var rangeEnd = searchParams.page + pageRange; 2780 if (rangeEnd > totalPages) { 2781 rangeEnd = totalPages; 2782 rangeStart = totalPages - pageRange * 2; 2783 rangeStart = rangeStart < 1 ? 1 : rangeStart; 2784 } 2785 if (rangeStart <= 1) { 2786 rangeStart = 1; 2787 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 2788 } 2789 2790 // Making sure that 1 more page button is shown in edge positions 2791 if (pageRange === 0) { 2792 if (searchParams.page === totalPages) { 2793 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 2794 } 2795 if (searchParams.page === 1) { 2796 rangeEnd = Math.min(2, totalPages); 2797 } 2798 } 2799 2800 // Render pagination list 2801 if (mode === 'NUMBERED_PAGINATION') { 2802 el.innerHTML = generateHTML({ 2803 currentPage: searchParams.page, 2804 pageRange: pageRange, 2805 rangeStart: rangeStart, 2806 rangeEnd: rangeEnd 2807 }); 2808 if (totalPages < 2 && hidePaginationOnFirstPage) { 2809 container.style.display = 'none'; 2810 } else { 2811 container.style.display = ''; 2812 } 2813 } else if (mode === 'LOAD_MORE_BUTTON') { 2814 if (searchParams.page >= totalPages) {
2815 loadMoreButton.style.display = 'none'; 2816 } else { 2817 loadMoreButton.style.display = ''; 2818 } 2819 } 2820 } 2821 function render(data) { 2822 renderPaginationList(); 2823 2824 // Render new content with handlebars 2825 var html = ''; 2826 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 2827 // If using load more, append search results to existing results 2828 html = dataContainer.innerHTML; 2829 } 2830 for (var i = 0; i < data.length; i++) { 2831 var itemData = recursivelyParse(data[i]); 2832 itemData.sectionIndex = options.sectionIndex; 2833 itemData.renderOptions = options.renderOptions; 2834 html += template(itemData); 2835 } 2836 dataContainer.innerHTML = html; 2837 2838 // Scroll Top 2839 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 2840 // Only animate to the top if we replace dataContainer (numbered pagination) 2841 setTimeout(() => { 2842 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 2843 window.scrollTo({ 2844 top: scrollTargetOffsetTop, 2845 behavior: 'smooth' 2846 }); 2847 }, 250); 2848 } 2849 return true; 2850 } 2851 function generateHTML(args) { 2852 const totalPages = getTotalPage(); 2853 const { 2854 rangeStart, 2855 rangeEnd 2856 } = args; 2857 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 2858 ...searchParams, 2859 page 2860 }); 2861 let html = ''; 2862 if (showPrevious || showPageNumbers || showNext) { 2863 html += '<div class="paginationjs-pages"><ul>'; 2864 2865 // Previous button 2866 if (showPrevious) { 2867 if (searchParams.page <= 1) { 2868 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 2869 } else { 2870 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>`; 2871 } 2872 } 2873 2874 // Pages 2875 if (showPageNumbers) { 2876 if (rangeStart <= 3) { 2877 for (let i = 1; i < rangeStart; i++) { 2878 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>`; 2879 } 2880 } else { 2881 if (showFirstOnEllipsisShow) { 2882 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 2883 } 2884 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 2885 } 2886 for (let i = rangeStart; i <= rangeEnd; i++) { 2887 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>`; 2888 } 2889 if (rangeEnd < totalPages - 2) { 2890 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 2891 if (showLastOnEllipsisShow) { 2892 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 2893 } 2894 } else { 2895 for (let i = rangeEnd + 1; i <= totalPages; i++) { 2896 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 2897 } 2898 } 2899 } 2900 2901 // Next button 2902 if (showNext) { 2903 if (searchParams.page >= totalPages) { 2904 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 2905 } else { 2906 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>`; 2907 } 2908 } 2909 html += '</ul></div>'; 2910 } 2911 return html; 2912 } 2913 function go(newSearchParams, callback, restorationVisit) { 2914 if (disabled) return; 2915 var goToPageNumber = newSearchParams.page; 2916 2917 // Page number is out of bounds 2918 if (!goToPageNumber || goToPageNumber < 1) return; 2919 var totalPage = getTotalPage(); 2920 2921 // Page number is out of bounds 2922 if (!restorationVisit && totalNumber > 0) { 2923 if (goToPageNumber > totalPage) return; 2924 } 2925 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
2926 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 2927 ...newSearchParams, 2928 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 2929 }); 2930 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 2931 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 2932 queryString: true 2933 })); 2934 } 2935 } 2936 2937 // Fetch and update page 2938 fetchData(newSearchParams, renderWithData); 2939 disabled = true; 2940 function renderWithData(err, data, count) { 2941 if (err) { 2942 dataContainer.dispatchEvent(new Event('error')); 2943 } else { 2944 searchParams = { 2945 ...newSearchParams 2946 }; 2947 totalNumber = count - offset; 2948 if (data.length === 0) { 2949 dataContainer.dispatchEvent(new Event('no-data')); 2950 } else { 2951 dataContainer.dispatchEvent(new Event('data')); 2952 } 2953 render(data); 2954 firstRender = false; 2955 } 2956 disabled = false; 2957 renderBySearch = false; 2958 } 2959 } 2960 function areQueryParamsEqual(first, second) { 2961 var differ = Object.keys(first).find(function (key) { 2962 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 2963 }); 2964 if (differ) { 2965 return false; 2966 } 2967 differ = Object.keys(second).find(function (key) { 2968 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 2969 }); 2970 return !differ; 2971 } 2972 function next(callback) { 2973 go({ 2974 ...searchParams, 2975 page: searchParams.page + 1 2976 }, callback); 2977 } 2978 function previous(callback) { 2979 go({ 2980 ...searchParams, 2981 page: searchParams.page - 1 2982 }, callback); 2983 } 2984 function refresh(callback) { 2985 go(searchParams, callback); 2986 } 2987 function update(params, callback) { 2988 renderBySearch = true; 2989 go(params, callback); 2990 } 2991 function observer() { 2992 if (searchContainer) { 2993 searchContainer.addEventListener('search', function (event, newSearchParams) { 2994 newSearchParams = event.detail || newSearchParams; 2995 update({ 2996 ...searchParams, 2997 ...newSearchParams, 2998 page: 1 2999 }); 3000 }); 3001 searchContainer.addEventListener('clear-search', function () { 3002 const defaultSearchParams = { 3003 ...DefaultSearchParams 3004 }; 3005 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 3006 ...defaultSearchParams, 3007 page: null 3008 }, { 3009 ...searchParams, 3010 page: null 3011 }); 3012 3013 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 3014 // when search form have default state 3015 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 3016 return; 3017 } 3018 3019 // if someone initially go to some page and click 'Clear' on search from 3020 // we should't navigate to first page. We should preserve page value 3021 if (isCurrentSearchFormStateDefault) { 3022 defaultSearchParams.page = searchParams.page; 3023 } 3024 syncSearchFormState(defaultSearchParams); 3025 update(defaultSearchParams); 3026 }); 3027 } 3028 if (mode === 'LOAD_MORE_BUTTON') { 3029 loadMoreButton.addEventListener('click', function (event) { 3030 go({ 3031 ...searchParams, 3032 page: searchParams.page + 1 3033 }); 3034 return false; 3035 }); 3036 } 3037 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 3038 // Do initial render 3039 go(Object.assign({}, searchParams, { 3040 page: 1 3041 })); 3042 return; 3043 } 3044 if (mode === 'NUMBERED_PAGINATION') { 3045 // Go to specified page number 3046 container.addEventListener(eventPrefix + 'go', function (event) { 3047 let { 3048 pageNumber, 3049 done 3050 } = event.detail || {}; 3051 pageNumber = parseInt(pageNumber, 10); 3052 if (!pageNumber) { 3053 return; 3054 } 3055 go({ 3056 ...searchParams, 3057 page: pageNumber 3058 }, done); 3059 }); 3060 3061 // Page number button click 3062 el.addEventListener('click', function (event) { 3063 let clickTarget = event.target; 3064 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 3065 let pageNumber = current?.getAttribute('data-num'); 3066 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 3067 return; 3068 } else { 3069 go({ 3070 ...searchParams, 3071 page: parseInt(pageNumber, 10) 3072 }); 3073 } 3074 event.preventDefault(); 3075 }); 3076 3077 // Whether to load the default page 3078 var defaultPageNumber = searchParams.page; 3079 if (triggerPagingOnInit) {
3080 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 3081 detail: { 3082 pageNumber: defaultPageNumber 3083 } 3084 })); 3085 } 3086 } 3087 window.addEventListener('popstate', function (event) { 3088 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3089 if (!areQueryParamsEqual(newParams, searchParams)) { 3090 go(newParams, null, true); 3091 if (searchContainer) { 3092 syncSearchFormState(newParams); 3093 } 3094 } 3095 }); 3096 } 3097 function replaceVariables(template, variables) { 3098 var formattedString; 3099 for (var key in variables) { 3100 var value = variables[key]; 3101 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 3102 formattedString = (formattedString || template).replace(regexp, value); 3103 } 3104 return formattedString; 3105 } 3106 function isTextEditorValue(obj) { 3107 return 'raw' in obj || 'gjs' in obj; 3108 } 3109 function getTextEditorValue(obj) { 3110 if (!obj.html) { 3111 return ''; 3112 } 3113 var data = obj.html; 3114 var css = (obj.raw || obj.gjs || {}).css; 3115 if (css) { 3116 data = data + '<style>' + css + '</style>'; 3117 } 3118 return data; 3119 } 3120 3121 /** 3122 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 3123 * strips out raw proprties and returns only HTML if it exists. 3124 * @param {Object} resources a collection retrieved from the database 3125 * @return {Object} the newly modified object. 3126 */ 3127 function recursivelyParse(resources) { 3128 forEach(resources, function (value, key) { 3129 if (!value) { 3130 return; 3131 } 3132 if (value instanceof Object) { 3133 if (isTextEditorValue(value)) { 3134 resources[key] = getTextEditorValue(value); 3135 return; 3136 } else { 3137 return recursivelyParse(value); 3138 } 3139 } 3140 try { 3141 var parsedData = JSON.parse(value); 3142 if (isTextEditorValue(parsedData)) { 3143 resources[key] = getTextEditorValue(parsedData); 3144 } 3145 } catch (e) { 3146 // do nothing if we failed to parse value as JSON 3147 } 3148 }); 3149 return resources; 3150 } 3151 function forEach(collection, iteratee) { 3152 var func = Array.isArray(collection) ? arrayEach : baseFor; 3153 return func(collection, iteratee); 3154 } 3155 function baseFor(object, iteratee) { 3156 if (!object) { 3157 return; 3158 } 3159 var iterable = Object(object); 3160 var props = Object.keys(object); 3161 var length = props.length; 3162 var index = -1; 3163 while (length--) { 3164 var key = props[++index]; 3165 if (iteratee(iterable[key], key, iterable) === false) { 3166 break; 3167 } 3168 } 3169 return object; 3170 } 3171 function objSet(obj, path, value) { 3172 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 3173 pathArray.reduce((acc, key, i) => { 3174 if (acc[key] === undefined) acc[key] = {}; 3175 if (i === pathArray.length - 1) acc[key] = value; 3176 return acc[key]; 3177 }, obj); 3178 } 3179 function arrayEach(array, iteratee) { 3180 var index = -1; 3181 var length = array.length; 3182 while (++index < length) { 3183 if (iteratee(array[index], index, array) === false) { 3184 break; 3185 } 3186 } 3187 return array; 3188 } 3189 function selectPageRangeMode(e) { 3190 pageRange = e.matches ? mobilePageRange : desktopPageRange; 3191 renderPaginationList(); 3192 } 3193 paginationMql.addEventListener('change', selectPageRangeMode); 3194})('section-1c231f04-3531-4dd0-babc-b62c9e4e8703', JSON.parse("{\"pageSize\":\"4\",\"resource\":\"posts\",\"pageRange\":0,\"variables\":{\"limit\":4,\"order\":\"publishedAt\",\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"11a474bc-3fa7-4ff3-ae77-28f47805a6ba\",\"categoryId\":\"{{pageElement.categoryId}}\"},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"categoryIds\",\"urlKey\":\"category\"}],\"skipScrollOnSearch\":true,\"scrollTargetSelector\":\".blog-list__container\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"11a474bc-3fa7-4ff3-ae77-28f47805a6ba\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":true,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 3195} catch(e) { 3196console.log(e); 3197} 3198 try { 3199(function init(sectionDomId) { 3200 const section = $(`#${sectionDomId}`); 3201 const searchInput = section.find('.js-search-input'); 3202 const searchContainer = section.find('.search-container'); 3203 const dataContainer = section.find('.data-container'); 3204 const categoryFilter = section.find('.js-category-filter'); 3205 const btnCategory = section.find('.js-btn-category'); 3206 let activeFilters = null; 3207 if (searchContainer.length === 0) return; 3208 const { 3209 debounce 3210 } = window.luxuryPresence; 3211 const emptyResultsText = section.find('.empty-results'); 3212 searchInput.on('input', debounce(doSearch, 700)); 3213 dataContainer.on('data', function () { 3214 emptyResultsText.removeClass("visible"); 3215 }); 3216 dataContainer.on('no-data', function () { 3217 emptyResultsText.addClass("visible"); 3218 }); 3219 btnCategory.click(function () { 3220 $(this).toggleClass('active'); 3221 categoryFilter.slideToggle(); 3222 }); 3223 function doSearch() { 3224 let values = categoryFilter.find('.active').map(function () { 3225 return $(this).data('value'); 3226 }).get(); 3227 const params = { 3228 categoryIds: values || null, 3229 search: searchInput.val().trim() || null 3230 }; 3231 searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 3232 detail: params 3233 })); 3234 } 3235 categoryFilter.on('click', '.category-cell', function () { 3236 if ($(this).hasClass('js-category-all')) { 3237 section.find('.category-cell').removeClass('active'); 3238 $(this).addClass('active'); 3239 } else { 3240 $(this).toggleClass('active'); 3241 section.find('.js-category-all').removeClass('active'); 3242 } 3243 doSearch(); 3244 }); 3245 searchContainer.on('post-categories-data', function (ev, category) { 3246 category = ev.detail || category; 3247 categoryFilter.find('.js-category-cell').remove(); 3248 categoryFilter.find('.active').removeClass('active'); 3249 let btnClass = categoryFilter.data('button-style'); 3250 if (Array.isArray(category.data) && category.data.length) { 3251 btnCategory.css('display', 'inline-flex'); 3252 categoryFilter.append(category.data.map(item => `<button id="filter-${item.id}" data-value="${item.id}" class="category-cell js-category-cell lp-btn ${btnClass}">${item.name}</button>`).join('\n')); 3253 } else { 3254 btnCategory.remove(); 3255 } 3256 setActiveFilters(); 3257 }); 3258 searchContainer.on('sync', function (event, params) { 3259 params = event.detail || params; 3260 activeFilters = params; 3261 setActiveFilters(); 3262 }); 3263 function setActiveFilters() { 3264 categoryFilter.find('.active').removeClass('active'); 3265 if (activeFilters.categoryIds !== null && activeFilters.categoryIds.length > 0) { 3266 activeFilters.categoryIds.forEach(function (categoryId) { 3267 categoryFilter.find(`#filter-${categoryId}`).addClass('active'); 3268 }); 3269 } else { 3270 categoryFilter.find('.js-category-all').addClass('active'); 3271 } 3272 } 3273})('section-1c231f04-3531-4dd0-babc-b62c9e4e8703', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"companyId\":\"11a474bc-3fa7-4ff3-ae77-28f47805a6ba\",\"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}}")); 3274} catch(e) { 3275console.log(e); 3276} 3277 try { 3278(function init(sectionDomId) {})('section-fe2c6dc7-cc7b-4a2c-9087-e18c2b7f45d4', 'undefined'); 3279} catch(e) { 3280console.log(e); 3281} 3282 try { 3283(function init(sectionDomId) { 3284 const $section = $('#' + sectionDomId); 3285 if ($section.find('.parallax').length) $section.addClass('parallax-enabled'); 3286 if ($section.find('.video-wrapper').length) $section.addClass('video'); 3287})('section-f773d57f-7f43-40dd-ac98-37b941a266af', 'undefined'); 3288} catch(e) { 3289console.log(e); 3290} 3291 try { 3292(function init(sectionDomId, options) { 3293 let section = null; 3294 switch (sectionDomId) { 3295 case 'NAVBAR': 3296 section = document.querySelector('body > nav, #global-navbar'); 3297 break; 3298 case 'FOOTER': 3299 section = document.querySelector('body > footer, #global-footer'); 3300 break; 3301 case 'SIDEMENU': 3302 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3303 break; 3304 case 'CONTACT':
3305 section = document.querySelector('#modal-global-contact-us'); 3306 break; 3307 case 'MOBILE_CONTACT': 3308 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3309 break; 3310 case 'SUBSCRIBE': 3311 // Subscribe Not Implemented 3312 section = null; 3313 break; 3314 case 'ACCOUNT': 3315 // Account Not Implemented 3316 section = null; 3317 break; 3318 default: 3319 section = document.querySelector('#' + sectionDomId); 3320 } 3321 if (!section) { 3322 return; 3323 } 3324 var url = window.luxuryPresence.defaults.routerUrl; 3325 var companyId = window.luxuryPresence.defaults.companyId; 3326 var limit = options.limit || 8; 3327 if (typeof limit === 'string') { 3328 limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected 3329 } 3330 var templateSelector = options.templateSelector || '.jsIGTemplate'; 3331 var containerSelector = options.containerSelector || '.jsIGContainer'; 3332 var hasDataClass = options.hasDataClass || 'has-data'; 3333 var hideActivateMessage = options.hasDataClass || false; 3334 var payload = { 3335 companyId: companyId, 3336 limit: limit 3337 }; 3338 if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) { 3339 payload.resourceId = options.resourceId; 3340 // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase 3341 payload.resource = String(options.resource || 'agent').toUpperCase(); 3342 payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true; 3343 } 3344 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'; 3345 var templateHTML = section.querySelector(templateSelector)?.innerHTML || ''; 3346 var template = Handlebars.compile(templateHTML); 3347 var container = section.querySelector(containerSelector); 3348 if (options.variables) { 3349 Object.keys(options.variables).forEach(function (key) { 3350 if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) { 3351 payload[key] = options.variables[key]; 3352 } 3353 }); 3354 } 3355 function getData() { 3356 var feed = { 3357 error: true 3358 }; 3359 if (payload.companyId == null || payload.companyId === '') { 3360 // instagramContentFeed requires companyId (ID!) â nothing to fetch without it. 3361 // Checked after the options.variables merge, which may override the default. 3362 // Deferred so element listeners (attached after this template runs) still receive it. 3363 setTimeout(function () { 3364 section.dispatchEvent(new CustomEvent('ig-data', { 3365 detail: feed 3366 })); 3367 }, 0); 3368 return; 3369 } 3370 superagent.post(url + '/graphql').send({ 3371 query: query, 3372 variables: payload 3373 }).then(res => { 3374 try { 3375 if (!res.body.errors) { 3376 feed = res.body.data.instagramContentFeed; 3377 if (!feed.active) { 3378 if (!hideActivateMessage && sectionDomId === 'section-temp' && container) { 3379 if (payload.resourceId) { 3380 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>'; 3381 } else { 3382 container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>'; 3383 } 3384 } 3385 } else { 3386 if (feed.items.length) { 3387 if (hasDataClass) { 3388 section.classList.add(hasDataClass); 3389 } 3390 const feedName = feed.username; 3391 section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl)); 3392 section.querySelectorAll('.jsIGName').forEach(name => { 3393 name.textContent = '@' + feedName; 3394 name.setAttribute('title', '@' + feedName); 3395 }); 3396 if (container && template) { 3397 container.innerHTML = template(feed); 3398 } 3399 } 3400 } 3401 } 3402 } catch (e) {} 3403 section.dispatchEvent(new CustomEvent('ig-data', { 3404 detail: feed 3405 })); 3406 }).catch(e => { 3407 console.log('err', e); 3408 section.dispatchEvent(new CustomEvent('ig-data', { 3409 detail: feed 3410 })); 3411 }); 3412 } 3413 getData(); 3414})('section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"11a474bc-3fa7-4ff3-ae77-28f47805a6ba\",\"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}}")); 3415} catch(e) { 3416console.log(e); 3417} 3418 try { 3419(function init(sectionDomId) { 3420 const $section = $('#' + sectionDomId); 3421 var templateHTML = $section.find('.jsIGItem').html(); 3422 var itemTemplate = templateHTML && Handlebars.compile(templateHTML); 3423 const $container = $section.find('.ig-feed-feed'); 3424 const $topPrev = $section.find('.top-nav-prev'); 3425 const $topNext = $section.find('.top-nav-next'); 3426 const $bottomPrev = $section.find('.bottom-nav-prev'); 3427 const $bottomNext = $section.find('.bottom-nav-next'); 3428 let limit = 33; 3429 try { 3430 limit = parseInt($container[0].dataset['limit']); 3431 } catch (e) {} 3432 if (!limit) { 3433 limit = 33; 3434 } 3435 let igFeed = {}; 3436 let usedWidth = 0; 3437 let slider = null; 3438 $section.on('ig-data', function (ev, feed) { 3439 feed = ev.detail || feed; 3440 igFeed = feed; 3441 if (feed.active && feed.items.length) { 3442 buildSlider(); 3443 } 3444 }); 3445 $(window).on('resize.lpui-auto-clean', onResize); 3446 let timer = null; 3447 function onResize() { 3448 clearTimeout(timer); 3449 timer = window.setTimeout(buildSlider, 50); 3450 } 3451 function getLayout(w, n) { 3452 if (w > 1100) { 3453 if (n > 7) { 3454 return { 3455 type: 'type1', 3456 single: 1, 3457 multi: n, 3458 slides: 3, 3459 slider: n > 9 3460 }; 3461 } 3462 if (n > 5) { 3463 return { 3464 type: 'type1', 3465 single: 2, 3466 multi: n, 3467 slides: 3, 3468 slider: false 3469 }; 3470 } 3471 return { 3472 type: 'type1', 3473 single: n, 3474 multi: n, 3475 slides: 3, 3476 slider: n > 3 3477 }; 3478 } else if (w > 880) { 3479 if (n > 4) { 3480 return { 3481 type: 'type2', 3482 single: 1, 3483 multi: n, 3484 slides: 2.5, 3485 slider: n > 7 3486 }; 3487 } 3488 return { 3489 type: 'type1', 3490 single: n, 3491 multi: n, 3492 slides: 3, 3493 slider: n > 3 3494 }; 3495 } else if (w > 767) { 3496 if (n > 4) { 3497 return { 3498 type: 'type3', 3499 single: 1, 3500 multi: n, 3501 slides: 2, 3502 slider: n > 5 3503 }; 3504 } 3505 return { 3506 type: 'type4', 3507 single: n, 3508 multi: n, 3509 slides: 2, 3510 slider: n > 2 3511 }; 3512 } else if (w > 460) { 3513 return { 3514 type: 'type4', 3515 single: n, 3516 multi: n, 3517 slides: 2, 3518 slider: n > 2 3519 }; 3520 } 3521 return { 3522 type: 'type5', 3523 single: n, 3524 multi: n, 3525 slides: 1, 3526 slider: n > 1 3527 }; 3528 } 3529 function ensureClass($el, className) { 3530 if ($el.hasClass(className)) { 3531 return; 3532 } 3533 $el.addClass(className); 3534 } 3535 function makeSquare($el) { 3536 const el = $el[0]; 3537 el.style.width = ''; 3538 el.style.height = ''; 3539 const rect = el.getBoundingClientRect(); 3540 if (rect.width !== rect.height) { 3541 el.style.width = rect.height + 'px'; 3542 } 3543 } 3544 function buildSlider() { 3545 const cWidth = $container[0].getBoundingClientRect().width; 3546 if (cWidth === usedWidth) { 3547 return; 3548 } 3549 $container.empty();
3550 slider = $('<div class="ig-feed-slider"></div>'); 3551 const items = igFeed.items.slice(0, limit); 3552 const layout = getLayout(cWidth, items.length); 3553 let i = 0; 3554 let slide = null; 3555 while (i < layout.single) { 3556 slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider); 3557 i++; 3558 } 3559 while (i < layout.multi) { 3560 slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider); 3561 let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide); 3562 const lim = i + 4; 3563 while (i < lim && i < layout.multi) { 3564 slideContent.append(itemTemplate(items[i])); 3565 i++; 3566 } 3567 } 3568 $container.append(slider); 3569 if (layout.slider) { 3570 $topPrev.removeClass('hidden-control'); 3571 $topNext.removeClass('hidden-control'); 3572 $bottomPrev.removeClass('hidden-control'); 3573 $bottomNext.removeClass('hidden-control'); 3574 let prev, next; 3575 if ($bottomPrev.parent()[0].getBoundingClientRect().width) { 3576 prev = $bottomPrev; 3577 next = $bottomNext; 3578 } else { 3579 prev = $topPrev; 3580 next = $topNext; 3581 makeSquare($topPrev); 3582 makeSquare($topNext); 3583 } 3584 slider.children().each(function () { 3585 this.style.width = this.getBoundingClientRect().width + 'px'; 3586 }); 3587 slider.slick({ 3588 dots: false, 3589 prevArrow: prev, 3590 nextArrow: next, 3591 slidesToScroll: 1, 3592 infinite: false, 3593 slidesToShow: layout.slides 3594 }); 3595 } else { 3596 ensureClass($topPrev, 'hidden-control'); 3597 ensureClass($topNext, 'hidden-control'); 3598 ensureClass($bottomPrev, 'hidden-control'); 3599 ensureClass($bottomNext, 'hidden-control'); 3600 } 3601 } 3602})('section-13ca0c8c-d819-4b68-8c3f-d1794c59dc4c', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"companyId\":\"11a474bc-3fa7-4ff3-ae77-28f47805a6ba\",\"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}}")); 3603} catch(e) { 3604console.log(e); 3605} 3606 3607 var { body } = document; 3608 var globalNav = body.querySelector(':scope > nav'); 3609 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 3610 3611 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 3612 modalCloseBtn.addEventListener('click', function() { 3613 window.lpUI.hideClosestModal(modalCloseBtn); 3614 }); 3615 }); 3616 3617 window.addEventListener('click', function() { 3618 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 3619 sharedPopup.style.display = 'none' ; 3620 }); 3621 }); 3622 3623 /* Misc Partials / Addons */ 3624 function initWOW() { 3625 if (wow) { 3626 wow.init(); 3627 wow.scrollHandler(); 3628 setTimeout(function () { 3629 const wowHideStyle = document.getElementById('wow-hide-elements'); 3630 if(wowHideStyle) { 3631 wowHideStyle.disabled = true; 3632 } 3633 }, 1); 3634 } 3635 } 3636 3637 const wowHideElements = document.getElementById('wow-hide-elements'); 3638 if (wowHideElements) { 3639 wowHideElements.disabled = false; 3640 } 3641 3642 var globalLoader = document.getElementById('global-loader'); 3643 if (globalLoader) { 3644 setTimeout(function() { 3645 globalLoader.style.height = "0px"; 3646 window.sessionStorage.setItem('global_loading_displayed', 'yes'); 3647 3648 // Remove global-loader to prevent caching issues with turbolinks 3649 globalLoader.addEventListener('transitionend', 3650 function(e) { 3651 globalLoader.remove(); 3652 initWOW(); 3653 }); 3654 }, 1000); 3655 } else { 3656 initWOW(); 3657 } 3658 3659 /* Generic Navbar Handling */ 3660 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 3661 hamburgerComponent.addEventListener('click', function() { 3662 window.lpUI.sideMenuToggle(); 3663 }); 3664 }); 3665 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 3666 toggleEl.addEventListener('click', function() { 3667 window.lpUI.sideMenuToggle(); 3668 }); 3669 }); 3670 3671 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 3672 linkEl.addEventListener('click', function(e) { 3673 e.preventDefault(); 3674 e.stopPropagation();
3675 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 3676 if (subNav && subNav.classList.contains('visible')){ 3677 subNav.classList.remove('visible'); 3678 } else { 3679 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 3680 globalSubNav.classList.remove('visible'); 3681 }); 3682 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 3683 sideMenuSubNav.classList.remove('visible'); 3684 }); 3685 subNav?.classList.add('visible'); 3686 } 3687 }); 3688 }); 3689 window.addEventListener('click', function() { 3690 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 3691 subNavEl.classList.remove('visible'); 3692 }); 3693 }); 3694 3695 } 3696 3697 document.addEventListener('DOMContentLoaded', lpGlobalInit); 3698 3699 </script>
3699 3700 3701
3701<script type="module"> 3702 function selectorExists(selector) { 3703 return document.querySelector(selector) !== null; 3704 } 3705 3706 // Function to initialize the third-party library 3707 function initParoller(selector = '.my-paroller') { 3708 var $parollerElements = $(selector); 3709 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 3710 $parollerElements.paroller(); 3711 } 3712 } 3713 3714 const parollerSelector = '.my-paroller'; 3715 3716 if (selectorExists(parollerSelector)) { 3717 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 3718 initParoller(parollerSelector); 3719 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 3720 }); 3721 } 3722 </script>
3722 3723 3724 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3724-3725
3724 3725 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3725GTM-T9SFQGHZ
vendor: 107 bytes, lines 3725-3727
3725" 3726 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 3727
3727<!-- End Google Tag Manager --> 3728 3729
3729<script 3730 src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js" 3731 data-website-id="d9b87e97-cc17-4738-b3ce-1e5ee5dc3b3e" 3732 3733 defer></script>
vendor: 1 bytes, line 3733
3733
3734<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 3734
3734
3735<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:'a452550e8cc0e5db',t:'MTc5MTA5NzQ2NA=='};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>
3735</body> 3736</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.