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>Meet Our Team at Christie's International Costa Rica Resort & Estate Properties</title> 10 <meta property="og:title" content="Meet Our Team at Christie's International Costa Rica Resort & Estate Properties"> 11 <meta name="twitter:title" content="Meet Our Team at Christie's International Costa Rica Resort & Estate Properties"> 12 <meta name="description" content="Costa Rica Resort & Estate Properties offers buyers & sellers access to a prestigious portfolio of luxury properties and real estate across Costa Rica."> 13 <meta property="og:description" content="Costa Rica Resort & Estate Properties offers buyers & sellers access to a prestigious portfolio of luxury properties and real estate across Costa Rica."> 14 <meta name="twitter:description" content="Costa Rica Resort & Estate Properties offers buyers & sellers access to a prestigious portfolio of luxury properties and real estate across Costa Rica."> 15 <meta property="og:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/556da1d9-7616-4de7-b981-0461c75f4e0e"> 16 <meta name="twitter:image" content="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/556da1d9-7616-4de7-b981-0461c75f4e0e"> 17 <meta property="og:url" content="https://costaricachristiesrealestate.com/about-us"> 18 <link rel="canonical" href="https://costaricachristiesrealestate.com/about-us"> 19
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Playfair%20Display:400,500,600,700,800,900,400i,500i,600i,700i,800i,900i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open%20Sans:300,400,500,600,700,800,300i,400i,500i,600i,700i,800i"> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:'Playfair Display',serif;--global-primary-font-family-short:Playfair Display;--global-secondary-font-family:'Open Sans',sans-serif;--global-secondary-font-family-short:Open Sans;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:64px;--global-h2-font-size:43px;--global-h3-font-size:30px;--global-h4-font-size:21px;--global-h5-font-size:17px;--global-h6-font-size:16px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:'Open Sans',sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:'Playfair Display',serif;}h1{font-size:64px;}h2{font-size:43px;}h3{font-size:30px;}h4{font-size:21px;}h5{font-size:17px;}h6{font-size:16px;}</style> 30 <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/producer/index.css" /> 31 <style id="website-css">.lp-btn,.redesign .lp-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;}#modal-global-contact-us .redesign .link:after{background-color:#fff;}@media only screen and (max-width: 768px){#modal-global-contact-us>div>div>div>div.section-details>h2{margin-top:40px;}}body>div.mobile-contact-wrapper .mobile-contact{z-index:9999!important;}h1{letter-spacing:2px;font-weight:200!important;}.lp-h1{letter-spacing:2px;font-weight:200!important;}h2{letter-spacing:2px;font-weight:200!important;}h3{letter-spacing:2px;font-weight:200!important;}h4{letter-spacing:2px;font-weight:200!important;}@media only screen and (max-width: 768px){h2{font-size:32px;}}h3{letter-spacing:2px;}h4{letter-spacing:2px;}#global-sidemenu a.sidebar__nav-link{font-weight:300;letter-spacing:2px;}#global-sidemenu a.sidebar__subnav-link{font-weight:300;letter-spacing:2px;}#global-sidemenu button.sidebar__nav-link{font-weight:300;letter-spacing:2px;}footer#global-footer .footer .info-privacy .powered_zone a{-webkit-transition:color .5s;transition:color .5s;}footer#global-footer .footer .info-privacy .powered_zone a:after{width:0;}footer#global-footer .footer .info-privacy .powered_zone a:hover:after{width:100%;}footer#global-footer .footer .info-privacy .powered_zone a:before{content:"";position:absolute;display:block;width:100%;opacity:0.3;height:1px;-webkit-transition:0.3s linear;transition:0.3s linear;background:currentColor;bottom:0;left:0;}.grey-text.hyperlink-style-1:before{content:"";position:absolute;display:block;width:100%;opacity:0.3;height:1px;-webkit-transition:0.3s linear;-webkit-transition:0.3s linear;transition:0.3s linear;background:currentColor;bottom:0;left:0;}#global-footer>div>div>div.info-privacy>div>div.form-col.form-col--copyright>div>a:hover{outline-width:0;}#global-footer>div>div>div.info-privacy>div>div.form-col.form-col--copyright>div>a:before{content:"";position:absolute;display:block;width:0;height:1px;-webkit-transition:0.3s linear;transition:0.3s linear;background:currentColor;bottom:0;left:0;}#global-footer>div>div>div.info-privacy>div>div.form-col.form-col--copyright>div>a:before{width:100%;opacity:0.3;}#global-navbar.scroll{background-color:#333B3E!important;}#global-navbar .header .logo{max-width:450px;max-height:45px;}#global-navbar .header .logo__img{max-height:45px;}.navigation__link{font-weight:300!important;}.sub-nav__link{font-weight:300!important;}a.nav-link.sub-nav__link.feature span{text-wrap:auto;}nav .header div.navigation .sub-nav ul{background-color:#333B3E;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{background-color:#ffffff!important;}nav#global-navbar.scroll .navigation__link span:hover{color:#ffffff;}footer .footer .info-privacy{border-top-color:#d9d9d9!important;}div#modal-global-contact-us .contact-form .section-message form{max-width:49
310px;}@media only screen and (max-width:1080px){div#modal-global-contact-us .contact-form h2{font-size:37px;}}@media only screen and (max-width:925px){div#modal-global-contact-us .contact-form h2{font-size:25px;}}div#modal-global-contact-us .close{top:7vh;}#modal-global-contact-us .contact-form div.info-zone h4{max-width:430px;}@media (max-width: 768px){#global-footer .footer .info-wrap .agent_box .type_user{margin-bottom:21px;}}@media (min-width: 1201px){#global-footer .footer .info-wrap .type_user{margin-bottom:45px;}}body>div.mobile-contact-wrapper .mobile-contact a i{color:#333B3E!important;}body>div.mobile-contact-wrapper .mobile-contact a{border-color:#333B3E!important;border-width:1px;}#modal-global-contact-us .contact-form .info-zone .type_user,#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:21px!important;}footer .info-wrap-contact_zone:nth-child(2) .contact_title{font-size:0;letter-spacing:0;}footer .info-wrap-contact_zone:nth-child(2) .contact_title:after{content:"US Toll-Free";font-size:14px;line-height:1;letter-spacing:1.5px;}#modal-global-contact-us .contact-form .info-zone .info-zone_contact:nth-child(1) .info-zone_contact_cell:nth-child(2) .contact_title{font-size:0;letter-spacing:0;}#modal-global-contact-us .contact-form .info-zone .info-zone_contact:nth-child(1) .info-zone_contact_cell:nth-child(2) .contact_title:after{content:"Office Number";font-size:14px;line-height:1;letter-spacing:1.5px;}#modal-global-contact-us .contact-form .info-zone .info-zone_contact:nth-child(2) .info-zone_contact_cell:nth-child(1) .contact_title{font-size:0;letter-spacing:0;}#modal-global-contact-us .contact-form .info-zone .info-zone_contact:nth-child(2) .info-zone_contact_cell:nth-child(1) .contact_title:after{content:"US Toll-Free";font-size:14px;line-height:1;letter-spacing:1.5px;}#global-navbar .header .logo{max-width:450px;max-height:65px;}#global-navbar .header .logo__img{max-height:65px;}div.modal-content .custom-form{color:#ffffff;}div.modal-content .custom-form .custom-form__footer{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}div.modal-content .custom-form .custom-form__footer button.lp-btn{font-size:0;}div.modal-content .custom-form .custom-form__footer button.lp-btn:before{content:'Contact us to discuss';font-size:14px;}:root{--global-secondary-font-family:"Gilroy",sans-serif!important;--global-secondary-font-family-short:Gilroy!important;}</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css"> 34 #section-18cb4642-bdff-4d78-8535-397b1256e3eb{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/556da1d9-7616-4de7-b981-0461c75f4e0e');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:600px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro .container{z-index:1;text-align:center;max-width:900px;}#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro__title{margin-bottom:0px;font-weight:400;margin-bottom:24px;}@media (max-width: 768px){#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro__title{font-size:32px;}}@media (max-width: 360px){#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro__title{font-size:22px;}}#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro__subtitle{font-weight:400;white-space:pre-line;font-size:21px;line-height:1.57;}@media (max-width: 768px){#section-18cb4642-bdff-4d78-8535-397b1256e3eb .custom-intro__subtitle{font-size:18px;}}#section-18cb4642-bdff-4d78-8535-397b1256e3eb .description{margin-bottom:15px;}@media (min-width: 960px) and (orientation: landscape){#section-18cb4642-bdff-4d78-8535-397b1256e3eb{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/556da1d9-7616-4de7-b981-0461c75f4e0e');}}@media (min-width: 1280px) and (orientation: landscape){#section-18cb4642-bdff-4d78-8535-397b1256e3eb{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/556da1d9-7616-4de7-b981-0461c75f4e0e');}}@media (min-width: 1920px) and (orientation: landscape){#section-18cb4642-bdff-4d78-8535-397b1256e3eb{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/556da1d9-7616-4de7-b981-0461c75f4e0e');}}@media (min-width: 2560px) and (orientation: landscape){#section-18cb4642-bdff-4d78-8535-397b1256e3eb{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/556da1d9-7616-4de7-b981-0461c75f4e0e');}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(0 / 4 * var(--global-section-padding));background-color:#fff;}@media only screen and (max-width: 768px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 div>div>div>div.hoverable-image__img-col>div{min-height:auto!important;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-section--full-bleed{padding-top:0;}@media (min-width: 993px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-section--full-bleed{padding-bottom:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image--reverse{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image--reverse{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image--reverse .hoverable-image__text-col{padding-right:120px;padding-left:0;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image--reverse .hoverable-image__text-col{padding:0;margin-top:29px;margin-bottom:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col{-webkit-flex:50%;-ms-flex:50%;flex:50%;z-index:1;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col>div{width:100%;height:100%;position:relative;padding-bottom:79%;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col>div img{-webkit-transition:visibility 5s,opacity 0.5s linear;transition:visibility 5s,opacity 0.5s linear;position:absolute;object-fit:cover;width:100%;height:100%;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col>div .main-image{visibility:visible;opacity:1;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col>div .secondary-image{visibility:hidden;opacity:0;}@media (hover: hover) and (pointer: fine){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col--on-hover:hover .main-image{visibility:hidden;opacity:0;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col--on-hover:hover .
34secondary-image{visibility:visible;opacity:1;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col--on-hover.active .main-image{visibility:hidden;opacity:0;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__img-col--on-hover.active .secondary-image{visibility:visible;opacity:1;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col{-webkit-flex:50%;-ms-flex:50%;flex: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;padding-left:120px;padding-right:0;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col{padding-left:0;margin-top:29px;margin-bottom:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .lp-text--subtitle{max-width:100%;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -12px;}@media (max-width: 560px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .buttons-wrapper{margin:0;}}@media (max-width: 576px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-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;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .buttons-wrapper .lp-btn{vertical-align:top;margin:24px 12px 0;}@media (max-width: 560px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-col .buttons-wrapper .lp-btn{margin-left:0;margin-right:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-wrap{-webkit-flex:1;-ms-flex:1;flex:1;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .hoverable-image__text-wrap p:last-child{margin-bottom:0;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container{padding:0;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image__text-col{padding:69px;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image__text-col{padding:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image__text-col .lp-container{position:absolute;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image__text-col .lp-container{position:static;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);left:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image__img-col>div{max-height:none;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:calc(50% + 69px);}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:calc(50% + 69px);}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:0;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .lp-h2{margin-bottom:16px;}@media (max-width: 992px){#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .lp-h2{margin-bottom:8px;}}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3 .redesign p{margin-bottom:1.666rem;text-transform:none;}#section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3>div:last-child{padding-bottom:calc(0 / 4 * var(--global-section-padding))!important;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#fff;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 div.lp-vertical-paddings{padding-top:96px;padding-bottom:0;}@media (max-width: 560px){#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 div.lp-vertical-paddings{padding-top:64px;padding-bottom:0;}}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 div.boxed-text__description{margin-bottom:0!important;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 div.boxed-text__description p{margin-bottom:0!important;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .boxed-text__description{margin-bottom:30px;}}.redesign #section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .boxed-text__heading:not(h2){text-rendering:optimizeLegibility;white-space:normal;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .lp-title-group .lp-h2{margin-top:0;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container .lp-btn{margin-right:20px;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8 .redesign p:not(:where(.boxed-text__heading)){margin-bottom:1.666rem;}#section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8>div:last-child{padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-ca104860-0b93-473a-96df-edd9123942b7{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats{margin-top:66px;margin-bottom:66px;}@media (max-width: 576px){#section-ca104860-0b93-473a-96df-edd9123942b7 .stats{margin-top:46px;margin-bottom:46px;}}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats .line{height:1px;background-color:#e4dfdf;width:100%;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__container{margin:23px 0;font-size:14px;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__container p{text-align:center;margin-bottom:23px;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}@media (max-width: 576px){#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__items{gap:10px;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;-webkit-justify-content:space-evenly;justify-content:space-evenly;}}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__item{margin-right:42px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__item:last-child{margin-right:0;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__item__header{margin:0;min-width:150px;text-align:center;}#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__item__text{font-size:14px;}@media (max-width: 576px){#section-ca104860-0b93-473a-96df-edd9123942b7 .stats__item{margin:0;-webkit-flex:0 0 30%;-ms-flex:0 0 30%;flex:0 0 30%;text-align:center;}}#section-ca104860-0b93-473a-96df-edd9123942b7 .description{margin-bottom:15px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--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(2 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb div.team-member__hover:before,#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb div.team-member__hover:after{border:1.5px solid transparent;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb span.team-member__name{letter-spacing:2px;font-weight:200!important;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb div.team-grid .lp-container .team-member__hover{border-color:#333B3E;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid{padding:40px 0;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__title{text-align:center;margin-bottom:50px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid .lp-input{width:100%;height:35px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:first-child{margin-left:auto;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container{width:50%;}}@media (max-width: 768px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__image{opacity:.5;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__hover{opacity:1;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__hover::before,#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__container.filtered-out{display:none;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__image-wrap{position:relative;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover:before,#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover:before{top:0;left:0;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__hover{display:none;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__license{font-size:13px;text-transform:uppercase;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__info{text-align:center;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .form-container{padding-bottom:48px;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-form{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:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-input{padding-right:65px;}@media (max-width: 569px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .search-input{padding-bottom:5px;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-clear{display:none;}}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-dropdown.opened{z-index:999;position:fixed;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;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;text-transform:none;font-family:var(--global-secondary-font-family);}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select-option:hover{background-color:#b2b2b2;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .empty-message{padding:160px 0;text-align:center;display:none;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .empty-message.visible{display:block;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-7a06dca2-5566-485d-97d3-e9bffaaac9fb>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--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(0 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 div.team-member__hover:before,#section-7545c45a-2d61-41d5-8fa1-79536cb17100 div.team-member__hover:after{border:1.5px solid transparent;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 span.team-member__name{text-transform:uppercase;letter-spacing:2px;font-weight:200!important;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 div.team-grid .lp-container .team-member__hover{border-color:#333B3E;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid{padding:40px 0;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__title{text-align:center;margin-bottom:50px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid .lp-input{width:100%;height:35px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:first-child{margin-left:auto;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container{width:50%;}}@media (max-width: 768px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__image{opacity:.5;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__hover{opacity:1;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__hover::before,#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__container.filtered-out{display:none;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__image-wrap{position:relative;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover:before,#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover:before{top:0;left:0;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__hover{display:none;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__license{font-size:13px;text-transform:uppercase;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__info{text-align:center;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .form-container{padding-bottom:48px;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-form{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:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-input{padding-right:65px;}@media (max-width: 569px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .search-input{padding-bottom:5px;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-clear{display:none;}}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-dropdown.opened{z-index:999;position:fixed;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;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;text-transform:none;font-family:var(--global-secondary-font-family);}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select-option:hover{background-color:#b2b2b2;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .empty-message{padding:160px 0;text-align:center;display:none;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .empty-message.visible{display:block;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100 .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-7545c45a-2d61-41d5-8fa1-79536cb17100>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(242, 242, 242, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:95%;--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:rgba(242, 242, 242, 1);}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 h2:before{content:'Presenting our Finest Homes';display:block;font-size:var(--global-h4-font-size);text-align:left;padding-bottom:5px;}@media (min-width: 1200px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section ul.slick-links-nav{padding:53px 0 0;}}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 h2:before{text-align:center;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section span.link--white{color:#1
34a1a1a;border-color:#1a1a1a;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section span.link--white:after{background-color:#1a1a1a;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section ul.slick-links-nav span.spacer{background-color:#1a1a1a;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section ul.slick-links-nav span.slick-disabled{color:#C6C6C6;cursor:default;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section ul.slick-links-nav span.slick-disabled:hover{color:#C6C6C6!important;cursor:default;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 div.redesign.featured-properties-section span.link:after{background-color:#1a1a1a;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item h4.serif{text-transform:uppercase;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties span.featured-properties__label{background-color:#333B3E;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section{padding:140px 0;}@media (max-width: 991px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section{padding:100px 0;}}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section{padding:40px 0;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-list{width:100%;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-track{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-slide{height:inherit!important;display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-arrow:not(.slick-disabled){cursor:pointer;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav{display:inline-block;list-style:none;vertical-align:top;margin:0 0 0;padding:28px 0 0;white-space:nowrap;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav{padding:0;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;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav li{display:inline-block;vertical-align:top;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav li+li{margin-left:40px;position:relative;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .slick-hidden+.spacer{display:none;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .spacer{position:absolute;left:-23px;width:1px;height:10px;margin-top:-5px;top:50%;background-color:#fff;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .link.slick-disabled{cursor:default;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .link.slick-disabled:hover{color:inherit;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .link.slick-disabled:before,#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .slick-links-nav .link.slick-disabled:after{opacity:0;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .btn{min-width:250px;}@media (min-width: 561px) and (max-width: 1024px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-section .btn{width:275px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:60px;text-align:center;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-header{display:block;margin-bottom:40px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-header h2{color:var(--fontColor);margin:0;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-header h2{margin-bottom:25px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-button-holder{text-align:center;margin-top:80px;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-button-holder{margin-top:40px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow{position:relative;left:auto;right:auto;bottom:auto;top:auto;text-align:left;font-size:14px;line-height:24px;width:auto;height:24px;text-transform:uppercase;margin-top:15px;color:#C6C6C6;opacity:1!important;-webkit-transform:translate(0, 0);-moz-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0);font-family:var(--global-secondary-font-family);}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow:hover{color:#fff;opacity:1;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow:before{content:'';}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow{margin-top:0;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow:after{content:'';position:absolute;bottom:3px;height:1px;background-color:#fff;left:0;right:0;-webkit-transition:opacity .3s;transition:opacity .3s;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow.slick-prev:before{content:none;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow.slick-next{margin-left:41px;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow.slick-next:before{left:-21px;width:1px;height:12px;background-color:#fff;pointer-events:none;top:8px;opacity:1;position:absolute;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties-nav .slick-arrow.slick-disabled:after{opacity:0;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties{padding:0;margin:0 -40px;color:#000;}@media (max-width: 991px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties{margin-left:-12px;margin-right:-12px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item-cover{padding:0 40px;}@media (max-width: 991px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item-cover{padding:0 12px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item-cover:focus{outline:none;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item{background-color:#fff;text-align:center;font-weight:bold;position:relative;height:100%;color:var(--fontColor);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item{min-height:500px;}}@media (hover: none) and (pointer: coarse){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item{min-height:1px;background-color:transparent;}}@media (hover: hover) and (pointer: fine){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item:hover .featured-properties__hover{opacity:1;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item h4{text-transform:none;color:black;margin:0 0 7px;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item p{color:black;margin:0 0 7px;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item p{margin-bottom:3px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item h5{color:black;margin:0;font-family:var(--global-secondary-font-family);text-transform:none;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__item >a{width:100%;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__img{vertical-align:top;width:100%;height:315px;background-color:gray;position:relative;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__img img{width:100%;height:100%;object-fit:cover;}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__img{height:200px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__text{color:var(--fontColor);background-color:#fff;padding:25px 15px 15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (hover: none) and (pointer: coarse){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__text{padding:13px;min-height:175px;}}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__text h4{max-height:56px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__text p{white-space:normal;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__label{position:absolute;top:0;right:0;background:#000;color:#fff;
34padding:4px 35px;z-index:2;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__hover{color:var(--bgColor);padding:15px;position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255, 255, 255, 0.75);opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear;z-index:3;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;}@media(max-width: 991px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__hover{display:none;}}@media(max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__hover h4{display:none;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__hover >a{position:absolute;top:0;left:0;width:100%;height:100%;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__buttons{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:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:10px 24px;position:relative;z-index:2;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share{display:inline-block;position:relative;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share.featured-properties__share--opened .socials{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (hover: none) and (pointer: coarse){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share{display:block;width:100%;margin-top:4px;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share .btn.btn--primary-light{display:block;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share .socials{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);display:none;}@media (hover: none) and (pointer: coarse){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share .socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:static;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:auto;left:auto;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share .socials .socials__link{width:69px;}@media (hover: none) and (pointer: coarse){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties .featured-properties__share .socials .socials__link:hover{border-bottom:transparent!important;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties:not(.slick-initialized) >.featured-properties__item-cover{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;}@media (min-width: 769px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties:not(.slick-initialized) >.featured-properties__item-cover{width:50%;}}@media (min-width: 1100px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .three-slides .featured-properties:not(.slick-initialized)>.featured-properties__item-cover{width:33%;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item-info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100%;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item-info:has(.mls-compliance-container) .featured-properties__text{padding-bottom:0;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item-mls-attribution{text-shadow:none;margin:0!important;color:#000!important;width:calc(100% - 200px);}@media (max-width: 1024px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item-mls-attribution{width:100%;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item .featured-properties__item-mls-attribution+.featured-properties__item-mls-logo{position:absolute!important;right:15px!important;bottom:15px!important;display:inline-block;}@media (max-width: 1024px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item .featured-properties__item-mls-attribution+.featured-properties__item-mls-logo{position:static!important;}}@media (max-width: 1024px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__item .featured-properties__item-mls-logo{display:inline-block!important;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .mls-compliance-container{margin-top:auto;padding:15px!important;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__open-house{position:absolute;bottom:0;left:0;width:100%;padding:8px 0;color:black;background:rgba(255, 255, 255, 0.7);}@media (max-width: 768px){#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .featured-properties__open-house{font-size:12px;}}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01 .description{margin-bottom:15px;}#section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-34367182-fbb0-47db-a832-bcdfb313ab45{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.3));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/ipmbm04a9lpoxwkdpyrr');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-34367182-fbb0-47db-a832-bcdfb313ab45.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-34367182-fbb0-47db-a832-bcdfb313ab45.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-34367182-fbb0-47db-a832-bcdfb313ab45.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-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-34367182-fbb0-47db-a832-bcdfb313ab45 .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-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us h2{padding-bottom:40px;}}#section-34367182-fbb0-47db-a832-bcdfb313ab45 .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-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-34367182-fbb0-47db-a832-bcdfb313ab45 .redesign.work-with-us .description{margin-bottom:40px;}}#section-34367182-fbb0-47db-a832-bcdfb313ab45 .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-34367182-fbb0-47db-a832-bcdfb313ab45 .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-34367182-fbb0-47db-a832-bcdfb313ab45{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/ipmbm04a9lpoxwkdpyrr');}}@media (min-width: 1280px) and (orientation: landscape){#section-34367182-fbb0-47db-a832-bcdfb313ab45{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/ipmbm04a9lpoxwkdpyrr');}}@media (min-width: 1920px) and (orientation: landscape){#section-34367182-fbb0-47db-a832-bcdfb313ab45{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/ipmbm04a9lpoxwkdpyrr');}}@media (min-width: 2560px) and (orientation: landscape){#section-34367182-fbb0-47db-a832-bcdfb313ab45{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/ipmbm04a9lpoxwkdpyrr');}}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 1);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed{padding:80px 0;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .title{margin:0 20px 0 0;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .instagram-link .instagram-name{display:inline;margin:0;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .title+.instagram-link{margin-top:5px;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .follow-button{margin:20px 0 0 0;display:block;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-nav-prev{margin-left:30px;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-nav-next{margin-left:10px;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .hidden-control{display:none;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single:first-child,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi:first-child{margin-left:auto;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single:last-child,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi:last-child{margin-right:auto;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single.type2,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi.type2{width:calc(100% / 5 * 2);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single.type3,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi.type3{width:calc(100% / 2);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single.type4,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi.type4{width:calc(100% / 2);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single.type5,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-container{padding:0;width:100%;}}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-item:hover .video-icon{opacity:0;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single .ig-feed-item__info{padding:15%;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .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-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-right,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .title,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .instagram-link{margin-right:0;text-align:center;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-nav-prev,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .top-nav-next{display:none;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .ig-feed{display:none;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99 .has-data .ig-feed{display:block;}#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99.has-data .ig-feed,#section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99#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:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;
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:#fff;color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--greyColor:hsla( 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 .mobile-contact{display:none;position:fixed;right:30px;bottom:25px;z-index:91;}body>div.mobile-contact-wrapper .mobile-contact a{-webkit-text-decoration:none;text-decoration:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
63-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:55px;height:55px;margin-bottom:15px;background-color:#fff;font-size:22px;border:2px solid hsla(0,0%,49.8%,.3);border-radius:90px;margin-left:1px;}body>div.mobile-contact-wrapper .mobile-contact a i{color:#000;}body>div.mobile-contact-wrapper .mobile-contact .buttons-holder{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}body>div.mobile-contact-wrapper .mobile-contact.dark a{background-color:#000;}body>div.mobile-contact-wrapper .mobile-contact.dark a i{color:#fff;}@media (max-width: 560px){body>div.mobile-contact-wrapper .mobile-contact{display:block;}} 64 </style> 65 <style id="custom-style-css">.pagination-style-1 li a{color:rgba(51, 59, 62, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(51, 59, 62, 1)!important;border-color:rgba(51, 59, 62, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(51, 59, 62, 1)!important;border-color:rgba(51, 59, 62, 1)!important;}.button-style-1{color:rgba(51, 59, 62, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(51, 59, 62, 1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(51, 59, 62, 1)!important;border-color:rgba(51, 59, 62, 1)!important;}.social_icons-style-1 a{border-color:rgba(51, 59, 62, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(51, 59, 62, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(51, 59, 62, 1)!important;background-color:rgba(51, 59, 62, 1)!important;color:rgba(255,255,255,1)!important;}.social_icons-style-1 a i{color:inherit!important;}
65.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:rgba(51, 59, 62, 1)!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(51, 59, 62, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(206, 206, 206, 1)!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(51, 59, 62, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:rgba(51, 59, 62, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li.active a{color:rgba(51, 59, 62, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.button-style-6{color:rgba(51, 59, 62, 1)!important;background-color:#FFFFFF!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-6:hover{color:#FFFFFF!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#FFFFFF!important;}</style> 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="c1918b01-2cf0-469f-8209-e9bb9f9fea16"></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 <!-- Benchmetrics OneScript -->
108<script src="https://client-includes.benchmetrics.app/script/getCompiledScripts" defer></script>
108 109 110 111 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 112</head> 113<body> 114 <div id="google_translate_element" style="display: none"></div> 115 116 <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b"> 117 <div class="redesign"> 118 <div class="content-container header"> 119 <div class="container header__container"> 120 <div class="navbar"> 121 <div class="logo"> 122 <a href="/" class="logo__link"> 123 <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/934b9fb6-fb0a-473e-a35e-ebb0634a828b" 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 3456w" class="logo__img light" alt="Christieâs International Real Estate Costa Rica"> 124 <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/934b9fb6-fb0a-473e-a35e-ebb0634a828b" 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 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/934b9fb6-fb0a-473e-a35e-ebb0634a828b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/934b9fb6-fb0a-473e-a35e-ebb0634a828b 3456w" class="logo__img dark" alt="Christieâs International Real Estate Costa Rica"> 125 </a> 126 </div> 127 <div class="navigation"> 128 <ul> 129 <li class="navigation__item sub-nav-container"> 130 <a href="#" class="navigation__link wow fadeInUp">Properties</a> 131 <div class="sub-nav"> 132 <ul> 133 <li class="sub-nav__item"><a href="/properties/sale" class="nav-link sub-nav__link feature"><span>Search Exclusive Listings</span></a></li> 134 <li class="sub-nav__item"><a href="/properties/sold" class="nav-link sub-nav__link feature"><span>Notable Transactions</span></a></li> 135 <li class="sub-nav__item"><a href="/costa-rica/land" class="nav-link sub-nav__link feature"><span>Costa Rica Land For Sale</span></a></li> 136 <li class="sub-nav__item"><a href="/costa-rica/homes" class="nav-link sub-nav__link feature"><span>Costa Rica Real Estate</span></a></li> 137 <li class="sub-nav__item"><a href="/costa-rica/single-family-homes" class="nav-link sub-nav__link feature"><span>Costa Rica Single Family Homes For Sale</span></a></li> 138 <li class="sub-nav__item"><a href="/costa-rica/luxury-homes" class="nav-link sub-nav__link feature"><span>Costa Rica Luxury Homes For Sale</span></a></li> 139 </ul> 140 </div> 141 </li> 142 <li class="navigation__item sub-nav-container"> 143 <a href="#" class="navigation__link wow fadeInUp">Developments</a> 144 <div class="sub-nav"> 145 <ul> 146 <li class="sub-nav__item"><a href="/developments/cantomar" class="nav-link sub-nav__link feature"><span>Cantomar</span></a></li> 147 <li class="sub-nav__item"><a href="/shift-esperanza" class="nav-link sub-nav__link feature"><span>Shift Esperanza</span></a></li> 148 <li class="sub-nav__item"><a href="/unit-360" class="nav-link sub-nav__link feature"><span>360 Splendor del Pacifico</span></a></li> 149 <li class="sub-nav__item"><a href="/faro-escondido-2" class="nav-link sub-nav__link feature"><span>Faro Escondido 2</span></a></li> 150 <li class="sub-nav__item"><a href="/faro-escondido-5" class="nav-link sub-nav__link feature"><span>Faro Escondido 5</span></a></li> 151 <li class="sub-nav__item"><a href="/vista-las-palmas" class="nav-link sub-nav__link feature"><span>Vista Las Palmas</span></a></li> 152 <li class="sub-nav__item"><a href="/hacienda-pinilla-guanacaste" class="nav-link sub-nav__link feature"><span>Hacienda Pinilla</span></a></li> 153 </ul> 154 </div> 155 </li> 156 <li class="navigation__item sub-nav-container"> 157 <a href="#" class="navigation__link wow fadeInUp">Hotels</a> 158 <div class="sub-nav"> 159 <ul> 160 <li class="sub-nav__item">
160<a href="https://costaricachristies.com/properties/casa-chameleon-hotel" class="nav-link sub-nav__link feature"><span>Casa Chameleon Mal Pais</span></a></li> 161 <li class="sub-nav__item"><a href="https://costaricachristiesrealestate.com/properties/vistas-las-islas-hotel-the-crown-jewel-overlooking-isla-tortuga-and-playa-organos" class="nav-link sub-nav__link feature"><span>Vistas Las Islas Hotel</span></a></li> 162 <li class="sub-nav__item"><a href="https://costaricachristiesrealestate.com/properties/hotel-las-tortugas-legendary-beachfront-boutique-hotel" class="nav-link sub-nav__link feature"><span>Hotel Las Tortugas</span></a></li> 163 <li class="sub-nav__item"><a href="/properties/eco-retreat-and-wellness-center-amatierra" class="nav-link sub-nav__link feature"><span>ECO-RETREAT AMATIERRA</span></a></li> 164 <li class="sub-nav__item"><a href="https://costaricachristies.com/properties/organica-yoga-retreat" class="nav-link sub-nav__link feature"><span>Organica Yoga Retreat</span></a></li> 165 <li class="sub-nav__item"><a href="https://costaricachristies.com/properties/hotel-ibiza" class="nav-link sub-nav__link feature"><span>Boutique Hotel Ibiza</span></a></li> 166 <li class="sub-nav__item"><a href="https://costaricachristies.com/properties/hotel-nany-steps-from-playa-conchal" class="nav-link sub-nav__link feature"><span>Hotel Nany </span></a></li> 167 </ul> 168 </div> 169 </li> 170 <li class="navigation__item"> 171 <a href="/lifestyle" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>Lifestyle</span></a> 172 </li> 173 <li class="navigation__item sub-nav-container"> 174 <a href="#" class="navigation__link wow fadeInUp">Offices</a> 175 <div class="sub-nav"> 176 <ul> 177 <li class="sub-nav__item"><a href="/our-offices" class="nav-link sub-nav__link feature"><span>Our Offices </span></a></li> 178 <li class="sub-nav__item"><a href="/marina-flamingo-office" class="nav-link sub-nav__link feature"><span>Flamingo</span></a></li> 179 <li class="sub-nav__item"><a href="/tamarindo-office" class="nav-link sub-nav__link feature"><span>Tamarindo</span></a></li> 180 <li class="sub-nav__item"><a href="/nosara-office" class="nav-link sub-nav__link feature"><span>Nosara</span></a></li> 181 <li class="sub-nav__item"><a href="/central-pacific-office" class="nav-link sub-nav__link feature"><span>Central Pacific</span></a></li> 182 <li class="sub-nav__item"><a href="/nicaragua-office" class="nav-link sub-nav__link feature"><span>Nicaragua</span></a></li> 183 <li class="sub-nav__item"><a href="/south-pacific-office" class="nav-link sub-nav__link feature"><span>South Pacific</span></a></li> 184 <li class="sub-nav__item"><a href="/santa-teresa-office" class="nav-link sub-nav__link feature"><span>Santa Teresa</span></a></li> 185 </ul> 186 </div> 187 </li> 188 <li class="navigation__item"> 189 <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Inquire Now</span></a> 190 </li> 191 <li class="navigation__item"> 192 <a href="tel:18776612060" class="navigation__link wow fadeInUp" data-wow-delay="2.6"><span> +1-877-661-2060</span></a> 193 </li> 194 <li class="navigation__item"> 195 <a href="/properties/sale" class="navigation__link wow fadeInUp" data-wow-delay="2.7"><span>Search Exclusive Listings</span></a> 196 </li> 197 </ul> 198 </div> 199 <div class="buttons-wrapper"> 200 <a href="/properties/sale" class="search"> 201 <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> 202 <path d="M21.7792 20.6531L15.2916 14.1453C16.7093 12.4358 17.4135 10.2461 17.2581 8.03107C17.1027 5.81609 16.0996 3.74606 14.4571 2.25094C12.8146 0.755825 10.659 -0.0494581 8.43804 0.00235367C6.21706 0.0541654 4.1014 0.95909 2.53049 2.52917C0.959593 4.09925 0.0541938 6.2138 0.0023549 8.43362C-0.049484 10.6534 0.756221 12.8079 2.25212 14.4495C3.74802 16.0912 5.81914 17.0938 8.03528 17.2491C10.2514 17.4044 12.4423 16.7005 14.1528 15.2836L20.6403 21.7678C20.7134 21.8414 20.8002 21.8998 20.8959 21.9396C20.9916 21.9795 21.0943 22 21.198 22C21.3017 22 21.4043 21.9795 21.5 21.9396C21.5958 21.8998 21.6826 21.8414 21.7556 21.7678C21.8308 21.6964 21.8911 21.6108 21.933 21.516C21.9749 21.4212 21.9976 21.319 21.9998 21.2153C22.002 21.1117 21.9836 21.0087 21.9458 20.9122C21.9079 20.8157 21.8513 20.7276 21.7792 20.6531ZM1.58601 8.65028C1.58254 7.4998 1.86023 6.36588 2.39494 5.34706C2.92965 4.32824 3.7052 3.45534 4.6542 2.80423C5.6032 2.15311 6.69694 1.74348 7.84036 1.61093C8.98378 1.47838 10.1423 1.62692 11.2152 2.04364C12.2881 2.46037 13.243 3.13266 13.9968 4.00211C14.7507 4.871
20256 15.2807 5.91185 15.5408 7.03257C15.8008 8.1533 15.7832 9.32056 15.4893 10.4329C15.1954 11.5453 14.6341 12.569 13.8543 13.4153C13.7571 13.4548 13.6688 13.5133 13.5946 13.5875C13.5204 13.6616 13.4618 13.7499 13.4223 13.847C12.4114 14.77 11.154 15.3797 9.80299 15.602C8.45195 15.8243 7.06539 15.6496 5.81179 15.0992C4.55819 14.5488 3.4915 13.6464 2.74133 12.5016C1.99116 11.3567 1.5898 10.0188 1.58601 8.65028Z" fill="white"/> 203 </svg> 204 </a> 205 <button type="button" class="hamburger-component hamburger"> 206 <span class="hamburger__bars"></span> 207 </button> 208 </div> 209 </div> 210 </div> 211 </div> 212</div> 213 214 </nav> 215 <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18"> 216 <div class="sidebar"> 217 218 <button class="toggle sidebar__close close"></button> 219 <div class="sidebar__content"> 220 221 <ul class="sidebar__nav"> 222 <li class="sidebar__nav-item"> 223 <a href="/" class="sidebar__nav-link">Home</a> 224 </li> 225 <li class="sidebar__nav-item"> 226 <a href="/about-us" class="sidebar__nav-link">About Us</a> 227 </li> 228 <li class="sidebar__nav-item sub-nav-container"> 229 <div class="sub-nav"> 230 <ul class="sidebar__subnav"> 231 <li class="sidebar__subnav-item"><a href="/our-offices" class="sidebar__subnav-link">Our Offices</a></li> 232 <li class="sidebar__subnav-item"><a href="/marina-flamingo-office" class="sidebar__subnav-link">Flamingo</a></li> 233 <li class="sidebar__subnav-item"><a href="/tamarindo-office" class="sidebar__subnav-link">Tamarindo</a></li> 234 <li class="sidebar__subnav-item"><a href="/nosara-office" class="sidebar__subnav-link">Nosara</a></li> 235 <li class="sidebar__subnav-item"><a href="/central-pacific-office" class="sidebar__subnav-link">Central Pacific</a></li> 236 <li class="sidebar__subnav-item"><a href="/nicaragua-office" class="sidebar__subnav-link">Nicaragua</a></li> 237 <li class="sidebar__subnav-item"><a href="/south-pacific-office" class="sidebar__subnav-link">South Pacific</a></li> 238 <li class="sidebar__subnav-item"><a href="/santa-teresa-office" class="sidebar__subnav-link">Santa Teresa</a></li> 239 </ul> 240 </div> 241 <a href="#" class="sidebar__nav-link link main-nav">Offices</a> 242 </li> 243 <li class="sidebar__nav-item sub-nav-container"> 244 <div class="sub-nav"> 245 <ul class="sidebar__subnav"> 246 <li class="sidebar__subnav-item"><a href="/properties/sale" class="sidebar__subnav-link">Exclusive Listings</a></li> 247 <li class="sidebar__subnav-item"><a href="/properties/sold" class="sidebar__subnav-link">Notable Transactions</a></li> 248 <li class="sidebar__subnav-item"><a href="/costa-rica/land" class="sidebar__subnav-link">Costa Rica Land For Sale</a></li> 249 <li class="sidebar__subnav-item"><a href="/costa-rica/homes" class="sidebar__subnav-link">Costa Rica Real Estate</a></li> 250 <li class="sidebar__subnav-item"><a href="/costa-rica/single-family-homes" class="sidebar__subnav-link">Costa Rica Single Family Homes For Sale</a></li> 251 <li class="sidebar__subnav-item"><a href="/costa-rica/luxury-homes" class="sidebar__subnav-link">Costa Rica Luxury Homes For Sale</a></li> 252 </ul> 253 </div> 254 <a href="#" class="sidebar__nav-link link main-nav">Properties</a> 255 </li> 256 <li class="sidebar__nav-item"> 257 <button data-type="MODAL_c699f290-e85c-4a23-956a-8719dccb38b4" class="sidebar__nav-link">Home Valuation</button> 258 </li> 259 <li class="sidebar__nav-item"> 260 <a href="/our-markets" class="sidebar__nav-link">Our Markets</a> 261 </li> 262 <li class="sidebar__nav-item"> 263 <a href="/developments" class="sidebar__nav-link">Developments</a> 264 </li> 265 <li class="sidebar__nav-item"> 266 <a href="/lifestyle" class="sidebar__nav-link">Lifestyle</a> 267 </li> 268 <li class="sidebar__nav-item"> 269 <a href="/blog" class="sidebar__nav-link">Blog</a> 270 </li> 271 <li class="sidebar__nav-item"> 272 <a href="/contact-us" class="sidebar__nav-link">Contact Us</a> 273 </li> 274 </ul> 275 </div> 276</div> 277 </div> 278 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="ca33406a-b24a-4100-b315-87fd53d5adc2"> 279 <div class="mobile-contact "> 280 <div class="buttons-holder"> 281 <a href="/cdn-cgi/l/email-protection#4920272f26092a3b2a203b2c672a2624"> 282 <i class="lp-i lp-i--envelope"></i> 283 </a> 284 <a href="tel:+18776612060"> 285 <i class="lp-i lp-i--phone"></i> 286 </a> 287 </div> 288</div> 289 290 </div> 291 <section class="image-section is-font-color-light is-background-color-light" id="section-18cb4642-bdff-4d78-8535-397b1256e3eb" data-el-id="e6c6941b-dd32-4d6b-b4aa-56593f2d58bb"> 292 <div class="redesign custom-intro"> 293 <div class="container"> 294 <h1 class="custom-intro__title">About Us</h1> 295 296 </div> 297</div> 298 299</section> 300<section id="section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3" class="solid-section is-font-color-dark is-background-color-light" data-el-id="e004cbf9-19e4-44e4-8a4c-3de3b2ce0df6">
301 <div class="hoverable-section lp-vertical-paddings redesign"> 302 <div class="lp-container"> 303 304 <div class="hoverable-image hoverable-image--straight"> 305 306 <div class="hoverable-image__img-col"> 307 <div class=""> 308 <div class=""> 309 <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/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e" 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/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 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/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 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/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=3456/https://media-production.lp-cdn.com/media/2eb6c0cd-31a6-400d-8159-bd0ccf927d5e 3456w" sizes="(max-width: 992px) 100vw, 50vw" alt="Aerial tropical beach bordered by dense greenery and palms, with driftwood on the shore." class="main-image" loading="lazy"> 310 311 </div> 312 </div> 313 </div> 314 315 <div class="hoverable-image__text-col"> 316 317 <div class="hoverable-image__text-wrap"> 318 <div class="lp-a lp-text--subtitle"> 319 <p>Costa Rica Resort & Estate Properties, the exclusive affiliate of Christie’s International Real Estate for Costa Rica, offers to buyers and sellers access to a prestigious portfolio of luxury properties in Costa Rica, such as beach front properties, ocean view, mountain view estates, land parcels, working ranches and farms, luxury city condominiums and homes.</p> 320<p>Through, Costa Rica CIRE, buyers and sellers of distinctive Real Estate in Costa Rica now have access to the amplified marketing efforts of Christie’s International Real Estate to offer luxury properties to the discerning international real estate market.</p> 321<p>The combined marketing efforts of Christie’s International Real Estate and Costa Rica CIRE will provide far reaching exposure to a qualified audience of homeowners and homebuyers for exclusive properties in Costa Rica and beyond.</p> 322<p>Costa Rica CIRE will provide our customers with trusted real estate advice and only cooperates with brokers who have a leading market share, meet strict standards of service excellence, and demonstrate proven records of success in handling distinctive properties</p> 323 </div> 324 <div class="buttons-wrapper"> 325 </div> 326 </div> 327 328 329 </div> 330 </div> 331 </div> 332</div> 333</section> 334<section id="section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8" class="solid-section is-font-color-dark is-background-color-light" data-el-id="21c5a117-61cb-4f43-8635-2da86e3ae7dd"> 335 336<div class="boxed-text lp-vertical-paddings redesign"> 337 <div class="lp-container"> 338 339 <div class="boxed-text__description"><p><video autoplay="autoplay" controls="controls" width="100%" height="auto"> 340 <source src="https://video.wixstatic.com/video/c68dad_f4b32b387d01423996fb5e5549c23921/1080p/mp4/file.mp4" type="video/mp4" /></video></p></div> 341 </div> 342</div> 343</section> 344<section id="section-ca104860-0b93-473a-96df-edd9123942b7" class="solid-section is-font-color-dark is-background-color-light" data-el-id="ede23ff8-485f-49b2-a976-70669f264580"> 345 <div class="stats container"> 346 <div class="line"> 347 </div> 348 <div class="stats__container"> 349 <p class="stats__title"> 350 351 </p> 352 353 <div class="stats__items"> 354 <div class="stats__item"> 355 <h2 class="stats__item__header jsValue">46</h2> 356 <div class="stats__item__text"> 357 Countries 358 </div> 359 </div> 360 <div class="stats__item"> 361 <h2 class="stats__item__header jsValue">138 </h2> 362 <div class="stats__item__text"> 363 Affiliates Worldwide 364 </div> 365 </div> 366 <div class="stats__item"> 367 <h2 class="stats__item__header jsValue">250 </h2> 368 <div class="stats__item__text"> 369 Years of Luxury Service 370 </div> 371 </div> 372 <div class="stats__item"> 373 <h2 class="stats__item__header jsValue">~12,000</h2> 374 <div class="stats__item__text"> 375 Number of Luxury Properties Worldwide 376 </div> 377 </div> 378 <div class="stats__item"> 379 <h2 class="stats__item__header jsValue">$47B</h2> 380 <div class="stats__item__text"> 381 Value of Luxury Properties Worldwide 382 </div> 383 </div> 384 <div class="stats__item"> 385 <h2 class="stats__item__header jsValue">~$500B</h2> 386 <div class="stats__item__text"> 387 Real Estate Sales Over the Last Five Years 388 </div> 389 </div> 390 </div> 391 </div> 392 <div class="line"> 393 </div> 394</div> 395</section> 396<section id="section-7a06dca2-5566-485d-97d3-e9bffaaac9fb" class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6">
vendor: 109 bytes, lines 396-397
396 397<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
397<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="team-member__container" data-search-string="{{firstName}} {{lastName}} {{email}}" 398 data-tags="{{JSONstringify tags}}" 399> 400 <a class="team-member__link" href="/agent/{{slug}}"> 401 <div class="team-member__image-wrap"> 402 <div class="team-member__image"> 403 {{{mediaImage avatar alt=(concat firstName " " lastName) sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw"}}} 404 </div> 405 <div class="team-member__hover"> 406 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 407 </div> 408 </div> 409 <div class="team-member__info"> 410 <span class="team-member__name">{{firstName}} {{lastName}}</span> 411 <span class="team-member__role">{{position}}</span> 412 </div> 413 </a> 414</div> 415</script>
415<div class="team-grid redesign"> 416 <div class="lp-container"> 417 <div class="lp-title-group"> 418 419 <h2 class="lp-h2">Meet the Team</h2> 420 421 </div> 422 423 <div class="js-sync-flag" style="display: none;"></div> 424 425 <div class="form-container search-container filters" > 426 <div class="search-form"> 427 <div class="input-group "> 428 <label for="s-section-7a06dca2-5566-485d-97d3-e9bffaaac9fb-search" class="visually-hidden">Search agent name</label> 429 <input id="s-section-7a06dca2-5566-485d-97d3-e9bffaaac9fb-search" type="text" class="search-input lp-input js-search-input" placeholder="Search by agent name"> 430 <svg class="search-icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 431 <path d="M16.5967 14.9597L11.9488 10.3118C12.8304 9.22343 13.361 7.8398 13.361 6.33336C13.361 2.84116 10.5199 0 7.02767 0C3.53547 0 0.694336 2.84116 0.694336 6.33336C0.694336 9.82556 3.5355 12.6667 7.0277 12.6667C8.53414 12.6667 9.91777 12.136 11.0061 11.2545L15.654 15.9024C15.7842 16.0325 15.9952 16.0325 16.1254 15.9024L16.5967 15.4311C16.7269 15.3009 16.7269 15.0898 16.5967 14.9597ZM7.0277 11.3334C4.27053 11.3334 2.02768 9.09052 2.02768 6.33336C2.02768 3.5762 4.27053 1.33335 7.0277 1.33335C9.78486 1.33335 12.0277 3.5762 12.0277 6.33336C12.0277 9.09052 9.78486 11.3334 7.0277 11.3334Z" fill="#B2B2B2"/> 432 </svg> 433 </div> 434 </div> 435 </div> 436 437 438 439 <div class="team-grid__wrapper ordered-elements"> 440 <div class="team-member__container" data-search-string="Robert F. Davey [email protected]" 441 data-tags="[]" 442 > 443 <a class="team-member__link" href="/agent/robert-davey"> 444 <div class="team-member__image-wrap"> 445 <div class="team-member__image"> 446 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/1962c0af-3bf8-4cf2-8b8c-4b4d7229dfdb" alt="Robert F. Davey seated on a sofa in a white shirt." class="portrait" loading="lazy"> 447 </div> 448 <div class="team-member__hover"> 449 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 450 </div> 451 </div> 452 <div class="team-member__info"> 453 <span class="team-member__name">Robert F. Davey</span> 454 <span class="team-member__role">Broker | Owner</span> 455 </div> 456 </a> 457 </div> 458 <div class="team-member__container" data-search-string="Brian Bratton [email protected]" 459 data-tags="[]" 460 > 461 <a class="team-member__link" href="/agent/brian-bratton"> 462 <div class="team-member__image-wrap"> 463 <div class="team-member__image"> 464 <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/whksemb4gshpwnckdaq4" 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/whksemb4gshpwnckdaq4 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/whksemb4gshpwnckdaq4 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/whksemb4gshpwnckdaq4 1525w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Brian Bratton" class="portrait" loading="lazy"> 465 </div> 466 <div class="team-member__hover"> 467 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 468 </div> 469 </div> 470 <div class="team-member__info"> 471 <span class="team-member__name">Brian Bratton</span> 472 <span class="team-member__role">Broker</span> 473 </div> 474 </a> 475 </div> 476 <div class="team-member__container" data-search-string="Max Arata [email protected]" 477 data-tags="[]" 478 > 479 <a class="team-member__link" href="/agent/max-arata"> 480 <div class="team-member__image-wrap"> 481 <div class="team-member__image"> 482 <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/sonttqzlmgjlcnyby5fa" 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/sonttqzlmgjlcnyby5fa 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/sonttqzlmgjlcnyby5fa 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/sonttqzlmgjlcnyby5fa 1843w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Max Arata" class="portrait" loading="lazy"> 483 </div> 484 <div class="team-member__hover">
485 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 486 </div> 487 </div> 488 <div class="team-member__info"> 489 <span class="team-member__name">Max Arata</span> 490 <span class="team-member__role">Broker</span> 491 </div> 492 </a> 493 </div> 494 <div class="team-member__container" data-search-string="Virginia Pastor [email protected]" 495 data-tags="[]" 496 > 497 <a class="team-member__link" href="/agent/virginia-pastor"> 498 <div class="team-member__image-wrap"> 499 <div class="team-member__image"> 500 <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/dmg2elygsquwiz8qqv88" 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/dmg2elygsquwiz8qqv88 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/dmg2elygsquwiz8qqv88 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/dmg2elygsquwiz8qqv88 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Virginia Pastor" class="portrait" loading="lazy"> 501 </div> 502 <div class="team-member__hover"> 503 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 504 </div> 505 </div> 506 <div class="team-member__info"> 507 <span class="team-member__name">Virginia Pastor</span> 508 <span class="team-member__role">Broker</span> 509 </div> 510 </a> 511 </div> 512 <div class="team-member__container" data-search-string="Luis Garro [email protected]" 513 data-tags="[]" 514 > 515 <a class="team-member__link" href="/agent/luis-garro"> 516 <div class="team-member__image-wrap"> 517 <div class="team-member__image"> 518 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/donumgesfyqx0gp9zzwg" alt="Luis Garro" class="portrait" loading="lazy"> 519 </div> 520 <div class="team-member__hover"> 521 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 522 </div> 523 </div> 524 <div class="team-member__info"> 525 <span class="team-member__name">Luis Garro</span> 526 <span class="team-member__role">Broker</span> 527 </div> 528 </a> 529 </div> 530 <div class="team-member__container" data-search-string="Brandon Sanford [email protected]" 531 data-tags="[]" 532 > 533 <a class="team-member__link" href="/agent/brandon-sanford"> 534 <div class="team-member__image-wrap"> 535 <div class="team-member__image"> 536 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tgzlrl1ofvtlusmh2vd1" alt="Brandon Sanford " class="portrait" loading="lazy"> 537 </div> 538 <div class="team-member__hover"> 539 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 540 </div> 541 </div> 542 <div class="team-member__info"> 543 <span class="team-member__name">Brandon Sanford </span> 544 <span class="team-member__role">Managing Broker Santa Teresa</span> 545 </div> 546 </a> 547 </div> 548 <div class="team-member__container" data-search-string="Jorge Elizondo [email protected]" 549 data-tags="[]" 550 > 551 <a class="team-member__link" href="/agent/jorge-elizondo"> 552 <div class="team-member__image-wrap"> 553 <div class="team-member__image"> 554 <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/950bbc56-f1bb-41db-9ece-15cbbb125165" 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/950bbc56-f1bb-41db-9ece-15cbbb125165 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/950bbc56-f1bb-41db-9ece-15cbbb125165 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/950bbc56-f1bb-41db-9ece-15cbbb125165 1305w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jorge Elizondo seated with crossed arms in a striped shirt" class="portrait" loading="lazy"> 555 </div> 556 <div class="team-member__hover">
557 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 558 </div> 559 </div> 560 <div class="team-member__info"> 561 <span class="team-member__name">Jorge Elizondo</span> 562 <span class="team-member__role">South Pacific Managing Broker</span> 563 </div> 564 </a> 565 </div> 566 <div class="team-member__container" data-search-string="Oscar Perez [email protected]" 567 data-tags="[]" 568 > 569 <a class="team-member__link" href="/agent/oscar-perez"> 570 <div class="team-member__image-wrap"> 571 <div class="team-member__image"> 572 <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/x0oieadmtok8dbxindfz" 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/x0oieadmtok8dbxindfz 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/x0oieadmtok8dbxindfz 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/x0oieadmtok8dbxindfz 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Oscar Perez" class="portrait" loading="lazy"> 573 </div> 574 <div class="team-member__hover"> 575 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 576 </div> 577 </div> 578 <div class="team-member__info"> 579 <span class="team-member__name">Oscar Perez</span> 580 <span class="team-member__role">Associate Broker</span> 581 </div> 582 </a> 583 </div> 584 <div class="team-member__container" data-search-string="Paul Sanson [email protected]" 585 data-tags="[]" 586 > 587 <a class="team-member__link" href="/agent/paul-sanson"> 588 <div class="team-member__image-wrap"> 589 <div class="team-member__image"> 590 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/54c7e13a-018a-4499-821f-f9ff2f51f0f1" 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/54c7e13a-018a-4499-821f-f9ff2f51f0f1 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/54c7e13a-018a-4499-821f-f9ff2f51f0f1 1000w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Paul Sanson, wearing a collared shirt and dark jacket." class="portrait" loading="lazy"> 591 </div> 592 <div class="team-member__hover"> 593 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 594 </div> 595 </div> 596 <div class="team-member__info"> 597 <span class="team-member__name">Paul Sanson</span> 598 <span class="team-member__role">Associate Broker</span> 599 </div> 600 </a> 601 </div> 602 <div class="team-member__container" data-search-string="Stephanie Gazo [email protected]" 603 data-tags="[]" 604 > 605 <a class="team-member__link" href="/agent/stephanie-gazo"> 606 <div class="team-member__image-wrap"> 607 <div class="team-member__image"> 608 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cad18995-723b-4126-8392-6f387bef6a39" alt="Stephanie Gazo smiling in a white blouse and pearl necklace." class="portrait" loading="lazy"> 609 </div> 610 <div class="team-member__hover"> 611 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 612 </div> 613 </div> 614 <div class="team-member__info">
615 <span class="team-member__name">Stephanie Gazo</span> 616 <span class="team-member__role">Associate Broker</span> 617 </div> 618 </a> 619 </div> 620 <div class="team-member__container" data-search-string="Gabriel Gonzalez [email protected]" 621 data-tags="[]" 622 > 623 <a class="team-member__link" href="/agent/gabriel-gonzales"> 624 <div class="team-member__image-wrap"> 625 <div class="team-member__image"> 626 <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/ibxlabsrecvvmcwvsb6q" 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/ibxlabsrecvvmcwvsb6q 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/ibxlabsrecvvmcwvsb6q 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/ibxlabsrecvvmcwvsb6q 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Gabriel Gonzalez" class="portrait" loading="lazy"> 627 </div> 628 <div class="team-member__hover"> 629 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 630 </div> 631 </div> 632 <div class="team-member__info"> 633 <span class="team-member__name">Gabriel Gonzalez</span> 634 <span class="team-member__role">Associate Broker</span> 635 </div> 636 </a> 637 </div> 638 <div class="team-member__container" data-search-string="Enid Valverde [email protected]" 639 data-tags="[]" 640 > 641 <a class="team-member__link" href="/agent/enid-valverde"> 642 <div class="team-member__image-wrap"> 643 <div class="team-member__image"> 644 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/pbtw2lrppujsfz0xo8hv" 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/pbtw2lrppujsfz0xo8hv 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/pbtw2lrppujsfz0xo8hv 1023w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Enid Valverde" class="portrait" loading="lazy"> 645 </div> 646 <div class="team-member__hover"> 647 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 648 </div> 649 </div> 650 <div class="team-member__info"> 651 <span class="team-member__name">Enid Valverde</span> 652 <span class="team-member__role">Associate Broker</span> 653 </div> 654 </a> 655 </div> 656 <div class="team-member__container" data-search-string="Morgan Osborne [email protected]" 657 data-tags="[]" 658 > 659 <a class="team-member__link" href="/agent/morgan-osborne"> 660 <div class="team-member__image-wrap"> 661 <div class="team-member__image"> 662 <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/q1xw8ycmdvdgbfsvuh2t" 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/q1xw8ycmdvdgbfsvuh2t 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/q1xw8ycmdvdgbfsvuh2t 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/q1xw8ycmdvdgbfsvuh2t 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Morgan Osborne" class="portrait" loading="lazy"> 663 </div> 664 <div class="team-member__hover">
665 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 666 </div> 667 </div> 668 <div class="team-member__info"> 669 <span class="team-member__name">Morgan Osborne</span> 670 <span class="team-member__role">Real Estate Professional</span> 671 </div> 672 </a> 673 </div> 674 <div class="team-member__container" data-search-string="Andrew Mercer [email protected]" 675 data-tags="[]" 676 > 677 <a class="team-member__link" href="/agent/andrew-mercer"> 678 <div class="team-member__image-wrap"> 679 <div class="team-member__image"> 680 <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/wvyi3x5nb2zhf866iujf" 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/wvyi3x5nb2zhf866iujf 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/wvyi3x5nb2zhf866iujf 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/wvyi3x5nb2zhf866iujf 1837w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Andrew Mercer" class="portrait" loading="lazy"> 681 </div> 682 <div class="team-member__hover"> 683 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 684 </div> 685 </div> 686 <div class="team-member__info"> 687 <span class="team-member__name">Andrew Mercer</span> 688 <span class="team-member__role">Real Estate Professional</span> 689 </div> 690 </a> 691 </div> 692 <div class="team-member__container" data-search-string="Nicole Fernandez [email protected]" 693 data-tags="[]" 694 > 695 <a class="team-member__link" href="/agent/nicole-fernandez"> 696 <div class="team-member__image-wrap"> 697 <div class="team-member__image"> 698 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ak7juqiawrpdjhdafikp" 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/ak7juqiawrpdjhdafikp 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ak7juqiawrpdjhdafikp 1179w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Nicole Fernandez" class="portrait" loading="lazy"> 699 </div> 700 <div class="team-member__hover"> 701 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 702 </div> 703 </div> 704 <div class="team-member__info"> 705 <span class="team-member__name">Nicole Fernandez</span> 706 <span class="team-member__role">Real Estate Professional</span> 707 </div> 708 </a> 709 </div> 710 <div class="team-member__container" data-search-string="Jean-Pierre (JP) Boustany [email protected]" 711 data-tags="[]" 712 > 713 <a class="team-member__link" href="/agent/jean-pierre-boustany"> 714 <div class="team-member__image-wrap"> 715 <div class="team-member__image"> 716 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f9327244-ee6e-4d45-8f1d-50b7998774e3" 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/f9327244-ee6e-4d45-8f1d-50b7998774e3 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f9327244-ee6e-4d45-8f1d-50b7998774e3 990w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jean-Pierre (JP) Boustany smiling in glasses and a dark blazer in a black-and-white portrait." class="portrait" loading="lazy"> 717 </div> 718 <div class="team-member__hover">
719 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 720 </div> 721 </div> 722 <div class="team-member__info"> 723 <span class="team-member__name">Jean-Pierre (JP) Boustany</span> 724 <span class="team-member__role">Real Estate Professional</span> 725 </div> 726 </a> 727 </div> 728 <div class="team-member__container" data-search-string="Denisse Lashley [email protected]" 729 data-tags="[]" 730 > 731 <a class="team-member__link" href="/agent/denisse-lashley"> 732 <div class="team-member__image-wrap"> 733 <div class="team-member__image"> 734 <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/0ab64f25-952a-4352-8aed-3aea64862fbd" 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/0ab64f25-952a-4352-8aed-3aea64862fbd 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/0ab64f25-952a-4352-8aed-3aea64862fbd 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0ab64f25-952a-4352-8aed-3aea64862fbd 1290w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Denisse Lashley in a black-and-white portrait, wearing a light blazer and necklace." class="portrait" loading="lazy"> 735 </div> 736 <div class="team-member__hover"> 737 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 738 </div> 739 </div> 740 <div class="team-member__info"> 741 <span class="team-member__name">Denisse Lashley</span> 742 <span class="team-member__role">Real Estate Professional</span> 743 </div> 744 </a> 745 </div> 746 <div class="team-member__container" data-search-string="Willie Watson [email protected]" 747 data-tags="[]" 748 > 749 <a class="team-member__link" href="/agent/willie-watson"> 750 <div class="team-member__image-wrap"> 751 <div class="team-member__image"> 752 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vsgwhsqbnunzuxoimarz" alt="Willie Watson" class="portrait" loading="lazy"> 753 </div> 754 <div class="team-member__hover"> 755 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 756 </div> 757 </div> 758 <div class="team-member__info"> 759 <span class="team-member__name">Willie Watson</span> 760 <span class="team-member__role">Real Estate Professional</span> 761 </div> 762 </a> 763 </div> 764 <div class="team-member__container" data-search-string="Jose Quesada [email protected]" 765 data-tags="[]" 766 > 767 <a class="team-member__link" href="/agent/jose-quesada"> 768 <div class="team-member__image-wrap"> 769 <div class="team-member__image"> 770 <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/fvyey7atnlfw3bssexmi" 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/fvyey7atnlfw3bssexmi 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/fvyey7atnlfw3bssexmi 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/fvyey7atnlfw3bssexmi 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jose Quesada" loading="lazy"> 771 </div> 772 <div class="team-member__hover">
773 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 774 </div> 775 </div> 776 <div class="team-member__info"> 777 <span class="team-member__name">Jose Quesada</span> 778 <span class="team-member__role">Real Estate Professional</span> 779 </div> 780 </a> 781 </div> 782 <div class="team-member__container" data-search-string="Daniel Snider [email protected]" 783 data-tags="[]" 784 > 785 <a class="team-member__link" href="/agent/daniel-snider"> 786 <div class="team-member__image-wrap"> 787 <div class="team-member__image"> 788 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/zegyjmdlqgfa5o2b0us5" alt="Daniel Snider" class="portrait" loading="lazy"> 789 </div> 790 <div class="team-member__hover"> 791 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 792 </div> 793 </div> 794 <div class="team-member__info"> 795 <span class="team-member__name">Daniel Snider</span> 796 <span class="team-member__role">Real Estate Professional</span> 797 </div> 798 </a> 799 </div> 800 <div class="team-member__container" data-search-string="Kathy Valdez [email protected]" 801 data-tags="[]" 802 > 803 <a class="team-member__link" href="/agent/kathy-valdez"> 804 <div class="team-member__image-wrap"> 805 <div class="team-member__image"> 806 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/porrszv9st0b7bqzbhsq" alt="Kathy Valdez" class="portrait" loading="lazy"> 807 </div> 808 <div class="team-member__hover"> 809 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 810 </div> 811 </div> 812 <div class="team-member__info"> 813 <span class="team-member__name">Kathy Valdez</span> 814 <span class="team-member__role">Real Estate Professional</span> 815 </div> 816 </a> 817 </div> 818 <div class="team-member__container" data-search-string="Mario Guardia [email protected]" 819 data-tags="[]" 820 > 821 <a class="team-member__link" href="/agent/mario-guardia"> 822 <div class="team-member__image-wrap"> 823 <div class="team-member__image"> 824 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ea2e4a3b-7655-4d31-abdd-00dc8a1f744a" 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/ea2e4a3b-7655-4d31-abdd-00dc8a1f744a 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ea2e4a3b-7655-4d31-abdd-00dc8a1f744a 1124w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Mario Guardia smiling in a black jacket and white shirt." class="portrait" loading="lazy"> 825 </div> 826 <div class="team-member__hover"> 827 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 828 </div> 829 </div> 830 <div class="team-member__info"> 831 <span class="team-member__name">Mario Guardia</span> 832 <span class="team-member__role">Real Estate Professional</span> 833 </div> 834 </a> 835 </div> 836 <div class="team-member__container" data-search-string="Daniel Loria [email protected]" 837 data-tags="[]" 838 > 839 <a class="team-member__link" href="/agent/daniel-loria"> 840 <div class="team-member__image-wrap"> 841 <div class="team-member__image"> 842 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vbuvewmqqr5iqc3eixuu" 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/vbuvewmqqr5iqc3eixuu 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vbuvewmqqr5iqc3eixuu 1200w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Daniel Loria" class="portrait" loading="lazy"> 843 </div> 844 <div class="team-member__hover">
845 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 846 </div> 847 </div> 848 <div class="team-member__info"> 849 <span class="team-member__name">Daniel Loria</span> 850 <span class="team-member__role">Real Estate Professional</span> 851 </div> 852 </a> 853 </div> 854 <div class="team-member__container" data-search-string="Robert (Bobby) Novak [email protected]" 855 data-tags="[]" 856 > 857 <a class="team-member__link" href="/agent/robert-bobby-novak"> 858 <div class="team-member__image-wrap"> 859 <div class="team-member__image"> 860 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bbaa01d9-14b2-4a84-9558-1c3659f18b0d" alt="Robert (Bobby) Novak smiling in a suit and tie against a blurred office background." class="portrait" loading="lazy"> 861 </div> 862 <div class="team-member__hover"> 863 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 864 </div> 865 </div> 866 <div class="team-member__info"> 867 <span class="team-member__name">Robert (Bobby) Novak</span> 868 <span class="team-member__role">Real Estate Professional</span> 869 </div> 870 </a> 871 </div> 872 <div class="team-member__container" data-search-string="Isaac Leiva [email protected]" 873 data-tags="[]" 874 > 875 <a class="team-member__link" href="/agent/isaac-leiva"> 876 <div class="team-member__image-wrap"> 877 <div class="team-member__image"> 878 <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/689d1b32-b2d9-4b2f-874a-4b9095d6151d" 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/689d1b32-b2d9-4b2f-874a-4b9095d6151d 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/689d1b32-b2d9-4b2f-874a-4b9095d6151d 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/689d1b32-b2d9-4b2f-874a-4b9095d6151d 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Isaac Leiva, arms crossed in a striped shirt." class="portrait" loading="lazy"> 879 </div> 880 <div class="team-member__hover"> 881 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 882 </div> 883 </div> 884 <div class="team-member__info"> 885 <span class="team-member__name">Isaac Leiva</span> 886 <span class="team-member__role">Real Estate Professional</span> 887 </div> 888 </a> 889 </div> 890 <div class="team-member__container" data-search-string="Max Tattenbach [email protected]" 891 data-tags="[]" 892 > 893 <a class="team-member__link" href="/agent/max-tattenbach"> 894 <div class="team-member__image-wrap"> 895 <div class="team-member__image"> 896 <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/5ef8fab0-1ca6-46c9-9018-e7532bb92c58" 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/5ef8fab0-1ca6-46c9-9018-e7532bb92c58 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/5ef8fab0-1ca6-46c9-9018-e7532bb92c58 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/5ef8fab0-1ca6-46c9-9018-e7532bb92c58 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Max Tattenbach seated beside a surfboard in a bright interior." class="portrait" loading="lazy"> 897 </div> 898 <div class="team-member__hover">
899 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 900 </div> 901 </div> 902 <div class="team-member__info"> 903 <span class="team-member__name">Max Tattenbach</span> 904 <span class="team-member__role">Real Estate Professional</span> 905 </div> 906 </a> 907 </div> 908 <div class="team-member__container" data-search-string="Edouard François [email protected]" 909 data-tags="[]" 910 > 911 <a class="team-member__link" href="/agent/edouard-francois"> 912 <div class="team-member__image-wrap"> 913 <div class="team-member__image"> 914 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/038507c5-0c17-4d4e-a1a0-f9c058db42e7" alt="Edouard François in a light blazer against leafy foliage." class="portrait" loading="lazy"> 915 </div> 916 <div class="team-member__hover"> 917 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 918 </div> 919 </div> 920 <div class="team-member__info"> 921 <span class="team-member__name">Edouard François</span> 922 <span class="team-member__role">Real Estate Professional</span> 923 </div> 924 </a> 925 </div> 926 <div class="team-member__container" data-search-string="Joseph Torres [email protected]" 927 data-tags="[]" 928 > 929 <a class="team-member__link" href="/agent/joseph-torres"> 930 <div class="team-member__image-wrap"> 931 <div class="team-member__image"> 932 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/859b9ceb-5243-4a0a-baa8-e4dcc980b21d" 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/859b9ceb-5243-4a0a-baa8-e4dcc980b21d 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/859b9ceb-5243-4a0a-baa8-e4dcc980b21d 1109w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Joseph Torres in a striped collared shirt, facing the camera." class="portrait" loading="lazy"> 933 </div> 934 <div class="team-member__hover"> 935 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 936 </div> 937 </div> 938 <div class="team-member__info"> 939 <span class="team-member__name">Joseph Torres</span> 940 <span class="team-member__role">Real Estate Professional</span> 941 </div> 942 </a> 943 </div> 944 <div class="team-member__container" data-search-string="Antonio Facio [email protected]" 945 data-tags="[]" 946 > 947 <a class="team-member__link" href="/agent/antonio-facio"> 948 <div class="team-member__image-wrap"> 949 <div class="team-member__image"> 950 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/wnyezafruf231qmzse2z" alt="Antonio Facio" class="portrait" loading="lazy"> 951 </div> 952 <div class="team-member__hover"> 953 <span class="btn btn--primary-dark team-member__btn button-style-1">LEARN MORE</span> 954 </div> 955 </div> 956 <div class="team-member__info"> 957 <span class="team-member__name">Antonio Facio</span> 958 <span class="team-member__role">Real Estate Professional</span> 959 </div> 960 </a> 961 </div> 962 </div> 963 964 965 <div class="empty-message js-empty-message"> 966 <h3 class="header2 empty-title">No result found</h3> 967 </div> 968 </div> 969</div> 970</section> 971<section id="section-7545c45a-2d61-41d5-8fa1-79536cb17100" class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6"> 972</section> 973<section id="section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01" class="solid-section is-font-color-dark is-background-color-light" data-el-id="09e98f83-51e3-4837-80a0-019e211aba4b"> 974<div class="redesign featured-properties-section " data-auto-scroll=false data-autoplay-speed=3000> 975 <div class="container"> 976 <div class="featured-properties-header"> 977 <h2 class="serif">Exclusive Listings</h2> 978 979 <ul class="slick-links-nav"> 980 <li><span class="link link--white feature prev">previous</span></li> 981 <li><span class="link link--white feature next">next</span> <span class="spacer"></span></li> 982 </ul> 983 </div> 984 <ul class="featured-properties carousel-container"> 985 <li class="featured-properties__item-cover"> 986 <div class="featured-properties__item feature"> 987 <a class="featured-properties__item-info" href="/properties/expansive-ocean-views-central-pacific-estate"> 988 <div class="featured-properties__img"> 989 <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/d76dc930-bf49-4e68-89ca-1ab87566c590" 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/d76dc930-bf49-4e68-89ca-1ab87566c590 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/d76dc930-bf49-4e68-89ca-1ab87566c590 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/d76dc930-bf49-4e68-89ca-1ab87566c590 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/d76dc930-bf49-4e68-89ca-1ab87566c590 2048w" alt="" loading="lazy"> 990 </div> 991 <span class="featured-properties__label">For Sale</span> 992 993 <div class="featured-properties__text"> 994 <h4 class="serif">
994Expansive Ocean Views Central Pacific Estate</h4> 995 <p> 996 Parrita, Puntarenas 60901 997 </p> 998 999 <p> 1000 1001 4,800 Acres 1002 </p> 1003 1004 <h5> 1005 Price Upon Request 1006 </h5> 1007 </div> 1008 </a> 1009 <div class="featured-properties__hover"> 1010 <a href="/properties/expansive-ocean-views-central-pacific-estate"></a> 1011 <div class="featured-properties__buttons"> 1012 <a href="/properties/expansive-ocean-views-central-pacific-estate" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a> 1013 </div> 1014 </div> 1015 </div> 1016 </li> 1017 <li class="featured-properties__item-cover"> 1018 <div class="featured-properties__item feature"> 1019 <a class="featured-properties__item-info" href="/properties/majagual-estate"> 1020 <div class="featured-properties__img"> 1021 <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/4a801167-8992-40b2-9893-b718946cc0c5" 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/4a801167-8992-40b2-9893-b718946cc0c5 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/4a801167-8992-40b2-9893-b718946cc0c5 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/4a801167-8992-40b2-9893-b718946cc0c5 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4a801167-8992-40b2-9893-b718946cc0c5 2048w" alt="" loading="lazy"> 1022 </div> 1023 <span class="featured-properties__label">For Sale</span> 1024 1025 <div class="featured-properties__text"> 1026 <h4 class="serif">Majagual Estate</h4> 1027 <p> 1028 Playa Majagual , San Juan del Sur, Rivas 48600 1029 </p> 1030 1031 <p> 1032 23 BD | 1033 1034 17,000 Sq.Ft. 1035 </p> 1036 1037 <h5> 1038 $31,500,000 1039 </h5> 1040 </div> 1041 </a> 1042 <div class="featured-properties__hover"> 1043 <a href="/properties/majagual-estate"></a> 1044 <div class="featured-properties__buttons"> 1045 <a href="/properties/majagual-estate" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a> 1046 </div> 1047 </div> 1048 </div> 1049 </li> 1050 <li class="featured-properties__item-cover"> 1051 <div class="featured-properties__item feature"> 1052 <a class="featured-properties__item-info" href="/properties/playa-barrigona-beach-front"> 1053 <div class="featured-properties__img"> 1054 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/wiogtsvzfwwgar4dgsox" 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/wiogtsvzfwwgar4dgsox 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/wiogtsvzfwwgar4dgsox 1280w" alt="" loading="lazy"> 1055 </div> 1056 <span class="featured-properties__label">For Sale</span> 1057 1058 <div class="featured-properties__text"> 1059 <h4 class="serif">Playa Barrigona Beach Front</h4> 1060 <p> 1061 Playa Barrigona Beach Front, Playa Barrigona, Guanacaste 1062 </p> 1063 1064 <p> 1065 1066 1067 </p> 1068 1069 <h5> 1070 $29,749,999 1071 </h5> 1072 </div> 1073 </a> 1074 <div class="featured-properties__hover"> 1075 <a href="/properties/playa-barrigona-beach-front"></a> 1076 <div class="featured-properties__buttons"> 1077 <a href="/properties/playa-barrigona-beach-front" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a> 1078 </div> 1079 </div> 1080 </div> 1081 </li> 1082 <li class="featured-properties__item-cover"> 1083 <div class="featured-properties__item feature"> 1084 <a class="featured-properties__item-info" href="/properties/punta-del-norte"> 1085 <div class="featured-properties__img"> 1086 <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/3c316472-a6fe-48cb-9a73-fa0aa9d2ce8b" 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/3c316472-a6fe-48cb-9a73-fa0aa9d2ce8b 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/3c316472-a6fe-48cb-9a73-fa0aa9d2ce8b 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/3c316472-a6fe-48cb-9a73-fa0aa9d2ce8b 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/3c316472-a6fe-48cb-9a73-fa0aa9d2ce8b 2048w" alt="" loading="lazy"> 1087 </div> 1088 <span class="featured-properties__label">For Sale</span> 1089 1090 <div class="featured-properties__text"> 1091 <h4 class="serif">Punta del Norte</h4> 1092 <p> 1093 Northern Guanacaste â Gulf of Santa Elena, La Cruz, Guanacaste 51004 1094 </p> 1095 1096 <p> 1097 1098 1099 </p> 1100 1101 <h5> 1102 $25,000,000 1103 </h5> 1104 </div> 1105 </a> 1106 <div class="featured-properties__hover"> 1107 <a href="/properties/punta-del-norte"></a> 1108 <div class="featured-properties__buttons"> 1109 <a href="/properties/punta-del-norte" class="btn btn--primary-dark button-style-1">VIEW PROPERTY</a> 1110 </div> 1111 </div> 1112 </div> 1113 </li> 1114 </ul> 1115 <div class="featured-properties-button-holder"> <a 1116 href="/properties/sale" 1117 1118 class="btn btn--primary-light button-style-1" 1119 1120 1121 1122 1123 1124 > 1125 VIEW ALL 1126 </a> 1127</div> 1128 </div> 1129</div> 1130 1131</section> 1132<section class="image-section is-font-color-light is-background-color-light" id="section-34367182-fbb0-47db-a832-bcdfb313ab45" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c"> 1133
1133<script> 1134 (function(){ 1135 const sectionId = 'section-34367182-fbb0-47db-a832-bcdfb313ab45' 1136 const section = document.querySelector(`#${sectionId}`); 1137 var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image'); 1138 1139 if('true' === 'true') { 1140 section.classList.add('parallax-enabled'); 1141 section.style.setProperty('--sectionBackground', sectionBg); 1142 section.style.setProperty('background', 'none'); 1143 } 1144 })() 1145</script>
1145 1146<div class="redesign work-with-us parallax"> 1147 <div class="container"> 1148 <h2 class="serif">Work With Us</h2> 1149 <div class="description">The select group of Real Estate Agents will guide you through the process from selection all the way through closing making this a seamless process for you. The team will provide you the customer experience you deserve.</div> 1150 <div class="btn-container"> 1151 <a 1152 role="button" 1153 data-type="CONTACT_US" 1154 class="btn btn--primary-light button-style-2" 1155 1156 1157 1158 1159 1160 > 1161 Contact Us 1162 </a> 1163 </div> 1164 </div> 1165</div> 1166</section> 1167<section id="section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99" class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284"> 1168
1168<script type="text/x-handlebars-template" class="jsIGItem"> 1169 <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}"> 1170 <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div> 1171 <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div> 1172 {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}} 1173 </a> 1174</script>
1174 1175<div class="ig-feed redesign"> 1176 <div class="ig-feed-top lp-container"> 1177 <div class="top-wrapper"> 1178 <div class="top-left"> 1179 <h3 class="lp-h3 title">Follow Us on Instagram</h3> 1180 <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a> 1181 </div> 1182 <div class="top-right"> 1183 <a href="#" target="_blank" class="lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width follow-button jsIGLink button-style-1">Follow Us</a> 1184 <a class="nav-button top-nav-prev hidden-control button-style-1"> 1185 <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> 1186 </a> 1187 <a class="nav-button top-nav-next hidden-control button-style-1"> 1188 <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> 1189 </a> 1190 </div> 1191 </div> 1192 </div> 1193 <div class="lp-container ig-feed-container "> 1194 <div class="ig-feed-feed" data-limit="33"> 1195 </div> 1196 </div> 1197 <div class="bottom-controls"> 1198 <a class="bottom-nav-button bottom-nav-prev button-style-1"> 1199 <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> 1200 </a> 1201 <a class="bottom-nav-button bottom-nav-next button-style-1"> 1202 <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> 1203 </a> 1204 </div> 1205</div> 1206 1207</section> 1208 1209 <div id="modals" class="modals"></div> 1210 <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b"> 1211 <div class="footer redesign no_newsletter no-names"> 1212 <div class="container"> 1213 <h3>Christieâs International Real Estate Costa Rica</h3> 1214 <div class="info-wrap"> 1215 <div class="info-wrap-contact agent_box"> 1216 <div class="info-wrap-contact_zone type_user"> 1217 1218 <div class="info-wrap-contact_cell"> 1219 <i> 1220 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 1221 <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" /> 1222 </svg> 1223 </i> 1224 <p class="contact_title">Email</p> 1225 <a href="/cdn-cgi/l/email-protection#5831363e37183b2a3b312a3d763b3735" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1"><span class="__cf_email__" data-cfemail="eb82858d84ab88998882998ec5888486">[email protected]</span></a> 1226 </div> 1227 <div class="info-wrap-contact_cell"> 1228 <i><svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1229 <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
122913 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" /> 1230 </svg></i> 1231 <p class="contact_title">Phone Number</p> 1232 <a href="tel:+50626544004" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">+506 2654-4004</a> 1233 </div> 1234 </div> 1235 <div class="info-wrap-contact_zone type_user"> 1236 <div class="info-wrap-contact_cell"> 1237 <i> 1238 <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1239 <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" /> 1240 </svg> 1241 </i> 1242 <p class="contact_title">Phone Number</p> 1243 <a href="tel:+18776612060" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">+1-877-661-2060</a> 1244 </div> 1245 </div> 1246 <div class="info-wrap-contact_zone"> 1247 <div class="info-wrap-contact_cell"> 1248 <i> 1249 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 1250 <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
12500.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" /> 1251 <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" /> 1252 <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" /> 1253 </svg> 1254 </i> 1255 <p class="info-wrap-contact_title">Address</p> 1256 <p class="info-wrap-contact_link grey-text"><p>Christie's Office at Marina Flamingo<br />Playa Flamingo, Guanacaste 50304</p></p> 1257 </div> 1258 </div> 1259 </div> 1260 </div> 1261 <div class="text_footer first_text_footer"> 1262 <div class="images_box"> 1263 <div class="img_size"> 1264 <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/65aaf48c-f9ea-4af7-9859-66c9c1cbf244" 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/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 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/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 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/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/65aaf48c-f9ea-4af7-9859-66c9c1cbf244 3456w" alt="Christie's International Real Estate Costa Rica" sizes="200px"> 1265 </div> 1266 </div> 1267 <div class="luxury-text"> 1268 <div id="ipql"> 1269<p id="iaa1">All information is deemed reliable but not guaranteed and should be independently reviewed and verified.</p> 1270<p id="iaa1"><img id="iivu" src="https://media-production.lp-cdn.com/media/44784f4a-226b-49da-95c2-48243e50ac49" width="100px;" height="auto"></p> 1271</div> 1272<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}</style> 1273 </div> 1274 </div> 1275 <div class="text_footer second_text_footer"> 1276 <div class="text_content_wrap"> 1277 <div> 1278 <div> </div> 1279<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 1280 </div> 1281 </div> 1282 </div> 1283 <div class="info-privacy"> 1284 <div class="form-row info-privacy__row"> 1285 1286 <div class="form-col form-col--powered powered-box"> 1287 <div class="powered_zone"> 1288 Real Estate Website Design by <a href="https://www.luxurypresence.com/real-estate-website-design/" target="_blank" class="lp-link grey-text luxury-link underlined hyperlink-style-1">Luxury Presence</a> 1289 </div> 1290 </div> 1291 1292 <div class="form-col form-col--copyright"> 1293 <div class="copy_zone">
1294 <span class="copy_words">Copyright ©</span> <span class="auto-year-update">2026</span> 1295 | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-1">Privacy Policy</a> 1296 1297 </div> 1298 </div> 1299 1300 <div class="form-col form-col--socials"> 1301 <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone"> 1302 1303 <li> 1304 <a 1305 href="https://www.youtube.com/@costaricachristies" 1306 class="lp-socials__link socials__item socials__link wow fadeInUp" 1307 data-wow-delay="0s" 1308 target="_blank" 1309 aria-label="YOUTUBE" 1310 > 1311 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 1312 </a> 1313 </li> 1314 <li> 1315 <a 1316 href="https://www.facebook.com/costaricachristies/" 1317 class="lp-socials__link socials__item socials__link wow fadeInUp" 1318 data-wow-delay="0.1s" 1319 target="_blank" 1320 aria-label="FACEBOOK" 1321 > 1322 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 1323 </a> 1324 </li> 1325 <li> 1326 <a 1327 href="https://www.instagram.com/costaricachristies/" 1328 class="lp-socials__link socials__item socials__link wow fadeInUp" 1329 data-wow-delay="0.2s" 1330 target="_blank" 1331 aria-label="INSTAGRAM" 1332 > 1333 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 1334 </a> 1335 </li> 1336 <li> 1337 <a 1338 href="https://www.linkedin.com/company/christiescostarica/" 1339 class="lp-socials__link socials__item socials__link wow fadeInUp" 1340 data-wow-delay="0.3s" 1341 target="_blank" 1342 aria-label="LINKEDIN" 1343 > 1344 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 1345 </a> 1346 </li> 1347 <li> 1348 <a 1349 href="https://www.google.com/search?sca_esv=576780426&q=costa+rica+christie%27s&spell=1&sa=X&ved=2ahUKEwjMz6CR-pOCAxXHJEQIHQS5BtcQBSgAegQIBxAB&biw=1796&bih=934&dpr=1" 1350 class="lp-socials__link socials__item socials__link wow fadeInUp" 1351 data-wow-delay="0.4s" 1352 target="_blank" 1353 aria-label="GOOGLE" 1354 > 1355 <span class="lp-i lp-i--google" aria-hidden="true"></span> 1356 </a> 1357 </li> 1358 </ul> </div> 1359 </div> 1360 </div> 1361 </div> 1362</div> 1363 1364 </footer> 1365 1366 <div id="modal-global-contact-us" class="modal " 1367 data-el-id="" 1368 style="background-color: ;" 1369 > 1370 <div class="modal-content"> 1371 <div class="contact-form redesign " style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/uzskeswjcmh8cxwoaxr8')"> 1372 <div class="container"> 1373 <div class="section-details" style="--colorTxt: #ffffff"> 1374 <h2>Contact Details</h2> 1375 1376 <div class="info-zone"> 1377 1378 <div class="info-zone_contact type_user"> 1379 <h4 class="serif">Costa Rica CIRE</h4> 1380 <div class="info-zone_contact_cell"> 1381 <i> 1382 <svg width="30" height="25" viewB
1382ox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1383 <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"/> 1384 </svg> 1385 </i> 1386 <p class="contact_title">Phone</p> 1387 <a href="tel:+506 2654-4004" class="lp-link info-zone_contact_link link hyperlink-style-2">+506 2654-4004</a> 1388 </div> 1389 <div class="info-zone_contact_cell"> 1390 <i> 1391 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 1392 <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"/> 1393 </svg> 1394 </i> 1395 <p class="contact_title">Email</p> 1396 <a href="/cdn-cgi/l/email-protection#e78e898188a78495848e9582c984888a" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="31585f575e715243525843541f525e5c">[email protected]</span></a> 1397 </div> 1398 </div> 1399 <div class="info-zone_contact type_user"> 1400 <div class="info-zone_contact_cell"> 1401 <i> 1402 <svg width="30" height="25" viewB
1402ox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1403 <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"/> 1404 </svg> 1405 </i> 1406 <p class="contact_title">Phone</p> 1407 <a href="tel:+1-877-661-2060" class="info-zone_contact_link hvr_animation link link--white hyperlink-style-2">+1-877-661-2060</a> 1408 </div> 1409 </div> 1410 <div class="info-zone_contact"> 1411 <div class="info-zone_contact_cell"> 1412 <i> 1413 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 1414 <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"/> 1415 <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"/> 1416 <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"/> 1417 </svg> 1418 </i> 1419 <p class="info-wrap-contact_title">Address</p> 1420 <p class="info-zone_contact_link pre-line">Christie's Office at Marina Flamingo 1421 Playa Flamingo, Guanacaste 50304</p> 1422 </div> 1423 </div> 1424 <div class="info-zone_contact"> 1425 <div class="info-zone_contact_cell"> 1426 <p class="pre-line"><div></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style></p> 1427 </div> 1428 </div> 1429 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__c
1429ontact-column"> 1430 1431 <li> 1432 <a 1433 href="https://www.youtube.com/@costaricachristies" 1434 class="lp-socials__link socials__item wow fadeInUp socials__link" 1435 data-wow-delay="0s" 1436 target="_blank" 1437 aria-label="YOUTUBE" 1438 > 1439 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 1440 </a> 1441 </li> 1442 <li> 1443 <a 1444 href="https://www.facebook.com/costaricachristies/" 1445 class="lp-socials__link socials__item wow fadeInUp socials__link" 1446 data-wow-delay="0.1s" 1447 target="_blank" 1448 aria-label="FACEBOOK" 1449 > 1450 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 1451 </a> 1452 </li> 1453 <li> 1454 <a 1455 href="https://www.instagram.com/costaricachristies/" 1456 class="lp-socials__link socials__item wow fadeInUp socials__link" 1457 data-wow-delay="0.2s" 1458 target="_blank" 1459 aria-label="INSTAGRAM" 1460 > 1461 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 1462 </a> 1463 </li> 1464 <li> 1465 <a 1466 href="https://www.linkedin.com/company/christiescostarica/" 1467 class="lp-socials__link socials__item wow fadeInUp socials__link" 1468 data-wow-delay="0.3s" 1469 target="_blank" 1470 aria-label="LINKEDIN" 1471 > 1472 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 1473 </a> 1474 </li> 1475 <li> 1476 <a 1477 href="https://www.google.com/search?sca_esv=576780426&q=costa+rica+christie%27s&spell=1&sa=X&ved=2ahUKEwjMz6CR-pOCAxXHJEQIHQS5BtcQBSgAegQIBxAB&biw=1796&bih=934&dpr=1" 1478 class="lp-socials__link socials__item wow fadeInUp socials__link" 1479 data-wow-delay="0.4s" 1480 target="_blank" 1481 aria-label="GOOGLE" 1482 > 1483 <span class="lp-i lp-i--google" aria-hidden="true"></span> 1484 </a> 1485 </li> 1486 </ul> </div> 1487 </div> 1488 <div class="section-message"> 1489 <form data-type="contact-form"> 1490 <h2>Submit a Message</h2> 1491 <div class="h-pot"> 1492 <label for="-middleName">Middle Name</label> 1493 <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 1494 </div> 1495 1496 1497 <div class="lp-input-group"> 1498 <label for="prod-name" class="lp-label">Name</label> 1499 <input id="prod-name" name="name" value="" required="" class="lp-in
1499put lp-input--light"> 1500 </div> 1501 <div class="lp-input-group"> 1502 <label for="prod-email" class="lp-label">Email</label> 1503 <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light"> 1504 </div> 1505 <div class="lp-input-group"> 1506 <label for="prod-phone" class="lp-label">Phone</label> 1507 <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light"> 1508 </div> 1509 <div class="lp-input-group m16"> 1510 <label for="prod-message" class="lp-label">Message</label> 1511 <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea> 1512 </div> 1513 1514 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 1515 <label class='lp-tcr-content'> 1516 <span class='lp-tcr-checkbox'> 1517 <input 1518 type='checkbox' 1519 id='-termsAccepted' 1520 name='termsAccepted' 1521 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1522 oninput="this.setCustomValidity('')" 1523 required 1524 /></span> 1525 <span class='lp-tcr-message'> 1526 1527 I agree to be contacted by 1528 Costa Rica Christie's International Real Estate 1529 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1530 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 1531 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 1532 </span> 1533 </label> 1534 1535 </div> 1536 1537 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 1538 1539 1540 <button type="submit" class="submitButton lp-btn button-style-2"> 1541 <span class="label-initial">Submit</span> 1542 <span class="label-loading">Submitting</span> 1543 <span class="label-success">Submitted</span> 1544 <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span> 1545 </button> 1546 <p class="success-message success hide"> 1547 Message sent successfully! 1548 </p> 1549 </form> 1550 1551 1552 </div> 1553 </div> 1554 </div> 1555 1556 </div> 1557 <button class="close lp-close" type="button" aria-label="close modal"> 1558 <span class="lp-close-icon" aria-hidden="true"></span> 1559 </button> 1560 </div> 1561 <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;"> 1562 <style> 1563 #qualifying-questions-modal .custom-select-toggle { 1564 border: 1px solid #848484; 1565 border-radius: 8px; 1566 padding: 12px 16px; 1567 } 1568 1569 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 1570 color: #848484; 1571 } 1572 1573 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 1574 color: #848484; 1575 opacity: 1; 1576 } 1577 1578 #qualifying-questions-modal .disclaimer-more { 1579 display: none; 1580 } 1581 1582 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 1583 display: inline; 1584 } 1585 1586 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 1587 display: none; 1588 } 1589 </style>
vendor: 119 bytes, lines 1589-1590
1589 1590 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1590<script> 1591 function toggleDisclaimerQualifyingQuestionsModal() { 1592 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 1593 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 1594 1595 if (disclaimerText.classList.contains('collapsed')) { 1596 disclaimerText.classList.remove('collapsed'); 1597 toggleButton.textContent = 'Read less'; 1598 toggleButton.setAttribute('aria-expanded', 'true'); 1599 } else { 1600 disclaimerText.classList.add('collapsed'); 1601 toggleButton.textContent = 'Read more'; 1602 toggleButton.setAttribute('aria-expanded', 'false'); 1603 } 1604 } 1605 </script>
1605 1606 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 1607 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 1608 <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;"> 1609 <span aria-hidden="true">×</span> 1610 </button> 1611 <div style="padding: 40px 30px 32px;"> 1612 <div style="text-align: left; margin-bottom: 32px;"> 1613 <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;"> 1614 Thanks, please provide more information to help serve you 1615 </h2> 1616 </div> 1617 <form id="qualifying-questions-modal-form" data-type="contact-form"> 1618 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 1619 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 1620 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 1621 <label for="qualifying-questions-modal-email" style="display:none;"> 1622 Email 1623 </label> 1624 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 1625 Trigger Source 1626 </label> 1627 1628 <div style="margin-bottom: 20px;"> 1629 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 1630 Phone Number 1631 </label> 1632 <input 1633 type="tel" 1634 id="qualifying-questions-modal-phoneNumber" 1635 name="phoneNumber" 1636 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;" 1637 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 1638 required 1639 placeholder="Phone" 1640 aria-label="Phone Number" 1641 inputmode="tel" 1642 autocomplete="tel" 1643 onfocus="this.style.borderColor='black';" 1644 onblur="this.style.borderColor='#848484';" 1645 /> 1646 </div> 1647 1648 <div style="margin-bottom: 20px;"> 1649 <label for="qualifying-questions-modal-interest" style="display:none;"> 1650 Interest 1651 </label> 1652 <select 1653 id="qualifying-questions-modal-interest" 1654 name="interest" 1655 required 1656 data-label="Interest" 1657 aria-label="Interest" 1658 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;" 1659 onfocus="this.style.borderColor='black'; this.style.color='black';" 1660 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 1661 > 1662 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 1663 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 1664 <option value="Selling" style="background: #fff; color: black;">Selling</option> 1665 <option value="Buying" style="background: #fff; color: black;">Buying</option> 1666 <option value="Renting" style="background: #fff; color: black;">Renting</option> 1667 <option value="Other" style="background: #fff; color: black;">Other</option> 1668 </select> 1669 </div> 1670 1671 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 1672 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 1673 <label class='lp-tcr-content'>
1674 <span class='lp-tcr-checkbox'> 1675 <input 1676 type='checkbox' 1677 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 1678 name='termsAccepted' 1679 aria-describedby='qualifying-questions-modal-disclaimer-text' 1680 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 1681 oninput="this.setCustomValidity('')" 1682 required 1683 /></span> 1684 <span class='lp-tcr-message'> 1685 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 1686 1687 I agree to be contacted by 1688 <strong>Christies International Real Estate Costa Rica </strong> 1689 via call, email, and text <span class="disclaimer-more">for real estate services. 1690 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 1691 You can also click the unsubscribe link in the emails. 1692 Message and data rates may apply. Message frequency may vary.</span> 1693 <span class="disclaimer-ellipsis">...</span> 1694 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 1695 </div> 1696 <button 1697 id="qualifying-questions-modal-toggle-disclaimer" 1698 type="button" 1699 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 1700 aria-expanded="false" 1701 onclick="toggleDisclaimerQualifyingQuestionsModal()" 1702 > 1703 Read more 1704 </button> 1705 </span> 1706 </label> 1707 </div> 1708 1709 <div> 1710 <button 1711 type="submit" 1712 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;" 1713 onmouseover="this.style.background='transparent'; this.style.color='black';" 1714 onmouseout="this.style.background='black'; this.style.color='white';" 1715 > 1716 Submit 1717 </button> 1718 </div> 1719 </form> 1720 </div> 1721 </div> 1722 </div> 1723 </div> 1724 1725
1725<script> 1726 (function() { 1727 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 1728 1729 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 1730 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 1731 entries.forEach(function(video) { 1732 if (video.isIntersecting) { 1733 for (var source in video.target.children) { 1734 var videoSource = video.target.children[source]; 1735 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 1736 videoSource.src = videoSource.dataset.src; 1737 } 1738 } 1739 1740 video.target.load(); 1741 video.target.classList.remove("lazy"); 1742 lazyVideoObserver.unobserve(video.target); 1743 } 1744 }); 1745 }); 1746 1747 lazyVideos.forEach(function(lazyVideo) { 1748 lazyVideoObserver.observe(lazyVideo); 1749 }); 1750 } 1751 })(); 1752 </script>
1752 1753 1754 <!-- Global site tag (gtag.js) - Google Analytics --> 1755
1755<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1755 1756 1757 <!-- Google Tag Manager --> 1758
1758<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1759 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1760 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 1761 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1762 })(window,document,'script','dataLayer','GTM-WFRBDGTV');</script>
1762 1763 <!-- End Google Tag Manager --> 1764 <!-- Google Tag Manager --> 1765
1765<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1766 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1767 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 1768 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1769 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1769 1770 <!-- End Google Tag Manager --> 1771 1772 1773 <!-- LP Tracker (divolte.js) - LP Divolte --> 1774
1774<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1774 1775 <!-- LP Tracker (eventBus) - LP EventBus --> 1776
1776<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1776 1777 1778
1778<script> 1779 window.dataLayer = window.dataLayer || []; 1780 document.sendGoogleTagManagerEvent = function() { 1781 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 1782 if (window.navigator.globalPrivacyControl) { 1783 return; 1784 } 1785 1786 dataLayer.push(arguments); 1787 } 1788 1789 document.sendGoogleTagManagerEvent('js', new Date()); 1790 document.sendGoogleTagManagerEvent('config', 'G-X82Z9S9TFM', { page: location.pathname, location: location.href }); 1791 document.sendGoogleAnalyticsEvent = function(googleEvent) { 1792 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 1793 event_category: googleEvent.eventCategory, 1794 event_label: googleEvent.eventLabel, 1795 value: googleEvent.eventValue, 1796 page: googleEvent.page, 1797 location: googleEvent.location 1798 }) 1799 }; 1800 1801 document.addEventListener("DOMContentLoaded", function() { 1802 (function() { 1803 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 1804 var date = new Date(); 1805 var elements = document.getElementsByClassName('auto-year-update'); 1806 var i; 1807 for (i = 0; i < elements.length; i++) { 1808 elements[i].innerText = date.getFullYear(); 1809 } 1810 })(); 1811 if (window.divolteLp) { 1812 window.divolteLp('sendLpPageView', {}); 1813 } 1814 if (window.eventBusLp) { 1815 window.eventBusLp('sendLpPageView', {}); 1816 } 1817 }); 1818 </script>
1818 1819 1820 1821
1821<script> 1822 // Function to dynamically load a script 1823 function loadScript(url, callback) { 1824 var script = document.createElement('script'); 1825 script.type = 'text/javascript'; 1826 script.src = url; 1827 script.defer = true; 1828 script.async = true; 1829 script.onload = callback; 1830 document.head.appendChild(script); 1831 } 1832 1833 // Function to dynamically load CSS file 1834 function loadCSS(url) { 1835 var link = document.createElement("link"); 1836 link.rel = "stylesheet"; 1837 link.href = url; 1838 document.head.appendChild(link); 1839 } 1840 1841 // Global methods / variables that can be accessed by element js 1842 window.luxuryPresence = { 1843 libs: { 1844 loadJs: loadScript, 1845 loadCss: loadCSS, 1846 jsLibsMap: { 1847 paroller: { 1848 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 1849 isLoaded: false, 1850 }, 1851 ionRangeSlider: { 1852 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 1853 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 1854 isLoaded: false, 1855 requires: ['jquery'], 1856 }, 1857 splide: { 1858 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 1859 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 1860 isLoaded: false, 1861 }, 1862 wow: { 1863 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 1864 isLoaded: false, 1865 }, 1866 jquery: { 1867 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 1868 isLoaded: false, 1869 }, 1870 slick: { 1871 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 1872 isLoaded: false, 1873 requires: ['jquery'], 1874 }, 1875 libphonenumber: { 1876 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 1877 isLoaded: false, 1878 }, 1879 }, 1880 }, 1881 }; 1882 </script>
1882 1883
1883<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>
1883 1884
1884<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1884 1885
1885<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1885 1886
1886<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1886 1887
1887<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>
1887 1888
1888<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>
1888 1889
1889<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>
1889 1890 1891 <!-- GOOGLE TRANSLATE SCRIPT --> 1892
1892<script> 1893 function googleTranslateElementInit() { 1894 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 1895 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 1896 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 1897 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 1898 translate.innerText = ''; 1899 new google.translate.TranslateElement({ 1900 pageLanguage: 'en', 1901 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 1902 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 1903 }, translate); 1904 }); 1905 } 1906 </script>
1906 1907
1907<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1907 1908
1908<script defer src="https://accounts.google.com/gsi/intermediate"></script>
1908 1909 1910 <!-- GOOGLE TRANSLATE SCRIPT END--> 1911
1911<script> 1912 1913 // UI helpers 1914 (function () { 1915 1916 function getSideMenu () { 1917 return document.querySelector('body > div.sidemenu'); 1918 } 1919 1920 function sideMenuHide (instant) { 1921 var sideMenu = getSideMenu(); 1922 if (!sideMenu || !sideMenu.classList.contains('visible')) { 1923 return; 1924 } 1925 sideMenu.classList.remove('visible'); 1926 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 1927 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 1928 } 1929 1930 function sideMenuShow () { 1931 var sideMenu = getSideMenu(); 1932 if (!sideMenu || sideMenu.classList.contains('visible')) { 1933 return; 1934 } 1935 sideMenu.classList.add('visible'); 1936 sideMenu.dispatchEvent(new Event('lpui-show')); 1937 window.dispatchEvent(new Event('lpui-sidemenu-show')); 1938 } 1939 1940 function sideMenuToggle () { 1941 var sideMenu = getSideMenu(); 1942 if (!sideMenu) { 1943 return; 1944 } 1945 var isSideMenuVisible = sideMenu.classList.contains('visible'); 1946 if (isSideMenuVisible) { 1947 sideMenuHide(); 1948 } else { 1949 sideMenuShow(); 1950 } 1951 } 1952 1953 var scrollLockRequests = {}; 1954 window.__debug_scrollLockRequests = scrollLockRequests; 1955 var hideScrollStyles = ''+ 1956 'body {'+ 1957 'overflow: hidden;' + 1958 '}'; 1959 var hideScrollId = 'hide-body-scroll-style'; 1960 1961 function scrollLock () { 1962 var style = document.createElement('style'); 1963 style.id = hideScrollId; 1964 style.textContent = hideScrollStyles; 1965 document.head.appendChild(style); 1966 window.dispatchEvent(new Event('lpui-scroll-locked')); 1967 } 1968 1969 function scrollUnlock () { 1970 document.getElementById(hideScrollId)?.remove(); 1971 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 1972 } 1973 1974 function requestScrollLock (lockId) { 1975 var wasLocked = Object.keys(scrollLockRequests).length > 0; 1976 scrollLockRequests[lockId || '__anonymous_lock'] = true; 1977 if (!wasLocked) { 1978 scrollLock(); 1979 } 1980 } 1981 1982 function releaseScrollLock (lockId) { 1983 if (lockId) { 1984 delete scrollLockRequests[lockId]; 1985 if (!Object.keys(scrollLockRequests).length) { 1986 scrollUnlock(); 1987 } 1988 } else { 1989 scrollLockRequests = {}; 1990 window.__debug_scrollLockRequests = scrollLockRequests; 1991 scrollUnlock(); 1992 } 1993 } 1994 1995 function showModal (modalId, options) { 1996 var modal = document.getElementById(modalId); 1997 if (!modal) { 1998 return; 1999 } 2000 2001 if (!modal.classList.contains('visible')) { 2002 modal.classList.add('visible'); 2003 if (options && options.scrollLock) { 2004 window.lpUI.requestScrollLock(modalId); 2005 } 2006 modal.dispatchEvent(new Event('lpui-show')); 2007 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 2008 } 2009 2010 const visibleModals = document.querySelectorAll('.modal.visible'); 2011 2012 if (visibleModals.length > 1) { 2013 2014 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 2015 const zIndex = window.getComputedStyle(modal).zIndex; 2016 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 2017 return Math.max(maxZIndex, parsedZIndex); 2018 }, 0); 2019 2020 modal.style.zIndex = maxZIndex + 1; 2021 } 2022 2023 } 2024 2025 function _hideModal (modalEl) { 2026 if (!modalEl) { 2027 return; 2028 } 2029 if (!modalEl.classList.contains('visible')) { 2030 return; 2031 } 2032 modalEl.classList.remove('visible'); 2033 modalEl.style.zIndex = '';
2034 modalEl.dispatchEvent(new Event('lpui-hide')); 2035 var modalId = modalEl.getAttribute('id'); 2036 if (modalId) { 2037 window.lpUI.releaseScrollLock(modalId); 2038 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 2039 } 2040 } 2041 2042 function hideModal (modalId) { 2043 _hideModal(document.getElementById(modalId)); 2044 } 2045 2046 function hideClosestModal (el) { 2047 const modal = el?.closest('.modal'); 2048 if (!modal) { 2049 return; 2050 } 2051 if (modal.classList) { 2052 _hideModal(modal); 2053 return; 2054 } 2055 if (modal.length && modal[0].classList) { 2056 _hideModal(modal[0]); 2057 } 2058 } 2059 2060 window.lpUI = { 2061 sideMenuHide: sideMenuHide, 2062 sideMenuShow: sideMenuShow, 2063 sideMenuToggle: sideMenuToggle, 2064 requestScrollLock: requestScrollLock, 2065 releaseScrollLock: releaseScrollLock, 2066 showModal: showModal, 2067 hideModal: hideModal, 2068 hideClosestModal: hideClosestModal 2069 } 2070 })(); 2071 2072 var stringifyPrimitive = function(v) { 2073 switch (typeof v) { 2074 case 'string': 2075 return v; 2076 2077 case 'boolean': 2078 return v ? 'true' : 'false'; 2079 2080 case 'number': 2081 return isFinite(v) ? v : ''; 2082 2083 default: 2084 return ''; 2085 } 2086 }; 2087 2088 function objectToQuerystring(obj, sep, eq, name) { 2089 // https://github.com/Gozala/querystring/blob/master/encode.js 2090 sep = sep || '&'; 2091 eq = eq || '='; 2092 if (obj === null) { 2093 obj = undefined; 2094 } 2095 2096 if (typeof obj === 'object') { 2097 return Object.keys(obj).map(function(k) { 2098 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 2099 if (Array.isArray(obj[k])) { 2100 return obj[k].map(function(v) { 2101 return ks + encodeURIComponent(stringifyPrimitive(v)); 2102 }).join(sep); 2103 } else { 2104 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 2105 } 2106 }).filter(Boolean).join(sep); 2107 2108 } 2109 2110 if (!name) return ''; 2111 return encodeURIComponent(stringifyPrimitive(name)) + eq + 2112 encodeURIComponent(stringifyPrimitive(obj)); 2113 } 2114 2115 function getPath(url, options) { 2116 var parser = document.createElement('a'); 2117 parser.href = url || ''; 2118 var path = parser.pathname || ''; 2119 if (path[0] !== '/') { 2120 // IE does not return path starting with a slash 2121 path = '/' + path; 2122 } 2123 2124 if (options && options.queryString) { 2125 path += parser.search; 2126 } 2127 2128 return path; 2129 } 2130 2131 function getMLSAutocomplete(keyword) { 2132 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2133 var query = { 2134 kind: 'listings', 2135 query: keyword 2136 }; 2137 2138 return superagent 2139 .get(searchURL) 2140 .query(query) 2141 .then(function(res) { 2142 var data = res.body || []; 2143 // Array of listing_auto_complete documents: id, display_address, city, state, 2144 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 2145 2146 return data; 2147 }); 2148 } 2149 2150 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 2151 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2152 2153 return superagent 2154 .get(searchURL) 2155 .query({ kind: 'listings', query: keyword, ...filters }) 2156 .then(function(res) { 2157 // Same response shape as getMLSAutocomplete. 2158 return res.body || []; 2159 }); 2160 } 2161 2162 function makeMlsLink(data) { 2163 // Code Dupe from utils/googlePlace 2164 // mapping of google data type to mls data type 2165 var mapping = { 2166 neighborhood: 'neighborhood', 2167 locality: 'place', 2168 administrative_area_level_2: 'county', 2169 administrative_area_level_1: 'state', 2170 postal_code: 'postalcode', 2171 }; 2172 2173 function _filterTypes(types) { 2174 return types.filter(function(type) { return type !== 'political' }); 2175 } 2176 2177 if (!data || !Object.keys(data).length) { 2178 return '/home-search/listings'; 2179 } 2180 2181 var newData = {};
2182 _filterTypes(data.types).forEach(function(type) { 2183 if (mapping[type]) { 2184 newData.search_type = mapping[type]; 2185 } 2186 }); 2187 newData.omnibox = data.formatted_address; 2188 data.address_components.forEach(function(component) { 2189 _filterTypes(component.types).forEach(function(type) { 2190 if (mapping[type]) { 2191 newData[mapping[type]] = component.long_name; 2192 } 2193 }); 2194 }); 2195 var bounds = data.geometry.bounds; 2196 var convertedData = Object.assign(bounds, newData); 2197 2198 return '/home-search/listings?' + objectToQuerystring(convertedData); 2199 } 2200 2201 function debounce(func, wait) { 2202 let timeout; 2203 return function(...args) { 2204 const context = this; 2205 clearTimeout(timeout); 2206 timeout = setTimeout(() => func.apply(context, args), wait) 2207 } 2208 } 2209 2210 // Global methods / variables that can be accessed by element js 2211 window.luxuryPresence = { 2212 ...window.luxuryPresence, 2213 defaults: { 2214 companyId: '4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd', 2215 apiGatewayUrl: '/api-gw', 2216 routerUrl: '/api-nv', 2217 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\
2217n }\n propertiesCount(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n ) {\n count\n }\n }\n","pressReleases":"\n query PressReleases (\n $companyId: ID\n $pressReleaseIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $categories: [String!]\n $propertyId: [ID!]\n $developmentId: [ID!]\n $agentId: [ID!]\n $teamId: [ID!]\n $year: [Int!]\n ) {\n pressReleases (\n companyId: $companyId\n pressReleaseIds: $pressReleaseIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n year: $year\n ) {\n items {\n id\n title\n description\n author\n externalUrl\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n publishedAt\n categories\n }\n total\n }\n }\n","posts":"\n query Posts (\n $companyId: String\n $postId: [ID!]\n $slug: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $featured: Boolean\n $categoryId: [String!]\n $neighborhoodId: [String!]\n ) {\n posts (\n companyId: $companyId\n postId: $postId\n slug: $slug\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n categoryId: $categoryId\n neighborhoodId: $neighborhoodId\n ) {\n items {\n id\n postId\n title\n subtitle\n description\n status: postStatus\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n updatedAt\n scheduledAt\n createdBy {\n ... on Agent {\n firstName\n lastName\n }\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n }\n total\n }\n }\n","testimonials":"\n query Testimonials (\n $companyId: String\n $agentId: ID\n $teamId: ID\n $testimonialIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n ) {\n testimonials (\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n testimonialIds: $testimonialIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ) {\n items {\n id\n testimonialId\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n agents {\n slug\n email\n firstName\n lastName\n avatar {\n smallUrl\n height\n width\n }\n }\n }\n total\n }\n }\n","neighborhoods":"\n query Neighborhoods (\n $neighborhoodId: ID\n $companyId: String\n $search: String\n $tag: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n neighborhoods (\n neighborhoodId: $neighborhoodId\n companyId: $companyId\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n ) {\n id\n name\n description\n descriptionShort\n slug\n tags\n googlePlaceData\n mlsLink\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n }\n neighborhoodsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n ) {\n count\n }\n }\n","developments":"\n query Developments (\n $companyId: ID!\n $developmentIds: [ID!]\n $agentId: String\n $slug: String\n $search: String\n $tag: [String!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirection\n $neighborhoodId: ID\n $neighborhoodIds: [ID!]\n ) {\n developments (\n companyId: $companyId\n developmentIds: $developmentIds\n agentId: $agentId\n slug: $slug\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n items {\n id\n name\n description\n descriptionShort\n slug\n createdAt\n updatedAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n logoMedia {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n websiteUrl\n videoUrl\n googlePlaceData\n coordinates\n mlsLink\n seoTitle\n seoDescription\n featuresAndAmenities {\n featureIds\n features {\n featureId\n name\n }\n description\n }\n latitude\n longitude\n addressLine1\n addressLine2\n city\n state\n zipCode\n country\n yearCompleted\n residences\n availability\n neighborhoodId\n developer\n architect\n interiorDesigner\n stories\n buildingHeight\n buildingHeightUnit\n bedMin\n bedMax\n bathMin\n bathMax\n livingSpaceMin\n livingSpaceMa
2217x\n livingSpaceUnit\n lotSizeMin\n lotSizeMax\n lotSizeUnit\n priceMin\n priceMax\n priceCurrency\n tags\n }\n total\n }\n }\n","pois":"\n query PointsOfInterest (\n $regionId: UUID!\n $radius: Int\n $offset: Int\n $limit: Int\n $categories: [AreasOfInterestCategories!]\n $sortBy: AreasOfInterestSorting\n ) {\n pois: areasOfInterest (\n input: {\n regionId: $regionId\n radius: $radius\n offset: $offset\n limit: $limit\n categories: $categories\n sortBy: $sortBy\n }\n ) {\n items {\n name\n imageUrl\n url\n reviewCount\n rating\n price\n displayPhone\n distance\n category\n location {\n address1\n address2\n address3\n city\n zipCode\n country\n state\n }\n }\n total\n }\n }\n","offices":"\n query Offices (\n $companyId: ID!\n $officeIds: [ID!]\n $officeMlsIds: [String!]\n $externalIds: [String!]\n $externalSource: String\n $agentId: ID\n $archived: Boolean\n $tags: [String!]\n $slug: String\n $search: String\n $sort: String\n $sortDir: SortDirection\n $offset: Int\n $limit: Int\n ) {\n offices (\n companyId: $companyId\n officeIds: $officeIds\n officeMlsIds: $officeMlsIds\n externalIds: $externalIds\n externalSource: $externalSource\n agentId: $agentId\n archived: $archived\n tags: $tags\n slug: $slug\n search: $search\n sort: $sort\n sortDir: $sortDir\n offset: $offset\n limit: $limit\n ) {\n items {\n id\n companyId\n name\n slug\n officeMlsId\n shortDescription\n fullDescription\n addressLine1\n addressLine2\n addressCity\n addressState\n addressPostalCode\n addressCountry\n phone\n email\n officeHours\n coordinates\n googlePlaceData\n seoTitle\n seoDescription\n fullAddress\n tags\n media {\n id\n originalUrl\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n }\n }\n total\n }\n }\n","teams":"\n query Teams (\n $companyId: ID\n $teamIds: [ID!]\n $agentId: ID\n $externalIds: [String!]\n $externalSource: String\n $slug: String\n $search: String\n $sort: String\n $sortDir: String\n $offset: Int\n $limit: Int\n ) {\n teams (\n companyId: $companyId\n teamIds: $teamIds\n agentId: $agentId\n externalIds: $externalIds\n externalSource: $externalSource\n slug: $slug\n search: $search\n sort: $sort\n sortDir: $sortDir\n offset: $offset\n limit: $limit\n ) {\n items {\n id\n companyId\n name\n email\n shortBio\n addressLine1\n addressLine2\n addressCity\n addressState\n addressCountry\n phoneNumber1\n phoneNumber2\n postalCode\n avatar {\n id\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n }\n urlWebsite\n socialLinks\n socialLinksArray\n tags\n seoTitle\n seoDesc\n slug\n displayOrder\n }\n total\n }\n }\n"}, 2218 propertyPlaceholderImage: {"id":"6a396d22-e9a8-4bb3-b758-9d3e7102d526","alt":null,"bytes":15204,"width":1920,"format":"png","height":1200,"pngUrl":"","shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dde9ae8e-0322-419f-b5bc-05d3b416bba7","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/d
2218de9ae8e-0322-419f-b5bc-05d3b416bba7","authorUrl":null,"createdAt":"2025-01-27T21:19:30.642Z","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/dde9ae8e-0322-419f-b5bc-05d3b416bba7","sourceUrl":null,"updatedAt":"2025-01-27T21:19:30.642Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dde9ae8e-0322-419f-b5bc-05d3b416bba7","__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/dde9ae8e-0322-419f-b5bc-05d3b416bba7","description":null,"displayName":"property-placeholder_cire-costa-rica","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dde9ae8e-0322-419f-b5bc-05d3b416bba7","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/dde9ae8e-0322-419f-b5bc-05d3b416bba7","originalFileName":"property placeholder_cire-costa-rica","cloudinaryPublicId":"dde9ae8e-0322-419f-b5bc-05d3b416bba7"} 2219 }, 2220 objectToQuerystring: objectToQuerystring, 2221 getPath: getPath, 2222 getMLSAutocomplete: getMLSAutocomplete, 2223 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 2224 makeMlsLink: makeMlsLink, 2225 debounce: debounce, 2226 }; 2227 2228 var wowOffset = 100; 2229 </script>
2229 2230
2230<script> 2231 (()=>{function e(e){return e&&e.__esModule?e.default:e}var t=globalThis,r={},i={},s=t.parcelRequired4f7;null==s&&((s=function(e){if(e in r)return r[e].exports;if(e in i){var t=i[e];delete i[e];var s={id:e,exports:{}};return r[e]=s,t.call(s.exports,s,s.exports),s.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){i[e]=t},t.parcelRequired4f7=s);var o=s.register;o("ikl6F",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=e.exports.fetchExchangeRates=e.exports.toSupportedToCurrency=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.SUPPORTED_FROM_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.writeCurrencyCookie=e.exports.readValidCurrencyCookie=e.exports.readCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_NAME=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=void 0;var r=s("65bUu");Object.defineProperty(e.exports,"CURRENCY_COOKIE_MAX_AGE_SECONDS",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_MAX_AGE_SECONDS}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_NAME",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_NAME}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_PATH",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_PATH}}),Object.defineProperty(e.exports,"CURRENCY_COOKIE_SAME_SITE",{enumerable:!0,get:function(){return r.CURRENCY_COOKIE_SAME_SITE}}),Object.defineProperty(e.exports,"clearCurrencyCookie",{enumerable:!0,get:function(){return r.clearCurrencyCookie}}),Object.defineProperty(e.exports,"readCurrencyCookie",{enumerable:!0,get:function(){return r.readCurrencyCookie}}),Object.defineProperty(e.exports,"readValidCurrencyCookie",{enumerable:!0,get:function(){return r.readValidCurrencyCookie}}),Object.defineProperty(e.exports,"writeCurrencyCookie",{enumerable:!0,get:function(){return r.writeCurrencyCookie}});var i=s("gUuHZ");Object.defineProperty(e.exports,"DISPLAY_CURRENCIES",{enumerable:!0,get:function(){return i.DISPLAY_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_FROM_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_FROM_CURRENCIES}}),Object.defineProperty(e.exports,"SUPPORTED_TO_CURRENCIES",{enumerable:!0,get:function(){return i.SUPPORTED_TO_CURRENCIES}}),Object.defineProperty(e.exports,"toSupportedFromCurrency",{enumerable:!0,get:function(){return i.toSupportedFromCurrency}}),Object.defineProperty(e.exports,"toSupportedToCurrency",{enumerable:!0,get:function(){return i.toSupportedToCurrency}});var o=s("jCxYG");Object.defineProperty(e.exports,"fetchExchangeRates",{enumerable:!0,get:function(){return o.fetchExchangeRates}});var n=s("igUcG");Object.defineProperty(e.exports,"convertAmount",{enumerable:!0,get:function(){return n.convertAmount}}),Object.defineProperty(e.exports,"formatMoney",{enumerable:!0,get:function(){return n.formatMoney}})}),o("65bUu",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.readValidCurrencyCookie=e.exports.clearCurrencyCookie=e.exports.writeCurrencyCookie=e.exports.readCurrencyCookie=e.exports.CURRENCY_COOKIE_PATH=e.exports.CURRENCY_COOKIE_SAME_SITE=e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=e.exports.CURRENCY_COOKIE_NAME=void 0;var r=s("gUuHZ");e.exports.CURRENCY_COOKIE_NAME="lp-currency",e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS=31536e3,e.exports.CURRENCY_COOKIE_SAME_SITE="Lax",e.exports.CURRENCY_COOKIE_PATH="/";let i=e=>e?.trim().toLowerCase().replace(/^\.+/,"")||void 0,o=e=>"undefined"!=typeof DOMException&&e instanceof DOMException,n=({document:t})=>{let r=`${e.exports.CURRENCY_COOKIE_NAME}=`;return t.cookie.split(";").map(e=>e.trim()).filter(e=>e.startsWith(r)).map(e=>e.slice(r.length))},a=e=>{try{return decodeURIComponent(e)}catch{return}};e.exports.readCurrencyCookie=e=>{let t=(e=>{try{return n(e)[0]}catch(e){if(!o(e))throw e;return}})(e);return void 0===t?void 0:a(t)};let l=(t,r,i,s)=>{var o;let n,a;t.document.cookie=`${e.exports.CURRENCY_COOKIE_NAME}=${r}${o=t.location,n="https:"===o.protocol?"; Secure":"",a=s?`; Domain=${s}`:"",`; Path=${e.exports.CURRENCY_COOKIE_PATH}; Max-Age=${i}; SameSite=${e.exports.CURRENCY_COOKIE_SAME_SITE}${n}${a}`}`};e.exports.writeCurrencyCookie=(t,s)=>{let a,d=(0,r.toSupportedToCurrency)(s);if(!d)return!1;let c=i(t.domain);try{if(a=n(t)[0],c&&l(t,"",0,void 0),l(t,encodeURIComponent(d),e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,c),(0,e.exports.readCurrencyCookie)(t)===d)return!0}catch(e){if(!o(e))throw e}return c&&void 0!==a&&((t,r)=>{try{if(n(t).includes(r))return;l(t,r,e.exports.CURRENCY_COOKIE_MAX_AGE_SECONDS,void 0)}catch(e){if(!o(e))throw e}})(t,a),!1},e.exports.clearCurrencyCookie=e=>{let t=i(e.domain);try{t&&l(e,"",0,void 0),l(e,"",0,t)}catch(e){if(!o(e))throw e}},e.exports.readValidCurrencyCookie=(t,{enabled:s,enabledCurrencies:d})=>{if(!s)return;let c=(e=>{try{let t=n(e);if(!i(e.domain)||t.length<2)return t[0];return l(e,"",0,void 0),n(e)[0]}catch(e){if(!o(e))throw e;return}})(t);if(void 0===c)return;let u=new Set(d.map(r.toSupportedToCurrency).filter(e=>!!e)),h=(0,r.toSupportedToCurrency)(a(c));
2231if(h&&u.has(h))return h;(0,e.exports.clearCurrencyCookie)(t)}}),o("gUuHZ",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.toSupportedToCurrency=e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES=e.exports.toSupportedFromCurrency=e.exports.SUPPORTED_FROM_CURRENCIES=void 0,e.exports.SUPPORTED_FROM_CURRENCIES=["usd","cad","eur","gbp"];let r=(e,t)=>{if("string"!=typeof e)return;let r=e.toLowerCase();return t.includes(r)?r:void 0};e.exports.toSupportedFromCurrency=t=>r(t,e.exports.SUPPORTED_FROM_CURRENCIES),e.exports.DISPLAY_CURRENCIES=[{code:"usd",name:"US dollar"},{code:"eur",name:"Euro"},{code:"gbp",name:"Pound sterling"},{code:"cad",name:"Canadian dollar"},{code:"chf",name:"Swiss franc"},{code:"brl",name:"Brazilian real"},{code:"mxn",name:"Mexican peso"},{code:"sek",name:"Swedish krona"},{code:"nok",name:"Norwegian krone"},{code:"dkk",name:"Danish krone"},{code:"ars",name:"Argentine peso"},{code:"cop",name:"Colombian peso"},{code:"clp",name:"Chilean peso"},{code:"pen",name:"Peruvian sol"},{code:"dop",name:"Dominican peso"},{code:"gtq",name:"Guatemalan quetzal"},{code:"crc",name:"Costa Rican colón"},{code:"bob",name:"Bolivian boliviano"},{code:"pyg",name:"Paraguayan guaranÃ"},{code:"kyd",name:"Cayman Islands dollar"}],e.exports.SUPPORTED_TO_CURRENCIES=e.exports.DISPLAY_CURRENCIES.map(e=>e.code),e.exports.toSupportedToCurrency=t=>r(t,e.exports.SUPPORTED_TO_CURRENCIES)}),o("jCxYG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.fetchExchangeRates=void 0;var r=s("gUuHZ");let i=async(e,{baseUrl:t,signal:i,fetch:s,onError:o})=>{let n=(0,r.toSupportedFromCurrency)(e);if(!n)return{};let a=`${t.replace(/\/$/,"")}/api/v1/exchange-rates?from=${encodeURIComponent(n)}`;try{let e=await (s??fetch)(a,{credentials:"omit",signal:i});if(!e.ok)throw Error(`Exchange rates HTTP ${e.status}`);var l=await e.json();let t=l?.rates;if("object"!=typeof t||null===t)return{};let o={};return Object.entries(t).forEach(([e,t])=>{let i=(0,r.toSupportedToCurrency)(e);i&&"number"==typeof t&&Number.isFinite(t)&&t>0&&(o[i]=t)}),o}catch(e){try{o?.(e)}catch(e){console.warn("fetchExchangeRates: onError callback threw",e)}return{}}};e.exports.fetchExchangeRates=i}),o("igUcG",function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.formatMoney=e.exports.convertAmount=void 0;var r=s("gUuHZ");e.exports.convertAmount=(e,t)=>{if(Number.isFinite(e)&&Number.isFinite(t)&&!(t<=0))return e*t},e.exports.formatMoney=(e,t,{precision:i=0}={})=>{let s=(0,r.toSupportedToCurrency)(t);if(!s||!Number.isFinite(e))return;let o=Number.isInteger(i)?i:0,n=Number.isInteger(e)?0:Math.min(Math.max(o,0),20);return new Intl.NumberFormat("en-US",{style:"currency",currency:s.toUpperCase(),minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}});var n={},a={};a={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let r=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===r[1].toLowerCase().indexOf("video"))return null;let i=r[r.length-1];i.lastIndexOf(".")>-1?i=`${i.slice(0,i.lastIndexOf("."))}.jpg`:i+=".jpg",r[r.length-1]=i;let s=3;"videos"===r[1].toLowerCase()&&""!==r[2]&&(s=2);let o=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;s<r.length-1&&o.test(r[s]);)s++;return r.splice(s,0,"so_0,eo_0"),t+r.join("/")}};let l={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "},d=/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9a-fA-F]+));/y,c=/[<&]/g,u=/["'>]/g,h=/<\/p\s*>|<br\s*\/?>|[\r\n\u2028\u2029]/g;function p(e,t){let r="";for(let i=0;i<e.length;){c.lastIndex=i;let s=c.exec(e);if(!s){r+=e.slice(i);break}let o=s.index;r+=e.slice(i,o);let n="&"===e[o]?function(e,t){d.lastIndex=t;let r=d.exec(e);return{text:r?function(e){if("#"!==e[1])return l[e.slice(1,-1)];
2231let t="x"===e[2]||"X"===e[2],r=parseInt(e.slice(t?3:2,-1),t?16:10);return 0===r||r>1114111||r>=55296&&r<=57343?e:160===r?" ":String.fromCodePoint(r)}(r[0]):"&",end:r?d.lastIndex:t+1}}(e,o):function(e,t,r){let i=function(e,t){let r=null;u.lastIndex=t+1;let i=u.exec(e);for(;i;){let t=i[0];if(r)t===r&&(r=null);else if('"'===t||"'"===t)r=t;else if(">"===t)return u.lastIndex;i=u.exec(e)}return -1}(e,t);return{text:-1===i?"<":function(e,t,r,i){if(!i)return"";let s=e.slice(t,r);if(/^<br\s*\/?>$/.test(s))return" ";if(/^<\/p\s*>$/.test(s)){h.lastIndex=r;let t=h.exec(e);if(t&&"<"===t[0][0])return" "}return""}(e,t,i,r),end:-1===i?t+1:i}}(e,o,t);r+=n.text,i=n.end}return r}n=function(e,{isEqual:t}){let r=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],i=function(e,t,r){let i="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let s="number"==typeof r?r:0,o=Number.isInteger(e)?0:s,n={minimumFractionDigits:o,maximumFractionDigits:o};return"USD"===t?`$${e.toLocaleString(i,n)}`:"CAD"===t?`$${e.toLocaleString(i,n)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(i,n)}`:"GBP"===t?`\xa3${e.toLocaleString(i,n)}`:"PERCENT"===t?`${e}%`:"number"==typeof r&&r>-1?e.toLocaleString(i,{maximumFractionDigits:r}):e.toLocaleString(i)},s=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let r,i,a=t||{};switch(a.mode){case"short":r=o(e),i=a.frequencySeparator||"/";break;case"standard":case"std":r=n(e),i=a.frequencySeparator||"/";break;default:r=s(e),i=a.frequencySeparator||" "}return r?a.frequencyTag||a.frequencyClass?`${i}<${a.frequencyTag||"span"}${a.frequencyClass?` class="${a.frequencyClass}"`:""}>${r}</${a.frequencyTag||"span"}>`:i+r:""};return{isEmpty(e,t){let r=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?r?t.fn(this):t.inverse(this):r},ifEquals(e,r,i){return t(e,r)?i.fn(this):i.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!1):"",striptagsLineBreaks:e=>e?p(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!0):"",truncate:(e,t,r)=>e?e.length>t?"string"==typeof r?e.slice(0,t-r.length)+r:e.slice(0,t):e:"",setSubArray(e=[],t,r,i,s){s.data.root[i]=e.slice(t,r)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:s,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,r,i){return e>=t&&e<r?i.fn(this):i.inverse(this)},formatPropertyStatus(e,t,r){let i="";switch(e){case"SOLD":i="Sold";break;case"FOR_SALE":i="For Sale";break;case"COMING_SOON":i="Coming Soon";break;case"INACTIVE":i="Inactive";break;case"POCKET_LISTING":i="Pocket Listing";break;case"PENDING":i="Pending";break;case"UNDER_CONTRACT":i="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":i="Active Under Contract";break;default:i=e}return("Sold"===i||"Leased"===i)&&t&&"string"==typeof r&&r&&(i+=` on ${r}`),i},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let r="current"===e?new Date:new Date(e);if(Number.isNaN(r.getTime()))return"";if("YYYY"===t||"year"===t)return`${r.getFullYear()}`;if("MM/DD/YY"===t){let e=r.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${r.getDate()}/${r.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][r.getMonth()]} ${r.getDate()}, ${r.getFullYear()}`},openHousesFormat(e,t,r){if(!e||!t)return"";let i=e=>{let t=e.getHours();t>12&&(t-=12);let r=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?r+="PM":r+="AM",r},s="",o=e,n=t;
2231r&&(o=new Date(e).toLocaleString("en-US",{timeZone:r}),n=new Date(t).toLocaleString("en-US",{timeZone:r}),[,,,s]=new Date(t).toLocaleString("en-US",{timeZone:r,timeZoneName:"short"}).split(" "));let a=new Date(o),l=a.toLocaleDateString("en-US"),d=i(a),c=i(new Date(n));return`${l} ${d} - ${c} ${s}`},math:(e,t,r)=>(e=parseFloat(e),({"+":e+(r=parseFloat(r)),"-":e-r,"*":e*r,"/":e/r,"%":e%r})[t]),findByKey(e,t,r,i){let s=(e||[]).find(e=>e[t]===r);return i.fn(s)},capitalize(e,t,r){let i;return"string"==typeof e&&e.length&&(i=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),i},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,r,i){let s="",o=null;i.data&&(o=e.createFrame(i.data));let n=(r||[]).filter(Boolean);if(n&&n.length){let e=0;s=n.reduce((r,s,n)=>{let a=(t||[]).find(e=>e.id===s);return a?(o&&(o.index=n-e),r+i.fn(a,{data:o})):(e+=1,r)},"")}else for(let e=0,r=(t||[]).length;e<r;e++)o&&(o.index=e),s+=i.fn(t[e],{data:o});return s},ifIn(e,t,r){return t&&t.indexOf(e)>-1?r.fn(this):r.inverse(this)},partial:(t,r)=>(e.registerPartial(t,e.compile(r.fn())),`
2231<script type="text/x-handlebars-template" class="${t} pagination-script">${r.fn()}<\/script>`),numCompare(e,t,r,i){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[r](e,t)?!i.fn||i.fn(this):!!i.fn&&i.inverse(this)},lpFormatNumber:i,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,r)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,r,i){let s=null,o=0,n=new Set;return i.data&&(s=e.createFrame(i.data)),(t||[]).reduce((e,t,a)=>{let l=r?t[r]:t;return!n.has(l)||r&&void 0===l?(n.add(l),s&&(s.index=a-o),e+i.fn(t,{data:s})):(o+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let r=t[t.length-1].hash,s=t.length>1?t[0]:r.property,o=r.precision||0;t.length>2&&(r.mode=t[1]),r.mode||(r.mode="short");let n=t.length>3?t[2]:r.separator;if("string"!=typeof n&&(n=" | "),s.isPasswordProtected)return"Exclusive Listing";let a=t.length>4?t[3]:r.priceUponRequestText;if("string"!=typeof a&&(a="Price Upon Request"),s.priceUponRequest)return a;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(r.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${r.reducedTag||"span"} class="${r.reducedClass}">${i(c,s.currency,o)}</${r.reducedTag||"span"}>`),d&&(d=i(d,s.currency,o),r.priceTag||r.priceClass?u+=`<${r.priceTag||"span"}${r.priceClass?` class="${r.priceClass}"`:""}>${d}</${r.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&i(s.leasePrice,s.currency,o);if(h){u&&(u+=n);let e=`${h}${l(s.leasePeriod,r)}`;r.leaseTag||r.leaseClass?u+=`<${r.leaseTag||"span"}${r.leaseClass?` class="${r.leaseClass}"`:""}>${e}</${r.leaseTag||"span"}>`:u+=e}
2231return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:s,...o}=i.hash,n="",a="";if("string"==typeof t)n=t;else{let e={},{height:s,width:l,altTagText:d}=t;r.forEach(r=>{t[r.field]&&!e[t[r.field]]&&(e[t[r.field]]=r.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(o.alt=d),s&&l&&(s>=l&&(o.class?o.class+=" portrait":o.class="portrait"),"setDims"in i.hash&&(o.width=l,o.height=s)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(a=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,r)=>Math.abs(e[t]-1280)-Math.abs(e[r]-1280))),n=c[0]}delete o.setDims,a||delete o.sizes,"alt"in o||(o.alt=""),!("loading"in o)&&(i?.data?.root?.sectionIndex>1||s)&&(o.loading="lazy");let l=Object.keys(o).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(o[t])}"`).join(" ");return new e.SafeString(`<img src="${n}"${a?` srcset="${a}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let r in e)null!==e[r]&&void 0!==e[r]&&"object"!=typeof e[r]&&(t+=e[r]);return t},setVideoExtension(e,t){if(!e||!t)return"";let r=new URL(e);if("res.cloudinary.com"!==r.host)return r.pathname.endsWith(`.${t}`)?e:"";let i=r.pathname.lastIndexOf("."),s=r.pathname;return -1!==i&&(s=r.pathname.substr(0,i)),r.pathname=`${s}.${t}`,r.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let r=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${r}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:a.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let r=+t?.hash?.maxChars||2,i=e.match(/\b\w/g)?.slice(0,r);return i?(t?.hash?.addText&&(i=i.map(e=>e+t.hash.addText)),i.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class m{constructor(e,t,r){if(this.config=e,this.window=t,this.document=r,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let g="lp_lead_form_conversion_fired";function y(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(g)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(g,"true")}catch{}}catch{}}function f(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let b="/api/v1/home-valuation";class v extends m{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let r=t.indexOf(", call time frame:");return -1!==r&&(t=t.substring(0,r).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,r={},i=t("street_number"),s=t("route"),o=t("administrative_area_level_1"),n=t("postal_code"),a=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return i&&(r.streetNumber=i),s&&(r.streetName=s),l&&(r.city=l),o&&(r.state=o),n&&(r.zipcode=n),a&&(r.addressLine2=a),r}_extractAddressAndCoordinates(e){let t=null,r=null;if(e?.result){let{result:i}=e;i.address?.addressComponents&&(t=this._transformAddressComponents(i.address.addressComponents)),i.geocode?.location&&(r={latitude:i.geocode.location.latitude,longitude:i.geocode.location.longitude})}return{structuredAddress:t,coordinates:r}}_filterEmptyStrings(e){let t={};for(let[r,i]of Object.entries(e))""!==i&&null!=i&&(t[r]=i);return t}_getRawAddress(e){let t=e.activity.content||{},r=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,r,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,r=null){let i={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(r&&(i.errorMessage=r.userMessage||(r.status?`Request failed with status ${r.status}`:"An error occurred"),i.errorName=r.name,i.errorStatus=r.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(i)),this.window.posthog)try{this.window.posthog.capture(e,i)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
2231ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,r,i){let s=this._formatStructuredAddress(r)||this._getRawAddress(e);if(!s)throw Error("Unable to extract home valuation address from form data");let o={companyId:e.companyId,homeValuationAddress:s,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},n={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
2231ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},a=this._filterEmptyStrings(n);return{...o,...a,...r&&{address:r},...i&&{coordinates:i}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let r=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(r,e),r.status=t,r}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,r){let i=new AbortController,s=setTimeout(()=>i.abort(),1e4);try{let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:i.signal});clearTimeout(s);let n=await o.text(),a=this._parseResponsePayload(n);if(!o.ok)throw this._createResponseError(a,o.status);if(a&&"success"===a.status&&a.redirectUrl){if(f(r))return a;if(!this._isSafeRedirectUrl(a.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),a;return this.window.location.href=a.redirectUrl,{redirected:!0,url:a.redirectUrl}}return a}catch(e){throw clearTimeout(s),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let r=this._getRawAddress(e),i=null;try{i=await this._validateAddressSafely(r)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let s=null;try{s=await this._getHomeValuationEstimateSafely(i)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),s=null}let{structuredAddress:o,coordinates:n}=this._extractAddressAndCoordinates(i),a=`${t}${b}`,l=this._buildHomeValuationData(e,s,o,n),d=await this._submitLead(a,l,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),d}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:r}=this,i=t.googleMapsAPIKey;if(!i&&r.luxuryPresence?.mapApiLoader&&(i=await r.luxuryPresence.mapApiLoader.getMapApiKey()),!i)throw Error("Google Maps API key not configured");let s=new AbortController,o=setTimeout(()=>s.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:s.signal});if(clearTimeout(o),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(o),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${b}`;if(!e?.result?.address?.addressComponents)return null;let r=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(r))return this._logMissingAddressFields(r),null;let i=this._buildAddressQueryString(r),s=`${t}?${i}`,o=new AbortController,n=setTimeout(()=>
2231o.abort(),1e4);try{let e=await fetch(s,{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(n),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(n),e}}}let w="middleName",E="redirect-pending",_=["name","firstName","lastName",w,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],S="lp_map_key_failed",C="oauthSuccess",I={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function A(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function x(e,t){t.forEach(t=>{let r=e[t];Array.isArray(r)&&0===r.length&&delete e[t]})}function R(e,t,r,i){let s=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),o=i?.merge?s.flat():s.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),o.length>0&&(e[r]=[...new Set(o)])}function T(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let r=[...e.socialLinks].sort((e,t)=>{let r=e.type?.toLowerCase()||"",i=t.type?.toLowerCase()||"";return r.localeCompare(i)});t.socialLinks=r;let i={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};r.forEach(e=>{let r=i[e.type?.toLowerCase()??""];r&&(t[r]=e.link)})}return t}function L(e){return e&&Array.isArray(e)?e.map(e=>T(e)):e}function k(e){let{region:t}=e;if(!A(t))return e;let{schools:r,pois:i,...s}=t,o={...s,schools:A(r)?r.data??[]:[],...Array.isArray(i)?{pois:i.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:o}}function M(e){return e&&Array.isArray(e)?e.map(e=>k(e)):e}function $(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let r=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:r}}function U(e){return e&&Array.isArray(e)?e.map(e=>$(e)):e}function P(e,t){return A(e)?t(e):e}function O(e,t){return Array.isArray(e)?t(e):e}var N={};N=` 2232 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 2233 propertyDisclaimers(input: $input) { 2234 feedId 2235 listingId 2236 resolvedFromListing 2237 listingCardAttribution 2238 listingDetailCourtesy 2239 listingDetailFooter 2240 logo 2241 } 2242 } 2243`;let D={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"};var F={};F=s("ikl6F");let B=new class{constructor(e){this.isBuilder=!1,this.companyId=null,this.websiteId=null,this.pageId=null,this.shareId=null,this.pageMeta=null,this.websiteApiGatewayUrl=null,this.buyerSellerServiceUrl=null,this.leadIngesterUrl=null,this.divolteServiceUrl=null,this.eventBus=null,this.templateId=null,this.myhomeDashboardEnabled=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null,this.currencyConversionEnabled=!1,this.enabledCurrencies=[]}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setCurrencyConversion({enabled:e,enabledCurrencies:t}={}){this.currencyConversionEnabled=!0===e,this.enabledCurrencies=Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}setEventBus({enabled:e,apiKey:t,url:r}){this.eventBus={enabled:e,apiKey:t,url:r}}}({}),q=new class extends m{constructor(e,t,r){super(e,t,r),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:r}=this;this.pageId=t.pageId,this.modals=r.querySelectorAll("body > #modals >
2243 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,r=new Date().getTime()+864e5,i=`modal-controller-${e}`;try{t.localStorage.setItem(i,JSON.stringify(r))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,r=t.localStorage,i=r.getItem(`modal-controller-${e}`);if(!i)return!1;let s=JSON.parse(i);return!(new Date().getTime()>s)||(r.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:r}=this,i=this.getModalWithExpiry(e);(e&&!i||!0===t.forced)&&(r.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:r,pageSpecific:i}=e;(!i||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===r?this._exitModalHandler(e):"TIMER"===r?this._timerModalHandler(e):"FORCED"===r&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:r,exitModalTriggered:i}=this,{modalId:s}=e;function o(e){!i[s]&&(e.toElement||e.relatedTarget||(t.show(s),i[s]=!0))}r.addEventListener("mouseout",o),this.exitModalEventListeners.push(o)}_timerModalHandler(e){let{modalId:t,timerDelay:r}=e;setTimeout(()=>{this.show(t)},r)}_forcedModalHandler(e){let{modalId:t}=e,{window:r,document:i}=this;if("true"!==r.localStorage.getItem("isSignedUp")){let e=i.querySelector(`#modal-${t}`),s=e?.querySelector("form"),o=s?.dataset.delay||2e3;s.addEventListener("formsubmitted",()=>{this.setLoginState()}),r.addEventListener("oauthSuccess",()=>{this.setLoginState(),s.classList.add("success"),setTimeout(()=>{r.lpUI.hideModal(`modal-${t}`),s.reset(),s.classList.remove("success")},o)}),this.show(t,{forced:!0})}}}(B,window,document),V=new class extends m{constructor(e,t,r){super(e,t,r),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:r}=this,i=e.target.closest("button, a");if(!i)return;let s=i.dataset.type||"",o=i.href||i.dataset.href||"",n=i.target||"",{submit:a}=i.dataset;if(a){try{await this._handleSubmit(i)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(o,"_blank"===n)}if(this._trackConversion(i),"VIDEO"===s)return void this._handleVideoButton(i);if("CONTACT_US"===s)return void this._handleContactUsButton(i);if("SUBSCRIBE"===s)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===s)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===s){let t=i.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===s.substring(0,6)){let e=s.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(o?.startsWith("mailto:")){let e=o.substring(7);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(o?.startsWith("tel:")){let e=o.substring(4);r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:r}=this;return t?await r.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,r,i]=t,s=`https://player.vimeo.com/video/${r}?`;return i&&(s+=`h=${i}&`),s+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,r=e.closest("section"),{src:i}=e.dataset,s="";if(i&&(i.includes("youtube.com")||i.includes("youtu.be"))&&!i.includes("youtube.com/embed")){let e=i.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
2243)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(s=e[1])}let o=this._getVimeoSrc(i);if(s?i=`https://youtube.com/embed/${s}?autoplay=1&controls=0`:o&&(i=o),!i||!r)return;let n=i.endsWith(".mp4")||i.endsWith(".webm")||i.includes("cloudinary.com"),a=` 2244 <div id="modal-${r.id}" class="modal visible"> 2245 <div class="modal-content"> 2246 <div class="lightbox-video"> 2247 <div class="video-player"> 2248 <div class="embed-container"> 2249 ${n?`<video controls autoplay src="${i}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${i}"></iframe>`} 2250 </div> 2251 </div> 2252 </div> 2253 </div> 2254 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 2255 </div> 2256 `;t.body.insertAdjacentHTML("beforeend",a);let l=t.getElementById(`modal-${r.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:r}=this;r.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:r}=this,{gtagConversionId:i,gtagConversionLabel:s,fbEventName:o}=e.dataset;if(i&&s){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===i)||r.sendGoogleTagManagerEvent("config",i));let e=`${i}/${s}`;r.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&o&&t.fbq("track",o,{})}}(B,window,document),j=new class extends m{constructor(e,t,r){super(e,t,r),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:r}=this,{selector:i}=e,s=[];if(s=i?r.querySelectorAll(`${i} form[data-type="contact-form"]`):r.querySelectorAll('form[data-type="contact-form"]'),r.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:r}=t.luxuryPresence.libs,{libphonenumber:i}=r;e(i.jsSrc,this.attachValidation.bind(this,s))}else this.attachValidation(s);this.validatedForms=this.validatedForms.concat(s)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let r=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;r(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(B,window,document),H=new class extends m{constructor(e,t,r){super(e,t,r),this.forms=[],this.homeValuationService=new v(e,t,r)}initialize(e={}){try{let{document:t}=this,{selector:r}=e,i=[];(i=r?t.querySelectorAll(`${r} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(i)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),r={},i=[],s=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let o=e.trim();s.test(t)&&o&&i.push(o);let n=r[t];r[t]=n?`${n} ${o}`:o}else r[t]=e}),i.length?r.name=i.join(" ").trim():!r.name&&r.firstName&&(r.name=r.firstName,r.lastName&&(r.name+=` ${r.lastName}`)),this._deriveNameParts(r)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,r){let{window:i,config:s}=this,o=Object.keys(e).filter(e=>!_.includes(e)).reduce((t,r)=>(t[r]=e[r],t),{}),{pageId:n,companyId:a,websiteId:l,pageMeta:d}=s,c=i.localStorage.getItem("utm_vars")||"{}",u=i.localStorage.getItem("referrer")||"",h=this._getFormId(r);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:i.location.href,content:{...o,...JSON.parse(c)}},page:{pageId:n,companyId:a,websiteId:l,pageMeta:{...d,formId:h}},companyId:a,referrer:u,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,r=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
2256=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},r)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let r=this._getFields(t),i=this._buildSubmissionData(e,r,t);y(this.window,this.document);let s=await this._waitForLeadSubmit(e=>this._submitLeadRequest(i,e));if(this._sendGAEvent(i),s?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,r={expired:!1,expiresAt:Date.now()+6e3},i=new Promise(e=>{t=setTimeout(()=>{r.expired=!0,e(null)},6e3)}),s=e(r).catch(e=>{if(f(r))return null;throw e});try{return await Promise.race([s,i])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(E),e.querySelector(`.${E}__indicator`))return;let t=this.document.createElement("div");t.className=`${E}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:r}=this.config;if(!t||!r)return void console.warn("[EventBus] Missing required data for user alias");let i=this.window.eventBusProvider.getDistinctId();if(!i)return void console.warn("[EventBus] No anonymous ID available for alias");let s=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(r,t);this.window.eventBusProvider.alias({anonId:i,canonicalId:s}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:r}=this;return(this._aliasUserWithEventBus(e),r.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${r.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,r={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":r.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":r.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":r.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":r.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:r={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(r)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(t=>{let{id:i,name:s,type:o}=t;if(s===w)return!0;let n="";if(i){let r=e.querySelector(`label[for='${i}']`);r?n=r.textContent.trim():t.placeholder&&(n=t.placeholder.trim())}r[s]={label:n,type:t.tagName,inputType:"INPUT"===t.tagName?o:"text"}}),r}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let r=e.querySelector(".submission-error-message");r||((r=this.document.createElement("div")).className="submission-error-message",r.setAttribute("role","alert"),e.appendChild(r)),r.textContent=t||"Something went wrong. Please try again.",r.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(B,window,document),G=new class extends m{constructor(e,t,r){super(e,t,r),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let r=1;r<=3;r+=1){let i=e&&!t;try{let e=await fetch(this._getMapKeyUrl(r,i));if(t=t||i,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let s=await e.text();if(!s)return"";return this.apiKey=s,this.apiKey}catch(e){console.error(e),r<3&&await this._delay(300*2**(r-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let r=[];e>1&&r.push(`attempt=${e}`),t&&r.push("recovered_after_failure=1");let i=r.length?`?${r.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${i}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(S)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(S,"1"):this.window.sessionStorage.removeItem(S)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
2256let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(r=>{r?t(r):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let r=Math.min(1024/e,1024/t);return{width:parseInt(e*r),height:parseInt(t*r)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let r=t.visibility?`visibility:${t.visibility}`:"",i=t.color?`color:${t.color.replace("#","0x")}`:"",s=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${r}${i}${s}`},""),r=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${r}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:r}=await t.json();return r}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,r,i,s,o){let{width:n,height:a}=this.resizeStaticMapDimensions(s,o),l={center:`${e},${t}`,zoom:r,scale:2,size:`${n}x${a}`,key:this.apiKey};i&&(l.style=this.convertThemeToStaticApiUrl(i));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:r,...i}){let{width:s,height:o}=this.resizeStaticMapDimensions(e,t),n={...i,size:`${s}x${o}`};r&&(n.style=this.convertThemeToStaticApiUrl(r));let a=new URLSearchParams;Object.entries(n).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>a.append(e,t.toString())):a.append(e,t.toString())});let l=a.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(B,window,document),K=new class extends m{destroy(){}updateQueryString(e,t,r){r||(r=this.window.location.href);let i=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),s="";null!=t&&(Array.isArray(t)?t.length&&(s=this.serializeArray(e,t)):"object"==typeof t?(i=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),s=this.serializeObj(t,"",e)):s=`${e}=${encodeURIComponent(t)}`);let o=r.split("#"),n=o[0];if(i.test(r)){let e=n;for(s=s?`$1${s}$2`:"$1";i.test(e);)n=e.replace(i,s),e=e.replace(i,"$1");n=n.replace(/(&|\?)$/,"")}else if(s){let e=-1!==n.indexOf("?")?"&":"?";n+=`${e}${s}`}return void 0!==o[1]&&null!==o[1]&&(n+=`#${o[1]}`),n}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let r=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat();if(!i.length){let r=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return i=Array.from(RegExp.prototype[Symbol.matchAll].call(r,t)).flat(),this._parseParamToObject(i,"advancedFilters"===e)}return i.length>3?i.reduce((e,t,r)=>((r+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):i[2]?decode
2256URIComponent(i[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let r={},i=this.makePageKey(t),s=this.getParameterByName(i);return s&&(r.page=parseInt(s)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,i),s=this.getParameterByName(t);if("int"===e.type)isFinite(s=parseInt(s))||(s=null);else if("bool"===e.type||"boolean"===e.type)s="true"===s||"false"!==s&&null;else if("json"===e.type)try{s=JSON.parse(s)}catch(e){}r[e.formKey||e.param]=s}),r}serializeParams(e,t,r){let i=this.window.location.href,s=this.makePageKey(t);return i=this.updateQueryString(s,r.page,i),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),o=r[e.formKey||e.param];"json"===e.type&&null!=o&&(o=JSON.stringify(o)),i=this.updateQueryString(t,o,i)}),i}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",r=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${r}K`:`${this.formatSliderAtom(e/1e6,t)}${r}M`}formatSliderPriceRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e,r," ")}`:t.max===e?`${this.formatSliderValue(e,r," ")}${i.highSuffix}`:`${this.formatSliderValue(e,r," ")}`}formatSliderAreaRange(e,t,r,i){return t.min===e&&0!==e?`${i.lowPrefix}${this.formatSliderValue(e)} ${r}`:t.max===e?`${this.formatSliderValue(e)}${i.highSuffix} ${r}`:`${this.formatSliderValue(e)} ${r}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:r,areaSliderElement:i,neighborhoodSelect:s}=e,o={};if(t&&(o.search=t.value||null),r){let e=r.value.split(";"),t=parseInt(r.dataset.min),i=parseInt(r.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.priceMin=s!==t?s:null,o.priceMax=n!==i?n:null}if(i){let e=i.value.split(";"),t=parseInt(i.dataset.min),r=parseInt(i.dataset.max),s=parseInt(e[0]),n=parseInt(e[1]);o.areaMin=s!==t?s:null,o.areaMax=n!==r?n:null}return s&&(o.neighborhoodId=s.value||null),o}serializeObj(e,t="",r=""){let i=[];for(let s in e)if(e.hasOwnProperty(s)){let o,n=e[s];if(r){let e=t?`[${t}][${s}]`:`[${s}]`;o=`${r}${e}`}else o=t?`${t}[${s}]`:s;null!==n&&Array.isArray(n)?n.length&&i.push(this.serializeArray(o,n)):null!==n&&"object"==typeof n?i.push(this.serializeObj(n,o)):i.push(`${o}=${encodeURIComponent(n)}`)}return i.join("&")}serializeArray(e,t,r=""){let i=[];return t.forEach(t=>{let s=r?`${r}${e}`:e;i.push(`${s}=${encodeURIComponent(t)}`)}),i.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let r={};for(let i=0;i<e.length;i++)if((i+1)%3==0){let s=decodeURIComponent(e[i].replace(/\+/g," ")),o=e[i-1];Object.assign(r,this._setObjectPath(o,s,r,t))}return r}_setObjectPath(e,t,r,i=!1){let s=e.split(/[\[\]]/).filter(Boolean),o=["in","nin","btw","ciin","cinin"],n={},a=n,l=((e,t,r)=>{if(!t)return;let i=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===i?r:i})(r,s.join("."));return s.forEach((e,n)=>{n===s.length-1?l?a[e]=Array.isArray(l)?[...l,t]:[l,t]:a[e]=i&&o.includes(e)?[t]:t:(a[e]=r[e]?r[e]:{},a=a[e])}),n}}(B,window,document),Y=new class extends m{constructor(e,t,r){super(e,t,r),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,r=e.closest("section[id]"),i=e.dataset.append,s=r.querySelector(".lp-expand-btn");if(!s)if((s=t.createElement("button")).className="lp-expand-btn",s.setAttribute("aria-label","Open a lightbox"),s.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',i){let e=r.querySelector(i);e&&e.appendChild(s)}else{let r=t.createElement("div");r.className="lp-expand-btn-wrapper",r.style.position="relative",r.appendChild(s),e.parentNode.insertBefore(r,e.nextSibling)}s.addEventListener("click",()=>{this._createLightbox({slider:e,section:r})})}_createLightbox({slider:e,section:t,initialIndex:r}){let{window:i,document:s}=this,o=`lightbox-for-${t?.id}`,n=i.$&&i.$.fn.slick,a=n&&e.slick,l="function"==typeof i.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=s.createElement("div");t.id=o,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=` 2257 <button class="lp-lightbox__close" aria-label="close modal"></button> 2258 <div class="lp-lightbox__content"> 2259 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 2260 <div class="splide__arrows"> 2261 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 2262 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 2263 </div> 2264 <div class="splide__track"> 2265 <ul class="splide__list"></ul> 2266 </div> 2267 </div> 2268 </div> 2269 `,"function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",s.body.appendChild(t);let n=t.querySelector(".lp-lightbox__carousel"),a=n.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
2269h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("li");r.className="lp-lightbox__slide splide__slide",r.appendChild(t),a.appendChild(r)});let l=new i.Splide(n,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==r&&r>=0&&l.go(r),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let r=t.querySelector(".splide__arrow--prev"),i=t.querySelector(".splide__arrow--next"),s=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&r?(e.preventDefault(),r.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())};s.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",t.remove()})}if("function"==typeof i.lpUI.requestScrollLock?i.lpUI.requestScrollLock(o):s.body.style.overflow="hidden",n&&!d){let t,r,n,l,d;r={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(n=s.createElement("div")).id=o,n.className="lp-lightbox",n.setAttribute("tabindex","-1"),n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true"),n.innerHTML=` 2270 <button class="lp-lightbox__close" aria-label="close modal"></button> 2271 <div class="lp-lightbox__content"> 2272 <div class="lp-lightbox__carousel"></div> 2273 </div> 2274 `,s.body.appendChild(n),l=n.querySelector(".lp-lightbox__carousel"),n.classList.add("show"),a?(t=e.slick.$slides.find("img"),r.initialSlide=e.slick?.currentSlide||0,t.each(function(){i.$(".lp-lightbox__carousel").append(i.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let r=s.createElement("div");r.className="lp-lightbox__slide",r.appendChild(t),l.appendChild(r)}),i.$(l).slick(r),setTimeout(()=>{n.focus()},100),d=e=>{if(!n.classList.contains("show"))return;let t=n.querySelector(".lp-lightbox-arrow--prev"),r=n.querySelector(".lp-lightbox-arrow--next"),i=n.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&r?(e.preventDefault(),r.click()):"Escape"===e.key&&i&&(e.preventDefault(),i.click())},s.addEventListener("keydown",d),n.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",d),n.classList.remove("show");let t=l?.slick?i.$(l).slick("slickCurrentSlide"):0;l?.slick&&i.$(l).slick("unslick"),a&&i.$(e).slick("slickGoTo",t),"function"==typeof i.lpUI.releaseScrollLock?i.lpUI.releaseScrollLock(o):s.body.style.overflow="",n.remove()})}else l?c():(i.luxuryPresence.libs.loadCss(i.luxuryPresence.libs.jsLibsMap.splide.cssSrc),i.luxuryPresence.libs.loadJs(i.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),i.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(B,window,document),z=new class extends m{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a}=this.config;this.window.divolte.signal(e,Object.assign({companyId:r,templateId:i,websiteId:s,pageId:o,shareId:n,pageMeta:a},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(B,window,document),W=new class extends m{constructor(e,t,r){super(e,t,r)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
2274)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:r}=this.config;try{this.window.eventBusProvider.capture(e,{company:r,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(B,window,document),Q=new class extends m{constructor(e,t,r){super(e,t,r),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(C,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:r}=this.config,{data:i,origin:s}=e,{type:o,height:n,event:a,source:l,token:d}=i;if(o===t||"hide_intermediate_iframe"===o){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=n,e.style.display=o===t?"unset":"none")}s===r&&"GOOGLE_SIGN_ON"===l&&("success"===a?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===a&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let r=this.document.createElement("iframe");r.src=this._buildUrlAndCopyAttributes(t,r,e),r.dataset.isSocialOauthButton=!0,t.replaceWith(r)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(C);this.window.dispatchEvent(e),y(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,r){let{buyerSellerServiceUrl:i,companyId:s,websiteId:o,pageId:n,pageMeta:a}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${i}/buttons/${r}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",s),c.searchParams.append("websiteId",o),c.searchParams.append("pageId",n),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(a)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
2274return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),r=4-t.length%4,i=4===r?t:t+"=".repeat(r);return JSON.parse(atob(i))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(B,window,document),J=new class extends m{constructor(e,t,r){super(e,t,r),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:r})=>{e&&e.removeEventListener&&e.removeEventListener(t,r)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector('input[name="email"]');r&&"string"==typeof e&&(r.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let r=t.querySelector(`#${this.modalId}-triggerSource`);r&&"string"==typeof e&&(r.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,r){let i="";if(r){let e=new Date;e.setTime(e.getTime()+864e5*r),i=`; expires=${e.toUTCString()}`}let s="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(s+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${i}${s}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let r=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",r),this.eventListeners.push({element:t,event:"formsubmitted",handler:r})}let r=e.querySelector('[data-dismiss="modal"]');if(r){let t=()=>{e.style.display="none",this.restoreBodyScroll()};r.addEventListener("click",t),this.eventListeners.push({element:r,event:"click",handler:t})}let i=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",i),this.eventListeners.push({element:e,event:"click",handler:i})}}(B,window,document),X=new class extends m{constructor(e,t,r){super(e,t,r),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let r=` 2275 query { 2276 validSession { 2277 success 2278 } 2279 } 2280 `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:r})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let i=t.data?.validSession?.success===!0;return this.lastValidationResult=i,this.lastValidationTime=Date.now(),i}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(B,window,document),Z=new class extends m{constructor(e,t,r){super(e,t,r),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=I[e.provider];if(!t)return;this.eventName=t.eventName;let r=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||r)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(B,window,document),ee=new class extends m{destroy(){}transformVariables(e,t){let r;return x(r={...t},["testimonialId"]),R(r,["testimonialId"],"testimonialIds"),0===r.limit&&delete r.limit,(void 0===r.limit||null===r.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(r.limit=50),("agents"===e||"agentsCount"===e||"developments"===e||"developmentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(r.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(r),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":x(e,["testimonialIds"]);break;case"agents":case"agentsCount":x(e,["officeId","teamId","developmentId","agentIds","tags"]),R(e,["officeId"],"officeIds"),R(e,["teamId"],"teamIds"),R(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":x(e,["neighborhoodIds","neighborhoodId"]),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":x(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),R(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds"),R(e,["developmentIds","developmentId"],"developmentIds");break;case"properties":case"propertiesCount":x(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
2280spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>R(e,[t],t)),R(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),R(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),R(e,["networkId"],"networkId"),R(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":x(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":x(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),R(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":x(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),R(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":x(e,["officeId","officeIds","tags"]),R(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":x(e,["teamId","teamIds"]),R(e,["teamId"],"teamIds");break;case"pois":x(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(r,e),r}transformResponse(e,t){return"agent"===e?P(t,T):"agents"===e||"agentsCount"===e?O(t,L):"neighborhood"===e?P(t,k):"neighborhoods"===e||"neighborhoodsCount"===e?O(t,M):"development"===e?P(t,$):"developments"===e||"developmentsCount"===e?O(t,U):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,r){if(!Array.isArray(t)||!t.length||!r||!r.length)return Promise.resolve(t);let i=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),s=e=>{let i={};return(e||[]).forEach(e=>{i[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&i[`${e.vendorId}:${e.mlsId}`],s={};return r.forEach(e=>{let r=t?t[D[e]]:void 0;s[e]=r??null}),{...e,...s}})};if(!i.length)return Promise.resolve(s([]));let{websiteId:o}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(N),variables:{input:{websiteId:"string"==typeof o?o:void 0,properties:i}}}).then(e=>s(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),s([]))):Promise.resolve(s([]))}}(B,window,document),et=new class extends m{constructor(e,t,r){super(e,t,r),this.natives=new WeakMap,this.rates=new Map,this.pending=new Map,this.target=void 0,this.generation=0,this.initialized=!1,this.observer=null,this.abortController=null}get currentCurrency(){return this.target}get cookieOptions(){return{document:this.document,location:this.window.location}}get enabledCurrencies(){return(this.config.enabledCurrencies??[]).map(F.toSupportedToCurrency).filter(Boolean)}initialize(){return this.initialized||!this.config.currencyConversionEnabled?Promise.resolve():(this.initialized=!0,this.generation=0,this.abortController=new this.window.AbortController,this.target=(0,F.readValidCurrencyCookie)(this.cookieOptions,{enabled:!0,enabledCurrencies:this.enabledCurrencies}),this.observer=new this.window.MutationObserver(()=>this.ensureRates(this.apply())),this.observer.observe(this.document.body,{childList:!0,subtree:!0}),this.ensureRates(this.apply()))}setCurrency(e){if(!this.config.currencyConversionEnabled)return!1;let t=(0,F.toSupportedToCurrency)(e);return!!t&&!!this.enabledCurrencies.includes(t)&&(this.target=t,this.generation+=1,(0,F.writeCurrencyCookie)(this.cookieOptions,t)||console.warn("[CurrencyConversionController] could not persist currency preference:",t),this.apply(),!0)}reset(){this.config.currencyConversionEnabled&&(this.target=void 0,this.generation+=1,(0,F.clearCurrencyCookie)(this.cookieOptions),this.apply())}destroy(){this.observer?.disconnect(),this.observer=null,this.abortController?.abort(),this.abortController=null,this.pending.clear(),this.rates.clear(),this.generation=null,this.initialized=!1}apply(){let e=new Set;return this.document.querySelectorAll("[data-lp-price]").forEach(t=>{let r=this.natives.get(t);if(!r){if(!(r=(e=>{let t=e.getAttribute("data-lp-native-amount"),r=null===t||""===t.trim()?NaN:Number(t),i=(0,F.toSupportedFromCurrency)(e.getAttribute("data-lp-native-currency"));if(!Number.isFinite(r)||r<0||!i)return;let s=Number(e.getAttribute("data-lp-precision"));return{amount:r,currency:i,precision:Number.isInteger(s)&&s>=0?s:0,originalHTML:e.innerHTML}})(t)))return;this.natives.set(t,r)}this.rates.has(r.currency)||e.add(r.currency),this.render(t,r)}),[...e]}render(e,t){let r=this.convertedText(t);if(void 0===r){e.innerHTML!==t.originalHTML&&(e.innerHTML=t.originalHTML);return}e.textContent!==r&&(e.textContent=r)}convertedText(e){if(!this.target||this.target===e.currency)return;let t=this.rates.get(e.currency)?.[this.target];
2280if("number"!=typeof t||!Number.isFinite(t))return;let r=(0,F.convertAmount)(e.amount,t);if(void 0!==r)return(0,F.formatMoney)(r,this.target,{precision:e.precision})}ensureRates(e){return e.length?Promise.all(e.map(e=>this.requestRates(e))).then(()=>{null!==this.generation&&this.apply()}):Promise.resolve()}requestRates(e){let t=this.pending.get(e);if(t)return t;let r=this.abortController?.signal,i=(0,F.fetchExchangeRates)(e,{baseUrl:this.config.valuationApiBase,signal:r,onError:t=>console.warn(`[CurrencyConversionController] exchange rate fetch failed for ${e}:`,t)}).then(t=>{r?.aborted||this.rates.set(e,t??{})});return this.pending.set(e,i),i}}(B,window,document);function er(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}er("config",B),er("modals",q),er("buttons",V),er("validation",j),er("contactForms",H),er("mapApiLoader",G),er("pagination",K),er("expandSliders",Y),er("divolte",z),er("eventBus",W),er("oauth",Q),er("qualifyingQuestionsModal",J),er("session",X),er("consent",Z),er("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),er("routerApi",ee),er("currencyConversion",et),window.luxuryPresence.formatSliderPriceRange=K.formatSliderPriceRange.bind(K),window.luxuryPresence.formatSliderAreaRange=K.formatSliderAreaRange.bind(K),window.luxuryPresence.getSearchFormValues=K.getSearchFormValues.bind(K),window.luxuryPresence.handlebarsHelpersFactory=function(t){return e(n)(t,{isEqual:(e,t)=>e==t})}})(); 2281//# sourceMappingURL=lp-sdk.js.map 2282 2283 </script>
2283 2284 2285
2285<script> 2286 var lpGlobalInitialized = false; 2287 2288 function lpGlobalInit () { 2289 if (lpGlobalInitialized) { 2290 return; 2291 } 2292 lpGlobalInitialized = true; 2293 // Initialize wow animation plugin only according to turbolinks 2294 var wow; 2295 if (window.WOW) { 2296 wow = new WOW({ 2297 animateClass: 'animated', 2298 offset: wowOffset, 2299 live: false, 2300 callback: function(box) {} 2301 }); 2302 } 2303 // Initialize handlebar helpers only once 2304 function handlebarsInit() { 2305 if (!window.Handlebars) { 2306 return; 2307 } 2308 HandlebarsIntl.registerWith(Handlebars); 2309 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 2310 } 2311 2312 handlebarsInit(); 2313 2314 var modalContentUrl = "/modals.html"; 2315 const modalsContainer = document.getElementById('modals'); 2316 if (modalsContainer) { 2317 fetch(modalContentUrl).then(function(res) { 2318 if (!res.ok) { 2319 throw new Error(`HTTP error! Status: ${res.status}`); 2320 } 2321 return res.text(); 2322 }).then(function(resultText) { 2323 modalsContainer.innerHTML = resultText; 2324 2325 // now we need to execute all script elements 2326 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 2327 const script = document.createElement("script"); 2328 script.text = s.innerHTML; 2329 Array.from(s.attributes).forEach(function (a) { 2330 script.setAttribute(a.name, a.value); 2331 }) 2332 s.parentNode.replaceChild(script, s); 2333 }); 2334 2335 try { 2336 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 2337 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 2338 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 2339 window.luxuryPresence.oauth.initialize({ 2340 googleSignOnEnabled: true, 2341 iframe: false }); 2342 } catch (e) { 2343 console.log(e); 2344 } 2345 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 2346 closeModalBtn.addEventListener('click', function() { 2347 window.lpUI.hideClosestModal(closeModalBtn); 2348 }); 2349 }); 2350 }).catch((e) => console.log(e)); 2351 } 2352 /* Initialize Luxury Presence SDK */ 2353 try { 2354 window.luxuryPresence.config.setCompany("4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd", {}); 2355 window.luxuryPresence.config.setWebsite("c1918b01-2cf0-469f-8209-e9bb9f9fea16", { 2356 myhomeDashboardEnabled: false, 2357 mlsEnabled: true, 2358 hstValuationRedirectEnabled: true, 2359 hvStepTwoCaptureEnabled: false 2360 }); 2361 const url = new URL(window.location.href); 2362 const shareId = url.searchParams.get('shareId'); 2363 window.luxuryPresence.config.setPage("eba87bdf-51c2-4ce9-884d-142b50ce2d6c", { 2364 sourceResource: "", 2365 pageElementId: "", 2366 pageQueryVariables: {}, 2367 shareId: "", 2368 }); 2369 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 2370 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 2371 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 2372 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 2373 window.luxuryPresence.config.setEventBus({ 2374 enabled: true, 2375 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 2376 url: "https://p.luxurypresence.com", 2377 }); 2378 window.luxuryPresence.config.setTemplateId("e355b82f-1d84
2378-46ea-bf4a-f8c8c0382fb8", {}); 2379 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 2380 window.luxuryPresence.buttons.initialize({}); 2381 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 2382 window.luxuryPresence.contactForms.initialize({}); 2383 window.luxuryPresence.validation.initialize({}); 2384 window.luxuryPresence.expandSliders.initialize({}); 2385 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 2386 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 2387 /* Optional: cached pages / older SDKs may not carry this controller */ 2388 window.luxuryPresence.currencyConversion?.initialize(); 2389 } catch (e) { 2390 console.log(e); 2391 } 2392 2393 /* Inject Section Specific Javascript */ 2394 try { 2395(function init(sectionDomId) { 2396 const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content'); 2397 if (disclaimerLabel) { 2398 const input = disclaimerLabel.querySelector('input'); 2399 if (input) { 2400 input.setAttribute('id', `${sectionDomId}-termsAccepted`); 2401 input.value = 'true'; 2402 const label = document.createElement('label'); 2403 label.setAttribute('for', `${sectionDomId}-termsAccepted`); 2404 label.classList.add('lp-visually-hidden'); 2405 label.textContent = 'Opt in/Disclaimer Consent:'; 2406 disclaimerLabel.prepend(label); 2407 } 2408 } 2409 function setHttp(link) { 2410 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2411 link = 'https://' + link; 2412 } 2413 return link; 2414 } 2415 const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link'); 2416 socialLinks.forEach(linkElement => { 2417 const href = linkElement.getAttribute('href'); 2418 if (href) { 2419 linkElement.setAttribute('href', setHttp(href)); 2420 } 2421 }); 2422 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 2423 if (redirectLink.length) { 2424 const rawHref = setHttp(redirectLink.attr('href')); 2425 let formEvent; 2426 if (rawHref) { 2427 formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset'; 2428 $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () { 2429 redirectLink.attr('href', rawHref); 2430 redirectLink[0].click(); 2431 }); 2432 } 2433 } 2434})('modal-global-contact-us'); 2435} catch(e) { 2436console.log(e); 2437} 2438 2439 try { 2440(function init(sectionDomId) { 2441 const $section = $('#' + sectionDomId); 2442 const $hamburger = $section.find('.hamburger-component'); 2443 function onSideMenuShow() { 2444 if (!$hamburger.hasClass('active')) { 2445 $hamburger.addClass('active'); 2446 } 2447 } 2448 function onSideMenuHide() { 2449 $hamburger.removeClass('active'); 2450 } 2451 const $window = $(window); 2452 $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow); 2453 $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide); 2454 const $subContainers = $section.find('.navigation__item.sub-nav-container'); 2455 $subContainers.hover(function () { 2456 $(this).find('.sub-nav').addClass('visible'); 2457 }, function () { 2458 $(this).find('.sub-nav').removeClass('visible'); 2459 }); 2460 $window.on('click.lpui-auto-clean', function () { 2461 $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown'); 2462 }); 2463 let fixedWidth = 0; 2464 const rightPad = 20; 2465 function fixSubsPosition() { 2466 const wWidth = window.innerWidth; 2467 if (innerWidth === fixedWidth) { 2468 return; 2469 } 2470 fixedWidth = wWidth; 2471 $subContainers.each(function () { 2472 const $sub = $(this).find('.sub-nav'); 2473 $sub[0].style.right = ''; 2474 const sRect = $sub[0].getBoundingClientRect(); 2475 const sRight = sRect.left + sRect.width; 2476 if (sRight > wWidth - rightPad) { 2477 const parentRect = $sub[0].offsetParent.getBoundingClientRect(); 2478 const parentRight = parentRect.left + parentRect.width; 2479 $sub[0].style.right = `${parentRight - wWidth + rightPad}px`; 2480 } 2481 }); 2482 } 2483 var debouncer; 2484 $window.on('resize.lpui-auto-clean', function () { 2485 clearTimeout(debouncer); 2486 debouncer = setTimeout(fixSubsPosition, 500); 2487 }); 2488 fixSubsPosition(); 2489 if ($('.property-intro').length || $('.property-intro-2').length) { 2490 $('nav').addClass('dark-opening'); 2491 $("#global-navbar").css({ 2492 "background-color": "rgb(26, 26, 26)", 2493 "color": "rgb(255, 255, 255)" 2494 }); 2495 } 2496 function initAutoTruncateMenu() {
2497 const $navbar = $section.find('.navbar'); 2498 const $navList = $section.find('.navigation > ul'); 2499 if (!$navbar.length || !$navList.length) { 2500 return; 2501 } 2502 const $logo = $section.find('.logo'); 2503 const $buttonsWrapper = $section.find('.buttons-wrapper'); 2504 const $allItems = $navList.children('.navigation__item'); 2505 const $phoneItem = $allItems.filter(function () { 2506 return $(this).find('a[href^="tel:"]').length > 0; 2507 }); 2508 const $menuItems = $allItems.not($phoneItem); 2509 if (!$menuItems.length) { 2510 return; 2511 } 2512 const buffer = 8; 2513 function measureFixedWidth() { 2514 let width = buffer; 2515 if ($logo.length) { 2516 width += $logo.outerWidth(true) || 0; 2517 } 2518 if ($buttonsWrapper.length) { 2519 width += $buttonsWrapper.outerWidth(true) || 0; 2520 } 2521 if ($phoneItem.length) { 2522 width += $phoneItem.outerWidth(true) || 0; 2523 } 2524 return width; 2525 } 2526 function truncateMenu() { 2527 if (!$navList.is(':visible')) { 2528 return; 2529 } 2530 $menuItems.css('display', ''); 2531 const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth(); 2532 let widthSoFar = 0; 2533 let overflowed = false; 2534 $menuItems.each(function () { 2535 const $item = $(this); 2536 if (overflowed) { 2537 $item.css('display', 'none'); 2538 return; 2539 } 2540 widthSoFar += $item.outerWidth(true); 2541 if (widthSoFar > availableWidth) { 2542 $item.css('display', 'none'); 2543 overflowed = true; 2544 } 2545 }); 2546 } 2547 let truncateFrame; 2548 function scheduleTruncate() { 2549 if (truncateFrame) { 2550 return; 2551 } 2552 truncateFrame = window.requestAnimationFrame(function () { 2553 truncateFrame = null; 2554 truncateMenu(); 2555 }); 2556 } 2557 scheduleTruncate(); 2558 if (window.ResizeObserver) { 2559 const resizeObserver = new ResizeObserver(scheduleTruncate); 2560 resizeObserver.observe($navbar[0]); 2561 } else { 2562 $(window).on('resize.lpui-auto-truncate', scheduleTruncate); 2563 } 2564 $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate); 2565 $(window).on('load.lpui-auto-truncate', scheduleTruncate); 2566 if (document.fonts && document.fonts.ready) { 2567 document.fonts.ready.then(scheduleTruncate); 2568 } 2569 } 2570 initAutoTruncateMenu(); 2571})('global-navbar'); 2572} catch(e) { 2573console.log(e); 2574} 2575 try { 2576(function init(sectionDomId, options) { 2577 var elementSelector = options.elementSelector || 'nav'; 2578 var element = document.querySelector(elementSelector); 2579 var sections = document.querySelectorAll('body > section'); 2580 var subNavContainers = element.querySelectorAll('.sub-nav'); 2581 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 2582 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 2583 var fontColor = options.fontColor || '#fff'; 2584 var fontColorScroll = options.fontColorScroll || '#000'; 2585 var didScroll = false; 2586 var lastScrollTop = 0; 2587 var delta = 5; 2588 2589 // eslint-disable-next-line sonarjs/no-collapsible-if 2590 if (wow) { 2591 // Wowjs might not trigger for position fixed elements 2592 if (window.scrollY > 0) { 2593 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 2594 } 2595 } 2596 function adjustNavPinState() { 2597 // Remove 'visible' class from all subNavContainers 2598 for (let i = 0; i < subNavContainers.length; i++) { 2599 subNavContainers[i].classList.remove('visible'); 2600 } 2601 if (window.scrollY > 0) { 2602 element.style.backgroundColor = backgroundColorScroll; 2603 element.style.color = fontColorScroll; 2604 element.classList.add('scroll'); 2605 } else { 2606 element.style.backgroundColor = initialBackgroundColor; 2607 element.style.color = fontColor; 2608 element.classList.remove('scroll'); 2609 } 2610 } 2611 adjustNavPinState(); 2612 function onScroll() { 2613 didScroll = true; 2614 } 2615 window.addEventListener('scroll', onScroll); 2616 2617 // eslint-disable-next-line 2618 var debounceInterval = setInterval(() => { 2619 if (didScroll) { 2620 // eslint-disable-next-line 2621 hasScrolled(); 2622 didScroll = false;
2623 } 2624 }, 250); 2625 function hasScrolled() { 2626 adjustNavPinState(); 2627 // eslint-disable-next-line 2628 var navbarHeight = element.offsetHeight; 2629 // eslint-disable-next-line 2630 var st = window.scrollY; 2631 2632 // Make sure they scroll more than delta 2633 if (Math.abs(lastScrollTop - st) <= delta) { 2634 return; 2635 } 2636 if (st > lastScrollTop && st > navbarHeight) { 2637 // Scroll Down 2638 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 2639 document.documentElement.style.setProperty('--global-header-height', '0px'); 2640 2641 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 2642 sections.forEach(section => { 2643 if (section.classList.contains('sticky')) { 2644 section.style.top = '0px'; 2645 } 2646 }); 2647 } else { 2648 // Scroll Up 2649 // eslint-disable-next-line 2650 if (st + window.innerHeight < document.documentElement.scrollHeight) { 2651 element.style.transform = `translateY(0) scaleY(1)`; 2652 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 2653 sections.forEach(section => { 2654 if (section.classList.contains('sticky')) { 2655 section.style.top = `${navbarHeight}px`; 2656 } 2657 }); 2658 } 2659 } 2660 lastScrollTop = st; 2661 } 2662})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}")); 2663} catch(e) { 2664console.log(e); 2665} 2666 try { 2667(function init(sectionDomId) { 2668 var sidemenu = $('#' + sectionDomId); 2669 sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () { 2670 window.lpUI.requestScrollLock(sectionDomId); 2671 }); 2672 $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () { 2673 window.lpUI.releaseScrollLock(sectionDomId); 2674 }); 2675 $(window).click(function (e) { 2676 let targetContactForm = $(e.target).closest('#modal-global-contact-us').length; 2677 let targetSideMenu = $(e.target).closest('.sidemenu').length; 2678 let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length; 2679 let targetHamburger = $(e.target).closest('.hamburger-component').length; 2680 if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { 2681 $('body').removeClass('locked'); 2682 $('.hamburger').removeClass('active'); 2683 $('.sidemenu').removeClass('visible'); 2684 $('#modal-global-contact-us').removeClass('visible'); 2685 } 2686 }); 2687})('global-sidemenu'); 2688} catch(e) { 2689console.log(e); 2690} 2691 2692 try { 2693(function init(footerId) { 2694 var textContent = $(".text_content_wrap p").text().trim().length; 2695 const socialLinks = $(`#${footerId} .lp-socials__link`); 2696 if (textContent < 1) { 2697 $(".text_content_wrap").remove(); 2698 $(".second_text_footer").css({ 2699 'margin-bottom': 0 2700 }); 2701 } 2702 if (socialLinks.length > 0) { 2703 socialLinks.attr('data-wow-offset', '10'); 2704 } 2705 if ($(window).width() > 1280) { 2706 let footer = document.querySelector("#" + footerId); 2707 let copyrightElem = footer.querySelector(".copy_zone"); 2708 if (copyrightElem) { 2709 copyrightElem.style.whiteSpace = "nowrap"; 2710 let nowrapElemWidth = copyrightElem.clientWidth; 2711 copyrightElem.style.whiteSpace = ""; 2712 let normalElemWidth = copyrightElem.clientWidth; 2713 if (nowrapElemWidth > normalElemWidth) { 2714 footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto"); 2715 } 2716 } 2717 } 2718 const form = $("#" + footerId).find("form"); 2719 const redirectLink = $('#' + footerId + ' .redirect-link'); 2720 form.on("reset", function () { 2721 redirectPage(redirectLink); 2722 }); 2723 function redirectPage(link) { 2724 if (link.length) { 2725 const rawHref = link.attr('href'); 2726 link.attr('href', setHttp(rawHref)); 2727 link[0].click(); 2728 } 2729 } 2730 function setHttp(link) { 2731 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 2732 link = 'http://' + link; 2733 } 2734 return link; 2735 } 2736})('global-footer'); 2737} catch(e) { 2738console.log(e); 2739} 2740 2741 try { 2742(function init(options) {})('global-mobile-contact'); 2743} catch(e) { 2744console.log(e); 2745} 2746 2747 try { 2748(function init(sectionDomId) { 2749 var textBlock = $('#' + sectionDomId + ' .hoverable-image__text-wrap'); 2750 var textBlockPaddingTop = parseInt($('#' + sectionDomId + ' .hoverable-image__text-col').css('padding-top')); 2751 var textBlockPaddingBottom = parseInt($('#' + sectionDomId + ' .hoverable-image__text-col').css('padding-bottom')); 2752 var imageBlock = $('#' + sectionDomId + ' .hoverable-image__img-col > div'); 2753 function resizeImage() { 2754 if (window.matchMedia('(min-width: 993px)').matches) { 2755 imageBlock.css('min-height', textBlock.height() + textBlockPaddingTop + textBlockPaddingBottom); 2756 } 2757 } 2758 $('#' + sectionDomId + ' .hoverable-image__img-col--on-hover').click(function () { 2759 if (window.matchMedia('(hover: none) and (pointer: coarse)').matches) { 2760 $(this).toggleClass('active'); 2761 } 2762 }); 2763 resizeImage(); 2764 $(window).on('resize.lpui-auto-clean', resizeImage); 2765})('section-cdc222be-6c3c-4f65-9d2e-00a0a9761db3', 'undefined'); 2766} catch(e) { 2767console.log(e); 2768} 2769 try { 2770(function init(sectionDomId) {})('section-b1791a98-6db4-4b90-ac86-7eb860c2dfe8', 'undefined'); 2771} catch(e) { 2772console.log(e); 2773} 2774 try { 2775(function init(sectionDomId) { 2776 const $section = $('#' + sectionDomId); 2777 const $window = $(window); 2778 const duration = 3000; 2779 const step = 50; 2780 const items = []; 2781 let started = false;
2782 function analyze() { 2783 const elems = $section.find('.jsValue'); 2784 elems.each(function () { 2785 const $el = $(this); 2786 const match = $el.text().match(/^(\D*)(\d(.*\d)?)(.*)$/); 2787 if (match) { 2788 const str = match[2]; 2789 let frac = 0; 2790 let fSep = ''; 2791 let nmb; 2792 if (!/\..*\./.test(str)) { 2793 const m = str.match(/\.(\d+)$/); 2794 if (m) { 2795 frac = m[1].length; 2796 fSep = '.'; 2797 nmb = parseFloat(str.replace(/[^\d\.]/g, '')); 2798 } 2799 } 2800 if (!frac) { 2801 if (!/,.*,/.test(str)) { 2802 const m = str.match(/,(\d+)$/); 2803 if (m) { 2804 frac = m[1].length; 2805 fSep = ','; 2806 nmb = parseFloat(str.replace(',', '.').replace(/[^\d\.]/g, '')); 2807 } 2808 } 2809 } 2810 if (!frac) { 2811 nmb = parseInt(str.replace(/\D/g, '')); 2812 } 2813 items.push({ 2814 el: $el, 2815 prefix: match[1] || '', 2816 suffix: match[4] || '', 2817 str: match[2], 2818 nmb, 2819 frac, 2820 fSep 2821 }); 2822 } 2823 }); 2824 if (!items.length) { 2825 started = true; 2826 return; 2827 } 2828 } 2829 function animate() { 2830 if (started) { 2831 return; 2832 } 2833 started = true; 2834 setTimeout(iterate, step); 2835 } 2836 let pos = 0; 2837 function iterate() { 2838 if (pos >= duration) { 2839 items.forEach(function (item) { 2840 item.el.text(item.prefix + item.str + item.suffix); 2841 }); 2842 } else { 2843 items.forEach(function (item) { 2844 const valStr = formatValue(item, pos / duration); 2845 item.el.text(item.prefix + valStr + item.suffix); 2846 }); 2847 pos += step; 2848 setTimeout(iterate, step); 2849 } 2850 } 2851 function formatValue(item, val) { 2852 const str = (item.nmb * val).toFixed(item.frac).replace(/\D/, ''); 2853 let i = 0; 2854 let j = 0; 2855 let res = ''; 2856 while (i < item.str.length && j < str.length) { 2857 const c = item.str[item.str.length - i - 1]; 2858 const code = c.charCodeAt(0); 2859 if (code >= 48 && code <= 57) { 2860 res = str[str.length - j - 1] + res; 2861 j++; 2862 } else { 2863 res = c + res; 2864 } 2865 i++; 2866 } 2867 return res; 2868 } 2869 function calculateVisibility() { 2870 if ($window.height() + $window.scrollTop() >= $section.offset().top) { 2871 $window.off('scroll', calculateVisibility); 2872 animate(); 2873 } 2874 } 2875 analyze(); 2876 if (items.length) { 2877 $window.on('scroll.lpui-auto-clean', calculateVisibility); 2878 calculateVisibility(); 2879 } 2880})('section-ca104860-0b93-473a-96df-edd9123942b7', 'undefined'); 2881} catch(e) { 2882console.log(e); 2883} 2884 try { 2885(function init(sectionDomId, options) { 2886 let section = null; 2887 switch (sectionDomId) { 2888 case 'NAVBAR': 2889 section = document.querySelector('body > nav, #global-navbar'); 2890 break; 2891 case 'FOOTER': 2892 section = document.querySelector('body > footer, #global-footer'); 2893 break; 2894 case 'SIDEMENU': 2895 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 2896 break; 2897 case 'CONTACT': 2898 section = document.querySelector('#modal-global-contact-us'); 2899 break; 2900 case 'MOBILE_CONTACT': 2901 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 2902 break; 2903 case 'SUBSCRIBE': 2904 // Subscribe Not Implemented 2905 section = null; 2906 break; 2907 case 'ACCOUNT': 2908 // Account Not Implemented 2909 section = null; 2910 break; 2911 default: 2912 section = document.querySelector('#' + sectionDomId); 2913 } 2914 if (!section) { 2915 return; 2916 } 2917 2918 // Where content / items are rendered 2919 const dataContainer = section.querySelector('.data-container'); 2920 if (!dataContainer) { 2921 // no place to render items = no need to query server or do anything else 2922 return; 2923 } 2924 let variables = options.variables || {}; 2925 2926 // Some variables in options may not have been injected - remove 2927 Object.keys(variables).forEach(function (variableName) { 2928 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 2929 delete variables[variableName]; 2930 } 2931 }); 2932 2933 // Merge page query variables 2934 if (options.usePageResource) { 2935 variables = { 2936 ...variables, 2937 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 2938 }; 2939 } 2940 2941 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 2942 // resolve the flag â fetchData reads the section stamp, aux fetches read 2943 // their own resource's stamp (auxUsesRouter). 2944 function apiUrl(useRouter) { 2945 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 2946 } 2947 2948 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 2949 // (options.routerApiAux is stamped per aux resource server-side). 2950 function auxUsesRouter(resource) { 2951 return !!(options.routerApiAux && options.routerApiAux[resource]); 2952 } 2953 2954 // Pagination Executes on a Numbered Pagination Container 2955 // Or via a load more button 2956 let mode = 'BUTTONLESS_PAGINATION'; 2957 const container = section.querySelector('.pagination-container');
2958 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 2959 if (container) { 2960 mode = 'NUMBERED_PAGINATION'; 2961 } 2962 if (loadMoreButton) { 2963 mode = 'LOAD_MORE_BUTTON'; 2964 } 2965 let searchContainer = section.querySelector('.search-container'); 2966 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 2967 const eventPrefix = '__pagination-'; 2968 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 2969 param: 'neighborhoodId', 2970 urlKey: 'neighborhood' 2971 }, { 2972 param: 'search', 2973 urlKey: 'search' 2974 }, { 2975 param: 'salesPriceGTE', 2976 urlKey: 'pricemin', 2977 formKey: 'priceMin', 2978 type: 'int' 2979 }, { 2980 param: 'salesPriceLTE', 2981 urlKey: 'pricemax', 2982 formKey: 'priceMax', 2983 type: 'int' 2984 }, { 2985 param: 'livingSpaceSizeGTE', 2986 urlKey: 'areamin', 2987 formKey: 'areaMin', 2988 type: 'int' 2989 }, { 2990 param: 'livingSpaceSizeLTE', 2991 urlKey: 'areamax', 2992 formKey: 'areaMax', 2993 type: 'int' 2994 }] : []); 2995 2996 // Total entries - initialized in first render 2997 let totalNumber = 0; 2998 const DefaultSearchParams = { 2999 page: 1 3000 }; 3001 searchFormParams.forEach(function (formParam) { 3002 DefaultSearchParams[formParam.formKey || formParam.param] = null; 3003 }); 3004 let searchParams = { 3005 ...DefaultSearchParams 3006 }; 3007 const offset = options.variables?.offset || 0; 3008 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 3009 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 3010 3011 // entries of per page 3012 // when query variables for a given section would't be filled options.pageSize can store 3013 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 3014 let pageSize = parseInt(options.pageSize, 10) || 9; 3015 3016 // Adding mobile pageRange support 3017 var NARROW_BREAKPOINT = 600; 3018 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 3019 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 3020 3021 // Page range (pages on both sides of the current page) 3022 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 3023 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 3024 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 3025 3026 // Whether to display the 'Previous' button 3027 var showPrevious = true; 3028 3029 // Whether to display the 'Next' button 3030 var showNext = true; 3031 3032 // Whether to display the page buttons 3033 var showPageNumbers = true; 3034 3035 // 'Previous' text 3036 var prevText = options.prevText || '«'; 3037 3038 // 'Next' text 3039 var nextText = options.nextText || '»'; 3040 3041 // Ellipsis text 3042 var ellipsisText = '…'; 3043 var classPrefix = 'paginationjs'; 3044 3045 // Default active class 3046 var activeClassName = 'active'; 3047 3048 // Default disable class 3049 var disableClassName = 'disabled'; 3050 3051 // Pagination element's position in the container 3052 var position = 'bottom'; 3053 3054 // Whether to trigger pagination at initialization 3055 var triggerPagingOnInit = !options.skipInitialLoad; 3056 var showFirstOnEllipsisShow = true; 3057 var showLastOnEllipsisShow = true; 3058 3059 // Instantiated in init() 3060 var el = null; 3061 3062 // Controls scrollTop logic 3063 var firstRender = true; 3064 var renderBySearch = false; 3065 var disabled = false; 3066 3067 // Pagination script class selector 3068 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 3069 3070 // Property Specific Image Override if No Image 3071 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 3072 3073 // Construct template 3074 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 3075 var template = Handlebars.compile(templateHTML); 3076 3077 // Initialize 3078 init(); 3079 function init() { 3080 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3081 3082 // Append/prepend pagination element to the pagination container 3083 if (mode === 'NUMBERED_PAGINATION') { 3084 el = document.createElement('div'); 3085 el.className = 'paginationjs';
3086 container[position === 'bottom' ? 'append' : 'prepend'](el); 3087 } 3088 if (searchContainer) { 3089 initSearchContainer({ 3090 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 3091 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 3092 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 3093 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 3094 }, function () { 3095 syncSearchFormState(searchParams); 3096 }); 3097 } 3098 3099 // Bind events 3100 observer(); 3101 } 3102 function syncSearchFormState(params) { 3103 searchContainer.dispatchEvent(new CustomEvent('sync', { 3104 detail: params 3105 })); 3106 } 3107 function initSearchContainer(options, done) { 3108 var promises = []; 3109 if (options.fetchNeighborhoods) { 3110 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 3111 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 3112 detail: { 3113 data: neighborhoods.map(function (item) { 3114 return { 3115 value: item.id, 3116 label: item.name 3117 }; 3118 }) 3119 } 3120 })); 3121 })); 3122 } 3123 if (options.fetchPostCategories) { 3124 promises.push(fetchPostCategories(function (categories) { 3125 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 3126 detail: { 3127 data: categories 3128 } 3129 })); 3130 })); 3131 } 3132 if (options.fetchOffices) { 3133 promises.push(fetchOffices(function (offices) { 3134 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 3135 detail: { 3136 data: offices 3137 } 3138 })); 3139 })); 3140 } 3141 if (options.fetchRentalRates) { 3142 promises.push(fetchAllRentalRates(function (rentalRates) { 3143 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 3144 detail: { 3145 data: rentalRates 3146 } 3147 })); 3148 })); 3149 } 3150 if (promises.length > 0) { 3151 Promise.all(promises).then(function () { 3152 done(); 3153 }); 3154 } else { 3155 // element's custom code is not executed yet, so we're scheduling callback to after element's code 3156 setTimeout(done); 3157 } 3158 } 3159 function fetchAllNeighborhoods(done) { 3160 var useRouter = auxUsesRouter('neighborhoods'); 3161 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 3162 // args on both APIs (the federated neighborhoods field accepts 3163 // withProperties/withBlogPosts); only the selection set differs. 3164 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') + '}}'; 3165 var payload = {}; 3166 payload.offset = 0; 3167 payload.limit = 100; 3168 payload.companyId = variables.companyId; 3169 if (options.resource === 'properties') { 3170 payload.withProperties = { 3171 active: true 3172 }; 3173 ['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) { 3174 if (variables[field] !== undefined && variables[field] !== null) { 3175 payload.withProperties[field] = variables[field]; 3176 } 3177 }); 3178 } 3179 if (options.resource === 'posts') { 3180 payload.withBlogPosts = { 3181 active: true 3182 }; 3183 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 3184 if (variables[field] !== undefined && variables[field] !== null) { 3185 payload.withBlogPosts[field] = variables[field]; 3186 } 3187 }); 3188 } 3189 3190 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3191 if (useRouter) { 3192 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 3193 } 3194 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3195 query: gqlQuery, 3196 variables: payload 3197 }).then(function (res) { 3198 var value = res.body.data && res.body.data.neighborhoods || {}; 3199 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3200 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3201 done(items, items.length); 3202 }); 3203 } 3204 function fetchPostCategories(done) { 3205 var featured = options.resource === 'posts' && !!variables.featured; 3206 var useRouter = auxUsesRouter('postCategories'); 3207 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3208 // selection set differs ({ items {...} } on the router). 3209 var selection = 'id, name, publishedCount, featuredPublishedCount'; 3210 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) + '}}'; 3211 var payload = {}; 3212 payload.offset = 0; 3213 payload.limit = 100; 3214 payload.companyId = variables.companyId; 3215 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3216 query: gqlQuery, 3217 variables: payload 3218 }).then(function (res) { 3219 var value = res.body.data && res.body.data.postCategories || {}; 3220 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3221 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3222 done(items.map(function (item) { 3223 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 3224 return item; 3225 }), items.length); 3226 }); 3227 } 3228 function fetchOffices(done) { 3229 var useRouter = auxUsesRouter('offices'); 3230 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3231 // selection set differs ({ items {...} } on the router). 3232 var selection = 'id, name, tags'; 3233 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 3234 // APIs differ in more than the items wrapper: federated offices takes 3235 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 3236 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 + '}}'; 3237 var payload = { 3238 offset: 0, 3239 limit: 100, 3240 companyId: variables.companyId 3241 }; 3242 3243 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3244 if (useRouter) { 3245 payload = window.luxuryPresence.routerApi.transformVariables('office
3245s', payload); 3246 } 3247 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3248 query: gqlQuery, 3249 variables: payload 3250 }).then(function (res) { 3251 var value = res.body.data && res.body.data.offices || {}; 3252 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3253 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3254 done(items, items.length); 3255 }); 3256 } 3257 3258 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 3259 function fetchAllRentalRates(done) { 3260 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 3261 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 3262 var payload = { 3263 offset: 0, 3264 limit: 100, 3265 companyId: variables.companyId 3266 }; 3267 superagent.post(url + '/graphql').withCredentials().send({ 3268 query: gqlQuery, 3269 variables: payload 3270 }).then(function (res) { 3271 var items = res.body.data && res.body.data.rentalRates || []; 3272 done(items, items.length); 3273 }).catch(function (err) { 3274 console.error('Error fetching rental rates:', err); 3275 done([], 0); 3276 }); 3277 } 3278 function fetchData(params, done) { 3279 var resource = options.resource; 3280 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 3281 var payload = {}; 3282 try { 3283 payload = JSON.parse(JSON.stringify(variables)); 3284 } catch (e) { 3285 Object.keys(variables).forEach(function (variableName) { 3286 payload[variableName] = variables[variableName]; 3287 }); 3288 } 3289 payload.offset = (params.page - 1) * pageSize + offset; 3290 payload.limit = pageSize; 3291 payload.companyId = options.companyId; 3292 searchFormParams.forEach(function (formParam) { 3293 var val = params[formParam.formKey || formParam.param]; 3294 if (val !== null && val !== undefined) { 3295 objSet(payload, formParam.param, val); 3296 } 3297 }); 3298 3299 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3300 if (options.useRouterApi) { 3301 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 3302 } 3303 3304 // TODO: Disabled loading due to jarring effect 3305 // dataContainer.html('Loading...'); 3306 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 3307 query: gqlQuery, 3308 variables: payload 3309 }).then(function (res) { 3310 if (res.body.errors) { 3311 done(res.body.errors); 3312 return; 3313 } 3314 var data = res.body.data || {}; 3315 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3316 var resources; 3317 var resourceCount; 3318 if (options.useRouterApi) { 3319 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 3320 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 3321 resourceCount = page.count; 3322 } else { 3323 resources = data[resource] || []; 3324 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 3325 } 3326 const finish = function (items) { 3327 if (resource === 'properties' && propertyPlaceholderImage?.id) { 3328 items = items.map(item => { 3329 if (item.media?.length === 0) { 3330 return Object.assign(item, { 3331 media: [propertyPlaceholderImage] 3332 }); 3333 } 3334 return item; 3335 }); 3336 } 3337 done(null, items, resourceCount); 3338 }; 3339 3340 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 3341 // disclaimers before rendering; older SDKs skip (keys stay unset). 3342 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 3343 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 3344 return; 3345 } 3346 finish(resources); 3347 }); 3348 } 3349 function getTotalPage() { 3350 return Math.ceil(totalNumber / pageSize); 3351 } 3352 function renderPaginationList() { 3353 var totalPages = getTotalPage(); 3354 var rangeStart = searchParams.page - pageRange; 3355 var rangeEnd = searchParams.page + pageRange; 3356 if (rangeEnd > totalPages) { 3357 rangeEnd = totalPages; 3358 rangeStart = totalPages - pageRange * 2; 3359 rangeStart = rangeStart < 1 ? 1 : rangeStart; 3360 } 3361 if (rangeStart <= 1) { 3362 rangeStart = 1; 3363 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 3364 } 3365 3366 // Making sure that 1 more page button is shown in edge positions 3367 if (pageRange === 0) { 3368 if (searchParams.page === totalPages) { 3369 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 3370 } 3371 if (searchParams.page === 1) { 3372 rangeEnd = Math.min(2, totalPages); 3373 } 3374 } 3375 3376 // Render pagination list 3377 if (mode === 'NUMBERED_PAGINATION') { 3378 el.innerHTML = generateHTML({ 3379 currentPage: searchParams.page, 3380 pageRange: pageRange, 3381 rangeStart: rangeStart, 3382 rangeEnd: rangeEnd 3383 }); 3384 if (totalPages < 2 && hidePaginationOnFirstPage) { 3385 container.style.display = 'none'; 3386 } else { 3387 container.style.display = ''; 3388 } 3389 } else if (mode === 'LOAD_MORE_BUTTON') { 3390 if (searchParams.page >= totalPages) {
3391 loadMoreButton.style.display = 'none'; 3392 } else { 3393 loadMoreButton.style.display = ''; 3394 } 3395 } 3396 } 3397 function render(data) { 3398 renderPaginationList(); 3399 3400 // Render new content with handlebars 3401 var html = ''; 3402 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 3403 // If using load more, append search results to existing results 3404 html = dataContainer.innerHTML; 3405 } 3406 for (var i = 0; i < data.length; i++) { 3407 var itemData = recursivelyParse(data[i]); 3408 itemData.sectionIndex = options.sectionIndex; 3409 itemData.renderOptions = options.renderOptions; 3410 html += template(itemData); 3411 } 3412 dataContainer.innerHTML = html; 3413 3414 // Scroll Top 3415 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 3416 // Only animate to the top if we replace dataContainer (numbered pagination) 3417 setTimeout(() => { 3418 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 3419 window.scrollTo({ 3420 top: scrollTargetOffsetTop, 3421 behavior: 'smooth' 3422 }); 3423 }, 250); 3424 } 3425 return true; 3426 } 3427 function generateHTML(args) { 3428 const totalPages = getTotalPage(); 3429 const { 3430 rangeStart, 3431 rangeEnd 3432 } = args; 3433 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3434 ...searchParams, 3435 page 3436 }); 3437 let html = ''; 3438 if (showPrevious || showPageNumbers || showNext) { 3439 html += '<div class="paginationjs-pages"><ul>'; 3440 3441 // Previous button 3442 if (showPrevious) { 3443 if (searchParams.page <= 1) { 3444 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 3445 } else { 3446 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>`; 3447 } 3448 } 3449 3450 // Pages 3451 if (showPageNumbers) { 3452 if (rangeStart <= 3) { 3453 for (let i = 1; i < rangeStart; i++) { 3454 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>`; 3455 } 3456 } else { 3457 if (showFirstOnEllipsisShow) { 3458 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 3459 } 3460 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3461 } 3462 for (let i = rangeStart; i <= rangeEnd; i++) { 3463 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>`; 3464 } 3465 if (rangeEnd < totalPages - 2) { 3466 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3467 if (showLastOnEllipsisShow) { 3468 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 3469 } 3470 } else { 3471 for (let i = rangeEnd + 1; i <= totalPages; i++) { 3472 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 3473 } 3474 } 3475 } 3476 3477 // Next button 3478 if (showNext) { 3479 if (searchParams.page >= totalPages) { 3480 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 3481 } else { 3482 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>`; 3483 } 3484 } 3485 html += '</ul></div>'; 3486 } 3487 return html; 3488 } 3489 function go(newSearchParams, callback, restorationVisit) { 3490 if (disabled) return; 3491 var goToPageNumber = newSearchParams.page; 3492 3493 // Page number is out of bounds 3494 if (!goToPageNumber || goToPageNumber < 1) return; 3495 var totalPage = getTotalPage(); 3496 3497 // Page number is out of bounds 3498 if (!restorationVisit && totalNumber > 0) { 3499 if (goToPageNumber > totalPage) return; 3500 } 3501 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3502 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3503 ...newSearchParams, 3504 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 3505 }); 3506 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 3507 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 3508 queryString: true 3509 })); 3510 } 3511 } 3512 3513 // Fetch and update page 3514 fetchData(newSearchParams, renderWithData); 3515 disabled = true; 3516 function renderWithData(err, data, count) { 3517 if (err) { 3518 dataContainer.dispatchEvent(new Event('error')); 3519 } else { 3520 searchParams = { 3521 ...newSearchParams 3522 }; 3523 totalNumber = count - offset; 3524 if (data.length === 0) { 3525 dataContainer.dispatchEvent(new Event('no-data')); 3526 } else { 3527 dataContainer.dispatchEvent(new Event('data')); 3528 } 3529 render(data); 3530 firstRender = false; 3531 } 3532 disabled = false; 3533 renderBySearch = false; 3534 } 3535 } 3536 function areQueryParamsEqual(first, second) { 3537 var differ = Object.keys(first).find(function (key) { 3538 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 3539 }); 3540 if (differ) { 3541 return false; 3542 } 3543 differ = Object.keys(second).find(function (key) { 3544 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 3545 }); 3546 return !differ; 3547 } 3548 function next(callback) { 3549 go({ 3550 ...searchParams, 3551 page: searchParams.page + 1 3552 }, callback); 3553 } 3554 function previous(callback) { 3555 go({ 3556 ...searchParams, 3557 page: searchParams.page - 1 3558 }, callback); 3559 } 3560 function refresh(callback) { 3561 go(searchParams, callback); 3562 } 3563 function update(params, callback) { 3564 renderBySearch = true; 3565 go(params, callback); 3566 } 3567 function observer() { 3568 if (searchContainer) { 3569 searchContainer.addEventListener('search', function (event, newSearchParams) { 3570 newSearchParams = event.detail || newSearchParams; 3571 update({ 3572 ...searchParams, 3573 ...newSearchParams, 3574 page: 1 3575 }); 3576 }); 3577 searchContainer.addEventListener('clear-search', function () { 3578 const defaultSearchParams = { 3579 ...DefaultSearchParams 3580 }; 3581 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 3582 ...defaultSearchParams, 3583 page: null 3584 }, { 3585 ...searchParams, 3586 page: null 3587 }); 3588 3589 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 3590 // when search form have default state 3591 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 3592 return; 3593 } 3594 3595 // if someone initially go to some page and click 'Clear' on search from 3596 // we should't navigate to first page. We should preserve page value 3597 if (isCurrentSearchFormStateDefault) { 3598 defaultSearchParams.page = searchParams.page; 3599 } 3600 syncSearchFormState(defaultSearchParams); 3601 update(defaultSearchParams); 3602 }); 3603 } 3604 if (mode === 'LOAD_MORE_BUTTON') { 3605 loadMoreButton.addEventListener('click', function (event) { 3606 go({ 3607 ...searchParams, 3608 page: searchParams.page + 1 3609 }); 3610 return false; 3611 }); 3612 } 3613 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 3614 // Do initial render 3615 go(Object.assign({}, searchParams, { 3616 page: 1 3617 })); 3618 return; 3619 } 3620 if (mode === 'NUMBERED_PAGINATION') { 3621 // Go to specified page number 3622 container.addEventListener(eventPrefix + 'go', function (event) { 3623 let { 3624 pageNumber, 3625 done 3626 } = event.detail || {}; 3627 pageNumber = parseInt(pageNumber, 10); 3628 if (!pageNumber) { 3629 return; 3630 } 3631 go({ 3632 ...searchParams, 3633 page: pageNumber 3634 }, done); 3635 }); 3636 3637 // Page number button click 3638 el.addEventListener('click', function (event) { 3639 let clickTarget = event.target; 3640 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 3641 let pageNumber = current?.getAttribute('data-num'); 3642 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 3643 return; 3644 } else { 3645 go({ 3646 ...searchParams, 3647 page: parseInt(pageNumber, 10) 3648 }); 3649 } 3650 event.preventDefault(); 3651 }); 3652 3653 // Whether to load the default page 3654 var defaultPageNumber = searchParams.page; 3655 if (triggerPagingOnInit) {
3656 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 3657 detail: { 3658 pageNumber: defaultPageNumber 3659 } 3660 })); 3661 } 3662 } 3663 window.addEventListener('popstate', function (event) { 3664 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3665 if (!areQueryParamsEqual(newParams, searchParams)) { 3666 go(newParams, null, true); 3667 if (searchContainer) { 3668 syncSearchFormState(newParams); 3669 } 3670 } 3671 }); 3672 } 3673 function replaceVariables(template, variables) { 3674 var formattedString; 3675 for (var key in variables) { 3676 var value = variables[key]; 3677 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 3678 formattedString = (formattedString || template).replace(regexp, value); 3679 } 3680 return formattedString; 3681 } 3682 function isTextEditorValue(obj) { 3683 return 'raw' in obj || 'gjs' in obj; 3684 } 3685 function getTextEditorValue(obj) { 3686 if (!obj.html) { 3687 return ''; 3688 } 3689 var data = obj.html; 3690 var css = (obj.raw || obj.gjs || {}).css; 3691 if (css) { 3692 data = data + '<style>' + css + '</style>'; 3693 } 3694 return data; 3695 } 3696 3697 /** 3698 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 3699 * strips out raw proprties and returns only HTML if it exists. 3700 * @param {Object} resources a collection retrieved from the database 3701 * @return {Object} the newly modified object. 3702 */ 3703 function recursivelyParse(resources) { 3704 forEach(resources, function (value, key) { 3705 if (!value) { 3706 return; 3707 } 3708 if (value instanceof Object) { 3709 if (isTextEditorValue(value)) { 3710 resources[key] = getTextEditorValue(value); 3711 return; 3712 } else { 3713 return recursivelyParse(value); 3714 } 3715 } 3716 try { 3717 var parsedData = JSON.parse(value); 3718 if (isTextEditorValue(parsedData)) { 3719 resources[key] = getTextEditorValue(parsedData); 3720 } 3721 } catch (e) { 3722 // do nothing if we failed to parse value as JSON 3723 } 3724 }); 3725 return resources; 3726 } 3727 function forEach(collection, iteratee) { 3728 var func = Array.isArray(collection) ? arrayEach : baseFor; 3729 return func(collection, iteratee); 3730 } 3731 function baseFor(object, iteratee) { 3732 if (!object) { 3733 return; 3734 } 3735 var iterable = Object(object); 3736 var props = Object.keys(object); 3737 var length = props.length; 3738 var index = -1; 3739 while (length--) { 3740 var key = props[++index]; 3741 if (iteratee(iterable[key], key, iterable) === false) { 3742 break; 3743 } 3744 } 3745 return object; 3746 } 3747 function objSet(obj, path, value) { 3748 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 3749 pathArray.reduce((acc, key, i) => { 3750 if (acc[key] === undefined) acc[key] = {}; 3751 if (i === pathArray.length - 1) acc[key] = value; 3752 return acc[key]; 3753 }, obj); 3754 } 3755 function arrayEach(array, iteratee) { 3756 var index = -1; 3757 var length = array.length; 3758 while (++index < length) { 3759 if (iteratee(array[index], index, array) === false) { 3760 break; 3761 } 3762 } 3763 return array; 3764 } 3765 function selectPageRangeMode(e) { 3766 pageRange = e.matches ? mobilePageRange : desktopPageRange; 3767 renderPaginationList(); 3768 } 3769 paginationMql.addEventListener('change', selectPageRangeMode); 3770})('section-7a06dca2-5566-485d-97d3-e9bffaaac9fb', JSON.parse("{\"pageSize\":\"31\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":31,\"offset\":0,\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"7cce309a-18a4-42fa-8990-2107b4504654\",\"89af925f-2f87-44f1-9ae7-d300db393042\",\"48415411-daa0-43e7-a5fb-76be16ebcec5\",\"46af6b22-0a3e-452e-90b4-f75e610f193a\",\"7a828f3b-6757-46e7-b394-e3e19cd76fb9\",\"737f0dcf-38bc-404e-857c-9e8875f2ce43\",\"67dd9fb8-042c-4363-b27c-493cdbda801e\",\"5fc65180-8907-4856-84fd-94578c9cab5d\",\"afebd42a-c92c-4c48-ab85-bd0ba6a782d1\",\"1d793120-3e18-4350-aad2-bac21ca75ce6\",\"60a7dce2-5d02-4f40-a4e3-7ab17a5ca7a6\",\"740d6029-63c3-45a2-992b-36e5eda22157\",\"590738a5-c806-4a0d-9e7d-11ea069dedcc\",\"3f8c48b4-ed2a-449e-9837-af728c1a2fc0\",\"c9aff07d-46af-46d0-aa4d-b7a437989807\",\"3e6d3357-962c-4b3c-bf6f-637cc6dccc81\",\"e37b416a-e0bf-4b4a-8142-2a89664bdd4f\",\"5bf6133b-a8f4-4c4f-a3c9-4aab7eb62401\",\"09204069-3d05-44d1-a4a2-cf77963571c4\",\"c6698776-688f
3770-4f42-970e-2d10ee8de225\",\"b00dfca5-ce39-4b83-a277-a20194f7a44c\",\"e4a5ad8d-2998-4f9f-a9ca-1a9a8b3a10b4\",\"c988f460-ec93-4d82-9755-8d93f69a0c11\",\"12383c96-b00a-4501-b7cf-9a86edc32c5c\",\"378e51d8-bea3-4a21-93a8-a9ff518a0906\",\"b67dd29a-860b-4636-b8f6-32f2d2524368\",\"a912c5f9-059d-41bd-97e6-62253b22b68c\",\"258d7371-6822-4815-aa8c-b0c26ad1a9e0\",\"8ee5595a-2fa1-42e7-a286-caef328493ab\",\"c1ecf2db-cb9b-4375-8d05-7b5e8b5c1fff\",\"5f4e429c-ddda-4b16-ba95-77e093dc0b1e\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":5,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 3771} catch(e) { 3772console.log(e); 3773} 3774 try { 3775(function init(sectionDomId) { 3776 const $section = $("#" + sectionDomId); 3777 const $searchContainer = $section.find(".search-container"); 3778 const $officeSelect = $section.find('.js-office-input'); 3779 const $tagSelect = $section.find('.js-tag-input'); 3780 const $searchInput = $section.find('.js-search-input'); 3781 const $emptyMsg = $section.find('.js-empty-message'); 3782 const $dataContainer = $section.find('.data-container'); 3783 const $containter = $section.find('.js-container'); 3784 const officeFilter = $searchContainer.data('fetchOffices'); 3785 const $resetSearchInput = $searchContainer.find('.lp-input-reset'); 3786 convertSelectToDropdown($tagSelect); 3787 $resetSearchInput.on('click', function (event) { 3788 event.preventDefault(); 3789 $searchInput.val(''); 3790 onSearch(); 3791 }); 3792 $dataContainer.on("data", function () { 3793 $emptyMsg.removeClass("visible"); 3794 $containter.removeClass('no-data'); 3795 }); 3796 $dataContainer.on("no-data", function () { 3797 $emptyMsg.addClass("visible"); 3798 $containter.addClass('no-data'); 3799 }); 3800 $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000)); 3801 function onSearch() { 3802 const params = {}; 3803 if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()]; 3804 if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()]; 3805 params.search = $searchInput.val() || null; 3806 $searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 3807 detail: params 3808 })); 3809 } 3810 if (!officeFilter && $tagSelect.length === 0) return; 3811 var previousOption = ''; 3812 $searchContainer.on('offices-data', function (evt) { 3813 let { 3814 data 3815 } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 3816 data = evt.detail?.data || data; 3817 $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n")); 3818 convertSelectToDropdown($officeSelect); 3819 }); 3820 function updateDropdown(select, value) { 3821 let $dropdown = $(select).next(); 3822 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 3823 let $dropdownContent = $dropdown.find(".custom-select-content"); 3824 let $selectedOption = $dropdownContent.find(`button[value="${value}"]`); 3825 function unselectOption() { 3826 $linkedOption = $originalSelect.find("option").eq(0); 3827 $linkedOption.prop("selected", true); 3828 $dropdownToggle.html($linkedOption.html()); 3829 $dropdownContent.find(".custom-select-item").removeClass("is-selected"); 3830 $originalSelect.change(); 3831 previousOption = ""; 3832 } 3833 if (!$selectedOption) return; 3834 if ($selectedOption.hasClass("is-disabled")) return; 3835 let elementNumber = $selectedOption.index(); 3836 let $originalSelect = $selectedOption.closest(".custom-select").siblings("select"); 3837 let $linkedOption = $originalSelect.find("option").eq(elementNumber); 3838 if (previousOption === value) { 3839 unselectOption(); 3840 return; 3841 } 3842 if (!$linkedOption.prop("selected")) { 3843 $linkedOption.prop("selected", true); 3844 previousOption = value; 3845 $originalSelect.change(); 3846 $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected"); 3847 closeSelectMenu($selectedOption.closest(".custom-select-menu")); 3848 $dropdownToggle.html($linkedOption.html()); 3849 if ($linkedOption.val()) { 3850 $dropdownToggle.removeClass("is-placeholder"); 3851 $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection"); 3852 } else { 3853 $dropdown.removeClass("has-selection"); 3854 $dropdownToggle.addClass("is-placeholder"); 3855 } 3856 } 3857 } 3858 function convertSelectToDropdown(selectItem) {
3859 let customDropdown = ` 3860 <div class="custom-select" role="presentation"> 3861 <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button> 3862 <div class="custom-select-menu"> 3863 <div class="custom-select-content"> 3864 </div> 3865 </div> 3866 </div>`; 3867 $(customDropdown).insertAfter(selectItem); 3868 let $dropdown = $(selectItem).next(); 3869 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 3870 let $dropdownMenu = $dropdown.find(".custom-select-menu"); 3871 let $dropdownContent = $dropdown.find(".custom-select-content"); 3872 $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select"); 3873 $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom"); 3874 $dropdownToggle.attr("data-name", $(selectItem).attr("name")); 3875 $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id")); 3876 appendOptionButtons(selectItem, $dropdownContent); 3877 $(selectItem).removeClass().addClass("sr-only"); 3878 $(selectItem).on("focus", function () { 3879 showSelectMenu($dropdownMenu[0]); 3880 $dropdownToggle.focus(); 3881 }); 3882 var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text(); 3883 $dropdownToggle.addClass("is-placeholder").html(toggleText); 3884 $dropdown.on("click", ".custom-select-item", function (e) { 3885 updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value")); 3886 }); 3887 function convertOptionToButton(option) { 3888 var optionText = $(option).text(); 3889 var optionValue = $(option).attr("value") || $(option).text(); 3890 var optionIsDisabled = $(option).prop("disabled"); 3891 var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`; 3892 return outputButton; 3893 } 3894 function appendOptionButtons(selectItem, appendTarget) { 3895 $(selectItem).find("option").each(function () { 3896 let currentButton = convertOptionToButton(this); 3897 $(appendTarget).append(currentButton); 3898 }); 3899 } 3900 function showSelectMenu(selectMenu) { 3901 var customSelect = $(selectMenu).closest(".custom-select")[0]; 3902 customSelect.classList.add('open'); 3903 $(selectMenu).slideDown(); 3904 } 3905 $dropdown.on("click", ".custom-select-toggle", function (e) { 3906 var $customSelect = $(this).closest(".custom-select"); 3907 var selectMenu = $customSelect.find(".custom-select-menu")[0]; 3908 if ($customSelect.hasClass("open")) { 3909 closeSelectMenu(selectMenu); 3910 } else { 3911 showSelectMenu(selectMenu); 3912 } 3913 }); 3914 $(document.body).on("click", function (e) { 3915 if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) { 3916 $(`#${sectionDomId} .custom-select.open`).each(function () { 3917 const selectMenu = $(this).find(".custom-select-menu")[0]; 3918 closeSelectMenu(selectMenu); 3919 }); 3920 } 3921 }); 3922 } 3923 function closeSelectMenu(selectMenu) { 3924 var customSelect = $(selectMenu).closest(".custom-select")[0]; 3925 $(customSelect).removeClass("open"); 3926 $(selectMenu).slideUp(); 3927 } 3928 $officeSelect.change(onSearch); 3929 $tagSelect.change(onSearch); 3930})('section-7a06dca2-5566-485d-97d3-e9bffaaac9fb', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":5}")); 3931} catch(e) { 3932console.log(e); 3933} 3934 try { 3935(function init(sectionDomId, options) { 3936 let section = null; 3937 switch (sectionDomId) { 3938 case 'NAVBAR': 3939 section = document.querySelector('body > nav, #global-navbar'); 3940 break; 3941 case 'FOOTER': 3942 section = document.querySelector('body > footer, #global-footer'); 3943 break; 3944 case 'SIDEMENU': 3945 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3946 break; 3947 case 'CONTACT':
3948 section = document.querySelector('#modal-global-contact-us'); 3949 break; 3950 case 'MOBILE_CONTACT': 3951 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3952 break; 3953 case 'SUBSCRIBE': 3954 // Subscribe Not Implemented 3955 section = null; 3956 break; 3957 case 'ACCOUNT': 3958 // Account Not Implemented 3959 section = null; 3960 break; 3961 default: 3962 section = document.querySelector('#' + sectionDomId); 3963 } 3964 if (!section) { 3965 return; 3966 } 3967 3968 // Where content / items are rendered 3969 const dataContainer = section.querySelector('.data-container'); 3970 if (!dataContainer) { 3971 // no place to render items = no need to query server or do anything else 3972 return; 3973 } 3974 let variables = options.variables || {}; 3975 3976 // Some variables in options may not have been injected - remove 3977 Object.keys(variables).forEach(function (variableName) { 3978 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 3979 delete variables[variableName]; 3980 } 3981 }); 3982 3983 // Merge page query variables 3984 if (options.usePageResource) { 3985 variables = { 3986 ...variables, 3987 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 3988 }; 3989 } 3990 3991 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 3992 // resolve the flag â fetchData reads the section stamp, aux fetches read 3993 // their own resource's stamp (auxUsesRouter). 3994 function apiUrl(useRouter) { 3995 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 3996 } 3997 3998 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 3999 // (options.routerApiAux is stamped per aux resource server-side). 4000 function auxUsesRouter(resource) { 4001 return !!(options.routerApiAux && options.routerApiAux[resource]); 4002 } 4003 4004 // Pagination Executes on a Numbered Pagination Container 4005 // Or via a load more button 4006 let mode = 'BUTTONLESS_PAGINATION'; 4007 const container = section.querySelector('.pagination-container');
4008 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 4009 if (container) { 4010 mode = 'NUMBERED_PAGINATION'; 4011 } 4012 if (loadMoreButton) { 4013 mode = 'LOAD_MORE_BUTTON'; 4014 } 4015 let searchContainer = section.querySelector('.search-container'); 4016 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 4017 const eventPrefix = '__pagination-'; 4018 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 4019 param: 'neighborhoodId', 4020 urlKey: 'neighborhood' 4021 }, { 4022 param: 'search', 4023 urlKey: 'search' 4024 }, { 4025 param: 'salesPriceGTE', 4026 urlKey: 'pricemin', 4027 formKey: 'priceMin', 4028 type: 'int' 4029 }, { 4030 param: 'salesPriceLTE', 4031 urlKey: 'pricemax', 4032 formKey: 'priceMax', 4033 type: 'int' 4034 }, { 4035 param: 'livingSpaceSizeGTE', 4036 urlKey: 'areamin', 4037 formKey: 'areaMin', 4038 type: 'int' 4039 }, { 4040 param: 'livingSpaceSizeLTE', 4041 urlKey: 'areamax', 4042 formKey: 'areaMax', 4043 type: 'int' 4044 }] : []); 4045 4046 // Total entries - initialized in first render 4047 let totalNumber = 0; 4048 const DefaultSearchParams = { 4049 page: 1 4050 }; 4051 searchFormParams.forEach(function (formParam) { 4052 DefaultSearchParams[formParam.formKey || formParam.param] = null; 4053 }); 4054 let searchParams = { 4055 ...DefaultSearchParams 4056 }; 4057 const offset = options.variables?.offset || 0; 4058 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 4059 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 4060 4061 // entries of per page 4062 // when query variables for a given section would't be filled options.pageSize can store 4063 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 4064 let pageSize = parseInt(options.pageSize, 10) || 9; 4065 4066 // Adding mobile pageRange support 4067 var NARROW_BREAKPOINT = 600; 4068 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 4069 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 4070 4071 // Page range (pages on both sides of the current page) 4072 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 4073 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 4074 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 4075 4076 // Whether to display the 'Previous' button 4077 var showPrevious = true; 4078 4079 // Whether to display the 'Next' button 4080 var showNext = true; 4081 4082 // Whether to display the page buttons 4083 var showPageNumbers = true; 4084 4085 // 'Previous' text 4086 var prevText = options.prevText || '«'; 4087 4088 // 'Next' text 4089 var nextText = options.nextText || '»'; 4090 4091 // Ellipsis text 4092 var ellipsisText = '…'; 4093 var classPrefix = 'paginationjs'; 4094 4095 // Default active class 4096 var activeClassName = 'active'; 4097 4098 // Default disable class 4099 var disableClassName = 'disabled'; 4100 4101 // Pagination element's position in the container 4102 var position = 'bottom'; 4103 4104 // Whether to trigger pagination at initialization 4105 var triggerPagingOnInit = !options.skipInitialLoad; 4106 var showFirstOnEllipsisShow = true; 4107 var showLastOnEllipsisShow = true; 4108 4109 // Instantiated in init() 4110 var el = null; 4111 4112 // Controls scrollTop logic 4113 var firstRender = true; 4114 var renderBySearch = false; 4115 var disabled = false; 4116 4117 // Pagination script class selector 4118 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 4119 4120 // Property Specific Image Override if No Image 4121 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 4122 4123 // Construct template 4124 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 4125 var template = Handlebars.compile(templateHTML); 4126 4127 // Initialize 4128 init(); 4129 function init() { 4130 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 4131 4132 // Append/prepend pagination element to the pagination container 4133 if (mode === 'NUMBERED_PAGINATION') { 4134 el = document.createElement('div'); 4135 el.className = 'paginationjs';
4136 container[position === 'bottom' ? 'append' : 'prepend'](el); 4137 } 4138 if (searchContainer) { 4139 initSearchContainer({ 4140 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 4141 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 4142 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 4143 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 4144 }, function () { 4145 syncSearchFormState(searchParams); 4146 }); 4147 } 4148 4149 // Bind events 4150 observer(); 4151 } 4152 function syncSearchFormState(params) { 4153 searchContainer.dispatchEvent(new CustomEvent('sync', { 4154 detail: params 4155 })); 4156 } 4157 function initSearchContainer(options, done) { 4158 var promises = []; 4159 if (options.fetchNeighborhoods) { 4160 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 4161 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 4162 detail: { 4163 data: neighborhoods.map(function (item) { 4164 return { 4165 value: item.id, 4166 label: item.name 4167 }; 4168 }) 4169 } 4170 })); 4171 })); 4172 } 4173 if (options.fetchPostCategories) { 4174 promises.push(fetchPostCategories(function (categories) { 4175 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 4176 detail: { 4177 data: categories 4178 } 4179 })); 4180 })); 4181 } 4182 if (options.fetchOffices) { 4183 promises.push(fetchOffices(function (offices) { 4184 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 4185 detail: { 4186 data: offices 4187 } 4188 })); 4189 })); 4190 } 4191 if (options.fetchRentalRates) { 4192 promises.push(fetchAllRentalRates(function (rentalRates) { 4193 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 4194 detail: { 4195 data: rentalRates 4196 } 4197 })); 4198 })); 4199 } 4200 if (promises.length > 0) { 4201 Promise.all(promises).then(function () { 4202 done(); 4203 }); 4204 } else { 4205 // element's custom code is not executed yet, so we're scheduling callback to after element's code 4206 setTimeout(done); 4207 } 4208 } 4209 function fetchAllNeighborhoods(done) { 4210 var useRouter = auxUsesRouter('neighborhoods'); 4211 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 4212 // args on both APIs (the federated neighborhoods field accepts 4213 // withProperties/withBlogPosts); only the selection set differs. 4214 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') + '}}'; 4215 var payload = {}; 4216 payload.offset = 0; 4217 payload.limit = 100; 4218 payload.companyId = variables.companyId; 4219 if (options.resource === 'properties') { 4220 payload.withProperties = { 4221 active: true 4222 }; 4223 ['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) { 4224 if (variables[field] !== undefined && variables[field] !== null) { 4225 payload.withProperties[field] = variables[field]; 4226 } 4227 }); 4228 } 4229 if (options.resource === 'posts') { 4230 payload.withBlogPosts = { 4231 active: true 4232 }; 4233 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 4234 if (variables[field] !== undefined && variables[field] !== null) { 4235 payload.withBlogPosts[field] = variables[field]; 4236 } 4237 }); 4238 } 4239 4240 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4241 if (useRouter) { 4242 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 4243 } 4244 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4245 query: gqlQuery, 4246 variables: payload 4247 }).then(function (res) { 4248 var value = res.body.data && res.body.data.neighborhoods || {}; 4249 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4250 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4251 done(items, items.length); 4252 }); 4253 } 4254 function fetchPostCategories(done) { 4255 var featured = options.resource === 'posts' && !!variables.featured; 4256 var useRouter = auxUsesRouter('postCategories'); 4257 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 4258 // selection set differs ({ items {...} } on the router). 4259 var selection = 'id, name, publishedCount, featuredPublishedCount'; 4260 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) + '}}'; 4261 var payload = {}; 4262 payload.offset = 0; 4263 payload.limit = 100; 4264 payload.companyId = variables.companyId; 4265 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4266 query: gqlQuery, 4267 variables: payload 4268 }).then(function (res) { 4269 var value = res.body.data && res.body.data.postCategories || {}; 4270 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4271 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4272 done(items.map(function (item) { 4273 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 4274 return item; 4275 }), items.length); 4276 }); 4277 } 4278 function fetchOffices(done) { 4279 var useRouter = auxUsesRouter('offices'); 4280 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 4281 // selection set differs ({ items {...} } on the router). 4282 var selection = 'id, name, tags'; 4283 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 4284 // APIs differ in more than the items wrapper: federated offices takes 4285 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 4286 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 + '}}'; 4287 var payload = { 4288 offset: 0, 4289 limit: 100, 4290 companyId: variables.companyId 4291 }; 4292 4293 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4294 if (useRouter) { 4295 payload = window.luxuryPresence.routerApi.transformVariables('office
4295s', payload); 4296 } 4297 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4298 query: gqlQuery, 4299 variables: payload 4300 }).then(function (res) { 4301 var value = res.body.data && res.body.data.offices || {}; 4302 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4303 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4304 done(items, items.length); 4305 }); 4306 } 4307 4308 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 4309 function fetchAllRentalRates(done) { 4310 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 4311 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 4312 var payload = { 4313 offset: 0, 4314 limit: 100, 4315 companyId: variables.companyId 4316 }; 4317 superagent.post(url + '/graphql').withCredentials().send({ 4318 query: gqlQuery, 4319 variables: payload 4320 }).then(function (res) { 4321 var items = res.body.data && res.body.data.rentalRates || []; 4322 done(items, items.length); 4323 }).catch(function (err) { 4324 console.error('Error fetching rental rates:', err); 4325 done([], 0); 4326 }); 4327 } 4328 function fetchData(params, done) { 4329 var resource = options.resource; 4330 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 4331 var payload = {}; 4332 try { 4333 payload = JSON.parse(JSON.stringify(variables)); 4334 } catch (e) { 4335 Object.keys(variables).forEach(function (variableName) { 4336 payload[variableName] = variables[variableName]; 4337 }); 4338 } 4339 payload.offset = (params.page - 1) * pageSize + offset; 4340 payload.limit = pageSize; 4341 payload.companyId = options.companyId; 4342 searchFormParams.forEach(function (formParam) { 4343 var val = params[formParam.formKey || formParam.param]; 4344 if (val !== null && val !== undefined) { 4345 objSet(payload, formParam.param, val); 4346 } 4347 }); 4348 4349 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4350 if (options.useRouterApi) { 4351 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 4352 } 4353 4354 // TODO: Disabled loading due to jarring effect 4355 // dataContainer.html('Loading...'); 4356 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 4357 query: gqlQuery, 4358 variables: payload 4359 }).then(function (res) { 4360 if (res.body.errors) { 4361 done(res.body.errors); 4362 return; 4363 } 4364 var data = res.body.data || {}; 4365 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4366 var resources; 4367 var resourceCount; 4368 if (options.useRouterApi) { 4369 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 4370 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 4371 resourceCount = page.count; 4372 } else { 4373 resources = data[resource] || []; 4374 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 4375 } 4376 const finish = function (items) { 4377 if (resource === 'properties' && propertyPlaceholderImage?.id) { 4378 items = items.map(item => { 4379 if (item.media?.length === 0) { 4380 return Object.assign(item, { 4381 media: [propertyPlaceholderImage] 4382 }); 4383 } 4384 return item; 4385 }); 4386 } 4387 done(null, items, resourceCount); 4388 }; 4389 4390 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 4391 // disclaimers before rendering; older SDKs skip (keys stay unset). 4392 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 4393 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 4394 return; 4395 } 4396 finish(resources); 4397 }); 4398 } 4399 function getTotalPage() { 4400 return Math.ceil(totalNumber / pageSize); 4401 } 4402 function renderPaginationList() { 4403 var totalPages = getTotalPage(); 4404 var rangeStart = searchParams.page - pageRange; 4405 var rangeEnd = searchParams.page + pageRange; 4406 if (rangeEnd > totalPages) { 4407 rangeEnd = totalPages; 4408 rangeStart = totalPages - pageRange * 2; 4409 rangeStart = rangeStart < 1 ? 1 : rangeStart; 4410 } 4411 if (rangeStart <= 1) { 4412 rangeStart = 1; 4413 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 4414 } 4415 4416 // Making sure that 1 more page button is shown in edge positions 4417 if (pageRange === 0) { 4418 if (searchParams.page === totalPages) { 4419 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 4420 } 4421 if (searchParams.page === 1) { 4422 rangeEnd = Math.min(2, totalPages); 4423 } 4424 } 4425 4426 // Render pagination list 4427 if (mode === 'NUMBERED_PAGINATION') { 4428 el.innerHTML = generateHTML({ 4429 currentPage: searchParams.page, 4430 pageRange: pageRange, 4431 rangeStart: rangeStart, 4432 rangeEnd: rangeEnd 4433 }); 4434 if (totalPages < 2 && hidePaginationOnFirstPage) { 4435 container.style.display = 'none'; 4436 } else { 4437 container.style.display = ''; 4438 } 4439 } else if (mode === 'LOAD_MORE_BUTTON') { 4440 if (searchParams.page >= totalPages) {
4441 loadMoreButton.style.display = 'none'; 4442 } else { 4443 loadMoreButton.style.display = ''; 4444 } 4445 } 4446 } 4447 function render(data) { 4448 renderPaginationList(); 4449 4450 // Render new content with handlebars 4451 var html = ''; 4452 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 4453 // If using load more, append search results to existing results 4454 html = dataContainer.innerHTML; 4455 } 4456 for (var i = 0; i < data.length; i++) { 4457 var itemData = recursivelyParse(data[i]); 4458 itemData.sectionIndex = options.sectionIndex; 4459 itemData.renderOptions = options.renderOptions; 4460 html += template(itemData); 4461 } 4462 dataContainer.innerHTML = html; 4463 4464 // Scroll Top 4465 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 4466 // Only animate to the top if we replace dataContainer (numbered pagination) 4467 setTimeout(() => { 4468 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 4469 window.scrollTo({ 4470 top: scrollTargetOffsetTop, 4471 behavior: 'smooth' 4472 }); 4473 }, 250); 4474 } 4475 return true; 4476 } 4477 function generateHTML(args) { 4478 const totalPages = getTotalPage(); 4479 const { 4480 rangeStart, 4481 rangeEnd 4482 } = args; 4483 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 4484 ...searchParams, 4485 page 4486 }); 4487 let html = ''; 4488 if (showPrevious || showPageNumbers || showNext) { 4489 html += '<div class="paginationjs-pages"><ul>'; 4490 4491 // Previous button 4492 if (showPrevious) { 4493 if (searchParams.page <= 1) { 4494 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 4495 } else { 4496 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>`; 4497 } 4498 } 4499 4500 // Pages 4501 if (showPageNumbers) { 4502 if (rangeStart <= 3) { 4503 for (let i = 1; i < rangeStart; i++) { 4504 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>`; 4505 } 4506 } else { 4507 if (showFirstOnEllipsisShow) { 4508 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 4509 } 4510 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 4511 } 4512 for (let i = rangeStart; i <= rangeEnd; i++) { 4513 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>`; 4514 } 4515 if (rangeEnd < totalPages - 2) { 4516 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 4517 if (showLastOnEllipsisShow) { 4518 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 4519 } 4520 } else { 4521 for (let i = rangeEnd + 1; i <= totalPages; i++) { 4522 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 4523 } 4524 } 4525 } 4526 4527 // Next button 4528 if (showNext) { 4529 if (searchParams.page >= totalPages) { 4530 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 4531 } else { 4532 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>`; 4533 } 4534 } 4535 html += '</ul></div>'; 4536 } 4537 return html; 4538 } 4539 function go(newSearchParams, callback, restorationVisit) { 4540 if (disabled) return; 4541 var goToPageNumber = newSearchParams.page; 4542 4543 // Page number is out of bounds 4544 if (!goToPageNumber || goToPageNumber < 1) return; 4545 var totalPage = getTotalPage(); 4546 4547 // Page number is out of bounds 4548 if (!restorationVisit && totalNumber > 0) { 4549 if (goToPageNumber > totalPage) return; 4550 } 4551 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
4552 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 4553 ...newSearchParams, 4554 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 4555 }); 4556 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 4557 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 4558 queryString: true 4559 })); 4560 } 4561 } 4562 4563 // Fetch and update page 4564 fetchData(newSearchParams, renderWithData); 4565 disabled = true; 4566 function renderWithData(err, data, count) { 4567 if (err) { 4568 dataContainer.dispatchEvent(new Event('error')); 4569 } else { 4570 searchParams = { 4571 ...newSearchParams 4572 }; 4573 totalNumber = count - offset; 4574 if (data.length === 0) { 4575 dataContainer.dispatchEvent(new Event('no-data')); 4576 } else { 4577 dataContainer.dispatchEvent(new Event('data')); 4578 } 4579 render(data); 4580 firstRender = false; 4581 } 4582 disabled = false; 4583 renderBySearch = false; 4584 } 4585 } 4586 function areQueryParamsEqual(first, second) { 4587 var differ = Object.keys(first).find(function (key) { 4588 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 4589 }); 4590 if (differ) { 4591 return false; 4592 } 4593 differ = Object.keys(second).find(function (key) { 4594 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 4595 }); 4596 return !differ; 4597 } 4598 function next(callback) { 4599 go({ 4600 ...searchParams, 4601 page: searchParams.page + 1 4602 }, callback); 4603 } 4604 function previous(callback) { 4605 go({ 4606 ...searchParams, 4607 page: searchParams.page - 1 4608 }, callback); 4609 } 4610 function refresh(callback) { 4611 go(searchParams, callback); 4612 } 4613 function update(params, callback) { 4614 renderBySearch = true; 4615 go(params, callback); 4616 } 4617 function observer() { 4618 if (searchContainer) { 4619 searchContainer.addEventListener('search', function (event, newSearchParams) { 4620 newSearchParams = event.detail || newSearchParams; 4621 update({ 4622 ...searchParams, 4623 ...newSearchParams, 4624 page: 1 4625 }); 4626 }); 4627 searchContainer.addEventListener('clear-search', function () { 4628 const defaultSearchParams = { 4629 ...DefaultSearchParams 4630 }; 4631 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 4632 ...defaultSearchParams, 4633 page: null 4634 }, { 4635 ...searchParams, 4636 page: null 4637 }); 4638 4639 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 4640 // when search form have default state 4641 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 4642 return; 4643 } 4644 4645 // if someone initially go to some page and click 'Clear' on search from 4646 // we should't navigate to first page. We should preserve page value 4647 if (isCurrentSearchFormStateDefault) { 4648 defaultSearchParams.page = searchParams.page; 4649 } 4650 syncSearchFormState(defaultSearchParams); 4651 update(defaultSearchParams); 4652 }); 4653 } 4654 if (mode === 'LOAD_MORE_BUTTON') { 4655 loadMoreButton.addEventListener('click', function (event) { 4656 go({ 4657 ...searchParams, 4658 page: searchParams.page + 1 4659 }); 4660 return false; 4661 }); 4662 } 4663 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 4664 // Do initial render 4665 go(Object.assign({}, searchParams, { 4666 page: 1 4667 })); 4668 return; 4669 } 4670 if (mode === 'NUMBERED_PAGINATION') { 4671 // Go to specified page number 4672 container.addEventListener(eventPrefix + 'go', function (event) { 4673 let { 4674 pageNumber, 4675 done 4676 } = event.detail || {}; 4677 pageNumber = parseInt(pageNumber, 10); 4678 if (!pageNumber) { 4679 return; 4680 } 4681 go({ 4682 ...searchParams, 4683 page: pageNumber 4684 }, done); 4685 }); 4686 4687 // Page number button click 4688 el.addEventListener('click', function (event) { 4689 let clickTarget = event.target; 4690 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 4691 let pageNumber = current?.getAttribute('data-num'); 4692 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 4693 return; 4694 } else { 4695 go({ 4696 ...searchParams, 4697 page: parseInt(pageNumber, 10) 4698 }); 4699 } 4700 event.preventDefault(); 4701 }); 4702 4703 // Whether to load the default page 4704 var defaultPageNumber = searchParams.page; 4705 if (triggerPagingOnInit) {
4706 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 4707 detail: { 4708 pageNumber: defaultPageNumber 4709 } 4710 })); 4711 } 4712 } 4713 window.addEventListener('popstate', function (event) { 4714 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 4715 if (!areQueryParamsEqual(newParams, searchParams)) { 4716 go(newParams, null, true); 4717 if (searchContainer) { 4718 syncSearchFormState(newParams); 4719 } 4720 } 4721 }); 4722 } 4723 function replaceVariables(template, variables) { 4724 var formattedString; 4725 for (var key in variables) { 4726 var value = variables[key]; 4727 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 4728 formattedString = (formattedString || template).replace(regexp, value); 4729 } 4730 return formattedString; 4731 } 4732 function isTextEditorValue(obj) { 4733 return 'raw' in obj || 'gjs' in obj; 4734 } 4735 function getTextEditorValue(obj) { 4736 if (!obj.html) { 4737 return ''; 4738 } 4739 var data = obj.html; 4740 var css = (obj.raw || obj.gjs || {}).css; 4741 if (css) { 4742 data = data + '<style>' + css + '</style>'; 4743 } 4744 return data; 4745 } 4746 4747 /** 4748 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 4749 * strips out raw proprties and returns only HTML if it exists. 4750 * @param {Object} resources a collection retrieved from the database 4751 * @return {Object} the newly modified object. 4752 */ 4753 function recursivelyParse(resources) { 4754 forEach(resources, function (value, key) { 4755 if (!value) { 4756 return; 4757 } 4758 if (value instanceof Object) { 4759 if (isTextEditorValue(value)) { 4760 resources[key] = getTextEditorValue(value); 4761 return; 4762 } else { 4763 return recursivelyParse(value); 4764 } 4765 } 4766 try { 4767 var parsedData = JSON.parse(value); 4768 if (isTextEditorValue(parsedData)) { 4769 resources[key] = getTextEditorValue(parsedData); 4770 } 4771 } catch (e) { 4772 // do nothing if we failed to parse value as JSON 4773 } 4774 }); 4775 return resources; 4776 } 4777 function forEach(collection, iteratee) { 4778 var func = Array.isArray(collection) ? arrayEach : baseFor; 4779 return func(collection, iteratee); 4780 } 4781 function baseFor(object, iteratee) { 4782 if (!object) { 4783 return; 4784 } 4785 var iterable = Object(object); 4786 var props = Object.keys(object); 4787 var length = props.length; 4788 var index = -1; 4789 while (length--) { 4790 var key = props[++index]; 4791 if (iteratee(iterable[key], key, iterable) === false) { 4792 break; 4793 } 4794 } 4795 return object; 4796 } 4797 function objSet(obj, path, value) { 4798 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 4799 pathArray.reduce((acc, key, i) => { 4800 if (acc[key] === undefined) acc[key] = {}; 4801 if (i === pathArray.length - 1) acc[key] = value; 4802 return acc[key]; 4803 }, obj); 4804 } 4805 function arrayEach(array, iteratee) { 4806 var index = -1; 4807 var length = array.length; 4808 while (++index < length) { 4809 if (iteratee(array[index], index, array) === false) { 4810 break; 4811 } 4812 } 4813 return array; 4814 } 4815 function selectPageRangeMode(e) { 4816 pageRange = e.matches ? mobilePageRange : desktopPageRange; 4817 renderPaginationList(); 4818 } 4819 paginationMql.addEventListener('change', selectPageRangeMode); 4820})('section-7545c45a-2d61-41d5-8fa1-79536cb17100', JSON.parse("{\"pageSize\":\"1\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":1,\"offset\":0,\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"57658820-db30-4f9e-b56a-056ceff7763a\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":6,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4821} catch(e) { 4822console.log(e); 4823} 4824 try { 4825(function init(sectionDomId) { 4826 const $section = $("#" + sectionDomId); 4827 const $searchContainer = $section.find(".search-container"); 4828 const $officeSelect = $section.find('.js-office-input'); 4829 const $tagSelect = $section.find('.js-tag-input'); 4830 const $searchInput = $section.find('.js-search-input'); 4831 const $emptyMsg = $section.find('.js-empty-message'); 4832 const $dataContainer = $section.find('.data-container'); 4833 const $containter = $section.find('.js-container'); 4834 const officeFilter = $searchContainer.data('fetchOffices'); 4835 const $resetSearchInput = $searchContainer.find('.lp-input-reset'); 4836 convertSelectToDropdown($tagSelect); 4837 $resetSearchInput.on('click', function (event) { 4838 event.preventDefault(); 4839 $searchInput.val(''); 4840 onSearch(); 4841 }); 4842 $dataContainer.on("data", function () { 4843 $emptyMsg.removeClass("visible"); 4844 $containter.removeClass('no-data'); 4845 }); 4846 $dataContainer.on("no-data", function () { 4847 $emptyMsg.addClass("visible"); 4848 $containter.addClass('no-data'); 4849 }); 4850 $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000)); 4851 function onSearch() { 4852 const params = {}; 4853 if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()]; 4854 if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()]; 4855 params.search = $searchInput.val() || null; 4856 $searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 4857 detail: params 4858 })); 4859 } 4860 if (!officeFilter && $tagSelect.length === 0) return; 4861 var previousOption = '';
4862 $searchContainer.on('offices-data', function (evt) { 4863 let { 4864 data 4865 } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 4866 data = evt.detail?.data || data; 4867 $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n")); 4868 convertSelectToDropdown($officeSelect); 4869 }); 4870 function updateDropdown(select, value) { 4871 let $dropdown = $(select).next(); 4872 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 4873 let $dropdownContent = $dropdown.find(".custom-select-content"); 4874 let $selectedOption = $dropdownContent.find(`button[value="${value}"]`); 4875 function unselectOption() { 4876 $linkedOption = $originalSelect.find("option").eq(0); 4877 $linkedOption.prop("selected", true); 4878 $dropdownToggle.html($linkedOption.html()); 4879 $dropdownContent.find(".custom-select-item").removeClass("is-selected"); 4880 $originalSelect.change(); 4881 previousOption = ""; 4882 } 4883 if (!$selectedOption) return; 4884 if ($selectedOption.hasClass("is-disabled")) return; 4885 let elementNumber = $selectedOption.index(); 4886 let $originalSelect = $selectedOption.closest(".custom-select").siblings("select"); 4887 let $linkedOption = $originalSelect.find("option").eq(elementNumber); 4888 if (previousOption === value) { 4889 unselectOption(); 4890 return; 4891 } 4892 if (!$linkedOption.prop("selected")) { 4893 $linkedOption.prop("selected", true); 4894 previousOption = value; 4895 $originalSelect.change(); 4896 $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected"); 4897 closeSelectMenu($selectedOption.closest(".custom-select-menu")); 4898 $dropdownToggle.html($linkedOption.html()); 4899 if ($linkedOption.val()) { 4900 $dropdownToggle.removeClass("is-placeholder"); 4901 $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection"); 4902 } else { 4903 $dropdown.removeClass("has-selection"); 4904 $dropdownToggle.addClass("is-placeholder"); 4905 } 4906 } 4907 } 4908 function convertSelectToDropdown(selectItem) { 4909 let customDropdown = ` 4910 <div class="custom-select" role="presentation"> 4911 <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button> 4912 <div class="custom-select-menu"> 4913 <div class="custom-select-content"> 4914 </div> 4915 </div> 4916 </div>`; 4917 $(customDropdown).insertAfter(selectItem); 4918 let $dropdown = $(selectItem).next(); 4919 let $dropdownToggle = $dropdown.find(".custom-select-toggle"); 4920 let $dropdownMenu = $dropdown.find(".custom-select-menu"); 4921 let $dropdownContent = $dropdown.find(".custom-select-content"); 4922 $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select"); 4923 $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom"); 4924 $dropdownToggle.attr("data-name", $(selectItem).attr("name")); 4925 $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id")); 4926 appendOptionButtons(selectItem, $dropdownContent); 4927 $(selectItem).removeClass().addClass("sr-only"); 4928 $(selectItem).on("focus", function () { 4929 showSelectMenu($dropdownMenu[0]); 4930 $dropdownToggle.focus(); 4931 }); 4932 var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text(); 4933 $dropdownToggle.addClass("is-placeholder").html(toggleText); 4934 $dropdown.on("click", ".custom-select-item", function (e) { 4935 updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value")); 4936 }); 4937 function convertOptionToButton(option) { 4938 var optionText = $(option).text(); 4939 var optionValue = $(option).attr("value") || $(option).text(); 4940 var optionIsDisabled = $(option).prop("disabled"); 4941 var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`; 4942 return outputButton; 4943 } 4944 function appendOptionButtons(selectItem, appendTarget) { 4945 $(selectItem).find("option").each(function () { 4946 let currentButton = convertOptionToButton(this); 4947 $(appendTarget).append(currentButton); 4948 }); 4949 } 4950 function showSelectMenu(selectMenu) { 4951 var customSelect = $(selectMenu).closest(".custom-select")[0]; 4952 customSelect.classList.add('open'); 4953 $(selectMenu).slideDown(); 4954 } 4955 $dropdown.on("click", ".custom-select-toggle", function (e) { 4956 var $customSelect = $(this).closest(".custom-select"); 4957 var selectMenu = $customSelect.find(".custom-select-menu")[0]; 4958 if ($customSelect.hasClass("open")) { 4959 closeSelectMenu(selectMenu); 4960 } else { 4961 showSelectMenu(selectMenu); 4962 } 4963 }); 4964 $(document.body).on("click", function (e) { 4965 if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) { 4966 $(`#${sectionDomId} .custom-select.open`).each(function () { 4967 const selectMenu = $(this).find(".custom-select-menu")[0]; 4968 closeSelectMenu(selectMenu); 4969 }); 4970 } 4971 }); 4972 } 4973 function closeSelectMenu(selectMenu) { 4974 var customSelect = $(selectMenu).closest(".custom-select")[0]; 4975 $(customSelect).removeClass("open"); 4976 $(selectMenu).slideUp(); 4977 } 4978 $officeSelect.change(onSearch); 4979 $tagSelect.change(onSearch); 4980})('section-7545c45a-2d61-41d5-8fa1-79536cb17100', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":6}")); 4981} catch(e) { 4982console.log(e); 4983} 4984 try { 4985(function init(sectionDomId) { 4986 const $section = $(`#${sectionDomId}`); 4987 const $container = $section.find('.featured-properties-section'); 4988 const $slider = $section.find('.featured-properties'); 4989 const threeSlides = $container.hasClass('three-slides'); 4990 const autoScroll = $container[0].dataset['autoScroll'] === 'true'; 4991 const autoplaySpeed = parseInt($container[0].dataset['autoplaySpeed']) || 3000; 4992 const sliderOptions = { 4993 "arrows": true, 4994 "infinite": false, 4995 autoplay: autoScroll,
4996 autoplaySpeed: autoplaySpeed, 4997 "nextArrow": $section.find('.slick-links-nav .next'), 4998 "prevArrow": $section.find('.slick-links-nav .prev'), 4999 "slidesToShow": 2, 5000 "slidesToScroll": 2, 5001 "responsive": [{ 5002 "settings": { 5003 "slidesToShow": 1, 5004 "slidesToScroll": 1 5005 }, 5006 "breakpoint": 769 5007 }] 5008 }; 5009 if (threeSlides) { 5010 sliderOptions.slidesToShow = 3; 5011 sliderOptions.slidesToScroll = 3; 5012 sliderOptions.responsive.unshift({ 5013 "settings": { 5014 "slidesToShow": 2, 5015 "slidesToScroll": 2 5016 }, 5017 "breakpoint": 1100 5018 }); 5019 } 5020 if (!$slider.hasClass('.slick-initialized')) { 5021 $slider.slick(sliderOptions); 5022 } 5023 $slider.on('beforeChange', function () { 5024 $slider.find('.featured-properties__share.featured-properties__share--opened').removeClass('featured-properties__share--opened'); 5025 }); 5026 $slider.find('.featured-properties__share .btn').on('click', function () { 5027 $parent = $(this).parent(); 5028 if ($parent.hasClass('featured-properties__share--opened')) { 5029 $parent.removeClass('featured-properties__share--opened'); 5030 } else { 5031 $slider.find('.featured-properties__share.featured-properties__share--opened').removeClass('featured-properties__share--opened'); 5032 $parent.addClass('featured-properties__share--opened'); 5033 } 5034 }); 5035})('section-b09dfcc5-d7f9-4d05-a9f5-8a4c85081f01', JSON.parse("{\"resource\":\"properties\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":7}")); 5036} catch(e) { 5037console.log(e); 5038} 5039 try { 5040(function init(sectionDomId) { 5041 const $section = $('#' + sectionDomId); 5042 if ($section.find('.parallax').length) $section.addClass('parallax-enabled'); 5043 if ($section.find('.video-wrapper').length) $section.addClass('video'); 5044})('section-34367182-fbb0-47db-a832-bcdfb313ab45', 'undefined'); 5045} catch(e) { 5046console.log(e); 5047} 5048 try { 5049(function init(sectionDomId, options) { 5050 let section = null; 5051 switch (sectionDomId) { 5052 case 'NAVBAR': 5053 section = document.querySelector('body > nav, #global-navbar'); 5054 break; 5055 case 'FOOTER': 5056 section = document.querySelector('body > footer, #global-footer'); 5057 break; 5058 case 'SIDEMENU': 5059 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 5060 break; 5061 case 'CONTACT': 5062 section = document.querySelector('#modal-global-contact-us'); 5063 break; 5064 case 'MOBILE_CONTACT': 5065 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 5066 break; 5067 case 'SUBSCRIBE': 5068 // Subscribe Not Implemented 5069 section = null; 5070 break; 5071 case 'ACCOUNT': 5072 // Account Not Implemented 5073 section = null; 5074 break; 5075 default: 5076 section = document.querySelector('#' + sectionDomId); 5077 } 5078 if (!section) { 5079 return; 5080 } 5081 var url = window.luxuryPresence.defaults.routerUrl; 5082 var companyId = window.luxuryPresence.defaults.companyId; 5083 var limit = options.limit || 8; 5084 if (typeof limit === 'string') { 5085 limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected 5086 } 5087 var templateSelector = options.templateSelector || '.jsIGTemplate'; 5088 var containerSelector = options.containerSelector || '.jsIGContainer'; 5089 var hasDataClass = options.hasDataClass || 'has-data'; 5090 var hideActivateMessage = options.hasDataClass || false; 5091 var payload = { 5092 companyId: companyId, 5093 limit: limit 5094 }; 5095 if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) { 5096 payload.resourceId = options.resourceId; 5097 // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase 5098 payload.resource = String(options.resource || 'agent').toUpperCase(); 5099 payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true; 5100 } 5101 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'; 5102 var templateHTML = section.querySelector(templateSelector)?.innerHTML || ''; 5103 var template = Handlebars.compile(templateHTML); 5104 var container = section.querySelector(containerSelector); 5105 if (options.variables) {
5106 Object.keys(options.variables).forEach(function (key) { 5107 if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) { 5108 payload[key] = options.variables[key]; 5109 } 5110 }); 5111 } 5112 function getData() { 5113 var feed = { 5114 error: true 5115 }; 5116 if (payload.companyId == null || payload.companyId === '') { 5117 // instagramContentFeed requires companyId (ID!) â nothing to fetch without it. 5118 // Checked after the options.variables merge, which may override the default. 5119 // Deferred so element listeners (attached after this template runs) still receive it. 5120 setTimeout(function () { 5121 section.dispatchEvent(new CustomEvent('ig-data', { 5122 detail: feed 5123 })); 5124 }, 0); 5125 return; 5126 } 5127 superagent.post(url + '/graphql').send({ 5128 query: query, 5129 variables: payload 5130 }).then(res => { 5131 try { 5132 if (!res.body.errors) { 5133 feed = res.body.data.instagramContentFeed; 5134 if (!feed.active) { 5135 if (!hideActivateMessage && sectionDomId === 'section-temp' && container) { 5136 if (payload.resourceId) { 5137 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>'; 5138 } else { 5139 container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>'; 5140 } 5141 } 5142 } else { 5143 if (feed.items.length) { 5144 if (hasDataClass) { 5145 section.classList.add(hasDataClass); 5146 } 5147 const feedName = feed.username; 5148 section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl)); 5149 section.querySelectorAll('.jsIGName').forEach(name => { 5150 name.textContent = '@' + feedName; 5151 name.setAttribute('title', '@' + feedName); 5152 }); 5153 if (container && template) { 5154 container.innerHTML = template(feed); 5155 } 5156 } 5157 } 5158 } 5159 } catch (e) {} 5160 section.dispatchEvent(new CustomEvent('ig-data', { 5161 detail: feed 5162 })); 5163 }).catch(e => { 5164 console.log('err', e); 5165 section.dispatchEvent(new CustomEvent('ig-data', { 5166 detail: feed 5167 })); 5168 }); 5169 } 5170 getData(); 5171})('section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":9,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 5172} catch(e) { 5173console.log(e); 5174} 5175 try { 5176(function init(sectionDomId) { 5177 const $section = $('#' + sectionDomId); 5178 var templateHTML = $section.find('.jsIGItem').html(); 5179 var itemTemplate = templateHTML && Handlebars.compile(templateHTML); 5180 const $container = $section.find('.ig-feed-feed'); 5181 const $topPrev = $section.find('.top-nav-prev'); 5182 const $topNext = $section.find('.top-nav-next'); 5183 const $bottomPrev = $section.find('.bottom-nav-prev'); 5184 const $bottomNext = $section.find('.bottom-nav-next'); 5185 let limit = 33; 5186 try { 5187 limit = parseInt($container[0].dataset['limit']); 5188 } catch (e) {} 5189 if (!limit) { 5190 limit = 33; 5191 } 5192 let igFeed = {}; 5193 let usedWidth = 0; 5194 let slider = null; 5195 $section.on('ig-data', function (ev, feed) { 5196 feed = ev.detail || feed; 5197 igFeed = feed; 5198 if (feed.active && feed.items.length) { 5199 buildSlider(); 5200 } 5201 }); 5202 $(window).on('resize.lpui-auto-clean', onResize); 5203 let timer = null; 5204 function onResize() { 5205 clearTimeout(timer); 5206 timer = window.setTimeout(buildSlider, 50); 5207 } 5208 function getLayout(w, n) { 5209 if (w > 1100) { 5210 if (n > 7) { 5211 return { 5212 type: 'type1', 5213 single: 1, 5214 multi: n, 5215 slides: 3, 5216 slider: n > 9 5217 }; 5218 } 5219 if (n > 5) { 5220 return { 5221 type: 'type1', 5222 single: 2, 5223 multi: n, 5224 slides: 3, 5225 slider: false 5226 }; 5227 } 5228 return { 5229 type: 'type1', 5230 single: n, 5231 multi: n, 5232 slides: 3, 5233 slider: n > 3 5234 }; 5235 } else if (w > 880) { 5236 if (n > 4) { 5237 return { 5238 type: 'type2', 5239 single: 1, 5240 multi: n, 5241 slides: 2.5, 5242 slider: n > 7 5243 }; 5244 } 5245 return { 5246 type: 'type1', 5247 single: n, 5248 multi: n, 5249 slides: 3, 5250 slider: n > 3 5251 }; 5252 } else if (w > 767) { 5253 if (n > 4) { 5254 return { 5255 type: 'type3', 5256 single: 1, 5257 multi: n, 5258 slides: 2, 5259 slider: n > 5 5260 }; 5261 } 5262 return { 5263 type: 'type4', 5264 single: n, 5265 multi: n, 5266 slides: 2, 5267 slider: n > 2 5268 }; 5269 } else if (w > 460) { 5270 return { 5271 type: 'type4', 5272 single: n, 5273 multi: n, 5274 slides: 2, 5275 slider: n > 2 5276 }; 5277 } 5278 return { 5279 type: 'type5', 5280 single: n, 5281 multi: n, 5282 slides: 1, 5283 slider: n > 1 5284 }; 5285 } 5286 function ensureClass($el, className) { 5287 if ($el.hasClass(className)) { 5288 return; 5289 } 5290 $el.addClass(className); 5291 } 5292 function makeSquare($el) { 5293 const el = $el[0]; 5294 el.style.width = ''; 5295 el.style.height = ''; 5296 const rect = el.getBoundingClientRect(); 5297 if (rect.width !== rect.height) { 5298 el.style.width = rect.height + 'px'; 5299 } 5300 } 5301 function buildSlider() { 5302 const cWidth = $container[0].getBoundingClientRect().width; 5303 if (cWidth === usedWidth) { 5304 return; 5305 } 5306 $container.empty();
5307 slider = $('<div class="ig-feed-slider"></div>'); 5308 const items = igFeed.items.slice(0, limit); 5309 const layout = getLayout(cWidth, items.length); 5310 let i = 0; 5311 let slide = null; 5312 while (i < layout.single) { 5313 slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider); 5314 i++; 5315 } 5316 while (i < layout.multi) { 5317 slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider); 5318 let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide); 5319 const lim = i + 4; 5320 while (i < lim && i < layout.multi) { 5321 slideContent.append(itemTemplate(items[i])); 5322 i++; 5323 } 5324 } 5325 $container.append(slider); 5326 if (layout.slider) { 5327 $topPrev.removeClass('hidden-control'); 5328 $topNext.removeClass('hidden-control'); 5329 $bottomPrev.removeClass('hidden-control'); 5330 $bottomNext.removeClass('hidden-control'); 5331 let prev, next; 5332 if ($bottomPrev.parent()[0].getBoundingClientRect().width) { 5333 prev = $bottomPrev; 5334 next = $bottomNext; 5335 } else { 5336 prev = $topPrev; 5337 next = $topNext; 5338 makeSquare($topPrev); 5339 makeSquare($topNext); 5340 } 5341 slider.children().each(function () { 5342 this.style.width = this.getBoundingClientRect().width + 'px'; 5343 }); 5344 slider.slick({ 5345 dots: false, 5346 prevArrow: prev, 5347 nextArrow: next, 5348 slidesToScroll: 1, 5349 infinite: false, 5350 slidesToShow: layout.slides 5351 }); 5352 } else { 5353 ensureClass($topPrev, 'hidden-control'); 5354 ensureClass($topNext, 'hidden-control'); 5355 ensureClass($bottomPrev, 'hidden-control'); 5356 ensureClass($bottomNext, 'hidden-control'); 5357 } 5358 } 5359})('section-e216d9bd-0c48-4a36-9d49-9ad3cebb6e99', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":true,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true},\"companyId\":\"4ad9ad7a-dcc2-4ace-8a0f-3e25647281dd\",\"usePageResource\":false,\"sectionIndex\":9}")); 5360} catch(e) { 5361console.log(e); 5362} 5363 5364 var { body } = document; 5365 var globalNav = body.querySelector(':scope > nav'); 5366 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 5367 5368 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 5369 modalCloseBtn.addEventListener('click', function() { 5370 window.lpUI.hideClosestModal(modalCloseBtn); 5371 }); 5372 }); 5373 5374 window.addEventListener('click', function() { 5375 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 5376 sharedPopup.style.display = 'none' ; 5377 }); 5378 }); 5379 5380 /* Misc Partials / Addons */ 5381 function initWOW() { 5382 if (wow) { 5383 wow.init(); 5384 wow.scrollHandler(); 5385 setTimeout(function () { 5386 const wowHideStyle = document.getElementById('wow-hide-elements'); 5387 if(wowHideStyle) { 5388 wowHideStyle.disabled = true; 5389 } 5390 }, 1); 5391 } 5392 } 5393 5394 const wowHideElements = document.getElementById('wow-hide-elements'); 5395 if (wowHideElements) { 5396 wowHideElements.disabled = false; 5397 } 5398 5399 initWOW(); 5400 5401 /* Generic Navbar Handling */ 5402 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 5403 hamburgerComponent.addEventListener('click', function() { 5404 window.lpUI.sideMenuToggle(); 5405 }); 5406 }); 5407 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 5408 toggleEl.addEventListener('click', function() { 5409 window.lpUI.sideMenuToggle(); 5410 }); 5411 }); 5412 5413 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 5414 linkEl.addEventListener('click', function(e) { 5415 e.preventDefault(); 5416 e.stopPropagation();
5417 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 5418 if (subNav && subNav.classList.contains('visible')){ 5419 subNav.classList.remove('visible'); 5420 } else { 5421 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 5422 globalSubNav.classList.remove('visible'); 5423 }); 5424 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 5425 sideMenuSubNav.classList.remove('visible'); 5426 }); 5427 subNav?.classList.add('visible'); 5428 } 5429 }); 5430 }); 5431 window.addEventListener('click', function() { 5432 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 5433 subNavEl.classList.remove('visible'); 5434 }); 5435 }); 5436 5437 } 5438 5439 document.addEventListener('DOMContentLoaded', lpGlobalInit); 5440 5441 </script>
5441 5442 5443
5443<script type="module"> 5444 function selectorExists(selector) { 5445 return document.querySelector(selector) !== null; 5446 } 5447 5448 // Function to initialize the third-party library 5449 function initParoller(selector = '.my-paroller') { 5450 var $parollerElements = $(selector); 5451 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 5452 $parollerElements.paroller(); 5453 } 5454 } 5455 5456 const parollerSelector = '.my-paroller'; 5457 5458 if (selectorExists(parollerSelector)) { 5459 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 5460 initParoller(parollerSelector); 5461 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 5462 }); 5463 } 5464 </script>
5464 5465 5466 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 5466-5467
5466 5467 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
5467GTM-WFRBDGTV
vendor: 107 bytes, lines 5467-5469
5467" 5468 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 5469
5469<!-- End Google Tag Manager --> 5470 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 5470-5471
5470 5471 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
5471GTM-T9SFQGHZ
vendor: 107 bytes, lines 5471-5473
5471" 5472 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 5473
5473<!-- End Google Tag Manager --> 5474
5475<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:'a47833826ae6f3ee',t:'MTc5MTQ5NDU0OA=='};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>
5475<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
5475 5476</body> 5477</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.