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>New Jersey Real Estate Insights | Christian Di Stasio Group</title> 10 <meta property="og:title" content="New Jersey Real Estate Insights | Christian Di Stasio Group"> 11 <meta name="twitter:title" content="New Jersey Real Estate Insights | Christian Di Stasio Group"> 12 <meta name="description" content="Unlock valuable New Jersey real estate insights with the Christian Di Stasio Group. Discover top-rated NJ real estate agents for your property needs."> 13 <meta property="og:description" content="Unlock valuable New Jersey real estate insights with the Christian Di Stasio Group. Discover top-rated NJ real estate agents for your property needs."> 14 <meta name="twitter:description" content="Unlock valuable New Jersey real estate insights with the Christian Di Stasio Group. Discover top-rated NJ real estate agents for your property needs."> 15 <meta property="og:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/781cc293-cb03-4359-a8a9-89fbfa5b7f7f"> 16 <meta name="twitter:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/781cc293-cb03-4359-a8a9-89fbfa5b7f7f"> 17 <meta property="og:url" content="https://christiandistasio.com/blog"> 18 <link rel="canonical" href="https://christiandistasio.com/blog"> 19
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <style>@font-face {font-family: 'MercuryDisplayRoman';src: url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/MercuryDisplayRoman/MercuryDisplay-Roman.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/MercuryDisplayRoman/MercuryDisplay-Roman.woff') format('woff');font-weight: 400;font-style: normal;}</style><style>@font-face {font-family: 'BentonSans';src: url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/BentonSans/v3/BentonSans-Regular.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/BentonSans/v3/BentonSans-Regular.woff') format('woff');font-weight: 400;font-style: normal;}@font-face {font-family: 'BentonSans';src: url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/BentonSans/v3/BentonSans-Medium.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/BentonSans/v3/BentonSans-Medium.woff') format('woff');font-weight: 500;font-style: normal;}</style> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:MercuryDisplayRoman,serif;--global-primary-font-family-short:MercuryDisplayRoman;--global-secondary-font-family:BentonSans,sans-serif;--global-secondary-font-family-short:BentonSans;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:61px;--global-h2-font-size:37px;--global-h3-font-size:27px;--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:BentonSans,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:MercuryDisplayRoman,serif;}h1{font-size:61px;}h2{font-size:37px;}h3{font-size:27px;}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">#global-mobile-contact>div.pop-up>div{border:1px solid #fff;border-radius:15px;}#modal-global-contact-us .redesign .link:after{background-color:#fff;}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:21px!important;}@media only screen and (max-width: 768px){#modal-global-contact-us>div>div>div>div.section-details>h2{margin-top:40px;}}.lp-btn,.redesign .lp-btn,.redesign .btn{padding:20px 46px;}.lp-btn,.redesign .lp-btn,.redesign .btn{text-overflow:initial;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}body>div.mobile-contact-wrapper div.mobile-contact{bottom:150px;}@media only screen and (max-width: 768px){iframe[name='widgetCta']{bottom:55px!important;right:15px!important;}}iframe[name="widgetCta"]{bottom:70px!important;right:15px!important;}body>div.mobile-contact-wrapper{z-index:9999!important;}body>div.mobile-contact-wrapper .mobile-contact{z-index:9999!important;}.redesign .btn--small{padding:20px 46px;}.lp-btn{padding:20px 46px!important;}button.newsletter-signup__form-item{line-height:1;font-weight:700;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}.redesign .btn--small{padding:20px 46px;}.lp-btn{padding:20px 46px!important;}button.newsletter-signup__form-item{line-height:1;font-weight:700;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}:root{--primary:#002349;--secondary:#ffffff;--accent:#917035;--blocking:#f1f1f1;--text-input:#f3f3f3;--buttons:#917035;
31--dark:#002349;--black:#000;--white:#fff;--light-gray:#ccc;--dark-gray:#999;--lp-color-error:#f00;}nav#global-navbar .header .logo img{max-width:100%;max-height:75px!important;}@media only screen and (min-width: 768px){nav#global-navbar .header .logo img{max-width:100%;max-height:70px;}}@media only screen and (max-width: 768px){nav#global-navbar .header .logo img{max-width:100%;max-height:40px;}}nav#global-navbar .header{min-height:120px!important;}nav#global-navbar .header .navigation .sub-nav ul{background-color:transparent;}nav#global-navbar .header .navigation .sub-nav ul li{background-color:var(--white);}nav#global-navbar .header .navigation .sub-nav ul li:hover{background-color:var(--buttons);}nav#global-navbar .header .navigation .sub-nav ul a{color:var(--black);}nav#global-navbar.scroll{background-color:rgba(255, 255, 255, 0.9)!important;}nav#global-navbar.scroll li.navigation__item a.navigation__link{color:var(--primary);}nav#global-navbar.scroll li.navigation__item a.navigation__link span:after{background-color:var(--primary);}nav#global-navbar.scroll button.hamburger-component.hamburger{color:var(--primary);}nav#global-navbar .header .navigation .sub-nav ul a:hover{color:var(--white)!important;}nav#global-navbar.scroll .header a.logo__link img:last-child{display:block!important;}nav#global-navbar.scroll .header a.logo__link img:first-child{display:none!important;}nav .header .navigation .sub-nav__link{max-width:400px!important;}nav .header .navigation .sub-nav ul{max-width:400px!important;}@media (max-width: 768px){footer#global-footer .footer .info-wrap .type_user{margin-bottom:21px;}}@media (min-width: 1201px){footer#global-footer .footer .info-wrap .type_user{margin-bottom:21px;}}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:25px!important;}}@media (max-width: 768px){footer#global-footer .footer.no_newsletter h3{margin-bottom:26px!important;}}#global-footer .info-wrap-contact_zone h4{line-height:0.8;}@media (max-width: 768px){#global-footer .info-wrap-contact_zone h4{line-height:1.5;}}footer#global-footer div.text_footer.first_text_footer div.images_box .img_size{height:100px;}footer#global-footer a.hvr_animation,footer#global-footer .lp-link{position:relative!important;color:var(--white)!important;-webkit-transition:0.4s;transition:0.4s;}footer#global-footer a.hvr_animation:hover,footer#global-footer .lp-link:hover{color:var(--white)!important;}footer#global-footer a.hvr_animation:before,footer#global-footer .lp-link:before,footer#global-footer a.hvr_animation:after,footer#global-footer .lp-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.hvr_animation:before,footer#global-footer .lp-link:before{width:100%!important;background-color:var(--light-gray)!important;}footer#global-footer a.hvr_animation:after,footer#global-footer .lp-link:after{width:0%!important;background-color:var(--white)!important;}footer#global-footer a.hvr_animation:hover:after,footer#global-footer .lp-link:hover:after{width:100%!important;}@media only screen and (max-width: 1200px){footer#global-footer .info-wrap-contact_link{overflow-wrap:anywhere;white-space:normal!important;}footer#global-footer .info-wrap-contact_link:before{background-color:transparent;}footer#global-footer .info-wrap-contact_link:after{background-color:transparent;}}@media only screen and (min-width: 376px){footer#global-footer .footer div.type_user div.info-wrap-contact_cell:first-of-type{min-width:380px!important;width:480px!important;}}@media only screen and (max-width: 375px){footer#global-footer .footer div.type_user div.info-wrap-contact_cell:first-of-type{width:100%!important;min-width:unset!important;}}footer .footer.no_newsletter .info-wrap-contact h4{margin-top:0!important;}footer .powered-box .lp-link{font-weight:normal!important;}footer .footer .info-privacy .copy_zone .lp-link{font-weight:normal!important;}footer .footer .info-privacy__row img{-webkit-filter:invert(1);filter:invert(1);}@media only screen and (max-width: 768px){footer .footer{padding-top:32px!important;padding-bottom:32px!important;}}div#global-sidemenu.sidemenu a{color:var(--primary);}div#global-sidemenu.sidemenu a:hover{color:var(--accent)!important;}body>div.sidemenu .sub-nav.visible+.main-nav{color:var(--primary)!important;}body>div.sidemenu .sub-nav-container .main-nav::after{border-bottom:1px solid var(--dark-gray)!important;border-right:1px solid var(--dark-gray)!important;}body>div.sidemenu .sub-nav-container .main-nav:hover::after{border-bottom:1px solid var(--dark-gray)!important;border-right:1px solid var(--dark-gray)!important;}.sidebar__close:hover{color:var(--accent)!important;}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;}}#modal-global-contact-us .contact-form .section-message label{text-transform:uppercase;color:var(--white)!important;}#modal-global-contact-us .lp-input-group .lp-input{border-color:var(--white)!important;}div#modal-global-contact-us a:not(.lp-socials__link):after{background-color:var(--white)!important;}.info-zone_contact_cell a:hover{color:var(--white)!important;}.info-zone_contact_cell a:before{background-color:var(--light-gray)!important;width:100%;}.info-zone_contact_cell a:after{background-color:var(--white)!important;}.lp-tcr-message{font-weight:400;}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;}div#modal-global-contact-us .contact-form .lp-link.info-zone_contact_link{overflow-wrap:anywhere!important;white-space:normal!important;}div#modal-global-contact-us div.modal-content div.contact-form.redesign:after{background-color:rgba(0, 0, 0, 0.8);}#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:var(--dark-gray);width:100%;}#modal-global-contact-us .lp-disclaimer a:after{width:0%;background-color:var(--white);-webkit-transition:0.4s;transition:0.4s;}#modal-global-contact-us .lp-disclaimer a:hover{-webkit-text-decoration:none!important;text-decoration:none!important;}#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;}@media only screen and (max-width: 768px){.contact-form .lp-link.info-zone_contact_link,.contact-form .pre-line{font-size:12px!important;}}h1,.lp-h1,h2,.lp-h2,h3,.lp-h3,h4,.lp-h4,div#global-sidemenu.sidemenu a,nav#global-navbar a,div#global-sidemenu.sidemenu button,nav#global-navbar button{text-transform:uppercase;letter-spacing:2px!important;}@media (max-width: 768px){h1,.lp-h1,h2,.lp-h2,h3,.lp-h3,h4,.lp-h4,div#global-sidemenu.sidemenu a,nav#global-navbar a,div#global-sidemenu.sidemenu button,nav#global-navbar button{letter-spacing:1px!important;}}@media only screen and (max-width: 768px){.lp-socials,.socials-zone{-webkit-box-pack:center!important;-ms-flex-pack:center!important;-webkit-justify-content:center!important;justify-content:center!important;}}footer#global-footer .text_footer.first_text_footer .link{color:var(--black);font-weight:normal;}footer#global-footer .text_footer.first_text_footer .link:hover{color:var(--black);}footer#global-footer .text_footer.first_text_footer .link:hover:after{background-color:var(--black);}footer#global-footer .text_footer.first_text_footer .link:after{background-color:var(--light-gray);}@media only screen and (max-width: 1280px){footer#global-footer .text_footer.first_text_footer .link{overflow-wrap:anywhere;-webkit-text-decoration:underline!important;text-decoration:underline!important;white-space:normal!important;}footer#global-footer .text_footer.first_text_footer .link:before{background-color:transparent;}footer#global-footer .text_footer.first_text_footer .link:after{background-color:transparent;}}body>div.mobile-contact-wrapper .lp-btn{border:2px solid var(--white)!important;background-color:transparent!important;color:var(--white)!important;}body>div.mobile-contact-wrapper .lp-btn:hover{border:2px solid var(--white)!important;background-color:var(--white)!important;color:var(--accent)!important;}div.mobile-contact-wrapper .contact-form__item .is-placeholder{text-transform:capitalize!important;}div.mobile-contact-wrapper .custom-select-item{text-transform:none!important;}div.mobile-contact-wrapper .custom-select-item:hover{background-color:var(--buttons)!important;color:var(--white)!important;}.custom-select-toggle.lp-input--light{color:var(--white)!important;text-transform:unset!important;}.custom-select-toggle.lp-input--light:after{border-color:var(--white);}div.mobile-contact-wrapper .contact-form .lp-btn{border-color:var(--white)!important;background-color:transparent!important;color:var(--white)!important;font-size:11px!important;margin-bottom:0;}div.mobile-contact-wrapper .contact-form .lp-btn:hover{border-color:var(--white)!important;background-color:var(--white)!important;color:var(--accent)!important;}.contact-form textarea.lp-input{height:36px!important;min-height:50px!important;}.contact-form__container a[href="/terms-and-conditions"]{position:relative!important;color:var(--white)!important;-webkit-transition:0.4s;transition:0.4s;}
31.contact-form__container a[href="/terms-and-conditions"]:hover{color:var(--white)!important;}.contact-form__container a[href="/terms-and-conditions"]:before,.contact-form__container a[href="/terms-and-conditions"]: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;}.contact-form__container a[href="/terms-and-conditions"]:before{width:100%!important;background-color:var(--light-gray)!important;}.contact-form__container a[href="/terms-and-conditions"]:after{width:0%!important;background-color:var(--white)!important;}.contact-form__container a[href="/terms-and-conditions"]:hover:after{width:100%!important;}@media (max-width: 768px){.contact-form textarea.lp-input{height:36px!important;min-height:45px!important;}}.contact-form .contact-form__item .custom-select-content .custom-select-item{background:#fff;color:var(--primary);}.contact-form .contact-form__item .custom-select-content .custom-select-item:hover{background:var(--accent)!important;color:#fff;}.contact-form .contact-form__item .custom-select-content .custom-select-item.is-selected{background:var(--accent)!important;color:#fff!important;font-weight:700;}nav#global-navbar .header .navigation .sub-nav ul li a{font-size:13px!important;color:#002349;}nav .header .navigation__link{padding:10px!important;}</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css">
34 #section-890fab23-a813-4443-bd29-980c82ab1a85{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/781cc293-cb03-4359-a8a9-89fbfa5b7f7f');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-890fab23-a813-4443-bd29-980c82ab1a85 div.container{max-width:1300px!important;}#section-890fab23-a813-4443-bd29-980c82ab1a85 .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;}
34#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro .container{z-index:1;text-align:center;max-width:900px;}#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro__title{margin-bottom:0px;font-weight:400;margin-bottom:24px;}@media (max-width: 768px){#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro__title{font-size:32px;}}@media (max-width: 360px){#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro__title{font-size:22px;}}#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro__subtitle{font-weight:400;white-space:pre-line;font-size:21px;line-height:1.57;}@media (max-width: 768px){#section-890fab23-a813-4443-bd29-980c82ab1a85 .custom-intro__subtitle{font-size:18px;}}#section-890fab23-a813-4443-bd29-980c82ab1a85 .description{margin-bottom:15px;}@media (min-width: 960px) and (orientation: landscape){#section-890fab23-a813-4443-bd29-980c82ab1a85{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/781cc293-cb03-4359-a8a9-89fbfa5b7f7f');}}@media (min-width: 1280px) and (orientation: landscape){#section-890fab23-a813-4443-bd29-980c82ab1
34a85{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/781cc293-cb03-4359-a8a9-89fbfa5b7f7f');}}@media (min-width: 1920px) and (orientation: landscape){#section-890fab23-a813-4443-bd29-980c82ab1a85{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/781cc293-cb03-4359-a8a9-89fbfa5b7f7f');}}@media (min-width: 2560px) and (orientation: landscape){#section-890fab23-a813-4443-bd29-980c82ab1a85{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/781cc293-cb03-4359-a8a9-89fbfa5b7f7f');}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64{color:#002349;--fontColor:#002349;--fontColor_H:211;--fontColor_S:100%;--fontColor_L:14%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FFFFFF;--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));background-color:#FFFFFF;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .J-paginationjs-page a{margin:0 5px;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content h4:after{background-color:var(--accent)!important;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link{position:relative;color:var(--accent)!important;-webkit-transition:0.4s;transition:0.4s;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:after,#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:before{-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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:before{background-color:var(--light-gray);width:100%;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:after{width:0%;background-color:var(--accent)!important;-webkit-transition:0.4s;transition:0.4s;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:hover{-webkit-text-decoration:none!important;text-decoration:none!important;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .link:hover:after{width:100%;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list{padding-bottom:62px!important;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list{padding:120px 0;position:relative;z-index:1;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list .center-items{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__container{padding:0;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__container.hide-date .blog-list__item-date{display:none;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__container.hide-author .blog-list__item-author{display:none;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__container.hide-author .blog-list__item-date{margin-left:0;padding-left:0;border-left:none;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__container .blog-list__item{background-color:#fff;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__section-title,#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list .description{text-align:center;margin-bottom:50px;max-width:75%;margin-left:auto;margin-right:auto;}@media(max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__section-title,#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list .description{max-width:100%;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item{width:calc(50% - 18px);margin-bottom:34px;}@media(max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item{width:100%;margin-bottom:32px;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-116px;left:60%;}@media(max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item:nth-child(2n) .blog-list__item-content h4:after{right:-25px;left:40%;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-image{padding-top:70.16%;position:relative;background-color:#808080;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-image img{position:absolute;object-fit:cover;height:100%;width:100%;top:0;z-index:0;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content{padding:46px 36px;}@media(max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content{padding:40px 25px;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content h4{margin:0 0 36px;position:relative;}@media(max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content h4{margin:0 0 38px;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content h4:after{right:40%;left:-25px;bottom:-21px;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-content .link{display:inline-block;margin-top:36px;text-transform:uppercase;font-size:14px;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-details{list-style-type:none;display:block;margin:0 0 9px;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-details >li{display:inline-block;position:relative;font-size:14px;font-weight:700;line-height:1.4;text-transform:uppercase;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .blog-list__item-details >li+li{margin-left:3px;padding-left:5px;border-left:2px solid;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .search-container{margin-bottom:48px;}@media (max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .search-container{margin-bottom:32px;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .search-container__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;gap:12px;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .search-container__row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .input-container{width:100%;max-width:485px;position:relative;}@media (max-width: 1024px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .input-container{max-width:350px;}}@media (max-width: 768px){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .input-container{max-width:100%;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .input-container .lp-input{height:50px;width:100%;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .empty-results{text-align:center;display:none;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .empty-results.visible{display:block;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .filter-container{padding-top:16px;display:none;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .category-cell{margin:0 8px 8px 0;border-width:2px;padding:10px 15px;opacity:.3;position:relative;cursor:pointer;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .category-cell.active{opacity:1;}@media(hover: hover) and (pointer: fine){#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .category-cell:hover{opacity:1;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .lp-btn.lp-i--chevron-down{width:100%;}}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .lp-btn.lp-i--chevron-down:before{-webkit-transition:-webkit-transform .3s;transition:transform .3s;}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .lp-btn.lp-i--chevron-down.active:before{-webkit-transform:scaleY(-1);-moz-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);}#section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64 .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-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3{color:#FFFFFF;--fontColor:#FFFFFF;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#002349;--bgColor_H:211;--bgColor_S:100%;--bgColor_L:14%;--bgColor_A:1;--bgColor_darkenDir:1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#002349;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]{position:relative;color:var(--white)!important;-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none;text-decoration:none;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:after,#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:before{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:"";height:1px!important;position:absolute!important;bottom:0;left:0;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:before{background-color:#f8f8f8;width:100%;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:after{width:0%;background-color:var(--white);-webkit-transition:0.4s;transition:0.4s;height:2px!important;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:
34hover{-webkit-text-decoration:none!important;text-decoration:none!important;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-tcr-message a[href="/terms-and-conditions"]:hover:after{width:100%;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup{min-height:80vh;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup .lp-container-custom{padding:0 25px;}}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form{margin:0;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form.success .newsletter-signup__form-container{display:none;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__inputs-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__inputs-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-container{position:relative;z-index:1;}@media (max-width: 768px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-container .lp-h2{margin-bottom:32px;}}@media (max-width: 768px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-container .lp-text--subtitle{margin-bottom:32px;}}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:16px;}@media (max-width: 768px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:0px;margin-top:32px;}}@media (min-width: 769px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-item.lp-input{padding-top:0;padding-bottom:0;width:250px;}}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-item.lp-btn{text-transform:uppercase;font-weight:700;}@media (min-width: 769px){#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup__form-item.lp-btn{width:200px;}}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;visibility:visible;opacity:1;z-index:2;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;text-align:center;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .newsletter-signup .success-block.hide{display:none;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-h-pot{max-width:1px;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-title-group{max-width:unset;padding:0 20px;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 input:-webkit-autofill,#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 input:-webkit-autofill:hover,#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 input:-webkit-autofill:focus,#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 input:-webkit-autofill:active{-webkit-text-fill-color:var(--fontColor);-webkit-box-shadow:0 0 0px 1000px var(--bgColor) inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3 .lp-disclaimer{max-width:730px;margin:20px auto 0 auto;}#section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-d7116ef0-def3-456f-bf36-0a382985307f{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.45));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/ffc2a206-46a2-4c61-8757-4ed591ccaa99');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-d7116ef0-def3-456f-bf36-0a382985307f.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-d7116ef0-def3-456f-bf36-0a382985307f.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-d7116ef0-def3-456f-bf36-0a382985307f.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;
34background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-d7116ef0-def3-456f-bf36-0a382985307f .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-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us h2{padding-bottom:40px;}}#section-d7116ef0-def3-456f-bf36-0a382985307f .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-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us .description{margin-bottom:40px;}}#section-d7116ef0-def3-456f-bf36-0a382985307f .redesign.work-with-us .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-d7116ef0-def3-456f-bf36-0a382985307f .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-d7116ef0-def3-456f-bf36-0a382985307f{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/ffc2a206-46a2-4c61-8757-4ed591ccaa99');}}@media (min-width: 1280px) and (orientation: landscape){#section-d7116ef0-def3-456f-bf36-0a382985307f{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/ffc2a206-46a2-4c61-8757-4ed591ccaa99');}}@media (min-width: 1920px) and (orientation: landscape){#section-d7116ef0-def3-456f-bf36-0a382985307f{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/ffc2a206-46a2-4c61-8757-4ed591ccaa99');}}@media (min-width: 2560px) and (orientation: landscape){#section-d7116ef0-def3-456f-bf36-0a382985307f{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/ffc2a206-46a2-4c61-8757-4ed591ccaa99');}}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22{color:#002349;--fontColor:#002349;--fontColor_H:211;--fontColor_S:100%;--fontColor_L:14%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FFFFFF;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#FFFFFF;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed{padding:80px 0;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .title{margin:0 20px 0 0;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .instagram-link .instagram-name{display:inline;margin:0;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .title+.instagram-link{margin-top:5px;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-wrapper{margin-bottom:20px;
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .follow-button{margin:20px 0 0 0;display:block;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-nav-prev{margin-left:30px;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-nav-next{margin-left:10px;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .hidden-control{display:none;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single:first-child,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi:first-child{margin-left:auto;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single:last-child,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi:last-child{margin-right:auto;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single.type2,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi.type2{width:calc(100% / 5 * 2);}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single.type3,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi.type3{width:calc(100% / 2);}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single.type4,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi.type4{width:calc(100% / 2);}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single.type5,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-container{padding:0;width:100%;}}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;
34top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;opacity:1;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-item:hover .video-icon{opacity:0;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single .ig-feed-item__info{padding:15%;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .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-eb4bcd51-4337-41ff-a093-12d135fb4a22 .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .bottom-nav-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:20px 10px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-right,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .title,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .instagram-link{margin-right:0;text-align:center;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-nav-prev,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .top-nav-next{display:none;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .ig-feed{display:none;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22 .has-data .ig-feed{display:block;}#section-eb4bcd51-4337-41ff-a093-12d135fb4a22.has-data .ig-feed,#section-eb4bcd51-4337-41ff-a093-12d135fb4a22#section-temp .ig-feed{display:block;}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .description{margin-bottom:15px;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}
34#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal
34-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;min-height:70px;padding:8px 0 7px;width:100%;}nav .header .logo{z-index:911;position:relative;margin-right:10px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:300px;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:'';position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:'';display:block;width:26px;height:2px;background-color:currentColor;position:absolute;
34left:0;top:0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before{-webkit-transform:translateY(-9px);-moz-transform:translateY(-9px);-ms-transform:translateY(-9px);transform:translateY(-9px);}nav .header .hamburger__bars:after{-webkit-transform:translateY(9px);-moz-transform:translateY(9px);-ms-transform:translateY(9px);transform:translateY(9px);}nav .header .hamburger:hover{text-shadow:.5px 0 0,-.5px 0 0;}nav .header .hamburger:hover .hamburger__bars:before{-webkit-transform:translateY(-7px);-moz-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px);}nav .header .hamburger:hover .hamburger__bars:after{-webkit-transform:translateY(7px);-moz-transform:translateY(7px);-ms-transform:translateY(7px);transform:translateY(7px);}nav .header .hamburger.active .hamburger__bars{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);opacity:0;}nav .header .hamburger.active .hamburger__bars:before{display:none;}nav .header .hamburger.active .hamburger__bars:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .content-container{-webkit-transition:0.2s all ease;transition:0.2s all ease;}nav.scroll .content-container,nav .scroll .content-container{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}nav.scroll .content-container .navigation__link,nav .scroll .content-container .navigation__link{visibility:visible!important;}nav.scroll .content-container .navigation .sub-nav,nav .scroll .content-container .navigation .sub-nav{-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav.scroll .content-container .navigation .sub-nav ul,nav .scroll .content-container .navigation .sub-nav ul{padding:0;}nav.scroll .content-container .navigation .sub-nav.visible,nav .scroll .content-container .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, calc(100% + 23px));-moz-transform:translate(0, calc(100% + 23px));-ms-transform:translate(0, calc(100% + 23px));transform:translate(0, calc(100% + 23px));}nav .dark-opening{background-color:rgb(26, 26, 26)!important;}nav nav.dark-opening .header{margin-top:0;}nav #ctaShowButton,nav #ctaMessage{display:none!important;}nav #ctaShowButton{display:none;opacity:0;pointer-events:none;}nav .search{cursor:pointer;}nav .search svg{display:block;}nav .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}body>div.sidemenu{background-color:#fff;color:rgba(0, 35, 73, 1);--fontColor:rgba(0, 35, 73, 1);--fontColor_H:211;--fontColor_S:100%;--fontColor_L:14%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;
34-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:20px;padding-right:20px;}}body>div.sidemenu .sidebar__close{position:absolute;right:30px;top:30px;display:inline-block;width:38px;height:38px;padding:10px;border:none;border-radius:0;background:transparent;color:inherit;z-index:1;cursor:pointer;}body>div.sidemenu .sidebar__close:before,body>div.sidemenu .sidebar__close:after{content:'';display:block;width:22px;height:2px;background-color:currentColor;position:absolute;left:50%;top:50%;}body>div.sidemenu .sidebar__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidebar__close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:10px;top:10px;}}body>div.sidemenu .sidebar__close:focus{outline:none;}body>div.sidemenu .sidebar__nav{list-style:none;padding:0;margin:auto 0;}body>div.sidemenu .sidebar__nav-item{margin:0;padding-top:4px;padding-bottom:4px;border-bottom:1px solid hsla( 35 var(--bgColor_H, 0), 36 var(--bgColor_S, 0%), 37 calc(50% + (var(--bgColor_L, 100%) - 50%) * 0.9), 38 var(--bgColor_A, 1) 39 );}body>div.sidemenu .sidebar__nav-link{display:inline-block;padding:10px;border:none;border-radius:0;background:transparent;text-transform:none;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__nav-link:focus{outline:none;}body>div.sidemenu .sidebar__subnav{list-style:none;padding:4px 0 10px;margin:0;font-size:17px;}@media (max-width: 767px){body>div.sidemenu .sidebar__subnav{font-size:14px;letter-spacing:.3px;}}body>div.sidemenu .sidebar__subnav-item{margin-bottom:10px;}body>div.sidemenu .sidebar__subnav-item:last-child{margin-bottom:0;}body>div.sidemenu .sidebar__subnav-link{display:inline-block;padding:0;border:none;border-radius:0;background:transparent;text-transform:none;opacity:.7;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__subnav-link:focus{outline:none;}body>div.sidemenu .sub-nav{visibility:hidden;opacity:0;max-height:0;-webkit-transition:all .3s;transition:all .3s;}body>div.sidemenu .sub-nav.visible{display:block;visibility:visible;opacity:1;max-height:100vh;}body>div.sidemenu .sub-nav.visible+.main-nav{color:#7a7a7a;}body>div.sidemenu .sub-nav.visible+.main-nav:after{margin-left:40px;border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}body>div.sidemenu .sub-nav-container:hover .main-nav:after{border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container .main-nav{position:relative;display:inline-block;}body>div.sidemenu .sub-nav-container .main-nav:after{content:'';display:inline-block;position:relative;width:8px;height:8px;margin-left:25px;-webkit-transform:rotate(45deg) translateX(-100%);-moz-transform:rotate(45deg) translateX(-100%);-ms-transform:rotate(45deg) translateX(-100%);transform:rotate(45deg) translateX(-100%);border-bottom:2px solid var(--fontColor, #000000);border-right:2px solid var(--fontColor, #000000);top:0;bottom:auto;left:auto;-webkit-transition:0.5s all ease;transition:0.5s all ease;background-color:transparent;}body>div.sidemenu #main-section .sidebar{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);}footer{background-color:rgba(0, 35, 73, 1);color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(0, 35, 73, 1);--bgColor_H:211;--bgColor_S:100%;--bgColor_L:14%;--bgColor_A:1;--bgColor_darkenDir:1;--greyColor:hsla( 40var(--fontColor_H), 41var(--fontColor_S), 42calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445), 43var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla( 44 var(--fontColor_H), 45 var(--fontColor_S), 46 calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445), 47 var(--fontColor_A));}footer .redesign .inp--dark-bg input:hover{border-color:var(--fontColor);}footer .redesign .inp+.inp{margin-top:24px;}footer .redesign .btn--primary-light{border-color:var(--fontColor);color:var(--fontColor);}footer .redesign .btn--primary-light:hover{background-color:var(--fontColor);color:var(--bgColor);}footer.is-background-color-light .redesign .btn--primary-light{border-width:1px;}footer .redesign .socials--grey{-webkit-box-pack:end;-ms-flex-pack:end;
47-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla( 48 var(--bgColor_H), 49 var(--bgColor_S), 50 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15), 51 var(--bgColor_A));color:var(--greyColor);}footer .redesign .socials--grey .socials__link svg{fill:var(--greyColor);}footer .redesign .socials--grey .socials__link:hover{background-color:hsla( 52 var(--bgColor_H), 53 var(--bgColor_S), 54 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4), 55 var(--bgColor_A));color:var(--fontColor);}footer .redesign .socials--grey .socials__link:hover svg{fill:var(--fontColor);}footer .redesign.footer .grey-text{color:var(--fontColor);}footer .footer{position:relative;padding-top:60px;padding-bottom:30px;}@media (max-width: 560px){footer .footer{padding-top:10px;}}@media (max-width: 500px){footer .footer{padding-bottom:70px;}}footer .footer .text_content_wrap p{margin-bottom:15px;}footer .footer .text_content_wrap p:last-of-type{margin-bottom:0;}footer .footer .container{max-width:1440px;}@media (max-width: 768px){footer .footer .container{padding-left:25px;padding-right:25px;}}@media (max-width: 560px){footer .footer .container{padding-left:20px;padding-right:20px;}}footer .footer h3{margin:0 0 15px 0;}footer .footer h5{text-transform:capitalize;}footer .footer .info-wrap{margin-bottom:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-wrap .agent_box{width:70%;}@media (max-width: 1280px){footer .footer .info-wrap .agent_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .agent_box{width:100%;}}footer .footer .info-wrap .newsletter_box{width:30%;}@media (max-width: 1280px){footer .footer .info-wrap .newsletter_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box{width:100%;}}footer .footer .info-wrap .newsletter_box--padding{padding-top:44px;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box--padding{padding-top:0;}}footer .footer .info-wrap .newsletter_box .contact_title{margin-bottom:13px;line-height:1.6;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_cell{margin-bottom:0;padding-left:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .icon_text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:22px;position:relative;}footer .footer .info-wrap .newsletter_box .icon_text i{position:relative;width:30px;margin-right:20px;}footer .footer .info-wrap .newsletter_box .icon_text .contact_title{margin-bottom:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_zone{margin-bottom:0;}}footer .footer .info-wrap-contact{position:relative;}footer .footer .info-wrap-contact_zone{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:39px;}@media (max-width: 768px){footer .footer .info-wrap-contact_zone{margin-bottom:21px;}footer .footer .info-wrap-contact_zone:last-child{margin-bottom:51px;}}footer .footer .info-wrap-contact_zone i{position:absolute;left:0;display:block;}footer .footer .info-wrap-contact_zone i svg path{fill:currentColor;}footer .footer .info-wrap-contact_zone h4{margin:0 0 13px 0;width:100%;}footer .footer .info-wrap-contact_cell{position:relative;padding-left:50px;width:400px;font-size:14px;text-transform:uppercase;font-weight:bold;letter-spacing:1.5px;}@media (max-width: 1280px){footer .footer .info-wrap-contact_cell:first-of-type{margin-bottom:21px;}}footer .footer .info-wrap-contact_cell .contact_title{line-height:1;margin-bottom:5px;}footer .footer .info-wrap-contact_link{color:var(--greyColor);position:relative;}@media (max-width: 560px){footer .footer .info-wrap-contact_link{letter-spacing:0;}}footer .footer .hvr_animation{position:relative;-webkit-text-decoration:none!important;text-decoration:none!important;}footer .footer .hvr_animation:after{content:'';position:absolute;
55left:0;bottom:0;width:0%;height:1px;background:var(--greyColor);-webkit-transition:.3s linear;transition:.3s linear;}footer .footer .hvr_animation:hover:after{width:100%;}footer .footer .hvr_animation.underlined:after{width:100%;}footer .footer .hvr_animation.underlined:hover:after{width:0%;}footer .footer .form-content{padding:0!important;}footer .footer .form-content label{color:var(--fontColor);text-transform:none;letter-spacing:1;}footer .footer .form-content input{padding:2px 24px 2px 0;}footer .footer .form-content .subscribe_btn{margin-top:20px;position:relative;}footer .footer .form-content .subscribe_btn i{font-size:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;}footer .footer .form-content.success i{opacity:1;}footer .footer .form-content.success .subscribe_btn span{opacity:0;}footer .footer .form-content.success .hide{opacity:0;}footer .footer .form-content.success .hide +span{opacity:1;}footer .footer .text_footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:39px;}@media (max-width: 1280px){footer .footer .text_footer{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){footer .footer .text_footer{text-align:center;}}footer .footer .text_footer p{white-space:normal;}footer .footer .text_footer .images_box{max-width:186px;width:100%;margin-right:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 560px){footer .footer .text_footer .images_box{margin:0 auto 20px auto;}}@media (max-width: 1280px){footer .footer .text_footer .img_size{margin-bottom:20px;}}@media (max-width: 560px){footer .footer .text_footer .img_size{margin-bottom:0;}}footer .footer .text_footer .img_size img{width:100%;height:100%;object-fit:contain;}footer .footer .first_text_footer .img_size{width:100%;height:63px;}footer .footer .first_text_footer .img_size img{width:100%;height:100%;object-fit:contain;}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:51px;}}footer .footer .second_text_footer .first_img_size{width:45px;height:45px;margin-right:15px;}footer .footer .second_text_footer .second_img_size{width:100px;height:45px;}@media (max-width: 560px){footer .footer .second_text_footer{margin-bottom:21px;}}footer .footer .info-privacy{padding-top:45px;padding-bottom:30px;border-top:1px solid hsla( 56 var(--bgColor_H), 57 var(--bgColor_S), 58 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 59 var(--bgColor_A));}@media (max-width: 768px){footer .footer .info-privacy{padding-top:0;border-top:none;}}footer .footer .info-privacy__row{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-privacy .copy_zone{font-size:18px;}@media (min-width: 1350px){footer .footer .info-privacy .copy_zone{text-align:center;}}@media (min-width: 1281px){footer .footer .info-privacy .copy_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 768px){footer .footer .info-privacy .copy_zone{text-align:center;margin-bottom:10px;padding-top:45px;border-top:1px solid hsla( 60 var(--bgColor_H), 61 var(--bgColor_S), 62 calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 63 var(--bgColor_A));}}footer .footer .info-privacy .copy_zone a{color:var(--greyColor);}footer .footer .info-privacy .powered_zone{font-size:18px;}@media (min-width: 1281px){footer .footer .info-privacy .powered_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 1280px){footer .footer .info-privacy .powered_zone{text-align:center;}}@media (max-width: 768px){footer .footer .info-privacy .powered_zone{text-align:center;margin-bottom:24px;}}footer .footer .info-privacy .powered_zone a{color:var(--greyColor);}@media (min-width: 1281px){footer .footer .info-privacy .socials_zone{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 1280px){footer .footer .info-privacy .socials_zone{width:100%;margin-top:20px;-webkit-box-pack:start;-ms-flex-pack:start;
63-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer .info-privacy .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:0;margin-bottom:20px;}footer .footer .info-privacy .socials_zone li{padding:0 7px 10px 7px;}}footer .footer.one_contact .type_user{margin-bottom:73px;}@media (max-width: 768px){footer .footer.one_contact .type_user{margin-bottom:51px;}}footer .footer.no_newsletter h3{margin-bottom:46px;}footer .footer.no_newsletter .newsletter_box{display:none;}footer .footer.no_newsletter .info-wrap-contact{width:calc(70% + 230px);width:100%;padding-left:230px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact{width:100%;}}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_cell{width:50%;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_cell{width:100%;}}footer .footer.no_newsletter .info-wrap-contact h4{position:absolute;margin-top:-8px;left:0;max-width:200px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;width:100%;margin-bottom:20px;margin-top:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;}}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:71px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:39px;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:51px;}}footer .footer.no_newsletter .info-wrap-contact_zone:last-child{margin-bottom:0;}footer .footer.no_icon .info-wrap-contact_cell{padding-left:0;}footer .footer.no_icon .info-wrap-contact_cell i{display:none;}footer .footer.no-names .info-wrap-contact{padding-left:0;}footer .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-left:-15px;margin-right:-15px;}@media (min-width: 1281px){footer .form-row{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 900px){footer .form-row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:15px;padding-right:15px;}@media (min-width: 768px){footer .form-col{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}}@media (min-width: 768px){footer .form-col--socials{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}@media (min-width: 1281px){footer .form-col--socials{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;}}@media (max-width: 768px){footer .form-col--socials{-webkit-order:-1;-ms-flex-order:-1;order:-1;}}@media (min-width: 1281px){footer .form-col--xl-auto{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}}footer .additional-links-separator{display:block;width:100%;height:0;overflow:hidden;}@media (min-width: 768px){footer .additional-links-separator{display:inline;width:auto;height:auto;}footer .additional-links-separator:before{content:"|";}}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .img-wrap{max-width:100px;width:100%;display:block;margin-right:20px;}@media (max-width: 900px){footer .img-wrap{margin-right:0;margin-bottom:10px;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .powered-box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;}@media (max-width: 900px){footer .powered-box{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col--copyright{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:10px 0;}footer .luxury-link{white-space:nowrap;}footer .footer__disclaimers{padding-top:24px;padding-bottom:24px;}@media (max-width: 900px){footer .footer__disclaimers{text-align:center;}}body>div.mobile-contact-wrapper{z-index:200;position:relative;}body>div.mobile-contact-wrapper .lp-ico:before{content:'';width:1em;height:1em;background-color:currentColor;-webkit-background-size:cover;background-size:cover;display:block;-webkit-mask-position:center;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transition:all .3s;transition:all .3s;}body>div.mobile-contact-wrapper .lp-ico-search:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewB
63ox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-arrow-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-scroll-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-close:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-phone:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8
63699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-sms:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-email:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.85
6371 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper a{-webkit-text-decoration:none;text-decoration:none;}body>div.mobile-contact-wrapper .btn-holder{bottom:-50px;left:19px;position:fixed;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:13px;opacity:0;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .btn-holder{right:19px;padding:0 48px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}body>div.mobile-contact-wrapper .btn-holder.visible{bottom:28px;opacity:1;}body>div.mobile-contact-wrapper .search-btn{width:48px;height:48px;border-radius:999px;font-size:0;line-height:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-transition:all .3s;transition:all .3s;padding:12px;color:#141414;background:#fff;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .search-btn{position:absolute;left:0;bottom:0;}}body>div.mobile-contact-wrapper .search-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .connect-btn{height:48px;padding:0 24px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;text-transform:uppercase;border-radius:25px;color:var(--pillTextColor);background:var(--pillBackgroundColor);border:1px solid rgba(255, 255, 255, 0.2);cursor:pointer;font-size:10px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.4px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-transition:all .4s;transition:all .4s;box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);-webkit-animation:pulsate 2s ease infinite;animation:pulsate 2s ease infinite;}body>div.mobile-contact-wrapper .connect-btn:before{width:16px;height:16px;}body>div.mobile-contact-wrapper .pop-up{display:none;position:fixed;bottom:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;border-radius:16px 16px 0 0;color:var(--textColor);background:var(--backgroundColor);}@media (max-height: 850px){body>div.mobile-contact-wrapper .pop-up{max-height:85vh;overflow-y:auto;}}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up{max-height:none;overflow-y:initial;max-width:637px;border-radius:16px;bottom:28px;left:19px;}}body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:24px;padding-bottom:24px;-webkit-box-pack:center;-ms-flex-pack:center;
63-webkit-justify-content:center;justify-content:center;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:40px;padding-bottom:40px;min-height:450px;padding-left:56px;padding-right:56px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.mobile-contact-wrapper .pop-up .close-btn{width:44px;height:44px;background-color:transparent;border-color:transparent;display:block;margin:24px auto 0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--textColor);cursor:pointer;padding:10px;border:0;}body>div.mobile-contact-wrapper .pop-up .close-btn:before{width:24px;height:24px;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .close-btn{position:absolute;top:14px;right:12px;margin:0;}}body>div.mobile-contact-wrapper .pop-up .icon-btn{width:44px;height:44px;border-radius:999px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:8px;color:var(--textColor);position:relative;}body>div.mobile-contact-wrapper .pop-up .icon-btn:after{position:absolute;bottom:0;width:100%;left:0;border-radius:999px;
63height:100%;content:'';border:solid 1px var(--textColor);opacity:.3;}body>div.mobile-contact-wrapper .pop-up .icon-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .success-block{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .success-block{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}body>div.mobile-contact-wrapper .success-block .lp-btn{margin-top:24px;}body>div.mobile-contact-wrapper .contact-form{margin:0;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .contact-form__item{width:100%;}}body>div.mobile-contact-wrapper .contact-form__item .lp-input{width:100%;}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{color:#818181;}body>div.mobile-contact-wrapper .contact-form__item+.contact-form__item{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form.show-success .contact-form__container,body>div.mobile-contact-wrapper .contact-form.success .contact-form__container{display:none;}body>div.mobile-contact-wrapper .contact-form.show-success .success-block,body>div.mobile-contact-wrapper .contact-form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.mobile-contact-wrapper .contact-form .lp-disclaimer{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form .lp-h3{margin-bottom:16px;}body>div.mobile-contact-wrapper .success-message{font-size:22px;}@-webkit-keyframes pulsate{0%{box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);}50%{box-shadow:0 0 4px 6px rgba(255, 255, 255, .5);}100%{box-shadow:0 0 12px 12px rgba(255, 255, 255, 0);}} 64 </style> 65 <style id="custom-style-css">.hyperlink-style-1{color:#917035!important;}.hyperlink-style-1:hover{color:#917035!important;}.button-style-1{color:#917035!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#917035!important;}.button-style-1:hover{color:#FFFFFF!important;background-color:#917035!important;border-color:#917035!important;}.social_icons-style-1 a{border-color:#917035!important;background-color:rgba(255, 255, 255, 0)!important;color:#917035!important;}.social_icons-style-1 a:hover{border-color:#917035!important;background-color:#917035!important;color:#FFFFFF!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-1 li a{color:#917035!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#917035!important;}.pagination-style-1 li a:hover{color:#FFFFFF!important;background-color:#917035!important;border-color:#917035!important;}.pagination-style-1 li.active a{color:#FFFFFF!important;background-color:#917035!important;border-color:#917035!important;}.social_icons-style-2 a{border-color:#FFFFFF!important;background-color:rgba(255, 255, 255, 0)!important;color:#FFFFFF!important;}.social_icons-style-2 a:hover{border-color:#FFFFFF!important;background-color:#FFFFFF!important;color:#917035!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-2{color:#FFFFFF!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#FFFFFF!important;}.button-style-2:hover{color:#917035!important;background-color:#FFFFFF!important;border-color:#FFFFFF!important;}.pagination-style-2 li a{color:#FFFFFF!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#FFFFFF!important;}.pagination-style-2 li a:hover{color:#917035!important;background-color:#FFFFFF!important;border-color:#FFFFFF!important;}.pagination-style-2 li.active a{color:#917035!important;background-color:#FFFFFF!important;border-color:#FFFFFF!important;}.hyperlink-style-2{color:#FFFFFF!important;}.hyperlink-style-2:hover{color:#FFFFFF!important;}.button-style-3{color:#FFFFFF!important;background-color:#917035!important;border-color:#917035!important;}.button-style-3:hover{color:#917035!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#917035!important;}.button-style-4{color:#917035!important;background-color:#FFFFFF!important;border-color:#FFFFFF!important;}.button-style-4:hover{color:#FFFFFF!important;background-color:rgba(255, 255, 255, 0)!important;border-color:#FFFFFF!important;}</style> 66 <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode 67 defaults, and dynamically loads the locale + main (and banner if needed). --> 68
68<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="42744f60-1a03-40b4-89f8-9a0aacb720aa"></script>
68 69 70 71
71<script> 72 (function utmParse() { 73 const url = new URL(window.location.href); 74 if (url.search) { 75 const utm = url.search.split(/\?|&/g).reduce((acc, current) => { 76 const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); 77 if (matched) { 78 acc[matched[0]] = current.replace(`${matched[0]}=`, ''); 79 } 80 return acc; 81 }, {}); 82 if (Object.keys(utm).length) { 83 window.localStorage.setItem('utm_vars', JSON.stringify(utm)); 84 } else { 85 // Remove old utm vars 86 window.localStorage.removeItem('utm_vars'); 87 } 88 } 89 // Set referrer in local storage 90 // This is meant to be stored once to avoid self-referrals and to have the first referrer only. 91 if (!window.localStorage.getItem('referrer')) { 92 // Capture the Referrer URL 93 const referrer = document.referrer; 94 if (referrer) { 95 // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) 96 const currentDomain = window.location.hostname; 97 const referrerDomain = new URL(referrer).hostname; 98 99 if (referrerDomain !== currentDomain) { 100 // Store it in localStorage 101 localStorage.setItem('referrer', referrer); 102 } 103 } 104 } 105 })(); 106 </script>
106 107 <!-- Bing Webmaster Tools Verification -->
108<script> 109 // Check if on the homepage before the body loads 110 if (window.location.pathname === '/' || window.location.pathname === '/index.html') { 111 document.write('<meta name="msvalidate.01" content="6F6D563899A42C028420CB015EF73B27" />'); 112 } 113</script>
113 114<meta name="google-site-verification" content="h4YUnNrUwnmbvHHIPDmdGlbWA-4kC-mHwyMr-nwEJeQ" /> 115 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 116</head> 117<body> 118 <div id="google_translate_element" style="display: none"></div> 119 120 <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b"> 121 <div class="redesign"> 122 <div class="content-container header"> 123 <div class="container header__container"> 124 <div class="navbar"> 125 <div class="logo"> 126 <a href="/" class="logo__link"> 127 <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/96074758-c073-4b5c-9a5e-9a55ef7b5c2e" 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/96074758-c073-4b5c-9a5e-9a55ef7b5c2e 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/96074758-c073-4b5c-9a5e-9a55ef7b5c2e 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/96074758-c073-4b5c-9a5e-9a55ef7b5c2e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/96074758-c073-4b5c-9a5e-9a55ef7b5c2e 1339w" class="logo__img light" alt=""> 128 <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/4315a07f-5651-4722-a336-866a79eb83ff" 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/4315a07f-5651-4722-a336-866a79eb83ff 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/4315a07f-5651-4722-a336-866a79eb83ff 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/4315a07f-5651-4722-a336-866a79eb83ff 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4315a07f-5651-4722-a336-866a79eb83ff 1339w" class="logo__img dark" alt=""> 129 </a> 130 </div> 131 <div class="navigation"> 132 <ul> 133 <li class="navigation__item sub-nav-container"> 134 <a href="#" class="navigation__link wow fadeInUp">Properties</a> 135 <div class="sub-nav"> 136 <ul> 137 <li class="sub-nav__item"><a href="/properties/sale" class="nav-link sub-nav__link feature"><span>Featured Properties</span></a></li> 138 <li class="sub-nav__item"><a href="/properties/sold" class="nav-link sub-nav__link feature"><span>Past Transactions</span></a></li> 139 </ul> 140 </div> 141 </li> 142 <li class="navigation__item"> 143 <a href="/neighborhoods" class="navigation__link wow fadeInUp" data-wow-delay="2.1"><span>Neighborhoods</span></a> 144 </li> 145 <li class="navigation__item sub-nav-container"> 146 <a href="#" class="navigation__link wow fadeInUp">Search</a> 147 <div class="sub-nav"> 148 <ul> 149 <li class="sub-nav__item"><a href="/home-search/listings?listingStatus=%5B"ACTIVE"%2C"COMING_SOON"%5D&center=%7B"lat"%3A40.988707938778646%2C"lng"%3A-74.11944253681638%7D&zoom=11&boundary=%5B%5B%5B41.152547899450965%2C-74.39135415791013%5D%2C%5B41.152547899450965%2C-73.84753091572263%5D%2C%5B40.824459858564765%2C-73.84753091572263%5D%2C%5B40.824459858564765%2C-74.39135415791013%5D%2C%5B41.152547899450965%2C-74.39135415791013%5D%5D%5D" class="nav-link sub-nav__link feature"><span>Map Search</span></a></li> 150 <li class="sub-nav__item"><a href="/home-search/listings?propertyType=%5B"RESIDENTIAL"%5D&listingStatus=%5B"ACTIVE"%2C"COMING_SOON"%5D&center=%7B"lat"%3A40.988707938778646%2C"lng"%3A-74.11944253681638%7D&zoom=12&boundary=%5B%5B%5B41.070678954533264%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-74.25539834736325%5D%5D%5D" class="nav-link sub-nav__link feature"><span>Residential Properties </span></a></li> 151 <li class="sub-nav__item"><a href="/home-search/listings?listingStatus=%5B"ACTIVE"%2C"COMING_SOON"%5D&center=%7B"lat"%3A40.988707938778646%2C"lng"%3A-74.11944253681638%7D&zoom=12&boundary=%5B%5B%5B41.070678954533264%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-74.25539834736325%5D%5D%5D&priceMin=2000000" class="nav-link sub-nav__link feature"><span>Luxury Properties</span></a></li> 152 <li class="sub-nav__item"><a href="/home-search/listings?listingStatus=%5B"ACTIVE"%2C"COMING_SOON"%5D&center=%7B"lat"%3A40.988707938778646%2C"lng"%3A-74.11944253681638%7D&zoom=12&boundary=%5B%5B%5B41.070678954533264%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-73.9834867262695%5D%2C%5B40.906634892916756%2C-74.25539834736325%5D%2C%5B41.070678954533264%2C-74.25539834736325%5D%5D%5D&keyword=
152Investment" class="nav-link sub-nav__link feature"><span>Investment Properties</span></a></li> 153 <li class="sub-nav__item"><a href="/home-search/listings?propertyType=%5B"CONDO"%2C"CO_OP"%5D&listingStatus=%5B"ACTIVE"%2C"COMING_SOON"%5D&center=%7B"lat"%3A40.98138645%2C"lng"%3A-74.11360604999999%7D&boundary=%5B%5B%5B41.022389268062845%2C-74.18158395527341%5D%2C%5B41.022389268062845%2C-74.04562814472654%5D%2C%5B40.94035812531611%2C-74.04562814472654%5D%2C%5B40.94035812531611%2C-74.18158395527341%5D%2C%5B41.022389268062845%2C-74.18158395527341%5D%5D%5D" class="nav-link sub-nav__link feature"><span>Condo, Co-op, TWNHS</span></a></li> 154 </ul> 155 </div> 156 </li> 157 <li class="navigation__item"> 158 <a href="/home-valuation" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>Home Valuation</span></a> 159 </li> 160 <li class="navigation__item"> 161 <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Contact Us</span></a> 162 </li> 163 <li class="navigation__item"> 164 <a href="tel:6462807136" class="navigation__link wow fadeInUp" data-wow-delay="2.5"><span>646.280.7136</span></a> 165 </li> 166 <li class="navigation__item"> 167 <a data-type="TRANSLATE" class="navigation__link wow fadeInUp"><span>Translate</span></a> 168 </li> 169 </ul> 170 </div> 171 <div class="buttons-wrapper"> 172 <button type="button" class="hamburger-component hamburger"> 173 <span class="hamburger__bars"></span> 174 </button> 175 </div> 176 </div> 177 </div> 178 </div> 179</div> 180 181 </nav> 182 <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18"> 183 <div class="sidebar"> 184 185 <button class="toggle sidebar__close close"></button> 186 <div class="sidebar__content"> 187 188 <ul class="sidebar__nav"> 189 <li class="sidebar__nav-item"> 190 <button data-type="TRANSLATE" class="sidebar__nav-link">Translate</button> 191 </li> 192 <li class="sidebar__nav-item"> 193 <a href="/" class="sidebar__nav-link">Home</a> 194 </li> 195 <li class="sidebar__nav-item sub-nav-container"> 196 <div class="sub-nav"> 197 <ul class="sidebar__subnav"> 198 <li class="sidebar__subnav-item"><a href="/team" class="sidebar__subnav-link">Meet the Team</a></li> 199 <li class="sidebar__subnav-item"><a href="/testimonials" class="sidebar__subnav-link">Testimonials</a></li> 200 </ul> 201 </div> 202 <a href="#" class="sidebar__nav-link link main-nav">About</a> 203 </li> 204 <li class="sidebar__nav-item sub-nav-container"> 205 <div class="sub-nav"> 206 <ul class="sidebar__subnav"> 207 <li class="sidebar__subnav-item"><a href="/properties/sale" class="sidebar__subnav-link">Featured Properties</a></li> 208 <li class="sidebar__subnav-item"><a href="/properties/sold" class="sidebar__subnav-link">Past Transactions</a></li> 209 </ul> 210 </div> 211 <a href="#" class="sidebar__nav-link link main-nav">Properties</a> 212 </li> 213 <li class="sidebar__nav-item"> 214 <a href="/home-search/listings" class="sidebar__nav-link">Search Homes</a> 215 </li> 216 <li class="sidebar__nav-item"> 217 <a href="/home-valuation" class="sidebar__nav-link">Home Valuation</a> 218 </li> 219 <li class="sidebar__nav-item"> 220 <a href="/neighborhoods" class="sidebar__nav-link">Neighborhoods</a> 221 </li> 222 <li class="sidebar__nav-item"> 223 <a href="/press" class="sidebar__nav-link">In the News</a> 224 </li> 225 <li class="sidebar__nav-item"> 226 <a href="/blog" class="sidebar__nav-link">Real Estate Insights</a> 227 </li> 228 <li class="sidebar__nav-item"> 229 <a href="/resources" class="sidebar__nav-link">Resources</a> 230 </li> 231 <li class="sidebar__nav-item"> 232 <a href="/about-sir" class="sidebar__nav-link">About the Brand</a> 233 </li> 234 <li class="sidebar__nav-item"> 235 <a href="/auction" class="sidebar__nav-link">
235Sotheby's Auction House</a> 236 </li> 237 <li class="sidebar__nav-item"> 238 <a href="/contact" class="sidebar__nav-link">Contact Us</a> 239 </li> 240 <li class="sidebar__nav-item"> 241 <a href="/home-search/account" class="sidebar__nav-link">My Search Portal</a> 242 </li> 243 </ul> 244 </div> 245</div> 246 </div> 247 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51"> 248 <div class="btn-holder" 249style=" 250--backgroundColor: rgba(0, 35, 73, 1); 251--textColor: rgba(255, 255, 255, 1); 252--pillTextColor: rgba(255, 255, 255, 1); 253--pillBackgroundColor: rgba(145, 112, 53, 1);"> 254 255 <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Contact Us</button> 256</div> 257 258 259<div class="pop-up" style="--backgroundColor: rgba(0, 35, 73, 1); --textColor: rgba(255, 255, 255, 1);"> 260 <div class="lp-container"> 261 <form data-type="contact-form" class="contact-form"> 262 <div class="contact-form__container"> 263 <h3 class="lp-h3">Leave a Message</h3> 264 265 <div class="contact-form__content"> 266 <div class="contact-form__inputs-container"> 267 <div class="contact-form__item"> 268 <input 269 id="__FullName" 270 type="text" name="name" 271 class="lp-input lp-input--light" 272 required 273 placeholder="Full Name"> 274 </div> 275 <div class="contact-form__item"> 276 <input 277 id="__Email" 278 type="email" name="email" 279 class="lp-input js-email-input lp-input--light" 280 required 281 placeholder="Email"> 282 </div> 283 <div class="contact-form__item"> 284 <input 285 class="lp-input lp-input--light" 286 type="tel" 287 placeholder="Phone" 288 id="__Phone" 289 name="phone" 290 required> 291 </div> 292 293 <div class="contact-form__item input-group-select"> 294 <select name="interest" id="-field-interest" placeholder="Interest" 295 class="lp-input dropdown-select js-select js-form-element lp-input--light" required> 296 <option value="" disabled selected data-label="Interest">Interested in...</option> 297 <option value="Selling & Buying">Selling & Buying</option> 298 <option value="Selling">Selling</option> 299 <option value="Buying">Buying</option> 300 <option value="Renting">Renting</option> 301 <option value="Other">Other</option> 302 </select> 303 <label for="-field-interest" class="lp-label sr-only">Interest</label> 304 </div> 305 306 <div class="contact-form__item"> 307 <textarea 308 name="message" 309 rows="4" 310 id="__Message" 311 class="lp-input lp-input--light" 312 placeholder="Message" 313 required></textarea> 314 </div> 315 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 316 <label class='lp-tcr-content'> 317 <span class='lp-tcr-checkbox'> 318 <input 319 type='checkbox' 320 id='-termsAccepted' 321 name='termsAccepted' 322 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 323 oninput="this.setCustomValidity('')" 324 required 325 /></span> 326 <span class='lp-tcr-message'> 327 328 I agree to be contacted by 329 Christian Di Stasio 330 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 331 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 332 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 333 </span> 334 </label> 335 336</div> 337 <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit contact-form__item">Submit</button> 338 339 <div class="lp-h-pot"> 340 <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 341 </div> 342 343 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 344 <input type="hidden" name="button_text" value="Contact Us"> 345 </div> 346 </div> 347 </div> 348 349 350 <div class="success-block"> 351 <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3> 352 353 </div> 354 </form> 355 356 <button type="button" class="close-btn lp-ico lp-ico-close"></button> 357 358 359 </div> 360</div> 361 362 363 </div> 364 <section class="image-section is-font-color-light is-background-color-light" id="section-890fab23-a813-4443-bd29-980c82ab1
364a85" data-el-id="e6c6941b-dd32-4d6b-b4aa-56593f2d58bb"> 365 <div class="redesign custom-intro"> 366 <div class="container"> 367 <h1 class="custom-intro__title">Real Estate Insights</h1> 368 369 </div> 370</div> 371 372</section> 373<section id="section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64" class="solid-section is-font-color-dark is-background-color-light" data-el-id="1e77e4a0-6624-43db-b736-bd434565fece">
374<script type="text/x-handlebars-template" class="gridItem pagination-script"><a href="/blog/{{slug}}" class="blog-list__item"> 375 <div class="blog-list__item-image"> 376 377 378 379 {{#if media.length}} 380 {{{mediaImage media.[0] alt=title}}} 381 {{/if}} 382 </div> 383 384 <div class="blog-list__item-content"> 385 <h4 class="serif">{{title}}</h4> 386 <ul class="blog-list__item-details"> 387 388 {{#isEmpty customAuthor}} 389 {{#if (or createdBy.firstName createdBy.lastName)}}<li class="blog-list__item-author">{{createdBy.firstName}} {{createdBy.lastName}}</li>{{/if}} 390 {{else}} 391 <li class="blog-list__item-author">{{customAuthor}}</li> 392 {{/isEmpty}} 393 394 <li class="blog-list__item-date">{{hbFormatDate publishedAt 'MM/DD/YY'}}</li> 395 </ul> 396 397 {{#if subtitle}} 398 <p>{{truncate (striptags subtitle) 130 "..."}}</p> 399 {{/if}} 400 <span class="link hyperlink-style-1">Read MORE</span> 401 </div> 402</a> 403</script>
403 404 405 406 407 408 409 410<div class="redesign blog-list"> 411 412 413 <div class="container blog-list__container data-container hide-date hide-author"> 414 <a href="/blog/two-years-one-lawsuit-one-permit-filing-where-paramuss-route-17-costco-actually-stands" class="blog-list__item"> 415 <div class="blog-list__item-image"> 416 417 418 419 <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/45bab8f3-16f1-44b6-a3aa-f5262992b91e" 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/45bab8f3-16f1-44b6-a3aa-f5262992b91e 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/45bab8f3-16f1-44b6-a3aa-f5262992b91e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/45bab8f3-16f1-44b6-a3aa-f5262992b91e 1536w" alt="Two Years, One Lawsuit, One Permit Filing: Where Paramus's Route 17 Costco Actually Stands" loading="lazy"> 420 </div> 421 422 <div class="blog-list__item-content"> 423 <h4 class="serif">Two Years, One Lawsuit, One Permit Filing: Where Paramus's Route 17 Costco Actually Stands</h4> 424 <ul class="blog-list__item-details"> 425 426 427 428 <li class="blog-list__item-date">10/1/26</li> 429 </ul> 430 431 <span class="link hyperlink-style-1">Read MORE</span> 432 </div> 433 </a> 434 <a href="/blog/two-records-six-days-apart-what-saddle-rivers-wildest-month-actually-proves-about-its-median-price" class="blog-list__item"> 435 <div class="blog-list__item-image"> 436 437 438 439 <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/7b53ac6d-5424-4cfd-ab0e-444ae41ded08" 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/7b53ac6d-5424-4cfd-ab0e-444ae41ded08 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/7b53ac6d-5424-4cfd-ab0e-444ae41ded08 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/7b53ac6d-5424-4cfd-ab0e-444ae41ded08 1408w" alt="Two Records, Six Days Apart: What Saddle River's Wildest Month Actually Proves About Its Median Price" loading="lazy"> 440 </div> 441 442 <div class="blog-list__item-content"> 443 <h4 class="serif">Two Records, Six Days Apart: What Saddle River's Wildest Month Actually Proves About Its Median Price</h4> 444 <ul class="blog-list__item-details"> 445 446 447 448 <li class="blog-list__item-date">09/24/26</li> 449 </ul> 450 451 <span class="link hyperlink-style-1">Read MORE</span> 452 </div> 453 </a> 454 <a href="/blog/why-saddle-river-homes-still-run-on-wells-and-septic-tanks-and-what-buyers-should-know" class="blog-list__item"> 455 <div class="blog-list__item-image"> 456 457 458 459 <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/538f433f-de8a-4fbc-b563-b946e81ebd6e" 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/538f433f-de8a-4fbc-b563-b946e81ebd6e 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/538f433f-de8a-4fbc-b563-b946e81ebd6e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/538f433f-de8a-4fbc-b563-b946e81ebd6e 1408w" alt="Why Saddle River Homes Still Run on Wells and Septic Tanks, and What Buyers Should Know" loading="lazy"> 460 </div> 461 462 <div class="blog-list__item-content"> 463 <h4 class="serif">Why Saddle River Homes Still Run on Wells and Septic Tanks, and What Buyers Should Know</h4> 464 <ul class="blog-list__item-details"> 465 466 467 468 <li class="blog-list__item-date">09/17/26</li> 469 </ul> 470
471 <span class="link hyperlink-style-1">Read MORE</span> 472 </div> 473 </a> 474 <a href="/blog/paramus-isnt-building-apartments-because-of-demand-its-following-a-calendar" class="blog-list__item"> 475 <div class="blog-list__item-image"> 476 477 478 479 <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/ec13327e-fed8-43ab-9743-c54258a564eb" 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/ec13327e-fed8-43ab-9743-c54258a564eb 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/ec13327e-fed8-43ab-9743-c54258a564eb 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ec13327e-fed8-43ab-9743-c54258a564eb 1408w" alt="Paramus Isn't Building Apartments Because of Demand. It's Following a Calendar." loading="lazy"> 480 </div> 481 482 <div class="blog-list__item-content"> 483 <h4 class="serif">Paramus Isn't Building Apartments Because of Demand. It's Following a Calendar.</h4> 484 <ul class="blog-list__item-details"> 485 486 487 488 <li class="blog-list__item-date">09/10/26</li> 489 </ul> 490 491 <span class="link hyperlink-style-1">Read MORE</span> 492 </div> 493 </a> 494 <a href="/blog/dollar12-million-saddle-river-estate-sets-2026-bergen-county-and-state-residential-sales-record" class="blog-list__item"> 495 <div class="blog-list__item-image"> 496 497 498 499 <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/4daf4c80-49b4-4a62-8a86-b69c657d8684" 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/4daf4c80-49b4-4a62-8a86-b69c657d8684 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/4daf4c80-49b4-4a62-8a86-b69c657d8684 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4daf4c80-49b4-4a62-8a86-b69c657d8684 1920w" alt="$12 Million Saddle River Estate Sets 2026 Bergen County & State Residential Sales Record" loading="lazy"> 500 </div> 501 502 <div class="blog-list__item-content"> 503 <h4 class="serif">$12 Million Saddle River Estate Sets 2026 Bergen County & State Residential Sales Record</h4> 504 <ul class="blog-list__item-details"> 505 506 <li class="blog-list__item-author">Christian Di Stasio</li> 507 508 <li class="blog-list__item-date">09/3/26</li> 509 </ul> 510 511 <p>123 East Saddle River Road closes for $12,000,000, becoming the highest residential sale in Saddle River and Bergen County in 2...</p> 512 <span class="link hyperlink-style-1">Read MORE</span> 513 </div> 514 </a> 515 <a href="/blog/a-putting-green-a-barn-and-a-gallery-why-saddle-river-is-having-an-unusually-public-year" class="blog-list__item"> 516 <div class="blog-list__item-image"> 517 518 519 520 <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/7b4c67b5-71d3-45ee-adfd-a3baff3ed16e" 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/7b4c67b5-71d3-45ee-adfd-a3baff3ed16e 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/7b4c67b5-71d3-45ee-adfd-a3baff3ed16e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/7b4c67b5-71d3-45ee-adfd-a3baff3ed16e 1408w" alt="A Putting Green, a Barn, and a Gallery: Why Saddle River Is Having an Unusually Public Year" loading="lazy"> 521 </div> 522 523 <div class="blog-list__item-content"> 524 <h4 class="serif">A Putting Green, a Barn, and a Gallery: Why Saddle River Is Having an Unusually Public Year<
524/h4> 525 <ul class="blog-list__item-details"> 526 527 528 529 <li class="blog-list__item-date">09/3/26</li> 530 </ul> 531 532 <span class="link hyperlink-style-1">Read MORE</span> 533 </div> 534 </a> 535 </div> 536 <div class="empty-results">Sorry, we couldn't find any results that match that search. Try another search.</div> 537 <div class="pagination-container pagination-container--dark pagination-style-1"></div> 538</div> 539</section> 540<section id="section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3" class="solid-section is-font-color-dark is-background-color-light" data-el-id="19e4a145-7cee-4338-8873-657ce2636b4c"> 541 542<div class="newsletter-signup lp-vertical-paddings redesign"> 543 <div class="lp-container-custom"> 544 <form data-type="contact-form" class="newsletter-signup__form"> 545 <div class="newsletter-signup__form-container"> 546 <div class="lp-title-group"> 547 <h2 class="lp-h2">Receive exclusive listings in your inbox</h2> 548 <div class="lp-text--subtitle"><p>Real estate insights, community news, and exclusive listings—delivered to your inbox.</p></div> 549 </div> 550 <div class="newsletter-signup-form"> 551 <div class="newsletter-signup__inputs-container"> 552 <input id="section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3__newsSignFirstName" type="text" name="name" class="lp-input lp-input--light newsletter-signup__form-item" required placeholder="Name"> 553 554 <input id="section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3__newsSignEmail" type="email" name="email" class="lp-input lp-input--light newsletter-signup__form-item" required placeholder="Email" pattern="[a-zA-Z0-9.!#$%&â*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+"> 555 556 <button type="submit" class="lp-btn lp-btn--filled lp-btn--light submit button-style-2 newsletter-signup__form-item lp-btn--mob-full-width">Submit</button> 557 558 <div class="lp-h-pot"> 559 <input id="section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 560 </div> 561 562 <input style="display: none;" type="text" name="source" value="NEWSLETTER_SIGNUP" /> 563 </div> 564 </div> 565 <div class="lp-disclaimer"> <label style='display: none;' for='section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3-termsAccepted'>Opt In/Disclaimer Consent:</label> 566 <label class='lp-tcr-content'> 567 <span class='lp-tcr-checkbox'> 568 <input 569 type='checkbox' 570 id='section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3-termsAccepted' 571 name='termsAccepted' 572 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 573 oninput="this.setCustomValidity('')" 574 required 575 /></span> 576 <span class='lp-tcr-message'> 577 578 I agree to be contacted by 579 Christian Di Stasio 580 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 581 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 582 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 583 </span> 584 </label> 585 586</div> 587 </div> 588 <div class="success-block"> 589 <div class="lp-title-group"> 590 <h2 class="lp-h2">Thank You</h2> 591 <div class="lp-text--subtitle"><p>You have successfully been added to our Newsletter. Stay tuned for the latest updates sent straight to your inbox!</p></div> 592 </div> 593 </div> 594 </form> 595 596 </div> 597</div> 598</section> 599<section class="image-section is-font-color-light is-background-color-light" id="section-d7116ef0-def3-456f-bf36-0a382985307f" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c"> 600
600<script> 601 (function(){ 602 const sectionId = 'section-d7116ef0-def3-456f-bf36-0a382985307f' 603 const section = document.querySelector(`#${sectionId}`); 604 var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image'); 605 606 if('true' === 'true') { 607 section.classList.add('parallax-enabled'); 608 section.style.setProperty('--sectionBackground', sectionBg); 609 section.style.setProperty('background', 'none'); 610 } 611 })() 612</script>
612 613<div class="redesign work-with-us parallax"> 614 <div class="container"> 615 <h2 class="serif">Work With Us</h2> 616 <div class="description">We bring together a mix of integrity, imagination and an inexhaustible work ethic, striving to make each buying and selling experience the best possible.</div> 617 <div class="btn-container"> 618 <a 619 role="button" 620 data-type="CONTACT_US" 621 class="btn btn--primary-light button-style-2" 622 623 624 625 626 627 > 628 Contact Us 629 </a> 630 </div> 631 </div> 632</div> 633</section> 634<section id="section-eb4bcd51-4337-41ff-a093-12d135fb4a22" class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284"> 635
635<script type="text/x-handlebars-template" class="jsIGItem"> 636 <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}"> 637 <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div> 638 <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div> 639 {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}} 640 </a> 641</script>
641 642<div class="ig-feed redesign"> 643 <div class="ig-feed-top lp-container"> 644 <div class="top-wrapper"> 645 <div class="top-left"> 646 <h3 class="lp-h3 title">Follow Us on Instagram</h3> 647 <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a> 648 </div> 649 <div class="top-right"> 650 <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> 651 <a class="nav-button top-nav-prev hidden-control button-style-1"> 652 <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> 653 </a> 654 <a class="nav-button top-nav-next hidden-control button-style-1"> 655 <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> 656 </a> 657 </div> 658 </div> 659 </div> 660 <div class="lp-container ig-feed-container "> 661 <div class="ig-feed-feed" data-limit="33"> 662 </div> 663 </div> 664 <div class="bottom-controls"> 665 <a class="bottom-nav-button bottom-nav-prev button-style-1"> 666 <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> 667 </a> 668 <a class="bottom-nav-button bottom-nav-next button-style-1"> 669 <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> 670 </a> 671 </div> 672</div> 673 674</section> 675 676 <div id="modals" class="modals"></div> 677 <footer id="global-footer" class="is-font-color-light is-background-color-dark" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b"> 678 <div class="footer redesign no_newsletter "> 679 <div class="container"> 680 <h3>Christian Di Stasio Group</h3> 681 <div class="info-wrap"> 682 <div class="info-wrap-contact agent_box"> 683 <div class="info-wrap-contact_zone type_user"> 684 <h4 class="serif">Get In Touch</h4> 685 <div class="info-wrap-contact_cell"> 686 <i> 687 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 688 <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" /> 689 </svg> 690 </i> 691 <p class="contact_title">Email</p> 692 <a href="/cdn-cgi/l/email-protection#d7b4b397b4bfa5bea4a3beb6b9b3bea4a3b6a4beb8f9b4b8ba" class="lp-link info-wrap-contact_link grey-text hyperlink-style-2"><span class="__cf_email__" data-cfemail="f29196b2919a809b81869b939c969b818693819b9ddc919d9f">[email protected]</span></a> 693 </div> 694 <div class="info-wrap-contact_cell"> 695 <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 696 <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
69613 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" /> 697 </svg></i> 698 <p class="contact_title">Phone Number</p> 699 <a href="tel:6462807136" class="lp-link info-wrap-contact_link grey-text hyperlink-style-2">646.280.7136</a> 700 </div> 701 </div> 702 <div class="info-wrap-contact_zone"> 703 <div class="info-wrap-contact_cell"> 704 <i> 705 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 706 <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" /> 707 <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" /> 708 <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" /> 709 </svg> 710 </i> 711 <p class="info-wrap-contact_title">Address</p> 712 <p class="info-wrap-contact_link grey-text"><p>55 N Maple Ave<br>Ridgewood, NJ 07450</p></p> 713 </div> 714 </div> 715 </div> 716 </div> 717 <div class="text_footer first_text_footer"> 718 <div class="images_box"> 719 <div class="img_size"> 720 <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/63854641-8d04-4d56-a0d0-4a4ceb2923db" 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/63854641-8d04-4d56-a0d0-4a4ceb2923db 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/63854641-8d04-4d56-a0d0-4a4ceb2923db 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/63854641-8d04-4d56-a0d0-4a4ceb2923db 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/63854641-8d04-4d56-a0d0-4a4ceb2923db 1798w" alt="Footer Image" sizes="200px"> 721 </div> 722 </div> 723 <div class="luxury-text"> 724 <div id="ipql"> 725<p id="iaa1">âââââSotheby’s International Realty® and the Sotheby’s International Realty Logo are service marks licensed to Sotheby’s International Realty Affiliates LLC and used with permission. Prominent Properties Sotheby’s International Realty fully supports the principles of the Fair Housing Act and the Equal Opportunity Act. Eac
725h office is independently owned and operated. Any services or products provided by independently owned and operated franchisees are not provided by, affiliated with or related to Sotheby’s International Realty Affiliates LLC nor any of its affiliated companies.<br><img id="iivu" style="filter: invert(0);" src="https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/tguwivacqib9bgbmkkgy/realtor-eho-logo-07232021-update-light" width="100px" height="auto"></p> 726</div> 727<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}</style> 728 </div> 729 </div> 730 <div class="text_footer second_text_footer"> 731 <div class="text_content_wrap"> 732 <div> 733 Sothebyâs International Realty® is a registered trademark licensed to Sothebyâs International Realty Affiliates LLC. Each Office Is Independently Owned and Operated. 734 </div> 735 <div> 736 <div> </div> 737<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 738 </div> 739 </div> 740 </div> 741 <div class="info-privacy"> 742 <div class="form-row info-privacy__row"> 743 744 <div class="form-col form-col--powered powered-box"> 745 <div class="img-wrap"> 746 <img src="https://media-production.lp-cdn.com/media/b517d231-d9f5-4e15-870d-852a977c9204" alt=""> 747 </div> 748 <div class="powered_zone"> 749 Real Estate Website Design by <a href="https://www.luxurypresence.com/real-estate-website-design/" target="_blank" class="lp-link grey-text luxury-link underlined hyperlink-style-2">Luxury Presence</a> 750 </div> 751 </div> 752 753 <div class="form-col form-col--copyright"> 754 <div class="copy_zone"> 755 <span class="copy_words">Copyright ©</span> <span class="auto-year-update">2026</span> 756 | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-2">Privacy Policy</a> 757 758 </div> 759 </div> 760 761 <div class="form-col form-col--socials"> 762 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone"> 763 764 <li> 765 <a 766 href="https://www.facebook.com/DiStasioRealEstateNJ" 767 class="lp-socials__link socials__item socials__link wow fadeInUp" 768 data-wow-delay="0s" 769 target="_blank" 770 aria-label="FACEBOOK" 771 > 772 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 773 </a> 774 </li> 775 <li> 776 <a 777 href="https://www.instagram.com/distasio_realestate/?hl=en" 778 class="lp-socials__link socials__item socials__link wow fadeInUp" 779 data-wow-delay="0.1s" 780 target="_blank" 781 aria-label="INSTAGRAM" 782 > 783 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 784 </a> 785 </li> 786 <li> 787 <a 788 href="https://www.linkedin.com/in/christiandistasio/" 789 class="lp-socials__link socials__item socials__link wow fadeInUp" 790 data-wow-delay="0.2s" 791 target="_blank" 792 aria-label="LINKEDIN" 793 > 794 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 795 </a> 796 </li> 797 <li> 798 <a 799 href="https://www.youtube.com/@cdg_realestate" 800 class="lp-socials__link socials__item socials__link wow fadeInUp" 801 data-wow-delay="0.3s" 802 target="_blank" 803 aria-label="YOUTUBE" 804 >
805 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 806 </a> 807 </li> 808 <li> 809 <a 810 href="https://www.google.com/search?q=Christian+Di+Stasio%2C+Broker+-+Realtor+%2CReal+Estate+Advisor&oq=Christian+Di+Stasio%2C+Broker+-+Realtor+%2CReal+Estate+Advisor&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg8MgYIAhBFGD3SAQc4MTJqMGo0qAIAsAIB&sourceid=chrome&ie=UTF-8#lrd=0x89c2e560f82c2b23:0x66fc4add8b557b7,1,,,," 811 class="lp-socials__link socials__item socials__link wow fadeInUp" 812 data-wow-delay="0.4s" 813 target="_blank" 814 aria-label="GOOGLE" 815 > 816 <span class="lp-i lp-i--google" aria-hidden="true"></span> 817 </a> 818 </li> 819 <li> 820 <a 821 href="https://www.zillow.com/profile/Christian%20Di%20Stasio" 822 class="lp-socials__link socials__item socials__link wow fadeInUp" 823 data-wow-delay="0.5s" 824 target="_blank" 825 aria-label="ZILLOW" 826 > 827 <span class="lp-i lp-i--zillow" aria-hidden="true"></span> 828 </a> 829 </li> 830 </ul> </div> 831 </div> 832 </div> 833 </div> 834</div> 835 836 </footer> 837 838 <div id="modal-global-contact-us" class="modal " 839 data-el-id="" 840 style="background-color: ;" 841 > 842 <div class="modal-content"> 843 <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/cd8f9664-e656-4999-ab59-68f2203b5cd0')"> 844 <div class="container"> 845 <div class="section-details" style="--colorTxt: #ffffff"> 846 <h2>Contact Details</h2> 847 848 <div class="info-zone"> 849 850 <div class="info-zone_contact type_user"> 851 <h4 class="serif">Christian Di Stasio Group</h4> 852 <div class="info-zone_contact_cell"> 853 <i> 854 <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 855 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A"/> 856 </svg> 857 </i> 858 <p class="contact_title">Phone</p> 859 <a href="tel:646.280.7136" class="lp-link info-zone_contact_link link hyperlink-style-2">646.280.7136</a> 860 </div> 861 <div class="info-zone_contact_cell"> 862 <i> 863 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 864 <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"/> 865 </svg> 866 </i> 867 <p class="contact_title">Email</p> 868 <a href="/cdn-cgi/l/email-protection#6a090e2a09021803191e030b040e03191e0b19030544090507" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="395a5d795a514b504a4d5058575d504a4d584a5056175a5654">[email protected]</span></a> 869 </div> 870 </div> 871 <div class="info-zone_contact"> 872 <div class="info-zone_contact_cell"> 873 <i> 874 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 875 <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 3
8750.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"/> 876 <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"/> 877 <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"/> 878 </svg> 879 </i> 880 <p class="info-wrap-contact_title">Address</p> 881 <p class="info-zone_contact_link pre-line">55 N Maple Ave 882 Ridgewood, NJ 07450</p> 883 </div> 884 </div> 885 <div class="info-zone_contact"> 886 <div class="info-zone_contact_cell"> 887 <p class="pre-line"><div></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style></p> 888 </div> 889 </div> 890 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__contact-column"> 891 892 <li> 893 <a 894 href="https://www.facebook.com/DiStasioRealEstateNJ" 895 class="lp-socials__link socials__item wow fadeInUp socials__link" 896 data-wow-delay="0s" 897 target="_blank" 898 aria-label="FACEBOOK" 899 > 900 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 901 </a> 902 </li> 903 <li> 904 <a 905 href="https://www.instagram.com/distasio_realestate/?hl=en" 906 class="lp-socials__link socials__item wow fadeInUp socials__link" 907 data-wow-delay="0.1s" 908 target="_blank" 909 aria-label="INSTAGRAM" 910 > 911 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 912 </a> 913 </li> 914 <li> 915 <a 916 href="https://www.linkedin.com/in/christiandistasio/" 917 class="lp-socials__link socials__item wow fadeInUp socials__link" 918 data-wow-delay="0.2s" 919 target="_blank" 920 aria-label="LINKEDIN" 921 > 922 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 923 </a> 924 </li> 925 <li> 926 <a 927 href="https://www.youtube.com/@cdg_realestate" 928 class="lp-socials__link socials__item wow fadeInUp socials__link" 929 data-wow-delay="0.3s" 930 target="_blank" 931 aria-label="YOUTUBE" 932 >
933 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 934 </a> 935 </li> 936 <li> 937 <a 938 href="https://www.google.com/search?q=Christian+Di+Stasio%2C+Broker+-+Realtor+%2CReal+Estate+Advisor&oq=Christian+Di+Stasio%2C+Broker+-+Realtor+%2CReal+Estate+Advisor&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg8MgYIAhBFGD3SAQc4MTJqMGo0qAIAsAIB&sourceid=chrome&ie=UTF-8#lrd=0x89c2e560f82c2b23:0x66fc4add8b557b7,1,,,," 939 class="lp-socials__link socials__item wow fadeInUp socials__link" 940 data-wow-delay="0.4s" 941 target="_blank" 942 aria-label="GOOGLE" 943 > 944 <span class="lp-i lp-i--google" aria-hidden="true"></span> 945 </a> 946 </li> 947 <li> 948 <a 949 href="https://www.zillow.com/profile/Christian%20Di%20Stasio" 950 class="lp-socials__link socials__item wow fadeInUp socials__link" 951 data-wow-delay="0.5s" 952 target="_blank" 953 aria-label="ZILLOW" 954 > 955 <span class="lp-i lp-i--zillow" aria-hidden="true"></span> 956 </a> 957 </li> 958 </ul> </div> 959 </div> 960 <div class="section-message"> 961 <form data-type="contact-form"> 962 <h2>Submit a Message</h2> 963 <div class="h-pot"> 964 <label for="-middleName">Middle Name</label> 965 <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 966 </div> 967 968 969 <div class="lp-input-group"> 970 <label for="prod-name" class="lp-label">Name</label> 971 <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light"> 972 </div> 973 <div class="lp-input-group"> 974 <label for="prod-email" class="lp-label">Email</label> 975 <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light"> 976 </div> 977 <div class="lp-input-group"> 978 <label for="prod-phone" class="lp-label">Phone</label> 979 <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light"> 980 </div> 981 <div class="lp-input-group m16"> 982 <label for="prod-message" class="lp-label">Message</label> 983 <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea> 984 </div> 985 986 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 987 <label class='lp-tcr-content'> 988 <span class='lp-tcr-checkbox'> 989 <input 990 type='checkbox' 991 id='-termsAccepted' 992 name='termsAccepted' 993 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 994 oninput="this.setCustomValidity('')" 995 required 996 /></span> 997 <span class='lp-tcr-message'> 998 999 I agree to be contacted by 1000 Christian Di Stasio 1001 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1002 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 1003 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 1004 </span> 1005 </label> 1006 1007 </div> 1008 1009 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 1010 1011 1012 <button type="submit" class="submitButton lp-btn button-style-2">
1013 <span class="label-initial">Submit</span> 1014 <span class="label-loading">Submitting</span> 1015 <span class="label-success">Submitted</span> 1016 <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span> 1017 </button> 1018 <p class="success-message success hide"> 1019 Message sent successfully! 1020 </p> 1021 </form> 1022 1023 1024 </div> 1025 </div> 1026 </div> 1027 1028 </div> 1029 <button class="close lp-close" type="button" aria-label="close modal"> 1030 <span class="lp-close-icon" aria-hidden="true"></span> 1031 </button> 1032 </div> 1033 <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;"> 1034 <style> 1035 #qualifying-questions-modal .custom-select-toggle { 1036 border: 1px solid #848484; 1037 border-radius: 8px; 1038 padding: 12px 16px; 1039 } 1040 1041 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 1042 color: #848484; 1043 } 1044 1045 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 1046 color: #848484; 1047 opacity: 1; 1048 } 1049 1050 #qualifying-questions-modal .disclaimer-more { 1051 display: none; 1052 } 1053 1054 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 1055 display: inline; 1056 } 1057 1058 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 1059 display: none; 1060 } 1061 </style>
vendor: 119 bytes, lines 1061-1062
1061 1062 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1062<script> 1063 function toggleDisclaimerQualifyingQuestionsModal() { 1064 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 1065 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 1066 1067 if (disclaimerText.classList.contains('collapsed')) { 1068 disclaimerText.classList.remove('collapsed'); 1069 toggleButton.textContent = 'Read less'; 1070 toggleButton.setAttribute('aria-expanded', 'true'); 1071 } else { 1072 disclaimerText.classList.add('collapsed'); 1073 toggleButton.textContent = 'Read more'; 1074 toggleButton.setAttribute('aria-expanded', 'false'); 1075 } 1076 } 1077 </script>
1077 1078 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 1079 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 1080 <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;"> 1081 <span aria-hidden="true">×</span> 1082 </button> 1083 <div style="padding: 40px 30px 32px;"> 1084 <div style="text-align: left; margin-bottom: 32px;"> 1085 <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;"> 1086 Thanks, please provide more information to help serve you 1087 </h2> 1088 </div> 1089 <form id="qualifying-questions-modal-form" data-type="contact-form"> 1090 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 1091 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 1092 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 1093 <label for="qualifying-questions-modal-email" style="display:none;"> 1094 Email 1095 </label> 1096 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 1097 Trigger Source 1098 </label> 1099 1100 <div style="margin-bottom: 20px;"> 1101 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 1102 Phone Number 1103 </label> 1104 <input 1105 type="tel" 1106 id="qualifying-questions-modal-phoneNumber" 1107 name="phoneNumber" 1108 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;" 1109 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 1110 required 1111 placeholder="Phone" 1112 aria-label="Phone Number" 1113 inputmode="tel" 1114 autocomplete="tel" 1115 onfocus="this.style.borderColor='black';" 1116 onblur="this.style.borderColor='#848484';" 1117 /> 1118 </div> 1119 1120 <div style="margin-bottom: 20px;"> 1121 <label for="qualifying-questions-modal-interest" style="display:none;"> 1122 Interest 1123 </label> 1124 <select 1125 id="qualifying-questions-modal-interest" 1126 name="interest" 1127 required 1128 data-label="Interest" 1129 aria-label="Interest" 1130 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;" 1131 onfocus="this.style.borderColor='black'; this.style.color='black';" 1132 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 1133 > 1134 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 1135 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 1136 <option value="Selling" style="background: #fff; color: black;">Selling</option> 1137 <option value="Buying" style="background: #fff; color: black;">Buying</option> 1138 <option value="Renting" style="background: #fff; color: black;">Renting</option> 1139 <option value="Other" style="background: #fff; color: black;">Other</option> 1140 </select> 1141 </div> 1142 1143 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 1144 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 1145 <label class='lp-tcr-content'>
1146 <span class='lp-tcr-checkbox'> 1147 <input 1148 type='checkbox' 1149 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 1150 name='termsAccepted' 1151 aria-describedby='qualifying-questions-modal-disclaimer-text' 1152 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1153 oninput="this.setCustomValidity('')" 1154 required 1155 /></span> 1156 <span class='lp-tcr-message'> 1157 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 1158 1159 I agree to be contacted by 1160 <strong>Christian Di Stasio</strong> 1161 via call, email, and text <span class="disclaimer-more">for real estate services. 1162 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1163 You can also click the unsubscribe link in the emails. 1164 Message and data rates may apply. Message frequency may vary.</span> 1165 <span class="disclaimer-ellipsis">...</span> 1166 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 1167 </div> 1168 <button 1169 id="qualifying-questions-modal-toggle-disclaimer" 1170 type="button" 1171 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 1172 aria-expanded="false" 1173 onclick="toggleDisclaimerQualifyingQuestionsModal()" 1174 > 1175 Read more 1176 </button> 1177 </span> 1178 </label> 1179 </div> 1180 1181 <div> 1182 <button 1183 type="submit" 1184 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;" 1185 onmouseover="this.style.background='transparent'; this.style.color='black';" 1186 onmouseout="this.style.background='black'; this.style.color='white';" 1187 > 1188 Submit 1189 </button> 1190 </div> 1191 </form> 1192 </div> 1193 </div> 1194 </div> 1195 </div> 1196 1197
1197<script> 1198 (function() { 1199 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 1200 1201 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 1202 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 1203 entries.forEach(function(video) { 1204 if (video.isIntersecting) { 1205 for (var source in video.target.children) { 1206 var videoSource = video.target.children[source]; 1207 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 1208 videoSource.src = videoSource.dataset.src; 1209 } 1210 } 1211 1212 video.target.load(); 1213 video.target.classList.remove("lazy"); 1214 lazyVideoObserver.unobserve(video.target); 1215 } 1216 }); 1217 }); 1218 1219 lazyVideos.forEach(function(lazyVideo) { 1220 lazyVideoObserver.observe(lazyVideo); 1221 }); 1222 } 1223 })(); 1224 </script>
1224 1225 1226 <!-- Global site tag (gtag.js) - Google Analytics --> 1227
1227<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1227 1228 1229 <!-- Google Tag Manager --> 1230
1230<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1231 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1232 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 1233 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1234 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1234 1235 <!-- End Google Tag Manager --> 1236 1237 1238 <!-- LP Tracker (divolte.js) - LP Divolte --> 1239
1239<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1239 1240 <!-- LP Tracker (eventBus) - LP EventBus --> 1241
1241<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1241 1242 1243
1243<script> 1244 window.dataLayer = window.dataLayer || []; 1245 document.sendGoogleTagManagerEvent = function() { 1246 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 1247 if (window.navigator.globalPrivacyControl) { 1248 return; 1249 } 1250 1251 dataLayer.push(arguments); 1252 } 1253 1254 document.sendGoogleTagManagerEvent('js', new Date()); 1255 document.sendGoogleTagManagerEvent('config', 'G-YH7MK9B0KX', { page: location.pathname, location: location.href }); 1256 document.sendGoogleAnalyticsEvent = function(googleEvent) { 1257 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 1258 event_category: googleEvent.eventCategory, 1259 event_label: googleEvent.eventLabel, 1260 value: googleEvent.eventValue, 1261 page: googleEvent.page, 1262 location: googleEvent.location 1263 }) 1264 }; 1265 1266 document.addEventListener("DOMContentLoaded", function() { 1267 (function() { 1268 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 1269 var date = new Date(); 1270 var elements = document.getElementsByClassName('auto-year-update'); 1271 var i; 1272 for (i = 0; i < elements.length; i++) { 1273 elements[i].innerText = date.getFullYear(); 1274 } 1275 })(); 1276 if (window.divolteLp) { 1277 window.divolteLp('sendLpPageView', {}); 1278 } 1279 if (window.eventBusLp) { 1280 window.eventBusLp('sendLpPageView', {}); 1281 } 1282 }); 1283 </script>
1283 1284 1285 1286
1286<script> 1287 // Function to dynamically load a script 1288 function loadScript(url, callback) { 1289 var script = document.createElement('script'); 1290 script.type = 'text/javascript'; 1291 script.src = url; 1292 script.defer = true; 1293 script.async = true; 1294 script.onload = callback; 1295 document.head.appendChild(script); 1296 } 1297 1298 // Function to dynamically load CSS file 1299 function loadCSS(url) { 1300 var link = document.createElement("link"); 1301 link.rel = "stylesheet"; 1302 link.href = url; 1303 document.head.appendChild(link); 1304 } 1305 1306 // Global methods / variables that can be accessed by element js 1307 window.luxuryPresence = { 1308 libs: { 1309 loadJs: loadScript, 1310 loadCss: loadCSS, 1311 jsLibsMap: { 1312 paroller: { 1313 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 1314 isLoaded: false, 1315 }, 1316 ionRangeSlider: { 1317 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 1318 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 1319 isLoaded: false, 1320 requires: ['jquery'], 1321 }, 1322 splide: { 1323 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 1324 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 1325 isLoaded: false, 1326 }, 1327 wow: { 1328 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 1329 isLoaded: false, 1330 }, 1331 jquery: { 1332 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 1333 isLoaded: false, 1334 }, 1335 slick: { 1336 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 1337 isLoaded: false, 1338 requires: ['jquery'], 1339 }, 1340 libphonenumber: { 1341 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 1342 isLoaded: false, 1343 }, 1344 }, 1345 }, 1346 }; 1347 </script>
1347 1348
1348<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>
1348 1349
1349<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1349 1350
1350<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1350 1351
1351<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1351 1352
1352<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>
1352 1353
1353<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>
1353 1354
1354<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>
1354 1355 1356 <!-- GOOGLE TRANSLATE SCRIPT --> 1357
1357<script> 1358 function googleTranslateElementInit() { 1359 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 1360 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 1361 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 1362 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 1363 translate.innerText = ''; 1364 new google.translate.TranslateElement({ 1365 pageLanguage: 'en', 1366 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 1367 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 1368 }, translate); 1369 }); 1370 } 1371 </script>
1371 1372
1372<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1372 1373
1373<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1373 1374 1375 <!-- GOOGLE TRANSLATE SCRIPT END--> 1376
1376<script> 1377 1378 // UI helpers 1379 (function () { 1380 1381 function getSideMenu () { 1382 return document.querySelector('body > div.sidemenu'); 1383 } 1384 1385 function sideMenuHide (instant) { 1386 var sideMenu = getSideMenu(); 1387 if (!sideMenu || !sideMenu.classList.contains('visible')) { 1388 return; 1389 } 1390 sideMenu.classList.remove('visible'); 1391 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 1392 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 1393 } 1394 1395 function sideMenuShow () { 1396 var sideMenu = getSideMenu(); 1397 if (!sideMenu || sideMenu.classList.contains('visible')) { 1398 return; 1399 } 1400 sideMenu.classList.add('visible'); 1401 sideMenu.dispatchEvent(new Event('lpui-show')); 1402 window.dispatchEvent(new Event('lpui-sidemenu-show')); 1403 } 1404 1405 function sideMenuToggle () { 1406 var sideMenu = getSideMenu(); 1407 if (!sideMenu) { 1408 return; 1409 } 1410 var isSideMenuVisible = sideMenu.classList.contains('visible'); 1411 if (isSideMenuVisible) { 1412 sideMenuHide(); 1413 } else { 1414 sideMenuShow(); 1415 } 1416 } 1417 1418 var scrollLockRequests = {}; 1419 window.__debug_scrollLockRequests = scrollLockRequests; 1420 var hideScrollStyles = ''+ 1421 'body {'+ 1422 'overflow: hidden;' + 1423 '}'; 1424 var hideScrollId = 'hide-body-scroll-style'; 1425 1426 function scrollLock () { 1427 var style = document.createElement('style'); 1428 style.id = hideScrollId; 1429 style.textContent = hideScrollStyles; 1430 document.head.appendChild(style); 1431 window.dispatchEvent(new Event('lpui-scroll-locked')); 1432 } 1433 1434 function scrollUnlock () { 1435 document.getElementById(hideScrollId)?.remove(); 1436 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 1437 } 1438 1439 function requestScrollLock (lockId) { 1440 var wasLocked = Object.keys(scrollLockRequests).length > 0; 1441 scrollLockRequests[lockId || '__anonymous_lock'] = true; 1442 if (!wasLocked) { 1443 scrollLock(); 1444 } 1445 } 1446 1447 function releaseScrollLock (lockId) { 1448 if (lockId) { 1449 delete scrollLockRequests[lockId]; 1450 if (!Object.keys(scrollLockRequests).length) { 1451 scrollUnlock(); 1452 } 1453 } else { 1454 scrollLockRequests = {}; 1455 window.__debug_scrollLockRequests = scrollLockRequests; 1456 scrollUnlock(); 1457 } 1458 } 1459 1460 function showModal (modalId, options) { 1461 var modal = document.getElementById(modalId); 1462 if (!modal) { 1463 return; 1464 } 1465 1466 if (!modal.classList.contains('visible')) { 1467 modal.classList.add('visible'); 1468 if (options && options.scrollLock) { 1469 window.lpUI.requestScrollLock(modalId); 1470 } 1471 modal.dispatchEvent(new Event('lpui-show')); 1472 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 1473 } 1474 1475 const visibleModals = document.querySelectorAll('.modal.visible'); 1476 1477 if (visibleModals.length > 1) { 1478 1479 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 1480 const zIndex = window.getComputedStyle(modal).zIndex; 1481 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 1482 return Math.max(maxZIndex, parsedZIndex); 1483 }, 0); 1484 1485 modal.style.zIndex = maxZIndex + 1; 1486 } 1487 1488 } 1489 1490 function _hideModal (modalEl) { 1491 if (!modalEl) { 1492 return; 1493 } 1494 if (!modalEl.classList.contains('visible')) { 1495 return; 1496 } 1497 modalEl.classList.remove('visible'); 1498 modalEl.style.zIndex = '';
1499 modalEl.dispatchEvent(new Event('lpui-hide')); 1500 var modalId = modalEl.getAttribute('id'); 1501 if (modalId) { 1502 window.lpUI.releaseScrollLock(modalId); 1503 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 1504 } 1505 } 1506 1507 function hideModal (modalId) { 1508 _hideModal(document.getElementById(modalId)); 1509 } 1510 1511 function hideClosestModal (el) { 1512 const modal = el?.closest('.modal'); 1513 if (!modal) { 1514 return; 1515 } 1516 if (modal.classList) { 1517 _hideModal(modal); 1518 return; 1519 } 1520 if (modal.length && modal[0].classList) { 1521 _hideModal(modal[0]); 1522 } 1523 } 1524 1525 window.lpUI = { 1526 sideMenuHide: sideMenuHide, 1527 sideMenuShow: sideMenuShow, 1528 sideMenuToggle: sideMenuToggle, 1529 requestScrollLock: requestScrollLock, 1530 releaseScrollLock: releaseScrollLock, 1531 showModal: showModal, 1532 hideModal: hideModal, 1533 hideClosestModal: hideClosestModal 1534 } 1535 })(); 1536 1537 var stringifyPrimitive = function(v) { 1538 switch (typeof v) { 1539 case 'string': 1540 return v; 1541 1542 case 'boolean': 1543 return v ? 'true' : 'false'; 1544 1545 case 'number': 1546 return isFinite(v) ? v : ''; 1547 1548 default: 1549 return ''; 1550 } 1551 }; 1552 1553 function objectToQuerystring(obj, sep, eq, name) { 1554 // https://github.com/Gozala/querystring/blob/master/encode.js 1555 sep = sep || '&'; 1556 eq = eq || '='; 1557 if (obj === null) { 1558 obj = undefined; 1559 } 1560 1561 if (typeof obj === 'object') { 1562 return Object.keys(obj).map(function(k) { 1563 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 1564 if (Array.isArray(obj[k])) { 1565 return obj[k].map(function(v) { 1566 return ks + encodeURIComponent(stringifyPrimitive(v)); 1567 }).join(sep); 1568 } else { 1569 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 1570 } 1571 }).filter(Boolean).join(sep); 1572 1573 } 1574 1575 if (!name) return ''; 1576 return encodeURIComponent(stringifyPrimitive(name)) + eq + 1577 encodeURIComponent(stringifyPrimitive(obj)); 1578 } 1579 1580 function getPath(url, options) { 1581 var parser = document.createElement('a'); 1582 parser.href = url || ''; 1583 var path = parser.pathname || ''; 1584 if (path[0] !== '/') { 1585 // IE does not return path starting with a slash 1586 path = '/' + path; 1587 } 1588 1589 if (options && options.queryString) { 1590 path += parser.search; 1591 } 1592 1593 return path; 1594 } 1595 1596 function getMLSAutocomplete(keyword) { 1597 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1598 var query = { 1599 kind: 'listings', 1600 query: keyword 1601 }; 1602 1603 return superagent 1604 .get(searchURL) 1605 .query(query) 1606 .then(function(res) { 1607 var data = res.body || []; 1608 // Array of listing_auto_complete documents: id, display_address, city, state, 1609 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 1610 1611 return data; 1612 }); 1613 } 1614 1615 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 1616 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 1617 1618 return superagent 1619 .get(searchURL) 1620 .query({ kind: 'listings', query: keyword, ...filters }) 1621 .then(function(res) { 1622 // Same response shape as getMLSAutocomplete. 1623 return res.body || []; 1624 }); 1625 } 1626 1627 function makeMlsLink(data) { 1628 // Code Dupe from utils/googlePlace 1629 // mapping of google data type to mls data type 1630 var mapping = { 1631 neighborhood: 'neighborhood', 1632 locality: 'place', 1633 administrative_area_level_2: 'county', 1634 administrative_area_level_1: 'state', 1635 postal_code: 'postalcode', 1636 }; 1637 1638 function _filterTypes(types) { 1639 return types.filter(function(type) { return type !== 'political' }); 1640 } 1641 1642 if (!data || !Object.keys(data).length) { 1643 return '/home-search/listings'; 1644 } 1645 1646 var newData = {};
1647 _filterTypes(data.types).forEach(function(type) { 1648 if (mapping[type]) { 1649 newData.search_type = mapping[type]; 1650 } 1651 }); 1652 newData.omnibox = data.formatted_address; 1653 data.address_components.forEach(function(component) { 1654 _filterTypes(component.types).forEach(function(type) { 1655 if (mapping[type]) { 1656 newData[mapping[type]] = component.long_name; 1657 } 1658 }); 1659 }); 1660 var bounds = data.geometry.bounds; 1661 var convertedData = Object.assign(bounds, newData); 1662 1663 return '/home-search/listings?' + objectToQuerystring(convertedData); 1664 } 1665 1666 function debounce(func, wait) { 1667 let timeout; 1668 return function(...args) { 1669 const context = this; 1670 clearTimeout(timeout); 1671 timeout = setTimeout(() => func.apply(context, args), wait) 1672 } 1673 } 1674 1675 // Global methods / variables that can be accessed by element js 1676 window.luxuryPresence = { 1677 ...window.luxuryPresence, 1678 defaults: { 1679 companyId: '43b40804-f64c-4ba1-8c4a-829d577aef20', 1680 apiGatewayUrl: '/api-gw', 1681 routerUrl: '/api-nv', 1682 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\
1682n }\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
1682s: 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"}, 1683 propertyPlaceholderImage: {"id":"9ac03eb9-561a-4285-a2ca-8544b13be045","alt":null,"bytes":86018,"width":1920,"format":"jpeg","height":1200,"pngUrl":"","shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","smallUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","authorUrl":null,"createdAt":"2026-01-02T02:08:06.671Z","mediumUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","sourceUrl":null,"updatedAt":"2026-01-02T02:08:06.671Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","__typename":"Media","altTagText":null,"authorName":null,"sourceName":"r2","xxLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","description":null,"displayName":"property-placeholder","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","resourceType":"image","thumbnailUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/36c0be31-8392-45f2-b3c0-3ac99acc0476","originalFileName":"Property Placeholder","cloudinaryPublicId":"36c0be31-8392-45f2-b3c0-3ac99acc0476"} 1684 }, 1685 objectToQuerystring: objectToQuerystring, 1686 getPath: getPath, 1687 getMLSAutocomplete: getMLSAutocomplete, 1688 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 1689 makeMlsLink: makeMlsLink, 1690 debounce: debounce, 1691 }; 1692 1693 var wowOffset = 100; 1694 </script>
1694 1695
1695<script> 1696 (()=>{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;
1696i&&(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())),`
1696<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}
1696return 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
1696ontact 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
1696ourceResource,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=([^;
1696]+)/);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=` 1697 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 1698 propertyDisclaimers(input: $input) { 1699 feedId 1700 listingId 1701 resolvedFromListing 1702 listingCardAttribution 1703 listingDetailCourtesy 1704 listingDetailFooter 1705 logo 1706 } 1707 } 1708`;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 >
1708 .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=)
1708)|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=` 1709 <div id="modal-${i.id}" class="modal visible"> 1710 <div class="modal-content"> 1711 <div class="lightbox-video"> 1712 <div class="video-player"> 1713 <div class="embed-container"> 1714 ${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>`} 1715 </div> 1716 </div> 1717 </div> 1718 </div> 1719 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 1720 </div> 1721 `;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
1721=>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");
1721let 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
1721URIComponent(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=` 1722 <button class="lp-lightbox__close" aria-label="close modal"></button> 1723 <div class="lp-lightbox__content"> 1724 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 1725 <div class="splide__arrows"> 1726 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 1727 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 1728 </div> 1729 <div class="splide__track"> 1730 <ul class="splide__list"></ul> 1731 </div> 1732 </div> 1733 </div> 1734 `,"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
1734h(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=` 1735 <button class="lp-lightbox__close" aria-label="close modal"></button> 1736 <div class="lp-lightbox__content"> 1737 <div class="lp-lightbox__carousel"></div> 1738 </div> 1739 `,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"}
1739)),(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"];
1739return 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=` 1740 query { 1741 validSession { 1742 success 1743 } 1744 } 1745 `;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","
1745spaceTypeIds","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})}})(); 1746//# sourceMappingURL=lp-sdk.js.map 1747 1748 </script>
1748 1749 1750
1750<script> 1751 var lpGlobalInitialized = false; 1752 1753 function lpGlobalInit () { 1754 if (lpGlobalInitialized) { 1755 return; 1756 } 1757 lpGlobalInitialized = true; 1758 // Initialize wow animation plugin only according to turbolinks 1759 var wow; 1760 if (window.WOW) { 1761 wow = new WOW({ 1762 animateClass: 'animated', 1763 offset: wowOffset, 1764 live: false, 1765 callback: function(box) {} 1766 }); 1767 } 1768 // Initialize handlebar helpers only once 1769 function handlebarsInit() { 1770 if (!window.Handlebars) { 1771 return; 1772 } 1773 HandlebarsIntl.registerWith(Handlebars); 1774 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 1775 } 1776 1777 handlebarsInit(); 1778 1779 var modalContentUrl = "/modals.html"; 1780 const modalsContainer = document.getElementById('modals'); 1781 if (modalsContainer) { 1782 fetch(modalContentUrl).then(function(res) { 1783 if (!res.ok) { 1784 throw new Error(`HTTP error! Status: ${res.status}`); 1785 } 1786 return res.text(); 1787 }).then(function(resultText) { 1788 modalsContainer.innerHTML = resultText; 1789 1790 // now we need to execute all script elements 1791 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 1792 const script = document.createElement("script"); 1793 script.text = s.innerHTML; 1794 Array.from(s.attributes).forEach(function (a) { 1795 script.setAttribute(a.name, a.value); 1796 }) 1797 s.parentNode.replaceChild(script, s); 1798 }); 1799 1800 try { 1801 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 1802 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 1803 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 1804 window.luxuryPresence.oauth.initialize({ 1805 googleSignOnEnabled: true, 1806 iframe: false }); 1807 } catch (e) { 1808 console.log(e); 1809 } 1810 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 1811 closeModalBtn.addEventListener('click', function() { 1812 window.lpUI.hideClosestModal(closeModalBtn); 1813 }); 1814 }); 1815 }).catch((e) => console.log(e)); 1816 } 1817 /* Initialize Luxury Presence SDK */ 1818 try { 1819 window.luxuryPresence.config.setCompany("43b40804-f64c-4ba1-8c4a-829d577aef20", {}); 1820 window.luxuryPresence.config.setWebsite("42744f60-1a03-40b4-89f8-9a0aacb720aa", { 1821 myhomeDashboardEnabled: true, 1822 mlsEnabled: true, 1823 hstValuationRedirectEnabled: true, 1824 hvStepTwoCaptureEnabled: false 1825 }); 1826 const url = new URL(window.location.href); 1827 const shareId = url.searchParams.get('shareId'); 1828 window.luxuryPresence.config.setPage("98f2f76d-1d64-444e-a824-58f61a311c93", { 1829 sourceResource: "", 1830 pageElementId: "", 1831 pageQueryVariables: {}, 1832 shareId: "", 1833 }); 1834 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 1835 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 1836 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 1837 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 1838 window.luxuryPresence.config.setEventBus({ 1839 enabled: true, 1840 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 1841 url: "https://p.luxurypresence.com", 1842 }); 1843 window.luxuryPresence.config.setTemplateId("0c2b9641-6f2a-40f2-a2e0-dabc022eb278", {}); 1844 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 1845 window.luxuryPresence.buttons.initialize({}); 1846 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 1847 window.luxuryPresence.contactForms.initialize({}); 1848 window.luxuryPresence.validation.initialize({}); 1849 window.luxuryPresence.expandSliders.initialize({}); 1850 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 1851 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 1852 } catch (e) { 1853 console.log(e); 1854 } 1855 1856 /* Inject Section Specific Javascript */ 1857 try { 1858(function init(sectionDomId) { 1859 const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content'); 1860 if (disclaimerLabel) { 1861 const input = disclaimerLabel.querySelector('input'); 1862 if (input) { 1863 input.setAttribute('id', `${sectionDomId}-termsAccepted`); 1864 input.value = 'true'; 1865 const label = document.createElement('label'); 1866 label.setAttribute('for', `${sectionDomId}-termsAccepted`); 1867 label.classList.add('lp-visually-hidden'); 1868 label.textContent = 'Opt in/Disclaimer Consent:'; 1869 disclaimerLabel.prepend(label); 1870 } 1871 } 1872 function setHttp(link) { 1873 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 1874 link = 'https://' + link; 1875 } 1876 return link; 1877 } 1878 const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link'); 1879 socialLinks.forEach(linkElement => { 1880 const href = linkElement.getAttribute('href'); 1881 if (href) { 1882 linkElement.setAttribute('href', setHttp(href)); 1883 } 1884 }); 1885 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 1886 if (redirectLink.length) { 1887 const rawHref = setHttp(redirectLink.attr('href')); 1888 let formEvent; 1889 if (rawHref) { 1890 formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset'; 1891 $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () { 1892 redirectLink.attr('href', rawHref); 1893 redirectLink[0].click(); 1894 }); 1895 } 1896 } 1897})('modal-global-contact-us'); 1898} catch(e) { 1899console.log(e); 1900} 1901 1902 try { 1903(function init(sectionDomId) { 1904 const $section = $('#' + sectionDomId); 1905 const $hamburger = $section.find('.hamburger-component'); 1906 function onSideMenuShow() { 1907 if (!$hamburger.hasClass('active')) { 1908 $hamburger.addClass('active'); 1909 } 1910 } 1911 function onSideMenuHide() { 1912 $hamburger.removeClass('active'); 1913 } 1914 const $window = $(window); 1915 $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow); 1916 $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide); 1917 const $subContainers = $section.find('.navigation__item.sub-nav-container'); 1918 $subContainers.hover(function () { 1919 $(this).find('.sub-nav').addClass('visible'); 1920 }, function () { 1921 $(this).find('.sub-nav').removeClass('visible'); 1922 }); 1923 $window.on('click.lpui-auto-clean', function () { 1924 $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown'); 1925 }); 1926 let fixedWidth = 0; 1927 const rightPad = 20; 1928 function fixSubsPosition() { 1929 const wWidth = window.innerWidth; 1930 if (innerWidth === fixedWidth) { 1931 return; 1932 } 1933 fixedWidth = wWidth; 1934 $subContainers.each(function () { 1935 const $sub = $(this).find('.sub-nav'); 1936 $sub[0].style.right = '';
1937 const sRect = $sub[0].getBoundingClientRect(); 1938 const sRight = sRect.left + sRect.width; 1939 if (sRight > wWidth - rightPad) { 1940 const parentRect = $sub[0].offsetParent.getBoundingClientRect(); 1941 const parentRight = parentRect.left + parentRect.width; 1942 $sub[0].style.right = `${parentRight - wWidth + rightPad}px`; 1943 } 1944 }); 1945 } 1946 var debouncer; 1947 $window.on('resize.lpui-auto-clean', function () { 1948 clearTimeout(debouncer); 1949 debouncer = setTimeout(fixSubsPosition, 500); 1950 }); 1951 fixSubsPosition(); 1952 if ($('.property-intro').length || $('.property-intro-2').length) { 1953 $('nav').addClass('dark-opening'); 1954 $("#global-navbar").css({ 1955 "background-color": "rgb(26, 26, 26)", 1956 "color": "rgb(255, 255, 255)" 1957 }); 1958 } 1959 function initAutoTruncateMenu() { 1960 const $navbar = $section.find('.navbar'); 1961 const $navList = $section.find('.navigation > ul'); 1962 if (!$navbar.length || !$navList.length) { 1963 return; 1964 } 1965 const $logo = $section.find('.logo'); 1966 const $buttonsWrapper = $section.find('.buttons-wrapper'); 1967 const $allItems = $navList.children('.navigation__item'); 1968 const $phoneItem = $allItems.filter(function () { 1969 return $(this).find('a[href^="tel:"]').length > 0; 1970 }); 1971 const $menuItems = $allItems.not($phoneItem); 1972 if (!$menuItems.length) { 1973 return; 1974 } 1975 const buffer = 8; 1976 function measureFixedWidth() { 1977 let width = buffer; 1978 if ($logo.length) { 1979 width += $logo.outerWidth(true) || 0; 1980 } 1981 if ($buttonsWrapper.length) { 1982 width += $buttonsWrapper.outerWidth(true) || 0; 1983 } 1984 if ($phoneItem.length) { 1985 width += $phoneItem.outerWidth(true) || 0; 1986 } 1987 return width; 1988 } 1989 function truncateMenu() { 1990 if (!$navList.is(':visible')) { 1991 return; 1992 } 1993 $menuItems.css('display', ''); 1994 const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth(); 1995 let widthSoFar = 0; 1996 let overflowed = false; 1997 $menuItems.each(function () { 1998 const $item = $(this); 1999 if (overflowed) { 2000 $item.css('display', 'none'); 2001 return; 2002 } 2003 widthSoFar += $item.outerWidth(true); 2004 if (widthSoFar > availableWidth) { 2005 $item.css('display', 'none'); 2006 overflowed = true; 2007 } 2008 }); 2009 } 2010 let truncateFrame; 2011 function scheduleTruncate() { 2012 if (truncateFrame) { 2013 return; 2014 } 2015 truncateFrame = window.requestAnimationFrame(function () { 2016 truncateFrame = null; 2017 truncateMenu(); 2018 }); 2019 } 2020 scheduleTruncate(); 2021 if (window.ResizeObserver) { 2022 const resizeObserver = new ResizeObserver(scheduleTruncate); 2023 resizeObserver.observe($navbar[0]); 2024 } else { 2025 $(window).on('resize.lpui-auto-truncate', scheduleTruncate); 2026 } 2027 $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate); 2028 $(window).on('load.lpui-auto-truncate', scheduleTruncate); 2029 if (document.fonts && document.fonts.ready) { 2030 document.fonts.ready.then(scheduleTruncate); 2031 } 2032 } 2033 initAutoTruncateMenu(); 2034})('global-navbar'); 2035} catch(e) { 2036console.log(e); 2037} 2038 try { 2039(function init(sectionDomId, options) { 2040 var elementSelector = options.elementSelector || 'nav'; 2041 var element = document.querySelector(elementSelector); 2042 var sections = document.querySelectorAll('body > section'); 2043 var subNavContainers = element.querySelectorAll('.sub-nav'); 2044 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 2045 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 2046 var fontColor = options.fontColor || '#fff'; 2047 var fontColorScroll = options.fontColorScroll || '#000'; 2048 var didScroll = false; 2049 var lastScrollTop = 0; 2050 var delta = 5; 2051 2052 // eslint-disable-next-line sonarjs/no-collapsible-if 2053 if (wow) { 2054 // Wowjs might not trigger for position fixed elements 2055 if (window.scrollY > 0) { 2056 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 2057 } 2058 } 2059 function adjustNavPinState() { 2060 // Remove 'visible' class from all subNavContainers 2061 for (let i = 0; i < subNavContainers.length; i++) { 2062 subNavContainers[i].classList.remove('visible'); 2063 } 2064 if (window.scrollY > 0) { 2065 element.style.backgroundColor = backgroundColorScroll; 2066 element.style.color = fontColorScroll; 2067 element.classList.add('scroll'); 2068 } else {
2069 element.style.backgroundColor = initialBackgroundColor; 2070 element.style.color = fontColor; 2071 element.classList.remove('scroll'); 2072 } 2073 } 2074 adjustNavPinState(); 2075 function onScroll() { 2076 didScroll = true; 2077 } 2078 window.addEventListener('scroll', onScroll); 2079 2080 // eslint-disable-next-line 2081 var debounceInterval = setInterval(() => { 2082 if (didScroll) { 2083 // eslint-disable-next-line 2084 hasScrolled(); 2085 didScroll = false; 2086 } 2087 }, 250); 2088 function hasScrolled() { 2089 adjustNavPinState(); 2090 // eslint-disable-next-line 2091 var navbarHeight = element.offsetHeight; 2092 // eslint-disable-next-line 2093 var st = window.scrollY; 2094 2095 // Make sure they scroll more than delta 2096 if (Math.abs(lastScrollTop - st) <= delta) { 2097 return; 2098 } 2099 if (st > lastScrollTop && st > navbarHeight) { 2100 // Scroll Down 2101 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 2102 document.documentElement.style.setProperty('--global-header-height', '0px'); 2103 2104 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 2105 sections.forEach(section => { 2106 if (section.classList.contains('sticky')) { 2107 section.style.top = '0px'; 2108 } 2109 }); 2110 } else { 2111 // Scroll Up 2112 // eslint-disable-next-line 2113 if (st + window.innerHeight < document.documentElement.scrollHeight) { 2114 element.style.transform = `translateY(0) scaleY(1)`; 2115 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 2116 sections.forEach(section => { 2117 if (section.classList.contains('sticky')) { 2118 section.style.top = `${navbarHeight}px`; 2119 } 2120 }); 2121 } 2122 } 2123 lastScrollTop = st; 2124 } 2125})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}")); 2126} catch(e) { 2127console.log(e); 2128} 2129 try { 2130(function init(sectionDomId) { 2131 var sidemenu = $('#' + sectionDomId); 2132 sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () { 2133 window.lpUI.requestScrollLock(sectionDomId); 2134 }); 2135 $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () { 2136 window.lpUI.releaseScrollLock(sectionDomId); 2137 }); 2138 $(window).click(function (e) { 2139 let targetContactForm = $(e.target).closest('#modal-global-contact-us').length; 2140 let targetSideMenu = $(e.target).closest('.sidemenu').length; 2141 let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length; 2142 let targetHamburger = $(e.target).closest('.hamburger-component').length; 2143 if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { 2144 $('body').removeClass('locked'); 2145 $('.hamburger').removeClass('active'); 2146 $('.sidemenu').removeClass('visible'); 2147 $('#modal-global-contact-us').removeClass('visible'); 2148 } 2149 }); 2150})('global-sidemenu'); 2151} catch(e) { 2152console.log(e); 2153} 2154 2155 try { 2156(function init(footerId) { 2157 var textContent = $(".text_content_wrap p").text().trim().length; 2158 const socialLinks = $(`#${footerId} .lp-socials__link`); 2159 if (textContent < 1) { 2160 $(".text_content_wrap").remove(); 2161 $(".second_text_footer").css({ 2162 'margin-bottom': 0 2163 }); 2164 } 2165 if (socialLinks.length > 0) { 2166 socialLinks.attr('data-wow-offset', '10'); 2167 } 2168 if ($(window).width() > 1280) { 2169 let footer = document.querySelector("#" + footerId); 2170 let copyrightElem = footer.querySelector(".copy_zone"); 2171 if (copyrightElem) { 2172 copyrightElem.style.whiteSpace = "nowrap"; 2173 let nowrapElemWidth = copyrightElem.clientWidth; 2174 copyrightElem.style.whiteSpace = ""; 2175 let normalElemWidth = copyrightElem.clientWidth; 2176 if (nowrapElemWidth > normalElemWidth) { 2177 footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto"); 2178 } 2179 } 2180 } 2181 const form = $("#" + footerId).find("form"); 2182 const redirectLink = $('#' + footerId + ' .redirect-link'); 2183 form.on("reset", function () { 2184 redirectPage(redirectLink); 2185 }); 2186 function redirectPage(link) { 2187 if (link.length) { 2188 const rawHref = link.attr('href'); 2189 link.attr('href', setHttp(rawHref)); 2190 link[0].click(); 2191 } 2192 } 2193 function setHttp(link) { 2194 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2195 link = 'http://' + link; 2196 } 2197 return link; 2198 } 2199})('global-footer'); 2200} catch(e) { 2201console.log(e); 2202} 2203 2204 try { 2205(function init(sectionDomId) { 2206 var _section = $('#' + sectionDomId); 2207 var _footer = document.getElementById('global-footer'); 2208 const redirectLink = _section.find('.js-redirect-link'); 2209 function setHttp(link) { 2210 if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) { 2211 link = 'https://' + link; 2212 } 2213 return link; 2214 } 2215 function redirectPage(link) { 2216 if (link.length) { 2217 window.location.href = setHttp(link.attr('href')); 2218 } 2219 } 2220 const emailInput = _section.find('.js-email-input'); 2221 const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/; 2222 emailInput.on('input', function () { 2223 if (emailRegex.test(this.value)) { 2224 this.setCustomValidity(''); 2225 } else { 2226 this.setCustomValidity('Please enter a valid email address.'); 2227 } 2228 this.reportValidity(); 2229 }); 2230 _section.find('input[name="name"]').on("keyup", function () { 2231 if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") { 2232 this.setCustomValidity("Please input your first name and last name."); 2233 } else { 2234 this.setCustomValidity(""); 2235 } 2236 }); 2237 _section.find('form').on("reset", function () { 2238 $(this).addClass("show-success"); 2239 redirectPage(redirectLink); 2240 }); 2241 $(window).scroll(function () { 2242 if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible'); 2243 }); 2244 _section.find('.close-btn, .connect-btn').click(function () { 2245 _section.find('.pop-up').toggle(); 2246 _section.find('.btn-holder').toggle(); 2247 }); 2248 if (!_footer) return; 2249 const observer = new IntersectionObserver(entries => {
2250 entries.forEach(entry => { 2251 if (entry.isIntersecting) _section.hide();else _section.show(); 2252 }); 2253 }, { 2254 threshold: 0.1 2255 }); 2256 observer.observe(_footer); 2257 function selectToDropdown(selectItem) { 2258 let customDropdown = ` 2259 <div class="custom-select" role="presentation"> 2260 <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button> 2261 <div class="custom-select-menu" style="display: none;max-height: none;"> 2262 <div class="custom-select-content"> 2263 </div> 2264 </div> 2265 </div>`; 2266 $(customDropdown).insertAfter(selectItem); 2267 let $dropdown = $($(selectItem).next()); 2268 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 2269 let $dropdownMenu = $dropdown.find(".custom-select-menu"); 2270 let $dropdownContent = $dropdown.find(".custom-select-content"); 2271 $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select"); 2272 $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom"); 2273 $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id")); 2274 appendOptionButtons(selectItem, $dropdownContent); 2275 $(selectItem).removeClass().addClass("sr-only"); 2276 var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text(); 2277 $dropdownToggle.html(toggleText); 2278 $dropdown.on("click", ".custom-select-item", function (e) { 2279 if ($(this).hasClass("is-disabled")) return; 2280 let elementNumber = $(this).index(); 2281 let $originalSelect = $(this).closest(".custom-select").siblings("select"); 2282 let $linkedOption = $originalSelect.find("option").eq(elementNumber); 2283 if (!$linkedOption.prop("selected")) { 2284 $linkedOption.prop("selected", true); 2285 $originalSelect.change(); 2286 $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected"); 2287 $dropdownToggle.html($(this).html()); 2288 closeSelectMenu($(this).closest(".custom-select-menu")); 2289 } 2290 $dropdownToggle.removeClass("is-placeholder"); 2291 }); 2292 function convertOptionToButton(option) { 2293 var optionText = $(option).text(); 2294 var optionValue = $(option).attr("value") || $(option).text(); 2295 var optionIsDisabled = $(option).prop("disabled"); 2296 var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`; 2297 return outputButton; 2298 } 2299 function appendOptionButtons(selectItem, appendTarget) { 2300 $(selectItem).find("option").each(function () { 2301 let currentButton = convertOptionToButton(this); 2302 $(appendTarget).append(currentButton); 2303 }); 2304 } 2305 function showSelectMenu(selectMenu) { 2306 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2307 $(customSelect).addClass("open"); 2308 $(selectMenu).slideDown(); 2309 } 2310 function closeSelectMenu(selectMenu) { 2311 var customSelect = $(selectMenu).closest(".custom-select")[0]; 2312 $(customSelect).removeClass("open"); 2313 $(selectMenu).slideUp(); 2314 } 2315 $dropdown.on("click", ".custom-select-toggle", function (e) { 2316 var $customSelect = $(this).closest(".custom-select"); 2317 var selectMenu = $customSelect.find(".custom-select-menu")[0]; 2318 if ($customSelect.hasClass("open")) { 2319 closeSelectMenu(selectMenu); 2320 } else { 2321 showSelectMenu(selectMenu); 2322 } 2323 }); 2324 $(document).on("click", function (e) { 2325 if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) { 2326 $(".custom-select.open").each(function () { 2327 var selectMenu = $(this).find(".custom-select-menu")[0]; 2328 closeSelectMenu(selectMenu); 2329 }); 2330 } 2331 }); 2332 } 2333 $(".pop-up select[name='interest']").each(function () { 2334 selectToDropdown(this); 2335 }); 2336})('global-mobile-contact'); 2337} catch(e) { 2338console.log(e); 2339} 2340 2341 try { 2342(function init(sectionDomId, options) { 2343 let section = null; 2344 switch (sectionDomId) { 2345 case 'NAVBAR': 2346 section = document.querySelector('body > nav, #global-navbar'); 2347 break; 2348 case 'FOOTER': 2349 section = document.querySelector('body > footer, #global-footer'); 2350 break; 2351 case 'SIDEMENU': 2352 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 2353 break; 2354 case 'CONTACT':
2355 section = document.querySelector('#modal-global-contact-us'); 2356 break; 2357 case 'MOBILE_CONTACT': 2358 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 2359 break; 2360 case 'SUBSCRIBE': 2361 // Subscribe Not Implemented 2362 section = null; 2363 break; 2364 case 'ACCOUNT': 2365 // Account Not Implemented 2366 section = null; 2367 break; 2368 default: 2369 section = document.querySelector('#' + sectionDomId); 2370 } 2371 if (!section) { 2372 return; 2373 } 2374 2375 // Where content / items are rendered 2376 const dataContainer = section.querySelector('.data-container'); 2377 if (!dataContainer) { 2378 // no place to render items = no need to query server or do anything else 2379 return; 2380 } 2381 let variables = options.variables || {}; 2382 2383 // Some variables in options may not have been injected - remove 2384 Object.keys(variables).forEach(function (variableName) { 2385 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 2386 delete variables[variableName]; 2387 } 2388 }); 2389 2390 // Merge page query variables 2391 if (options.usePageResource) { 2392 variables = { 2393 ...variables, 2394 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 2395 }; 2396 } 2397 2398 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 2399 // resolve the flag â fetchData reads the section stamp, aux fetches read 2400 // their own resource's stamp (auxUsesRouter). 2401 function apiUrl(useRouter) { 2402 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 2403 } 2404 2405 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 2406 // (options.routerApiAux is stamped per aux resource server-side). 2407 function auxUsesRouter(resource) { 2408 return !!(options.routerApiAux && options.routerApiAux[resource]); 2409 } 2410 2411 // Pagination Executes on a Numbered Pagination Container 2412 // Or via a load more button 2413 let mode = 'BUTTONLESS_PAGINATION'; 2414 const container = section.querySelector('.pagination-container');
2415 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 2416 if (container) { 2417 mode = 'NUMBERED_PAGINATION'; 2418 } 2419 if (loadMoreButton) { 2420 mode = 'LOAD_MORE_BUTTON'; 2421 } 2422 let searchContainer = section.querySelector('.search-container'); 2423 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 2424 const eventPrefix = '__pagination-'; 2425 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 2426 param: 'neighborhoodId', 2427 urlKey: 'neighborhood' 2428 }, { 2429 param: 'search', 2430 urlKey: 'search' 2431 }, { 2432 param: 'salesPriceGTE', 2433 urlKey: 'pricemin', 2434 formKey: 'priceMin', 2435 type: 'int' 2436 }, { 2437 param: 'salesPriceLTE', 2438 urlKey: 'pricemax', 2439 formKey: 'priceMax', 2440 type: 'int' 2441 }, { 2442 param: 'livingSpaceSizeGTE', 2443 urlKey: 'areamin', 2444 formKey: 'areaMin', 2445 type: 'int' 2446 }, { 2447 param: 'livingSpaceSizeLTE', 2448 urlKey: 'areamax', 2449 formKey: 'areaMax', 2450 type: 'int' 2451 }] : []); 2452 2453 // Total entries - initialized in first render 2454 let totalNumber = 0; 2455 const DefaultSearchParams = { 2456 page: 1 2457 }; 2458 searchFormParams.forEach(function (formParam) { 2459 DefaultSearchParams[formParam.formKey || formParam.param] = null; 2460 }); 2461 let searchParams = { 2462 ...DefaultSearchParams 2463 }; 2464 const offset = options.variables?.offset || 0; 2465 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 2466 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 2467 2468 // entries of per page 2469 // when query variables for a given section would't be filled options.pageSize can store 2470 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 2471 let pageSize = parseInt(options.pageSize, 10) || 9; 2472 2473 // Adding mobile pageRange support 2474 var NARROW_BREAKPOINT = 600; 2475 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 2476 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 2477 2478 // Page range (pages on both sides of the current page) 2479 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 2480 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 2481 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 2482 2483 // Whether to display the 'Previous' button 2484 var showPrevious = true; 2485 2486 // Whether to display the 'Next' button 2487 var showNext = true; 2488 2489 // Whether to display the page buttons 2490 var showPageNumbers = true; 2491 2492 // 'Previous' text 2493 var prevText = options.prevText || '«'; 2494 2495 // 'Next' text 2496 var nextText = options.nextText || '»'; 2497 2498 // Ellipsis text 2499 var ellipsisText = '…'; 2500 var classPrefix = 'paginationjs'; 2501 2502 // Default active class 2503 var activeClassName = 'active'; 2504 2505 // Default disable class 2506 var disableClassName = 'disabled'; 2507 2508 // Pagination element's position in the container 2509 var position = 'bottom'; 2510 2511 // Whether to trigger pagination at initialization 2512 var triggerPagingOnInit = !options.skipInitialLoad; 2513 var showFirstOnEllipsisShow = true; 2514 var showLastOnEllipsisShow = true; 2515 2516 // Instantiated in init() 2517 var el = null; 2518 2519 // Controls scrollTop logic 2520 var firstRender = true; 2521 var renderBySearch = false; 2522 var disabled = false; 2523 2524 // Pagination script class selector 2525 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 2526 2527 // Property Specific Image Override if No Image 2528 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 2529 2530 // Construct template 2531 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 2532 var template = Handlebars.compile(templateHTML); 2533 2534 // Initialize 2535 init(); 2536 function init() { 2537 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 2538 2539 // Append/prepend pagination element to the pagination container 2540 if (mode === 'NUMBERED_PAGINATION') { 2541 el = document.createElement('div'); 2542 el.className = 'paginationjs';
2543 container[position === 'bottom' ? 'append' : 'prepend'](el); 2544 } 2545 if (searchContainer) { 2546 initSearchContainer({ 2547 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 2548 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 2549 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 2550 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 2551 }, function () { 2552 syncSearchFormState(searchParams); 2553 }); 2554 } 2555 2556 // Bind events 2557 observer(); 2558 } 2559 function syncSearchFormState(params) { 2560 searchContainer.dispatchEvent(new CustomEvent('sync', { 2561 detail: params 2562 })); 2563 } 2564 function initSearchContainer(options, done) { 2565 var promises = []; 2566 if (options.fetchNeighborhoods) { 2567 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 2568 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 2569 detail: { 2570 data: neighborhoods.map(function (item) { 2571 return { 2572 value: item.id, 2573 label: item.name 2574 }; 2575 }) 2576 } 2577 })); 2578 })); 2579 } 2580 if (options.fetchPostCategories) { 2581 promises.push(fetchPostCategories(function (categories) { 2582 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 2583 detail: { 2584 data: categories 2585 } 2586 })); 2587 })); 2588 } 2589 if (options.fetchOffices) { 2590 promises.push(fetchOffices(function (offices) { 2591 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 2592 detail: { 2593 data: offices 2594 } 2595 })); 2596 })); 2597 } 2598 if (options.fetchRentalRates) { 2599 promises.push(fetchAllRentalRates(function (rentalRates) { 2600 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 2601 detail: { 2602 data: rentalRates 2603 } 2604 })); 2605 })); 2606 } 2607 if (promises.length > 0) { 2608 Promise.all(promises).then(function () { 2609 done(); 2610 }); 2611 } else { 2612 // element's custom code is not executed yet, so we're scheduling callback to after element's code 2613 setTimeout(done); 2614 } 2615 } 2616 function fetchAllNeighborhoods(done) { 2617 var useRouter = auxUsesRouter('neighborhoods'); 2618 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 2619 // args on both APIs (the federated neighborhoods field accepts 2620 // withProperties/withBlogPosts); only the selection set differs. 2621 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') + '}}'; 2622 var payload = {}; 2623 payload.offset = 0; 2624 payload.limit = 100; 2625 payload.companyId = variables.companyId; 2626 if (options.resource === 'properties') { 2627 payload.withProperties = { 2628 active: true 2629 }; 2630 ['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) { 2631 if (variables[field] !== undefined && variables[field] !== null) { 2632 payload.withProperties[field] = variables[field]; 2633 } 2634 }); 2635 } 2636 if (options.resource === 'posts') { 2637 payload.withBlogPosts = { 2638 active: true 2639 }; 2640 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 2641 if (variables[field] !== undefined && variables[field] !== null) { 2642 payload.withBlogPosts[field] = variables[field]; 2643 } 2644 }); 2645 } 2646 2647 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2648 if (useRouter) { 2649 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 2650 } 2651 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2652 query: gqlQuery, 2653 variables: payload 2654 }).then(function (res) { 2655 var value = res.body.data && res.body.data.neighborhoods || {}; 2656 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2657 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2658 done(items, items.length); 2659 }); 2660 } 2661 function fetchPostCategories(done) { 2662 var featured = options.resource === 'posts' && !!variables.featured; 2663 var useRouter = auxUsesRouter('postCategories'); 2664 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2665 // selection set differs ({ items {...} } on the router). 2666 var selection = 'id, name, publishedCount, featuredPublishedCount'; 2667 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) + '}}'; 2668 var payload = {}; 2669 payload.offset = 0; 2670 payload.limit = 100; 2671 payload.companyId = variables.companyId; 2672 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2673 query: gqlQuery, 2674 variables: payload 2675 }).then(function (res) { 2676 var value = res.body.data && res.body.data.postCategories || {}; 2677 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2678 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2679 done(items.map(function (item) { 2680 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 2681 return item; 2682 }), items.length); 2683 }); 2684 } 2685 function fetchOffices(done) { 2686 var useRouter = auxUsesRouter('offices'); 2687 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 2688 // selection set differs ({ items {...} } on the router). 2689 var selection = 'id, name, tags'; 2690 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 2691 // APIs differ in more than the items wrapper: federated offices takes 2692 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 2693 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 + '}}'; 2694 var payload = { 2695 offset: 0, 2696 limit: 100, 2697 companyId: variables.companyId 2698 }; 2699 2700 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2701 if (useRouter) { 2702 payload = window.luxuryPresence.routerApi.transformVariables('office
2702s', payload); 2703 } 2704 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 2705 query: gqlQuery, 2706 variables: payload 2707 }).then(function (res) { 2708 var value = res.body.data && res.body.data.offices || {}; 2709 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2710 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 2711 done(items, items.length); 2712 }); 2713 } 2714 2715 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 2716 function fetchAllRentalRates(done) { 2717 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 2718 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 2719 var payload = { 2720 offset: 0, 2721 limit: 100, 2722 companyId: variables.companyId 2723 }; 2724 superagent.post(url + '/graphql').withCredentials().send({ 2725 query: gqlQuery, 2726 variables: payload 2727 }).then(function (res) { 2728 var items = res.body.data && res.body.data.rentalRates || []; 2729 done(items, items.length); 2730 }).catch(function (err) { 2731 console.error('Error fetching rental rates:', err); 2732 done([], 0); 2733 }); 2734 } 2735 function fetchData(params, done) { 2736 var resource = options.resource; 2737 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 2738 var payload = {}; 2739 try { 2740 payload = JSON.parse(JSON.stringify(variables)); 2741 } catch (e) { 2742 Object.keys(variables).forEach(function (variableName) { 2743 payload[variableName] = variables[variableName]; 2744 }); 2745 } 2746 payload.offset = (params.page - 1) * pageSize + offset; 2747 payload.limit = pageSize; 2748 payload.companyId = options.companyId; 2749 searchFormParams.forEach(function (formParam) { 2750 var val = params[formParam.formKey || formParam.param]; 2751 if (val !== null && val !== undefined) { 2752 objSet(payload, formParam.param, val); 2753 } 2754 }); 2755 2756 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2757 if (options.useRouterApi) { 2758 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 2759 } 2760 2761 // TODO: Disabled loading due to jarring effect 2762 // dataContainer.html('Loading...'); 2763 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 2764 query: gqlQuery, 2765 variables: payload 2766 }).then(function (res) { 2767 if (res.body.errors) { 2768 done(res.body.errors); 2769 return; 2770 } 2771 var data = res.body.data || {}; 2772 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 2773 var resources; 2774 var resourceCount; 2775 if (options.useRouterApi) { 2776 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 2777 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 2778 resourceCount = page.count; 2779 } else { 2780 resources = data[resource] || []; 2781 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 2782 } 2783 const finish = function (items) { 2784 if (resource === 'properties' && propertyPlaceholderImage?.id) { 2785 items = items.map(item => { 2786 if (item.media?.length === 0) { 2787 return Object.assign(item, { 2788 media: [propertyPlaceholderImage] 2789 }); 2790 } 2791 return item; 2792 }); 2793 } 2794 done(null, items, resourceCount); 2795 }; 2796 2797 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 2798 // disclaimers before rendering; older SDKs skip (keys stay unset). 2799 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 2800 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 2801 return; 2802 } 2803 finish(resources); 2804 }); 2805 } 2806 function getTotalPage() { 2807 return Math.ceil(totalNumber / pageSize); 2808 } 2809 function renderPaginationList() { 2810 var totalPages = getTotalPage(); 2811 var rangeStart = searchParams.page - pageRange; 2812 var rangeEnd = searchParams.page + pageRange; 2813 if (rangeEnd > totalPages) { 2814 rangeEnd = totalPages; 2815 rangeStart = totalPages - pageRange * 2; 2816 rangeStart = rangeStart < 1 ? 1 : rangeStart; 2817 } 2818 if (rangeStart <= 1) { 2819 rangeStart = 1; 2820 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 2821 } 2822 2823 // Making sure that 1 more page button is shown in edge positions 2824 if (pageRange === 0) { 2825 if (searchParams.page === totalPages) { 2826 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 2827 } 2828 if (searchParams.page === 1) { 2829 rangeEnd = Math.min(2, totalPages); 2830 } 2831 } 2832 2833 // Render pagination list 2834 if (mode === 'NUMBERED_PAGINATION') { 2835 el.innerHTML = generateHTML({ 2836 currentPage: searchParams.page, 2837 pageRange: pageRange, 2838 rangeStart: rangeStart, 2839 rangeEnd: rangeEnd 2840 }); 2841 if (totalPages < 2 && hidePaginationOnFirstPage) { 2842 container.style.display = 'none'; 2843 } else { 2844 container.style.display = ''; 2845 } 2846 } else if (mode === 'LOAD_MORE_BUTTON') { 2847 if (searchParams.page >= totalPages) {
2848 loadMoreButton.style.display = 'none'; 2849 } else { 2850 loadMoreButton.style.display = ''; 2851 } 2852 } 2853 } 2854 function render(data) { 2855 renderPaginationList(); 2856 2857 // Render new content with handlebars 2858 var html = ''; 2859 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 2860 // If using load more, append search results to existing results 2861 html = dataContainer.innerHTML; 2862 } 2863 for (var i = 0; i < data.length; i++) { 2864 var itemData = recursivelyParse(data[i]); 2865 itemData.sectionIndex = options.sectionIndex; 2866 itemData.renderOptions = options.renderOptions; 2867 html += template(itemData); 2868 } 2869 dataContainer.innerHTML = html; 2870 2871 // Scroll Top 2872 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 2873 // Only animate to the top if we replace dataContainer (numbered pagination) 2874 setTimeout(() => { 2875 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 2876 window.scrollTo({ 2877 top: scrollTargetOffsetTop, 2878 behavior: 'smooth' 2879 }); 2880 }, 250); 2881 } 2882 return true; 2883 } 2884 function generateHTML(args) { 2885 const totalPages = getTotalPage(); 2886 const { 2887 rangeStart, 2888 rangeEnd 2889 } = args; 2890 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 2891 ...searchParams, 2892 page 2893 }); 2894 let html = ''; 2895 if (showPrevious || showPageNumbers || showNext) { 2896 html += '<div class="paginationjs-pages"><ul>'; 2897 2898 // Previous button 2899 if (showPrevious) { 2900 if (searchParams.page <= 1) { 2901 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 2902 } else { 2903 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>`; 2904 } 2905 } 2906 2907 // Pages 2908 if (showPageNumbers) { 2909 if (rangeStart <= 3) { 2910 for (let i = 1; i < rangeStart; i++) { 2911 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>`; 2912 } 2913 } else { 2914 if (showFirstOnEllipsisShow) { 2915 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 2916 } 2917 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 2918 } 2919 for (let i = rangeStart; i <= rangeEnd; i++) { 2920 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>`; 2921 } 2922 if (rangeEnd < totalPages - 2) { 2923 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 2924 if (showLastOnEllipsisShow) { 2925 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 2926 } 2927 } else { 2928 for (let i = rangeEnd + 1; i <= totalPages; i++) { 2929 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 2930 } 2931 } 2932 } 2933 2934 // Next button 2935 if (showNext) { 2936 if (searchParams.page >= totalPages) { 2937 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 2938 } else { 2939 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>`; 2940 } 2941 } 2942 html += '</ul></div>'; 2943 } 2944 return html; 2945 } 2946 function go(newSearchParams, callback, restorationVisit) { 2947 if (disabled) return; 2948 var goToPageNumber = newSearchParams.page; 2949 2950 // Page number is out of bounds 2951 if (!goToPageNumber || goToPageNumber < 1) return; 2952 var totalPage = getTotalPage(); 2953 2954 // Page number is out of bounds 2955 if (!restorationVisit && totalNumber > 0) { 2956 if (goToPageNumber > totalPage) return; 2957 } 2958 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
2959 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 2960 ...newSearchParams, 2961 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 2962 }); 2963 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 2964 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 2965 queryString: true 2966 })); 2967 } 2968 } 2969 2970 // Fetch and update page 2971 fetchData(newSearchParams, renderWithData); 2972 disabled = true; 2973 function renderWithData(err, data, count) { 2974 if (err) { 2975 dataContainer.dispatchEvent(new Event('error')); 2976 } else { 2977 searchParams = { 2978 ...newSearchParams 2979 }; 2980 totalNumber = count - offset; 2981 if (data.length === 0) { 2982 dataContainer.dispatchEvent(new Event('no-data')); 2983 } else { 2984 dataContainer.dispatchEvent(new Event('data')); 2985 } 2986 render(data); 2987 firstRender = false; 2988 } 2989 disabled = false; 2990 renderBySearch = false; 2991 } 2992 } 2993 function areQueryParamsEqual(first, second) { 2994 var differ = Object.keys(first).find(function (key) { 2995 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 2996 }); 2997 if (differ) { 2998 return false; 2999 } 3000 differ = Object.keys(second).find(function (key) { 3001 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 3002 }); 3003 return !differ; 3004 } 3005 function next(callback) { 3006 go({ 3007 ...searchParams, 3008 page: searchParams.page + 1 3009 }, callback); 3010 } 3011 function previous(callback) { 3012 go({ 3013 ...searchParams, 3014 page: searchParams.page - 1 3015 }, callback); 3016 } 3017 function refresh(callback) { 3018 go(searchParams, callback); 3019 } 3020 function update(params, callback) { 3021 renderBySearch = true; 3022 go(params, callback); 3023 } 3024 function observer() { 3025 if (searchContainer) { 3026 searchContainer.addEventListener('search', function (event, newSearchParams) { 3027 newSearchParams = event.detail || newSearchParams; 3028 update({ 3029 ...searchParams, 3030 ...newSearchParams, 3031 page: 1 3032 }); 3033 }); 3034 searchContainer.addEventListener('clear-search', function () { 3035 const defaultSearchParams = { 3036 ...DefaultSearchParams 3037 }; 3038 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 3039 ...defaultSearchParams, 3040 page: null 3041 }, { 3042 ...searchParams, 3043 page: null 3044 }); 3045 3046 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 3047 // when search form have default state 3048 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 3049 return; 3050 } 3051 3052 // if someone initially go to some page and click 'Clear' on search from 3053 // we should't navigate to first page. We should preserve page value 3054 if (isCurrentSearchFormStateDefault) { 3055 defaultSearchParams.page = searchParams.page; 3056 } 3057 syncSearchFormState(defaultSearchParams); 3058 update(defaultSearchParams); 3059 }); 3060 } 3061 if (mode === 'LOAD_MORE_BUTTON') { 3062 loadMoreButton.addEventListener('click', function (event) { 3063 go({ 3064 ...searchParams, 3065 page: searchParams.page + 1 3066 }); 3067 return false; 3068 }); 3069 } 3070 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 3071 // Do initial render 3072 go(Object.assign({}, searchParams, { 3073 page: 1 3074 })); 3075 return; 3076 } 3077 if (mode === 'NUMBERED_PAGINATION') { 3078 // Go to specified page number 3079 container.addEventListener(eventPrefix + 'go', function (event) { 3080 let { 3081 pageNumber, 3082 done 3083 } = event.detail || {}; 3084 pageNumber = parseInt(pageNumber, 10); 3085 if (!pageNumber) { 3086 return; 3087 } 3088 go({ 3089 ...searchParams, 3090 page: pageNumber 3091 }, done); 3092 }); 3093 3094 // Page number button click 3095 el.addEventListener('click', function (event) { 3096 let clickTarget = event.target; 3097 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 3098 let pageNumber = current?.getAttribute('data-num'); 3099 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 3100 return; 3101 } else { 3102 go({ 3103 ...searchParams, 3104 page: parseInt(pageNumber, 10) 3105 }); 3106 } 3107 event.preventDefault(); 3108 }); 3109 3110 // Whether to load the default page 3111 var defaultPageNumber = searchParams.page; 3112 if (triggerPagingOnInit) {
3113 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 3114 detail: { 3115 pageNumber: defaultPageNumber 3116 } 3117 })); 3118 } 3119 } 3120 window.addEventListener('popstate', function (event) { 3121 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3122 if (!areQueryParamsEqual(newParams, searchParams)) { 3123 go(newParams, null, true); 3124 if (searchContainer) { 3125 syncSearchFormState(newParams); 3126 } 3127 } 3128 }); 3129 } 3130 function replaceVariables(template, variables) { 3131 var formattedString; 3132 for (var key in variables) { 3133 var value = variables[key]; 3134 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 3135 formattedString = (formattedString || template).replace(regexp, value); 3136 } 3137 return formattedString; 3138 } 3139 function isTextEditorValue(obj) { 3140 return 'raw' in obj || 'gjs' in obj; 3141 } 3142 function getTextEditorValue(obj) { 3143 if (!obj.html) { 3144 return ''; 3145 } 3146 var data = obj.html; 3147 var css = (obj.raw || obj.gjs || {}).css; 3148 if (css) { 3149 data = data + '<style>' + css + '</style>'; 3150 } 3151 return data; 3152 } 3153 3154 /** 3155 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 3156 * strips out raw proprties and returns only HTML if it exists. 3157 * @param {Object} resources a collection retrieved from the database 3158 * @return {Object} the newly modified object. 3159 */ 3160 function recursivelyParse(resources) { 3161 forEach(resources, function (value, key) { 3162 if (!value) { 3163 return; 3164 } 3165 if (value instanceof Object) { 3166 if (isTextEditorValue(value)) { 3167 resources[key] = getTextEditorValue(value); 3168 return; 3169 } else { 3170 return recursivelyParse(value); 3171 } 3172 } 3173 try { 3174 var parsedData = JSON.parse(value); 3175 if (isTextEditorValue(parsedData)) { 3176 resources[key] = getTextEditorValue(parsedData); 3177 } 3178 } catch (e) { 3179 // do nothing if we failed to parse value as JSON 3180 } 3181 }); 3182 return resources; 3183 } 3184 function forEach(collection, iteratee) { 3185 var func = Array.isArray(collection) ? arrayEach : baseFor; 3186 return func(collection, iteratee); 3187 } 3188 function baseFor(object, iteratee) { 3189 if (!object) { 3190 return; 3191 } 3192 var iterable = Object(object); 3193 var props = Object.keys(object); 3194 var length = props.length; 3195 var index = -1; 3196 while (length--) { 3197 var key = props[++index]; 3198 if (iteratee(iterable[key], key, iterable) === false) { 3199 break; 3200 } 3201 } 3202 return object; 3203 } 3204 function objSet(obj, path, value) { 3205 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 3206 pathArray.reduce((acc, key, i) => { 3207 if (acc[key] === undefined) acc[key] = {}; 3208 if (i === pathArray.length - 1) acc[key] = value; 3209 return acc[key]; 3210 }, obj); 3211 } 3212 function arrayEach(array, iteratee) { 3213 var index = -1; 3214 var length = array.length; 3215 while (++index < length) { 3216 if (iteratee(array[index], index, array) === false) { 3217 break; 3218 } 3219 } 3220 return array; 3221 } 3222 function selectPageRangeMode(e) { 3223 pageRange = e.matches ? mobilePageRange : desktopPageRange; 3224 renderPaginationList(); 3225 } 3226 paginationMql.addEventListener('change', selectPageRangeMode); 3227})('section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64', JSON.parse("{\"pageSize\":\"6\",\"resource\":\"posts\",\"pageRange\":0,\"variables\":{\"limit\":6,\"order\":\"publishedAt\",\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"43b40804-f64c-4ba1-8c4a-829d577aef20\",\"categoryId\":\"{{pageElement.categoryId}}\"},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"categoryIds\",\"urlKey\":\"category\"}],\"skipScrollOnSearch\":true,\"scrollTargetSelector\":\".blog-list__container\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"43b40804-f64c-4ba1-8c4a-829d577aef20\",\"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}}")); 3228} catch(e) { 3229console.log(e); 3230} 3231 try { 3232(function init(sectionDomId) { 3233 const section = $(`#${sectionDomId}`); 3234 const searchInput = section.find('.js-search-input'); 3235 const searchContainer = section.find('.search-container'); 3236 const dataContainer = section.find('.data-container'); 3237 const categoryFilter = section.find('.js-category-filter'); 3238 const btnCategory = section.find('.js-btn-category'); 3239 let activeFilters = null; 3240 if (searchContainer.length === 0) return; 3241 const { 3242 debounce 3243 } = window.luxuryPresence; 3244 const emptyResultsText = section.find('.empty-results'); 3245 searchInput.on('input', debounce(doSearch, 700)); 3246 dataContainer.on('data', function () { 3247 emptyResultsText.removeClass("visible"); 3248 }); 3249 dataContainer.on('no-data', function () { 3250 emptyResultsText.addClass("visible"); 3251 }); 3252 btnCategory.click(function () { 3253 $(this).toggleClass('active'); 3254 categoryFilter.slideToggle(); 3255 }); 3256 function doSearch() { 3257 let values = categoryFilter.find('.active').map(function () { 3258 return $(this).data('value'); 3259 }).get(); 3260 const params = { 3261 categoryIds: values || null, 3262 search: searchInput.val().trim() || null 3263 }; 3264 searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 3265 detail: params 3266 })); 3267 } 3268 categoryFilter.on('click', '.category-cell', function () { 3269 if ($(this).hasClass('js-category-all')) { 3270 section.find('.category-cell').removeClass('active'); 3271 $(this).addClass('active'); 3272 } else { 3273 $(this).toggleClass('active'); 3274 section.find('.js-category-all').removeClass('active'); 3275 } 3276 doSearch(); 3277 }); 3278 searchContainer.on('post-categories-data', function (ev, category) { 3279 category = ev.detail || category; 3280 categoryFilter.find('.js-category-cell').remove(); 3281 categoryFilter.find('.active').removeClass('active'); 3282 let btnClass = categoryFilter.data('button-style'); 3283 if (Array.isArray(category.data) && category.data.length) { 3284 btnCategory.css('display', 'inline-flex'); 3285 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')); 3286 } else { 3287 btnCategory.remove(); 3288 } 3289 setActiveFilters(); 3290 }); 3291 searchContainer.on('sync', function (event, params) { 3292 params = event.detail || params; 3293 activeFilters = params; 3294 setActiveFilters(); 3295 }); 3296 function setActiveFilters() { 3297 categoryFilter.find('.active').removeClass('active'); 3298 if (activeFilters.categoryIds !== null && activeFilters.categoryIds.length > 0) { 3299 activeFilters.categoryIds.forEach(function (categoryId) { 3300 categoryFilter.find(`#filter-${categoryId}`).addClass('active'); 3301 }); 3302 } else { 3303 categoryFilter.find('.js-category-all').addClass('active'); 3304 } 3305 } 3306})('section-fab6e5e2-fc2e-44c0-b05b-d04c8ea16f64', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"companyId\":\"43b40804-f64c-4ba1-8c4a-829d577aef20\",\"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}}")); 3307} catch(e) { 3308console.log(e); 3309} 3310 try { 3311(function init(sectionDomId) { 3312 var $contactForm = $('#' + sectionDomId + ' .newsletter-signup__form'); 3313 $contactForm.find('.contact-form__reset').click(function (e) { 3314 e.preventDefault(); 3315 $(this).closest('form').removeClass('success').trigger("reset"); 3316 }); 3317 $contactForm.find('input[name="name"]').on("keyup", function () { 3318 if (this.value.replaceAll(/\d/g, "").trim() === "") { 3319 this.setCustomValidity("Please enter your name."); 3320 } else { 3321 this.setCustomValidity(""); 3322 } 3323 }); 3324 const form = $("#" + sectionDomId).find("form"); 3325 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 3326 form.on("reset", function () { 3327 redirectPage(redirectLink); 3328 }); 3329 function redirectPage(link) { 3330 if (link.length) { 3331 const rawHref = link.attr('href'); 3332 link.attr('href', setHttp(rawHref)); 3333 link[0].click(); 3334 } 3335 } 3336 function setHttp(link) { 3337 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 3338 link = 'http://' + link; 3339 } 3340 return link; 3341 } 3342})('section-afb04b8f-63cf-43a8-bf2b-5bd500e96dd3', 'undefined'); 3343} catch(e) { 3344console.log(e); 3345} 3346 try { 3347(function init(sectionDomId) { 3348 const $section = $('#' + sectionDomId); 3349 if ($section.find('.parallax').length) $section.addClass('parallax-enabled'); 3350 if ($section.find('.video-wrapper').length) $section.addClass('video'); 3351})('section-d7116ef0-def3-456f-bf36-0a382985307f', 'undefined'); 3352} catch(e) { 3353console.log(e); 3354} 3355 try { 3356(function init(sectionDomId, options) { 3357 let section = null; 3358 switch (sectionDomId) { 3359 case 'NAVBAR': 3360 section = document.querySelector('body > nav, #global-navbar'); 3361 break; 3362 case 'FOOTER': 3363 section = document.querySelector('body > footer, #global-footer'); 3364 break; 3365 case 'SIDEMENU': 3366 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3367 break; 3368 case 'CONTACT':
3369 section = document.querySelector('#modal-global-contact-us'); 3370 break; 3371 case 'MOBILE_CONTACT': 3372 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3373 break; 3374 case 'SUBSCRIBE': 3375 // Subscribe Not Implemented 3376 section = null; 3377 break; 3378 case 'ACCOUNT': 3379 // Account Not Implemented 3380 section = null; 3381 break; 3382 default: 3383 section = document.querySelector('#' + sectionDomId); 3384 } 3385 if (!section) { 3386 return; 3387 } 3388 var url = window.luxuryPresence.defaults.routerUrl; 3389 var companyId = window.luxuryPresence.defaults.companyId; 3390 var limit = options.limit || 8; 3391 if (typeof limit === 'string') { 3392 limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected 3393 } 3394 var templateSelector = options.templateSelector || '.jsIGTemplate'; 3395 var containerSelector = options.containerSelector || '.jsIGContainer'; 3396 var hasDataClass = options.hasDataClass || 'has-data'; 3397 var hideActivateMessage = options.hasDataClass || false; 3398 var payload = { 3399 companyId: companyId, 3400 limit: limit 3401 }; 3402 if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) { 3403 payload.resourceId = options.resourceId; 3404 // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase 3405 payload.resource = String(options.resource || 'agent').toUpperCase(); 3406 payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true; 3407 } 3408 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'; 3409 var templateHTML = section.querySelector(templateSelector)?.innerHTML || ''; 3410 var template = Handlebars.compile(templateHTML); 3411 var container = section.querySelector(containerSelector); 3412 if (options.variables) { 3413 Object.keys(options.variables).forEach(function (key) { 3414 if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) { 3415 payload[key] = options.variables[key]; 3416 } 3417 }); 3418 } 3419 function getData() { 3420 var feed = { 3421 error: true 3422 }; 3423 if (payload.companyId == null || payload.companyId === '') { 3424 // instagramContentFeed requires companyId (ID!) â nothing to fetch without it. 3425 // Checked after the options.variables merge, which may override the default. 3426 // Deferred so element listeners (attached after this template runs) still receive it. 3427 setTimeout(function () { 3428 section.dispatchEvent(new CustomEvent('ig-data', { 3429 detail: feed 3430 })); 3431 }, 0); 3432 return; 3433 } 3434 superagent.post(url + '/graphql').send({ 3435 query: query, 3436 variables: payload 3437 }).then(res => { 3438 try { 3439 if (!res.body.errors) { 3440 feed = res.body.data.instagramContentFeed; 3441 if (!feed.active) { 3442 if (!hideActivateMessage && sectionDomId === 'section-temp' && container) { 3443 if (payload.resourceId) { 3444 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>'; 3445 } else { 3446 container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>'; 3447 } 3448 } 3449 } else { 3450 if (feed.items.length) { 3451 if (hasDataClass) { 3452 section.classList.add(hasDataClass); 3453 } 3454 const feedName = feed.username; 3455 section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl)); 3456 section.querySelectorAll('.jsIGName').forEach(name => { 3457 name.textContent = '@' + feedName; 3458 name.setAttribute('title', '@' + feedName); 3459 }); 3460 if (container && template) { 3461 container.innerHTML = template(feed); 3462 } 3463 } 3464 } 3465 } 3466 } catch (e) {} 3467 section.dispatchEvent(new CustomEvent('ig-data', { 3468 detail: feed 3469 })); 3470 }).catch(e => { 3471 console.log('err', e); 3472 section.dispatchEvent(new CustomEvent('ig-data', { 3473 detail: feed 3474 })); 3475 }); 3476 } 3477 getData(); 3478})('section-eb4bcd51-4337-41ff-a093-12d135fb4a22', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"43b40804-f64c-4ba1-8c4a-829d577aef20\",\"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}}")); 3479} catch(e) { 3480console.log(e); 3481} 3482 try { 3483(function init(sectionDomId) { 3484 const $section = $('#' + sectionDomId); 3485 var templateHTML = $section.find('.jsIGItem').html(); 3486 var itemTemplate = templateHTML && Handlebars.compile(templateHTML); 3487 const $container = $section.find('.ig-feed-feed'); 3488 const $topPrev = $section.find('.top-nav-prev'); 3489 const $topNext = $section.find('.top-nav-next'); 3490 const $bottomPrev = $section.find('.bottom-nav-prev'); 3491 const $bottomNext = $section.find('.bottom-nav-next'); 3492 let limit = 33; 3493 try { 3494 limit = parseInt($container[0].dataset['limit']); 3495 } catch (e) {} 3496 if (!limit) { 3497 limit = 33; 3498 } 3499 let igFeed = {}; 3500 let usedWidth = 0; 3501 let slider = null; 3502 $section.on('ig-data', function (ev, feed) { 3503 feed = ev.detail || feed; 3504 igFeed = feed; 3505 if (feed.active && feed.items.length) { 3506 buildSlider(); 3507 } 3508 }); 3509 $(window).on('resize.lpui-auto-clean', onResize); 3510 let timer = null; 3511 function onResize() { 3512 clearTimeout(timer); 3513 timer = window.setTimeout(buildSlider, 50); 3514 } 3515 function getLayout(w, n) { 3516 if (w > 1100) { 3517 if (n > 7) { 3518 return { 3519 type: 'type1', 3520 single: 1, 3521 multi: n, 3522 slides: 3, 3523 slider: n > 9 3524 }; 3525 } 3526 if (n > 5) { 3527 return { 3528 type: 'type1', 3529 single: 2, 3530 multi: n, 3531 slides: 3, 3532 slider: false 3533 }; 3534 } 3535 return { 3536 type: 'type1', 3537 single: n, 3538 multi: n, 3539 slides: 3, 3540 slider: n > 3 3541 }; 3542 } else if (w > 880) { 3543 if (n > 4) { 3544 return { 3545 type: 'type2', 3546 single: 1, 3547 multi: n, 3548 slides: 2.5, 3549 slider: n > 7 3550 }; 3551 } 3552 return { 3553 type: 'type1', 3554 single: n, 3555 multi: n, 3556 slides: 3, 3557 slider: n > 3 3558 }; 3559 } else if (w > 767) { 3560 if (n > 4) { 3561 return { 3562 type: 'type3', 3563 single: 1, 3564 multi: n, 3565 slides: 2, 3566 slider: n > 5 3567 }; 3568 } 3569 return { 3570 type: 'type4', 3571 single: n, 3572 multi: n, 3573 slides: 2, 3574 slider: n > 2 3575 }; 3576 } else if (w > 460) { 3577 return { 3578 type: 'type4', 3579 single: n, 3580 multi: n, 3581 slides: 2, 3582 slider: n > 2 3583 }; 3584 } 3585 return { 3586 type: 'type5', 3587 single: n, 3588 multi: n, 3589 slides: 1, 3590 slider: n > 1 3591 }; 3592 } 3593 function ensureClass($el, className) { 3594 if ($el.hasClass(className)) { 3595 return; 3596 } 3597 $el.addClass(className); 3598 } 3599 function makeSquare($el) { 3600 const el = $el[0]; 3601 el.style.width = ''; 3602 el.style.height = ''; 3603 const rect = el.getBoundingClientRect(); 3604 if (rect.width !== rect.height) { 3605 el.style.width = rect.height + 'px'; 3606 } 3607 } 3608 function buildSlider() { 3609 const cWidth = $container[0].getBoundingClientRect().width; 3610 if (cWidth === usedWidth) { 3611 return; 3612 } 3613 $container.empty();
3614 slider = $('<div class="ig-feed-slider"></div>'); 3615 const items = igFeed.items.slice(0, limit); 3616 const layout = getLayout(cWidth, items.length); 3617 let i = 0; 3618 let slide = null; 3619 while (i < layout.single) { 3620 slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider); 3621 i++; 3622 } 3623 while (i < layout.multi) { 3624 slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider); 3625 let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide); 3626 const lim = i + 4; 3627 while (i < lim && i < layout.multi) { 3628 slideContent.append(itemTemplate(items[i])); 3629 i++; 3630 } 3631 } 3632 $container.append(slider); 3633 if (layout.slider) { 3634 $topPrev.removeClass('hidden-control'); 3635 $topNext.removeClass('hidden-control'); 3636 $bottomPrev.removeClass('hidden-control'); 3637 $bottomNext.removeClass('hidden-control'); 3638 let prev, next; 3639 if ($bottomPrev.parent()[0].getBoundingClientRect().width) { 3640 prev = $bottomPrev; 3641 next = $bottomNext; 3642 } else { 3643 prev = $topPrev; 3644 next = $topNext; 3645 makeSquare($topPrev); 3646 makeSquare($topNext); 3647 } 3648 slider.children().each(function () { 3649 this.style.width = this.getBoundingClientRect().width + 'px'; 3650 }); 3651 slider.slick({ 3652 dots: false, 3653 prevArrow: prev, 3654 nextArrow: next, 3655 slidesToScroll: 1, 3656 infinite: false, 3657 slidesToShow: layout.slides 3658 }); 3659 } else { 3660 ensureClass($topPrev, 'hidden-control'); 3661 ensureClass($topNext, 'hidden-control'); 3662 ensureClass($bottomPrev, 'hidden-control'); 3663 ensureClass($bottomNext, 'hidden-control'); 3664 } 3665 } 3666})('section-eb4bcd51-4337-41ff-a093-12d135fb4a22', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"companyId\":\"43b40804-f64c-4ba1-8c4a-829d577aef20\",\"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}}")); 3667} catch(e) { 3668console.log(e); 3669} 3670 3671 var { body } = document; 3672 var globalNav = body.querySelector(':scope > nav'); 3673 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 3674 3675 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 3676 modalCloseBtn.addEventListener('click', function() { 3677 window.lpUI.hideClosestModal(modalCloseBtn); 3678 }); 3679 }); 3680 3681 window.addEventListener('click', function() { 3682 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 3683 sharedPopup.style.display = 'none' ; 3684 }); 3685 }); 3686 3687 /* Misc Partials / Addons */ 3688 function initWOW() { 3689 if (wow) { 3690 wow.init(); 3691 wow.scrollHandler(); 3692 setTimeout(function () { 3693 const wowHideStyle = document.getElementById('wow-hide-elements'); 3694 if(wowHideStyle) { 3695 wowHideStyle.disabled = true; 3696 } 3697 }, 1); 3698 } 3699 } 3700 3701 const wowHideElements = document.getElementById('wow-hide-elements'); 3702 if (wowHideElements) { 3703 wowHideElements.disabled = false; 3704 } 3705 3706 initWOW(); 3707 3708 /* Generic Navbar Handling */ 3709 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 3710 hamburgerComponent.addEventListener('click', function() { 3711 window.lpUI.sideMenuToggle(); 3712 }); 3713 }); 3714 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 3715 toggleEl.addEventListener('click', function() { 3716 window.lpUI.sideMenuToggle(); 3717 }); 3718 }); 3719 3720 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 3721 linkEl.addEventListener('click', function(e) { 3722 e.preventDefault(); 3723 e.stopPropagation();
3724 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 3725 if (subNav && subNav.classList.contains('visible')){ 3726 subNav.classList.remove('visible'); 3727 } else { 3728 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 3729 globalSubNav.classList.remove('visible'); 3730 }); 3731 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 3732 sideMenuSubNav.classList.remove('visible'); 3733 }); 3734 subNav?.classList.add('visible'); 3735 } 3736 }); 3737 }); 3738 window.addEventListener('click', function() { 3739 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 3740 subNavEl.classList.remove('visible'); 3741 }); 3742 }); 3743 3744 } 3745 3746 document.addEventListener('DOMContentLoaded', lpGlobalInit); 3747 3748 </script>
3748 3749 3750
3750<script type="module"> 3751 function selectorExists(selector) { 3752 return document.querySelector(selector) !== null; 3753 } 3754 3755 // Function to initialize the third-party library 3756 function initParoller(selector = '.my-paroller') { 3757 var $parollerElements = $(selector); 3758 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 3759 $parollerElements.paroller(); 3760 } 3761 } 3762 3763 const parollerSelector = '.my-paroller'; 3764 3765 if (selectorExists(parollerSelector)) { 3766 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 3767 initParoller(parollerSelector); 3768 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 3769 }); 3770 } 3771 </script>
3771 3772 3773 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 3773-3774
3773 3774 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3774GTM-T9SFQGHZ
vendor: 107 bytes, lines 3774-3776
3774" 3775 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 3776
3776<!-- End Google Tag Manager --> 3777 3778
3778<script 3779 src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js" 3780 data-website-id="42744f60-1a03-40b4-89f8-9a0aacb720aa" 3781 3782 defer></script>
vendor: 1 bytes, line 3782
3782
3783<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:'a4604245cf909592',t:'MTc5MTI0MzQ5NQ=='};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>
3783<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>
3783 3784</body> 3785</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.